1\input texinfo @c -*-texinfo-*- 2@c Copyright (C) 1988-2014 Free Software Foundation, Inc. 3@c 4@c %**start of header 5@c makeinfo ignores cmds prev to setfilename, so its arg cannot make use 6@c of @set vars. However, you can override filename with makeinfo -o. 7@setfilename gdb.info 8@c 9@c man begin INCLUDE 10@include gdb-cfg.texi 11@c man end 12@c 13@settitle Debugging with @value{GDBN} 14@setchapternewpage odd 15@c %**end of header 16 17@iftex 18@c @smallbook 19@c @cropmarks 20@end iftex 21 22@finalout 23@c To avoid file-name clashes between index.html and Index.html, when 24@c the manual is produced on a Posix host and then moved to a 25@c case-insensitive filesystem (e.g., MS-Windows), we separate the 26@c indices into two: Concept Index and all the rest. 27@syncodeindex ky fn 28@syncodeindex tp fn 29 30@c readline appendices use @vindex, @findex and @ftable, 31@c annotate.texi and gdbmi use @findex. 32@syncodeindex vr fn 33 34@c !!set GDB manual's edition---not the same as GDB version! 35@c This is updated by GNU Press. 36@set EDITION Tenth 37 38@c !!set GDB edit command default editor 39@set EDITOR /bin/ex 40 41@c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER. 42 43@c This is a dir.info fragment to support semi-automated addition of 44@c manuals to an info tree. 45@dircategory Software development 46@direntry 47* Gdb: (gdb). The GNU debugger. 48* gdbserver: (gdb) Server. The GNU debugging server. 49@end direntry 50 51@copying 52@c man begin COPYRIGHT 53Copyright @copyright{} 1988-2014 Free Software Foundation, Inc. 54 55Permission is granted to copy, distribute and/or modify this document 56under the terms of the GNU Free Documentation License, Version 1.3 or 57any later version published by the Free Software Foundation; with the 58Invariant Sections being ``Free Software'' and ``Free Software Needs 59Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,'' 60and with the Back-Cover Texts as in (a) below. 61 62(a) The FSF's Back-Cover Text is: ``You are free to copy and modify 63this GNU Manual. Buying copies from GNU Press supports the FSF in 64developing GNU and promoting software freedom.'' 65@c man end 66@end copying 67 68@ifnottex 69This file documents the @sc{gnu} debugger @value{GDBN}. 70 71This is the @value{EDITION} Edition, of @cite{Debugging with 72@value{GDBN}: the @sc{gnu} Source-Level Debugger} for @value{GDBN} 73@ifset VERSION_PACKAGE 74@value{VERSION_PACKAGE} 75@end ifset 76Version @value{GDBVN}. 77 78@insertcopying 79@end ifnottex 80 81@titlepage 82@title Debugging with @value{GDBN} 83@subtitle The @sc{gnu} Source-Level Debugger 84@sp 1 85@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN} 86@ifset VERSION_PACKAGE 87@sp 1 88@subtitle @value{VERSION_PACKAGE} 89@end ifset 90@author Richard Stallman, Roland Pesch, Stan Shebs, et al. 91@page 92@tex 93{\parskip=0pt 94\hfill (Send bugs and comments on @value{GDBN} to @value{BUGURL}.)\par 95\hfill {\it Debugging with @value{GDBN}}\par 96\hfill \TeX{}info \texinfoversion\par 97} 98@end tex 99 100@vskip 0pt plus 1filll 101Published by the Free Software Foundation @* 10251 Franklin Street, Fifth Floor, 103Boston, MA 02110-1301, USA@* 104ISBN 978-0-9831592-3-0 @* 105 106@insertcopying 107@end titlepage 108@page 109 110@ifnottex 111@node Top, Summary, (dir), (dir) 112 113@top Debugging with @value{GDBN} 114 115This file describes @value{GDBN}, the @sc{gnu} symbolic debugger. 116 117This is the @value{EDITION} Edition, for @value{GDBN} 118@ifset VERSION_PACKAGE 119@value{VERSION_PACKAGE} 120@end ifset 121Version @value{GDBVN}. 122 123Copyright (C) 1988-2014 Free Software Foundation, Inc. 124 125This edition of the GDB manual is dedicated to the memory of Fred 126Fish. Fred was a long-standing contributor to GDB and to Free 127software in general. We will miss him. 128 129@menu 130* Summary:: Summary of @value{GDBN} 131* Sample Session:: A sample @value{GDBN} session 132 133* Invocation:: Getting in and out of @value{GDBN} 134* Commands:: @value{GDBN} commands 135* Running:: Running programs under @value{GDBN} 136* Stopping:: Stopping and continuing 137* Reverse Execution:: Running programs backward 138* Process Record and Replay:: Recording inferior's execution and replaying it 139* Stack:: Examining the stack 140* Source:: Examining source files 141* Data:: Examining data 142* Optimized Code:: Debugging optimized code 143* Macros:: Preprocessor Macros 144* Tracepoints:: Debugging remote targets non-intrusively 145* Overlays:: Debugging programs that use overlays 146 147* Languages:: Using @value{GDBN} with different languages 148 149* Symbols:: Examining the symbol table 150* Altering:: Altering execution 151* GDB Files:: @value{GDBN} files 152* Targets:: Specifying a debugging target 153* Remote Debugging:: Debugging remote programs 154* Configurations:: Configuration-specific information 155* Controlling GDB:: Controlling @value{GDBN} 156* Extending GDB:: Extending @value{GDBN} 157* Interpreters:: Command Interpreters 158* TUI:: @value{GDBN} Text User Interface 159* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs 160* GDB/MI:: @value{GDBN}'s Machine Interface. 161* Annotations:: @value{GDBN}'s annotation interface. 162* JIT Interface:: Using the JIT debugging interface. 163* In-Process Agent:: In-Process Agent 164 165* GDB Bugs:: Reporting bugs in @value{GDBN} 166 167@ifset SYSTEM_READLINE 168* Command Line Editing: (rluserman). Command Line Editing 169* Using History Interactively: (history). Using History Interactively 170@end ifset 171@ifclear SYSTEM_READLINE 172* Command Line Editing:: Command Line Editing 173* Using History Interactively:: Using History Interactively 174@end ifclear 175* In Memoriam:: In Memoriam 176* Formatting Documentation:: How to format and print @value{GDBN} documentation 177* Installing GDB:: Installing GDB 178* Maintenance Commands:: Maintenance Commands 179* Remote Protocol:: GDB Remote Serial Protocol 180* Agent Expressions:: The GDB Agent Expression Mechanism 181* Target Descriptions:: How targets can describe themselves to 182 @value{GDBN} 183* Operating System Information:: Getting additional information from 184 the operating system 185* Trace File Format:: GDB trace file format 186* Index Section Format:: .gdb_index section format 187* Man Pages:: Manual pages 188* Copying:: GNU General Public License says 189 how you can copy and share GDB 190* GNU Free Documentation License:: The license for this documentation 191* Concept Index:: Index of @value{GDBN} concepts 192* Command and Variable Index:: Index of @value{GDBN} commands, variables, 193 functions, and Python data types 194@end menu 195 196@end ifnottex 197 198@contents 199 200@node Summary 201@unnumbered Summary of @value{GDBN} 202 203The purpose of a debugger such as @value{GDBN} is to allow you to see what is 204going on ``inside'' another program while it executes---or what another 205program was doing at the moment it crashed. 206 207@value{GDBN} can do four main kinds of things (plus other things in support of 208these) to help you catch bugs in the act: 209 210@itemize @bullet 211@item 212Start your program, specifying anything that might affect its behavior. 213 214@item 215Make your program stop on specified conditions. 216 217@item 218Examine what has happened, when your program has stopped. 219 220@item 221Change things in your program, so you can experiment with correcting the 222effects of one bug and go on to learn about another. 223@end itemize 224 225You can use @value{GDBN} to debug programs written in C and C@t{++}. 226For more information, see @ref{Supported Languages,,Supported Languages}. 227For more information, see @ref{C,,C and C++}. 228 229Support for D is partial. For information on D, see 230@ref{D,,D}. 231 232@cindex Modula-2 233Support for Modula-2 is partial. For information on Modula-2, see 234@ref{Modula-2,,Modula-2}. 235 236Support for OpenCL C is partial. For information on OpenCL C, see 237@ref{OpenCL C,,OpenCL C}. 238 239@cindex Pascal 240Debugging Pascal programs which use sets, subranges, file variables, or 241nested functions does not currently work. @value{GDBN} does not support 242entering expressions, printing values, or similar features using Pascal 243syntax. 244 245@cindex Fortran 246@value{GDBN} can be used to debug programs written in Fortran, although 247it may be necessary to refer to some variables with a trailing 248underscore. 249 250@value{GDBN} can be used to debug programs written in Objective-C, 251using either the Apple/NeXT or the GNU Objective-C runtime. 252 253@menu 254* Free Software:: Freely redistributable software 255* Free Documentation:: Free Software Needs Free Documentation 256* Contributors:: Contributors to GDB 257@end menu 258 259@node Free Software 260@unnumberedsec Free Software 261 262@value{GDBN} is @dfn{free software}, protected by the @sc{gnu} 263General Public License 264(GPL). The GPL gives you the freedom to copy or adapt a licensed 265program---but every person getting a copy also gets with it the 266freedom to modify that copy (which means that they must get access to 267the source code), and the freedom to distribute further copies. 268Typical software companies use copyrights to limit your freedoms; the 269Free Software Foundation uses the GPL to preserve these freedoms. 270 271Fundamentally, the General Public License is a license which says that 272you have these freedoms and that you cannot take these freedoms away 273from anyone else. 274 275@node Free Documentation 276@unnumberedsec Free Software Needs Free Documentation 277 278The biggest deficiency in the free software community today is not in 279the software---it is the lack of good free documentation that we can 280include with the free software. Many of our most important 281programs do not come with free reference manuals and free introductory 282texts. Documentation is an essential part of any software package; 283when an important free software package does not come with a free 284manual and a free tutorial, that is a major gap. We have many such 285gaps today. 286 287Consider Perl, for instance. The tutorial manuals that people 288normally use are non-free. How did this come about? Because the 289authors of those manuals published them with restrictive terms---no 290copying, no modification, source files not available---which exclude 291them from the free software world. 292 293That wasn't the first time this sort of thing happened, and it was far 294from the last. Many times we have heard a GNU user eagerly describe a 295manual that he is writing, his intended contribution to the community, 296only to learn that he had ruined everything by signing a publication 297contract to make it non-free. 298 299Free documentation, like free software, is a matter of freedom, not 300price. The problem with the non-free manual is not that publishers 301charge a price for printed copies---that in itself is fine. (The Free 302Software Foundation sells printed copies of manuals, too.) The 303problem is the restrictions on the use of the manual. Free manuals 304are available in source code form, and give you permission to copy and 305modify. Non-free manuals do not allow this. 306 307The criteria of freedom for a free manual are roughly the same as for 308free software. Redistribution (including the normal kinds of 309commercial redistribution) must be permitted, so that the manual can 310accompany every copy of the program, both on-line and on paper. 311 312Permission for modification of the technical content is crucial too. 313When people modify the software, adding or changing features, if they 314are conscientious they will change the manual too---so they can 315provide accurate and clear documentation for the modified program. A 316manual that leaves you no choice but to write a new manual to document 317a changed version of the program is not really available to our 318community. 319 320Some kinds of limits on the way modification is handled are 321acceptable. For example, requirements to preserve the original 322author's copyright notice, the distribution terms, or the list of 323authors, are ok. It is also no problem to require modified versions 324to include notice that they were modified. Even entire sections that 325may not be deleted or changed are acceptable, as long as they deal 326with nontechnical topics (like this one). These kinds of restrictions 327are acceptable because they don't obstruct the community's normal use 328of the manual. 329 330However, it must be possible to modify all the @emph{technical} 331content of the manual, and then distribute the result in all the usual 332media, through all the usual channels. Otherwise, the restrictions 333obstruct the use of the manual, it is not free, and we need another 334manual to replace it. 335 336Please spread the word about this issue. Our community continues to 337lose manuals to proprietary publishing. If we spread the word that 338free software needs free reference manuals and free tutorials, perhaps 339the next person who wants to contribute by writing documentation will 340realize, before it is too late, that only free manuals contribute to 341the free software community. 342 343If you are writing documentation, please insist on publishing it under 344the GNU Free Documentation License or another free documentation 345license. Remember that this decision requires your approval---you 346don't have to let the publisher decide. Some commercial publishers 347will use a free license if you insist, but they will not propose the 348option; it is up to you to raise the issue and say firmly that this is 349what you want. If the publisher you are dealing with refuses, please 350try other publishers. If you're not sure whether a proposed license 351is free, write to @email{licensing@@gnu.org}. 352 353You can encourage commercial publishers to sell more free, copylefted 354manuals and tutorials by buying them, and particularly by buying 355copies from the publishers that paid for their writing or for major 356improvements. Meanwhile, try to avoid buying non-free documentation 357at all. Check the distribution terms of a manual before you buy it, 358and insist that whoever seeks your business must respect your freedom. 359Check the history of the book, and try to reward the publishers that 360have paid or pay the authors to work on it. 361 362The Free Software Foundation maintains a list of free documentation 363published by other publishers, at 364@url{http://www.fsf.org/doc/other-free-books.html}. 365 366@node Contributors 367@unnumberedsec Contributors to @value{GDBN} 368 369Richard Stallman was the original author of @value{GDBN}, and of many 370other @sc{gnu} programs. Many others have contributed to its 371development. This section attempts to credit major contributors. One 372of the virtues of free software is that everyone is free to contribute 373to it; with regret, we cannot actually acknowledge everyone here. The 374file @file{ChangeLog} in the @value{GDBN} distribution approximates a 375blow-by-blow account. 376 377Changes much prior to version 2.0 are lost in the mists of time. 378 379@quotation 380@emph{Plea:} Additions to this section are particularly welcome. If you 381or your friends (or enemies, to be evenhanded) have been unfairly 382omitted from this list, we would like to add your names! 383@end quotation 384 385So that they may not regard their many labors as thankless, we 386particularly thank those who shepherded @value{GDBN} through major 387releases: 388Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0); 389Jim Blandy (release 4.18); 390Jason Molenda (release 4.17); 391Stan Shebs (release 4.14); 392Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9); 393Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4); 394John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9); 395Jim Kingdon (releases 3.5, 3.4, and 3.3); 396and Randy Smith (releases 3.2, 3.1, and 3.0). 397 398Richard Stallman, assisted at various times by Peter TerMaat, Chris 399Hanson, and Richard Mlynarik, handled releases through 2.8. 400 401Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support 402in @value{GDBN}, with significant additional contributions from Per 403Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++} 404demangler. Early work on C@t{++} was by Peter TerMaat (who also did 405much general update work leading to release 3.0). 406 407@value{GDBN} uses the BFD subroutine library to examine multiple 408object-file formats; BFD was a joint project of David V. 409Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore. 410 411David Johnson wrote the original COFF support; Pace Willison did 412the original support for encapsulated COFF. 413 414Brent Benson of Harris Computer Systems contributed DWARF 2 support. 415 416Adam de Boor and Bradley Davis contributed the ISI Optimum V support. 417Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS 418support. 419Jean-Daniel Fekete contributed Sun 386i support. 420Chris Hanson improved the HP9000 support. 421Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support. 422David Johnson contributed Encore Umax support. 423Jyrki Kuoppala contributed Altos 3068 support. 424Jeff Law contributed HP PA and SOM support. 425Keith Packard contributed NS32K support. 426Doug Rabson contributed Acorn Risc Machine support. 427Bob Rusk contributed Harris Nighthawk CX-UX support. 428Chris Smith contributed Convex support (and Fortran debugging). 429Jonathan Stone contributed Pyramid support. 430Michael Tiemann contributed SPARC support. 431Tim Tucker contributed support for the Gould NP1 and Gould Powernode. 432Pace Willison contributed Intel 386 support. 433Jay Vosburgh contributed Symmetry support. 434Marko Mlinar contributed OpenRISC 1000 support. 435 436Andreas Schwab contributed M68K @sc{gnu}/Linux support. 437 438Rich Schaefer and Peter Schauer helped with support of SunOS shared 439libraries. 440 441Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree 442about several machine instruction sets. 443 444Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop 445remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM 446contributed remote debugging modules for the i960, VxWorks, A29K UDI, 447and RDI targets, respectively. 448 449Brian Fox is the author of the readline libraries providing 450command-line editing and command history. 451 452Andrew Beers of SUNY Buffalo wrote the language-switching code, the 453Modula-2 support, and contributed the Languages chapter of this manual. 454 455Fred Fish wrote most of the support for Unix System Vr4. 456He also enhanced the command-completion support to cover C@t{++} overloaded 457symbols. 458 459Hitachi America (now Renesas America), Ltd. sponsored the support for 460H8/300, H8/500, and Super-H processors. 461 462NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors. 463 464Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D 465processors. 466 467Toshiba sponsored the support for the TX39 Mips processor. 468 469Matsushita sponsored the support for the MN10200 and MN10300 processors. 470 471Fujitsu sponsored the support for SPARClite and FR30 processors. 472 473Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware 474watchpoints. 475 476Michael Snyder added support for tracepoints. 477 478Stu Grossman wrote gdbserver. 479 480Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made 481nearly innumerable bug fixes and cleanups throughout @value{GDBN}. 482 483The following people at the Hewlett-Packard Company contributed 484support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0 485(narrow mode), HP's implementation of kernel threads, HP's aC@t{++} 486compiler, and the Text User Interface (nee Terminal User Interface): 487Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann, 488Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase 489provided HP-specific information in this manual. 490 491DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project. 492Robert Hoehne made significant contributions to the DJGPP port. 493 494Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its 495development since 1991. Cygnus engineers who have worked on @value{GDBN} 496fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin 497Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim 498Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler, 499Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek 500Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In 501addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton, 502JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug 503Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff 504Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner, 505Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin 506Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela 507Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David 508Zuhn have made contributions both large and small. 509 510Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for 511Cygnus Solutions, implemented the original @sc{gdb/mi} interface. 512 513Jim Blandy added support for preprocessor macros, while working for Red 514Hat. 515 516Andrew Cagney designed @value{GDBN}'s architecture vector. Many 517people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick 518Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei 519Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason 520Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped 521with the migration of old architectures to this new framework. 522 523Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s 524unwinder framework, this consisting of a fresh new design featuring 525frame IDs, independent frame sniffers, and the sentinel frame. Mark 526Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the 527libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and 528trad unwinders. The architecture-specific changes, each involving a 529complete rewrite of the architecture's frame code, were carried out by 530Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane 531Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel 532Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei 533Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich 534Weigand. 535 536Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from 537Tensilica, Inc.@: contributed support for Xtensa processors. Others 538who have worked on the Xtensa port of @value{GDBN} in the past include 539Steve Tjiang, John Newlin, and Scott Foehner. 540 541Michael Eager and staff of Xilinx, Inc., contributed support for the 542Xilinx MicroBlaze architecture. 543 544@node Sample Session 545@chapter A Sample @value{GDBN} Session 546 547You can use this manual at your leisure to read all about @value{GDBN}. 548However, a handful of commands are enough to get started using the 549debugger. This chapter illustrates those commands. 550 551@iftex 552In this sample session, we emphasize user input like this: @b{input}, 553to make it easier to pick out from the surrounding output. 554@end iftex 555 556@c FIXME: this example may not be appropriate for some configs, where 557@c FIXME...primary interest is in remote use. 558 559One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro 560processor) exhibits the following bug: sometimes, when we change its 561quote strings from the default, the commands used to capture one macro 562definition within another stop working. In the following short @code{m4} 563session, we define a macro @code{foo} which expands to @code{0000}; we 564then use the @code{m4} built-in @code{defn} to define @code{bar} as the 565same thing. However, when we change the open quote string to 566@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same 567procedure fails to define a new synonym @code{baz}: 568 569@smallexample 570$ @b{cd gnu/m4} 571$ @b{./m4} 572@b{define(foo,0000)} 573 574@b{foo} 5750000 576@b{define(bar,defn(`foo'))} 577 578@b{bar} 5790000 580@b{changequote(<QUOTE>,<UNQUOTE>)} 581 582@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))} 583@b{baz} 584@b{Ctrl-d} 585m4: End of input: 0: fatal error: EOF in string 586@end smallexample 587 588@noindent 589Let us use @value{GDBN} to try to see what is going on. 590 591@smallexample 592$ @b{@value{GDBP} m4} 593@c FIXME: this falsifies the exact text played out, to permit smallbook 594@c FIXME... format to come out better. 595@value{GDBN} is free software and you are welcome to distribute copies 596 of it under certain conditions; type "show copying" to see 597 the conditions. 598There is absolutely no warranty for @value{GDBN}; type "show warranty" 599 for details. 600 601@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc... 602(@value{GDBP}) 603@end smallexample 604 605@noindent 606@value{GDBN} reads only enough symbol data to know where to find the 607rest when needed; as a result, the first prompt comes up very quickly. 608We now tell @value{GDBN} to use a narrower display width than usual, so 609that examples fit in this manual. 610 611@smallexample 612(@value{GDBP}) @b{set width 70} 613@end smallexample 614 615@noindent 616We need to see how the @code{m4} built-in @code{changequote} works. 617Having looked at the source, we know the relevant subroutine is 618@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN} 619@code{break} command. 620 621@smallexample 622(@value{GDBP}) @b{break m4_changequote} 623Breakpoint 1 at 0x62f4: file builtin.c, line 879. 624@end smallexample 625 626@noindent 627Using the @code{run} command, we start @code{m4} running under @value{GDBN} 628control; as long as control does not reach the @code{m4_changequote} 629subroutine, the program runs as usual: 630 631@smallexample 632(@value{GDBP}) @b{run} 633Starting program: /work/Editorial/gdb/gnu/m4/m4 634@b{define(foo,0000)} 635 636@b{foo} 6370000 638@end smallexample 639 640@noindent 641To trigger the breakpoint, we call @code{changequote}. @value{GDBN} 642suspends execution of @code{m4}, displaying information about the 643context where it stops. 644 645@smallexample 646@b{changequote(<QUOTE>,<UNQUOTE>)} 647 648Breakpoint 1, m4_changequote (argc=3, argv=0x33c70) 649 at builtin.c:879 650879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3)) 651@end smallexample 652 653@noindent 654Now we use the command @code{n} (@code{next}) to advance execution to 655the next line of the current function. 656 657@smallexample 658(@value{GDBP}) @b{n} 659882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\ 660 : nil, 661@end smallexample 662 663@noindent 664@code{set_quotes} looks like a promising subroutine. We can go into it 665by using the command @code{s} (@code{step}) instead of @code{next}. 666@code{step} goes to the next line to be executed in @emph{any} 667subroutine, so it steps into @code{set_quotes}. 668 669@smallexample 670(@value{GDBP}) @b{s} 671set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") 672 at input.c:530 673530 if (lquote != def_lquote) 674@end smallexample 675 676@noindent 677The display that shows the subroutine where @code{m4} is now 678suspended (and its arguments) is called a stack frame display. It 679shows a summary of the stack. We can use the @code{backtrace} 680command (which can also be spelled @code{bt}), to see where we are 681in the stack as a whole: the @code{backtrace} command displays a 682stack frame for each active subroutine. 683 684@smallexample 685(@value{GDBP}) @b{bt} 686#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") 687 at input.c:530 688#1 0x6344 in m4_changequote (argc=3, argv=0x33c70) 689 at builtin.c:882 690#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242 691#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30) 692 at macro.c:71 693#4 0x79dc in expand_input () at macro.c:40 694#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195 695@end smallexample 696 697@noindent 698We step through a few more lines to see what happens. The first two 699times, we can use @samp{s}; the next two times we use @code{n} to avoid 700falling into the @code{xstrdup} subroutine. 701 702@smallexample 703(@value{GDBP}) @b{s} 7040x3b5c 532 if (rquote != def_rquote) 705(@value{GDBP}) @b{s} 7060x3b80 535 lquote = (lq == nil || *lq == '\0') ? \ 707def_lquote : xstrdup(lq); 708(@value{GDBP}) @b{n} 709536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ 710 : xstrdup(rq); 711(@value{GDBP}) @b{n} 712538 len_lquote = strlen(rquote); 713@end smallexample 714 715@noindent 716The last line displayed looks a little odd; we can examine the variables 717@code{lquote} and @code{rquote} to see if they are in fact the new left 718and right quotes we specified. We use the command @code{p} 719(@code{print}) to see their values. 720 721@smallexample 722(@value{GDBP}) @b{p lquote} 723$1 = 0x35d40 "<QUOTE>" 724(@value{GDBP}) @b{p rquote} 725$2 = 0x35d50 "<UNQUOTE>" 726@end smallexample 727 728@noindent 729@code{lquote} and @code{rquote} are indeed the new left and right quotes. 730To look at some context, we can display ten lines of source 731surrounding the current line with the @code{l} (@code{list}) command. 732 733@smallexample 734(@value{GDBP}) @b{l} 735533 xfree(rquote); 736534 737535 lquote = (lq == nil || *lq == '\0') ? def_lquote\ 738 : xstrdup (lq); 739536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ 740 : xstrdup (rq); 741537 742538 len_lquote = strlen(rquote); 743539 len_rquote = strlen(lquote); 744540 @} 745541 746542 void 747@end smallexample 748 749@noindent 750Let us step past the two lines that set @code{len_lquote} and 751@code{len_rquote}, and then examine the values of those variables. 752 753@smallexample 754(@value{GDBP}) @b{n} 755539 len_rquote = strlen(lquote); 756(@value{GDBP}) @b{n} 757540 @} 758(@value{GDBP}) @b{p len_lquote} 759$3 = 9 760(@value{GDBP}) @b{p len_rquote} 761$4 = 7 762@end smallexample 763 764@noindent 765That certainly looks wrong, assuming @code{len_lquote} and 766@code{len_rquote} are meant to be the lengths of @code{lquote} and 767@code{rquote} respectively. We can set them to better values using 768the @code{p} command, since it can print the value of 769any expression---and that expression can include subroutine calls and 770assignments. 771 772@smallexample 773(@value{GDBP}) @b{p len_lquote=strlen(lquote)} 774$5 = 7 775(@value{GDBP}) @b{p len_rquote=strlen(rquote)} 776$6 = 9 777@end smallexample 778 779@noindent 780Is that enough to fix the problem of using the new quotes with the 781@code{m4} built-in @code{defn}? We can allow @code{m4} to continue 782executing with the @code{c} (@code{continue}) command, and then try the 783example that caused trouble initially: 784 785@smallexample 786(@value{GDBP}) @b{c} 787Continuing. 788 789@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))} 790 791baz 7920000 793@end smallexample 794 795@noindent 796Success! The new quotes now work just as well as the default ones. The 797problem seems to have been just the two typos defining the wrong 798lengths. We allow @code{m4} exit by giving it an EOF as input: 799 800@smallexample 801@b{Ctrl-d} 802Program exited normally. 803@end smallexample 804 805@noindent 806The message @samp{Program exited normally.} is from @value{GDBN}; it 807indicates @code{m4} has finished executing. We can end our @value{GDBN} 808session with the @value{GDBN} @code{quit} command. 809 810@smallexample 811(@value{GDBP}) @b{quit} 812@end smallexample 813 814@node Invocation 815@chapter Getting In and Out of @value{GDBN} 816 817This chapter discusses how to start @value{GDBN}, and how to get out of it. 818The essentials are: 819@itemize @bullet 820@item 821type @samp{@value{GDBP}} to start @value{GDBN}. 822@item 823type @kbd{quit} or @kbd{Ctrl-d} to exit. 824@end itemize 825 826@menu 827* Invoking GDB:: How to start @value{GDBN} 828* Quitting GDB:: How to quit @value{GDBN} 829* Shell Commands:: How to use shell commands inside @value{GDBN} 830* Logging Output:: How to log @value{GDBN}'s output to a file 831@end menu 832 833@node Invoking GDB 834@section Invoking @value{GDBN} 835 836Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started, 837@value{GDBN} reads commands from the terminal until you tell it to exit. 838 839You can also run @code{@value{GDBP}} with a variety of arguments and options, 840to specify more of your debugging environment at the outset. 841 842The command-line options described here are designed 843to cover a variety of situations; in some environments, some of these 844options may effectively be unavailable. 845 846The most usual way to start @value{GDBN} is with one argument, 847specifying an executable program: 848 849@smallexample 850@value{GDBP} @var{program} 851@end smallexample 852 853@noindent 854You can also start with both an executable program and a core file 855specified: 856 857@smallexample 858@value{GDBP} @var{program} @var{core} 859@end smallexample 860 861You can, instead, specify a process ID as a second argument, if you want 862to debug a running process: 863 864@smallexample 865@value{GDBP} @var{program} 1234 866@end smallexample 867 868@noindent 869would attach @value{GDBN} to process @code{1234} (unless you also have a file 870named @file{1234}; @value{GDBN} does check for a core file first). 871 872Taking advantage of the second command-line argument requires a fairly 873complete operating system; when you use @value{GDBN} as a remote 874debugger attached to a bare board, there may not be any notion of 875``process'', and there is often no way to get a core dump. @value{GDBN} 876will warn you if it is unable to attach or to read core dumps. 877 878You can optionally have @code{@value{GDBP}} pass any arguments after the 879executable file to the inferior using @code{--args}. This option stops 880option processing. 881@smallexample 882@value{GDBP} --args gcc -O2 -c foo.c 883@end smallexample 884This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set 885@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}. 886 887You can run @code{@value{GDBP}} without printing the front material, which describes 888@value{GDBN}'s non-warranty, by specifying @code{-silent}: 889 890@smallexample 891@value{GDBP} -silent 892@end smallexample 893 894@noindent 895You can further control how @value{GDBN} starts up by using command-line 896options. @value{GDBN} itself can remind you of the options available. 897 898@noindent 899Type 900 901@smallexample 902@value{GDBP} -help 903@end smallexample 904 905@noindent 906to display all available options and briefly describe their use 907(@samp{@value{GDBP} -h} is a shorter equivalent). 908 909All options and command line arguments you give are processed 910in sequential order. The order makes a difference when the 911@samp{-x} option is used. 912 913 914@menu 915* File Options:: Choosing files 916* Mode Options:: Choosing modes 917* Startup:: What @value{GDBN} does during startup 918@end menu 919 920@node File Options 921@subsection Choosing Files 922 923When @value{GDBN} starts, it reads any arguments other than options as 924specifying an executable file and core file (or process ID). This is 925the same as if the arguments were specified by the @samp{-se} and 926@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the 927first argument that does not have an associated option flag as 928equivalent to the @samp{-se} option followed by that argument; and the 929second argument that does not have an associated option flag, if any, as 930equivalent to the @samp{-c}/@samp{-p} option followed by that argument.) 931If the second argument begins with a decimal digit, @value{GDBN} will 932first attempt to attach to it as a process, and if that fails, attempt 933to open it as a corefile. If you have a corefile whose name begins with 934a digit, you can prevent @value{GDBN} from treating it as a pid by 935prefixing it with @file{./}, e.g.@: @file{./12345}. 936 937If @value{GDBN} has not been configured to included core file support, 938such as for most embedded targets, then it will complain about a second 939argument and ignore it. 940 941Many options have both long and short forms; both are shown in the 942following list. @value{GDBN} also recognizes the long forms if you truncate 943them, so long as enough of the option is present to be unambiguous. 944(If you prefer, you can flag option arguments with @samp{--} rather 945than @samp{-}, though we illustrate the more usual convention.) 946 947@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This 948@c way, both those who look for -foo and --foo in the index, will find 949@c it. 950 951@table @code 952@item -symbols @var{file} 953@itemx -s @var{file} 954@cindex @code{--symbols} 955@cindex @code{-s} 956Read symbol table from file @var{file}. 957 958@item -exec @var{file} 959@itemx -e @var{file} 960@cindex @code{--exec} 961@cindex @code{-e} 962Use file @var{file} as the executable file to execute when appropriate, 963and for examining pure data in conjunction with a core dump. 964 965@item -se @var{file} 966@cindex @code{--se} 967Read symbol table from file @var{file} and use it as the executable 968file. 969 970@item -core @var{file} 971@itemx -c @var{file} 972@cindex @code{--core} 973@cindex @code{-c} 974Use file @var{file} as a core dump to examine. 975 976@item -pid @var{number} 977@itemx -p @var{number} 978@cindex @code{--pid} 979@cindex @code{-p} 980Connect to process ID @var{number}, as with the @code{attach} command. 981 982@item -command @var{file} 983@itemx -x @var{file} 984@cindex @code{--command} 985@cindex @code{-x} 986Execute commands from file @var{file}. The contents of this file is 987evaluated exactly as the @code{source} command would. 988@xref{Command Files,, Command files}. 989 990@item -eval-command @var{command} 991@itemx -ex @var{command} 992@cindex @code{--eval-command} 993@cindex @code{-ex} 994Execute a single @value{GDBN} command. 995 996This option may be used multiple times to call multiple commands. It may 997also be interleaved with @samp{-command} as required. 998 999@smallexample 1000@value{GDBP} -ex 'target sim' -ex 'load' \ 1001 -x setbreakpoints -ex 'run' a.out 1002@end smallexample 1003 1004@item -init-command @var{file} 1005@itemx -ix @var{file} 1006@cindex @code{--init-command} 1007@cindex @code{-ix} 1008Execute commands from file @var{file} before loading the inferior (but 1009after loading gdbinit files). 1010@xref{Startup}. 1011 1012@item -init-eval-command @var{command} 1013@itemx -iex @var{command} 1014@cindex @code{--init-eval-command} 1015@cindex @code{-iex} 1016Execute a single @value{GDBN} command before loading the inferior (but 1017after loading gdbinit files). 1018@xref{Startup}. 1019 1020@item -directory @var{directory} 1021@itemx -d @var{directory} 1022@cindex @code{--directory} 1023@cindex @code{-d} 1024Add @var{directory} to the path to search for source and script files. 1025 1026@item -r 1027@itemx -readnow 1028@cindex @code{--readnow} 1029@cindex @code{-r} 1030Read each symbol file's entire symbol table immediately, rather than 1031the default, which is to read it incrementally as it is needed. 1032This makes startup slower, but makes future operations faster. 1033 1034@end table 1035 1036@node Mode Options 1037@subsection Choosing Modes 1038 1039You can run @value{GDBN} in various alternative modes---for example, in 1040batch mode or quiet mode. 1041 1042@table @code 1043@anchor{-nx} 1044@item -nx 1045@itemx -n 1046@cindex @code{--nx} 1047@cindex @code{-n} 1048Do not execute commands found in any initialization file. 1049There are three init files, loaded in the following order: 1050 1051@table @code 1052@item @file{system.gdbinit} 1053This is the system-wide init file. 1054Its location is specified with the @code{--with-system-gdbinit} 1055configure option (@pxref{System-wide configuration}). 1056It is loaded first when @value{GDBN} starts, before command line options 1057have been processed. 1058@item @file{~/.gdbinit} 1059This is the init file in your home directory. 1060It is loaded next, after @file{system.gdbinit}, and before 1061command options have been processed. 1062@item @file{./.gdbinit} 1063This is the init file in the current directory. 1064It is loaded last, after command line options other than @code{-x} and 1065@code{-ex} have been processed. Command line options @code{-x} and 1066@code{-ex} are processed last, after @file{./.gdbinit} has been loaded. 1067@end table 1068 1069For further documentation on startup processing, @xref{Startup}. 1070For documentation on how to write command files, 1071@xref{Command Files,,Command Files}. 1072 1073@anchor{-nh} 1074@item -nh 1075@cindex @code{--nh} 1076Do not execute commands found in @file{~/.gdbinit}, the init file 1077in your home directory. 1078@xref{Startup}. 1079 1080@item -quiet 1081@itemx -silent 1082@itemx -q 1083@cindex @code{--quiet} 1084@cindex @code{--silent} 1085@cindex @code{-q} 1086``Quiet''. Do not print the introductory and copyright messages. These 1087messages are also suppressed in batch mode. 1088 1089@item -batch 1090@cindex @code{--batch} 1091Run in batch mode. Exit with status @code{0} after processing all the 1092command files specified with @samp{-x} (and all commands from 1093initialization files, if not inhibited with @samp{-n}). Exit with 1094nonzero status if an error occurs in executing the @value{GDBN} commands 1095in the command files. Batch mode also disables pagination, sets unlimited 1096terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm 1097off} were in effect (@pxref{Messages/Warnings}). 1098 1099Batch mode may be useful for running @value{GDBN} as a filter, for 1100example to download and run a program on another computer; in order to 1101make this more useful, the message 1102 1103@smallexample 1104Program exited normally. 1105@end smallexample 1106 1107@noindent 1108(which is ordinarily issued whenever a program running under 1109@value{GDBN} control terminates) is not issued when running in batch 1110mode. 1111 1112@item -batch-silent 1113@cindex @code{--batch-silent} 1114Run in batch mode exactly like @samp{-batch}, but totally silently. All 1115@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is 1116unaffected). This is much quieter than @samp{-silent} and would be useless 1117for an interactive session. 1118 1119This is particularly useful when using targets that give @samp{Loading section} 1120messages, for example. 1121 1122Note that targets that give their output via @value{GDBN}, as opposed to 1123writing directly to @code{stdout}, will also be made silent. 1124 1125@item -return-child-result 1126@cindex @code{--return-child-result} 1127The return code from @value{GDBN} will be the return code from the child 1128process (the process being debugged), with the following exceptions: 1129 1130@itemize @bullet 1131@item 1132@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an 1133internal error. In this case the exit code is the same as it would have been 1134without @samp{-return-child-result}. 1135@item 1136The user quits with an explicit value. E.g., @samp{quit 1}. 1137@item 1138The child process never runs, or is not allowed to terminate, in which case 1139the exit code will be -1. 1140@end itemize 1141 1142This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent}, 1143when @value{GDBN} is being used as a remote program loader or simulator 1144interface. 1145 1146@item -nowindows 1147@itemx -nw 1148@cindex @code{--nowindows} 1149@cindex @code{-nw} 1150``No windows''. If @value{GDBN} comes with a graphical user interface 1151(GUI) built in, then this option tells @value{GDBN} to only use the command-line 1152interface. If no GUI is available, this option has no effect. 1153 1154@item -windows 1155@itemx -w 1156@cindex @code{--windows} 1157@cindex @code{-w} 1158If @value{GDBN} includes a GUI, then this option requires it to be 1159used if possible. 1160 1161@item -cd @var{directory} 1162@cindex @code{--cd} 1163Run @value{GDBN} using @var{directory} as its working directory, 1164instead of the current directory. 1165 1166@item -data-directory @var{directory} 1167@cindex @code{--data-directory} 1168Run @value{GDBN} using @var{directory} as its data directory. 1169The data directory is where @value{GDBN} searches for its 1170auxiliary files. @xref{Data Files}. 1171 1172@item -fullname 1173@itemx -f 1174@cindex @code{--fullname} 1175@cindex @code{-f} 1176@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a 1177subprocess. It tells @value{GDBN} to output the full file name and line 1178number in a standard, recognizable fashion each time a stack frame is 1179displayed (which includes each time your program stops). This 1180recognizable format looks like two @samp{\032} characters, followed by 1181the file name, line number and character position separated by colons, 1182and a newline. The Emacs-to-@value{GDBN} interface program uses the two 1183@samp{\032} characters as a signal to display the source code for the 1184frame. 1185 1186@item -annotate @var{level} 1187@cindex @code{--annotate} 1188This option sets the @dfn{annotation level} inside @value{GDBN}. Its 1189effect is identical to using @samp{set annotate @var{level}} 1190(@pxref{Annotations}). The annotation @var{level} controls how much 1191information @value{GDBN} prints together with its prompt, values of 1192expressions, source lines, and other types of output. Level 0 is the 1193normal, level 1 is for use when @value{GDBN} is run as a subprocess of 1194@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs 1195that control @value{GDBN}, and level 2 has been deprecated. 1196 1197The annotation mechanism has largely been superseded by @sc{gdb/mi} 1198(@pxref{GDB/MI}). 1199 1200@item --args 1201@cindex @code{--args} 1202Change interpretation of command line so that arguments following the 1203executable file are passed as command line arguments to the inferior. 1204This option stops option processing. 1205 1206@item -baud @var{bps} 1207@itemx -b @var{bps} 1208@cindex @code{--baud} 1209@cindex @code{-b} 1210Set the line speed (baud rate or bits per second) of any serial 1211interface used by @value{GDBN} for remote debugging. 1212 1213@item -l @var{timeout} 1214@cindex @code{-l} 1215Set the timeout (in seconds) of any communication used by @value{GDBN} 1216for remote debugging. 1217 1218@item -tty @var{device} 1219@itemx -t @var{device} 1220@cindex @code{--tty} 1221@cindex @code{-t} 1222Run using @var{device} for your program's standard input and output. 1223@c FIXME: kingdon thinks there is more to -tty. Investigate. 1224 1225@c resolve the situation of these eventually 1226@item -tui 1227@cindex @code{--tui} 1228Activate the @dfn{Text User Interface} when starting. The Text User 1229Interface manages several text windows on the terminal, showing 1230source, assembly, registers and @value{GDBN} command outputs 1231(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this 1232option if you run @value{GDBN} from Emacs (@pxref{Emacs, , 1233Using @value{GDBN} under @sc{gnu} Emacs}). 1234 1235@c @item -xdb 1236@c @cindex @code{--xdb} 1237@c Run in XDB compatibility mode, allowing the use of certain XDB commands. 1238@c For information, see the file @file{xdb_trans.html}, which is usually 1239@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX 1240@c systems. 1241 1242@item -interpreter @var{interp} 1243@cindex @code{--interpreter} 1244Use the interpreter @var{interp} for interface with the controlling 1245program or device. This option is meant to be set by programs which 1246communicate with @value{GDBN} using it as a back end. 1247@xref{Interpreters, , Command Interpreters}. 1248 1249@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes 1250@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, , 1251The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The 1252previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and 1253selected with @samp{--interpreter=mi1}, is deprecated. Earlier 1254@sc{gdb/mi} interfaces are no longer supported. 1255 1256@item -write 1257@cindex @code{--write} 1258Open the executable and core files for both reading and writing. This 1259is equivalent to the @samp{set write on} command inside @value{GDBN} 1260(@pxref{Patching}). 1261 1262@item -statistics 1263@cindex @code{--statistics} 1264This option causes @value{GDBN} to print statistics about time and 1265memory usage after it completes each command and returns to the prompt. 1266 1267@item -version 1268@cindex @code{--version} 1269This option causes @value{GDBN} to print its version number and 1270no-warranty blurb, and exit. 1271 1272@item -configuration 1273@cindex @code{--configuration} 1274This option causes @value{GDBN} to print details about its build-time 1275configuration parameters, and then exit. These details can be 1276important when reporting @value{GDBN} bugs (@pxref{GDB Bugs}). 1277 1278@end table 1279 1280@node Startup 1281@subsection What @value{GDBN} Does During Startup 1282@cindex @value{GDBN} startup 1283 1284Here's the description of what @value{GDBN} does during session startup: 1285 1286@enumerate 1287@item 1288Sets up the command interpreter as specified by the command line 1289(@pxref{Mode Options, interpreter}). 1290 1291@item 1292@cindex init file 1293Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was 1294used when building @value{GDBN}; @pxref{System-wide configuration, 1295 ,System-wide configuration and settings}) and executes all the commands in 1296that file. 1297 1298@anchor{Home Directory Init File} 1299@item 1300Reads the init file (if any) in your home directory@footnote{On 1301DOS/Windows systems, the home directory is the one pointed to by the 1302@code{HOME} environment variable.} and executes all the commands in 1303that file. 1304 1305@anchor{Option -init-eval-command} 1306@item 1307Executes commands and command files specified by the @samp{-iex} and 1308@samp{-ix} options in their specified order. Usually you should use the 1309@samp{-ex} and @samp{-x} options instead, but this way you can apply 1310settings before @value{GDBN} init files get executed and before inferior 1311gets loaded. 1312 1313@item 1314Processes command line options and operands. 1315 1316@anchor{Init File in the Current Directory during Startup} 1317@item 1318Reads and executes the commands from init file (if any) in the current 1319working directory as long as @samp{set auto-load local-gdbinit} is set to 1320@samp{on} (@pxref{Init File in the Current Directory}). 1321This is only done if the current directory is 1322different from your home directory. Thus, you can have more than one 1323init file, one generic in your home directory, and another, specific 1324to the program you are debugging, in the directory where you invoke 1325@value{GDBN}. 1326 1327@item 1328If the command line specified a program to debug, or a process to 1329attach to, or a core file, @value{GDBN} loads any auto-loaded 1330scripts provided for the program or for its loaded shared libraries. 1331@xref{Auto-loading}. 1332 1333If you wish to disable the auto-loading during startup, 1334you must do something like the following: 1335 1336@smallexample 1337$ gdb -iex "set auto-load python-scripts off" myprogram 1338@end smallexample 1339 1340Option @samp{-ex} does not work because the auto-loading is then turned 1341off too late. 1342 1343@item 1344Executes commands and command files specified by the @samp{-ex} and 1345@samp{-x} options in their specified order. @xref{Command Files}, for 1346more details about @value{GDBN} command files. 1347 1348@item 1349Reads the command history recorded in the @dfn{history file}. 1350@xref{Command History}, for more details about the command history and the 1351files where @value{GDBN} records it. 1352@end enumerate 1353 1354Init files use the same syntax as @dfn{command files} (@pxref{Command 1355Files}) and are processed by @value{GDBN} in the same way. The init 1356file in your home directory can set options (such as @samp{set 1357complaints}) that affect subsequent processing of command line options 1358and operands. Init files are not executed if you use the @samp{-nx} 1359option (@pxref{Mode Options, ,Choosing Modes}). 1360 1361To display the list of init files loaded by gdb at startup, you 1362can use @kbd{gdb --help}. 1363 1364@cindex init file name 1365@cindex @file{.gdbinit} 1366@cindex @file{gdb.ini} 1367The @value{GDBN} init files are normally called @file{.gdbinit}. 1368The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to 1369the limitations of file names imposed by DOS filesystems. The Windows 1370port of @value{GDBN} uses the standard name, but if it finds a 1371@file{gdb.ini} file in your home directory, it warns you about that 1372and suggests to rename the file to the standard name. 1373 1374 1375@node Quitting GDB 1376@section Quitting @value{GDBN} 1377@cindex exiting @value{GDBN} 1378@cindex leaving @value{GDBN} 1379 1380@table @code 1381@kindex quit @r{[}@var{expression}@r{]} 1382@kindex q @r{(@code{quit})} 1383@item quit @r{[}@var{expression}@r{]} 1384@itemx q 1385To exit @value{GDBN}, use the @code{quit} command (abbreviated 1386@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you 1387do not supply @var{expression}, @value{GDBN} will terminate normally; 1388otherwise it will terminate using the result of @var{expression} as the 1389error code. 1390@end table 1391 1392@cindex interrupt 1393An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather 1394terminates the action of any @value{GDBN} command that is in progress and 1395returns to @value{GDBN} command level. It is safe to type the interrupt 1396character at any time because @value{GDBN} does not allow it to take effect 1397until a time when it is safe. 1398 1399If you have been using @value{GDBN} to control an attached process or 1400device, you can release it with the @code{detach} command 1401(@pxref{Attach, ,Debugging an Already-running Process}). 1402 1403@node Shell Commands 1404@section Shell Commands 1405 1406If you need to execute occasional shell commands during your 1407debugging session, there is no need to leave or suspend @value{GDBN}; you can 1408just use the @code{shell} command. 1409 1410@table @code 1411@kindex shell 1412@kindex ! 1413@cindex shell escape 1414@item shell @var{command-string} 1415@itemx !@var{command-string} 1416Invoke a standard shell to execute @var{command-string}. 1417Note that no space is needed between @code{!} and @var{command-string}. 1418If it exists, the environment variable @code{SHELL} determines which 1419shell to run. Otherwise @value{GDBN} uses the default shell 1420(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.). 1421@end table 1422 1423The utility @code{make} is often needed in development environments. 1424You do not have to use the @code{shell} command for this purpose in 1425@value{GDBN}: 1426 1427@table @code 1428@kindex make 1429@cindex calling make 1430@item make @var{make-args} 1431Execute the @code{make} program with the specified 1432arguments. This is equivalent to @samp{shell make @var{make-args}}. 1433@end table 1434 1435@node Logging Output 1436@section Logging Output 1437@cindex logging @value{GDBN} output 1438@cindex save @value{GDBN} output to a file 1439 1440You may want to save the output of @value{GDBN} commands to a file. 1441There are several commands to control @value{GDBN}'s logging. 1442 1443@table @code 1444@kindex set logging 1445@item set logging on 1446Enable logging. 1447@item set logging off 1448Disable logging. 1449@cindex logging file name 1450@item set logging file @var{file} 1451Change the name of the current logfile. The default logfile is @file{gdb.txt}. 1452@item set logging overwrite [on|off] 1453By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if 1454you want @code{set logging on} to overwrite the logfile instead. 1455@item set logging redirect [on|off] 1456By default, @value{GDBN} output will go to both the terminal and the logfile. 1457Set @code{redirect} if you want output to go only to the log file. 1458@kindex show logging 1459@item show logging 1460Show the current values of the logging settings. 1461@end table 1462 1463@node Commands 1464@chapter @value{GDBN} Commands 1465 1466You can abbreviate a @value{GDBN} command to the first few letters of the command 1467name, if that abbreviation is unambiguous; and you can repeat certain 1468@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB} 1469key to get @value{GDBN} to fill out the rest of a word in a command (or to 1470show you the alternatives available, if there is more than one possibility). 1471 1472@menu 1473* Command Syntax:: How to give commands to @value{GDBN} 1474* Completion:: Command completion 1475* Help:: How to ask @value{GDBN} for help 1476@end menu 1477 1478@node Command Syntax 1479@section Command Syntax 1480 1481A @value{GDBN} command is a single line of input. There is no limit on 1482how long it can be. It starts with a command name, which is followed by 1483arguments whose meaning depends on the command name. For example, the 1484command @code{step} accepts an argument which is the number of times to 1485step, as in @samp{step 5}. You can also use the @code{step} command 1486with no arguments. Some commands do not allow any arguments. 1487 1488@cindex abbreviation 1489@value{GDBN} command names may always be truncated if that abbreviation is 1490unambiguous. Other possible command abbreviations are listed in the 1491documentation for individual commands. In some cases, even ambiguous 1492abbreviations are allowed; for example, @code{s} is specially defined as 1493equivalent to @code{step} even though there are other commands whose 1494names start with @code{s}. You can test abbreviations by using them as 1495arguments to the @code{help} command. 1496 1497@cindex repeating commands 1498@kindex RET @r{(repeat last command)} 1499A blank line as input to @value{GDBN} (typing just @key{RET}) means to 1500repeat the previous command. Certain commands (for example, @code{run}) 1501will not repeat this way; these are commands whose unintentional 1502repetition might cause trouble and which you are unlikely to want to 1503repeat. User-defined commands can disable this feature; see 1504@ref{Define, dont-repeat}. 1505 1506The @code{list} and @code{x} commands, when you repeat them with 1507@key{RET}, construct new arguments rather than repeating 1508exactly as typed. This permits easy scanning of source or memory. 1509 1510@value{GDBN} can also use @key{RET} in another way: to partition lengthy 1511output, in a way similar to the common utility @code{more} 1512(@pxref{Screen Size,,Screen Size}). Since it is easy to press one 1513@key{RET} too many in this situation, @value{GDBN} disables command 1514repetition after any command that generates this sort of display. 1515 1516@kindex # @r{(a comment)} 1517@cindex comment 1518Any text from a @kbd{#} to the end of the line is a comment; it does 1519nothing. This is useful mainly in command files (@pxref{Command 1520Files,,Command Files}). 1521 1522@cindex repeating command sequences 1523@kindex Ctrl-o @r{(operate-and-get-next)} 1524The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of 1525commands. This command accepts the current line, like @key{RET}, and 1526then fetches the next line relative to the current line from the history 1527for editing. 1528 1529@node Completion 1530@section Command Completion 1531 1532@cindex completion 1533@cindex word completion 1534@value{GDBN} can fill in the rest of a word in a command for you, if there is 1535only one possibility; it can also show you what the valid possibilities 1536are for the next word in a command, at any time. This works for @value{GDBN} 1537commands, @value{GDBN} subcommands, and the names of symbols in your program. 1538 1539Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest 1540of a word. If there is only one possibility, @value{GDBN} fills in the 1541word, and waits for you to finish the command (or press @key{RET} to 1542enter it). For example, if you type 1543 1544@c FIXME "@key" does not distinguish its argument sufficiently to permit 1545@c complete accuracy in these examples; space introduced for clarity. 1546@c If texinfo enhancements make it unnecessary, it would be nice to 1547@c replace " @key" by "@key" in the following... 1548@smallexample 1549(@value{GDBP}) info bre @key{TAB} 1550@end smallexample 1551 1552@noindent 1553@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is 1554the only @code{info} subcommand beginning with @samp{bre}: 1555 1556@smallexample 1557(@value{GDBP}) info breakpoints 1558@end smallexample 1559 1560@noindent 1561You can either press @key{RET} at this point, to run the @code{info 1562breakpoints} command, or backspace and enter something else, if 1563@samp{breakpoints} does not look like the command you expected. (If you 1564were sure you wanted @code{info breakpoints} in the first place, you 1565might as well just type @key{RET} immediately after @samp{info bre}, 1566to exploit command abbreviations rather than command completion). 1567 1568If there is more than one possibility for the next word when you press 1569@key{TAB}, @value{GDBN} sounds a bell. You can either supply more 1570characters and try again, or just press @key{TAB} a second time; 1571@value{GDBN} displays all the possible completions for that word. For 1572example, you might want to set a breakpoint on a subroutine whose name 1573begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN} 1574just sounds the bell. Typing @key{TAB} again displays all the 1575function names in your program that begin with those characters, for 1576example: 1577 1578@smallexample 1579(@value{GDBP}) b make_ @key{TAB} 1580@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see: 1581make_a_section_from_file make_environ 1582make_abs_section make_function_type 1583make_blockvector make_pointer_type 1584make_cleanup make_reference_type 1585make_command make_symbol_completion_list 1586(@value{GDBP}) b make_ 1587@end smallexample 1588 1589@noindent 1590After displaying the available possibilities, @value{GDBN} copies your 1591partial input (@samp{b make_} in the example) so you can finish the 1592command. 1593 1594If you just want to see the list of alternatives in the first place, you 1595can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?} 1596means @kbd{@key{META} ?}. You can type this either by holding down a 1597key designated as the @key{META} shift on your keyboard (if there is 1598one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}. 1599 1600@cindex quotes in commands 1601@cindex completion of quoted strings 1602Sometimes the string you need, while logically a ``word'', may contain 1603parentheses or other characters that @value{GDBN} normally excludes from 1604its notion of a word. To permit word completion to work in this 1605situation, you may enclose words in @code{'} (single quote marks) in 1606@value{GDBN} commands. 1607 1608The most likely situation where you might need this is in typing the 1609name of a C@t{++} function. This is because C@t{++} allows function 1610overloading (multiple definitions of the same function, distinguished 1611by argument type). For example, when you want to set a breakpoint you 1612may need to distinguish whether you mean the version of @code{name} 1613that takes an @code{int} parameter, @code{name(int)}, or the version 1614that takes a @code{float} parameter, @code{name(float)}. To use the 1615word-completion facilities in this situation, type a single quote 1616@code{'} at the beginning of the function name. This alerts 1617@value{GDBN} that it may need to consider more information than usual 1618when you press @key{TAB} or @kbd{M-?} to request word completion: 1619 1620@smallexample 1621(@value{GDBP}) b 'bubble( @kbd{M-?} 1622bubble(double,double) bubble(int,int) 1623(@value{GDBP}) b 'bubble( 1624@end smallexample 1625 1626In some cases, @value{GDBN} can tell that completing a name requires using 1627quotes. When this happens, @value{GDBN} inserts the quote for you (while 1628completing as much as it can) if you do not type the quote in the first 1629place: 1630 1631@smallexample 1632(@value{GDBP}) b bub @key{TAB} 1633@exdent @value{GDBN} alters your input line to the following, and rings a bell: 1634(@value{GDBP}) b 'bubble( 1635@end smallexample 1636 1637@noindent 1638In general, @value{GDBN} can tell that a quote is needed (and inserts it) if 1639you have not yet started typing the argument list when you ask for 1640completion on an overloaded symbol. 1641 1642For more information about overloaded functions, see @ref{C Plus Plus 1643Expressions, ,C@t{++} Expressions}. You can use the command @code{set 1644overload-resolution off} to disable overload resolution; 1645see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}. 1646 1647@cindex completion of structure field names 1648@cindex structure field name completion 1649@cindex completion of union field names 1650@cindex union field name completion 1651When completing in an expression which looks up a field in a 1652structure, @value{GDBN} also tries@footnote{The completer can be 1653confused by certain kinds of invalid expressions. Also, it only 1654examines the static type of the expression, not the dynamic type.} to 1655limit completions to the field names available in the type of the 1656left-hand-side: 1657 1658@smallexample 1659(@value{GDBP}) p gdb_stdout.@kbd{M-?} 1660magic to_fputs to_rewind 1661to_data to_isatty to_write 1662to_delete to_put to_write_async_safe 1663to_flush to_read 1664@end smallexample 1665 1666@noindent 1667This is because the @code{gdb_stdout} is a variable of the type 1668@code{struct ui_file} that is defined in @value{GDBN} sources as 1669follows: 1670 1671@smallexample 1672struct ui_file 1673@{ 1674 int *magic; 1675 ui_file_flush_ftype *to_flush; 1676 ui_file_write_ftype *to_write; 1677 ui_file_write_async_safe_ftype *to_write_async_safe; 1678 ui_file_fputs_ftype *to_fputs; 1679 ui_file_read_ftype *to_read; 1680 ui_file_delete_ftype *to_delete; 1681 ui_file_isatty_ftype *to_isatty; 1682 ui_file_rewind_ftype *to_rewind; 1683 ui_file_put_ftype *to_put; 1684 void *to_data; 1685@} 1686@end smallexample 1687 1688 1689@node Help 1690@section Getting Help 1691@cindex online documentation 1692@kindex help 1693 1694You can always ask @value{GDBN} itself for information on its commands, 1695using the command @code{help}. 1696 1697@table @code 1698@kindex h @r{(@code{help})} 1699@item help 1700@itemx h 1701You can use @code{help} (abbreviated @code{h}) with no arguments to 1702display a short list of named classes of commands: 1703 1704@smallexample 1705(@value{GDBP}) help 1706List of classes of commands: 1707 1708aliases -- Aliases of other commands 1709breakpoints -- Making program stop at certain points 1710data -- Examining data 1711files -- Specifying and examining files 1712internals -- Maintenance commands 1713obscure -- Obscure features 1714running -- Running the program 1715stack -- Examining the stack 1716status -- Status inquiries 1717support -- Support facilities 1718tracepoints -- Tracing of program execution without 1719 stopping the program 1720user-defined -- User-defined commands 1721 1722Type "help" followed by a class name for a list of 1723commands in that class. 1724Type "help" followed by command name for full 1725documentation. 1726Command name abbreviations are allowed if unambiguous. 1727(@value{GDBP}) 1728@end smallexample 1729@c the above line break eliminates huge line overfull... 1730 1731@item help @var{class} 1732Using one of the general help classes as an argument, you can get a 1733list of the individual commands in that class. For example, here is the 1734help display for the class @code{status}: 1735 1736@smallexample 1737(@value{GDBP}) help status 1738Status inquiries. 1739 1740List of commands: 1741 1742@c Line break in "show" line falsifies real output, but needed 1743@c to fit in smallbook page size. 1744info -- Generic command for showing things 1745 about the program being debugged 1746show -- Generic command for showing things 1747 about the debugger 1748 1749Type "help" followed by command name for full 1750documentation. 1751Command name abbreviations are allowed if unambiguous. 1752(@value{GDBP}) 1753@end smallexample 1754 1755@item help @var{command} 1756With a command name as @code{help} argument, @value{GDBN} displays a 1757short paragraph on how to use that command. 1758 1759@kindex apropos 1760@item apropos @var{args} 1761The @code{apropos} command searches through all of the @value{GDBN} 1762commands, and their documentation, for the regular expression specified in 1763@var{args}. It prints out all matches found. For example: 1764 1765@smallexample 1766apropos alias 1767@end smallexample 1768 1769@noindent 1770results in: 1771 1772@smallexample 1773@c @group 1774alias -- Define a new command that is an alias of an existing command 1775aliases -- Aliases of other commands 1776d -- Delete some breakpoints or auto-display expressions 1777del -- Delete some breakpoints or auto-display expressions 1778delete -- Delete some breakpoints or auto-display expressions 1779@c @end group 1780@end smallexample 1781 1782@kindex complete 1783@item complete @var{args} 1784The @code{complete @var{args}} command lists all the possible completions 1785for the beginning of a command. Use @var{args} to specify the beginning of the 1786command you want completed. For example: 1787 1788@smallexample 1789complete i 1790@end smallexample 1791 1792@noindent results in: 1793 1794@smallexample 1795@group 1796if 1797ignore 1798info 1799inspect 1800@end group 1801@end smallexample 1802 1803@noindent This is intended for use by @sc{gnu} Emacs. 1804@end table 1805 1806In addition to @code{help}, you can use the @value{GDBN} commands @code{info} 1807and @code{show} to inquire about the state of your program, or the state 1808of @value{GDBN} itself. Each command supports many topics of inquiry; this 1809manual introduces each of them in the appropriate context. The listings 1810under @code{info} and under @code{show} in the Command, Variable, and 1811Function Index point to all the sub-commands. @xref{Command and Variable 1812Index}. 1813 1814@c @group 1815@table @code 1816@kindex info 1817@kindex i @r{(@code{info})} 1818@item info 1819This command (abbreviated @code{i}) is for describing the state of your 1820program. For example, you can show the arguments passed to a function 1821with @code{info args}, list the registers currently in use with @code{info 1822registers}, or list the breakpoints you have set with @code{info breakpoints}. 1823You can get a complete list of the @code{info} sub-commands with 1824@w{@code{help info}}. 1825 1826@kindex set 1827@item set 1828You can assign the result of an expression to an environment variable with 1829@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with 1830@code{set prompt $}. 1831 1832@kindex show 1833@item show 1834In contrast to @code{info}, @code{show} is for describing the state of 1835@value{GDBN} itself. 1836You can change most of the things you can @code{show}, by using the 1837related command @code{set}; for example, you can control what number 1838system is used for displays with @code{set radix}, or simply inquire 1839which is currently in use with @code{show radix}. 1840 1841@kindex info set 1842To display all the settable parameters and their current 1843values, you can use @code{show} with no arguments; you may also use 1844@code{info set}. Both commands produce the same display. 1845@c FIXME: "info set" violates the rule that "info" is for state of 1846@c FIXME...program. Ck w/ GNU: "info set" to be called something else, 1847@c FIXME...or change desc of rule---eg "state of prog and debugging session"? 1848@end table 1849@c @end group 1850 1851Here are several miscellaneous @code{show} subcommands, all of which are 1852exceptional in lacking corresponding @code{set} commands: 1853 1854@table @code 1855@kindex show version 1856@cindex @value{GDBN} version number 1857@item show version 1858Show what version of @value{GDBN} is running. You should include this 1859information in @value{GDBN} bug-reports. If multiple versions of 1860@value{GDBN} are in use at your site, you may need to determine which 1861version of @value{GDBN} you are running; as @value{GDBN} evolves, new 1862commands are introduced, and old ones may wither away. Also, many 1863system vendors ship variant versions of @value{GDBN}, and there are 1864variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well. 1865The version number is the same as the one announced when you start 1866@value{GDBN}. 1867 1868@kindex show copying 1869@kindex info copying 1870@cindex display @value{GDBN} copyright 1871@item show copying 1872@itemx info copying 1873Display information about permission for copying @value{GDBN}. 1874 1875@kindex show warranty 1876@kindex info warranty 1877@item show warranty 1878@itemx info warranty 1879Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty, 1880if your version of @value{GDBN} comes with one. 1881 1882@kindex show configuration 1883@item show configuration 1884Display detailed information about the way @value{GDBN} was configured 1885when it was built. This displays the optional arguments passed to the 1886@file{configure} script and also configuration parameters detected 1887automatically by @command{configure}. When reporting a @value{GDBN} 1888bug (@pxref{GDB Bugs}), it is important to include this information in 1889your report. 1890 1891@end table 1892 1893@node Running 1894@chapter Running Programs Under @value{GDBN} 1895 1896When you run a program under @value{GDBN}, you must first generate 1897debugging information when you compile it. 1898 1899You may start @value{GDBN} with its arguments, if any, in an environment 1900of your choice. If you are doing native debugging, you may redirect 1901your program's input and output, debug an already running process, or 1902kill a child process. 1903 1904@menu 1905* Compilation:: Compiling for debugging 1906* Starting:: Starting your program 1907* Arguments:: Your program's arguments 1908* Environment:: Your program's environment 1909 1910* Working Directory:: Your program's working directory 1911* Input/Output:: Your program's input and output 1912* Attach:: Debugging an already-running process 1913* Kill Process:: Killing the child process 1914 1915* Inferiors and Programs:: Debugging multiple inferiors and programs 1916* Threads:: Debugging programs with multiple threads 1917* Forks:: Debugging forks 1918* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later 1919@end menu 1920 1921@node Compilation 1922@section Compiling for Debugging 1923 1924In order to debug a program effectively, you need to generate 1925debugging information when you compile it. This debugging information 1926is stored in the object file; it describes the data type of each 1927variable or function and the correspondence between source line numbers 1928and addresses in the executable code. 1929 1930To request debugging information, specify the @samp{-g} option when you run 1931the compiler. 1932 1933Programs that are to be shipped to your customers are compiled with 1934optimizations, using the @samp{-O} compiler option. However, some 1935compilers are unable to handle the @samp{-g} and @samp{-O} options 1936together. Using those compilers, you cannot generate optimized 1937executables containing debugging information. 1938 1939@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or 1940without @samp{-O}, making it possible to debug optimized code. We 1941recommend that you @emph{always} use @samp{-g} whenever you compile a 1942program. You may think your program is correct, but there is no sense 1943in pushing your luck. For more information, see @ref{Optimized Code}. 1944 1945Older versions of the @sc{gnu} C compiler permitted a variant option 1946@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this 1947format; if your @sc{gnu} C compiler has this option, do not use it. 1948 1949@value{GDBN} knows about preprocessor macros and can show you their 1950expansion (@pxref{Macros}). Most compilers do not include information 1951about preprocessor macros in the debugging information if you specify 1952the @option{-g} flag alone. Version 3.1 and later of @value{NGCC}, 1953the @sc{gnu} C compiler, provides macro information if you are using 1954the DWARF debugging format, and specify the option @option{-g3}. 1955 1956@xref{Debugging Options,,Options for Debugging Your Program or GCC, 1957gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more 1958information on @value{NGCC} options affecting debug information. 1959 1960You will have the best debugging experience if you use the latest 1961version of the DWARF debugging format that your compiler supports. 1962DWARF is currently the most expressive and best supported debugging 1963format in @value{GDBN}. 1964 1965@need 2000 1966@node Starting 1967@section Starting your Program 1968@cindex starting 1969@cindex running 1970 1971@table @code 1972@kindex run 1973@kindex r @r{(@code{run})} 1974@item run 1975@itemx r 1976Use the @code{run} command to start your program under @value{GDBN}. 1977You must first specify the program name (except on VxWorks) with an 1978argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of 1979@value{GDBN}}), or by using the @code{file} or @code{exec-file} command 1980(@pxref{Files, ,Commands to Specify Files}). 1981 1982@end table 1983 1984If you are running your program in an execution environment that 1985supports processes, @code{run} creates an inferior process and makes 1986that process run your program. In some environments without processes, 1987@code{run} jumps to the start of your program. Other targets, 1988like @samp{remote}, are always running. If you get an error 1989message like this one: 1990 1991@smallexample 1992The "remote" target does not support "run". 1993Try "help target" or "continue". 1994@end smallexample 1995 1996@noindent 1997then use @code{continue} to run your program. You may need @code{load} 1998first (@pxref{load}). 1999 2000The execution of a program is affected by certain information it 2001receives from its superior. @value{GDBN} provides ways to specify this 2002information, which you must do @emph{before} starting your program. (You 2003can change it after starting your program, but such changes only affect 2004your program the next time you start it.) This information may be 2005divided into four categories: 2006 2007@table @asis 2008@item The @emph{arguments.} 2009Specify the arguments to give your program as the arguments of the 2010@code{run} command. If a shell is available on your target, the shell 2011is used to pass the arguments, so that you may use normal conventions 2012(such as wildcard expansion or variable substitution) in describing 2013the arguments. 2014In Unix systems, you can control which shell is used with the 2015@code{SHELL} environment variable. If you do not define @code{SHELL}, 2016@value{GDBN} uses the default shell (@file{/bin/sh}). You can disable 2017use of any shell with the @code{set startup-with-shell} command (see 2018below for details). 2019 2020@item The @emph{environment.} 2021Your program normally inherits its environment from @value{GDBN}, but you can 2022use the @value{GDBN} commands @code{set environment} and @code{unset 2023environment} to change parts of the environment that affect 2024your program. @xref{Environment, ,Your Program's Environment}. 2025 2026@item The @emph{working directory.} 2027Your program inherits its working directory from @value{GDBN}. You can set 2028the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}. 2029@xref{Working Directory, ,Your Program's Working Directory}. 2030 2031@item The @emph{standard input and output.} 2032Your program normally uses the same device for standard input and 2033standard output as @value{GDBN} is using. You can redirect input and output 2034in the @code{run} command line, or you can use the @code{tty} command to 2035set a different device for your program. 2036@xref{Input/Output, ,Your Program's Input and Output}. 2037 2038@cindex pipes 2039@emph{Warning:} While input and output redirection work, you cannot use 2040pipes to pass the output of the program you are debugging to another 2041program; if you attempt this, @value{GDBN} is likely to wind up debugging the 2042wrong program. 2043@end table 2044 2045When you issue the @code{run} command, your program begins to execute 2046immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion 2047of how to arrange for your program to stop. Once your program has 2048stopped, you may call functions in your program, using the @code{print} 2049or @code{call} commands. @xref{Data, ,Examining Data}. 2050 2051If the modification time of your symbol file has changed since the last 2052time @value{GDBN} read its symbols, @value{GDBN} discards its symbol 2053table, and reads it again. When it does this, @value{GDBN} tries to retain 2054your current breakpoints. 2055 2056@table @code 2057@kindex start 2058@item start 2059@cindex run to main procedure 2060The name of the main procedure can vary from language to language. 2061With C or C@t{++}, the main procedure name is always @code{main}, but 2062other languages such as Ada do not require a specific name for their 2063main procedure. The debugger provides a convenient way to start the 2064execution of the program and to stop at the beginning of the main 2065procedure, depending on the language used. 2066 2067The @samp{start} command does the equivalent of setting a temporary 2068breakpoint at the beginning of the main procedure and then invoking 2069the @samp{run} command. 2070 2071@cindex elaboration phase 2072Some programs contain an @dfn{elaboration} phase where some startup code is 2073executed before the main procedure is called. This depends on the 2074languages used to write your program. In C@t{++}, for instance, 2075constructors for static and global objects are executed before 2076@code{main} is called. It is therefore possible that the debugger stops 2077before reaching the main procedure. However, the temporary breakpoint 2078will remain to halt execution. 2079 2080Specify the arguments to give to your program as arguments to the 2081@samp{start} command. These arguments will be given verbatim to the 2082underlying @samp{run} command. Note that the same arguments will be 2083reused if no argument is provided during subsequent calls to 2084@samp{start} or @samp{run}. 2085 2086It is sometimes necessary to debug the program during elaboration. In 2087these cases, using the @code{start} command would stop the execution of 2088your program too late, as the program would have already completed the 2089elaboration phase. Under these circumstances, insert breakpoints in your 2090elaboration code before running your program. 2091 2092@kindex set exec-wrapper 2093@item set exec-wrapper @var{wrapper} 2094@itemx show exec-wrapper 2095@itemx unset exec-wrapper 2096When @samp{exec-wrapper} is set, the specified wrapper is used to 2097launch programs for debugging. @value{GDBN} starts your program 2098with a shell command of the form @kbd{exec @var{wrapper} 2099@var{program}}. Quoting is added to @var{program} and its 2100arguments, but not to @var{wrapper}, so you should add quotes if 2101appropriate for your shell. The wrapper runs until it executes 2102your program, and then @value{GDBN} takes control. 2103 2104You can use any program that eventually calls @code{execve} with 2105its arguments as a wrapper. Several standard Unix utilities do 2106this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 2107with @code{exec "$@@"} will also work. 2108 2109For example, you can use @code{env} to pass an environment variable to 2110the debugged program, without setting the variable in your shell's 2111environment: 2112 2113@smallexample 2114(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so' 2115(@value{GDBP}) run 2116@end smallexample 2117 2118This command is available when debugging locally on most targets, excluding 2119@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino. 2120 2121@kindex set startup-with-shell 2122@item set startup-with-shell 2123@itemx set startup-with-shell on 2124@itemx set startup-with-shell off 2125@itemx show set startup-with-shell 2126On Unix systems, by default, if a shell is available on your target, 2127@value{GDBN}) uses it to start your program. Arguments of the 2128@code{run} command are passed to the shell, which does variable 2129substitution, expands wildcard characters and performs redirection of 2130I/O. In some circumstances, it may be useful to disable such use of a 2131shell, for example, when debugging the shell itself or diagnosing 2132startup failures such as: 2133 2134@smallexample 2135(@value{GDBP}) run 2136Starting program: ./a.out 2137During startup program terminated with signal SIGSEGV, Segmentation fault. 2138@end smallexample 2139 2140@noindent 2141which indicates the shell or the wrapper specified with 2142@samp{exec-wrapper} crashed, not your program. Most often, this is 2143caused by something odd in your shell's non-interactive mode 2144initialization file---such as @file{.cshrc} for C-shell, 2145$@file{.zshenv} for the Z shell, or the file specified in the 2146@samp{BASH_ENV} environment variable for BASH. 2147 2148@kindex set disable-randomization 2149@item set disable-randomization 2150@itemx set disable-randomization on 2151This option (enabled by default in @value{GDBN}) will turn off the native 2152randomization of the virtual address space of the started program. This option 2153is useful for multiple debugging sessions to make the execution better 2154reproducible and memory addresses reusable across debugging sessions. 2155 2156This feature is implemented only on certain targets, including @sc{gnu}/Linux. 2157On @sc{gnu}/Linux you can get the same behavior using 2158 2159@smallexample 2160(@value{GDBP}) set exec-wrapper setarch `uname -m` -R 2161@end smallexample 2162 2163@item set disable-randomization off 2164Leave the behavior of the started executable unchanged. Some bugs rear their 2165ugly heads only when the program is loaded at certain addresses. If your bug 2166disappears when you run the program under @value{GDBN}, that might be because 2167@value{GDBN} by default disables the address randomization on platforms, such 2168as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set 2169disable-randomization off} to try to reproduce such elusive bugs. 2170 2171On targets where it is available, virtual address space randomization 2172protects the programs against certain kinds of security attacks. In these 2173cases the attacker needs to know the exact location of a concrete executable 2174code. Randomizing its location makes it impossible to inject jumps misusing 2175a code at its expected addresses. 2176 2177Prelinking shared libraries provides a startup performance advantage but it 2178makes addresses in these libraries predictable for privileged processes by 2179having just unprivileged access at the target system. Reading the shared 2180library binary gives enough information for assembling the malicious code 2181misusing it. Still even a prelinked shared library can get loaded at a new 2182random address just requiring the regular relocation process during the 2183startup. Shared libraries not already prelinked are always loaded at 2184a randomly chosen address. 2185 2186Position independent executables (PIE) contain position independent code 2187similar to the shared libraries and therefore such executables get loaded at 2188a randomly chosen address upon startup. PIE executables always load even 2189already prelinked shared libraries at a random address. You can build such 2190executable using @command{gcc -fPIE -pie}. 2191 2192Heap (malloc storage), stack and custom mmap areas are always placed randomly 2193(as long as the randomization is enabled). 2194 2195@item show disable-randomization 2196Show the current setting of the explicit disable of the native randomization of 2197the virtual address space of the started program. 2198 2199@end table 2200 2201@node Arguments 2202@section Your Program's Arguments 2203 2204@cindex arguments (to your program) 2205The arguments to your program can be specified by the arguments of the 2206@code{run} command. 2207They are passed to a shell, which expands wildcard characters and 2208performs redirection of I/O, and thence to your program. Your 2209@code{SHELL} environment variable (if it exists) specifies what shell 2210@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses 2211the default shell (@file{/bin/sh} on Unix). 2212 2213On non-Unix systems, the program is usually invoked directly by 2214@value{GDBN}, which emulates I/O redirection via the appropriate system 2215calls, and the wildcard characters are expanded by the startup code of 2216the program, not by the shell. 2217 2218@code{run} with no arguments uses the same arguments used by the previous 2219@code{run}, or those set by the @code{set args} command. 2220 2221@table @code 2222@kindex set args 2223@item set args 2224Specify the arguments to be used the next time your program is run. If 2225@code{set args} has no arguments, @code{run} executes your program 2226with no arguments. Once you have run your program with arguments, 2227using @code{set args} before the next @code{run} is the only way to run 2228it again without arguments. 2229 2230@kindex show args 2231@item show args 2232Show the arguments to give your program when it is started. 2233@end table 2234 2235@node Environment 2236@section Your Program's Environment 2237 2238@cindex environment (of your program) 2239The @dfn{environment} consists of a set of environment variables and 2240their values. Environment variables conventionally record such things as 2241your user name, your home directory, your terminal type, and your search 2242path for programs to run. Usually you set up environment variables with 2243the shell and they are inherited by all the other programs you run. When 2244debugging, it can be useful to try running your program with a modified 2245environment without having to start @value{GDBN} over again. 2246 2247@table @code 2248@kindex path 2249@item path @var{directory} 2250Add @var{directory} to the front of the @code{PATH} environment variable 2251(the search path for executables) that will be passed to your program. 2252The value of @code{PATH} used by @value{GDBN} does not change. 2253You may specify several directory names, separated by whitespace or by a 2254system-dependent separator character (@samp{:} on Unix, @samp{;} on 2255MS-DOS and MS-Windows). If @var{directory} is already in the path, it 2256is moved to the front, so it is searched sooner. 2257 2258You can use the string @samp{$cwd} to refer to whatever is the current 2259working directory at the time @value{GDBN} searches the path. If you 2260use @samp{.} instead, it refers to the directory where you executed the 2261@code{path} command. @value{GDBN} replaces @samp{.} in the 2262@var{directory} argument (with the current path) before adding 2263@var{directory} to the search path. 2264@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to 2265@c document that, since repeating it would be a no-op. 2266 2267@kindex show paths 2268@item show paths 2269Display the list of search paths for executables (the @code{PATH} 2270environment variable). 2271 2272@kindex show environment 2273@item show environment @r{[}@var{varname}@r{]} 2274Print the value of environment variable @var{varname} to be given to 2275your program when it starts. If you do not supply @var{varname}, 2276print the names and values of all environment variables to be given to 2277your program. You can abbreviate @code{environment} as @code{env}. 2278 2279@kindex set environment 2280@item set environment @var{varname} @r{[}=@var{value}@r{]} 2281Set environment variable @var{varname} to @var{value}. The value 2282changes for your program only, not for @value{GDBN} itself. @var{value} may 2283be any string; the values of environment variables are just strings, and 2284any interpretation is supplied by your program itself. The @var{value} 2285parameter is optional; if it is eliminated, the variable is set to a 2286null value. 2287@c "any string" here does not include leading, trailing 2288@c blanks. Gnu asks: does anyone care? 2289 2290For example, this command: 2291 2292@smallexample 2293set env USER = foo 2294@end smallexample 2295 2296@noindent 2297tells the debugged program, when subsequently run, that its user is named 2298@samp{foo}. (The spaces around @samp{=} are used for clarity here; they 2299are not actually required.) 2300 2301@kindex unset environment 2302@item unset environment @var{varname} 2303Remove variable @var{varname} from the environment to be passed to your 2304program. This is different from @samp{set env @var{varname} =}; 2305@code{unset environment} removes the variable from the environment, 2306rather than assigning it an empty value. 2307@end table 2308 2309@emph{Warning:} On Unix systems, @value{GDBN} runs your program using 2310the shell indicated by your @code{SHELL} environment variable if it 2311exists (or @code{/bin/sh} if not). If your @code{SHELL} variable 2312names a shell that runs an initialization file when started 2313non-interactively---such as @file{.cshrc} for C-shell, $@file{.zshenv} 2314for the Z shell, or the file specified in the @samp{BASH_ENV} 2315environment variable for BASH---any variables you set in that file 2316affect your program. You may wish to move setting of environment 2317variables to files that are only run when you sign on, such as 2318@file{.login} or @file{.profile}. 2319 2320@node Working Directory 2321@section Your Program's Working Directory 2322 2323@cindex working directory (of your program) 2324Each time you start your program with @code{run}, it inherits its 2325working directory from the current working directory of @value{GDBN}. 2326The @value{GDBN} working directory is initially whatever it inherited 2327from its parent process (typically the shell), but you can specify a new 2328working directory in @value{GDBN} with the @code{cd} command. 2329 2330The @value{GDBN} working directory also serves as a default for the commands 2331that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to 2332Specify Files}. 2333 2334@table @code 2335@kindex cd 2336@cindex change working directory 2337@item cd @r{[}@var{directory}@r{]} 2338Set the @value{GDBN} working directory to @var{directory}. If not 2339given, @var{directory} uses @file{'~'}. 2340 2341@kindex pwd 2342@item pwd 2343Print the @value{GDBN} working directory. 2344@end table 2345 2346It is generally impossible to find the current working directory of 2347the process being debugged (since a program can change its directory 2348during its run). If you work on a system where @value{GDBN} is 2349configured with the @file{/proc} support, you can use the @code{info 2350proc} command (@pxref{SVR4 Process Information}) to find out the 2351current working directory of the debuggee. 2352 2353@node Input/Output 2354@section Your Program's Input and Output 2355 2356@cindex redirection 2357@cindex i/o 2358@cindex terminal 2359By default, the program you run under @value{GDBN} does input and output to 2360the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal 2361to its own terminal modes to interact with you, but it records the terminal 2362modes your program was using and switches back to them when you continue 2363running your program. 2364 2365@table @code 2366@kindex info terminal 2367@item info terminal 2368Displays information recorded by @value{GDBN} about the terminal modes your 2369program is using. 2370@end table 2371 2372You can redirect your program's input and/or output using shell 2373redirection with the @code{run} command. For example, 2374 2375@smallexample 2376run > outfile 2377@end smallexample 2378 2379@noindent 2380starts your program, diverting its output to the file @file{outfile}. 2381 2382@kindex tty 2383@cindex controlling terminal 2384Another way to specify where your program should do input and output is 2385with the @code{tty} command. This command accepts a file name as 2386argument, and causes this file to be the default for future @code{run} 2387commands. It also resets the controlling terminal for the child 2388process, for future @code{run} commands. For example, 2389 2390@smallexample 2391tty /dev/ttyb 2392@end smallexample 2393 2394@noindent 2395directs that processes started with subsequent @code{run} commands 2396default to do input and output on the terminal @file{/dev/ttyb} and have 2397that as their controlling terminal. 2398 2399An explicit redirection in @code{run} overrides the @code{tty} command's 2400effect on the input/output device, but not its effect on the controlling 2401terminal. 2402 2403When you use the @code{tty} command or redirect input in the @code{run} 2404command, only the input @emph{for your program} is affected. The input 2405for @value{GDBN} still comes from your terminal. @code{tty} is an alias 2406for @code{set inferior-tty}. 2407 2408@cindex inferior tty 2409@cindex set inferior controlling terminal 2410You can use the @code{show inferior-tty} command to tell @value{GDBN} to 2411display the name of the terminal that will be used for future runs of your 2412program. 2413 2414@table @code 2415@item set inferior-tty /dev/ttyb 2416@kindex set inferior-tty 2417Set the tty for the program being debugged to /dev/ttyb. 2418 2419@item show inferior-tty 2420@kindex show inferior-tty 2421Show the current tty for the program being debugged. 2422@end table 2423 2424@node Attach 2425@section Debugging an Already-running Process 2426@kindex attach 2427@cindex attach 2428 2429@table @code 2430@item attach @var{process-id} 2431This command attaches to a running process---one that was started 2432outside @value{GDBN}. (@code{info files} shows your active 2433targets.) The command takes as argument a process ID. The usual way to 2434find out the @var{process-id} of a Unix process is with the @code{ps} utility, 2435or with the @samp{jobs -l} shell command. 2436 2437@code{attach} does not repeat if you press @key{RET} a second time after 2438executing the command. 2439@end table 2440 2441To use @code{attach}, your program must be running in an environment 2442which supports processes; for example, @code{attach} does not work for 2443programs on bare-board targets that lack an operating system. You must 2444also have permission to send the process a signal. 2445 2446When you use @code{attach}, the debugger finds the program running in 2447the process first by looking in the current working directory, then (if 2448the program is not found) by using the source file search path 2449(@pxref{Source Path, ,Specifying Source Directories}). You can also use 2450the @code{file} command to load the program. @xref{Files, ,Commands to 2451Specify Files}. 2452 2453The first thing @value{GDBN} does after arranging to debug the specified 2454process is to stop it. You can examine and modify an attached process 2455with all the @value{GDBN} commands that are ordinarily available when 2456you start processes with @code{run}. You can insert breakpoints; you 2457can step and continue; you can modify storage. If you would rather the 2458process continue running, you may use the @code{continue} command after 2459attaching @value{GDBN} to the process. 2460 2461@table @code 2462@kindex detach 2463@item detach 2464When you have finished debugging the attached process, you can use the 2465@code{detach} command to release it from @value{GDBN} control. Detaching 2466the process continues its execution. After the @code{detach} command, 2467that process and @value{GDBN} become completely independent once more, and you 2468are ready to @code{attach} another process or start one with @code{run}. 2469@code{detach} does not repeat if you press @key{RET} again after 2470executing the command. 2471@end table 2472 2473If you exit @value{GDBN} while you have an attached process, you detach 2474that process. If you use the @code{run} command, you kill that process. 2475By default, @value{GDBN} asks for confirmation if you try to do either of these 2476things; you can control whether or not you need to confirm by using the 2477@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and 2478Messages}). 2479 2480@node Kill Process 2481@section Killing the Child Process 2482 2483@table @code 2484@kindex kill 2485@item kill 2486Kill the child process in which your program is running under @value{GDBN}. 2487@end table 2488 2489This command is useful if you wish to debug a core dump instead of a 2490running process. @value{GDBN} ignores any core dump file while your program 2491is running. 2492 2493On some operating systems, a program cannot be executed outside @value{GDBN} 2494while you have breakpoints set on it inside @value{GDBN}. You can use the 2495@code{kill} command in this situation to permit running your program 2496outside the debugger. 2497 2498The @code{kill} command is also useful if you wish to recompile and 2499relink your program, since on many systems it is impossible to modify an 2500executable file while it is running in a process. In this case, when you 2501next type @code{run}, @value{GDBN} notices that the file has changed, and 2502reads the symbol table again (while trying to preserve your current 2503breakpoint settings). 2504 2505@node Inferiors and Programs 2506@section Debugging Multiple Inferiors and Programs 2507 2508@value{GDBN} lets you run and debug multiple programs in a single 2509session. In addition, @value{GDBN} on some systems may let you run 2510several programs simultaneously (otherwise you have to exit from one 2511before starting another). In the most general case, you can have 2512multiple threads of execution in each of multiple processes, launched 2513from multiple executables. 2514 2515@cindex inferior 2516@value{GDBN} represents the state of each program execution with an 2517object called an @dfn{inferior}. An inferior typically corresponds to 2518a process, but is more general and applies also to targets that do not 2519have processes. Inferiors may be created before a process runs, and 2520may be retained after a process exits. Inferiors have unique 2521identifiers that are different from process ids. Usually each 2522inferior will also have its own distinct address space, although some 2523embedded targets may have several inferiors running in different parts 2524of a single address space. Each inferior may in turn have multiple 2525threads running in it. 2526 2527To find out what inferiors exist at any moment, use @w{@code{info 2528inferiors}}: 2529 2530@table @code 2531@kindex info inferiors 2532@item info inferiors 2533Print a list of all inferiors currently being managed by @value{GDBN}. 2534 2535@value{GDBN} displays for each inferior (in this order): 2536 2537@enumerate 2538@item 2539the inferior number assigned by @value{GDBN} 2540 2541@item 2542the target system's inferior identifier 2543 2544@item 2545the name of the executable the inferior is running. 2546 2547@end enumerate 2548 2549@noindent 2550An asterisk @samp{*} preceding the @value{GDBN} inferior number 2551indicates the current inferior. 2552 2553For example, 2554@end table 2555@c end table here to get a little more width for example 2556 2557@smallexample 2558(@value{GDBP}) info inferiors 2559 Num Description Executable 2560 2 process 2307 hello 2561* 1 process 3401 goodbye 2562@end smallexample 2563 2564To switch focus between inferiors, use the @code{inferior} command: 2565 2566@table @code 2567@kindex inferior @var{infno} 2568@item inferior @var{infno} 2569Make inferior number @var{infno} the current inferior. The argument 2570@var{infno} is the inferior number assigned by @value{GDBN}, as shown 2571in the first field of the @samp{info inferiors} display. 2572@end table 2573 2574 2575You can get multiple executables into a debugging session via the 2576@code{add-inferior} and @w{@code{clone-inferior}} commands. On some 2577systems @value{GDBN} can add inferiors to the debug session 2578automatically by following calls to @code{fork} and @code{exec}. To 2579remove inferiors from the debugging session use the 2580@w{@code{remove-inferiors}} command. 2581 2582@table @code 2583@kindex add-inferior 2584@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ] 2585Adds @var{n} inferiors to be run using @var{executable} as the 2586executable. @var{n} defaults to 1. If no executable is specified, 2587the inferiors begins empty, with no program. You can still assign or 2588change the program assigned to the inferior at any time by using the 2589@code{file} command with the executable name as its argument. 2590 2591@kindex clone-inferior 2592@item clone-inferior [ -copies @var{n} ] [ @var{infno} ] 2593Adds @var{n} inferiors ready to execute the same program as inferior 2594@var{infno}. @var{n} defaults to 1. @var{infno} defaults to the 2595number of the current inferior. This is a convenient command when you 2596want to run another instance of the inferior you are debugging. 2597 2598@smallexample 2599(@value{GDBP}) info inferiors 2600 Num Description Executable 2601* 1 process 29964 helloworld 2602(@value{GDBP}) clone-inferior 2603Added inferior 2. 26041 inferiors added. 2605(@value{GDBP}) info inferiors 2606 Num Description Executable 2607 2 <null> helloworld 2608* 1 process 29964 helloworld 2609@end smallexample 2610 2611You can now simply switch focus to inferior 2 and run it. 2612 2613@kindex remove-inferiors 2614@item remove-inferiors @var{infno}@dots{} 2615Removes the inferior or inferiors @var{infno}@dots{}. It is not 2616possible to remove an inferior that is running with this command. For 2617those, use the @code{kill} or @code{detach} command first. 2618 2619@end table 2620 2621To quit debugging one of the running inferiors that is not the current 2622inferior, you can either detach from it by using the @w{@code{detach 2623inferior}} command (allowing it to run independently), or kill it 2624using the @w{@code{kill inferiors}} command: 2625 2626@table @code 2627@kindex detach inferiors @var{infno}@dots{} 2628@item detach inferior @var{infno}@dots{} 2629Detach from the inferior or inferiors identified by @value{GDBN} 2630inferior number(s) @var{infno}@dots{}. Note that the inferior's entry 2631still stays on the list of inferiors shown by @code{info inferiors}, 2632but its Description will show @samp{<null>}. 2633 2634@kindex kill inferiors @var{infno}@dots{} 2635@item kill inferiors @var{infno}@dots{} 2636Kill the inferior or inferiors identified by @value{GDBN} inferior 2637number(s) @var{infno}@dots{}. Note that the inferior's entry still 2638stays on the list of inferiors shown by @code{info inferiors}, but its 2639Description will show @samp{<null>}. 2640@end table 2641 2642After the successful completion of a command such as @code{detach}, 2643@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after 2644a normal process exit, the inferior is still valid and listed with 2645@code{info inferiors}, ready to be restarted. 2646 2647 2648To be notified when inferiors are started or exit under @value{GDBN}'s 2649control use @w{@code{set print inferior-events}}: 2650 2651@table @code 2652@kindex set print inferior-events 2653@cindex print messages on inferior start and exit 2654@item set print inferior-events 2655@itemx set print inferior-events on 2656@itemx set print inferior-events off 2657The @code{set print inferior-events} command allows you to enable or 2658disable printing of messages when @value{GDBN} notices that new 2659inferiors have started or that inferiors have exited or have been 2660detached. By default, these messages will not be printed. 2661 2662@kindex show print inferior-events 2663@item show print inferior-events 2664Show whether messages will be printed when @value{GDBN} detects that 2665inferiors have started, exited or have been detached. 2666@end table 2667 2668Many commands will work the same with multiple programs as with a 2669single program: e.g., @code{print myglobal} will simply display the 2670value of @code{myglobal} in the current inferior. 2671 2672 2673Occasionaly, when debugging @value{GDBN} itself, it may be useful to 2674get more info about the relationship of inferiors, programs, address 2675spaces in a debug session. You can do that with the @w{@code{maint 2676info program-spaces}} command. 2677 2678@table @code 2679@kindex maint info program-spaces 2680@item maint info program-spaces 2681Print a list of all program spaces currently being managed by 2682@value{GDBN}. 2683 2684@value{GDBN} displays for each program space (in this order): 2685 2686@enumerate 2687@item 2688the program space number assigned by @value{GDBN} 2689 2690@item 2691the name of the executable loaded into the program space, with e.g., 2692the @code{file} command. 2693 2694@end enumerate 2695 2696@noindent 2697An asterisk @samp{*} preceding the @value{GDBN} program space number 2698indicates the current program space. 2699 2700In addition, below each program space line, @value{GDBN} prints extra 2701information that isn't suitable to display in tabular form. For 2702example, the list of inferiors bound to the program space. 2703 2704@smallexample 2705(@value{GDBP}) maint info program-spaces 2706 Id Executable 2707 2 goodbye 2708 Bound inferiors: ID 1 (process 21561) 2709* 1 hello 2710@end smallexample 2711 2712Here we can see that no inferior is running the program @code{hello}, 2713while @code{process 21561} is running the program @code{goodbye}. On 2714some targets, it is possible that multiple inferiors are bound to the 2715same program space. The most common example is that of debugging both 2716the parent and child processes of a @code{vfork} call. For example, 2717 2718@smallexample 2719(@value{GDBP}) maint info program-spaces 2720 Id Executable 2721* 1 vfork-test 2722 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045) 2723@end smallexample 2724 2725Here, both inferior 2 and inferior 1 are running in the same program 2726space as a result of inferior 1 having executed a @code{vfork} call. 2727@end table 2728 2729@node Threads 2730@section Debugging Programs with Multiple Threads 2731 2732@cindex threads of execution 2733@cindex multiple threads 2734@cindex switching threads 2735In some operating systems, such as HP-UX and Solaris, a single program 2736may have more than one @dfn{thread} of execution. The precise semantics 2737of threads differ from one operating system to another, but in general 2738the threads of a single program are akin to multiple processes---except 2739that they share one address space (that is, they can all examine and 2740modify the same variables). On the other hand, each thread has its own 2741registers and execution stack, and perhaps private memory. 2742 2743@value{GDBN} provides these facilities for debugging multi-thread 2744programs: 2745 2746@itemize @bullet 2747@item automatic notification of new threads 2748@item @samp{thread @var{threadno}}, a command to switch among threads 2749@item @samp{info threads}, a command to inquire about existing threads 2750@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}}, 2751a command to apply a command to a list of threads 2752@item thread-specific breakpoints 2753@item @samp{set print thread-events}, which controls printing of 2754messages on thread start and exit. 2755@item @samp{set libthread-db-search-path @var{path}}, which lets 2756the user specify which @code{libthread_db} to use if the default choice 2757isn't compatible with the program. 2758@end itemize 2759 2760@quotation 2761@emph{Warning:} These facilities are not yet available on every 2762@value{GDBN} configuration where the operating system supports threads. 2763If your @value{GDBN} does not support threads, these commands have no 2764effect. For example, a system without thread support shows no output 2765from @samp{info threads}, and always rejects the @code{thread} command, 2766like this: 2767 2768@smallexample 2769(@value{GDBP}) info threads 2770(@value{GDBP}) thread 1 2771Thread ID 1 not known. Use the "info threads" command to 2772see the IDs of currently known threads. 2773@end smallexample 2774@c FIXME to implementors: how hard would it be to say "sorry, this GDB 2775@c doesn't support threads"? 2776@end quotation 2777 2778@cindex focus of debugging 2779@cindex current thread 2780The @value{GDBN} thread debugging facility allows you to observe all 2781threads while your program runs---but whenever @value{GDBN} takes 2782control, one thread in particular is always the focus of debugging. 2783This thread is called the @dfn{current thread}. Debugging commands show 2784program information from the perspective of the current thread. 2785 2786@cindex @code{New} @var{systag} message 2787@cindex thread identifier (system) 2788@c FIXME-implementors!! It would be more helpful if the [New...] message 2789@c included GDB's numeric thread handle, so you could just go to that 2790@c thread without first checking `info threads'. 2791Whenever @value{GDBN} detects a new thread in your program, it displays 2792the target system's identification for the thread with a message in the 2793form @samp{[New @var{systag}]}. @var{systag} is a thread identifier 2794whose form varies depending on the particular system. For example, on 2795@sc{gnu}/Linux, you might see 2796 2797@smallexample 2798[New Thread 0x41e02940 (LWP 25582)] 2799@end smallexample 2800 2801@noindent 2802when @value{GDBN} notices a new thread. In contrast, on an SGI system, 2803the @var{systag} is simply something like @samp{process 368}, with no 2804further qualifier. 2805 2806@c FIXME!! (1) Does the [New...] message appear even for the very first 2807@c thread of a program, or does it only appear for the 2808@c second---i.e.@: when it becomes obvious we have a multithread 2809@c program? 2810@c (2) *Is* there necessarily a first thread always? Or do some 2811@c multithread systems permit starting a program with multiple 2812@c threads ab initio? 2813 2814@cindex thread number 2815@cindex thread identifier (GDB) 2816For debugging purposes, @value{GDBN} associates its own thread 2817number---always a single integer---with each thread in your program. 2818 2819@table @code 2820@kindex info threads 2821@item info threads @r{[}@var{id}@dots{}@r{]} 2822Display a summary of all threads currently in your program. Optional 2823argument @var{id}@dots{} is one or more thread ids separated by spaces, and 2824means to print information only about the specified thread or threads. 2825@value{GDBN} displays for each thread (in this order): 2826 2827@enumerate 2828@item 2829the thread number assigned by @value{GDBN} 2830 2831@item 2832the target system's thread identifier (@var{systag}) 2833 2834@item 2835the thread's name, if one is known. A thread can either be named by 2836the user (see @code{thread name}, below), or, in some cases, by the 2837program itself. 2838 2839@item 2840the current stack frame summary for that thread 2841@end enumerate 2842 2843@noindent 2844An asterisk @samp{*} to the left of the @value{GDBN} thread number 2845indicates the current thread. 2846 2847For example, 2848@end table 2849@c end table here to get a little more width for example 2850 2851@smallexample 2852(@value{GDBP}) info threads 2853 Id Target Id Frame 2854 3 process 35 thread 27 0x34e5 in sigpause () 2855 2 process 35 thread 23 0x34e5 in sigpause () 2856* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) 2857 at threadtest.c:68 2858@end smallexample 2859 2860On Solaris, you can display more information about user threads with a 2861Solaris-specific command: 2862 2863@table @code 2864@item maint info sol-threads 2865@kindex maint info sol-threads 2866@cindex thread info (Solaris) 2867Display info on Solaris user threads. 2868@end table 2869 2870@table @code 2871@kindex thread @var{threadno} 2872@item thread @var{threadno} 2873Make thread number @var{threadno} the current thread. The command 2874argument @var{threadno} is the internal @value{GDBN} thread number, as 2875shown in the first field of the @samp{info threads} display. 2876@value{GDBN} responds by displaying the system identifier of the thread 2877you selected, and its current stack frame summary: 2878 2879@smallexample 2880(@value{GDBP}) thread 2 2881[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))] 2882#0 some_function (ignore=0x0) at example.c:8 28838 printf ("hello\n"); 2884@end smallexample 2885 2886@noindent 2887As with the @samp{[New @dots{}]} message, the form of the text after 2888@samp{Switching to} depends on your system's conventions for identifying 2889threads. 2890 2891@vindex $_thread@r{, convenience variable} 2892The debugger convenience variable @samp{$_thread} contains the number 2893of the current thread. You may find this useful in writing breakpoint 2894conditional expressions, command scripts, and so forth. See 2895@xref{Convenience Vars,, Convenience Variables}, for general 2896information on convenience variables. 2897 2898@kindex thread apply 2899@cindex apply command to several threads 2900@item thread apply [@var{threadno} | all] @var{command} 2901The @code{thread apply} command allows you to apply the named 2902@var{command} to one or more threads. Specify the numbers of the 2903threads that you want affected with the command argument 2904@var{threadno}. It can be a single thread number, one of the numbers 2905shown in the first field of the @samp{info threads} display; or it 2906could be a range of thread numbers, as in @code{2-4}. To apply a 2907command to all threads, type @kbd{thread apply all @var{command}}. 2908 2909@kindex thread name 2910@cindex name a thread 2911@item thread name [@var{name}] 2912This command assigns a name to the current thread. If no argument is 2913given, any existing user-specified name is removed. The thread name 2914appears in the @samp{info threads} display. 2915 2916On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to 2917determine the name of the thread as given by the OS. On these 2918systems, a name specified with @samp{thread name} will override the 2919system-give name, and removing the user-specified name will cause 2920@value{GDBN} to once again display the system-specified name. 2921 2922@kindex thread find 2923@cindex search for a thread 2924@item thread find [@var{regexp}] 2925Search for and display thread ids whose name or @var{systag} 2926matches the supplied regular expression. 2927 2928As well as being the complement to the @samp{thread name} command, 2929this command also allows you to identify a thread by its target 2930@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag} 2931is the LWP id. 2932 2933@smallexample 2934(@value{GDBN}) thread find 26688 2935Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)' 2936(@value{GDBN}) info thread 4 2937 Id Target Id Frame 2938 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select () 2939@end smallexample 2940 2941@kindex set print thread-events 2942@cindex print messages on thread start and exit 2943@item set print thread-events 2944@itemx set print thread-events on 2945@itemx set print thread-events off 2946The @code{set print thread-events} command allows you to enable or 2947disable printing of messages when @value{GDBN} notices that new threads have 2948started or that threads have exited. By default, these messages will 2949be printed if detection of these events is supported by the target. 2950Note that these messages cannot be disabled on all targets. 2951 2952@kindex show print thread-events 2953@item show print thread-events 2954Show whether messages will be printed when @value{GDBN} detects that threads 2955have started and exited. 2956@end table 2957 2958@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for 2959more information about how @value{GDBN} behaves when you stop and start 2960programs with multiple threads. 2961 2962@xref{Set Watchpoints,,Setting Watchpoints}, for information about 2963watchpoints in programs with multiple threads. 2964 2965@anchor{set libthread-db-search-path} 2966@table @code 2967@kindex set libthread-db-search-path 2968@cindex search path for @code{libthread_db} 2969@item set libthread-db-search-path @r{[}@var{path}@r{]} 2970If this variable is set, @var{path} is a colon-separated list of 2971directories @value{GDBN} will use to search for @code{libthread_db}. 2972If you omit @var{path}, @samp{libthread-db-search-path} will be reset to 2973its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems). 2974Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH} 2975macro. 2976 2977On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper'' 2978@code{libthread_db} library to obtain information about threads in the 2979inferior process. @value{GDBN} will use @samp{libthread-db-search-path} 2980to find @code{libthread_db}. @value{GDBN} also consults first if inferior 2981specific thread debugging library loading is enabled 2982by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}). 2983 2984A special entry @samp{$sdir} for @samp{libthread-db-search-path} 2985refers to the default system directories that are 2986normally searched for loading shared libraries. The @samp{$sdir} entry 2987is the only kind not needing to be enabled by @samp{set auto-load libthread-db} 2988(@pxref{libthread_db.so.1 file}). 2989 2990A special entry @samp{$pdir} for @samp{libthread-db-search-path} 2991refers to the directory from which @code{libpthread} 2992was loaded in the inferior process. 2993 2994For any @code{libthread_db} library @value{GDBN} finds in above directories, 2995@value{GDBN} attempts to initialize it with the current inferior process. 2996If this initialization fails (which could happen because of a version 2997mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN} 2998will unload @code{libthread_db}, and continue with the next directory. 2999If none of @code{libthread_db} libraries initialize successfully, 3000@value{GDBN} will issue a warning and thread debugging will be disabled. 3001 3002Setting @code{libthread-db-search-path} is currently implemented 3003only on some platforms. 3004 3005@kindex show libthread-db-search-path 3006@item show libthread-db-search-path 3007Display current libthread_db search path. 3008 3009@kindex set debug libthread-db 3010@kindex show debug libthread-db 3011@cindex debugging @code{libthread_db} 3012@item set debug libthread-db 3013@itemx show debug libthread-db 3014Turns on or off display of @code{libthread_db}-related events. 3015Use @code{1} to enable, @code{0} to disable. 3016@end table 3017 3018@node Forks 3019@section Debugging Forks 3020 3021@cindex fork, debugging programs which call 3022@cindex multiple processes 3023@cindex processes, multiple 3024On most systems, @value{GDBN} has no special support for debugging 3025programs which create additional processes using the @code{fork} 3026function. When a program forks, @value{GDBN} will continue to debug the 3027parent process and the child process will run unimpeded. If you have 3028set a breakpoint in any code which the child then executes, the child 3029will get a @code{SIGTRAP} signal which (unless it catches the signal) 3030will cause it to terminate. 3031 3032However, if you want to debug the child process there is a workaround 3033which isn't too painful. Put a call to @code{sleep} in the code which 3034the child process executes after the fork. It may be useful to sleep 3035only if a certain environment variable is set, or a certain file exists, 3036so that the delay need not occur when you don't want to run @value{GDBN} 3037on the child. While the child is sleeping, use the @code{ps} program to 3038get its process ID. Then tell @value{GDBN} (a new invocation of 3039@value{GDBN} if you are also debugging the parent process) to attach to 3040the child process (@pxref{Attach}). From that point on you can debug 3041the child process just like any other process which you attached to. 3042 3043On some systems, @value{GDBN} provides support for debugging programs that 3044create additional processes using the @code{fork} or @code{vfork} functions. 3045Currently, the only platforms with this feature are HP-UX (11.x and later 3046only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later). 3047 3048By default, when a program forks, @value{GDBN} will continue to debug 3049the parent process and the child process will run unimpeded. 3050 3051If you want to follow the child process instead of the parent process, 3052use the command @w{@code{set follow-fork-mode}}. 3053 3054@table @code 3055@kindex set follow-fork-mode 3056@item set follow-fork-mode @var{mode} 3057Set the debugger response to a program call of @code{fork} or 3058@code{vfork}. A call to @code{fork} or @code{vfork} creates a new 3059process. The @var{mode} argument can be: 3060 3061@table @code 3062@item parent 3063The original process is debugged after a fork. The child process runs 3064unimpeded. This is the default. 3065 3066@item child 3067The new process is debugged after a fork. The parent process runs 3068unimpeded. 3069 3070@end table 3071 3072@kindex show follow-fork-mode 3073@item show follow-fork-mode 3074Display the current debugger response to a @code{fork} or @code{vfork} call. 3075@end table 3076 3077@cindex debugging multiple processes 3078On Linux, if you want to debug both the parent and child processes, use the 3079command @w{@code{set detach-on-fork}}. 3080 3081@table @code 3082@kindex set detach-on-fork 3083@item set detach-on-fork @var{mode} 3084Tells gdb whether to detach one of the processes after a fork, or 3085retain debugger control over them both. 3086 3087@table @code 3088@item on 3089The child process (or parent process, depending on the value of 3090@code{follow-fork-mode}) will be detached and allowed to run 3091independently. This is the default. 3092 3093@item off 3094Both processes will be held under the control of @value{GDBN}. 3095One process (child or parent, depending on the value of 3096@code{follow-fork-mode}) is debugged as usual, while the other 3097is held suspended. 3098 3099@end table 3100 3101@kindex show detach-on-fork 3102@item show detach-on-fork 3103Show whether detach-on-fork mode is on/off. 3104@end table 3105 3106If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN} 3107will retain control of all forked processes (including nested forks). 3108You can list the forked processes under the control of @value{GDBN} by 3109using the @w{@code{info inferiors}} command, and switch from one fork 3110to another by using the @code{inferior} command (@pxref{Inferiors and 3111Programs, ,Debugging Multiple Inferiors and Programs}). 3112 3113To quit debugging one of the forked processes, you can either detach 3114from it by using the @w{@code{detach inferiors}} command (allowing it 3115to run independently), or kill it using the @w{@code{kill inferiors}} 3116command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors 3117and Programs}. 3118 3119If you ask to debug a child process and a @code{vfork} is followed by an 3120@code{exec}, @value{GDBN} executes the new target up to the first 3121breakpoint in the new target. If you have a breakpoint set on 3122@code{main} in your original program, the breakpoint will also be set on 3123the child process's @code{main}. 3124 3125On some systems, when a child process is spawned by @code{vfork}, you 3126cannot debug the child or parent until an @code{exec} call completes. 3127 3128If you issue a @code{run} command to @value{GDBN} after an @code{exec} 3129call executes, the new target restarts. To restart the parent 3130process, use the @code{file} command with the parent executable name 3131as its argument. By default, after an @code{exec} call executes, 3132@value{GDBN} discards the symbols of the previous executable image. 3133You can change this behaviour with the @w{@code{set follow-exec-mode}} 3134command. 3135 3136@table @code 3137@kindex set follow-exec-mode 3138@item set follow-exec-mode @var{mode} 3139 3140Set debugger response to a program call of @code{exec}. An 3141@code{exec} call replaces the program image of a process. 3142 3143@code{follow-exec-mode} can be: 3144 3145@table @code 3146@item new 3147@value{GDBN} creates a new inferior and rebinds the process to this 3148new inferior. The program the process was running before the 3149@code{exec} call can be restarted afterwards by restarting the 3150original inferior. 3151 3152For example: 3153 3154@smallexample 3155(@value{GDBP}) info inferiors 3156(gdb) info inferior 3157 Id Description Executable 3158* 1 <null> prog1 3159(@value{GDBP}) run 3160process 12020 is executing new program: prog2 3161Program exited normally. 3162(@value{GDBP}) info inferiors 3163 Id Description Executable 3164* 2 <null> prog2 3165 1 <null> prog1 3166@end smallexample 3167 3168@item same 3169@value{GDBN} keeps the process bound to the same inferior. The new 3170executable image replaces the previous executable loaded in the 3171inferior. Restarting the inferior after the @code{exec} call, with 3172e.g., the @code{run} command, restarts the executable the process was 3173running after the @code{exec} call. This is the default mode. 3174 3175For example: 3176 3177@smallexample 3178(@value{GDBP}) info inferiors 3179 Id Description Executable 3180* 1 <null> prog1 3181(@value{GDBP}) run 3182process 12020 is executing new program: prog2 3183Program exited normally. 3184(@value{GDBP}) info inferiors 3185 Id Description Executable 3186* 1 <null> prog2 3187@end smallexample 3188 3189@end table 3190@end table 3191 3192You can use the @code{catch} command to make @value{GDBN} stop whenever 3193a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set 3194Catchpoints, ,Setting Catchpoints}. 3195 3196@node Checkpoint/Restart 3197@section Setting a @emph{Bookmark} to Return to Later 3198 3199@cindex checkpoint 3200@cindex restart 3201@cindex bookmark 3202@cindex snapshot of a process 3203@cindex rewind program state 3204 3205On certain operating systems@footnote{Currently, only 3206@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a 3207program's state, called a @dfn{checkpoint}, and come back to it 3208later. 3209 3210Returning to a checkpoint effectively undoes everything that has 3211happened in the program since the @code{checkpoint} was saved. This 3212includes changes in memory, registers, and even (within some limits) 3213system state. Effectively, it is like going back in time to the 3214moment when the checkpoint was saved. 3215 3216Thus, if you're stepping thru a program and you think you're 3217getting close to the point where things go wrong, you can save 3218a checkpoint. Then, if you accidentally go too far and miss 3219the critical statement, instead of having to restart your program 3220from the beginning, you can just go back to the checkpoint and 3221start again from there. 3222 3223This can be especially useful if it takes a lot of time or 3224steps to reach the point where you think the bug occurs. 3225 3226To use the @code{checkpoint}/@code{restart} method of debugging: 3227 3228@table @code 3229@kindex checkpoint 3230@item checkpoint 3231Save a snapshot of the debugged program's current execution state. 3232The @code{checkpoint} command takes no arguments, but each checkpoint 3233is assigned a small integer id, similar to a breakpoint id. 3234 3235@kindex info checkpoints 3236@item info checkpoints 3237List the checkpoints that have been saved in the current debugging 3238session. For each checkpoint, the following information will be 3239listed: 3240 3241@table @code 3242@item Checkpoint ID 3243@item Process ID 3244@item Code Address 3245@item Source line, or label 3246@end table 3247 3248@kindex restart @var{checkpoint-id} 3249@item restart @var{checkpoint-id} 3250Restore the program state that was saved as checkpoint number 3251@var{checkpoint-id}. All program variables, registers, stack frames 3252etc.@: will be returned to the values that they had when the checkpoint 3253was saved. In essence, gdb will ``wind back the clock'' to the point 3254in time when the checkpoint was saved. 3255 3256Note that breakpoints, @value{GDBN} variables, command history etc. 3257are not affected by restoring a checkpoint. In general, a checkpoint 3258only restores things that reside in the program being debugged, not in 3259the debugger. 3260 3261@kindex delete checkpoint @var{checkpoint-id} 3262@item delete checkpoint @var{checkpoint-id} 3263Delete the previously-saved checkpoint identified by @var{checkpoint-id}. 3264 3265@end table 3266 3267Returning to a previously saved checkpoint will restore the user state 3268of the program being debugged, plus a significant subset of the system 3269(OS) state, including file pointers. It won't ``un-write'' data from 3270a file, but it will rewind the file pointer to the previous location, 3271so that the previously written data can be overwritten. For files 3272opened in read mode, the pointer will also be restored so that the 3273previously read data can be read again. 3274 3275Of course, characters that have been sent to a printer (or other 3276external device) cannot be ``snatched back'', and characters received 3277from eg.@: a serial device can be removed from internal program buffers, 3278but they cannot be ``pushed back'' into the serial pipeline, ready to 3279be received again. Similarly, the actual contents of files that have 3280been changed cannot be restored (at this time). 3281 3282However, within those constraints, you actually can ``rewind'' your 3283program to a previously saved point in time, and begin debugging it 3284again --- and you can change the course of events so as to debug a 3285different execution path this time. 3286 3287@cindex checkpoints and process id 3288Finally, there is one bit of internal program state that will be 3289different when you return to a checkpoint --- the program's process 3290id. Each checkpoint will have a unique process id (or @var{pid}), 3291and each will be different from the program's original @var{pid}. 3292If your program has saved a local copy of its process id, this could 3293potentially pose a problem. 3294 3295@subsection A Non-obvious Benefit of Using Checkpoints 3296 3297On some systems such as @sc{gnu}/Linux, address space randomization 3298is performed on new processes for security reasons. This makes it 3299difficult or impossible to set a breakpoint, or watchpoint, on an 3300absolute address if you have to restart the program, since the 3301absolute location of a symbol will change from one execution to the 3302next. 3303 3304A checkpoint, however, is an @emph{identical} copy of a process. 3305Therefore if you create a checkpoint at (eg.@:) the start of main, 3306and simply return to that checkpoint instead of restarting the 3307process, you can avoid the effects of address randomization and 3308your symbols will all stay in the same place. 3309 3310@node Stopping 3311@chapter Stopping and Continuing 3312 3313The principal purposes of using a debugger are so that you can stop your 3314program before it terminates; or so that, if your program runs into 3315trouble, you can investigate and find out why. 3316 3317Inside @value{GDBN}, your program may stop for any of several reasons, 3318such as a signal, a breakpoint, or reaching a new line after a 3319@value{GDBN} command such as @code{step}. You may then examine and 3320change variables, set new breakpoints or remove old ones, and then 3321continue execution. Usually, the messages shown by @value{GDBN} provide 3322ample explanation of the status of your program---but you can also 3323explicitly request this information at any time. 3324 3325@table @code 3326@kindex info program 3327@item info program 3328Display information about the status of your program: whether it is 3329running or not, what process it is, and why it stopped. 3330@end table 3331 3332@menu 3333* Breakpoints:: Breakpoints, watchpoints, and catchpoints 3334* Continuing and Stepping:: Resuming execution 3335* Skipping Over Functions and Files:: 3336 Skipping over functions and files 3337* Signals:: Signals 3338* Thread Stops:: Stopping and starting multi-thread programs 3339@end menu 3340 3341@node Breakpoints 3342@section Breakpoints, Watchpoints, and Catchpoints 3343 3344@cindex breakpoints 3345A @dfn{breakpoint} makes your program stop whenever a certain point in 3346the program is reached. For each breakpoint, you can add conditions to 3347control in finer detail whether your program stops. You can set 3348breakpoints with the @code{break} command and its variants (@pxref{Set 3349Breaks, ,Setting Breakpoints}), to specify the place where your program 3350should stop by line number, function name or exact address in the 3351program. 3352 3353On some systems, you can set breakpoints in shared libraries before 3354the executable is run. There is a minor limitation on HP-UX systems: 3355you must wait until the executable is run in order to set breakpoints 3356in shared library routines that are not called directly by the program 3357(for example, routines that are arguments in a @code{pthread_create} 3358call). 3359 3360@cindex watchpoints 3361@cindex data breakpoints 3362@cindex memory tracing 3363@cindex breakpoint on memory address 3364@cindex breakpoint on variable modification 3365A @dfn{watchpoint} is a special breakpoint that stops your program 3366when the value of an expression changes. The expression may be a value 3367of a variable, or it could involve values of one or more variables 3368combined by operators, such as @samp{a + b}. This is sometimes called 3369@dfn{data breakpoints}. You must use a different command to set 3370watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside 3371from that, you can manage a watchpoint like any other breakpoint: you 3372enable, disable, and delete both breakpoints and watchpoints using the 3373same commands. 3374 3375You can arrange to have values from your program displayed automatically 3376whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,, 3377Automatic Display}. 3378 3379@cindex catchpoints 3380@cindex breakpoint on events 3381A @dfn{catchpoint} is another special breakpoint that stops your program 3382when a certain kind of event occurs, such as the throwing of a C@t{++} 3383exception or the loading of a library. As with watchpoints, you use a 3384different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting 3385Catchpoints}), but aside from that, you can manage a catchpoint like any 3386other breakpoint. (To stop when your program receives a signal, use the 3387@code{handle} command; see @ref{Signals, ,Signals}.) 3388 3389@cindex breakpoint numbers 3390@cindex numbers for breakpoints 3391@value{GDBN} assigns a number to each breakpoint, watchpoint, or 3392catchpoint when you create it; these numbers are successive integers 3393starting with one. In many of the commands for controlling various 3394features of breakpoints you use the breakpoint number to say which 3395breakpoint you want to change. Each breakpoint may be @dfn{enabled} or 3396@dfn{disabled}; if disabled, it has no effect on your program until you 3397enable it again. 3398 3399@cindex breakpoint ranges 3400@cindex ranges of breakpoints 3401Some @value{GDBN} commands accept a range of breakpoints on which to 3402operate. A breakpoint range is either a single breakpoint number, like 3403@samp{5}, or two such numbers, in increasing order, separated by a 3404hyphen, like @samp{5-7}. When a breakpoint range is given to a command, 3405all breakpoints in that range are operated on. 3406 3407@menu 3408* Set Breaks:: Setting breakpoints 3409* Set Watchpoints:: Setting watchpoints 3410* Set Catchpoints:: Setting catchpoints 3411* Delete Breaks:: Deleting breakpoints 3412* Disabling:: Disabling breakpoints 3413* Conditions:: Break conditions 3414* Break Commands:: Breakpoint command lists 3415* Dynamic Printf:: Dynamic printf 3416* Save Breakpoints:: How to save breakpoints in a file 3417* Static Probe Points:: Listing static probe points 3418* Error in Breakpoints:: ``Cannot insert breakpoints'' 3419* Breakpoint-related Warnings:: ``Breakpoint address adjusted...'' 3420@end menu 3421 3422@node Set Breaks 3423@subsection Setting Breakpoints 3424 3425@c FIXME LMB what does GDB do if no code on line of breakpt? 3426@c consider in particular declaration with/without initialization. 3427@c 3428@c FIXME 2 is there stuff on this already? break at fun start, already init? 3429 3430@kindex break 3431@kindex b @r{(@code{break})} 3432@vindex $bpnum@r{, convenience variable} 3433@cindex latest breakpoint 3434Breakpoints are set with the @code{break} command (abbreviated 3435@code{b}). The debugger convenience variable @samp{$bpnum} records the 3436number of the breakpoint you've set most recently; see @ref{Convenience 3437Vars,, Convenience Variables}, for a discussion of what you can do with 3438convenience variables. 3439 3440@table @code 3441@item break @var{location} 3442Set a breakpoint at the given @var{location}, which can specify a 3443function name, a line number, or an address of an instruction. 3444(@xref{Specify Location}, for a list of all the possible ways to 3445specify a @var{location}.) The breakpoint will stop your program just 3446before it executes any of the code in the specified @var{location}. 3447 3448When using source languages that permit overloading of symbols, such as 3449C@t{++}, a function name may refer to more than one possible place to break. 3450@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of 3451that situation. 3452 3453It is also possible to insert a breakpoint that will stop the program 3454only if a specific thread (@pxref{Thread-Specific Breakpoints}) 3455or a specific task (@pxref{Ada Tasks}) hits that breakpoint. 3456 3457@item break 3458When called without any arguments, @code{break} sets a breakpoint at 3459the next instruction to be executed in the selected stack frame 3460(@pxref{Stack, ,Examining the Stack}). In any selected frame but the 3461innermost, this makes your program stop as soon as control 3462returns to that frame. This is similar to the effect of a 3463@code{finish} command in the frame inside the selected frame---except 3464that @code{finish} does not leave an active breakpoint. If you use 3465@code{break} without an argument in the innermost frame, @value{GDBN} stops 3466the next time it reaches the current location; this may be useful 3467inside loops. 3468 3469@value{GDBN} normally ignores breakpoints when it resumes execution, until at 3470least one instruction has been executed. If it did not do this, you 3471would be unable to proceed past a breakpoint without first disabling the 3472breakpoint. This rule applies whether or not the breakpoint already 3473existed when your program stopped. 3474 3475@item break @dots{} if @var{cond} 3476Set a breakpoint with condition @var{cond}; evaluate the expression 3477@var{cond} each time the breakpoint is reached, and stop only if the 3478value is nonzero---that is, if @var{cond} evaluates as true. 3479@samp{@dots{}} stands for one of the possible arguments described 3480above (or no argument) specifying where to break. @xref{Conditions, 3481,Break Conditions}, for more information on breakpoint conditions. 3482 3483@kindex tbreak 3484@item tbreak @var{args} 3485Set a breakpoint enabled only for one stop. @var{args} are the 3486same as for the @code{break} command, and the breakpoint is set in the same 3487way, but the breakpoint is automatically deleted after the first time your 3488program stops there. @xref{Disabling, ,Disabling Breakpoints}. 3489 3490@kindex hbreak 3491@cindex hardware breakpoints 3492@item hbreak @var{args} 3493Set a hardware-assisted breakpoint. @var{args} are the same as for the 3494@code{break} command and the breakpoint is set in the same way, but the 3495breakpoint requires hardware support and some target hardware may not 3496have this support. The main purpose of this is EPROM/ROM code 3497debugging, so you can set a breakpoint at an instruction without 3498changing the instruction. This can be used with the new trap-generation 3499provided by SPARClite DSU and most x86-based targets. These targets 3500will generate traps when a program accesses some data or instruction 3501address that is assigned to the debug registers. However the hardware 3502breakpoint registers can take a limited number of breakpoints. For 3503example, on the DSU, only two data breakpoints can be set at a time, and 3504@value{GDBN} will reject this command if more than two are used. Delete 3505or disable unused hardware breakpoints before setting new ones 3506(@pxref{Disabling, ,Disabling Breakpoints}). 3507@xref{Conditions, ,Break Conditions}. 3508For remote targets, you can restrict the number of hardware 3509breakpoints @value{GDBN} will use, see @ref{set remote 3510hardware-breakpoint-limit}. 3511 3512@kindex thbreak 3513@item thbreak @var{args} 3514Set a hardware-assisted breakpoint enabled only for one stop. @var{args} 3515are the same as for the @code{hbreak} command and the breakpoint is set in 3516the same way. However, like the @code{tbreak} command, 3517the breakpoint is automatically deleted after the 3518first time your program stops there. Also, like the @code{hbreak} 3519command, the breakpoint requires hardware support and some target hardware 3520may not have this support. @xref{Disabling, ,Disabling Breakpoints}. 3521See also @ref{Conditions, ,Break Conditions}. 3522 3523@kindex rbreak 3524@cindex regular expression 3525@cindex breakpoints at functions matching a regexp 3526@cindex set breakpoints in many functions 3527@item rbreak @var{regex} 3528Set breakpoints on all functions matching the regular expression 3529@var{regex}. This command sets an unconditional breakpoint on all 3530matches, printing a list of all breakpoints it set. Once these 3531breakpoints are set, they are treated just like the breakpoints set with 3532the @code{break} command. You can delete them, disable them, or make 3533them conditional the same way as any other breakpoint. 3534 3535The syntax of the regular expression is the standard one used with tools 3536like @file{grep}. Note that this is different from the syntax used by 3537shells, so for instance @code{foo*} matches all functions that include 3538an @code{fo} followed by zero or more @code{o}s. There is an implicit 3539@code{.*} leading and trailing the regular expression you supply, so to 3540match only functions that begin with @code{foo}, use @code{^foo}. 3541 3542@cindex non-member C@t{++} functions, set breakpoint in 3543When debugging C@t{++} programs, @code{rbreak} is useful for setting 3544breakpoints on overloaded functions that are not members of any special 3545classes. 3546 3547@cindex set breakpoints on all functions 3548The @code{rbreak} command can be used to set breakpoints in 3549@strong{all} the functions in a program, like this: 3550 3551@smallexample 3552(@value{GDBP}) rbreak . 3553@end smallexample 3554 3555@item rbreak @var{file}:@var{regex} 3556If @code{rbreak} is called with a filename qualification, it limits 3557the search for functions matching the given regular expression to the 3558specified @var{file}. This can be used, for example, to set breakpoints on 3559every function in a given file: 3560 3561@smallexample 3562(@value{GDBP}) rbreak file.c:. 3563@end smallexample 3564 3565The colon separating the filename qualifier from the regex may 3566optionally be surrounded by spaces. 3567 3568@kindex info breakpoints 3569@cindex @code{$_} and @code{info breakpoints} 3570@item info breakpoints @r{[}@var{n}@dots{}@r{]} 3571@itemx info break @r{[}@var{n}@dots{}@r{]} 3572Print a table of all breakpoints, watchpoints, and catchpoints set and 3573not deleted. Optional argument @var{n} means print information only 3574about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)). 3575For each breakpoint, following columns are printed: 3576 3577@table @emph 3578@item Breakpoint Numbers 3579@item Type 3580Breakpoint, watchpoint, or catchpoint. 3581@item Disposition 3582Whether the breakpoint is marked to be disabled or deleted when hit. 3583@item Enabled or Disabled 3584Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints 3585that are not enabled. 3586@item Address 3587Where the breakpoint is in your program, as a memory address. For a 3588pending breakpoint whose address is not yet known, this field will 3589contain @samp{<PENDING>}. Such breakpoint won't fire until a shared 3590library that has the symbol or line referred by breakpoint is loaded. 3591See below for details. A breakpoint with several locations will 3592have @samp{<MULTIPLE>} in this field---see below for details. 3593@item What 3594Where the breakpoint is in the source for your program, as a file and 3595line number. For a pending breakpoint, the original string passed to 3596the breakpoint command will be listed as it cannot be resolved until 3597the appropriate shared library is loaded in the future. 3598@end table 3599 3600@noindent 3601If a breakpoint is conditional, there are two evaluation modes: ``host'' and 3602``target''. If mode is ``host'', breakpoint condition evaluation is done by 3603@value{GDBN} on the host's side. If it is ``target'', then the condition 3604is evaluated by the target. The @code{info break} command shows 3605the condition on the line following the affected breakpoint, together with 3606its condition evaluation mode in between parentheses. 3607 3608Breakpoint commands, if any, are listed after that. A pending breakpoint is 3609allowed to have a condition specified for it. The condition is not parsed for 3610validity until a shared library is loaded that allows the pending 3611breakpoint to resolve to a valid location. 3612 3613@noindent 3614@code{info break} with a breakpoint 3615number @var{n} as argument lists only that breakpoint. The 3616convenience variable @code{$_} and the default examining-address for 3617the @code{x} command are set to the address of the last breakpoint 3618listed (@pxref{Memory, ,Examining Memory}). 3619 3620@noindent 3621@code{info break} displays a count of the number of times the breakpoint 3622has been hit. This is especially useful in conjunction with the 3623@code{ignore} command. You can ignore a large number of breakpoint 3624hits, look at the breakpoint info to see how many times the breakpoint 3625was hit, and then run again, ignoring one less than that number. This 3626will get you quickly to the last hit of that breakpoint. 3627 3628@noindent 3629For a breakpoints with an enable count (xref) greater than 1, 3630@code{info break} also displays that count. 3631 3632@end table 3633 3634@value{GDBN} allows you to set any number of breakpoints at the same place in 3635your program. There is nothing silly or meaningless about this. When 3636the breakpoints are conditional, this is even useful 3637(@pxref{Conditions, ,Break Conditions}). 3638 3639@cindex multiple locations, breakpoints 3640@cindex breakpoints, multiple locations 3641It is possible that a breakpoint corresponds to several locations 3642in your program. Examples of this situation are: 3643 3644@itemize @bullet 3645@item 3646Multiple functions in the program may have the same name. 3647 3648@item 3649For a C@t{++} constructor, the @value{NGCC} compiler generates several 3650instances of the function body, used in different cases. 3651 3652@item 3653For a C@t{++} template function, a given line in the function can 3654correspond to any number of instantiations. 3655 3656@item 3657For an inlined function, a given source line can correspond to 3658several places where that function is inlined. 3659@end itemize 3660 3661In all those cases, @value{GDBN} will insert a breakpoint at all 3662the relevant locations. 3663 3664A breakpoint with multiple locations is displayed in the breakpoint 3665table using several rows---one header row, followed by one row for 3666each breakpoint location. The header row has @samp{<MULTIPLE>} in the 3667address column. The rows for individual locations contain the actual 3668addresses for locations, and show the functions to which those 3669locations belong. The number column for a location is of the form 3670@var{breakpoint-number}.@var{location-number}. 3671 3672For example: 3673 3674@smallexample 3675Num Type Disp Enb Address What 36761 breakpoint keep y <MULTIPLE> 3677 stop only if i==1 3678 breakpoint already hit 1 time 36791.1 y 0x080486a2 in void foo<int>() at t.cc:8 36801.2 y 0x080486ca in void foo<double>() at t.cc:8 3681@end smallexample 3682 3683Each location can be individually enabled or disabled by passing 3684@var{breakpoint-number}.@var{location-number} as argument to the 3685@code{enable} and @code{disable} commands. Note that you cannot 3686delete the individual locations from the list, you can only delete the 3687entire list of locations that belong to their parent breakpoint (with 3688the @kbd{delete @var{num}} command, where @var{num} is the number of 3689the parent breakpoint, 1 in the above example). Disabling or enabling 3690the parent breakpoint (@pxref{Disabling}) affects all of the locations 3691that belong to that breakpoint. 3692 3693@cindex pending breakpoints 3694It's quite common to have a breakpoint inside a shared library. 3695Shared libraries can be loaded and unloaded explicitly, 3696and possibly repeatedly, as the program is executed. To support 3697this use case, @value{GDBN} updates breakpoint locations whenever 3698any shared library is loaded or unloaded. Typically, you would 3699set a breakpoint in a shared library at the beginning of your 3700debugging session, when the library is not loaded, and when the 3701symbols from the library are not available. When you try to set 3702breakpoint, @value{GDBN} will ask you if you want to set 3703a so called @dfn{pending breakpoint}---breakpoint whose address 3704is not yet resolved. 3705 3706After the program is run, whenever a new shared library is loaded, 3707@value{GDBN} reevaluates all the breakpoints. When a newly loaded 3708shared library contains the symbol or line referred to by some 3709pending breakpoint, that breakpoint is resolved and becomes an 3710ordinary breakpoint. When a library is unloaded, all breakpoints 3711that refer to its symbols or source lines become pending again. 3712 3713This logic works for breakpoints with multiple locations, too. For 3714example, if you have a breakpoint in a C@t{++} template function, and 3715a newly loaded shared library has an instantiation of that template, 3716a new location is added to the list of locations for the breakpoint. 3717 3718Except for having unresolved address, pending breakpoints do not 3719differ from regular breakpoints. You can set conditions or commands, 3720enable and disable them and perform other breakpoint operations. 3721 3722@value{GDBN} provides some additional commands for controlling what 3723happens when the @samp{break} command cannot resolve breakpoint 3724address specification to an address: 3725 3726@kindex set breakpoint pending 3727@kindex show breakpoint pending 3728@table @code 3729@item set breakpoint pending auto 3730This is the default behavior. When @value{GDBN} cannot find the breakpoint 3731location, it queries you whether a pending breakpoint should be created. 3732 3733@item set breakpoint pending on 3734This indicates that an unrecognized breakpoint location should automatically 3735result in a pending breakpoint being created. 3736 3737@item set breakpoint pending off 3738This indicates that pending breakpoints are not to be created. Any 3739unrecognized breakpoint location results in an error. This setting does 3740not affect any pending breakpoints previously created. 3741 3742@item show breakpoint pending 3743Show the current behavior setting for creating pending breakpoints. 3744@end table 3745 3746The settings above only affect the @code{break} command and its 3747variants. Once breakpoint is set, it will be automatically updated 3748as shared libraries are loaded and unloaded. 3749 3750@cindex automatic hardware breakpoints 3751For some targets, @value{GDBN} can automatically decide if hardware or 3752software breakpoints should be used, depending on whether the 3753breakpoint address is read-only or read-write. This applies to 3754breakpoints set with the @code{break} command as well as to internal 3755breakpoints set by commands like @code{next} and @code{finish}. For 3756breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware 3757breakpoints. 3758 3759You can control this automatic behaviour with the following commands:: 3760 3761@kindex set breakpoint auto-hw 3762@kindex show breakpoint auto-hw 3763@table @code 3764@item set breakpoint auto-hw on 3765This is the default behavior. When @value{GDBN} sets a breakpoint, it 3766will try to use the target memory map to decide if software or hardware 3767breakpoint must be used. 3768 3769@item set breakpoint auto-hw off 3770This indicates @value{GDBN} should not automatically select breakpoint 3771type. If the target provides a memory map, @value{GDBN} will warn when 3772trying to set software breakpoint at a read-only address. 3773@end table 3774 3775@value{GDBN} normally implements breakpoints by replacing the program code 3776at the breakpoint address with a special instruction, which, when 3777executed, given control to the debugger. By default, the program 3778code is so modified only when the program is resumed. As soon as 3779the program stops, @value{GDBN} restores the original instructions. This 3780behaviour guards against leaving breakpoints inserted in the 3781target should gdb abrubptly disconnect. However, with slow remote 3782targets, inserting and removing breakpoint can reduce the performance. 3783This behavior can be controlled with the following commands:: 3784 3785@kindex set breakpoint always-inserted 3786@kindex show breakpoint always-inserted 3787@table @code 3788@item set breakpoint always-inserted off 3789All breakpoints, including newly added by the user, are inserted in 3790the target only when the target is resumed. All breakpoints are 3791removed from the target when it stops. 3792 3793@item set breakpoint always-inserted on 3794Causes all breakpoints to be inserted in the target at all times. If 3795the user adds a new breakpoint, or changes an existing breakpoint, the 3796breakpoints in the target are updated immediately. A breakpoint is 3797removed from the target only when breakpoint itself is removed. 3798 3799@cindex non-stop mode, and @code{breakpoint always-inserted} 3800@item set breakpoint always-inserted auto 3801This is the default mode. If @value{GDBN} is controlling the inferior 3802in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if 3803@code{breakpoint always-inserted} mode is on. If @value{GDBN} is 3804controlling the inferior in all-stop mode, @value{GDBN} behaves as if 3805@code{breakpoint always-inserted} mode is off. 3806@end table 3807 3808@value{GDBN} handles conditional breakpoints by evaluating these conditions 3809when a breakpoint breaks. If the condition is true, then the process being 3810debugged stops, otherwise the process is resumed. 3811 3812If the target supports evaluating conditions on its end, @value{GDBN} may 3813download the breakpoint, together with its conditions, to it. 3814 3815This feature can be controlled via the following commands: 3816 3817@kindex set breakpoint condition-evaluation 3818@kindex show breakpoint condition-evaluation 3819@table @code 3820@item set breakpoint condition-evaluation host 3821This option commands @value{GDBN} to evaluate the breakpoint 3822conditions on the host's side. Unconditional breakpoints are sent to 3823the target which in turn receives the triggers and reports them back to GDB 3824for condition evaluation. This is the standard evaluation mode. 3825 3826@item set breakpoint condition-evaluation target 3827This option commands @value{GDBN} to download breakpoint conditions 3828to the target at the moment of their insertion. The target 3829is responsible for evaluating the conditional expression and reporting 3830breakpoint stop events back to @value{GDBN} whenever the condition 3831is true. Due to limitations of target-side evaluation, some conditions 3832cannot be evaluated there, e.g., conditions that depend on local data 3833that is only known to the host. Examples include 3834conditional expressions involving convenience variables, complex types 3835that cannot be handled by the agent expression parser and expressions 3836that are too long to be sent over to the target, specially when the 3837target is a remote system. In these cases, the conditions will be 3838evaluated by @value{GDBN}. 3839 3840@item set breakpoint condition-evaluation auto 3841This is the default mode. If the target supports evaluating breakpoint 3842conditions on its end, @value{GDBN} will download breakpoint conditions to 3843the target (limitations mentioned previously apply). If the target does 3844not support breakpoint condition evaluation, then @value{GDBN} will fallback 3845to evaluating all these conditions on the host's side. 3846@end table 3847 3848 3849@cindex negative breakpoint numbers 3850@cindex internal @value{GDBN} breakpoints 3851@value{GDBN} itself sometimes sets breakpoints in your program for 3852special purposes, such as proper handling of @code{longjmp} (in C 3853programs). These internal breakpoints are assigned negative numbers, 3854starting with @code{-1}; @samp{info breakpoints} does not display them. 3855You can see these breakpoints with the @value{GDBN} maintenance command 3856@samp{maint info breakpoints} (@pxref{maint info breakpoints}). 3857 3858 3859@node Set Watchpoints 3860@subsection Setting Watchpoints 3861 3862@cindex setting watchpoints 3863You can use a watchpoint to stop execution whenever the value of an 3864expression changes, without having to predict a particular place where 3865this may happen. (This is sometimes called a @dfn{data breakpoint}.) 3866The expression may be as simple as the value of a single variable, or 3867as complex as many variables combined by operators. Examples include: 3868 3869@itemize @bullet 3870@item 3871A reference to the value of a single variable. 3872 3873@item 3874An address cast to an appropriate data type. For example, 3875@samp{*(int *)0x12345678} will watch a 4-byte region at the specified 3876address (assuming an @code{int} occupies 4 bytes). 3877 3878@item 3879An arbitrarily complex expression, such as @samp{a*b + c/d}. The 3880expression can use any operators valid in the program's native 3881language (@pxref{Languages}). 3882@end itemize 3883 3884You can set a watchpoint on an expression even if the expression can 3885not be evaluated yet. For instance, you can set a watchpoint on 3886@samp{*global_ptr} before @samp{global_ptr} is initialized. 3887@value{GDBN} will stop when your program sets @samp{global_ptr} and 3888the expression produces a valid value. If the expression becomes 3889valid in some other way than changing a variable (e.g.@: if the memory 3890pointed to by @samp{*global_ptr} becomes readable as the result of a 3891@code{malloc} call), @value{GDBN} may not stop until the next time 3892the expression changes. 3893 3894@cindex software watchpoints 3895@cindex hardware watchpoints 3896Depending on your system, watchpoints may be implemented in software or 3897hardware. @value{GDBN} does software watchpointing by single-stepping your 3898program and testing the variable's value each time, which is hundreds of 3899times slower than normal execution. (But this may still be worth it, to 3900catch errors where you have no clue what part of your program is the 3901culprit.) 3902 3903On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other 3904x86-based targets, @value{GDBN} includes support for hardware 3905watchpoints, which do not slow down the running of your program. 3906 3907@table @code 3908@kindex watch 3909@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]} 3910Set a watchpoint for an expression. @value{GDBN} will break when the 3911expression @var{expr} is written into by the program and its value 3912changes. The simplest (and the most popular) use of this command is 3913to watch the value of a single variable: 3914 3915@smallexample 3916(@value{GDBP}) watch foo 3917@end smallexample 3918 3919If the command includes a @code{@r{[}thread @var{threadnum}@r{]}} 3920argument, @value{GDBN} breaks only when the thread identified by 3921@var{threadnum} changes the value of @var{expr}. If any other threads 3922change the value of @var{expr}, @value{GDBN} will not break. Note 3923that watchpoints restricted to a single thread in this way only work 3924with Hardware Watchpoints. 3925 3926Ordinarily a watchpoint respects the scope of variables in @var{expr} 3927(see below). The @code{-location} argument tells @value{GDBN} to 3928instead watch the memory referred to by @var{expr}. In this case, 3929@value{GDBN} will evaluate @var{expr}, take the address of the result, 3930and watch the memory at that address. The type of the result is used 3931to determine the size of the watched memory. If the expression's 3932result does not have an address, then @value{GDBN} will print an 3933error. 3934 3935The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation 3936of masked watchpoints, if the current architecture supports this 3937feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC 3938Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition 3939to an address to watch. The mask specifies that some bits of an address 3940(the bits which are reset in the mask) should be ignored when matching 3941the address accessed by the inferior against the watchpoint address. 3942Thus, a masked watchpoint watches many addresses simultaneously---those 3943addresses whose unmasked bits are identical to the unmasked bits in the 3944watchpoint address. The @code{mask} argument implies @code{-location}. 3945Examples: 3946 3947@smallexample 3948(@value{GDBP}) watch foo mask 0xffff00ff 3949(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00 3950@end smallexample 3951 3952@kindex rwatch 3953@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]} 3954Set a watchpoint that will break when the value of @var{expr} is read 3955by the program. 3956 3957@kindex awatch 3958@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]} 3959Set a watchpoint that will break when @var{expr} is either read from 3960or written into by the program. 3961 3962@kindex info watchpoints @r{[}@var{n}@dots{}@r{]} 3963@item info watchpoints @r{[}@var{n}@dots{}@r{]} 3964This command prints a list of watchpoints, using the same format as 3965@code{info break} (@pxref{Set Breaks}). 3966@end table 3967 3968If you watch for a change in a numerically entered address you need to 3969dereference it, as the address itself is just a constant number which will 3970never change. @value{GDBN} refuses to create a watchpoint that watches 3971a never-changing value: 3972 3973@smallexample 3974(@value{GDBP}) watch 0x600850 3975Cannot watch constant value 0x600850. 3976(@value{GDBP}) watch *(int *) 0x600850 3977Watchpoint 1: *(int *) 6293584 3978@end smallexample 3979 3980@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware 3981watchpoints execute very quickly, and the debugger reports a change in 3982value at the exact instruction where the change occurs. If @value{GDBN} 3983cannot set a hardware watchpoint, it sets a software watchpoint, which 3984executes more slowly and reports the change in value at the next 3985@emph{statement}, not the instruction, after the change occurs. 3986 3987@cindex use only software watchpoints 3988You can force @value{GDBN} to use only software watchpoints with the 3989@kbd{set can-use-hw-watchpoints 0} command. With this variable set to 3990zero, @value{GDBN} will never try to use hardware watchpoints, even if 3991the underlying system supports them. (Note that hardware-assisted 3992watchpoints that were set @emph{before} setting 3993@code{can-use-hw-watchpoints} to zero will still use the hardware 3994mechanism of watching expression values.) 3995 3996@table @code 3997@item set can-use-hw-watchpoints 3998@kindex set can-use-hw-watchpoints 3999Set whether or not to use hardware watchpoints. 4000 4001@item show can-use-hw-watchpoints 4002@kindex show can-use-hw-watchpoints 4003Show the current mode of using hardware watchpoints. 4004@end table 4005 4006For remote targets, you can restrict the number of hardware 4007watchpoints @value{GDBN} will use, see @ref{set remote 4008hardware-breakpoint-limit}. 4009 4010When you issue the @code{watch} command, @value{GDBN} reports 4011 4012@smallexample 4013Hardware watchpoint @var{num}: @var{expr} 4014@end smallexample 4015 4016@noindent 4017if it was able to set a hardware watchpoint. 4018 4019Currently, the @code{awatch} and @code{rwatch} commands can only set 4020hardware watchpoints, because accesses to data that don't change the 4021value of the watched expression cannot be detected without examining 4022every instruction as it is being executed, and @value{GDBN} does not do 4023that currently. If @value{GDBN} finds that it is unable to set a 4024hardware breakpoint with the @code{awatch} or @code{rwatch} command, it 4025will print a message like this: 4026 4027@smallexample 4028Expression cannot be implemented with read/access watchpoint. 4029@end smallexample 4030 4031Sometimes, @value{GDBN} cannot set a hardware watchpoint because the 4032data type of the watched expression is wider than what a hardware 4033watchpoint on the target machine can handle. For example, some systems 4034can only watch regions that are up to 4 bytes wide; on such systems you 4035cannot set hardware watchpoints for an expression that yields a 4036double-precision floating-point number (which is typically 8 bytes 4037wide). As a work-around, it might be possible to break the large region 4038into a series of smaller ones and watch them with separate watchpoints. 4039 4040If you set too many hardware watchpoints, @value{GDBN} might be unable 4041to insert all of them when you resume the execution of your program. 4042Since the precise number of active watchpoints is unknown until such 4043time as the program is about to be resumed, @value{GDBN} might not be 4044able to warn you about this when you set the watchpoints, and the 4045warning will be printed only when the program is resumed: 4046 4047@smallexample 4048Hardware watchpoint @var{num}: Could not insert watchpoint 4049@end smallexample 4050 4051@noindent 4052If this happens, delete or disable some of the watchpoints. 4053 4054Watching complex expressions that reference many variables can also 4055exhaust the resources available for hardware-assisted watchpoints. 4056That's because @value{GDBN} needs to watch every variable in the 4057expression with separately allocated resources. 4058 4059If you call a function interactively using @code{print} or @code{call}, 4060any watchpoints you have set will be inactive until @value{GDBN} reaches another 4061kind of breakpoint or the call completes. 4062 4063@value{GDBN} automatically deletes watchpoints that watch local 4064(automatic) variables, or expressions that involve such variables, when 4065they go out of scope, that is, when the execution leaves the block in 4066which these variables were defined. In particular, when the program 4067being debugged terminates, @emph{all} local variables go out of scope, 4068and so only watchpoints that watch global variables remain set. If you 4069rerun the program, you will need to set all such watchpoints again. One 4070way of doing that would be to set a code breakpoint at the entry to the 4071@code{main} function and when it breaks, set all the watchpoints. 4072 4073@cindex watchpoints and threads 4074@cindex threads and watchpoints 4075In multi-threaded programs, watchpoints will detect changes to the 4076watched expression from every thread. 4077 4078@quotation 4079@emph{Warning:} In multi-threaded programs, software watchpoints 4080have only limited usefulness. If @value{GDBN} creates a software 4081watchpoint, it can only watch the value of an expression @emph{in a 4082single thread}. If you are confident that the expression can only 4083change due to the current thread's activity (and if you are also 4084confident that no other thread can become current), then you can use 4085software watchpoints as usual. However, @value{GDBN} may not notice 4086when a non-current thread's activity changes the expression. (Hardware 4087watchpoints, in contrast, watch an expression in all threads.) 4088@end quotation 4089 4090@xref{set remote hardware-watchpoint-limit}. 4091 4092@node Set Catchpoints 4093@subsection Setting Catchpoints 4094@cindex catchpoints, setting 4095@cindex exception handlers 4096@cindex event handling 4097 4098You can use @dfn{catchpoints} to cause the debugger to stop for certain 4099kinds of program events, such as C@t{++} exceptions or the loading of a 4100shared library. Use the @code{catch} command to set a catchpoint. 4101 4102@table @code 4103@kindex catch 4104@item catch @var{event} 4105Stop when @var{event} occurs. @var{event} can be any of the following: 4106 4107@table @code 4108@item throw @r{[}@var{regexp}@r{]} 4109@itemx rethrow @r{[}@var{regexp}@r{]} 4110@itemx catch @r{[}@var{regexp}@r{]} 4111@kindex catch throw 4112@kindex catch rethrow 4113@kindex catch catch 4114@cindex stop on C@t{++} exceptions 4115The throwing, re-throwing, or catching of a C@t{++} exception. 4116 4117If @var{regexp} is given, then only exceptions whose type matches the 4118regular expression will be caught. 4119 4120@vindex $_exception@r{, convenience variable} 4121The convenience variable @code{$_exception} is available at an 4122exception-related catchpoint, on some systems. This holds the 4123exception being thrown. 4124 4125There are currently some limitations to C@t{++} exception handling in 4126@value{GDBN}: 4127 4128@itemize @bullet 4129@item 4130The support for these commands is system-dependent. Currently, only 4131systems using the @samp{gnu-v3} C@t{++} ABI (@pxref{ABI}) are 4132supported. 4133 4134@item 4135The regular expression feature and the @code{$_exception} convenience 4136variable rely on the presence of some SDT probes in @code{libstdc++}. 4137If these probes are not present, then these features cannot be used. 4138These probes were first available in the GCC 4.8 release, but whether 4139or not they are available in your GCC also depends on how it was 4140built. 4141 4142@item 4143The @code{$_exception} convenience variable is only valid at the 4144instruction at which an exception-related catchpoint is set. 4145 4146@item 4147When an exception-related catchpoint is hit, @value{GDBN} stops at a 4148location in the system library which implements runtime exception 4149support for C@t{++}, usually @code{libstdc++}. You can use @code{up} 4150(@pxref{Selection}) to get to your code. 4151 4152@item 4153If you call a function interactively, @value{GDBN} normally returns 4154control to you when the function has finished executing. If the call 4155raises an exception, however, the call may bypass the mechanism that 4156returns control to you and cause your program either to abort or to 4157simply continue running until it hits a breakpoint, catches a signal 4158that @value{GDBN} is listening for, or exits. This is the case even if 4159you set a catchpoint for the exception; catchpoints on exceptions are 4160disabled within interactive calls. @xref{Calling}, for information on 4161controlling this with @code{set unwind-on-terminating-exception}. 4162 4163@item 4164You cannot raise an exception interactively. 4165 4166@item 4167You cannot install an exception handler interactively. 4168@end itemize 4169 4170@item exception 4171@kindex catch exception 4172@cindex Ada exception catching 4173@cindex catch Ada exceptions 4174An Ada exception being raised. If an exception name is specified 4175at the end of the command (eg @code{catch exception Program_Error}), 4176the debugger will stop only when this specific exception is raised. 4177Otherwise, the debugger stops execution when any Ada exception is raised. 4178 4179When inserting an exception catchpoint on a user-defined exception whose 4180name is identical to one of the exceptions defined by the language, the 4181fully qualified name must be used as the exception name. Otherwise, 4182@value{GDBN} will assume that it should stop on the pre-defined exception 4183rather than the user-defined one. For instance, assuming an exception 4184called @code{Constraint_Error} is defined in package @code{Pck}, then 4185the command to use to catch such exceptions is @kbd{catch exception 4186Pck.Constraint_Error}. 4187 4188@item exception unhandled 4189@kindex catch exception unhandled 4190An exception that was raised but is not handled by the program. 4191 4192@item assert 4193@kindex catch assert 4194A failed Ada assertion. 4195 4196@item exec 4197@kindex catch exec 4198@cindex break on fork/exec 4199A call to @code{exec}. This is currently only available for HP-UX 4200and @sc{gnu}/Linux. 4201 4202@item syscall 4203@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{} 4204@kindex catch syscall 4205@cindex break on a system call. 4206A call to or return from a system call, a.k.a.@: @dfn{syscall}. A 4207syscall is a mechanism for application programs to request a service 4208from the operating system (OS) or one of the OS system services. 4209@value{GDBN} can catch some or all of the syscalls issued by the 4210debuggee, and show the related information for each syscall. If no 4211argument is specified, calls to and returns from all system calls 4212will be caught. 4213 4214@var{name} can be any system call name that is valid for the 4215underlying OS. Just what syscalls are valid depends on the OS. On 4216GNU and Unix systems, you can find the full list of valid syscall 4217names on @file{/usr/include/asm/unistd.h}. 4218 4219@c For MS-Windows, the syscall names and the corresponding numbers 4220@c can be found, e.g., on this URL: 4221@c http://www.metasploit.com/users/opcode/syscalls.html 4222@c but we don't support Windows syscalls yet. 4223 4224Normally, @value{GDBN} knows in advance which syscalls are valid for 4225each OS, so you can use the @value{GDBN} command-line completion 4226facilities (@pxref{Completion,, command completion}) to list the 4227available choices. 4228 4229You may also specify the system call numerically. A syscall's 4230number is the value passed to the OS's syscall dispatcher to 4231identify the requested service. When you specify the syscall by its 4232name, @value{GDBN} uses its database of syscalls to convert the name 4233into the corresponding numeric code, but using the number directly 4234may be useful if @value{GDBN}'s database does not have the complete 4235list of syscalls on your system (e.g., because @value{GDBN} lags 4236behind the OS upgrades). 4237 4238The example below illustrates how this command works if you don't provide 4239arguments to it: 4240 4241@smallexample 4242(@value{GDBP}) catch syscall 4243Catchpoint 1 (syscall) 4244(@value{GDBP}) r 4245Starting program: /tmp/catch-syscall 4246 4247Catchpoint 1 (call to syscall 'close'), \ 4248 0xffffe424 in __kernel_vsyscall () 4249(@value{GDBP}) c 4250Continuing. 4251 4252Catchpoint 1 (returned from syscall 'close'), \ 4253 0xffffe424 in __kernel_vsyscall () 4254(@value{GDBP}) 4255@end smallexample 4256 4257Here is an example of catching a system call by name: 4258 4259@smallexample 4260(@value{GDBP}) catch syscall chroot 4261Catchpoint 1 (syscall 'chroot' [61]) 4262(@value{GDBP}) r 4263Starting program: /tmp/catch-syscall 4264 4265Catchpoint 1 (call to syscall 'chroot'), \ 4266 0xffffe424 in __kernel_vsyscall () 4267(@value{GDBP}) c 4268Continuing. 4269 4270Catchpoint 1 (returned from syscall 'chroot'), \ 4271 0xffffe424 in __kernel_vsyscall () 4272(@value{GDBP}) 4273@end smallexample 4274 4275An example of specifying a system call numerically. In the case 4276below, the syscall number has a corresponding entry in the XML 4277file, so @value{GDBN} finds its name and prints it: 4278 4279@smallexample 4280(@value{GDBP}) catch syscall 252 4281Catchpoint 1 (syscall(s) 'exit_group') 4282(@value{GDBP}) r 4283Starting program: /tmp/catch-syscall 4284 4285Catchpoint 1 (call to syscall 'exit_group'), \ 4286 0xffffe424 in __kernel_vsyscall () 4287(@value{GDBP}) c 4288Continuing. 4289 4290Program exited normally. 4291(@value{GDBP}) 4292@end smallexample 4293 4294However, there can be situations when there is no corresponding name 4295in XML file for that syscall number. In this case, @value{GDBN} prints 4296a warning message saying that it was not able to find the syscall name, 4297but the catchpoint will be set anyway. See the example below: 4298 4299@smallexample 4300(@value{GDBP}) catch syscall 764 4301warning: The number '764' does not represent a known syscall. 4302Catchpoint 2 (syscall 764) 4303(@value{GDBP}) 4304@end smallexample 4305 4306If you configure @value{GDBN} using the @samp{--without-expat} option, 4307it will not be able to display syscall names. Also, if your 4308architecture does not have an XML file describing its system calls, 4309you will not be able to see the syscall names. It is important to 4310notice that these two features are used for accessing the syscall 4311name database. In either case, you will see a warning like this: 4312 4313@smallexample 4314(@value{GDBP}) catch syscall 4315warning: Could not open "syscalls/i386-linux.xml" 4316warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'. 4317GDB will not be able to display syscall names. 4318Catchpoint 1 (syscall) 4319(@value{GDBP}) 4320@end smallexample 4321 4322Of course, the file name will change depending on your architecture and system. 4323 4324Still using the example above, you can also try to catch a syscall by its 4325number. In this case, you would see something like: 4326 4327@smallexample 4328(@value{GDBP}) catch syscall 252 4329Catchpoint 1 (syscall(s) 252) 4330@end smallexample 4331 4332Again, in this case @value{GDBN} would not be able to display syscall's names. 4333 4334@item fork 4335@kindex catch fork 4336A call to @code{fork}. This is currently only available for HP-UX 4337and @sc{gnu}/Linux. 4338 4339@item vfork 4340@kindex catch vfork 4341A call to @code{vfork}. This is currently only available for HP-UX 4342and @sc{gnu}/Linux. 4343 4344@item load @r{[}regexp@r{]} 4345@itemx unload @r{[}regexp@r{]} 4346@kindex catch load 4347@kindex catch unload 4348The loading or unloading of a shared library. If @var{regexp} is 4349given, then the catchpoint will stop only if the regular expression 4350matches one of the affected libraries. 4351 4352@item signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 4353@kindex catch signal 4354The delivery of a signal. 4355 4356With no arguments, this catchpoint will catch any signal that is not 4357used internally by @value{GDBN}, specifically, all signals except 4358@samp{SIGTRAP} and @samp{SIGINT}. 4359 4360With the argument @samp{all}, all signals, including those used by 4361@value{GDBN}, will be caught. This argument cannot be used with other 4362signal names. 4363 4364Otherwise, the arguments are a list of signal names as given to 4365@code{handle} (@pxref{Signals}). Only signals specified in this list 4366will be caught. 4367 4368One reason that @code{catch signal} can be more useful than 4369@code{handle} is that you can attach commands and conditions to the 4370catchpoint. 4371 4372When a signal is caught by a catchpoint, the signal's @code{stop} and 4373@code{print} settings, as specified by @code{handle}, are ignored. 4374However, whether the signal is still delivered to the inferior depends 4375on the @code{pass} setting; this can be changed in the catchpoint's 4376commands. 4377 4378@end table 4379 4380@item tcatch @var{event} 4381@kindex tcatch 4382Set a catchpoint that is enabled only for one stop. The catchpoint is 4383automatically deleted after the first time the event is caught. 4384 4385@end table 4386 4387Use the @code{info break} command to list the current catchpoints. 4388 4389 4390@node Delete Breaks 4391@subsection Deleting Breakpoints 4392 4393@cindex clearing breakpoints, watchpoints, catchpoints 4394@cindex deleting breakpoints, watchpoints, catchpoints 4395It is often necessary to eliminate a breakpoint, watchpoint, or 4396catchpoint once it has done its job and you no longer want your program 4397to stop there. This is called @dfn{deleting} the breakpoint. A 4398breakpoint that has been deleted no longer exists; it is forgotten. 4399 4400With the @code{clear} command you can delete breakpoints according to 4401where they are in your program. With the @code{delete} command you can 4402delete individual breakpoints, watchpoints, or catchpoints by specifying 4403their breakpoint numbers. 4404 4405It is not necessary to delete a breakpoint to proceed past it. @value{GDBN} 4406automatically ignores breakpoints on the first instruction to be executed 4407when you continue execution without changing the execution address. 4408 4409@table @code 4410@kindex clear 4411@item clear 4412Delete any breakpoints at the next instruction to be executed in the 4413selected stack frame (@pxref{Selection, ,Selecting a Frame}). When 4414the innermost frame is selected, this is a good way to delete a 4415breakpoint where your program just stopped. 4416 4417@item clear @var{location} 4418Delete any breakpoints set at the specified @var{location}. 4419@xref{Specify Location}, for the various forms of @var{location}; the 4420most useful ones are listed below: 4421 4422@table @code 4423@item clear @var{function} 4424@itemx clear @var{filename}:@var{function} 4425Delete any breakpoints set at entry to the named @var{function}. 4426 4427@item clear @var{linenum} 4428@itemx clear @var{filename}:@var{linenum} 4429Delete any breakpoints set at or within the code of the specified 4430@var{linenum} of the specified @var{filename}. 4431@end table 4432 4433@cindex delete breakpoints 4434@kindex delete 4435@kindex d @r{(@code{delete})} 4436@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]} 4437Delete the breakpoints, watchpoints, or catchpoints of the breakpoint 4438ranges specified as arguments. If no argument is specified, delete all 4439breakpoints (@value{GDBN} asks confirmation, unless you have @code{set 4440confirm off}). You can abbreviate this command as @code{d}. 4441@end table 4442 4443@node Disabling 4444@subsection Disabling Breakpoints 4445 4446@cindex enable/disable a breakpoint 4447Rather than deleting a breakpoint, watchpoint, or catchpoint, you might 4448prefer to @dfn{disable} it. This makes the breakpoint inoperative as if 4449it had been deleted, but remembers the information on the breakpoint so 4450that you can @dfn{enable} it again later. 4451 4452You disable and enable breakpoints, watchpoints, and catchpoints with 4453the @code{enable} and @code{disable} commands, optionally specifying 4454one or more breakpoint numbers as arguments. Use @code{info break} to 4455print a list of all breakpoints, watchpoints, and catchpoints if you 4456do not know which numbers to use. 4457 4458Disabling and enabling a breakpoint that has multiple locations 4459affects all of its locations. 4460 4461A breakpoint, watchpoint, or catchpoint can have any of several 4462different states of enablement: 4463 4464@itemize @bullet 4465@item 4466Enabled. The breakpoint stops your program. A breakpoint set 4467with the @code{break} command starts out in this state. 4468@item 4469Disabled. The breakpoint has no effect on your program. 4470@item 4471Enabled once. The breakpoint stops your program, but then becomes 4472disabled. 4473@item 4474Enabled for a count. The breakpoint stops your program for the next 4475N times, then becomes disabled. 4476@item 4477Enabled for deletion. The breakpoint stops your program, but 4478immediately after it does so it is deleted permanently. A breakpoint 4479set with the @code{tbreak} command starts out in this state. 4480@end itemize 4481 4482You can use the following commands to enable or disable breakpoints, 4483watchpoints, and catchpoints: 4484 4485@table @code 4486@kindex disable 4487@kindex dis @r{(@code{disable})} 4488@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]} 4489Disable the specified breakpoints---or all breakpoints, if none are 4490listed. A disabled breakpoint has no effect but is not forgotten. All 4491options such as ignore-counts, conditions and commands are remembered in 4492case the breakpoint is enabled again later. You may abbreviate 4493@code{disable} as @code{dis}. 4494 4495@kindex enable 4496@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]} 4497Enable the specified breakpoints (or all defined breakpoints). They 4498become effective once again in stopping your program. 4499 4500@item enable @r{[}breakpoints@r{]} once @var{range}@dots{} 4501Enable the specified breakpoints temporarily. @value{GDBN} disables any 4502of these breakpoints immediately after stopping your program. 4503 4504@item enable @r{[}breakpoints@r{]} count @var{count} @var{range}@dots{} 4505Enable the specified breakpoints temporarily. @value{GDBN} records 4506@var{count} with each of the specified breakpoints, and decrements a 4507breakpoint's count when it is hit. When any count reaches 0, 4508@value{GDBN} disables that breakpoint. If a breakpoint has an ignore 4509count (@pxref{Conditions, ,Break Conditions}), that will be 4510decremented to 0 before @var{count} is affected. 4511 4512@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{} 4513Enable the specified breakpoints to work once, then die. @value{GDBN} 4514deletes any of these breakpoints as soon as your program stops there. 4515Breakpoints set by the @code{tbreak} command start out in this state. 4516@end table 4517 4518@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is 4519@c confusing: tbreak is also initially enabled. 4520Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks, 4521,Setting Breakpoints}), breakpoints that you set are initially enabled; 4522subsequently, they become disabled or enabled only when you use one of 4523the commands above. (The command @code{until} can set and delete a 4524breakpoint of its own, but it does not change the state of your other 4525breakpoints; see @ref{Continuing and Stepping, ,Continuing and 4526Stepping}.) 4527 4528@node Conditions 4529@subsection Break Conditions 4530@cindex conditional breakpoints 4531@cindex breakpoint conditions 4532 4533@c FIXME what is scope of break condition expr? Context where wanted? 4534@c in particular for a watchpoint? 4535The simplest sort of breakpoint breaks every time your program reaches a 4536specified place. You can also specify a @dfn{condition} for a 4537breakpoint. A condition is just a Boolean expression in your 4538programming language (@pxref{Expressions, ,Expressions}). A breakpoint with 4539a condition evaluates the expression each time your program reaches it, 4540and your program stops only if the condition is @emph{true}. 4541 4542This is the converse of using assertions for program validation; in that 4543situation, you want to stop when the assertion is violated---that is, 4544when the condition is false. In C, if you want to test an assertion expressed 4545by the condition @var{assert}, you should set the condition 4546@samp{! @var{assert}} on the appropriate breakpoint. 4547 4548Conditions are also accepted for watchpoints; you may not need them, 4549since a watchpoint is inspecting the value of an expression anyhow---but 4550it might be simpler, say, to just set a watchpoint on a variable name, 4551and specify a condition that tests whether the new value is an interesting 4552one. 4553 4554Break conditions can have side effects, and may even call functions in 4555your program. This can be useful, for example, to activate functions 4556that log program progress, or to use your own print functions to 4557format special data structures. The effects are completely predictable 4558unless there is another enabled breakpoint at the same address. (In 4559that case, @value{GDBN} might see the other breakpoint first and stop your 4560program without checking the condition of this one.) Note that 4561breakpoint commands are usually more convenient and flexible than break 4562conditions for the 4563purpose of performing side effects when a breakpoint is reached 4564(@pxref{Break Commands, ,Breakpoint Command Lists}). 4565 4566Breakpoint conditions can also be evaluated on the target's side if 4567the target supports it. Instead of evaluating the conditions locally, 4568@value{GDBN} encodes the expression into an agent expression 4569(@pxref{Agent Expressions}) suitable for execution on the target, 4570independently of @value{GDBN}. Global variables become raw memory 4571locations, locals become stack accesses, and so forth. 4572 4573In this case, @value{GDBN} will only be notified of a breakpoint trigger 4574when its condition evaluates to true. This mechanism may provide faster 4575response times depending on the performance characteristics of the target 4576since it does not need to keep @value{GDBN} informed about 4577every breakpoint trigger, even those with false conditions. 4578 4579Break conditions can be specified when a breakpoint is set, by using 4580@samp{if} in the arguments to the @code{break} command. @xref{Set 4581Breaks, ,Setting Breakpoints}. They can also be changed at any time 4582with the @code{condition} command. 4583 4584You can also use the @code{if} keyword with the @code{watch} command. 4585The @code{catch} command does not recognize the @code{if} keyword; 4586@code{condition} is the only way to impose a further condition on a 4587catchpoint. 4588 4589@table @code 4590@kindex condition 4591@item condition @var{bnum} @var{expression} 4592Specify @var{expression} as the break condition for breakpoint, 4593watchpoint, or catchpoint number @var{bnum}. After you set a condition, 4594breakpoint @var{bnum} stops your program only if the value of 4595@var{expression} is true (nonzero, in C). When you use 4596@code{condition}, @value{GDBN} checks @var{expression} immediately for 4597syntactic correctness, and to determine whether symbols in it have 4598referents in the context of your breakpoint. If @var{expression} uses 4599symbols not referenced in the context of the breakpoint, @value{GDBN} 4600prints an error message: 4601 4602@smallexample 4603No symbol "foo" in current context. 4604@end smallexample 4605 4606@noindent 4607@value{GDBN} does 4608not actually evaluate @var{expression} at the time the @code{condition} 4609command (or a command that sets a breakpoint with a condition, like 4610@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}. 4611 4612@item condition @var{bnum} 4613Remove the condition from breakpoint number @var{bnum}. It becomes 4614an ordinary unconditional breakpoint. 4615@end table 4616 4617@cindex ignore count (of breakpoint) 4618A special case of a breakpoint condition is to stop only when the 4619breakpoint has been reached a certain number of times. This is so 4620useful that there is a special way to do it, using the @dfn{ignore 4621count} of the breakpoint. Every breakpoint has an ignore count, which 4622is an integer. Most of the time, the ignore count is zero, and 4623therefore has no effect. But if your program reaches a breakpoint whose 4624ignore count is positive, then instead of stopping, it just decrements 4625the ignore count by one and continues. As a result, if the ignore count 4626value is @var{n}, the breakpoint does not stop the next @var{n} times 4627your program reaches it. 4628 4629@table @code 4630@kindex ignore 4631@item ignore @var{bnum} @var{count} 4632Set the ignore count of breakpoint number @var{bnum} to @var{count}. 4633The next @var{count} times the breakpoint is reached, your program's 4634execution does not stop; other than to decrement the ignore count, @value{GDBN} 4635takes no action. 4636 4637To make the breakpoint stop the next time it is reached, specify 4638a count of zero. 4639 4640When you use @code{continue} to resume execution of your program from a 4641breakpoint, you can specify an ignore count directly as an argument to 4642@code{continue}, rather than using @code{ignore}. @xref{Continuing and 4643Stepping,,Continuing and Stepping}. 4644 4645If a breakpoint has a positive ignore count and a condition, the 4646condition is not checked. Once the ignore count reaches zero, 4647@value{GDBN} resumes checking the condition. 4648 4649You could achieve the effect of the ignore count with a condition such 4650as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that 4651is decremented each time. @xref{Convenience Vars, ,Convenience 4652Variables}. 4653@end table 4654 4655Ignore counts apply to breakpoints, watchpoints, and catchpoints. 4656 4657 4658@node Break Commands 4659@subsection Breakpoint Command Lists 4660 4661@cindex breakpoint commands 4662You can give any breakpoint (or watchpoint or catchpoint) a series of 4663commands to execute when your program stops due to that breakpoint. For 4664example, you might want to print the values of certain expressions, or 4665enable other breakpoints. 4666 4667@table @code 4668@kindex commands 4669@kindex end@r{ (breakpoint commands)} 4670@item commands @r{[}@var{range}@dots{}@r{]} 4671@itemx @dots{} @var{command-list} @dots{} 4672@itemx end 4673Specify a list of commands for the given breakpoints. The commands 4674themselves appear on the following lines. Type a line containing just 4675@code{end} to terminate the commands. 4676 4677To remove all commands from a breakpoint, type @code{commands} and 4678follow it immediately with @code{end}; that is, give no commands. 4679 4680With no argument, @code{commands} refers to the last breakpoint, 4681watchpoint, or catchpoint set (not to the breakpoint most recently 4682encountered). If the most recent breakpoints were set with a single 4683command, then the @code{commands} will apply to all the breakpoints 4684set by that command. This applies to breakpoints set by 4685@code{rbreak}, and also applies when a single @code{break} command 4686creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous 4687Expressions}). 4688@end table 4689 4690Pressing @key{RET} as a means of repeating the last @value{GDBN} command is 4691disabled within a @var{command-list}. 4692 4693You can use breakpoint commands to start your program up again. Simply 4694use the @code{continue} command, or @code{step}, or any other command 4695that resumes execution. 4696 4697Any other commands in the command list, after a command that resumes 4698execution, are ignored. This is because any time you resume execution 4699(even with a simple @code{next} or @code{step}), you may encounter 4700another breakpoint---which could have its own command list, leading to 4701ambiguities about which list to execute. 4702 4703@kindex silent 4704If the first command you specify in a command list is @code{silent}, the 4705usual message about stopping at a breakpoint is not printed. This may 4706be desirable for breakpoints that are to print a specific message and 4707then continue. If none of the remaining commands print anything, you 4708see no sign that the breakpoint was reached. @code{silent} is 4709meaningful only at the beginning of a breakpoint command list. 4710 4711The commands @code{echo}, @code{output}, and @code{printf} allow you to 4712print precisely controlled output, and are often useful in silent 4713breakpoints. @xref{Output, ,Commands for Controlled Output}. 4714 4715For example, here is how you could use breakpoint commands to print the 4716value of @code{x} at entry to @code{foo} whenever @code{x} is positive. 4717 4718@smallexample 4719break foo if x>0 4720commands 4721silent 4722printf "x is %d\n",x 4723cont 4724end 4725@end smallexample 4726 4727One application for breakpoint commands is to compensate for one bug so 4728you can test for another. Put a breakpoint just after the erroneous line 4729of code, give it a condition to detect the case in which something 4730erroneous has been done, and give it commands to assign correct values 4731to any variables that need them. End with the @code{continue} command 4732so that your program does not stop, and start with the @code{silent} 4733command so that no output is produced. Here is an example: 4734 4735@smallexample 4736break 403 4737commands 4738silent 4739set x = y + 4 4740cont 4741end 4742@end smallexample 4743 4744@node Dynamic Printf 4745@subsection Dynamic Printf 4746 4747@cindex dynamic printf 4748@cindex dprintf 4749The dynamic printf command @code{dprintf} combines a breakpoint with 4750formatted printing of your program's data to give you the effect of 4751inserting @code{printf} calls into your program on-the-fly, without 4752having to recompile it. 4753 4754In its most basic form, the output goes to the GDB console. However, 4755you can set the variable @code{dprintf-style} for alternate handling. 4756For instance, you can ask to format the output by calling your 4757program's @code{printf} function. This has the advantage that the 4758characters go to the program's output device, so they can recorded in 4759redirects to files and so forth. 4760 4761If you are doing remote debugging with a stub or agent, you can also 4762ask to have the printf handled by the remote agent. In addition to 4763ensuring that the output goes to the remote program's device along 4764with any other output the program might produce, you can also ask that 4765the dprintf remain active even after disconnecting from the remote 4766target. Using the stub/agent is also more efficient, as it can do 4767everything without needing to communicate with @value{GDBN}. 4768 4769@table @code 4770@kindex dprintf 4771@item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}] 4772Whenever execution reaches @var{location}, print the values of one or 4773more @var{expressions} under the control of the string @var{template}. 4774To print several values, separate them with commas. 4775 4776@item set dprintf-style @var{style} 4777Set the dprintf output to be handled in one of several different 4778styles enumerated below. A change of style affects all existing 4779dynamic printfs immediately. (If you need individual control over the 4780print commands, simply define normal breakpoints with 4781explicitly-supplied command lists.) 4782 4783@item gdb 4784@kindex dprintf-style gdb 4785Handle the output using the @value{GDBN} @code{printf} command. 4786 4787@item call 4788@kindex dprintf-style call 4789Handle the output by calling a function in your program (normally 4790@code{printf}). 4791 4792@item agent 4793@kindex dprintf-style agent 4794Have the remote debugging agent (such as @code{gdbserver}) handle 4795the output itself. This style is only available for agents that 4796support running commands on the target. 4797 4798@item set dprintf-function @var{function} 4799Set the function to call if the dprintf style is @code{call}. By 4800default its value is @code{printf}. You may set it to any expression. 4801that @value{GDBN} can evaluate to a function, as per the @code{call} 4802command. 4803 4804@item set dprintf-channel @var{channel} 4805Set a ``channel'' for dprintf. If set to a non-empty value, 4806@value{GDBN} will evaluate it as an expression and pass the result as 4807a first argument to the @code{dprintf-function}, in the manner of 4808@code{fprintf} and similar functions. Otherwise, the dprintf format 4809string will be the first argument, in the manner of @code{printf}. 4810 4811As an example, if you wanted @code{dprintf} output to go to a logfile 4812that is a standard I/O stream assigned to the variable @code{mylog}, 4813you could do the following: 4814 4815@example 4816(gdb) set dprintf-style call 4817(gdb) set dprintf-function fprintf 4818(gdb) set dprintf-channel mylog 4819(gdb) dprintf 25,"at line 25, glob=%d\n",glob 4820Dprintf 1 at 0x123456: file main.c, line 25. 4821(gdb) info break 48221 dprintf keep y 0x00123456 in main at main.c:25 4823 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob) 4824 continue 4825(gdb) 4826@end example 4827 4828Note that the @code{info break} displays the dynamic printf commands 4829as normal breakpoint commands; you can thus easily see the effect of 4830the variable settings. 4831 4832@item set disconnected-dprintf on 4833@itemx set disconnected-dprintf off 4834@kindex set disconnected-dprintf 4835Choose whether @code{dprintf} commands should continue to run if 4836@value{GDBN} has disconnected from the target. This only applies 4837if the @code{dprintf-style} is @code{agent}. 4838 4839@item show disconnected-dprintf off 4840@kindex show disconnected-dprintf 4841Show the current choice for disconnected @code{dprintf}. 4842 4843@end table 4844 4845@value{GDBN} does not check the validity of function and channel, 4846relying on you to supply values that are meaningful for the contexts 4847in which they are being used. For instance, the function and channel 4848may be the values of local variables, but if that is the case, then 4849all enabled dynamic prints must be at locations within the scope of 4850those locals. If evaluation fails, @value{GDBN} will report an error. 4851 4852@node Save Breakpoints 4853@subsection How to save breakpoints to a file 4854 4855To save breakpoint definitions to a file use the @w{@code{save 4856breakpoints}} command. 4857 4858@table @code 4859@kindex save breakpoints 4860@cindex save breakpoints to a file for future sessions 4861@item save breakpoints [@var{filename}] 4862This command saves all current breakpoint definitions together with 4863their commands and ignore counts, into a file @file{@var{filename}} 4864suitable for use in a later debugging session. This includes all 4865types of breakpoints (breakpoints, watchpoints, catchpoints, 4866tracepoints). To read the saved breakpoint definitions, use the 4867@code{source} command (@pxref{Command Files}). Note that watchpoints 4868with expressions involving local variables may fail to be recreated 4869because it may not be possible to access the context where the 4870watchpoint is valid anymore. Because the saved breakpoint definitions 4871are simply a sequence of @value{GDBN} commands that recreate the 4872breakpoints, you can edit the file in your favorite editing program, 4873and remove the breakpoint definitions you're not interested in, or 4874that can no longer be recreated. 4875@end table 4876 4877@node Static Probe Points 4878@subsection Static Probe Points 4879 4880@cindex static probe point, SystemTap 4881@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands 4882for Statically Defined Tracing, and the probes are designed to have a tiny 4883runtime code and data footprint, and no dynamic relocations. They are 4884usable from assembly, C and C@t{++} languages. See 4885@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation} 4886for a good reference on how the @acronym{SDT} probes are implemented. 4887 4888Currently, @code{SystemTap} (@uref{http://sourceware.org/systemtap/}) 4889@acronym{SDT} probes are supported on ELF-compatible systems. See 4890@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps} 4891for more information on how to add @code{SystemTap} @acronym{SDT} probes 4892in your applications. 4893 4894@cindex semaphores on static probe points 4895Some probes have an associated semaphore variable; for instance, this 4896happens automatically if you defined your probe using a DTrace-style 4897@file{.d} file. If your probe has a semaphore, @value{GDBN} will 4898automatically enable it when you specify a breakpoint using the 4899@samp{-probe-stap} notation. But, if you put a breakpoint at a probe's 4900location by some other method (e.g., @code{break file:line}), then 4901@value{GDBN} will not automatically set the semaphore. 4902 4903You can examine the available static static probes using @code{info 4904probes}, with optional arguments: 4905 4906@table @code 4907@kindex info probes 4908@item info probes stap @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 4909If given, @var{provider} is a regular expression used to match against provider 4910names when selecting which probes to list. If omitted, probes by all 4911probes from all providers are listed. 4912 4913If given, @var{name} is a regular expression to match against probe names 4914when selecting which probes to list. If omitted, probe names are not 4915considered when deciding whether to display them. 4916 4917If given, @var{objfile} is a regular expression used to select which 4918object files (executable or shared libraries) to examine. If not 4919given, all object files are considered. 4920 4921@item info probes all 4922List the available static probes, from all types. 4923@end table 4924 4925@vindex $_probe_arg@r{, convenience variable} 4926A probe may specify up to twelve arguments. These are available at the 4927point at which the probe is defined---that is, when the current PC is 4928at the probe's location. The arguments are available using the 4929convenience variables (@pxref{Convenience Vars}) 4930@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. Each probe argument is 4931an integer of the appropriate size; types are not preserved. The 4932convenience variable @code{$_probe_argc} holds the number of arguments 4933at the current probe point. 4934 4935These variables are always available, but attempts to access them at 4936any location other than a probe point will cause @value{GDBN} to give 4937an error message. 4938 4939 4940@c @ifclear BARETARGET 4941@node Error in Breakpoints 4942@subsection ``Cannot insert breakpoints'' 4943 4944If you request too many active hardware-assisted breakpoints and 4945watchpoints, you will see this error message: 4946 4947@c FIXME: the precise wording of this message may change; the relevant 4948@c source change is not committed yet (Sep 3, 1999). 4949@smallexample 4950Stopped; cannot insert breakpoints. 4951You may have requested too many hardware breakpoints and watchpoints. 4952@end smallexample 4953 4954@noindent 4955This message is printed when you attempt to resume the program, since 4956only then @value{GDBN} knows exactly how many hardware breakpoints and 4957watchpoints it needs to insert. 4958 4959When this message is printed, you need to disable or remove some of the 4960hardware-assisted breakpoints and watchpoints, and then continue. 4961 4962@node Breakpoint-related Warnings 4963@subsection ``Breakpoint address adjusted...'' 4964@cindex breakpoint address adjusted 4965 4966Some processor architectures place constraints on the addresses at 4967which breakpoints may be placed. For architectures thus constrained, 4968@value{GDBN} will attempt to adjust the breakpoint's address to comply 4969with the constraints dictated by the architecture. 4970 4971One example of such an architecture is the Fujitsu FR-V. The FR-V is 4972a VLIW architecture in which a number of RISC-like instructions may be 4973bundled together for parallel execution. The FR-V architecture 4974constrains the location of a breakpoint instruction within such a 4975bundle to the instruction with the lowest address. @value{GDBN} 4976honors this constraint by adjusting a breakpoint's address to the 4977first in the bundle. 4978 4979It is not uncommon for optimized code to have bundles which contain 4980instructions from different source statements, thus it may happen that 4981a breakpoint's address will be adjusted from one source statement to 4982another. Since this adjustment may significantly alter @value{GDBN}'s 4983breakpoint related behavior from what the user expects, a warning is 4984printed when the breakpoint is first set and also when the breakpoint 4985is hit. 4986 4987A warning like the one below is printed when setting a breakpoint 4988that's been subject to address adjustment: 4989 4990@smallexample 4991warning: Breakpoint address adjusted from 0x00010414 to 0x00010410. 4992@end smallexample 4993 4994Such warnings are printed both for user settable and @value{GDBN}'s 4995internal breakpoints. If you see one of these warnings, you should 4996verify that a breakpoint set at the adjusted address will have the 4997desired affect. If not, the breakpoint in question may be removed and 4998other breakpoints may be set which will have the desired behavior. 4999E.g., it may be sufficient to place the breakpoint at a later 5000instruction. A conditional breakpoint may also be useful in some 5001cases to prevent the breakpoint from triggering too often. 5002 5003@value{GDBN} will also issue a warning when stopping at one of these 5004adjusted breakpoints: 5005 5006@smallexample 5007warning: Breakpoint 1 address previously adjusted from 0x00010414 5008to 0x00010410. 5009@end smallexample 5010 5011When this warning is encountered, it may be too late to take remedial 5012action except in cases where the breakpoint is hit earlier or more 5013frequently than expected. 5014 5015@node Continuing and Stepping 5016@section Continuing and Stepping 5017 5018@cindex stepping 5019@cindex continuing 5020@cindex resuming execution 5021@dfn{Continuing} means resuming program execution until your program 5022completes normally. In contrast, @dfn{stepping} means executing just 5023one more ``step'' of your program, where ``step'' may mean either one 5024line of source code, or one machine instruction (depending on what 5025particular command you use). Either when continuing or when stepping, 5026your program may stop even sooner, due to a breakpoint or a signal. (If 5027it stops due to a signal, you may want to use @code{handle}, or use 5028@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.) 5029 5030@table @code 5031@kindex continue 5032@kindex c @r{(@code{continue})} 5033@kindex fg @r{(resume foreground execution)} 5034@item continue @r{[}@var{ignore-count}@r{]} 5035@itemx c @r{[}@var{ignore-count}@r{]} 5036@itemx fg @r{[}@var{ignore-count}@r{]} 5037Resume program execution, at the address where your program last stopped; 5038any breakpoints set at that address are bypassed. The optional argument 5039@var{ignore-count} allows you to specify a further number of times to 5040ignore a breakpoint at this location; its effect is like that of 5041@code{ignore} (@pxref{Conditions, ,Break Conditions}). 5042 5043The argument @var{ignore-count} is meaningful only when your program 5044stopped due to a breakpoint. At other times, the argument to 5045@code{continue} is ignored. 5046 5047The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the 5048debugged program is deemed to be the foreground program) are provided 5049purely for convenience, and have exactly the same behavior as 5050@code{continue}. 5051@end table 5052 5053To resume execution at a different place, you can use @code{return} 5054(@pxref{Returning, ,Returning from a Function}) to go back to the 5055calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a 5056Different Address}) to go to an arbitrary location in your program. 5057 5058A typical technique for using stepping is to set a breakpoint 5059(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the 5060beginning of the function or the section of your program where a problem 5061is believed to lie, run your program until it stops at that breakpoint, 5062and then step through the suspect area, examining the variables that are 5063interesting, until you see the problem happen. 5064 5065@table @code 5066@kindex step 5067@kindex s @r{(@code{step})} 5068@item step 5069Continue running your program until control reaches a different source 5070line, then stop it and return control to @value{GDBN}. This command is 5071abbreviated @code{s}. 5072 5073@quotation 5074@c "without debugging information" is imprecise; actually "without line 5075@c numbers in the debugging information". (gcc -g1 has debugging info but 5076@c not line numbers). But it seems complex to try to make that 5077@c distinction here. 5078@emph{Warning:} If you use the @code{step} command while control is 5079within a function that was compiled without debugging information, 5080execution proceeds until control reaches a function that does have 5081debugging information. Likewise, it will not step into a function which 5082is compiled without debugging information. To step through functions 5083without debugging information, use the @code{stepi} command, described 5084below. 5085@end quotation 5086 5087The @code{step} command only stops at the first instruction of a source 5088line. This prevents the multiple stops that could otherwise occur in 5089@code{switch} statements, @code{for} loops, etc. @code{step} continues 5090to stop if a function that has debugging information is called within 5091the line. In other words, @code{step} @emph{steps inside} any functions 5092called within the line. 5093 5094Also, the @code{step} command only enters a function if there is line 5095number information for the function. Otherwise it acts like the 5096@code{next} command. This avoids problems when using @code{cc -gl} 5097on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there 5098was any debugging information about the routine. 5099 5100@item step @var{count} 5101Continue running as in @code{step}, but do so @var{count} times. If a 5102breakpoint is reached, or a signal not related to stepping occurs before 5103@var{count} steps, stepping stops right away. 5104 5105@kindex next 5106@kindex n @r{(@code{next})} 5107@item next @r{[}@var{count}@r{]} 5108Continue to the next source line in the current (innermost) stack frame. 5109This is similar to @code{step}, but function calls that appear within 5110the line of code are executed without stopping. Execution stops when 5111control reaches a different line of code at the original stack level 5112that was executing when you gave the @code{next} command. This command 5113is abbreviated @code{n}. 5114 5115An argument @var{count} is a repeat count, as for @code{step}. 5116 5117 5118@c FIX ME!! Do we delete this, or is there a way it fits in with 5119@c the following paragraph? --- Vctoria 5120@c 5121@c @code{next} within a function that lacks debugging information acts like 5122@c @code{step}, but any function calls appearing within the code of the 5123@c function are executed without stopping. 5124 5125The @code{next} command only stops at the first instruction of a 5126source line. This prevents multiple stops that could otherwise occur in 5127@code{switch} statements, @code{for} loops, etc. 5128 5129@kindex set step-mode 5130@item set step-mode 5131@cindex functions without line info, and stepping 5132@cindex stepping into functions with no line info 5133@itemx set step-mode on 5134The @code{set step-mode on} command causes the @code{step} command to 5135stop at the first instruction of a function which contains no debug line 5136information rather than stepping over it. 5137 5138This is useful in cases where you may be interested in inspecting the 5139machine instructions of a function which has no symbolic info and do not 5140want @value{GDBN} to automatically skip over this function. 5141 5142@item set step-mode off 5143Causes the @code{step} command to step over any functions which contains no 5144debug information. This is the default. 5145 5146@item show step-mode 5147Show whether @value{GDBN} will stop in or step over functions without 5148source line debug information. 5149 5150@kindex finish 5151@kindex fin @r{(@code{finish})} 5152@item finish 5153Continue running until just after function in the selected stack frame 5154returns. Print the returned value (if any). This command can be 5155abbreviated as @code{fin}. 5156 5157Contrast this with the @code{return} command (@pxref{Returning, 5158,Returning from a Function}). 5159 5160@kindex until 5161@kindex u @r{(@code{until})} 5162@cindex run until specified location 5163@item until 5164@itemx u 5165Continue running until a source line past the current line, in the 5166current stack frame, is reached. This command is used to avoid single 5167stepping through a loop more than once. It is like the @code{next} 5168command, except that when @code{until} encounters a jump, it 5169automatically continues execution until the program counter is greater 5170than the address of the jump. 5171 5172This means that when you reach the end of a loop after single stepping 5173though it, @code{until} makes your program continue execution until it 5174exits the loop. In contrast, a @code{next} command at the end of a loop 5175simply steps back to the beginning of the loop, which forces you to step 5176through the next iteration. 5177 5178@code{until} always stops your program if it attempts to exit the current 5179stack frame. 5180 5181@code{until} may produce somewhat counterintuitive results if the order 5182of machine code does not match the order of the source lines. For 5183example, in the following excerpt from a debugging session, the @code{f} 5184(@code{frame}) command shows that execution is stopped at line 5185@code{206}; yet when we use @code{until}, we get to line @code{195}: 5186 5187@smallexample 5188(@value{GDBP}) f 5189#0 main (argc=4, argv=0xf7fffae8) at m4.c:206 5190206 expand_input(); 5191(@value{GDBP}) until 5192195 for ( ; argc > 0; NEXTARG) @{ 5193@end smallexample 5194 5195This happened because, for execution efficiency, the compiler had 5196generated code for the loop closure test at the end, rather than the 5197start, of the loop---even though the test in a C @code{for}-loop is 5198written before the body of the loop. The @code{until} command appeared 5199to step back to the beginning of the loop when it advanced to this 5200expression; however, it has not really gone to an earlier 5201statement---not in terms of the actual machine code. 5202 5203@code{until} with no argument works by means of single 5204instruction stepping, and hence is slower than @code{until} with an 5205argument. 5206 5207@item until @var{location} 5208@itemx u @var{location} 5209Continue running your program until either the specified location is 5210reached, or the current stack frame returns. @var{location} is any of 5211the forms described in @ref{Specify Location}. 5212This form of the command uses temporary breakpoints, and 5213hence is quicker than @code{until} without an argument. The specified 5214location is actually reached only if it is in the current frame. This 5215implies that @code{until} can be used to skip over recursive function 5216invocations. For instance in the code below, if the current location is 5217line @code{96}, issuing @code{until 99} will execute the program up to 5218line @code{99} in the same invocation of factorial, i.e., after the inner 5219invocations have returned. 5220 5221@smallexample 522294 int factorial (int value) 522395 @{ 522496 if (value > 1) @{ 522597 value *= factorial (value - 1); 522698 @} 522799 return (value); 5228100 @} 5229@end smallexample 5230 5231 5232@kindex advance @var{location} 5233@item advance @var{location} 5234Continue running the program up to the given @var{location}. An argument is 5235required, which should be of one of the forms described in 5236@ref{Specify Location}. 5237Execution will also stop upon exit from the current stack 5238frame. This command is similar to @code{until}, but @code{advance} will 5239not skip over recursive function calls, and the target location doesn't 5240have to be in the same frame as the current one. 5241 5242 5243@kindex stepi 5244@kindex si @r{(@code{stepi})} 5245@item stepi 5246@itemx stepi @var{arg} 5247@itemx si 5248Execute one machine instruction, then stop and return to the debugger. 5249 5250It is often useful to do @samp{display/i $pc} when stepping by machine 5251instructions. This makes @value{GDBN} automatically display the next 5252instruction to be executed, each time your program stops. @xref{Auto 5253Display,, Automatic Display}. 5254 5255An argument is a repeat count, as in @code{step}. 5256 5257@need 750 5258@kindex nexti 5259@kindex ni @r{(@code{nexti})} 5260@item nexti 5261@itemx nexti @var{arg} 5262@itemx ni 5263Execute one machine instruction, but if it is a function call, 5264proceed until the function returns. 5265 5266An argument is a repeat count, as in @code{next}. 5267 5268@end table 5269 5270@anchor{range stepping} 5271@cindex range stepping 5272@cindex target-assisted range stepping 5273By default, and if available, @value{GDBN} makes use of 5274target-assisted @dfn{range stepping}. In other words, whenever you 5275use a stepping command (e.g., @code{step}, @code{next}), @value{GDBN} 5276tells the target to step the corresponding range of instruction 5277addresses instead of issuing multiple single-steps. This speeds up 5278line stepping, particularly for remote targets. Ideally, there should 5279be no reason you would want to turn range stepping off. However, it's 5280possible that a bug in the debug info, a bug in the remote stub (for 5281remote targets), or even a bug in @value{GDBN} could make line 5282stepping behave incorrectly when target-assisted range stepping is 5283enabled. You can use the following command to turn off range stepping 5284if necessary: 5285 5286@table @code 5287@kindex set range-stepping 5288@kindex show range-stepping 5289@item set range-stepping 5290@itemx show range-stepping 5291Control whether range stepping is enabled. 5292 5293If @code{on}, and the target supports it, @value{GDBN} tells the 5294target to step a range of addresses itself, instead of issuing 5295multiple single-steps. If @code{off}, @value{GDBN} always issues 5296single-steps, even if range stepping is supported by the target. The 5297default is @code{on}. 5298 5299@end table 5300 5301@node Skipping Over Functions and Files 5302@section Skipping Over Functions and Files 5303@cindex skipping over functions and files 5304 5305The program you are debugging may contain some functions which are 5306uninteresting to debug. The @code{skip} comand lets you tell @value{GDBN} to 5307skip a function or all functions in a file when stepping. 5308 5309For example, consider the following C function: 5310 5311@smallexample 5312101 int func() 5313102 @{ 5314103 foo(boring()); 5315104 bar(boring()); 5316105 @} 5317@end smallexample 5318 5319@noindent 5320Suppose you wish to step into the functions @code{foo} and @code{bar}, but you 5321are not interested in stepping through @code{boring}. If you run @code{step} 5322at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll 5323step over both @code{foo} and @code{boring}! 5324 5325One solution is to @code{step} into @code{boring} and use the @code{finish} 5326command to immediately exit it. But this can become tedious if @code{boring} 5327is called from many places. 5328 5329A more flexible solution is to execute @kbd{skip boring}. This instructs 5330@value{GDBN} never to step into @code{boring}. Now when you execute 5331@code{step} at line 103, you'll step over @code{boring} and directly into 5332@code{foo}. 5333 5334You can also instruct @value{GDBN} to skip all functions in a file, with, for 5335example, @code{skip file boring.c}. 5336 5337@table @code 5338@kindex skip function 5339@item skip @r{[}@var{linespec}@r{]} 5340@itemx skip function @r{[}@var{linespec}@r{]} 5341After running this command, the function named by @var{linespec} or the 5342function containing the line named by @var{linespec} will be skipped over when 5343stepping. @xref{Specify Location}. 5344 5345If you do not specify @var{linespec}, the function you're currently debugging 5346will be skipped. 5347 5348(If you have a function called @code{file} that you want to skip, use 5349@kbd{skip function file}.) 5350 5351@kindex skip file 5352@item skip file @r{[}@var{filename}@r{]} 5353After running this command, any function whose source lives in @var{filename} 5354will be skipped over when stepping. 5355 5356If you do not specify @var{filename}, functions whose source lives in the file 5357you're currently debugging will be skipped. 5358@end table 5359 5360Skips can be listed, deleted, disabled, and enabled, much like breakpoints. 5361These are the commands for managing your list of skips: 5362 5363@table @code 5364@kindex info skip 5365@item info skip @r{[}@var{range}@r{]} 5366Print details about the specified skip(s). If @var{range} is not specified, 5367print a table with details about all functions and files marked for skipping. 5368@code{info skip} prints the following information about each skip: 5369 5370@table @emph 5371@item Identifier 5372A number identifying this skip. 5373@item Type 5374The type of this skip, either @samp{function} or @samp{file}. 5375@item Enabled or Disabled 5376Enabled skips are marked with @samp{y}. Disabled skips are marked with @samp{n}. 5377@item Address 5378For function skips, this column indicates the address in memory of the function 5379being skipped. If you've set a function skip on a function which has not yet 5380been loaded, this field will contain @samp{<PENDING>}. Once a shared library 5381which has the function is loaded, @code{info skip} will show the function's 5382address here. 5383@item What 5384For file skips, this field contains the filename being skipped. For functions 5385skips, this field contains the function name and its line number in the file 5386where it is defined. 5387@end table 5388 5389@kindex skip delete 5390@item skip delete @r{[}@var{range}@r{]} 5391Delete the specified skip(s). If @var{range} is not specified, delete all 5392skips. 5393 5394@kindex skip enable 5395@item skip enable @r{[}@var{range}@r{]} 5396Enable the specified skip(s). If @var{range} is not specified, enable all 5397skips. 5398 5399@kindex skip disable 5400@item skip disable @r{[}@var{range}@r{]} 5401Disable the specified skip(s). If @var{range} is not specified, disable all 5402skips. 5403 5404@end table 5405 5406@node Signals 5407@section Signals 5408@cindex signals 5409 5410A signal is an asynchronous event that can happen in a program. The 5411operating system defines the possible kinds of signals, and gives each 5412kind a name and a number. For example, in Unix @code{SIGINT} is the 5413signal a program gets when you type an interrupt character (often @kbd{Ctrl-c}); 5414@code{SIGSEGV} is the signal a program gets from referencing a place in 5415memory far away from all the areas in use; @code{SIGALRM} occurs when 5416the alarm clock timer goes off (which happens only if your program has 5417requested an alarm). 5418 5419@cindex fatal signals 5420Some signals, including @code{SIGALRM}, are a normal part of the 5421functioning of your program. Others, such as @code{SIGSEGV}, indicate 5422errors; these signals are @dfn{fatal} (they kill your program immediately) if the 5423program has not specified in advance some other way to handle the signal. 5424@code{SIGINT} does not indicate an error in your program, but it is normally 5425fatal so it can carry out the purpose of the interrupt: to kill the program. 5426 5427@value{GDBN} has the ability to detect any occurrence of a signal in your 5428program. You can tell @value{GDBN} in advance what to do for each kind of 5429signal. 5430 5431@cindex handling signals 5432Normally, @value{GDBN} is set up to let the non-erroneous signals like 5433@code{SIGALRM} be silently passed to your program 5434(so as not to interfere with their role in the program's functioning) 5435but to stop your program immediately whenever an error signal happens. 5436You can change these settings with the @code{handle} command. 5437 5438@table @code 5439@kindex info signals 5440@kindex info handle 5441@item info signals 5442@itemx info handle 5443Print a table of all the kinds of signals and how @value{GDBN} has been told to 5444handle each one. You can use this to see the signal numbers of all 5445the defined types of signals. 5446 5447@item info signals @var{sig} 5448Similar, but print information only about the specified signal number. 5449 5450@code{info handle} is an alias for @code{info signals}. 5451 5452@item catch signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 5453Set a catchpoint for the indicated signals. @xref{Set Catchpoints}, 5454for details about this command. 5455 5456@kindex handle 5457@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]} 5458Change the way @value{GDBN} handles signal @var{signal}. @var{signal} 5459can be the number of a signal or its name (with or without the 5460@samp{SIG} at the beginning); a list of signal numbers of the form 5461@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the 5462known signals. Optional arguments @var{keywords}, described below, 5463say what change to make. 5464@end table 5465 5466@c @group 5467The keywords allowed by the @code{handle} command can be abbreviated. 5468Their full names are: 5469 5470@table @code 5471@item nostop 5472@value{GDBN} should not stop your program when this signal happens. It may 5473still print a message telling you that the signal has come in. 5474 5475@item stop 5476@value{GDBN} should stop your program when this signal happens. This implies 5477the @code{print} keyword as well. 5478 5479@item print 5480@value{GDBN} should print a message when this signal happens. 5481 5482@item noprint 5483@value{GDBN} should not mention the occurrence of the signal at all. This 5484implies the @code{nostop} keyword as well. 5485 5486@item pass 5487@itemx noignore 5488@value{GDBN} should allow your program to see this signal; your program 5489can handle the signal, or else it may terminate if the signal is fatal 5490and not handled. @code{pass} and @code{noignore} are synonyms. 5491 5492@item nopass 5493@itemx ignore 5494@value{GDBN} should not allow your program to see this signal. 5495@code{nopass} and @code{ignore} are synonyms. 5496@end table 5497@c @end group 5498 5499When a signal stops your program, the signal is not visible to the 5500program until you 5501continue. Your program sees the signal then, if @code{pass} is in 5502effect for the signal in question @emph{at that time}. In other words, 5503after @value{GDBN} reports a signal, you can use the @code{handle} 5504command with @code{pass} or @code{nopass} to control whether your 5505program sees that signal when you continue. 5506 5507The default is set to @code{nostop}, @code{noprint}, @code{pass} for 5508non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and 5509@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the 5510erroneous signals. 5511 5512You can also use the @code{signal} command to prevent your program from 5513seeing a signal, or cause it to see a signal it normally would not see, 5514or to give it any signal at any time. For example, if your program stopped 5515due to some sort of memory reference error, you might store correct 5516values into the erroneous variables and continue, hoping to see more 5517execution; but your program would probably terminate immediately as 5518a result of the fatal signal once it saw the signal. To prevent this, 5519you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your 5520Program a Signal}. 5521 5522@cindex extra signal information 5523@anchor{extra signal information} 5524 5525On some targets, @value{GDBN} can inspect extra signal information 5526associated with the intercepted signal, before it is actually 5527delivered to the program being debugged. This information is exported 5528by the convenience variable @code{$_siginfo}, and consists of data 5529that is passed by the kernel to the signal handler at the time of the 5530receipt of a signal. The data type of the information itself is 5531target dependent. You can see the data type using the @code{ptype 5532$_siginfo} command. On Unix systems, it typically corresponds to the 5533standard @code{siginfo_t} type, as defined in the @file{signal.h} 5534system header. 5535 5536Here's an example, on a @sc{gnu}/Linux system, printing the stray 5537referenced address that raised a segmentation fault. 5538 5539@smallexample 5540@group 5541(@value{GDBP}) continue 5542Program received signal SIGSEGV, Segmentation fault. 55430x0000000000400766 in main () 554469 *(int *)p = 0; 5545(@value{GDBP}) ptype $_siginfo 5546type = struct @{ 5547 int si_signo; 5548 int si_errno; 5549 int si_code; 5550 union @{ 5551 int _pad[28]; 5552 struct @{...@} _kill; 5553 struct @{...@} _timer; 5554 struct @{...@} _rt; 5555 struct @{...@} _sigchld; 5556 struct @{...@} _sigfault; 5557 struct @{...@} _sigpoll; 5558 @} _sifields; 5559@} 5560(@value{GDBP}) ptype $_siginfo._sifields._sigfault 5561type = struct @{ 5562 void *si_addr; 5563@} 5564(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr 5565$1 = (void *) 0x7ffff7ff7000 5566@end group 5567@end smallexample 5568 5569Depending on target support, @code{$_siginfo} may also be writable. 5570 5571@node Thread Stops 5572@section Stopping and Starting Multi-thread Programs 5573 5574@cindex stopped threads 5575@cindex threads, stopped 5576 5577@cindex continuing threads 5578@cindex threads, continuing 5579 5580@value{GDBN} supports debugging programs with multiple threads 5581(@pxref{Threads,, Debugging Programs with Multiple Threads}). There 5582are two modes of controlling execution of your program within the 5583debugger. In the default mode, referred to as @dfn{all-stop mode}, 5584when any thread in your program stops (for example, at a breakpoint 5585or while being stepped), all other threads in the program are also stopped by 5586@value{GDBN}. On some targets, @value{GDBN} also supports 5587@dfn{non-stop mode}, in which other threads can continue to run freely while 5588you examine the stopped thread in the debugger. 5589 5590@menu 5591* All-Stop Mode:: All threads stop when GDB takes control 5592* Non-Stop Mode:: Other threads continue to execute 5593* Background Execution:: Running your program asynchronously 5594* Thread-Specific Breakpoints:: Controlling breakpoints 5595* Interrupted System Calls:: GDB may interfere with system calls 5596* Observer Mode:: GDB does not alter program behavior 5597@end menu 5598 5599@node All-Stop Mode 5600@subsection All-Stop Mode 5601 5602@cindex all-stop mode 5603 5604In all-stop mode, whenever your program stops under @value{GDBN} for any reason, 5605@emph{all} threads of execution stop, not just the current thread. This 5606allows you to examine the overall state of the program, including 5607switching between threads, without worrying that things may change 5608underfoot. 5609 5610Conversely, whenever you restart the program, @emph{all} threads start 5611executing. @emph{This is true even when single-stepping} with commands 5612like @code{step} or @code{next}. 5613 5614In particular, @value{GDBN} cannot single-step all threads in lockstep. 5615Since thread scheduling is up to your debugging target's operating 5616system (not controlled by @value{GDBN}), other threads may 5617execute more than one statement while the current thread completes a 5618single step. Moreover, in general other threads stop in the middle of a 5619statement, rather than at a clean statement boundary, when the program 5620stops. 5621 5622You might even find your program stopped in another thread after 5623continuing or even single-stepping. This happens whenever some other 5624thread runs into a breakpoint, a signal, or an exception before the 5625first thread completes whatever you requested. 5626 5627@cindex automatic thread selection 5628@cindex switching threads automatically 5629@cindex threads, automatic switching 5630Whenever @value{GDBN} stops your program, due to a breakpoint or a 5631signal, it automatically selects the thread where that breakpoint or 5632signal happened. @value{GDBN} alerts you to the context switch with a 5633message such as @samp{[Switching to Thread @var{n}]} to identify the 5634thread. 5635 5636On some OSes, you can modify @value{GDBN}'s default behavior by 5637locking the OS scheduler to allow only a single thread to run. 5638 5639@table @code 5640@item set scheduler-locking @var{mode} 5641@cindex scheduler locking mode 5642@cindex lock scheduler 5643Set the scheduler locking mode. If it is @code{off}, then there is no 5644locking and any thread may run at any time. If @code{on}, then only the 5645current thread may run when the inferior is resumed. The @code{step} 5646mode optimizes for single-stepping; it prevents other threads 5647from preempting the current thread while you are stepping, so that 5648the focus of debugging does not change unexpectedly. 5649Other threads only rarely (or never) get a chance to run 5650when you step. They are more likely to run when you @samp{next} over a 5651function call, and they are completely free to run when you use commands 5652like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another 5653thread hits a breakpoint during its timeslice, @value{GDBN} does not change 5654the current thread away from the thread that you are debugging. 5655 5656@item show scheduler-locking 5657Display the current scheduler locking mode. 5658@end table 5659 5660@cindex resume threads of multiple processes simultaneously 5661By default, when you issue one of the execution commands such as 5662@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only 5663threads of the current inferior to run. For example, if @value{GDBN} 5664is attached to two inferiors, each with two threads, the 5665@code{continue} command resumes only the two threads of the current 5666inferior. This is useful, for example, when you debug a program that 5667forks and you want to hold the parent stopped (so that, for instance, 5668it doesn't run to exit), while you debug the child. In other 5669situations, you may not be interested in inspecting the current state 5670of any of the processes @value{GDBN} is attached to, and you may want 5671to resume them all until some breakpoint is hit. In the latter case, 5672you can instruct @value{GDBN} to allow all threads of all the 5673inferiors to run with the @w{@code{set schedule-multiple}} command. 5674 5675@table @code 5676@kindex set schedule-multiple 5677@item set schedule-multiple 5678Set the mode for allowing threads of multiple processes to be resumed 5679when an execution command is issued. When @code{on}, all threads of 5680all processes are allowed to run. When @code{off}, only the threads 5681of the current process are resumed. The default is @code{off}. The 5682@code{scheduler-locking} mode takes precedence when set to @code{on}, 5683or while you are stepping and set to @code{step}. 5684 5685@item show schedule-multiple 5686Display the current mode for resuming the execution of threads of 5687multiple processes. 5688@end table 5689 5690@node Non-Stop Mode 5691@subsection Non-Stop Mode 5692 5693@cindex non-stop mode 5694 5695@c This section is really only a place-holder, and needs to be expanded 5696@c with more details. 5697 5698For some multi-threaded targets, @value{GDBN} supports an optional 5699mode of operation in which you can examine stopped program threads in 5700the debugger while other threads continue to execute freely. This 5701minimizes intrusion when debugging live systems, such as programs 5702where some threads have real-time constraints or must continue to 5703respond to external events. This is referred to as @dfn{non-stop} mode. 5704 5705In non-stop mode, when a thread stops to report a debugging event, 5706@emph{only} that thread is stopped; @value{GDBN} does not stop other 5707threads as well, in contrast to the all-stop mode behavior. Additionally, 5708execution commands such as @code{continue} and @code{step} apply by default 5709only to the current thread in non-stop mode, rather than all threads as 5710in all-stop mode. This allows you to control threads explicitly in 5711ways that are not possible in all-stop mode --- for example, stepping 5712one thread while allowing others to run freely, stepping 5713one thread while holding all others stopped, or stepping several threads 5714independently and simultaneously. 5715 5716To enter non-stop mode, use this sequence of commands before you run 5717or attach to your program: 5718 5719@smallexample 5720# Enable the async interface. 5721set target-async 1 5722 5723# If using the CLI, pagination breaks non-stop. 5724set pagination off 5725 5726# Finally, turn it on! 5727set non-stop on 5728@end smallexample 5729 5730You can use these commands to manipulate the non-stop mode setting: 5731 5732@table @code 5733@kindex set non-stop 5734@item set non-stop on 5735Enable selection of non-stop mode. 5736@item set non-stop off 5737Disable selection of non-stop mode. 5738@kindex show non-stop 5739@item show non-stop 5740Show the current non-stop enablement setting. 5741@end table 5742 5743Note these commands only reflect whether non-stop mode is enabled, 5744not whether the currently-executing program is being run in non-stop mode. 5745In particular, the @code{set non-stop} preference is only consulted when 5746@value{GDBN} starts or connects to the target program, and it is generally 5747not possible to switch modes once debugging has started. Furthermore, 5748since not all targets support non-stop mode, even when you have enabled 5749non-stop mode, @value{GDBN} may still fall back to all-stop operation by 5750default. 5751 5752In non-stop mode, all execution commands apply only to the current thread 5753by default. That is, @code{continue} only continues one thread. 5754To continue all threads, issue @code{continue -a} or @code{c -a}. 5755 5756You can use @value{GDBN}'s background execution commands 5757(@pxref{Background Execution}) to run some threads in the background 5758while you continue to examine or step others from @value{GDBN}. 5759The MI execution commands (@pxref{GDB/MI Program Execution}) are 5760always executed asynchronously in non-stop mode. 5761 5762Suspending execution is done with the @code{interrupt} command when 5763running in the background, or @kbd{Ctrl-c} during foreground execution. 5764In all-stop mode, this stops the whole process; 5765but in non-stop mode the interrupt applies only to the current thread. 5766To stop the whole program, use @code{interrupt -a}. 5767 5768Other execution commands do not currently support the @code{-a} option. 5769 5770In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make 5771that thread current, as it does in all-stop mode. This is because the 5772thread stop notifications are asynchronous with respect to @value{GDBN}'s 5773command interpreter, and it would be confusing if @value{GDBN} unexpectedly 5774changed to a different thread just as you entered a command to operate on the 5775previously current thread. 5776 5777@node Background Execution 5778@subsection Background Execution 5779 5780@cindex foreground execution 5781@cindex background execution 5782@cindex asynchronous execution 5783@cindex execution, foreground, background and asynchronous 5784 5785@value{GDBN}'s execution commands have two variants: the normal 5786foreground (synchronous) behavior, and a background 5787(asynchronous) behavior. In foreground execution, @value{GDBN} waits for 5788the program to report that some thread has stopped before prompting for 5789another command. In background execution, @value{GDBN} immediately gives 5790a command prompt so that you can issue other commands while your program runs. 5791 5792You need to explicitly enable asynchronous mode before you can use 5793background execution commands. You can use these commands to 5794manipulate the asynchronous mode setting: 5795 5796@table @code 5797@kindex set target-async 5798@item set target-async on 5799Enable asynchronous mode. 5800@item set target-async off 5801Disable asynchronous mode. 5802@kindex show target-async 5803@item show target-async 5804Show the current target-async setting. 5805@end table 5806 5807If the target doesn't support async mode, @value{GDBN} issues an error 5808message if you attempt to use the background execution commands. 5809 5810To specify background execution, add a @code{&} to the command. For example, 5811the background form of the @code{continue} command is @code{continue&}, or 5812just @code{c&}. The execution commands that accept background execution 5813are: 5814 5815@table @code 5816@kindex run& 5817@item run 5818@xref{Starting, , Starting your Program}. 5819 5820@item attach 5821@kindex attach& 5822@xref{Attach, , Debugging an Already-running Process}. 5823 5824@item step 5825@kindex step& 5826@xref{Continuing and Stepping, step}. 5827 5828@item stepi 5829@kindex stepi& 5830@xref{Continuing and Stepping, stepi}. 5831 5832@item next 5833@kindex next& 5834@xref{Continuing and Stepping, next}. 5835 5836@item nexti 5837@kindex nexti& 5838@xref{Continuing and Stepping, nexti}. 5839 5840@item continue 5841@kindex continue& 5842@xref{Continuing and Stepping, continue}. 5843 5844@item finish 5845@kindex finish& 5846@xref{Continuing and Stepping, finish}. 5847 5848@item until 5849@kindex until& 5850@xref{Continuing and Stepping, until}. 5851 5852@end table 5853 5854Background execution is especially useful in conjunction with non-stop 5855mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}. 5856However, you can also use these commands in the normal all-stop mode with 5857the restriction that you cannot issue another execution command until the 5858previous one finishes. Examples of commands that are valid in all-stop 5859mode while the program is running include @code{help} and @code{info break}. 5860 5861You can interrupt your program while it is running in the background by 5862using the @code{interrupt} command. 5863 5864@table @code 5865@kindex interrupt 5866@item interrupt 5867@itemx interrupt -a 5868 5869Suspend execution of the running program. In all-stop mode, 5870@code{interrupt} stops the whole process, but in non-stop mode, it stops 5871only the current thread. To stop the whole program in non-stop mode, 5872use @code{interrupt -a}. 5873@end table 5874 5875@node Thread-Specific Breakpoints 5876@subsection Thread-Specific Breakpoints 5877 5878When your program has multiple threads (@pxref{Threads,, Debugging 5879Programs with Multiple Threads}), you can choose whether to set 5880breakpoints on all threads, or on a particular thread. 5881 5882@table @code 5883@cindex breakpoints and threads 5884@cindex thread breakpoints 5885@kindex break @dots{} thread @var{threadno} 5886@item break @var{linespec} thread @var{threadno} 5887@itemx break @var{linespec} thread @var{threadno} if @dots{} 5888@var{linespec} specifies source lines; there are several ways of 5889writing them (@pxref{Specify Location}), but the effect is always to 5890specify some source line. 5891 5892Use the qualifier @samp{thread @var{threadno}} with a breakpoint command 5893to specify that you only want @value{GDBN} to stop the program when a 5894particular thread reaches this breakpoint. @var{threadno} is one of the 5895numeric thread identifiers assigned by @value{GDBN}, shown in the first 5896column of the @samp{info threads} display. 5897 5898If you do not specify @samp{thread @var{threadno}} when you set a 5899breakpoint, the breakpoint applies to @emph{all} threads of your 5900program. 5901 5902You can use the @code{thread} qualifier on conditional breakpoints as 5903well; in this case, place @samp{thread @var{threadno}} before or 5904after the breakpoint condition, like this: 5905 5906@smallexample 5907(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim 5908@end smallexample 5909 5910@end table 5911 5912Thread-specific breakpoints are automatically deleted when 5913@value{GDBN} detects the corresponding thread is no longer in the 5914thread list. For example: 5915 5916@smallexample 5917(@value{GDBP}) c 5918Thread-specific breakpoint 3 deleted - thread 28 no longer in the thread list. 5919@end smallexample 5920 5921There are several ways for a thread to disappear, such as a regular 5922thread exit, but also when you detach from the process with the 5923@code{detach} command (@pxref{Attach, ,Debugging an Already-running 5924Process}), or if @value{GDBN} loses the remote connection 5925(@pxref{Remote Debugging}), etc. Note that with some targets, 5926@value{GDBN} is only able to detect a thread has exited when the user 5927explictly asks for the thread list with the @code{info threads} 5928command. 5929 5930@node Interrupted System Calls 5931@subsection Interrupted System Calls 5932 5933@cindex thread breakpoints and system calls 5934@cindex system calls and thread breakpoints 5935@cindex premature return from system calls 5936There is an unfortunate side effect when using @value{GDBN} to debug 5937multi-threaded programs. If one thread stops for a 5938breakpoint, or for some other reason, and another thread is blocked in a 5939system call, then the system call may return prematurely. This is a 5940consequence of the interaction between multiple threads and the signals 5941that @value{GDBN} uses to implement breakpoints and other events that 5942stop execution. 5943 5944To handle this problem, your program should check the return value of 5945each system call and react appropriately. This is good programming 5946style anyways. 5947 5948For example, do not write code like this: 5949 5950@smallexample 5951 sleep (10); 5952@end smallexample 5953 5954The call to @code{sleep} will return early if a different thread stops 5955at a breakpoint or for some other reason. 5956 5957Instead, write this: 5958 5959@smallexample 5960 int unslept = 10; 5961 while (unslept > 0) 5962 unslept = sleep (unslept); 5963@end smallexample 5964 5965A system call is allowed to return early, so the system is still 5966conforming to its specification. But @value{GDBN} does cause your 5967multi-threaded program to behave differently than it would without 5968@value{GDBN}. 5969 5970Also, @value{GDBN} uses internal breakpoints in the thread library to 5971monitor certain events such as thread creation and thread destruction. 5972When such an event happens, a system call in another thread may return 5973prematurely, even though your program does not appear to stop. 5974 5975@node Observer Mode 5976@subsection Observer Mode 5977 5978If you want to build on non-stop mode and observe program behavior 5979without any chance of disruption by @value{GDBN}, you can set 5980variables to disable all of the debugger's attempts to modify state, 5981whether by writing memory, inserting breakpoints, etc. These operate 5982at a low level, intercepting operations from all commands. 5983 5984When all of these are set to @code{off}, then @value{GDBN} is said to 5985be @dfn{observer mode}. As a convenience, the variable 5986@code{observer} can be set to disable these, plus enable non-stop 5987mode. 5988 5989Note that @value{GDBN} will not prevent you from making nonsensical 5990combinations of these settings. For instance, if you have enabled 5991@code{may-insert-breakpoints} but disabled @code{may-write-memory}, 5992then breakpoints that work by writing trap instructions into the code 5993stream will still not be able to be placed. 5994 5995@table @code 5996 5997@kindex observer 5998@item set observer on 5999@itemx set observer off 6000When set to @code{on}, this disables all the permission variables 6001below (except for @code{insert-fast-tracepoints}), plus enables 6002non-stop debugging. Setting this to @code{off} switches back to 6003normal debugging, though remaining in non-stop mode. 6004 6005@item show observer 6006Show whether observer mode is on or off. 6007 6008@kindex may-write-registers 6009@item set may-write-registers on 6010@itemx set may-write-registers off 6011This controls whether @value{GDBN} will attempt to alter the values of 6012registers, such as with assignment expressions in @code{print}, or the 6013@code{jump} command. It defaults to @code{on}. 6014 6015@item show may-write-registers 6016Show the current permission to write registers. 6017 6018@kindex may-write-memory 6019@item set may-write-memory on 6020@itemx set may-write-memory off 6021This controls whether @value{GDBN} will attempt to alter the contents 6022of memory, such as with assignment expressions in @code{print}. It 6023defaults to @code{on}. 6024 6025@item show may-write-memory 6026Show the current permission to write memory. 6027 6028@kindex may-insert-breakpoints 6029@item set may-insert-breakpoints on 6030@itemx set may-insert-breakpoints off 6031This controls whether @value{GDBN} will attempt to insert breakpoints. 6032This affects all breakpoints, including internal breakpoints defined 6033by @value{GDBN}. It defaults to @code{on}. 6034 6035@item show may-insert-breakpoints 6036Show the current permission to insert breakpoints. 6037 6038@kindex may-insert-tracepoints 6039@item set may-insert-tracepoints on 6040@itemx set may-insert-tracepoints off 6041This controls whether @value{GDBN} will attempt to insert (regular) 6042tracepoints at the beginning of a tracing experiment. It affects only 6043non-fast tracepoints, fast tracepoints being under the control of 6044@code{may-insert-fast-tracepoints}. It defaults to @code{on}. 6045 6046@item show may-insert-tracepoints 6047Show the current permission to insert tracepoints. 6048 6049@kindex may-insert-fast-tracepoints 6050@item set may-insert-fast-tracepoints on 6051@itemx set may-insert-fast-tracepoints off 6052This controls whether @value{GDBN} will attempt to insert fast 6053tracepoints at the beginning of a tracing experiment. It affects only 6054fast tracepoints, regular (non-fast) tracepoints being under the 6055control of @code{may-insert-tracepoints}. It defaults to @code{on}. 6056 6057@item show may-insert-fast-tracepoints 6058Show the current permission to insert fast tracepoints. 6059 6060@kindex may-interrupt 6061@item set may-interrupt on 6062@itemx set may-interrupt off 6063This controls whether @value{GDBN} will attempt to interrupt or stop 6064program execution. When this variable is @code{off}, the 6065@code{interrupt} command will have no effect, nor will 6066@kbd{Ctrl-c}. It defaults to @code{on}. 6067 6068@item show may-interrupt 6069Show the current permission to interrupt or stop the program. 6070 6071@end table 6072 6073@node Reverse Execution 6074@chapter Running programs backward 6075@cindex reverse execution 6076@cindex running programs backward 6077 6078When you are debugging a program, it is not unusual to realize that 6079you have gone too far, and some event of interest has already happened. 6080If the target environment supports it, @value{GDBN} can allow you to 6081``rewind'' the program by running it backward. 6082 6083A target environment that supports reverse execution should be able 6084to ``undo'' the changes in machine state that have taken place as the 6085program was executing normally. Variables, registers etc.@: should 6086revert to their previous values. Obviously this requires a great 6087deal of sophistication on the part of the target environment; not 6088all target environments can support reverse execution. 6089 6090When a program is executed in reverse, the instructions that 6091have most recently been executed are ``un-executed'', in reverse 6092order. The program counter runs backward, following the previous 6093thread of execution in reverse. As each instruction is ``un-executed'', 6094the values of memory and/or registers that were changed by that 6095instruction are reverted to their previous states. After executing 6096a piece of source code in reverse, all side effects of that code 6097should be ``undone'', and all variables should be returned to their 6098prior values@footnote{ 6099Note that some side effects are easier to undo than others. For instance, 6100memory and registers are relatively easy, but device I/O is hard. Some 6101targets may be able undo things like device I/O, and some may not. 6102 6103The contract between @value{GDBN} and the reverse executing target 6104requires only that the target do something reasonable when 6105@value{GDBN} tells it to execute backwards, and then report the 6106results back to @value{GDBN}. Whatever the target reports back to 6107@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN} 6108assumes that the memory and registers that the target reports are in a 6109consistant state, but @value{GDBN} accepts whatever it is given. 6110}. 6111 6112If you are debugging in a target environment that supports 6113reverse execution, @value{GDBN} provides the following commands. 6114 6115@table @code 6116@kindex reverse-continue 6117@kindex rc @r{(@code{reverse-continue})} 6118@item reverse-continue @r{[}@var{ignore-count}@r{]} 6119@itemx rc @r{[}@var{ignore-count}@r{]} 6120Beginning at the point where your program last stopped, start executing 6121in reverse. Reverse execution will stop for breakpoints and synchronous 6122exceptions (signals), just like normal execution. Behavior of 6123asynchronous signals depends on the target environment. 6124 6125@kindex reverse-step 6126@kindex rs @r{(@code{step})} 6127@item reverse-step @r{[}@var{count}@r{]} 6128Run the program backward until control reaches the start of a 6129different source line; then stop it, and return control to @value{GDBN}. 6130 6131Like the @code{step} command, @code{reverse-step} will only stop 6132at the beginning of a source line. It ``un-executes'' the previously 6133executed source line. If the previous source line included calls to 6134debuggable functions, @code{reverse-step} will step (backward) into 6135the called function, stopping at the beginning of the @emph{last} 6136statement in the called function (typically a return statement). 6137 6138Also, as with the @code{step} command, if non-debuggable functions are 6139called, @code{reverse-step} will run thru them backward without stopping. 6140 6141@kindex reverse-stepi 6142@kindex rsi @r{(@code{reverse-stepi})} 6143@item reverse-stepi @r{[}@var{count}@r{]} 6144Reverse-execute one machine instruction. Note that the instruction 6145to be reverse-executed is @emph{not} the one pointed to by the program 6146counter, but the instruction executed prior to that one. For instance, 6147if the last instruction was a jump, @code{reverse-stepi} will take you 6148back from the destination of the jump to the jump instruction itself. 6149 6150@kindex reverse-next 6151@kindex rn @r{(@code{reverse-next})} 6152@item reverse-next @r{[}@var{count}@r{]} 6153Run backward to the beginning of the previous line executed in 6154the current (innermost) stack frame. If the line contains function 6155calls, they will be ``un-executed'' without stopping. Starting from 6156the first line of a function, @code{reverse-next} will take you back 6157to the caller of that function, @emph{before} the function was called, 6158just as the normal @code{next} command would take you from the last 6159line of a function back to its return to its caller 6160@footnote{Unless the code is too heavily optimized.}. 6161 6162@kindex reverse-nexti 6163@kindex rni @r{(@code{reverse-nexti})} 6164@item reverse-nexti @r{[}@var{count}@r{]} 6165Like @code{nexti}, @code{reverse-nexti} executes a single instruction 6166in reverse, except that called functions are ``un-executed'' atomically. 6167That is, if the previously executed instruction was a return from 6168another function, @code{reverse-nexti} will continue to execute 6169in reverse until the call to that function (from the current stack 6170frame) is reached. 6171 6172@kindex reverse-finish 6173@item reverse-finish 6174Just as the @code{finish} command takes you to the point where the 6175current function returns, @code{reverse-finish} takes you to the point 6176where it was called. Instead of ending up at the end of the current 6177function invocation, you end up at the beginning. 6178 6179@kindex set exec-direction 6180@item set exec-direction 6181Set the direction of target execution. 6182@item set exec-direction reverse 6183@cindex execute forward or backward in time 6184@value{GDBN} will perform all execution commands in reverse, until the 6185exec-direction mode is changed to ``forward''. Affected commands include 6186@code{step, stepi, next, nexti, continue, and finish}. The @code{return} 6187command cannot be used in reverse mode. 6188@item set exec-direction forward 6189@value{GDBN} will perform all execution commands in the normal fashion. 6190This is the default. 6191@end table 6192 6193 6194@node Process Record and Replay 6195@chapter Recording Inferior's Execution and Replaying It 6196@cindex process record and replay 6197@cindex recording inferior's execution and replaying it 6198 6199On some platforms, @value{GDBN} provides a special @dfn{process record 6200and replay} target that can record a log of the process execution, and 6201replay it later with both forward and reverse execution commands. 6202 6203@cindex replay mode 6204When this target is in use, if the execution log includes the record 6205for the next instruction, @value{GDBN} will debug in @dfn{replay 6206mode}. In the replay mode, the inferior does not really execute code 6207instructions. Instead, all the events that normally happen during 6208code execution are taken from the execution log. While code is not 6209really executed in replay mode, the values of registers (including the 6210program counter register) and the memory of the inferior are still 6211changed as they normally would. Their contents are taken from the 6212execution log. 6213 6214@cindex record mode 6215If the record for the next instruction is not in the execution log, 6216@value{GDBN} will debug in @dfn{record mode}. In this mode, the 6217inferior executes normally, and @value{GDBN} records the execution log 6218for future replay. 6219 6220The process record and replay target supports reverse execution 6221(@pxref{Reverse Execution}), even if the platform on which the 6222inferior runs does not. However, the reverse execution is limited in 6223this case by the range of the instructions recorded in the execution 6224log. In other words, reverse execution on platforms that don't 6225support it directly can only be done in the replay mode. 6226 6227When debugging in the reverse direction, @value{GDBN} will work in 6228replay mode as long as the execution log includes the record for the 6229previous instruction; otherwise, it will work in record mode, if the 6230platform supports reverse execution, or stop if not. 6231 6232For architecture environments that support process record and replay, 6233@value{GDBN} provides the following commands: 6234 6235@table @code 6236@kindex target record 6237@kindex target record-full 6238@kindex target record-btrace 6239@kindex record 6240@kindex record full 6241@kindex record btrace 6242@kindex rec 6243@kindex rec full 6244@kindex rec btrace 6245@item record @var{method} 6246This command starts the process record and replay target. The 6247recording method can be specified as parameter. Without a parameter 6248the command uses the @code{full} recording method. The following 6249recording methods are available: 6250 6251@table @code 6252@item full 6253Full record/replay recording using @value{GDBN}'s software record and 6254replay implementation. This method allows replaying and reverse 6255execution. 6256 6257@item btrace 6258Hardware-supported instruction recording. This method does not allow 6259replaying and reverse execution. 6260 6261This recording method may not be available on all processors. 6262@end table 6263 6264The process record and replay target can only debug a process that is 6265already running. Therefore, you need first to start the process with 6266the @kbd{run} or @kbd{start} commands, and then start the recording 6267with the @kbd{record @var{method}} command. 6268 6269Both @code{record @var{method}} and @code{rec @var{method}} are 6270aliases of @code{target record-@var{method}}. 6271 6272@cindex displaced stepping, and process record and replay 6273Displaced stepping (@pxref{Maintenance Commands,, displaced stepping}) 6274will be automatically disabled when process record and replay target 6275is started. That's because the process record and replay target 6276doesn't support displaced stepping. 6277 6278@cindex non-stop mode, and process record and replay 6279@cindex asynchronous execution, and process record and replay 6280If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in 6281the asynchronous execution mode (@pxref{Background Execution}), not 6282all recording methods are available. The @code{full} recording method 6283does not support these two modes. 6284 6285@kindex record stop 6286@kindex rec s 6287@item record stop 6288Stop the process record and replay target. When process record and 6289replay target stops, the entire execution log will be deleted and the 6290inferior will either be terminated, or will remain in its final state. 6291 6292When you stop the process record and replay target in record mode (at 6293the end of the execution log), the inferior will be stopped at the 6294next instruction that would have been recorded. In other words, if 6295you record for a while and then stop recording, the inferior process 6296will be left in the same state as if the recording never happened. 6297 6298On the other hand, if the process record and replay target is stopped 6299while in replay mode (that is, not at the end of the execution log, 6300but at some earlier point), the inferior process will become ``live'' 6301at that earlier state, and it will then be possible to continue the 6302usual ``live'' debugging of the process from that state. 6303 6304When the inferior process exits, or @value{GDBN} detaches from it, 6305process record and replay target will automatically stop itself. 6306 6307@kindex record goto 6308@item record goto 6309Go to a specific location in the execution log. There are several 6310ways to specify the location to go to: 6311 6312@table @code 6313@item record goto begin 6314@itemx record goto start 6315Go to the beginning of the execution log. 6316 6317@item record goto end 6318Go to the end of the execution log. 6319 6320@item record goto @var{n} 6321Go to instruction number @var{n} in the execution log. 6322@end table 6323 6324@kindex record save 6325@item record save @var{filename} 6326Save the execution log to a file @file{@var{filename}}. 6327Default filename is @file{gdb_record.@var{process_id}}, where 6328@var{process_id} is the process ID of the inferior. 6329 6330This command may not be available for all recording methods. 6331 6332@kindex record restore 6333@item record restore @var{filename} 6334Restore the execution log from a file @file{@var{filename}}. 6335File must have been created with @code{record save}. 6336 6337@kindex set record full 6338@item set record full insn-number-max @var{limit} 6339@itemx set record full insn-number-max unlimited 6340Set the limit of instructions to be recorded for the @code{full} 6341recording method. Default value is 200000. 6342 6343If @var{limit} is a positive number, then @value{GDBN} will start 6344deleting instructions from the log once the number of the record 6345instructions becomes greater than @var{limit}. For every new recorded 6346instruction, @value{GDBN} will delete the earliest recorded 6347instruction to keep the number of recorded instructions at the limit. 6348(Since deleting recorded instructions loses information, @value{GDBN} 6349lets you control what happens when the limit is reached, by means of 6350the @code{stop-at-limit} option, described below.) 6351 6352If @var{limit} is @code{unlimited} or zero, @value{GDBN} will never 6353delete recorded instructions from the execution log. The number of 6354recorded instructions is limited only by the available memory. 6355 6356@kindex show record full 6357@item show record full insn-number-max 6358Show the limit of instructions to be recorded with the @code{full} 6359recording method. 6360 6361@item set record full stop-at-limit 6362Control the behavior of the @code{full} recording method when the 6363number of recorded instructions reaches the limit. If ON (the 6364default), @value{GDBN} will stop when the limit is reached for the 6365first time and ask you whether you want to stop the inferior or 6366continue running it and recording the execution log. If you decide 6367to continue recording, each new recorded instruction will cause the 6368oldest one to be deleted. 6369 6370If this option is OFF, @value{GDBN} will automatically delete the 6371oldest record to make room for each new one, without asking. 6372 6373@item show record full stop-at-limit 6374Show the current setting of @code{stop-at-limit}. 6375 6376@item set record full memory-query 6377Control the behavior when @value{GDBN} is unable to record memory 6378changes caused by an instruction for the @code{full} recording method. 6379If ON, @value{GDBN} will query whether to stop the inferior in that 6380case. 6381 6382If this option is OFF (the default), @value{GDBN} will automatically 6383ignore the effect of such instructions on memory. Later, when 6384@value{GDBN} replays this execution log, it will mark the log of this 6385instruction as not accessible, and it will not affect the replay 6386results. 6387 6388@item show record full memory-query 6389Show the current setting of @code{memory-query}. 6390 6391@kindex info record 6392@item info record 6393Show various statistics about the recording depending on the recording 6394method: 6395 6396@table @code 6397@item full 6398For the @code{full} recording method, it shows the state of process 6399record and its in-memory execution log buffer, including: 6400 6401@itemize @bullet 6402@item 6403Whether in record mode or replay mode. 6404@item 6405Lowest recorded instruction number (counting from when the current execution log started recording instructions). 6406@item 6407Highest recorded instruction number. 6408@item 6409Current instruction about to be replayed (if in replay mode). 6410@item 6411Number of instructions contained in the execution log. 6412@item 6413Maximum number of instructions that may be contained in the execution log. 6414@end itemize 6415 6416@item btrace 6417For the @code{btrace} recording method, it shows the number of 6418instructions that have been recorded and the number of blocks of 6419sequential control-flow that is formed by the recorded instructions. 6420@end table 6421 6422@kindex record delete 6423@kindex rec del 6424@item record delete 6425When record target runs in replay mode (``in the past''), delete the 6426subsequent execution log and begin to record a new execution log starting 6427from the current address. This means you will abandon the previously 6428recorded ``future'' and begin recording a new ``future''. 6429 6430@kindex record instruction-history 6431@kindex rec instruction-history 6432@item record instruction-history 6433Disassembles instructions from the recorded execution log. By 6434default, ten instructions are disassembled. This can be changed using 6435the @code{set record instruction-history-size} command. Instructions 6436are printed in execution order. There are several ways to specify 6437what part of the execution log to disassemble: 6438 6439@table @code 6440@item record instruction-history @var{insn} 6441Disassembles ten instructions starting from instruction number 6442@var{insn}. 6443 6444@item record instruction-history @var{insn}, +/-@var{n} 6445Disassembles @var{n} instructions around instruction number 6446@var{insn}. If @var{n} is preceded with @code{+}, disassembles 6447@var{n} instructions after instruction number @var{insn}. If 6448@var{n} is preceded with @code{-}, disassembles @var{n} 6449instructions before instruction number @var{insn}. 6450 6451@item record instruction-history 6452Disassembles ten more instructions after the last disassembly. 6453 6454@item record instruction-history - 6455Disassembles ten more instructions before the last disassembly. 6456 6457@item record instruction-history @var{begin} @var{end} 6458Disassembles instructions beginning with instruction number 6459@var{begin} until instruction number @var{end}. The instruction 6460number @var{end} is not included. 6461@end table 6462 6463This command may not be available for all recording methods. 6464 6465@kindex set record 6466@item set record instruction-history-size @var{size} 6467@itemx set record instruction-history-size unlimited 6468Define how many instructions to disassemble in the @code{record 6469instruction-history} command. The default value is 10. 6470A @var{size} of @code{unlimited} means unlimited instructions. 6471 6472@kindex show record 6473@item show record instruction-history-size 6474Show how many instructions to disassemble in the @code{record 6475instruction-history} command. 6476 6477@kindex record function-call-history 6478@kindex rec function-call-history 6479@item record function-call-history 6480Prints the execution history at function granularity. It prints one 6481line for each sequence of instructions that belong to the same 6482function giving the name of that function, the source lines 6483for this instruction sequence (if the @code{/l} modifier is 6484specified), and the instructions numbers that form the sequence (if 6485the @code{/i} modifier is specified). 6486 6487@smallexample 6488(@value{GDBP}) @b{list 1, 10} 64891 void foo (void) 64902 @{ 64913 @} 64924 64935 void bar (void) 64946 @{ 64957 ... 64968 foo (); 64979 ... 649810 @} 6499(@value{GDBP}) @b{record function-call-history /l} 65001 foo.c:6-8 bar 65012 foo.c:2-3 foo 65023 foo.c:9-10 bar 6503@end smallexample 6504 6505By default, ten lines are printed. This can be changed using the 6506@code{set record function-call-history-size} command. Functions are 6507printed in execution order. There are several ways to specify what 6508to print: 6509 6510@table @code 6511@item record function-call-history @var{func} 6512Prints ten functions starting from function number @var{func}. 6513 6514@item record function-call-history @var{func}, +/-@var{n} 6515Prints @var{n} functions around function number @var{func}. If 6516@var{n} is preceded with @code{+}, prints @var{n} functions after 6517function number @var{func}. If @var{n} is preceded with @code{-}, 6518prints @var{n} functions before function number @var{func}. 6519 6520@item record function-call-history 6521Prints ten more functions after the last ten-line print. 6522 6523@item record function-call-history - 6524Prints ten more functions before the last ten-line print. 6525 6526@item record function-call-history @var{begin} @var{end} 6527Prints functions beginning with function number @var{begin} until 6528function number @var{end}. The function number @var{end} is not 6529included. 6530@end table 6531 6532This command may not be available for all recording methods. 6533 6534@item set record function-call-history-size @var{size} 6535@itemx set record function-call-history-size unlimited 6536Define how many lines to print in the 6537@code{record function-call-history} command. The default value is 10. 6538A size of @code{unlimited} means unlimited lines. 6539 6540@item show record function-call-history-size 6541Show how many lines to print in the 6542@code{record function-call-history} command. 6543@end table 6544 6545 6546@node Stack 6547@chapter Examining the Stack 6548 6549When your program has stopped, the first thing you need to know is where it 6550stopped and how it got there. 6551 6552@cindex call stack 6553Each time your program performs a function call, information about the call 6554is generated. 6555That information includes the location of the call in your program, 6556the arguments of the call, 6557and the local variables of the function being called. 6558The information is saved in a block of data called a @dfn{stack frame}. 6559The stack frames are allocated in a region of memory called the @dfn{call 6560stack}. 6561 6562When your program stops, the @value{GDBN} commands for examining the 6563stack allow you to see all of this information. 6564 6565@cindex selected frame 6566One of the stack frames is @dfn{selected} by @value{GDBN} and many 6567@value{GDBN} commands refer implicitly to the selected frame. In 6568particular, whenever you ask @value{GDBN} for the value of a variable in 6569your program, the value is found in the selected frame. There are 6570special @value{GDBN} commands to select whichever frame you are 6571interested in. @xref{Selection, ,Selecting a Frame}. 6572 6573When your program stops, @value{GDBN} automatically selects the 6574currently executing frame and describes it briefly, similar to the 6575@code{frame} command (@pxref{Frame Info, ,Information about a Frame}). 6576 6577@menu 6578* Frames:: Stack frames 6579* Backtrace:: Backtraces 6580* Frame Filter Management:: Managing frame filters 6581* Selection:: Selecting a frame 6582* Frame Info:: Information on a frame 6583 6584@end menu 6585 6586@node Frames 6587@section Stack Frames 6588 6589@cindex frame, definition 6590@cindex stack frame 6591The call stack is divided up into contiguous pieces called @dfn{stack 6592frames}, or @dfn{frames} for short; each frame is the data associated 6593with one call to one function. The frame contains the arguments given 6594to the function, the function's local variables, and the address at 6595which the function is executing. 6596 6597@cindex initial frame 6598@cindex outermost frame 6599@cindex innermost frame 6600When your program is started, the stack has only one frame, that of the 6601function @code{main}. This is called the @dfn{initial} frame or the 6602@dfn{outermost} frame. Each time a function is called, a new frame is 6603made. Each time a function returns, the frame for that function invocation 6604is eliminated. If a function is recursive, there can be many frames for 6605the same function. The frame for the function in which execution is 6606actually occurring is called the @dfn{innermost} frame. This is the most 6607recently created of all the stack frames that still exist. 6608 6609@cindex frame pointer 6610Inside your program, stack frames are identified by their addresses. A 6611stack frame consists of many bytes, each of which has its own address; each 6612kind of computer has a convention for choosing one byte whose 6613address serves as the address of the frame. Usually this address is kept 6614in a register called the @dfn{frame pointer register} 6615(@pxref{Registers, $fp}) while execution is going on in that frame. 6616 6617@cindex frame number 6618@value{GDBN} assigns numbers to all existing stack frames, starting with 6619zero for the innermost frame, one for the frame that called it, 6620and so on upward. These numbers do not really exist in your program; 6621they are assigned by @value{GDBN} to give you a way of designating stack 6622frames in @value{GDBN} commands. 6623 6624@c The -fomit-frame-pointer below perennially causes hbox overflow 6625@c underflow problems. 6626@cindex frameless execution 6627Some compilers provide a way to compile functions so that they operate 6628without stack frames. (For example, the @value{NGCC} option 6629@smallexample 6630@samp{-fomit-frame-pointer} 6631@end smallexample 6632generates functions without a frame.) 6633This is occasionally done with heavily used library functions to save 6634the frame setup time. @value{GDBN} has limited facilities for dealing 6635with these function invocations. If the innermost function invocation 6636has no stack frame, @value{GDBN} nevertheless regards it as though 6637it had a separate frame, which is numbered zero as usual, allowing 6638correct tracing of the function call chain. However, @value{GDBN} has 6639no provision for frameless functions elsewhere in the stack. 6640 6641@table @code 6642@kindex frame@r{, command} 6643@cindex current stack frame 6644@item frame @var{args} 6645The @code{frame} command allows you to move from one stack frame to another, 6646and to print the stack frame you select. @var{args} may be either the 6647address of the frame or the stack frame number. Without an argument, 6648@code{frame} prints the current stack frame. 6649 6650@kindex select-frame 6651@cindex selecting frame silently 6652@item select-frame 6653The @code{select-frame} command allows you to move from one stack frame 6654to another without printing the frame. This is the silent version of 6655@code{frame}. 6656@end table 6657 6658@node Backtrace 6659@section Backtraces 6660 6661@cindex traceback 6662@cindex call stack traces 6663A backtrace is a summary of how your program got where it is. It shows one 6664line per frame, for many frames, starting with the currently executing 6665frame (frame zero), followed by its caller (frame one), and on up the 6666stack. 6667 6668@anchor{backtrace-command} 6669@table @code 6670@kindex backtrace 6671@kindex bt @r{(@code{backtrace})} 6672@item backtrace 6673@itemx bt 6674Print a backtrace of the entire stack: one line per frame for all 6675frames in the stack. 6676 6677You can stop the backtrace at any time by typing the system interrupt 6678character, normally @kbd{Ctrl-c}. 6679 6680@item backtrace @var{n} 6681@itemx bt @var{n} 6682Similar, but print only the innermost @var{n} frames. 6683 6684@item backtrace -@var{n} 6685@itemx bt -@var{n} 6686Similar, but print only the outermost @var{n} frames. 6687 6688@item backtrace full 6689@itemx bt full 6690@itemx bt full @var{n} 6691@itemx bt full -@var{n} 6692Print the values of the local variables also. @var{n} specifies the 6693number of frames to print, as described above. 6694 6695@item backtrace no-filters 6696@itemx bt no-filters 6697@itemx bt no-filters @var{n} 6698@itemx bt no-filters -@var{n} 6699@itemx bt no-filters full 6700@itemx bt no-filters full @var{n} 6701@itemx bt no-filters full -@var{n} 6702Do not run Python frame filters on this backtrace. @xref{Frame 6703Filter API}, for more information. Additionally use @ref{disable 6704frame-filter all} to turn off all frame filters. This is only 6705relevant when @value{GDBN} has been configured with @code{Python} 6706support. 6707@end table 6708 6709@kindex where 6710@kindex info stack 6711The names @code{where} and @code{info stack} (abbreviated @code{info s}) 6712are additional aliases for @code{backtrace}. 6713 6714@cindex multiple threads, backtrace 6715In a multi-threaded program, @value{GDBN} by default shows the 6716backtrace only for the current thread. To display the backtrace for 6717several or all of the threads, use the command @code{thread apply} 6718(@pxref{Threads, thread apply}). For example, if you type @kbd{thread 6719apply all backtrace}, @value{GDBN} will display the backtrace for all 6720the threads; this is handy when you debug a core dump of a 6721multi-threaded program. 6722 6723Each line in the backtrace shows the frame number and the function name. 6724The program counter value is also shown---unless you use @code{set 6725print address off}. The backtrace also shows the source file name and 6726line number, as well as the arguments to the function. The program 6727counter value is omitted if it is at the beginning of the code for that 6728line number. 6729 6730Here is an example of a backtrace. It was made with the command 6731@samp{bt 3}, so it shows the innermost three frames. 6732 6733@smallexample 6734@group 6735#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 6736 at builtin.c:993 6737#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242 6738#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08) 6739 at macro.c:71 6740(More stack frames follow...) 6741@end group 6742@end smallexample 6743 6744@noindent 6745The display for frame zero does not begin with a program counter 6746value, indicating that your program has stopped at the beginning of the 6747code for line @code{993} of @code{builtin.c}. 6748 6749@noindent 6750The value of parameter @code{data} in frame 1 has been replaced by 6751@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter 6752only if it is a scalar (integer, pointer, enumeration, etc). See command 6753@kbd{set print frame-arguments} in @ref{Print Settings} for more details 6754on how to configure the way function parameter values are printed. 6755 6756@cindex optimized out, in backtrace 6757@cindex function call arguments, optimized out 6758If your program was compiled with optimizations, some compilers will 6759optimize away arguments passed to functions if those arguments are 6760never used after the call. Such optimizations generate code that 6761passes arguments through registers, but doesn't store those arguments 6762in the stack frame. @value{GDBN} has no way of displaying such 6763arguments in stack frames other than the innermost one. Here's what 6764such a backtrace might look like: 6765 6766@smallexample 6767@group 6768#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 6769 at builtin.c:993 6770#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242 6771#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08) 6772 at macro.c:71 6773(More stack frames follow...) 6774@end group 6775@end smallexample 6776 6777@noindent 6778The values of arguments that were not saved in their stack frames are 6779shown as @samp{<optimized out>}. 6780 6781If you need to display the values of such optimized-out arguments, 6782either deduce that from other variables whose values depend on the one 6783you are interested in, or recompile without optimizations. 6784 6785@cindex backtrace beyond @code{main} function 6786@cindex program entry point 6787@cindex startup code, and backtrace 6788Most programs have a standard user entry point---a place where system 6789libraries and startup code transition into user code. For C this is 6790@code{main}@footnote{ 6791Note that embedded programs (the so-called ``free-standing'' 6792environment) are not required to have a @code{main} function as the 6793entry point. They could even have multiple entry points.}. 6794When @value{GDBN} finds the entry function in a backtrace 6795it will terminate the backtrace, to avoid tracing into highly 6796system-specific (and generally uninteresting) code. 6797 6798If you need to examine the startup code, or limit the number of levels 6799in a backtrace, you can change this behavior: 6800 6801@table @code 6802@item set backtrace past-main 6803@itemx set backtrace past-main on 6804@kindex set backtrace 6805Backtraces will continue past the user entry point. 6806 6807@item set backtrace past-main off 6808Backtraces will stop when they encounter the user entry point. This is the 6809default. 6810 6811@item show backtrace past-main 6812@kindex show backtrace 6813Display the current user entry point backtrace policy. 6814 6815@item set backtrace past-entry 6816@itemx set backtrace past-entry on 6817Backtraces will continue past the internal entry point of an application. 6818This entry point is encoded by the linker when the application is built, 6819and is likely before the user entry point @code{main} (or equivalent) is called. 6820 6821@item set backtrace past-entry off 6822Backtraces will stop when they encounter the internal entry point of an 6823application. This is the default. 6824 6825@item show backtrace past-entry 6826Display the current internal entry point backtrace policy. 6827 6828@item set backtrace limit @var{n} 6829@itemx set backtrace limit 0 6830@itemx set backtrace limit unlimited 6831@cindex backtrace limit 6832Limit the backtrace to @var{n} levels. A value of @code{unlimited} 6833or zero means unlimited levels. 6834 6835@item show backtrace limit 6836Display the current limit on backtrace levels. 6837@end table 6838 6839You can control how file names are displayed. 6840 6841@table @code 6842@item set filename-display 6843@itemx set filename-display relative 6844@cindex filename-display 6845Display file names relative to the compilation directory. This is the default. 6846 6847@item set filename-display basename 6848Display only basename of a filename. 6849 6850@item set filename-display absolute 6851Display an absolute filename. 6852 6853@item show filename-display 6854Show the current way to display filenames. 6855@end table 6856 6857@node Frame Filter Management 6858@section Management of Frame Filters. 6859@cindex managing frame filters 6860 6861Frame filters are Python based utilities to manage and decorate the 6862output of frames. @xref{Frame Filter API}, for further information. 6863 6864Managing frame filters is performed by several commands available 6865within @value{GDBN}, detailed here. 6866 6867@table @code 6868@kindex info frame-filter 6869@item info frame-filter 6870Print a list of installed frame filters from all dictionaries, showing 6871their name, priority and enabled status. 6872 6873@kindex disable frame-filter 6874@anchor{disable frame-filter all} 6875@item disable frame-filter @var{filter-dictionary} @var{filter-name} 6876Disable a frame filter in the dictionary matching 6877@var{filter-dictionary}, or @code{all}, and @var{filter-name}. 6878@var{filter-dictionary} may be @code{all}, @code{global}, 6879@code{progspace} or the name of the object file where the frame filter 6880dictionary resides. When @code{all} is specified, all frame filters 6881across all dictionaries are disabled. @var{filter-name} is the name 6882of the frame filter and is used when @code{all} is not the option for 6883@var{filter-dictionary}. A disabled frame-filter is not deleted, it 6884may be enabled again later. 6885 6886@kindex enable frame-filter 6887@item enable frame-filter @var{filter-dictionary} @var{filter-name} 6888Enable a frame filter in the dictionary matching 6889@var{filter-dictionary}, or @code{all}, and @var{filter-name}. 6890@var{filter-dictionary} may be @code{all}, @code{global}, 6891@code{progspace} or the name of the object file where the frame filter 6892dictionary resides. When @code{all} is specified, all frame filters across 6893all dictionaries are enabled. @var{filter-name} is the name of the frame 6894filter and is used when @code{all} is not the option for 6895@var{filter-dictionary}. 6896 6897Example: 6898 6899@smallexample 6900(gdb) info frame-filter 6901 6902global frame-filters: 6903 Priority Enabled Name 6904 1000 No PrimaryFunctionFilter 6905 100 Yes Reverse 6906 6907progspace /build/test frame-filters: 6908 Priority Enabled Name 6909 100 Yes ProgspaceFilter 6910 6911objfile /build/test frame-filters: 6912 Priority Enabled Name 6913 999 Yes BuildProgra Filter 6914 6915(gdb) disable frame-filter /build/test BuildProgramFilter 6916(gdb) info frame-filter 6917 6918global frame-filters: 6919 Priority Enabled Name 6920 1000 No PrimaryFunctionFilter 6921 100 Yes Reverse 6922 6923progspace /build/test frame-filters: 6924 Priority Enabled Name 6925 100 Yes ProgspaceFilter 6926 6927objfile /build/test frame-filters: 6928 Priority Enabled Name 6929 999 No BuildProgramFilter 6930 6931(gdb) enable frame-filter global PrimaryFunctionFilter 6932(gdb) info frame-filter 6933 6934global frame-filters: 6935 Priority Enabled Name 6936 1000 Yes PrimaryFunctionFilter 6937 100 Yes Reverse 6938 6939progspace /build/test frame-filters: 6940 Priority Enabled Name 6941 100 Yes ProgspaceFilter 6942 6943objfile /build/test frame-filters: 6944 Priority Enabled Name 6945 999 No BuildProgramFilter 6946@end smallexample 6947 6948@kindex set frame-filter priority 6949@item set frame-filter priority @var{filter-dictionary} @var{filter-name} @var{priority} 6950Set the @var{priority} of a frame filter in the dictionary matching 6951@var{filter-dictionary}, and the frame filter name matching 6952@var{filter-name}. @var{filter-dictionary} may be @code{global}, 6953@code{progspace} or the name of the object file where the frame filter 6954dictionary resides. @var{priority} is an integer. 6955 6956@kindex show frame-filter priority 6957@item show frame-filter priority @var{filter-dictionary} @var{filter-name} 6958Show the @var{priority} of a frame filter in the dictionary matching 6959@var{filter-dictionary}, and the frame filter name matching 6960@var{filter-name}. @var{filter-dictionary} may be @code{global}, 6961@code{progspace} or the name of the object file where the frame filter 6962dictionary resides. 6963 6964Example: 6965 6966@smallexample 6967(gdb) info frame-filter 6968 6969global frame-filters: 6970 Priority Enabled Name 6971 1000 Yes PrimaryFunctionFilter 6972 100 Yes Reverse 6973 6974progspace /build/test frame-filters: 6975 Priority Enabled Name 6976 100 Yes ProgspaceFilter 6977 6978objfile /build/test frame-filters: 6979 Priority Enabled Name 6980 999 No BuildProgramFilter 6981 6982(gdb) set frame-filter priority global Reverse 50 6983(gdb) info frame-filter 6984 6985global frame-filters: 6986 Priority Enabled Name 6987 1000 Yes PrimaryFunctionFilter 6988 50 Yes Reverse 6989 6990progspace /build/test frame-filters: 6991 Priority Enabled Name 6992 100 Yes ProgspaceFilter 6993 6994objfile /build/test frame-filters: 6995 Priority Enabled Name 6996 999 No BuildProgramFilter 6997@end smallexample 6998@end table 6999 7000@node Selection 7001@section Selecting a Frame 7002 7003Most commands for examining the stack and other data in your program work on 7004whichever stack frame is selected at the moment. Here are the commands for 7005selecting a stack frame; all of them finish by printing a brief description 7006of the stack frame just selected. 7007 7008@table @code 7009@kindex frame@r{, selecting} 7010@kindex f @r{(@code{frame})} 7011@item frame @var{n} 7012@itemx f @var{n} 7013Select frame number @var{n}. Recall that frame zero is the innermost 7014(currently executing) frame, frame one is the frame that called the 7015innermost one, and so on. The highest-numbered frame is the one for 7016@code{main}. 7017 7018@item frame @var{addr} 7019@itemx f @var{addr} 7020Select the frame at address @var{addr}. This is useful mainly if the 7021chaining of stack frames has been damaged by a bug, making it 7022impossible for @value{GDBN} to assign numbers properly to all frames. In 7023addition, this can be useful when your program has multiple stacks and 7024switches between them. 7025 7026On the SPARC architecture, @code{frame} needs two addresses to 7027select an arbitrary frame: a frame pointer and a stack pointer. 7028 7029On the @acronym{MIPS} and Alpha architecture, it needs two addresses: a stack 7030pointer and a program counter. 7031 7032On the 29k architecture, it needs three addresses: a register stack 7033pointer, a program counter, and a memory stack pointer. 7034 7035@kindex up 7036@item up @var{n} 7037Move @var{n} frames up the stack. For positive numbers @var{n}, this 7038advances toward the outermost frame, to higher frame numbers, to frames 7039that have existed longer. @var{n} defaults to one. 7040 7041@kindex down 7042@kindex do @r{(@code{down})} 7043@item down @var{n} 7044Move @var{n} frames down the stack. For positive numbers @var{n}, this 7045advances toward the innermost frame, to lower frame numbers, to frames 7046that were created more recently. @var{n} defaults to one. You may 7047abbreviate @code{down} as @code{do}. 7048@end table 7049 7050All of these commands end by printing two lines of output describing the 7051frame. The first line shows the frame number, the function name, the 7052arguments, and the source file and line number of execution in that 7053frame. The second line shows the text of that source line. 7054 7055@need 1000 7056For example: 7057 7058@smallexample 7059@group 7060(@value{GDBP}) up 7061#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc) 7062 at env.c:10 706310 read_input_file (argv[i]); 7064@end group 7065@end smallexample 7066 7067After such a printout, the @code{list} command with no arguments 7068prints ten lines centered on the point of execution in the frame. 7069You can also edit the program at the point of execution with your favorite 7070editing program by typing @code{edit}. 7071@xref{List, ,Printing Source Lines}, 7072for details. 7073 7074@table @code 7075@kindex down-silently 7076@kindex up-silently 7077@item up-silently @var{n} 7078@itemx down-silently @var{n} 7079These two commands are variants of @code{up} and @code{down}, 7080respectively; they differ in that they do their work silently, without 7081causing display of the new frame. They are intended primarily for use 7082in @value{GDBN} command scripts, where the output might be unnecessary and 7083distracting. 7084@end table 7085 7086@node Frame Info 7087@section Information About a Frame 7088 7089There are several other commands to print information about the selected 7090stack frame. 7091 7092@table @code 7093@item frame 7094@itemx f 7095When used without any argument, this command does not change which 7096frame is selected, but prints a brief description of the currently 7097selected stack frame. It can be abbreviated @code{f}. With an 7098argument, this command is used to select a stack frame. 7099@xref{Selection, ,Selecting a Frame}. 7100 7101@kindex info frame 7102@kindex info f @r{(@code{info frame})} 7103@item info frame 7104@itemx info f 7105This command prints a verbose description of the selected stack frame, 7106including: 7107 7108@itemize @bullet 7109@item 7110the address of the frame 7111@item 7112the address of the next frame down (called by this frame) 7113@item 7114the address of the next frame up (caller of this frame) 7115@item 7116the language in which the source code corresponding to this frame is written 7117@item 7118the address of the frame's arguments 7119@item 7120the address of the frame's local variables 7121@item 7122the program counter saved in it (the address of execution in the caller frame) 7123@item 7124which registers were saved in the frame 7125@end itemize 7126 7127@noindent The verbose description is useful when 7128something has gone wrong that has made the stack format fail to fit 7129the usual conventions. 7130 7131@item info frame @var{addr} 7132@itemx info f @var{addr} 7133Print a verbose description of the frame at address @var{addr}, without 7134selecting that frame. The selected frame remains unchanged by this 7135command. This requires the same kind of address (more than one for some 7136architectures) that you specify in the @code{frame} command. 7137@xref{Selection, ,Selecting a Frame}. 7138 7139@kindex info args 7140@item info args 7141Print the arguments of the selected frame, each on a separate line. 7142 7143@item info locals 7144@kindex info locals 7145Print the local variables of the selected frame, each on a separate 7146line. These are all variables (declared either static or automatic) 7147accessible at the point of execution of the selected frame. 7148 7149@end table 7150 7151 7152@node Source 7153@chapter Examining Source Files 7154 7155@value{GDBN} can print parts of your program's source, since the debugging 7156information recorded in the program tells @value{GDBN} what source files were 7157used to build it. When your program stops, @value{GDBN} spontaneously prints 7158the line where it stopped. Likewise, when you select a stack frame 7159(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where 7160execution in that frame has stopped. You can print other portions of 7161source files by explicit command. 7162 7163If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may 7164prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using 7165@value{GDBN} under @sc{gnu} Emacs}. 7166 7167@menu 7168* List:: Printing source lines 7169* Specify Location:: How to specify code locations 7170* Edit:: Editing source files 7171* Search:: Searching source files 7172* Source Path:: Specifying source directories 7173* Machine Code:: Source and machine code 7174@end menu 7175 7176@node List 7177@section Printing Source Lines 7178 7179@kindex list 7180@kindex l @r{(@code{list})} 7181To print lines from a source file, use the @code{list} command 7182(abbreviated @code{l}). By default, ten lines are printed. 7183There are several ways to specify what part of the file you want to 7184print; see @ref{Specify Location}, for the full list. 7185 7186Here are the forms of the @code{list} command most commonly used: 7187 7188@table @code 7189@item list @var{linenum} 7190Print lines centered around line number @var{linenum} in the 7191current source file. 7192 7193@item list @var{function} 7194Print lines centered around the beginning of function 7195@var{function}. 7196 7197@item list 7198Print more lines. If the last lines printed were printed with a 7199@code{list} command, this prints lines following the last lines 7200printed; however, if the last line printed was a solitary line printed 7201as part of displaying a stack frame (@pxref{Stack, ,Examining the 7202Stack}), this prints lines centered around that line. 7203 7204@item list - 7205Print lines just before the lines last printed. 7206@end table 7207 7208@cindex @code{list}, how many lines to display 7209By default, @value{GDBN} prints ten source lines with any of these forms of 7210the @code{list} command. You can change this using @code{set listsize}: 7211 7212@table @code 7213@kindex set listsize 7214@item set listsize @var{count} 7215@itemx set listsize unlimited 7216Make the @code{list} command display @var{count} source lines (unless 7217the @code{list} argument explicitly specifies some other number). 7218Setting @var{count} to @code{unlimited} or 0 means there's no limit. 7219 7220@kindex show listsize 7221@item show listsize 7222Display the number of lines that @code{list} prints. 7223@end table 7224 7225Repeating a @code{list} command with @key{RET} discards the argument, 7226so it is equivalent to typing just @code{list}. This is more useful 7227than listing the same lines again. An exception is made for an 7228argument of @samp{-}; that argument is preserved in repetition so that 7229each repetition moves up in the source file. 7230 7231In general, the @code{list} command expects you to supply zero, one or two 7232@dfn{linespecs}. Linespecs specify source lines; there are several ways 7233of writing them (@pxref{Specify Location}), but the effect is always 7234to specify some source line. 7235 7236Here is a complete description of the possible arguments for @code{list}: 7237 7238@table @code 7239@item list @var{linespec} 7240Print lines centered around the line specified by @var{linespec}. 7241 7242@item list @var{first},@var{last} 7243Print lines from @var{first} to @var{last}. Both arguments are 7244linespecs. When a @code{list} command has two linespecs, and the 7245source file of the second linespec is omitted, this refers to 7246the same source file as the first linespec. 7247 7248@item list ,@var{last} 7249Print lines ending with @var{last}. 7250 7251@item list @var{first}, 7252Print lines starting with @var{first}. 7253 7254@item list + 7255Print lines just after the lines last printed. 7256 7257@item list - 7258Print lines just before the lines last printed. 7259 7260@item list 7261As described in the preceding table. 7262@end table 7263 7264@node Specify Location 7265@section Specifying a Location 7266@cindex specifying location 7267@cindex linespec 7268 7269Several @value{GDBN} commands accept arguments that specify a location 7270of your program's code. Since @value{GDBN} is a source-level 7271debugger, a location usually specifies some line in the source code; 7272for that reason, locations are also known as @dfn{linespecs}. 7273 7274Here are all the different ways of specifying a code location that 7275@value{GDBN} understands: 7276 7277@table @code 7278@item @var{linenum} 7279Specifies the line number @var{linenum} of the current source file. 7280 7281@item -@var{offset} 7282@itemx +@var{offset} 7283Specifies the line @var{offset} lines before or after the @dfn{current 7284line}. For the @code{list} command, the current line is the last one 7285printed; for the breakpoint commands, this is the line at which 7286execution stopped in the currently selected @dfn{stack frame} 7287(@pxref{Frames, ,Frames}, for a description of stack frames.) When 7288used as the second of the two linespecs in a @code{list} command, 7289this specifies the line @var{offset} lines up or down from the first 7290linespec. 7291 7292@item @var{filename}:@var{linenum} 7293Specifies the line @var{linenum} in the source file @var{filename}. 7294If @var{filename} is a relative file name, then it will match any 7295source file name with the same trailing components. For example, if 7296@var{filename} is @samp{gcc/expr.c}, then it will match source file 7297name of @file{/build/trunk/gcc/expr.c}, but not 7298@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}. 7299 7300@item @var{function} 7301Specifies the line that begins the body of the function @var{function}. 7302For example, in C, this is the line with the open brace. 7303 7304@item @var{function}:@var{label} 7305Specifies the line where @var{label} appears in @var{function}. 7306 7307@item @var{filename}:@var{function} 7308Specifies the line that begins the body of the function @var{function} 7309in the file @var{filename}. You only need the file name with a 7310function name to avoid ambiguity when there are identically named 7311functions in different source files. 7312 7313@item @var{label} 7314Specifies the line at which the label named @var{label} appears. 7315@value{GDBN} searches for the label in the function corresponding to 7316the currently selected stack frame. If there is no current selected 7317stack frame (for instance, if the inferior is not running), then 7318@value{GDBN} will not search for a label. 7319 7320@item *@var{address} 7321Specifies the program address @var{address}. For line-oriented 7322commands, such as @code{list} and @code{edit}, this specifies a source 7323line that contains @var{address}. For @code{break} and other 7324breakpoint oriented commands, this can be used to set breakpoints in 7325parts of your program which do not have debugging information or 7326source files. 7327 7328Here @var{address} may be any expression valid in the current working 7329language (@pxref{Languages, working language}) that specifies a code 7330address. In addition, as a convenience, @value{GDBN} extends the 7331semantics of expressions used in locations to cover the situations 7332that frequently happen during debugging. Here are the various forms 7333of @var{address}: 7334 7335@table @code 7336@item @var{expression} 7337Any expression valid in the current working language. 7338 7339@item @var{funcaddr} 7340An address of a function or procedure derived from its name. In C, 7341C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is 7342simply the function's name @var{function} (and actually a special case 7343of a valid expression). In Pascal and Modula-2, this is 7344@code{&@var{function}}. In Ada, this is @code{@var{function}'Address} 7345(although the Pascal form also works). 7346 7347This form specifies the address of the function's first instruction, 7348before the stack frame and arguments have been set up. 7349 7350@item '@var{filename}'::@var{funcaddr} 7351Like @var{funcaddr} above, but also specifies the name of the source 7352file explicitly. This is useful if the name of the function does not 7353specify the function unambiguously, e.g., if there are several 7354functions with identical names in different source files. 7355@end table 7356 7357@cindex breakpoint at static probe point 7358@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name} 7359The @sc{gnu}/Linux tool @code{SystemTap} provides a way for 7360applications to embed static probes. @xref{Static Probe Points}, for more 7361information on finding and using static probes. This form of linespec 7362specifies the location of such a static probe. 7363 7364If @var{objfile} is given, only probes coming from that shared library 7365or executable matching @var{objfile} as a regular expression are considered. 7366If @var{provider} is given, then only probes from that provider are considered. 7367If several probes match the spec, @value{GDBN} will insert a breakpoint at 7368each one of those probes. 7369 7370@end table 7371 7372 7373@node Edit 7374@section Editing Source Files 7375@cindex editing source files 7376 7377@kindex edit 7378@kindex e @r{(@code{edit})} 7379To edit the lines in a source file, use the @code{edit} command. 7380The editing program of your choice 7381is invoked with the current line set to 7382the active line in the program. 7383Alternatively, there are several ways to specify what part of the file you 7384want to print if you want to see other parts of the program: 7385 7386@table @code 7387@item edit @var{location} 7388Edit the source file specified by @code{location}. Editing starts at 7389that @var{location}, e.g., at the specified source line of the 7390specified file. @xref{Specify Location}, for all the possible forms 7391of the @var{location} argument; here are the forms of the @code{edit} 7392command most commonly used: 7393 7394@table @code 7395@item edit @var{number} 7396Edit the current source file with @var{number} as the active line number. 7397 7398@item edit @var{function} 7399Edit the file containing @var{function} at the beginning of its definition. 7400@end table 7401 7402@end table 7403 7404@subsection Choosing your Editor 7405You can customize @value{GDBN} to use any editor you want 7406@footnote{ 7407The only restriction is that your editor (say @code{ex}), recognizes the 7408following command-line syntax: 7409@smallexample 7410ex +@var{number} file 7411@end smallexample 7412The optional numeric value +@var{number} specifies the number of the line in 7413the file where to start editing.}. 7414By default, it is @file{@value{EDITOR}}, but you can change this 7415by setting the environment variable @code{EDITOR} before using 7416@value{GDBN}. For example, to configure @value{GDBN} to use the 7417@code{vi} editor, you could use these commands with the @code{sh} shell: 7418@smallexample 7419EDITOR=/usr/bin/vi 7420export EDITOR 7421gdb @dots{} 7422@end smallexample 7423or in the @code{csh} shell, 7424@smallexample 7425setenv EDITOR /usr/bin/vi 7426gdb @dots{} 7427@end smallexample 7428 7429@node Search 7430@section Searching Source Files 7431@cindex searching source files 7432 7433There are two commands for searching through the current source file for a 7434regular expression. 7435 7436@table @code 7437@kindex search 7438@kindex forward-search 7439@kindex fo @r{(@code{forward-search})} 7440@item forward-search @var{regexp} 7441@itemx search @var{regexp} 7442The command @samp{forward-search @var{regexp}} checks each line, 7443starting with the one following the last line listed, for a match for 7444@var{regexp}. It lists the line that is found. You can use the 7445synonym @samp{search @var{regexp}} or abbreviate the command name as 7446@code{fo}. 7447 7448@kindex reverse-search 7449@item reverse-search @var{regexp} 7450The command @samp{reverse-search @var{regexp}} checks each line, starting 7451with the one before the last line listed and going backward, for a match 7452for @var{regexp}. It lists the line that is found. You can abbreviate 7453this command as @code{rev}. 7454@end table 7455 7456@node Source Path 7457@section Specifying Source Directories 7458 7459@cindex source path 7460@cindex directories for source files 7461Executable programs sometimes do not record the directories of the source 7462files from which they were compiled, just the names. Even when they do, 7463the directories could be moved between the compilation and your debugging 7464session. @value{GDBN} has a list of directories to search for source files; 7465this is called the @dfn{source path}. Each time @value{GDBN} wants a source file, 7466it tries all the directories in the list, in the order they are present 7467in the list, until it finds a file with the desired name. 7468 7469For example, suppose an executable references the file 7470@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is 7471@file{/mnt/cross}. The file is first looked up literally; if this 7472fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this 7473fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error 7474message is printed. @value{GDBN} does not look up the parts of the 7475source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}. 7476Likewise, the subdirectories of the source path are not searched: if 7477the source path is @file{/mnt/cross}, and the binary refers to 7478@file{foo.c}, @value{GDBN} would not find it under 7479@file{/mnt/cross/usr/src/foo-1.0/lib}. 7480 7481Plain file names, relative file names with leading directories, file 7482names containing dots, etc.@: are all treated as described above; for 7483instance, if the source path is @file{/mnt/cross}, and the source file 7484is recorded as @file{../lib/foo.c}, @value{GDBN} would first try 7485@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after 7486that---@file{/mnt/cross/foo.c}. 7487 7488Note that the executable search path is @emph{not} used to locate the 7489source files. 7490 7491Whenever you reset or rearrange the source path, @value{GDBN} clears out 7492any information it has cached about where source files are found and where 7493each line is in the file. 7494 7495@kindex directory 7496@kindex dir 7497When you start @value{GDBN}, its source path includes only @samp{cdir} 7498and @samp{cwd}, in that order. 7499To add other directories, use the @code{directory} command. 7500 7501The search path is used to find both program source files and @value{GDBN} 7502script files (read using the @samp{-command} option and @samp{source} command). 7503 7504In addition to the source path, @value{GDBN} provides a set of commands 7505that manage a list of source path substitution rules. A @dfn{substitution 7506rule} specifies how to rewrite source directories stored in the program's 7507debug information in case the sources were moved to a different 7508directory between compilation and debugging. A rule is made of 7509two strings, the first specifying what needs to be rewritten in 7510the path, and the second specifying how it should be rewritten. 7511In @ref{set substitute-path}, we name these two parts @var{from} and 7512@var{to} respectively. @value{GDBN} does a simple string replacement 7513of @var{from} with @var{to} at the start of the directory part of the 7514source file name, and uses that result instead of the original file 7515name to look up the sources. 7516 7517Using the previous example, suppose the @file{foo-1.0} tree has been 7518moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell 7519@value{GDBN} to replace @file{/usr/src} in all source path names with 7520@file{/mnt/cross}. The first lookup will then be 7521@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location 7522of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path 7523substitution rule, use the @code{set substitute-path} command 7524(@pxref{set substitute-path}). 7525 7526To avoid unexpected substitution results, a rule is applied only if the 7527@var{from} part of the directory name ends at a directory separator. 7528For instance, a rule substituting @file{/usr/source} into 7529@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but 7530not to @file{/usr/sourceware/foo-2.0}. And because the substitution 7531is applied only at the beginning of the directory name, this rule will 7532not be applied to @file{/root/usr/source/baz.c} either. 7533 7534In many cases, you can achieve the same result using the @code{directory} 7535command. However, @code{set substitute-path} can be more efficient in 7536the case where the sources are organized in a complex tree with multiple 7537subdirectories. With the @code{directory} command, you need to add each 7538subdirectory of your project. If you moved the entire tree while 7539preserving its internal organization, then @code{set substitute-path} 7540allows you to direct the debugger to all the sources with one single 7541command. 7542 7543@code{set substitute-path} is also more than just a shortcut command. 7544The source path is only used if the file at the original location no 7545longer exists. On the other hand, @code{set substitute-path} modifies 7546the debugger behavior to look at the rewritten location instead. So, if 7547for any reason a source file that is not relevant to your executable is 7548located at the original location, a substitution rule is the only 7549method available to point @value{GDBN} at the new location. 7550 7551@cindex @samp{--with-relocated-sources} 7552@cindex default source path substitution 7553You can configure a default source path substitution rule by 7554configuring @value{GDBN} with the 7555@samp{--with-relocated-sources=@var{dir}} option. The @var{dir} 7556should be the name of a directory under @value{GDBN}'s configured 7557prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and 7558directory names in debug information under @var{dir} will be adjusted 7559automatically if the installed @value{GDBN} is moved to a new 7560location. This is useful if @value{GDBN}, libraries or executables 7561with debug information and corresponding source code are being moved 7562together. 7563 7564@table @code 7565@item directory @var{dirname} @dots{} 7566@item dir @var{dirname} @dots{} 7567Add directory @var{dirname} to the front of the source path. Several 7568directory names may be given to this command, separated by @samp{:} 7569(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as 7570part of absolute file names) or 7571whitespace. You may specify a directory that is already in the source 7572path; this moves it forward, so @value{GDBN} searches it sooner. 7573 7574@kindex cdir 7575@kindex cwd 7576@vindex $cdir@r{, convenience variable} 7577@vindex $cwd@r{, convenience variable} 7578@cindex compilation directory 7579@cindex current directory 7580@cindex working directory 7581@cindex directory, current 7582@cindex directory, compilation 7583You can use the string @samp{$cdir} to refer to the compilation 7584directory (if one is recorded), and @samp{$cwd} to refer to the current 7585working directory. @samp{$cwd} is not the same as @samp{.}---the former 7586tracks the current working directory as it changes during your @value{GDBN} 7587session, while the latter is immediately expanded to the current 7588directory at the time you add an entry to the source path. 7589 7590@item directory 7591Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation. 7592 7593@c RET-repeat for @code{directory} is explicitly disabled, but since 7594@c repeating it would be a no-op we do not say that. (thanks to RMS) 7595 7596@item set directories @var{path-list} 7597@kindex set directories 7598Set the source path to @var{path-list}. 7599@samp{$cdir:$cwd} are added if missing. 7600 7601@item show directories 7602@kindex show directories 7603Print the source path: show which directories it contains. 7604 7605@anchor{set substitute-path} 7606@item set substitute-path @var{from} @var{to} 7607@kindex set substitute-path 7608Define a source path substitution rule, and add it at the end of the 7609current list of existing substitution rules. If a rule with the same 7610@var{from} was already defined, then the old rule is also deleted. 7611 7612For example, if the file @file{/foo/bar/baz.c} was moved to 7613@file{/mnt/cross/baz.c}, then the command 7614 7615@smallexample 7616(@value{GDBP}) set substitute-path /usr/src /mnt/cross 7617@end smallexample 7618 7619@noindent 7620will tell @value{GDBN} to replace @samp{/usr/src} with 7621@samp{/mnt/cross}, which will allow @value{GDBN} to find the file 7622@file{baz.c} even though it was moved. 7623 7624In the case when more than one substitution rule have been defined, 7625the rules are evaluated one by one in the order where they have been 7626defined. The first one matching, if any, is selected to perform 7627the substitution. 7628 7629For instance, if we had entered the following commands: 7630 7631@smallexample 7632(@value{GDBP}) set substitute-path /usr/src/include /mnt/include 7633(@value{GDBP}) set substitute-path /usr/src /mnt/src 7634@end smallexample 7635 7636@noindent 7637@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into 7638@file{/mnt/include/defs.h} by using the first rule. However, it would 7639use the second rule to rewrite @file{/usr/src/lib/foo.c} into 7640@file{/mnt/src/lib/foo.c}. 7641 7642 7643@item unset substitute-path [path] 7644@kindex unset substitute-path 7645If a path is specified, search the current list of substitution rules 7646for a rule that would rewrite that path. Delete that rule if found. 7647A warning is emitted by the debugger if no rule could be found. 7648 7649If no path is specified, then all substitution rules are deleted. 7650 7651@item show substitute-path [path] 7652@kindex show substitute-path 7653If a path is specified, then print the source path substitution rule 7654which would rewrite that path, if any. 7655 7656If no path is specified, then print all existing source path substitution 7657rules. 7658 7659@end table 7660 7661If your source path is cluttered with directories that are no longer of 7662interest, @value{GDBN} may sometimes cause confusion by finding the wrong 7663versions of source. You can correct the situation as follows: 7664 7665@enumerate 7666@item 7667Use @code{directory} with no argument to reset the source path to its default value. 7668 7669@item 7670Use @code{directory} with suitable arguments to reinstall the 7671directories you want in the source path. You can add all the 7672directories in one command. 7673@end enumerate 7674 7675@node Machine Code 7676@section Source and Machine Code 7677@cindex source line and its code address 7678 7679You can use the command @code{info line} to map source lines to program 7680addresses (and vice versa), and the command @code{disassemble} to display 7681a range of addresses as machine instructions. You can use the command 7682@code{set disassemble-next-line} to set whether to disassemble next 7683source line when execution stops. When run under @sc{gnu} Emacs 7684mode, the @code{info line} command causes the arrow to point to the 7685line specified. Also, @code{info line} prints addresses in symbolic form as 7686well as hex. 7687 7688@table @code 7689@kindex info line 7690@item info line @var{linespec} 7691Print the starting and ending addresses of the compiled code for 7692source line @var{linespec}. You can specify source lines in any of 7693the ways documented in @ref{Specify Location}. 7694@end table 7695 7696For example, we can use @code{info line} to discover the location of 7697the object code for the first line of function 7698@code{m4_changequote}: 7699 7700@c FIXME: I think this example should also show the addresses in 7701@c symbolic form, as they usually would be displayed. 7702@smallexample 7703(@value{GDBP}) info line m4_changequote 7704Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350. 7705@end smallexample 7706 7707@noindent 7708@cindex code address and its source line 7709We can also inquire (using @code{*@var{addr}} as the form for 7710@var{linespec}) what source line covers a particular address: 7711@smallexample 7712(@value{GDBP}) info line *0x63ff 7713Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404. 7714@end smallexample 7715 7716@cindex @code{$_} and @code{info line} 7717@cindex @code{x} command, default address 7718@kindex x@r{(examine), and} info line 7719After @code{info line}, the default address for the @code{x} command 7720is changed to the starting address of the line, so that @samp{x/i} is 7721sufficient to begin examining the machine code (@pxref{Memory, 7722,Examining Memory}). Also, this address is saved as the value of the 7723convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience 7724Variables}). 7725 7726@table @code 7727@kindex disassemble 7728@cindex assembly instructions 7729@cindex instructions, assembly 7730@cindex machine instructions 7731@cindex listing machine instructions 7732@item disassemble 7733@itemx disassemble /m 7734@itemx disassemble /r 7735This specialized command dumps a range of memory as machine 7736instructions. It can also print mixed source+disassembly by specifying 7737the @code{/m} modifier and print the raw instructions in hex as well as 7738in symbolic form by specifying the @code{/r}. 7739The default memory range is the function surrounding the 7740program counter of the selected frame. A single argument to this 7741command is a program counter value; @value{GDBN} dumps the function 7742surrounding this value. When two arguments are given, they should 7743be separated by a comma, possibly surrounded by whitespace. The 7744arguments specify a range of addresses to dump, in one of two forms: 7745 7746@table @code 7747@item @var{start},@var{end} 7748the addresses from @var{start} (inclusive) to @var{end} (exclusive) 7749@item @var{start},+@var{length} 7750the addresses from @var{start} (inclusive) to 7751@code{@var{start}+@var{length}} (exclusive). 7752@end table 7753 7754@noindent 7755When 2 arguments are specified, the name of the function is also 7756printed (since there could be several functions in the given range). 7757 7758The argument(s) can be any expression yielding a numeric value, such as 7759@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}. 7760 7761If the range of memory being disassembled contains current program counter, 7762the instruction at that location is shown with a @code{=>} marker. 7763@end table 7764 7765The following example shows the disassembly of a range of addresses of 7766HP PA-RISC 2.0 code: 7767 7768@smallexample 7769(@value{GDBP}) disas 0x32c4, 0x32e4 7770Dump of assembler code from 0x32c4 to 0x32e4: 7771 0x32c4 <main+204>: addil 0,dp 7772 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26 7773 0x32cc <main+212>: ldil 0x3000,r31 7774 0x32d0 <main+216>: ble 0x3f8(sr4,r31) 7775 0x32d4 <main+220>: ldo 0(r31),rp 7776 0x32d8 <main+224>: addil -0x800,dp 7777 0x32dc <main+228>: ldo 0x588(r1),r26 7778 0x32e0 <main+232>: ldil 0x3000,r31 7779End of assembler dump. 7780@end smallexample 7781 7782Here is an example showing mixed source+assembly for Intel x86, when the 7783program is stopped just after function prologue: 7784 7785@smallexample 7786(@value{GDBP}) disas /m main 7787Dump of assembler code for function main: 77885 @{ 7789 0x08048330 <+0>: push %ebp 7790 0x08048331 <+1>: mov %esp,%ebp 7791 0x08048333 <+3>: sub $0x8,%esp 7792 0x08048336 <+6>: and $0xfffffff0,%esp 7793 0x08048339 <+9>: sub $0x10,%esp 7794 77956 printf ("Hello.\n"); 7796=> 0x0804833c <+12>: movl $0x8048440,(%esp) 7797 0x08048343 <+19>: call 0x8048284 <puts@@plt> 7798 77997 return 0; 78008 @} 7801 0x08048348 <+24>: mov $0x0,%eax 7802 0x0804834d <+29>: leave 7803 0x0804834e <+30>: ret 7804 7805End of assembler dump. 7806@end smallexample 7807 7808Here is another example showing raw instructions in hex for AMD x86-64, 7809 7810@smallexample 7811(gdb) disas /r 0x400281,+10 7812Dump of assembler code from 0x400281 to 0x40028b: 7813 0x0000000000400281: 38 36 cmp %dh,(%rsi) 7814 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax 7815 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx) 7816 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al 7817End of assembler dump. 7818@end smallexample 7819 7820Addresses cannot be specified as a linespec (@pxref{Specify Location}). 7821So, for example, if you want to disassemble function @code{bar} 7822in file @file{foo.c}, you must type @samp{disassemble 'foo.c'::bar} 7823and not @samp{disassemble foo.c:bar}. 7824 7825Some architectures have more than one commonly-used set of instruction 7826mnemonics or other syntax. 7827 7828For programs that were dynamically linked and use shared libraries, 7829instructions that call functions or branch to locations in the shared 7830libraries might show a seemingly bogus location---it's actually a 7831location of the relocation table. On some architectures, @value{GDBN} 7832might be able to resolve these to actual function names. 7833 7834@table @code 7835@kindex set disassembly-flavor 7836@cindex Intel disassembly flavor 7837@cindex AT&T disassembly flavor 7838@item set disassembly-flavor @var{instruction-set} 7839Select the instruction set to use when disassembling the 7840program via the @code{disassemble} or @code{x/i} commands. 7841 7842Currently this command is only defined for the Intel x86 family. You 7843can set @var{instruction-set} to either @code{intel} or @code{att}. 7844The default is @code{att}, the AT&T flavor used by default by Unix 7845assemblers for x86-based targets. 7846 7847@kindex show disassembly-flavor 7848@item show disassembly-flavor 7849Show the current setting of the disassembly flavor. 7850@end table 7851 7852@table @code 7853@kindex set disassemble-next-line 7854@kindex show disassemble-next-line 7855@item set disassemble-next-line 7856@itemx show disassemble-next-line 7857Control whether or not @value{GDBN} will disassemble the next source 7858line or instruction when execution stops. If ON, @value{GDBN} will 7859display disassembly of the next source line when execution of the 7860program being debugged stops. This is @emph{in addition} to 7861displaying the source line itself, which @value{GDBN} always does if 7862possible. If the next source line cannot be displayed for some reason 7863(e.g., if @value{GDBN} cannot find the source file, or there's no line 7864info in the debug info), @value{GDBN} will display disassembly of the 7865next @emph{instruction} instead of showing the next source line. If 7866AUTO, @value{GDBN} will display disassembly of next instruction only 7867if the source line cannot be displayed. This setting causes 7868@value{GDBN} to display some feedback when you step through a function 7869with no line info or whose source file is unavailable. The default is 7870OFF, which means never display the disassembly of the next line or 7871instruction. 7872@end table 7873 7874 7875@node Data 7876@chapter Examining Data 7877 7878@cindex printing data 7879@cindex examining data 7880@kindex print 7881@kindex inspect 7882The usual way to examine data in your program is with the @code{print} 7883command (abbreviated @code{p}), or its synonym @code{inspect}. It 7884evaluates and prints the value of an expression of the language your 7885program is written in (@pxref{Languages, ,Using @value{GDBN} with 7886Different Languages}). It may also print the expression using a 7887Python-based pretty-printer (@pxref{Pretty Printing}). 7888 7889@table @code 7890@item print @var{expr} 7891@itemx print /@var{f} @var{expr} 7892@var{expr} is an expression (in the source language). By default the 7893value of @var{expr} is printed in a format appropriate to its data type; 7894you can choose a different format by specifying @samp{/@var{f}}, where 7895@var{f} is a letter specifying the format; see @ref{Output Formats,,Output 7896Formats}. 7897 7898@item print 7899@itemx print /@var{f} 7900@cindex reprint the last value 7901If you omit @var{expr}, @value{GDBN} displays the last value again (from the 7902@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to 7903conveniently inspect the same value in an alternative format. 7904@end table 7905 7906A more low-level way of examining data is with the @code{x} command. 7907It examines data in memory at a specified address and prints it in a 7908specified format. @xref{Memory, ,Examining Memory}. 7909 7910If you are interested in information about types, or about how the 7911fields of a struct or a class are declared, use the @code{ptype @var{exp}} 7912command rather than @code{print}. @xref{Symbols, ,Examining the Symbol 7913Table}. 7914 7915@cindex exploring hierarchical data structures 7916@kindex explore 7917Another way of examining values of expressions and type information is 7918through the Python extension command @code{explore} (available only if 7919the @value{GDBN} build is configured with @code{--with-python}). It 7920offers an interactive way to start at the highest level (or, the most 7921abstract level) of the data type of an expression (or, the data type 7922itself) and explore all the way down to leaf scalar values/fields 7923embedded in the higher level data types. 7924 7925@table @code 7926@item explore @var{arg} 7927@var{arg} is either an expression (in the source language), or a type 7928visible in the current context of the program being debugged. 7929@end table 7930 7931The working of the @code{explore} command can be illustrated with an 7932example. If a data type @code{struct ComplexStruct} is defined in your 7933C program as 7934 7935@smallexample 7936struct SimpleStruct 7937@{ 7938 int i; 7939 double d; 7940@}; 7941 7942struct ComplexStruct 7943@{ 7944 struct SimpleStruct *ss_p; 7945 int arr[10]; 7946@}; 7947@end smallexample 7948 7949@noindent 7950followed by variable declarations as 7951 7952@smallexample 7953struct SimpleStruct ss = @{ 10, 1.11 @}; 7954struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @}; 7955@end smallexample 7956 7957@noindent 7958then, the value of the variable @code{cs} can be explored using the 7959@code{explore} command as follows. 7960 7961@smallexample 7962(gdb) explore cs 7963The value of `cs' is a struct/class of type `struct ComplexStruct' with 7964the following fields: 7965 7966 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'> 7967 arr = <Enter 1 to explore this field of type `int [10]'> 7968 7969Enter the field number of choice: 7970@end smallexample 7971 7972@noindent 7973Since the fields of @code{cs} are not scalar values, you are being 7974prompted to chose the field you want to explore. Let's say you choose 7975the field @code{ss_p} by entering @code{0}. Then, since this field is a 7976pointer, you will be asked if it is pointing to a single value. From 7977the declaration of @code{cs} above, it is indeed pointing to a single 7978value, hence you enter @code{y}. If you enter @code{n}, then you will 7979be asked if it were pointing to an array of values, in which case this 7980field will be explored as if it were an array. 7981 7982@smallexample 7983`cs.ss_p' is a pointer to a value of type `struct SimpleStruct' 7984Continue exploring it as a pointer to a single value [y/n]: y 7985The value of `*(cs.ss_p)' is a struct/class of type `struct 7986SimpleStruct' with the following fields: 7987 7988 i = 10 .. (Value of type `int') 7989 d = 1.1100000000000001 .. (Value of type `double') 7990 7991Press enter to return to parent value: 7992@end smallexample 7993 7994@noindent 7995If the field @code{arr} of @code{cs} was chosen for exploration by 7996entering @code{1} earlier, then since it is as array, you will be 7997prompted to enter the index of the element in the array that you want 7998to explore. 7999 8000@smallexample 8001`cs.arr' is an array of `int'. 8002Enter the index of the element you want to explore in `cs.arr': 5 8003 8004`(cs.arr)[5]' is a scalar value of type `int'. 8005 8006(cs.arr)[5] = 4 8007 8008Press enter to return to parent value: 8009@end smallexample 8010 8011In general, at any stage of exploration, you can go deeper towards the 8012leaf values by responding to the prompts appropriately, or hit the 8013return key to return to the enclosing data structure (the @i{higher} 8014level data structure). 8015 8016Similar to exploring values, you can use the @code{explore} command to 8017explore types. Instead of specifying a value (which is typically a 8018variable name or an expression valid in the current context of the 8019program being debugged), you specify a type name. If you consider the 8020same example as above, your can explore the type 8021@code{struct ComplexStruct} by passing the argument 8022@code{struct ComplexStruct} to the @code{explore} command. 8023 8024@smallexample 8025(gdb) explore struct ComplexStruct 8026@end smallexample 8027 8028@noindent 8029By responding to the prompts appropriately in the subsequent interactive 8030session, you can explore the type @code{struct ComplexStruct} in a 8031manner similar to how the value @code{cs} was explored in the above 8032example. 8033 8034The @code{explore} command also has two sub-commands, 8035@code{explore value} and @code{explore type}. The former sub-command is 8036a way to explicitly specify that value exploration of the argument is 8037being invoked, while the latter is a way to explicitly specify that type 8038exploration of the argument is being invoked. 8039 8040@table @code 8041@item explore value @var{expr} 8042@cindex explore value 8043This sub-command of @code{explore} explores the value of the 8044expression @var{expr} (if @var{expr} is an expression valid in the 8045current context of the program being debugged). The behavior of this 8046command is identical to that of the behavior of the @code{explore} 8047command being passed the argument @var{expr}. 8048 8049@item explore type @var{arg} 8050@cindex explore type 8051This sub-command of @code{explore} explores the type of @var{arg} (if 8052@var{arg} is a type visible in the current context of program being 8053debugged), or the type of the value/expression @var{arg} (if @var{arg} 8054is an expression valid in the current context of the program being 8055debugged). If @var{arg} is a type, then the behavior of this command is 8056identical to that of the @code{explore} command being passed the 8057argument @var{arg}. If @var{arg} is an expression, then the behavior of 8058this command will be identical to that of the @code{explore} command 8059being passed the type of @var{arg} as the argument. 8060@end table 8061 8062@menu 8063* Expressions:: Expressions 8064* Ambiguous Expressions:: Ambiguous Expressions 8065* Variables:: Program variables 8066* Arrays:: Artificial arrays 8067* Output Formats:: Output formats 8068* Memory:: Examining memory 8069* Auto Display:: Automatic display 8070* Print Settings:: Print settings 8071* Pretty Printing:: Python pretty printing 8072* Value History:: Value history 8073* Convenience Vars:: Convenience variables 8074* Convenience Funs:: Convenience functions 8075* Registers:: Registers 8076* Floating Point Hardware:: Floating point hardware 8077* Vector Unit:: Vector Unit 8078* OS Information:: Auxiliary data provided by operating system 8079* Memory Region Attributes:: Memory region attributes 8080* Dump/Restore Files:: Copy between memory and a file 8081* Core File Generation:: Cause a program dump its core 8082* Character Sets:: Debugging programs that use a different 8083 character set than GDB does 8084* Caching Target Data:: Data caching for targets 8085* Searching Memory:: Searching memory for a sequence of bytes 8086@end menu 8087 8088@node Expressions 8089@section Expressions 8090 8091@cindex expressions 8092@code{print} and many other @value{GDBN} commands accept an expression and 8093compute its value. Any kind of constant, variable or operator defined 8094by the programming language you are using is valid in an expression in 8095@value{GDBN}. This includes conditional expressions, function calls, 8096casts, and string constants. It also includes preprocessor macros, if 8097you compiled your program to include this information; see 8098@ref{Compilation}. 8099 8100@cindex arrays in expressions 8101@value{GDBN} supports array constants in expressions input by 8102the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example, 8103you can use the command @code{print @{1, 2, 3@}} to create an array 8104of three integers. If you pass an array to a function or assign it 8105to a program variable, @value{GDBN} copies the array to memory that 8106is @code{malloc}ed in the target program. 8107 8108Because C is so widespread, most of the expressions shown in examples in 8109this manual are in C. @xref{Languages, , Using @value{GDBN} with Different 8110Languages}, for information on how to use expressions in other 8111languages. 8112 8113In this section, we discuss operators that you can use in @value{GDBN} 8114expressions regardless of your programming language. 8115 8116@cindex casts, in expressions 8117Casts are supported in all languages, not just in C, because it is so 8118useful to cast a number into a pointer in order to examine a structure 8119at that address in memory. 8120@c FIXME: casts supported---Mod2 true? 8121 8122@value{GDBN} supports these operators, in addition to those common 8123to programming languages: 8124 8125@table @code 8126@item @@ 8127@samp{@@} is a binary operator for treating parts of memory as arrays. 8128@xref{Arrays, ,Artificial Arrays}, for more information. 8129 8130@item :: 8131@samp{::} allows you to specify a variable in terms of the file or 8132function where it is defined. @xref{Variables, ,Program Variables}. 8133 8134@cindex @{@var{type}@} 8135@cindex type casting memory 8136@cindex memory, viewing as typed object 8137@cindex casts, to view memory 8138@item @{@var{type}@} @var{addr} 8139Refers to an object of type @var{type} stored at address @var{addr} in 8140memory. @var{addr} may be any expression whose value is an integer or 8141pointer (but parentheses are required around binary operators, just as in 8142a cast). This construct is allowed regardless of what kind of data is 8143normally supposed to reside at @var{addr}. 8144@end table 8145 8146@node Ambiguous Expressions 8147@section Ambiguous Expressions 8148@cindex ambiguous expressions 8149 8150Expressions can sometimes contain some ambiguous elements. For instance, 8151some programming languages (notably Ada, C@t{++} and Objective-C) permit 8152a single function name to be defined several times, for application in 8153different contexts. This is called @dfn{overloading}. Another example 8154involving Ada is generics. A @dfn{generic package} is similar to C@t{++} 8155templates and is typically instantiated several times, resulting in 8156the same function name being defined in different contexts. 8157 8158In some cases and depending on the language, it is possible to adjust 8159the expression to remove the ambiguity. For instance in C@t{++}, you 8160can specify the signature of the function you want to break on, as in 8161@kbd{break @var{function}(@var{types})}. In Ada, using the fully 8162qualified name of your function often makes the expression unambiguous 8163as well. 8164 8165When an ambiguity that needs to be resolved is detected, the debugger 8166has the capability to display a menu of numbered choices for each 8167possibility, and then waits for the selection with the prompt @samp{>}. 8168The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}} 8169aborts the current command. If the command in which the expression was 8170used allows more than one choice to be selected, the next option in the 8171menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible 8172choices. 8173 8174For example, the following session excerpt shows an attempt to set a 8175breakpoint at the overloaded symbol @code{String::after}. 8176We choose three particular definitions of that function name: 8177 8178@c FIXME! This is likely to change to show arg type lists, at least 8179@smallexample 8180@group 8181(@value{GDBP}) b String::after 8182[0] cancel 8183[1] all 8184[2] file:String.cc; line number:867 8185[3] file:String.cc; line number:860 8186[4] file:String.cc; line number:875 8187[5] file:String.cc; line number:853 8188[6] file:String.cc; line number:846 8189[7] file:String.cc; line number:735 8190> 2 4 6 8191Breakpoint 1 at 0xb26c: file String.cc, line 867. 8192Breakpoint 2 at 0xb344: file String.cc, line 875. 8193Breakpoint 3 at 0xafcc: file String.cc, line 846. 8194Multiple breakpoints were set. 8195Use the "delete" command to delete unwanted 8196 breakpoints. 8197(@value{GDBP}) 8198@end group 8199@end smallexample 8200 8201@table @code 8202@kindex set multiple-symbols 8203@item set multiple-symbols @var{mode} 8204@cindex multiple-symbols menu 8205 8206This option allows you to adjust the debugger behavior when an expression 8207is ambiguous. 8208 8209By default, @var{mode} is set to @code{all}. If the command with which 8210the expression is used allows more than one choice, then @value{GDBN} 8211automatically selects all possible choices. For instance, inserting 8212a breakpoint on a function using an ambiguous name results in a breakpoint 8213inserted on each possible match. However, if a unique choice must be made, 8214then @value{GDBN} uses the menu to help you disambiguate the expression. 8215For instance, printing the address of an overloaded function will result 8216in the use of the menu. 8217 8218When @var{mode} is set to @code{ask}, the debugger always uses the menu 8219when an ambiguity is detected. 8220 8221Finally, when @var{mode} is set to @code{cancel}, the debugger reports 8222an error due to the ambiguity and the command is aborted. 8223 8224@kindex show multiple-symbols 8225@item show multiple-symbols 8226Show the current value of the @code{multiple-symbols} setting. 8227@end table 8228 8229@node Variables 8230@section Program Variables 8231 8232The most common kind of expression to use is the name of a variable 8233in your program. 8234 8235Variables in expressions are understood in the selected stack frame 8236(@pxref{Selection, ,Selecting a Frame}); they must be either: 8237 8238@itemize @bullet 8239@item 8240global (or file-static) 8241@end itemize 8242 8243@noindent or 8244 8245@itemize @bullet 8246@item 8247visible according to the scope rules of the 8248programming language from the point of execution in that frame 8249@end itemize 8250 8251@noindent This means that in the function 8252 8253@smallexample 8254foo (a) 8255 int a; 8256@{ 8257 bar (a); 8258 @{ 8259 int b = test (); 8260 bar (b); 8261 @} 8262@} 8263@end smallexample 8264 8265@noindent 8266you can examine and use the variable @code{a} whenever your program is 8267executing within the function @code{foo}, but you can only use or 8268examine the variable @code{b} while your program is executing inside 8269the block where @code{b} is declared. 8270 8271@cindex variable name conflict 8272There is an exception: you can refer to a variable or function whose 8273scope is a single source file even if the current execution point is not 8274in this file. But it is possible to have more than one such variable or 8275function with the same name (in different source files). If that 8276happens, referring to that name has unpredictable effects. If you wish, 8277you can specify a static variable in a particular function or file by 8278using the colon-colon (@code{::}) notation: 8279 8280@cindex colon-colon, context for variables/functions 8281@ifnotinfo 8282@c info cannot cope with a :: index entry, but why deprive hard copy readers? 8283@cindex @code{::}, context for variables/functions 8284@end ifnotinfo 8285@smallexample 8286@var{file}::@var{variable} 8287@var{function}::@var{variable} 8288@end smallexample 8289 8290@noindent 8291Here @var{file} or @var{function} is the name of the context for the 8292static @var{variable}. In the case of file names, you can use quotes to 8293make sure @value{GDBN} parses the file name as a single word---for example, 8294to print a global value of @code{x} defined in @file{f2.c}: 8295 8296@smallexample 8297(@value{GDBP}) p 'f2.c'::x 8298@end smallexample 8299 8300The @code{::} notation is normally used for referring to 8301static variables, since you typically disambiguate uses of local variables 8302in functions by selecting the appropriate frame and using the 8303simple name of the variable. However, you may also use this notation 8304to refer to local variables in frames enclosing the selected frame: 8305 8306@smallexample 8307void 8308foo (int a) 8309@{ 8310 if (a < 10) 8311 bar (a); 8312 else 8313 process (a); /* Stop here */ 8314@} 8315 8316int 8317bar (int a) 8318@{ 8319 foo (a + 5); 8320@} 8321@end smallexample 8322 8323@noindent 8324For example, if there is a breakpoint at the commented line, 8325here is what you might see 8326when the program stops after executing the call @code{bar(0)}: 8327 8328@smallexample 8329(@value{GDBP}) p a 8330$1 = 10 8331(@value{GDBP}) p bar::a 8332$2 = 5 8333(@value{GDBP}) up 2 8334#2 0x080483d0 in foo (a=5) at foobar.c:12 8335(@value{GDBP}) p a 8336$3 = 5 8337(@value{GDBP}) p bar::a 8338$4 = 0 8339@end smallexample 8340 8341@cindex C@t{++} scope resolution 8342These uses of @samp{::} are very rarely in conflict with the very 8343similar use of the same notation in C@t{++}. When they are in 8344conflict, the C@t{++} meaning takes precedence; however, this can be 8345overridden by quoting the file or function name with single quotes. 8346 8347For example, suppose the program is stopped in a method of a class 8348that has a field named @code{includefile}, and there is also an 8349include file named @file{includefile} that defines a variable, 8350@code{some_global}. 8351 8352@smallexample 8353(@value{GDBP}) p includefile 8354$1 = 23 8355(@value{GDBP}) p includefile::some_global 8356A syntax error in expression, near `'. 8357(@value{GDBP}) p 'includefile'::some_global 8358$2 = 27 8359@end smallexample 8360 8361@cindex wrong values 8362@cindex variable values, wrong 8363@cindex function entry/exit, wrong values of variables 8364@cindex optimized code, wrong values of variables 8365@quotation 8366@emph{Warning:} Occasionally, a local variable may appear to have the 8367wrong value at certain points in a function---just after entry to a new 8368scope, and just before exit. 8369@end quotation 8370You may see this problem when you are stepping by machine instructions. 8371This is because, on most machines, it takes more than one instruction to 8372set up a stack frame (including local variable definitions); if you are 8373stepping by machine instructions, variables may appear to have the wrong 8374values until the stack frame is completely built. On exit, it usually 8375also takes more than one machine instruction to destroy a stack frame; 8376after you begin stepping through that group of instructions, local 8377variable definitions may be gone. 8378 8379This may also happen when the compiler does significant optimizations. 8380To be sure of always seeing accurate values, turn off all optimization 8381when compiling. 8382 8383@cindex ``No symbol "foo" in current context'' 8384Another possible effect of compiler optimizations is to optimize 8385unused variables out of existence, or assign variables to registers (as 8386opposed to memory addresses). Depending on the support for such cases 8387offered by the debug info format used by the compiler, @value{GDBN} 8388might not be able to display values for such local variables. If that 8389happens, @value{GDBN} will print a message like this: 8390 8391@smallexample 8392No symbol "foo" in current context. 8393@end smallexample 8394 8395To solve such problems, either recompile without optimizations, or use a 8396different debug info format, if the compiler supports several such 8397formats. @xref{Compilation}, for more information on choosing compiler 8398options. @xref{C, ,C and C@t{++}}, for more information about debug 8399info formats that are best suited to C@t{++} programs. 8400 8401If you ask to print an object whose contents are unknown to 8402@value{GDBN}, e.g., because its data type is not completely specified 8403by the debug information, @value{GDBN} will say @samp{<incomplete 8404type>}. @xref{Symbols, incomplete type}, for more about this. 8405 8406If you append @kbd{@@entry} string to a function parameter name you get its 8407value at the time the function got called. If the value is not available an 8408error message is printed. Entry values are available only with some compilers. 8409Entry values are normally also printed at the function parameter list according 8410to @ref{set print entry-values}. 8411 8412@smallexample 8413Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29 841429 i++; 8415(gdb) next 841630 e (i); 8417(gdb) print i 8418$1 = 31 8419(gdb) print i@@entry 8420$2 = 30 8421@end smallexample 8422 8423Strings are identified as arrays of @code{char} values without specified 8424signedness. Arrays of either @code{signed char} or @code{unsigned char} get 8425printed as arrays of 1 byte sized integers. @code{-fsigned-char} or 8426@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN} 8427defines literal string type @code{"char"} as @code{char} without a sign. 8428For program code 8429 8430@smallexample 8431char var0[] = "A"; 8432signed char var1[] = "A"; 8433@end smallexample 8434 8435You get during debugging 8436@smallexample 8437(gdb) print var0 8438$1 = "A" 8439(gdb) print var1 8440$2 = @{65 'A', 0 '\0'@} 8441@end smallexample 8442 8443@node Arrays 8444@section Artificial Arrays 8445 8446@cindex artificial array 8447@cindex arrays 8448@kindex @@@r{, referencing memory as an array} 8449It is often useful to print out several successive objects of the 8450same type in memory; a section of an array, or an array of 8451dynamically determined size for which only a pointer exists in the 8452program. 8453 8454You can do this by referring to a contiguous span of memory as an 8455@dfn{artificial array}, using the binary operator @samp{@@}. The left 8456operand of @samp{@@} should be the first element of the desired array 8457and be an individual object. The right operand should be the desired length 8458of the array. The result is an array value whose elements are all of 8459the type of the left argument. The first element is actually the left 8460argument; the second element comes from bytes of memory immediately 8461following those that hold the first element, and so on. Here is an 8462example. If a program says 8463 8464@smallexample 8465int *array = (int *) malloc (len * sizeof (int)); 8466@end smallexample 8467 8468@noindent 8469you can print the contents of @code{array} with 8470 8471@smallexample 8472p *array@@len 8473@end smallexample 8474 8475The left operand of @samp{@@} must reside in memory. Array values made 8476with @samp{@@} in this way behave just like other arrays in terms of 8477subscripting, and are coerced to pointers when used in expressions. 8478Artificial arrays most often appear in expressions via the value history 8479(@pxref{Value History, ,Value History}), after printing one out. 8480 8481Another way to create an artificial array is to use a cast. 8482This re-interprets a value as if it were an array. 8483The value need not be in memory: 8484@smallexample 8485(@value{GDBP}) p/x (short[2])0x12345678 8486$1 = @{0x1234, 0x5678@} 8487@end smallexample 8488 8489As a convenience, if you leave the array length out (as in 8490@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill 8491the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}: 8492@smallexample 8493(@value{GDBP}) p/x (short[])0x12345678 8494$2 = @{0x1234, 0x5678@} 8495@end smallexample 8496 8497Sometimes the artificial array mechanism is not quite enough; in 8498moderately complex data structures, the elements of interest may not 8499actually be adjacent---for example, if you are interested in the values 8500of pointers in an array. One useful work-around in this situation is 8501to use a convenience variable (@pxref{Convenience Vars, ,Convenience 8502Variables}) as a counter in an expression that prints the first 8503interesting value, and then repeat that expression via @key{RET}. For 8504instance, suppose you have an array @code{dtab} of pointers to 8505structures, and you are interested in the values of a field @code{fv} 8506in each structure. Here is an example of what you might type: 8507 8508@smallexample 8509set $i = 0 8510p dtab[$i++]->fv 8511@key{RET} 8512@key{RET} 8513@dots{} 8514@end smallexample 8515 8516@node Output Formats 8517@section Output Formats 8518 8519@cindex formatted output 8520@cindex output formats 8521By default, @value{GDBN} prints a value according to its data type. Sometimes 8522this is not what you want. For example, you might want to print a number 8523in hex, or a pointer in decimal. Or you might want to view data in memory 8524at a certain address as a character string or as an instruction. To do 8525these things, specify an @dfn{output format} when you print a value. 8526 8527The simplest use of output formats is to say how to print a value 8528already computed. This is done by starting the arguments of the 8529@code{print} command with a slash and a format letter. The format 8530letters supported are: 8531 8532@table @code 8533@item x 8534Regard the bits of the value as an integer, and print the integer in 8535hexadecimal. 8536 8537@item d 8538Print as integer in signed decimal. 8539 8540@item u 8541Print as integer in unsigned decimal. 8542 8543@item o 8544Print as integer in octal. 8545 8546@item t 8547Print as integer in binary. The letter @samp{t} stands for ``two''. 8548@footnote{@samp{b} cannot be used because these format letters are also 8549used with the @code{x} command, where @samp{b} stands for ``byte''; 8550see @ref{Memory,,Examining Memory}.} 8551 8552@item a 8553@cindex unknown address, locating 8554@cindex locate address 8555Print as an address, both absolute in hexadecimal and as an offset from 8556the nearest preceding symbol. You can use this format used to discover 8557where (in what function) an unknown address is located: 8558 8559@smallexample 8560(@value{GDBP}) p/a 0x54320 8561$3 = 0x54320 <_initialize_vx+396> 8562@end smallexample 8563 8564@noindent 8565The command @code{info symbol 0x54320} yields similar results. 8566@xref{Symbols, info symbol}. 8567 8568@item c 8569Regard as an integer and print it as a character constant. This 8570prints both the numerical value and its character representation. The 8571character representation is replaced with the octal escape @samp{\nnn} 8572for characters outside the 7-bit @sc{ascii} range. 8573 8574Without this format, @value{GDBN} displays @code{char}, 8575@w{@code{unsigned char}}, and @w{@code{signed char}} data as character 8576constants. Single-byte members of vectors are displayed as integer 8577data. 8578 8579@item f 8580Regard the bits of the value as a floating point number and print 8581using typical floating point syntax. 8582 8583@item s 8584@cindex printing strings 8585@cindex printing byte arrays 8586Regard as a string, if possible. With this format, pointers to single-byte 8587data are displayed as null-terminated strings and arrays of single-byte data 8588are displayed as fixed-length strings. Other values are displayed in their 8589natural types. 8590 8591Without this format, @value{GDBN} displays pointers to and arrays of 8592@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as 8593strings. Single-byte members of a vector are displayed as an integer 8594array. 8595 8596@item z 8597Like @samp{x} formatting, the value is treated as an integer and 8598printed as hexadecimal, but leading zeros are printed to pad the value 8599to the size of the integer type. 8600 8601@item r 8602@cindex raw printing 8603Print using the @samp{raw} formatting. By default, @value{GDBN} will 8604use a Python-based pretty-printer, if one is available (@pxref{Pretty 8605Printing}). This typically results in a higher-level display of the 8606value's contents. The @samp{r} format bypasses any Python 8607pretty-printer which might exist. 8608@end table 8609 8610For example, to print the program counter in hex (@pxref{Registers}), type 8611 8612@smallexample 8613p/x $pc 8614@end smallexample 8615 8616@noindent 8617Note that no space is required before the slash; this is because command 8618names in @value{GDBN} cannot contain a slash. 8619 8620To reprint the last value in the value history with a different format, 8621you can use the @code{print} command with just a format and no 8622expression. For example, @samp{p/x} reprints the last value in hex. 8623 8624@node Memory 8625@section Examining Memory 8626 8627You can use the command @code{x} (for ``examine'') to examine memory in 8628any of several formats, independently of your program's data types. 8629 8630@cindex examining memory 8631@table @code 8632@kindex x @r{(examine memory)} 8633@item x/@var{nfu} @var{addr} 8634@itemx x @var{addr} 8635@itemx x 8636Use the @code{x} command to examine memory. 8637@end table 8638 8639@var{n}, @var{f}, and @var{u} are all optional parameters that specify how 8640much memory to display and how to format it; @var{addr} is an 8641expression giving the address where you want to start displaying memory. 8642If you use defaults for @var{nfu}, you need not type the slash @samp{/}. 8643Several commands set convenient defaults for @var{addr}. 8644 8645@table @r 8646@item @var{n}, the repeat count 8647The repeat count is a decimal integer; the default is 1. It specifies 8648how much memory (counting by units @var{u}) to display. 8649@c This really is **decimal**; unaffected by 'set radix' as of GDB 8650@c 4.1.2. 8651 8652@item @var{f}, the display format 8653The display format is one of the formats used by @code{print} 8654(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c}, 8655@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions). 8656The default is @samp{x} (hexadecimal) initially. The default changes 8657each time you use either @code{x} or @code{print}. 8658 8659@item @var{u}, the unit size 8660The unit size is any of 8661 8662@table @code 8663@item b 8664Bytes. 8665@item h 8666Halfwords (two bytes). 8667@item w 8668Words (four bytes). This is the initial default. 8669@item g 8670Giant words (eight bytes). 8671@end table 8672 8673Each time you specify a unit size with @code{x}, that size becomes the 8674default unit the next time you use @code{x}. For the @samp{i} format, 8675the unit size is ignored and is normally not written. For the @samp{s} format, 8676the unit size defaults to @samp{b}, unless it is explicitly given. 8677Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display 867832-bit strings. The next use of @kbd{x /s} will again display 8-bit strings. 8679Note that the results depend on the programming language of the 8680current compilation unit. If the language is C, the @samp{s} 8681modifier will use the UTF-16 encoding while @samp{w} will use 8682UTF-32. The encoding is set by the programming language and cannot 8683be altered. 8684 8685@item @var{addr}, starting display address 8686@var{addr} is the address where you want @value{GDBN} to begin displaying 8687memory. The expression need not have a pointer value (though it may); 8688it is always interpreted as an integer address of a byte of memory. 8689@xref{Expressions, ,Expressions}, for more information on expressions. The default for 8690@var{addr} is usually just after the last address examined---but several 8691other commands also set the default address: @code{info breakpoints} (to 8692the address of the last breakpoint listed), @code{info line} (to the 8693starting address of a line), and @code{print} (if you use it to display 8694a value from memory). 8695@end table 8696 8697For example, @samp{x/3uh 0x54320} is a request to display three halfwords 8698(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}), 8699starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four 8700words (@samp{w}) of memory above the stack pointer (here, @samp{$sp}; 8701@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}). 8702 8703Since the letters indicating unit sizes are all distinct from the 8704letters specifying output formats, you do not have to remember whether 8705unit size or format comes first; either order works. The output 8706specifications @samp{4xw} and @samp{4wx} mean exactly the same thing. 8707(However, the count @var{n} must come first; @samp{wx4} does not work.) 8708 8709Even though the unit size @var{u} is ignored for the formats @samp{s} 8710and @samp{i}, you might still want to use a count @var{n}; for example, 8711@samp{3i} specifies that you want to see three machine instructions, 8712including any operands. For convenience, especially when used with 8713the @code{display} command, the @samp{i} format also prints branch delay 8714slot instructions, if any, beyond the count specified, which immediately 8715follow the last instruction that is within the count. The command 8716@code{disassemble} gives an alternative way of inspecting machine 8717instructions; see @ref{Machine Code,,Source and Machine Code}. 8718 8719All the defaults for the arguments to @code{x} are designed to make it 8720easy to continue scanning memory with minimal specifications each time 8721you use @code{x}. For example, after you have inspected three machine 8722instructions with @samp{x/3i @var{addr}}, you can inspect the next seven 8723with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command, 8724the repeat count @var{n} is used again; the other arguments default as 8725for successive uses of @code{x}. 8726 8727When examining machine instructions, the instruction at current program 8728counter is shown with a @code{=>} marker. For example: 8729 8730@smallexample 8731(@value{GDBP}) x/5i $pc-6 8732 0x804837f <main+11>: mov %esp,%ebp 8733 0x8048381 <main+13>: push %ecx 8734 0x8048382 <main+14>: sub $0x4,%esp 8735=> 0x8048385 <main+17>: movl $0x8048460,(%esp) 8736 0x804838c <main+24>: call 0x80482d4 <puts@@plt> 8737@end smallexample 8738 8739@cindex @code{$_}, @code{$__}, and value history 8740The addresses and contents printed by the @code{x} command are not saved 8741in the value history because there is often too much of them and they 8742would get in the way. Instead, @value{GDBN} makes these values available for 8743subsequent use in expressions as values of the convenience variables 8744@code{$_} and @code{$__}. After an @code{x} command, the last address 8745examined is available for use in expressions in the convenience variable 8746@code{$_}. The contents of that address, as examined, are available in 8747the convenience variable @code{$__}. 8748 8749If the @code{x} command has a repeat count, the address and contents saved 8750are from the last memory unit printed; this is not the same as the last 8751address printed if several units were printed on the last line of output. 8752 8753@cindex remote memory comparison 8754@cindex verify remote memory image 8755When you are debugging a program running on a remote target machine 8756(@pxref{Remote Debugging}), you may wish to verify the program's image in the 8757remote machine's memory against the executable file you downloaded to 8758the target. The @code{compare-sections} command is provided for such 8759situations. 8760 8761@table @code 8762@kindex compare-sections 8763@item compare-sections @r{[}@var{section-name}@r{]} 8764Compare the data of a loadable section @var{section-name} in the 8765executable file of the program being debugged with the same section in 8766the remote machine's memory, and report any mismatches. With no 8767arguments, compares all loadable sections. This command's 8768availability depends on the target's support for the @code{"qCRC"} 8769remote request. 8770@end table 8771 8772@node Auto Display 8773@section Automatic Display 8774@cindex automatic display 8775@cindex display of expressions 8776 8777If you find that you want to print the value of an expression frequently 8778(to see how it changes), you might want to add it to the @dfn{automatic 8779display list} so that @value{GDBN} prints its value each time your program stops. 8780Each expression added to the list is given a number to identify it; 8781to remove an expression from the list, you specify that number. 8782The automatic display looks like this: 8783 8784@smallexample 87852: foo = 38 87863: bar[5] = (struct hack *) 0x3804 8787@end smallexample 8788 8789@noindent 8790This display shows item numbers, expressions and their current values. As with 8791displays you request manually using @code{x} or @code{print}, you can 8792specify the output format you prefer; in fact, @code{display} decides 8793whether to use @code{print} or @code{x} depending your format 8794specification---it uses @code{x} if you specify either the @samp{i} 8795or @samp{s} format, or a unit size; otherwise it uses @code{print}. 8796 8797@table @code 8798@kindex display 8799@item display @var{expr} 8800Add the expression @var{expr} to the list of expressions to display 8801each time your program stops. @xref{Expressions, ,Expressions}. 8802 8803@code{display} does not repeat if you press @key{RET} again after using it. 8804 8805@item display/@var{fmt} @var{expr} 8806For @var{fmt} specifying only a display format and not a size or 8807count, add the expression @var{expr} to the auto-display list but 8808arrange to display it each time in the specified format @var{fmt}. 8809@xref{Output Formats,,Output Formats}. 8810 8811@item display/@var{fmt} @var{addr} 8812For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a 8813number of units, add the expression @var{addr} as a memory address to 8814be examined each time your program stops. Examining means in effect 8815doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}. 8816@end table 8817 8818For example, @samp{display/i $pc} can be helpful, to see the machine 8819instruction about to be executed each time execution stops (@samp{$pc} 8820is a common name for the program counter; @pxref{Registers, ,Registers}). 8821 8822@table @code 8823@kindex delete display 8824@kindex undisplay 8825@item undisplay @var{dnums}@dots{} 8826@itemx delete display @var{dnums}@dots{} 8827Remove items from the list of expressions to display. Specify the 8828numbers of the displays that you want affected with the command 8829argument @var{dnums}. It can be a single display number, one of the 8830numbers shown in the first field of the @samp{info display} display; 8831or it could be a range of display numbers, as in @code{2-4}. 8832 8833@code{undisplay} does not repeat if you press @key{RET} after using it. 8834(Otherwise you would just get the error @samp{No display number @dots{}}.) 8835 8836@kindex disable display 8837@item disable display @var{dnums}@dots{} 8838Disable the display of item numbers @var{dnums}. A disabled display 8839item is not printed automatically, but is not forgotten. It may be 8840enabled again later. Specify the numbers of the displays that you 8841want affected with the command argument @var{dnums}. It can be a 8842single display number, one of the numbers shown in the first field of 8843the @samp{info display} display; or it could be a range of display 8844numbers, as in @code{2-4}. 8845 8846@kindex enable display 8847@item enable display @var{dnums}@dots{} 8848Enable display of item numbers @var{dnums}. It becomes effective once 8849again in auto display of its expression, until you specify otherwise. 8850Specify the numbers of the displays that you want affected with the 8851command argument @var{dnums}. It can be a single display number, one 8852of the numbers shown in the first field of the @samp{info display} 8853display; or it could be a range of display numbers, as in @code{2-4}. 8854 8855@item display 8856Display the current values of the expressions on the list, just as is 8857done when your program stops. 8858 8859@kindex info display 8860@item info display 8861Print the list of expressions previously set up to display 8862automatically, each one with its item number, but without showing the 8863values. This includes disabled expressions, which are marked as such. 8864It also includes expressions which would not be displayed right now 8865because they refer to automatic variables not currently available. 8866@end table 8867 8868@cindex display disabled out of scope 8869If a display expression refers to local variables, then it does not make 8870sense outside the lexical context for which it was set up. Such an 8871expression is disabled when execution enters a context where one of its 8872variables is not defined. For example, if you give the command 8873@code{display last_char} while inside a function with an argument 8874@code{last_char}, @value{GDBN} displays this argument while your program 8875continues to stop inside that function. When it stops elsewhere---where 8876there is no variable @code{last_char}---the display is disabled 8877automatically. The next time your program stops where @code{last_char} 8878is meaningful, you can enable the display expression once again. 8879 8880@node Print Settings 8881@section Print Settings 8882 8883@cindex format options 8884@cindex print settings 8885@value{GDBN} provides the following ways to control how arrays, structures, 8886and symbols are printed. 8887 8888@noindent 8889These settings are useful for debugging programs in any language: 8890 8891@table @code 8892@kindex set print 8893@item set print address 8894@itemx set print address on 8895@cindex print/don't print memory addresses 8896@value{GDBN} prints memory addresses showing the location of stack 8897traces, structure values, pointer values, breakpoints, and so forth, 8898even when it also displays the contents of those addresses. The default 8899is @code{on}. For example, this is what a stack frame display looks like with 8900@code{set print address on}: 8901 8902@smallexample 8903@group 8904(@value{GDBP}) f 8905#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") 8906 at input.c:530 8907530 if (lquote != def_lquote) 8908@end group 8909@end smallexample 8910 8911@item set print address off 8912Do not print addresses when displaying their contents. For example, 8913this is the same stack frame displayed with @code{set print address off}: 8914 8915@smallexample 8916@group 8917(@value{GDBP}) set print addr off 8918(@value{GDBP}) f 8919#0 set_quotes (lq="<<", rq=">>") at input.c:530 8920530 if (lquote != def_lquote) 8921@end group 8922@end smallexample 8923 8924You can use @samp{set print address off} to eliminate all machine 8925dependent displays from the @value{GDBN} interface. For example, with 8926@code{print address off}, you should get the same text for backtraces on 8927all machines---whether or not they involve pointer arguments. 8928 8929@kindex show print 8930@item show print address 8931Show whether or not addresses are to be printed. 8932@end table 8933 8934When @value{GDBN} prints a symbolic address, it normally prints the 8935closest earlier symbol plus an offset. If that symbol does not uniquely 8936identify the address (for example, it is a name whose scope is a single 8937source file), you may need to clarify. One way to do this is with 8938@code{info line}, for example @samp{info line *0x4537}. Alternately, 8939you can set @value{GDBN} to print the source file and line number when 8940it prints a symbolic address: 8941 8942@table @code 8943@item set print symbol-filename on 8944@cindex source file and line of a symbol 8945@cindex symbol, source file and line 8946Tell @value{GDBN} to print the source file name and line number of a 8947symbol in the symbolic form of an address. 8948 8949@item set print symbol-filename off 8950Do not print source file name and line number of a symbol. This is the 8951default. 8952 8953@item show print symbol-filename 8954Show whether or not @value{GDBN} will print the source file name and 8955line number of a symbol in the symbolic form of an address. 8956@end table 8957 8958Another situation where it is helpful to show symbol filenames and line 8959numbers is when disassembling code; @value{GDBN} shows you the line 8960number and source file that corresponds to each instruction. 8961 8962Also, you may wish to see the symbolic form only if the address being 8963printed is reasonably close to the closest earlier symbol: 8964 8965@table @code 8966@item set print max-symbolic-offset @var{max-offset} 8967@itemx set print max-symbolic-offset unlimited 8968@cindex maximum value for offset of closest symbol 8969Tell @value{GDBN} to only display the symbolic form of an address if the 8970offset between the closest earlier symbol and the address is less than 8971@var{max-offset}. The default is @code{unlimited}, which tells @value{GDBN} 8972to always print the symbolic form of an address if any symbol precedes 8973it. Zero is equivalent to @code{unlimited}. 8974 8975@item show print max-symbolic-offset 8976Ask how large the maximum offset is that @value{GDBN} prints in a 8977symbolic address. 8978@end table 8979 8980@cindex wild pointer, interpreting 8981@cindex pointer, finding referent 8982If you have a pointer and you are not sure where it points, try 8983@samp{set print symbol-filename on}. Then you can determine the name 8984and source file location of the variable where it points, using 8985@samp{p/a @var{pointer}}. This interprets the address in symbolic form. 8986For example, here @value{GDBN} shows that a variable @code{ptt} points 8987at another variable @code{t}, defined in @file{hi2.c}: 8988 8989@smallexample 8990(@value{GDBP}) set print symbol-filename on 8991(@value{GDBP}) p/a ptt 8992$4 = 0xe008 <t in hi2.c> 8993@end smallexample 8994 8995@quotation 8996@emph{Warning:} For pointers that point to a local variable, @samp{p/a} 8997does not show the symbol name and filename of the referent, even with 8998the appropriate @code{set print} options turned on. 8999@end quotation 9000 9001You can also enable @samp{/a}-like formatting all the time using 9002@samp{set print symbol on}: 9003 9004@table @code 9005@item set print symbol on 9006Tell @value{GDBN} to print the symbol corresponding to an address, if 9007one exists. 9008 9009@item set print symbol off 9010Tell @value{GDBN} not to print the symbol corresponding to an 9011address. In this mode, @value{GDBN} will still print the symbol 9012corresponding to pointers to functions. This is the default. 9013 9014@item show print symbol 9015Show whether @value{GDBN} will display the symbol corresponding to an 9016address. 9017@end table 9018 9019Other settings control how different kinds of objects are printed: 9020 9021@table @code 9022@item set print array 9023@itemx set print array on 9024@cindex pretty print arrays 9025Pretty print arrays. This format is more convenient to read, 9026but uses more space. The default is off. 9027 9028@item set print array off 9029Return to compressed format for arrays. 9030 9031@item show print array 9032Show whether compressed or pretty format is selected for displaying 9033arrays. 9034 9035@cindex print array indexes 9036@item set print array-indexes 9037@itemx set print array-indexes on 9038Print the index of each element when displaying arrays. May be more 9039convenient to locate a given element in the array or quickly find the 9040index of a given element in that printed array. The default is off. 9041 9042@item set print array-indexes off 9043Stop printing element indexes when displaying arrays. 9044 9045@item show print array-indexes 9046Show whether the index of each element is printed when displaying 9047arrays. 9048 9049@item set print elements @var{number-of-elements} 9050@itemx set print elements unlimited 9051@cindex number of array elements to print 9052@cindex limit on number of printed array elements 9053Set a limit on how many elements of an array @value{GDBN} will print. 9054If @value{GDBN} is printing a large array, it stops printing after it has 9055printed the number of elements set by the @code{set print elements} command. 9056This limit also applies to the display of strings. 9057When @value{GDBN} starts, this limit is set to 200. 9058Setting @var{number-of-elements} to @code{unlimited} or zero means 9059that the number of elements to print is unlimited. 9060 9061@item show print elements 9062Display the number of elements of a large array that @value{GDBN} will print. 9063If the number is 0, then the printing is unlimited. 9064 9065@item set print frame-arguments @var{value} 9066@kindex set print frame-arguments 9067@cindex printing frame argument values 9068@cindex print all frame argument values 9069@cindex print frame argument values for scalars only 9070@cindex do not print frame argument values 9071This command allows to control how the values of arguments are printed 9072when the debugger prints a frame (@pxref{Frames}). The possible 9073values are: 9074 9075@table @code 9076@item all 9077The values of all arguments are printed. 9078 9079@item scalars 9080Print the value of an argument only if it is a scalar. The value of more 9081complex arguments such as arrays, structures, unions, etc, is replaced 9082by @code{@dots{}}. This is the default. Here is an example where 9083only scalar arguments are shown: 9084 9085@smallexample 9086#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green) 9087 at frame-args.c:23 9088@end smallexample 9089 9090@item none 9091None of the argument values are printed. Instead, the value of each argument 9092is replaced by @code{@dots{}}. In this case, the example above now becomes: 9093 9094@smallexample 9095#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{}) 9096 at frame-args.c:23 9097@end smallexample 9098@end table 9099 9100By default, only scalar arguments are printed. This command can be used 9101to configure the debugger to print the value of all arguments, regardless 9102of their type. However, it is often advantageous to not print the value 9103of more complex parameters. For instance, it reduces the amount of 9104information printed in each frame, making the backtrace more readable. 9105Also, it improves performance when displaying Ada frames, because 9106the computation of large arguments can sometimes be CPU-intensive, 9107especially in large applications. Setting @code{print frame-arguments} 9108to @code{scalars} (the default) or @code{none} avoids this computation, 9109thus speeding up the display of each Ada frame. 9110 9111@item show print frame-arguments 9112Show how the value of arguments should be displayed when printing a frame. 9113 9114@item set print raw frame-arguments on 9115Print frame arguments in raw, non pretty-printed, form. 9116 9117@item set print raw frame-arguments off 9118Print frame arguments in pretty-printed form, if there is a pretty-printer 9119for the value (@pxref{Pretty Printing}), 9120otherwise print the value in raw form. 9121This is the default. 9122 9123@item show print raw frame-arguments 9124Show whether to print frame arguments in raw form. 9125 9126@anchor{set print entry-values} 9127@item set print entry-values @var{value} 9128@kindex set print entry-values 9129Set printing of frame argument values at function entry. In some cases 9130@value{GDBN} can determine the value of function argument which was passed by 9131the function caller, even if the value was modified inside the called function 9132and therefore is different. With optimized code, the current value could be 9133unavailable, but the entry value may still be known. 9134 9135The default value is @code{default} (see below for its description). Older 9136@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting 9137this feature will behave in the @code{default} setting the same way as with the 9138@code{no} setting. 9139 9140This functionality is currently supported only by DWARF 2 debugging format and 9141the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With 9142@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 9143this information. 9144 9145The @var{value} parameter can be one of the following: 9146 9147@table @code 9148@item no 9149Print only actual parameter values, never print values from function entry 9150point. 9151@smallexample 9152#0 equal (val=5) 9153#0 different (val=6) 9154#0 lost (val=<optimized out>) 9155#0 born (val=10) 9156#0 invalid (val=<optimized out>) 9157@end smallexample 9158 9159@item only 9160Print only parameter values from function entry point. The actual parameter 9161values are never printed. 9162@smallexample 9163#0 equal (val@@entry=5) 9164#0 different (val@@entry=5) 9165#0 lost (val@@entry=5) 9166#0 born (val@@entry=<optimized out>) 9167#0 invalid (val@@entry=<optimized out>) 9168@end smallexample 9169 9170@item preferred 9171Print only parameter values from function entry point. If value from function 9172entry point is not known while the actual value is known, print the actual 9173value for such parameter. 9174@smallexample 9175#0 equal (val@@entry=5) 9176#0 different (val@@entry=5) 9177#0 lost (val@@entry=5) 9178#0 born (val=10) 9179#0 invalid (val@@entry=<optimized out>) 9180@end smallexample 9181 9182@item if-needed 9183Print actual parameter values. If actual parameter value is not known while 9184value from function entry point is known, print the entry point value for such 9185parameter. 9186@smallexample 9187#0 equal (val=5) 9188#0 different (val=6) 9189#0 lost (val@@entry=5) 9190#0 born (val=10) 9191#0 invalid (val=<optimized out>) 9192@end smallexample 9193 9194@item both 9195Always print both the actual parameter value and its value from function entry 9196point, even if values of one or both are not available due to compiler 9197optimizations. 9198@smallexample 9199#0 equal (val=5, val@@entry=5) 9200#0 different (val=6, val@@entry=5) 9201#0 lost (val=<optimized out>, val@@entry=5) 9202#0 born (val=10, val@@entry=<optimized out>) 9203#0 invalid (val=<optimized out>, val@@entry=<optimized out>) 9204@end smallexample 9205 9206@item compact 9207Print the actual parameter value if it is known and also its value from 9208function entry point if it is known. If neither is known, print for the actual 9209value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both 9210values are known and identical, print the shortened 9211@code{param=param@@entry=VALUE} notation. 9212@smallexample 9213#0 equal (val=val@@entry=5) 9214#0 different (val=6, val@@entry=5) 9215#0 lost (val@@entry=5) 9216#0 born (val=10) 9217#0 invalid (val=<optimized out>) 9218@end smallexample 9219 9220@item default 9221Always print the actual parameter value. Print also its value from function 9222entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and 9223if both values are known and identical, print the shortened 9224@code{param=param@@entry=VALUE} notation. 9225@smallexample 9226#0 equal (val=val@@entry=5) 9227#0 different (val=6, val@@entry=5) 9228#0 lost (val=<optimized out>, val@@entry=5) 9229#0 born (val=10) 9230#0 invalid (val=<optimized out>) 9231@end smallexample 9232@end table 9233 9234For analysis messages on possible failures of frame argument values at function 9235entry resolution see @ref{set debug entry-values}. 9236 9237@item show print entry-values 9238Show the method being used for printing of frame argument values at function 9239entry. 9240 9241@item set print repeats @var{number-of-repeats} 9242@itemx set print repeats unlimited 9243@cindex repeated array elements 9244Set the threshold for suppressing display of repeated array 9245elements. When the number of consecutive identical elements of an 9246array exceeds the threshold, @value{GDBN} prints the string 9247@code{"<repeats @var{n} times>"}, where @var{n} is the number of 9248identical repetitions, instead of displaying the identical elements 9249themselves. Setting the threshold to @code{unlimited} or zero will 9250cause all elements to be individually printed. The default threshold 9251is 10. 9252 9253@item show print repeats 9254Display the current threshold for printing repeated identical 9255elements. 9256 9257@item set print null-stop 9258@cindex @sc{null} elements in arrays 9259Cause @value{GDBN} to stop printing the characters of an array when the first 9260@sc{null} is encountered. This is useful when large arrays actually 9261contain only short strings. 9262The default is off. 9263 9264@item show print null-stop 9265Show whether @value{GDBN} stops printing an array on the first 9266@sc{null} character. 9267 9268@item set print pretty on 9269@cindex print structures in indented form 9270@cindex indentation in structure display 9271Cause @value{GDBN} to print structures in an indented format with one member 9272per line, like this: 9273 9274@smallexample 9275@group 9276$1 = @{ 9277 next = 0x0, 9278 flags = @{ 9279 sweet = 1, 9280 sour = 1 9281 @}, 9282 meat = 0x54 "Pork" 9283@} 9284@end group 9285@end smallexample 9286 9287@item set print pretty off 9288Cause @value{GDBN} to print structures in a compact format, like this: 9289 9290@smallexample 9291@group 9292$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \ 9293meat = 0x54 "Pork"@} 9294@end group 9295@end smallexample 9296 9297@noindent 9298This is the default format. 9299 9300@item show print pretty 9301Show which format @value{GDBN} is using to print structures. 9302 9303@item set print sevenbit-strings on 9304@cindex eight-bit characters in strings 9305@cindex octal escapes in strings 9306Print using only seven-bit characters; if this option is set, 9307@value{GDBN} displays any eight-bit characters (in strings or 9308character values) using the notation @code{\}@var{nnn}. This setting is 9309best if you are working in English (@sc{ascii}) and you use the 9310high-order bit of characters as a marker or ``meta'' bit. 9311 9312@item set print sevenbit-strings off 9313Print full eight-bit characters. This allows the use of more 9314international character sets, and is the default. 9315 9316@item show print sevenbit-strings 9317Show whether or not @value{GDBN} is printing only seven-bit characters. 9318 9319@item set print union on 9320@cindex unions in structures, printing 9321Tell @value{GDBN} to print unions which are contained in structures 9322and other unions. This is the default setting. 9323 9324@item set print union off 9325Tell @value{GDBN} not to print unions which are contained in 9326structures and other unions. @value{GDBN} will print @code{"@{...@}"} 9327instead. 9328 9329@item show print union 9330Ask @value{GDBN} whether or not it will print unions which are contained in 9331structures and other unions. 9332 9333For example, given the declarations 9334 9335@smallexample 9336typedef enum @{Tree, Bug@} Species; 9337typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms; 9338typedef enum @{Caterpillar, Cocoon, Butterfly@} 9339 Bug_forms; 9340 9341struct thing @{ 9342 Species it; 9343 union @{ 9344 Tree_forms tree; 9345 Bug_forms bug; 9346 @} form; 9347@}; 9348 9349struct thing foo = @{Tree, @{Acorn@}@}; 9350@end smallexample 9351 9352@noindent 9353with @code{set print union on} in effect @samp{p foo} would print 9354 9355@smallexample 9356$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@} 9357@end smallexample 9358 9359@noindent 9360and with @code{set print union off} in effect it would print 9361 9362@smallexample 9363$1 = @{it = Tree, form = @{...@}@} 9364@end smallexample 9365 9366@noindent 9367@code{set print union} affects programs written in C-like languages 9368and in Pascal. 9369@end table 9370 9371@need 1000 9372@noindent 9373These settings are of interest when debugging C@t{++} programs: 9374 9375@table @code 9376@cindex demangling C@t{++} names 9377@item set print demangle 9378@itemx set print demangle on 9379Print C@t{++} names in their source form rather than in the encoded 9380(``mangled'') form passed to the assembler and linker for type-safe 9381linkage. The default is on. 9382 9383@item show print demangle 9384Show whether C@t{++} names are printed in mangled or demangled form. 9385 9386@item set print asm-demangle 9387@itemx set print asm-demangle on 9388Print C@t{++} names in their source form rather than their mangled form, even 9389in assembler code printouts such as instruction disassemblies. 9390The default is off. 9391 9392@item show print asm-demangle 9393Show whether C@t{++} names in assembly listings are printed in mangled 9394or demangled form. 9395 9396@cindex C@t{++} symbol decoding style 9397@cindex symbol decoding style, C@t{++} 9398@kindex set demangle-style 9399@item set demangle-style @var{style} 9400Choose among several encoding schemes used by different compilers to 9401represent C@t{++} names. The choices for @var{style} are currently: 9402 9403@table @code 9404@item auto 9405Allow @value{GDBN} to choose a decoding style by inspecting your program. 9406This is the default. 9407 9408@item gnu 9409Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm. 9410 9411@item hp 9412Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm. 9413 9414@item lucid 9415Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm. 9416 9417@item arm 9418Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}. 9419@strong{Warning:} this setting alone is not sufficient to allow 9420debugging @code{cfront}-generated executables. @value{GDBN} would 9421require further enhancement to permit that. 9422 9423@end table 9424If you omit @var{style}, you will see a list of possible formats. 9425 9426@item show demangle-style 9427Display the encoding style currently in use for decoding C@t{++} symbols. 9428 9429@item set print object 9430@itemx set print object on 9431@cindex derived type of an object, printing 9432@cindex display derived types 9433When displaying a pointer to an object, identify the @emph{actual} 9434(derived) type of the object rather than the @emph{declared} type, using 9435the virtual function table. Note that the virtual function table is 9436required---this feature can only work for objects that have run-time 9437type identification; a single virtual method in the object's declared 9438type is sufficient. Note that this setting is also taken into account when 9439working with variable objects via MI (@pxref{GDB/MI}). 9440 9441@item set print object off 9442Display only the declared type of objects, without reference to the 9443virtual function table. This is the default setting. 9444 9445@item show print object 9446Show whether actual, or declared, object types are displayed. 9447 9448@item set print static-members 9449@itemx set print static-members on 9450@cindex static members of C@t{++} objects 9451Print static members when displaying a C@t{++} object. The default is on. 9452 9453@item set print static-members off 9454Do not print static members when displaying a C@t{++} object. 9455 9456@item show print static-members 9457Show whether C@t{++} static members are printed or not. 9458 9459@item set print pascal_static-members 9460@itemx set print pascal_static-members on 9461@cindex static members of Pascal objects 9462@cindex Pascal objects, static members display 9463Print static members when displaying a Pascal object. The default is on. 9464 9465@item set print pascal_static-members off 9466Do not print static members when displaying a Pascal object. 9467 9468@item show print pascal_static-members 9469Show whether Pascal static members are printed or not. 9470 9471@c These don't work with HP ANSI C++ yet. 9472@item set print vtbl 9473@itemx set print vtbl on 9474@cindex pretty print C@t{++} virtual function tables 9475@cindex virtual functions (C@t{++}) display 9476@cindex VTBL display 9477Pretty print C@t{++} virtual function tables. The default is off. 9478(The @code{vtbl} commands do not work on programs compiled with the HP 9479ANSI C@t{++} compiler (@code{aCC}).) 9480 9481@item set print vtbl off 9482Do not pretty print C@t{++} virtual function tables. 9483 9484@item show print vtbl 9485Show whether C@t{++} virtual function tables are pretty printed, or not. 9486@end table 9487 9488@node Pretty Printing 9489@section Pretty Printing 9490 9491@value{GDBN} provides a mechanism to allow pretty-printing of values using 9492Python code. It greatly simplifies the display of complex objects. This 9493mechanism works for both MI and the CLI. 9494 9495@menu 9496* Pretty-Printer Introduction:: Introduction to pretty-printers 9497* Pretty-Printer Example:: An example pretty-printer 9498* Pretty-Printer Commands:: Pretty-printer commands 9499@end menu 9500 9501@node Pretty-Printer Introduction 9502@subsection Pretty-Printer Introduction 9503 9504When @value{GDBN} prints a value, it first sees if there is a pretty-printer 9505registered for the value. If there is then @value{GDBN} invokes the 9506pretty-printer to print the value. Otherwise the value is printed normally. 9507 9508Pretty-printers are normally named. This makes them easy to manage. 9509The @samp{info pretty-printer} command will list all the installed 9510pretty-printers with their names. 9511If a pretty-printer can handle multiple data types, then its 9512@dfn{subprinters} are the printers for the individual data types. 9513Each such subprinter has its own name. 9514The format of the name is @var{printer-name};@var{subprinter-name}. 9515 9516Pretty-printers are installed by @dfn{registering} them with @value{GDBN}. 9517Typically they are automatically loaded and registered when the corresponding 9518debug information is loaded, thus making them available without having to 9519do anything special. 9520 9521There are three places where a pretty-printer can be registered. 9522 9523@itemize @bullet 9524@item 9525Pretty-printers registered globally are available when debugging 9526all inferiors. 9527 9528@item 9529Pretty-printers registered with a program space are available only 9530when debugging that program. 9531@xref{Progspaces In Python}, for more details on program spaces in Python. 9532 9533@item 9534Pretty-printers registered with an objfile are loaded and unloaded 9535with the corresponding objfile (e.g., shared library). 9536@xref{Objfiles In Python}, for more details on objfiles in Python. 9537@end itemize 9538 9539@xref{Selecting Pretty-Printers}, for further information on how 9540pretty-printers are selected, 9541 9542@xref{Writing a Pretty-Printer}, for implementing pretty printers 9543for new types. 9544 9545@node Pretty-Printer Example 9546@subsection Pretty-Printer Example 9547 9548Here is how a C@t{++} @code{std::string} looks without a pretty-printer: 9549 9550@smallexample 9551(@value{GDBP}) print s 9552$1 = @{ 9553 static npos = 4294967295, 9554 _M_dataplus = @{ 9555 <std::allocator<char>> = @{ 9556 <__gnu_cxx::new_allocator<char>> = @{ 9557 <No data fields>@}, <No data fields> 9558 @}, 9559 members of std::basic_string<char, std::char_traits<char>, 9560 std::allocator<char> >::_Alloc_hider: 9561 _M_p = 0x804a014 "abcd" 9562 @} 9563@} 9564@end smallexample 9565 9566With a pretty-printer for @code{std::string} only the contents are printed: 9567 9568@smallexample 9569(@value{GDBP}) print s 9570$2 = "abcd" 9571@end smallexample 9572 9573@node Pretty-Printer Commands 9574@subsection Pretty-Printer Commands 9575@cindex pretty-printer commands 9576 9577@table @code 9578@kindex info pretty-printer 9579@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]] 9580Print the list of installed pretty-printers. 9581This includes disabled pretty-printers, which are marked as such. 9582 9583@var{object-regexp} is a regular expression matching the objects 9584whose pretty-printers to list. 9585Objects can be @code{global}, the program space's file 9586(@pxref{Progspaces In Python}), 9587and the object files within that program space (@pxref{Objfiles In Python}). 9588@xref{Selecting Pretty-Printers}, for details on how @value{GDBN} 9589looks up a printer from these three objects. 9590 9591@var{name-regexp} is a regular expression matching the name of the printers 9592to list. 9593 9594@kindex disable pretty-printer 9595@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 9596Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 9597A disabled pretty-printer is not forgotten, it may be enabled again later. 9598 9599@kindex enable pretty-printer 9600@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 9601Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 9602@end table 9603 9604Example: 9605 9606Suppose we have three pretty-printers installed: one from library1.so 9607named @code{foo} that prints objects of type @code{foo}, and 9608another from library2.so named @code{bar} that prints two types of objects, 9609@code{bar1} and @code{bar2}. 9610 9611@smallexample 9612(gdb) info pretty-printer 9613library1.so: 9614 foo 9615library2.so: 9616 bar 9617 bar1 9618 bar2 9619(gdb) info pretty-printer library2 9620library2.so: 9621 bar 9622 bar1 9623 bar2 9624(gdb) disable pretty-printer library1 96251 printer disabled 96262 of 3 printers enabled 9627(gdb) info pretty-printer 9628library1.so: 9629 foo [disabled] 9630library2.so: 9631 bar 9632 bar1 9633 bar2 9634(gdb) disable pretty-printer library2 bar:bar1 96351 printer disabled 96361 of 3 printers enabled 9637(gdb) info pretty-printer library2 9638library1.so: 9639 foo [disabled] 9640library2.so: 9641 bar 9642 bar1 [disabled] 9643 bar2 9644(gdb) disable pretty-printer library2 bar 96451 printer disabled 96460 of 3 printers enabled 9647(gdb) info pretty-printer library2 9648library1.so: 9649 foo [disabled] 9650library2.so: 9651 bar [disabled] 9652 bar1 [disabled] 9653 bar2 9654@end smallexample 9655 9656Note that for @code{bar} the entire printer can be disabled, 9657as can each individual subprinter. 9658 9659@node Value History 9660@section Value History 9661 9662@cindex value history 9663@cindex history of values printed by @value{GDBN} 9664Values printed by the @code{print} command are saved in the @value{GDBN} 9665@dfn{value history}. This allows you to refer to them in other expressions. 9666Values are kept until the symbol table is re-read or discarded 9667(for example with the @code{file} or @code{symbol-file} commands). 9668When the symbol table changes, the value history is discarded, 9669since the values may contain pointers back to the types defined in the 9670symbol table. 9671 9672@cindex @code{$} 9673@cindex @code{$$} 9674@cindex history number 9675The values printed are given @dfn{history numbers} by which you can 9676refer to them. These are successive integers starting with one. 9677@code{print} shows you the history number assigned to a value by 9678printing @samp{$@var{num} = } before the value; here @var{num} is the 9679history number. 9680 9681To refer to any previous value, use @samp{$} followed by the value's 9682history number. The way @code{print} labels its output is designed to 9683remind you of this. Just @code{$} refers to the most recent value in 9684the history, and @code{$$} refers to the value before that. 9685@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2} 9686is the value just prior to @code{$$}, @code{$$1} is equivalent to 9687@code{$$}, and @code{$$0} is equivalent to @code{$}. 9688 9689For example, suppose you have just printed a pointer to a structure and 9690want to see the contents of the structure. It suffices to type 9691 9692@smallexample 9693p *$ 9694@end smallexample 9695 9696If you have a chain of structures where the component @code{next} points 9697to the next one, you can print the contents of the next one with this: 9698 9699@smallexample 9700p *$.next 9701@end smallexample 9702 9703@noindent 9704You can print successive links in the chain by repeating this 9705command---which you can do by just typing @key{RET}. 9706 9707Note that the history records values, not expressions. If the value of 9708@code{x} is 4 and you type these commands: 9709 9710@smallexample 9711print x 9712set x=5 9713@end smallexample 9714 9715@noindent 9716then the value recorded in the value history by the @code{print} command 9717remains 4 even though the value of @code{x} has changed. 9718 9719@table @code 9720@kindex show values 9721@item show values 9722Print the last ten values in the value history, with their item numbers. 9723This is like @samp{p@ $$9} repeated ten times, except that @code{show 9724values} does not change the history. 9725 9726@item show values @var{n} 9727Print ten history values centered on history item number @var{n}. 9728 9729@item show values + 9730Print ten history values just after the values last printed. If no more 9731values are available, @code{show values +} produces no display. 9732@end table 9733 9734Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the 9735same effect as @samp{show values +}. 9736 9737@node Convenience Vars 9738@section Convenience Variables 9739 9740@cindex convenience variables 9741@cindex user-defined variables 9742@value{GDBN} provides @dfn{convenience variables} that you can use within 9743@value{GDBN} to hold on to a value and refer to it later. These variables 9744exist entirely within @value{GDBN}; they are not part of your program, and 9745setting a convenience variable has no direct effect on further execution 9746of your program. That is why you can use them freely. 9747 9748Convenience variables are prefixed with @samp{$}. Any name preceded by 9749@samp{$} can be used for a convenience variable, unless it is one of 9750the predefined machine-specific register names (@pxref{Registers, ,Registers}). 9751(Value history references, in contrast, are @emph{numbers} preceded 9752by @samp{$}. @xref{Value History, ,Value History}.) 9753 9754You can save a value in a convenience variable with an assignment 9755expression, just as you would set a variable in your program. 9756For example: 9757 9758@smallexample 9759set $foo = *object_ptr 9760@end smallexample 9761 9762@noindent 9763would save in @code{$foo} the value contained in the object pointed to by 9764@code{object_ptr}. 9765 9766Using a convenience variable for the first time creates it, but its 9767value is @code{void} until you assign a new value. You can alter the 9768value with another assignment at any time. 9769 9770Convenience variables have no fixed types. You can assign a convenience 9771variable any type of value, including structures and arrays, even if 9772that variable already has a value of a different type. The convenience 9773variable, when used as an expression, has the type of its current value. 9774 9775@table @code 9776@kindex show convenience 9777@cindex show all user variables and functions 9778@item show convenience 9779Print a list of convenience variables used so far, and their values, 9780as well as a list of the convenience functions. 9781Abbreviated @code{show conv}. 9782 9783@kindex init-if-undefined 9784@cindex convenience variables, initializing 9785@item init-if-undefined $@var{variable} = @var{expression} 9786Set a convenience variable if it has not already been set. This is useful 9787for user-defined commands that keep some state. It is similar, in concept, 9788to using local static variables with initializers in C (except that 9789convenience variables are global). It can also be used to allow users to 9790override default values used in a command script. 9791 9792If the variable is already defined then the expression is not evaluated so 9793any side-effects do not occur. 9794@end table 9795 9796One of the ways to use a convenience variable is as a counter to be 9797incremented or a pointer to be advanced. For example, to print 9798a field from successive elements of an array of structures: 9799 9800@smallexample 9801set $i = 0 9802print bar[$i++]->contents 9803@end smallexample 9804 9805@noindent 9806Repeat that command by typing @key{RET}. 9807 9808Some convenience variables are created automatically by @value{GDBN} and given 9809values likely to be useful. 9810 9811@table @code 9812@vindex $_@r{, convenience variable} 9813@item $_ 9814The variable @code{$_} is automatically set by the @code{x} command to 9815the last address examined (@pxref{Memory, ,Examining Memory}). Other 9816commands which provide a default address for @code{x} to examine also 9817set @code{$_} to that address; these commands include @code{info line} 9818and @code{info breakpoint}. The type of @code{$_} is @code{void *} 9819except when set by the @code{x} command, in which case it is a pointer 9820to the type of @code{$__}. 9821 9822@vindex $__@r{, convenience variable} 9823@item $__ 9824The variable @code{$__} is automatically set by the @code{x} command 9825to the value found in the last address examined. Its type is chosen 9826to match the format in which the data was printed. 9827 9828@item $_exitcode 9829@vindex $_exitcode@r{, convenience variable} 9830When the program being debugged terminates normally, @value{GDBN} 9831automatically sets this variable to the exit code of the program, and 9832resets @code{$_exitsignal} to @code{void}. 9833 9834@item $_exitsignal 9835@vindex $_exitsignal@r{, convenience variable} 9836When the program being debugged dies due to an uncaught signal, 9837@value{GDBN} automatically sets this variable to that signal's number, 9838and resets @code{$_exitcode} to @code{void}. 9839 9840To distinguish between whether the program being debugged has exited 9841(i.e., @code{$_exitcode} is not @code{void}) or signalled (i.e., 9842@code{$_exitsignal} is not @code{void}), the convenience function 9843@code{$_isvoid} can be used (@pxref{Convenience Funs,, Convenience 9844Functions}). For example, considering the following source code: 9845 9846@smallexample 9847#include <signal.h> 9848 9849int 9850main (int argc, char *argv[]) 9851@{ 9852 raise (SIGALRM); 9853 return 0; 9854@} 9855@end smallexample 9856 9857A valid way of telling whether the program being debugged has exited 9858or signalled would be: 9859 9860@smallexample 9861(@value{GDBP}) define has_exited_or_signalled 9862Type commands for definition of ``has_exited_or_signalled''. 9863End with a line saying just ``end''. 9864>if $_isvoid ($_exitsignal) 9865 >echo The program has exited\n 9866 >else 9867 >echo The program has signalled\n 9868 >end 9869>end 9870(@value{GDBP}) run 9871Starting program: 9872 9873Program terminated with signal SIGALRM, Alarm clock. 9874The program no longer exists. 9875(@value{GDBP}) has_exited_or_signalled 9876The program has signalled 9877@end smallexample 9878 9879As can be seen, @value{GDBN} correctly informs that the program being 9880debugged has signalled, since it calls @code{raise} and raises a 9881@code{SIGALRM} signal. If the program being debugged had not called 9882@code{raise}, then @value{GDBN} would report a normal exit: 9883 9884@smallexample 9885(@value{GDBP}) has_exited_or_signalled 9886The program has exited 9887@end smallexample 9888 9889@item $_exception 9890The variable @code{$_exception} is set to the exception object being 9891thrown at an exception-related catchpoint. @xref{Set Catchpoints}. 9892 9893@item $_probe_argc 9894@itemx $_probe_arg0@dots{}$_probe_arg11 9895Arguments to a static probe. @xref{Static Probe Points}. 9896 9897@item $_sdata 9898@vindex $_sdata@r{, inspect, convenience variable} 9899The variable @code{$_sdata} contains extra collected static tracepoint 9900data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that 9901@code{$_sdata} could be empty, if not inspecting a trace buffer, or 9902if extra static tracepoint data has not been collected. 9903 9904@item $_siginfo 9905@vindex $_siginfo@r{, convenience variable} 9906The variable @code{$_siginfo} contains extra signal information 9907(@pxref{extra signal information}). Note that @code{$_siginfo} 9908could be empty, if the application has not yet received any signals. 9909For example, it will be empty before you execute the @code{run} command. 9910 9911@item $_tlb 9912@vindex $_tlb@r{, convenience variable} 9913The variable @code{$_tlb} is automatically set when debugging 9914applications running on MS-Windows in native mode or connected to 9915gdbserver that supports the @code{qGetTIBAddr} request. 9916@xref{General Query Packets}. 9917This variable contains the address of the thread information block. 9918 9919@end table 9920 9921On HP-UX systems, if you refer to a function or variable name that 9922begins with a dollar sign, @value{GDBN} searches for a user or system 9923name first, before it searches for a convenience variable. 9924 9925@node Convenience Funs 9926@section Convenience Functions 9927 9928@cindex convenience functions 9929@value{GDBN} also supplies some @dfn{convenience functions}. These 9930have a syntax similar to convenience variables. A convenience 9931function can be used in an expression just like an ordinary function; 9932however, a convenience function is implemented internally to 9933@value{GDBN}. 9934 9935These functions do not require @value{GDBN} to be configured with 9936@code{Python} support, which means that they are always available. 9937 9938@table @code 9939 9940@item $_isvoid (@var{expr}) 9941@findex $_isvoid@r{, convenience function} 9942Return one if the expression @var{expr} is @code{void}. Otherwise it 9943returns zero. 9944 9945A @code{void} expression is an expression where the type of the result 9946is @code{void}. For example, you can examine a convenience variable 9947(see @ref{Convenience Vars,, Convenience Variables}) to check whether 9948it is @code{void}: 9949 9950@smallexample 9951(@value{GDBP}) print $_exitcode 9952$1 = void 9953(@value{GDBP}) print $_isvoid ($_exitcode) 9954$2 = 1 9955(@value{GDBP}) run 9956Starting program: ./a.out 9957[Inferior 1 (process 29572) exited normally] 9958(@value{GDBP}) print $_exitcode 9959$3 = 0 9960(@value{GDBP}) print $_isvoid ($_exitcode) 9961$4 = 0 9962@end smallexample 9963 9964In the example above, we used @code{$_isvoid} to check whether 9965@code{$_exitcode} is @code{void} before and after the execution of the 9966program being debugged. Before the execution there is no exit code to 9967be examined, therefore @code{$_exitcode} is @code{void}. After the 9968execution the program being debugged returned zero, therefore 9969@code{$_exitcode} is zero, which means that it is not @code{void} 9970anymore. 9971 9972The @code{void} expression can also be a call of a function from the 9973program being debugged. For example, given the following function: 9974 9975@smallexample 9976void 9977foo (void) 9978@{ 9979@} 9980@end smallexample 9981 9982The result of calling it inside @value{GDBN} is @code{void}: 9983 9984@smallexample 9985(@value{GDBP}) print foo () 9986$1 = void 9987(@value{GDBP}) print $_isvoid (foo ()) 9988$2 = 1 9989(@value{GDBP}) set $v = foo () 9990(@value{GDBP}) print $v 9991$3 = void 9992(@value{GDBP}) print $_isvoid ($v) 9993$4 = 1 9994@end smallexample 9995 9996@end table 9997 9998These functions require @value{GDBN} to be configured with 9999@code{Python} support. 10000 10001@table @code 10002 10003@item $_memeq(@var{buf1}, @var{buf2}, @var{length}) 10004@findex $_memeq@r{, convenience function} 10005Returns one if the @var{length} bytes at the addresses given by 10006@var{buf1} and @var{buf2} are equal. 10007Otherwise it returns zero. 10008 10009@item $_regex(@var{str}, @var{regex}) 10010@findex $_regex@r{, convenience function} 10011Returns one if the string @var{str} matches the regular expression 10012@var{regex}. Otherwise it returns zero. 10013The syntax of the regular expression is that specified by @code{Python}'s 10014regular expression support. 10015 10016@item $_streq(@var{str1}, @var{str2}) 10017@findex $_streq@r{, convenience function} 10018Returns one if the strings @var{str1} and @var{str2} are equal. 10019Otherwise it returns zero. 10020 10021@item $_strlen(@var{str}) 10022@findex $_strlen@r{, convenience function} 10023Returns the length of string @var{str}. 10024 10025@end table 10026 10027@value{GDBN} provides the ability to list and get help on 10028convenience functions. 10029 10030@table @code 10031@item help function 10032@kindex help function 10033@cindex show all convenience functions 10034Print a list of all convenience functions. 10035@end table 10036 10037@node Registers 10038@section Registers 10039 10040@cindex registers 10041You can refer to machine register contents, in expressions, as variables 10042with names starting with @samp{$}. The names of registers are different 10043for each machine; use @code{info registers} to see the names used on 10044your machine. 10045 10046@table @code 10047@kindex info registers 10048@item info registers 10049Print the names and values of all registers except floating-point 10050and vector registers (in the selected stack frame). 10051 10052@kindex info all-registers 10053@cindex floating point registers 10054@item info all-registers 10055Print the names and values of all registers, including floating-point 10056and vector registers (in the selected stack frame). 10057 10058@item info registers @var{regname} @dots{} 10059Print the @dfn{relativized} value of each specified register @var{regname}. 10060As discussed in detail below, register values are normally relative to 10061the selected stack frame. @var{regname} may be any register name valid on 10062the machine you are using, with or without the initial @samp{$}. 10063@end table 10064 10065@cindex stack pointer register 10066@cindex program counter register 10067@cindex process status register 10068@cindex frame pointer register 10069@cindex standard registers 10070@value{GDBN} has four ``standard'' register names that are available (in 10071expressions) on most machines---whenever they do not conflict with an 10072architecture's canonical mnemonics for registers. The register names 10073@code{$pc} and @code{$sp} are used for the program counter register and 10074the stack pointer. @code{$fp} is used for a register that contains a 10075pointer to the current stack frame, and @code{$ps} is used for a 10076register that contains the processor status. For example, 10077you could print the program counter in hex with 10078 10079@smallexample 10080p/x $pc 10081@end smallexample 10082 10083@noindent 10084or print the instruction to be executed next with 10085 10086@smallexample 10087x/i $pc 10088@end smallexample 10089 10090@noindent 10091or add four to the stack pointer@footnote{This is a way of removing 10092one word from the stack, on machines where stacks grow downward in 10093memory (most machines, nowadays). This assumes that the innermost 10094stack frame is selected; setting @code{$sp} is not allowed when other 10095stack frames are selected. To pop entire frames off the stack, 10096regardless of machine architecture, use @code{return}; 10097see @ref{Returning, ,Returning from a Function}.} with 10098 10099@smallexample 10100set $sp += 4 10101@end smallexample 10102 10103Whenever possible, these four standard register names are available on 10104your machine even though the machine has different canonical mnemonics, 10105so long as there is no conflict. The @code{info registers} command 10106shows the canonical names. For example, on the SPARC, @code{info 10107registers} displays the processor status register as @code{$psr} but you 10108can also refer to it as @code{$ps}; and on x86-based machines @code{$ps} 10109is an alias for the @sc{eflags} register. 10110 10111@value{GDBN} always considers the contents of an ordinary register as an 10112integer when the register is examined in this way. Some machines have 10113special registers which can hold nothing but floating point; these 10114registers are considered to have floating point values. There is no way 10115to refer to the contents of an ordinary register as floating point value 10116(although you can @emph{print} it as a floating point value with 10117@samp{print/f $@var{regname}}). 10118 10119Some registers have distinct ``raw'' and ``virtual'' data formats. This 10120means that the data format in which the register contents are saved by 10121the operating system is not the same one that your program normally 10122sees. For example, the registers of the 68881 floating point 10123coprocessor are always saved in ``extended'' (raw) format, but all C 10124programs expect to work with ``double'' (virtual) format. In such 10125cases, @value{GDBN} normally works with the virtual format only (the format 10126that makes sense for your program), but the @code{info registers} command 10127prints the data in both formats. 10128 10129@cindex SSE registers (x86) 10130@cindex MMX registers (x86) 10131Some machines have special registers whose contents can be interpreted 10132in several different ways. For example, modern x86-based machines 10133have SSE and MMX registers that can hold several values packed 10134together in several different formats. @value{GDBN} refers to such 10135registers in @code{struct} notation: 10136 10137@smallexample 10138(@value{GDBP}) print $xmm1 10139$1 = @{ 10140 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@}, 10141 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@}, 10142 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000", 10143 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@}, 10144 v4_int32 = @{0, 20657912, 11, 13@}, 10145 v2_int64 = @{88725056443645952, 55834574859@}, 10146 uint128 = 0x0000000d0000000b013b36f800000000 10147@} 10148@end smallexample 10149 10150@noindent 10151To set values of such registers, you need to tell @value{GDBN} which 10152view of the register you wish to change, as if you were assigning 10153value to a @code{struct} member: 10154 10155@smallexample 10156 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF 10157@end smallexample 10158 10159Normally, register values are relative to the selected stack frame 10160(@pxref{Selection, ,Selecting a Frame}). This means that you get the 10161value that the register would contain if all stack frames farther in 10162were exited and their saved registers restored. In order to see the 10163true contents of hardware registers, you must select the innermost 10164frame (with @samp{frame 0}). 10165 10166@cindex caller-saved registers 10167@cindex call-clobbered registers 10168@cindex volatile registers 10169@cindex <not saved> values 10170Usually ABIs reserve some registers as not needed to be saved by the 10171callee (a.k.a.: ``caller-saved'', ``call-clobbered'' or ``volatile'' 10172registers). It may therefore not be possible for @value{GDBN} to know 10173the value a register had before the call (in other words, in the outer 10174frame), if the register value has since been changed by the callee. 10175@value{GDBN} tries to deduce where the inner frame saved 10176(``callee-saved'') registers, from the debug info, unwind info, or the 10177machine code generated by your compiler. If some register is not 10178saved, and @value{GDBN} knows the register is ``caller-saved'' (via 10179its own knowledge of the ABI, or because the debug/unwind info 10180explicitly says the register's value is undefined), @value{GDBN} 10181displays @w{@samp{<not saved>}} as the register's value. With targets 10182that @value{GDBN} has no knowledge of the register saving convention, 10183if a register was not saved by the callee, then its value and location 10184in the outer frame are assumed to be the same of the inner frame. 10185This is usually harmless, because if the register is call-clobbered, 10186the caller either does not care what is in the register after the 10187call, or has code to restore the value that it does care about. Note, 10188however, that if you change such a register in the outer frame, you 10189may also be affecting the inner frame. Also, the more ``outer'' the 10190frame is you're looking at, the more likely a call-clobbered 10191register's value is to be wrong, in the sense that it doesn't actually 10192represent the value the register had just before the call. 10193 10194@node Floating Point Hardware 10195@section Floating Point Hardware 10196@cindex floating point 10197 10198Depending on the configuration, @value{GDBN} may be able to give 10199you more information about the status of the floating point hardware. 10200 10201@table @code 10202@kindex info float 10203@item info float 10204Display hardware-dependent information about the floating 10205point unit. The exact contents and layout vary depending on the 10206floating point chip. Currently, @samp{info float} is supported on 10207the ARM and x86 machines. 10208@end table 10209 10210@node Vector Unit 10211@section Vector Unit 10212@cindex vector unit 10213 10214Depending on the configuration, @value{GDBN} may be able to give you 10215more information about the status of the vector unit. 10216 10217@table @code 10218@kindex info vector 10219@item info vector 10220Display information about the vector unit. The exact contents and 10221layout vary depending on the hardware. 10222@end table 10223 10224@node OS Information 10225@section Operating System Auxiliary Information 10226@cindex OS information 10227 10228@value{GDBN} provides interfaces to useful OS facilities that can help 10229you debug your program. 10230 10231@cindex auxiliary vector 10232@cindex vector, auxiliary 10233Some operating systems supply an @dfn{auxiliary vector} to programs at 10234startup. This is akin to the arguments and environment that you 10235specify for a program, but contains a system-dependent variety of 10236binary values that tell system libraries important details about the 10237hardware, operating system, and process. Each value's purpose is 10238identified by an integer tag; the meanings are well-known but system-specific. 10239Depending on the configuration and operating system facilities, 10240@value{GDBN} may be able to show you this information. For remote 10241targets, this functionality may further depend on the remote stub's 10242support of the @samp{qXfer:auxv:read} packet, see 10243@ref{qXfer auxiliary vector read}. 10244 10245@table @code 10246@kindex info auxv 10247@item info auxv 10248Display the auxiliary vector of the inferior, which can be either a 10249live process or a core dump file. @value{GDBN} prints each tag value 10250numerically, and also shows names and text descriptions for recognized 10251tags. Some values in the vector are numbers, some bit masks, and some 10252pointers to strings or other data. @value{GDBN} displays each value in the 10253most appropriate form for a recognized tag, and in hexadecimal for 10254an unrecognized tag. 10255@end table 10256 10257On some targets, @value{GDBN} can access operating system-specific 10258information and show it to you. The types of information available 10259will differ depending on the type of operating system running on the 10260target. The mechanism used to fetch the data is described in 10261@ref{Operating System Information}. For remote targets, this 10262functionality depends on the remote stub's support of the 10263@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}. 10264 10265@table @code 10266@kindex info os 10267@item info os @var{infotype} 10268 10269Display OS information of the requested type. 10270 10271On @sc{gnu}/Linux, the following values of @var{infotype} are valid: 10272 10273@anchor{linux info os infotypes} 10274@table @code 10275@kindex info os processes 10276@item processes 10277Display the list of processes on the target. For each process, 10278@value{GDBN} prints the process identifier, the name of the user, the 10279command corresponding to the process, and the list of processor cores 10280that the process is currently running on. (To understand what these 10281properties mean, for this and the following info types, please consult 10282the general @sc{gnu}/Linux documentation.) 10283 10284@kindex info os procgroups 10285@item procgroups 10286Display the list of process groups on the target. For each process, 10287@value{GDBN} prints the identifier of the process group that it belongs 10288to, the command corresponding to the process group leader, the process 10289identifier, and the command line of the process. The list is sorted 10290first by the process group identifier, then by the process identifier, 10291so that processes belonging to the same process group are grouped together 10292and the process group leader is listed first. 10293 10294@kindex info os threads 10295@item threads 10296Display the list of threads running on the target. For each thread, 10297@value{GDBN} prints the identifier of the process that the thread 10298belongs to, the command of the process, the thread identifier, and the 10299processor core that it is currently running on. The main thread of a 10300process is not listed. 10301 10302@kindex info os files 10303@item files 10304Display the list of open file descriptors on the target. For each 10305file descriptor, @value{GDBN} prints the identifier of the process 10306owning the descriptor, the command of the owning process, the value 10307of the descriptor, and the target of the descriptor. 10308 10309@kindex info os sockets 10310@item sockets 10311Display the list of Internet-domain sockets on the target. For each 10312socket, @value{GDBN} prints the address and port of the local and 10313remote endpoints, the current state of the connection, the creator of 10314the socket, the IP address family of the socket, and the type of the 10315connection. 10316 10317@kindex info os shm 10318@item shm 10319Display the list of all System V shared-memory regions on the target. 10320For each shared-memory region, @value{GDBN} prints the region key, 10321the shared-memory identifier, the access permissions, the size of the 10322region, the process that created the region, the process that last 10323attached to or detached from the region, the current number of live 10324attaches to the region, and the times at which the region was last 10325attached to, detach from, and changed. 10326 10327@kindex info os semaphores 10328@item semaphores 10329Display the list of all System V semaphore sets on the target. For each 10330semaphore set, @value{GDBN} prints the semaphore set key, the semaphore 10331set identifier, the access permissions, the number of semaphores in the 10332set, the user and group of the owner and creator of the semaphore set, 10333and the times at which the semaphore set was operated upon and changed. 10334 10335@kindex info os msg 10336@item msg 10337Display the list of all System V message queues on the target. For each 10338message queue, @value{GDBN} prints the message queue key, the message 10339queue identifier, the access permissions, the current number of bytes 10340on the queue, the current number of messages on the queue, the processes 10341that last sent and received a message on the queue, the user and group 10342of the owner and creator of the message queue, the times at which a 10343message was last sent and received on the queue, and the time at which 10344the message queue was last changed. 10345 10346@kindex info os modules 10347@item modules 10348Display the list of all loaded kernel modules on the target. For each 10349module, @value{GDBN} prints the module name, the size of the module in 10350bytes, the number of times the module is used, the dependencies of the 10351module, the status of the module, and the address of the loaded module 10352in memory. 10353@end table 10354 10355@item info os 10356If @var{infotype} is omitted, then list the possible values for 10357@var{infotype} and the kind of OS information available for each 10358@var{infotype}. If the target does not return a list of possible 10359types, this command will report an error. 10360@end table 10361 10362@node Memory Region Attributes 10363@section Memory Region Attributes 10364@cindex memory region attributes 10365 10366@dfn{Memory region attributes} allow you to describe special handling 10367required by regions of your target's memory. @value{GDBN} uses 10368attributes to determine whether to allow certain types of memory 10369accesses; whether to use specific width accesses; and whether to cache 10370target memory. By default the description of memory regions is 10371fetched from the target (if the current target supports this), but the 10372user can override the fetched regions. 10373 10374Defined memory regions can be individually enabled and disabled. When a 10375memory region is disabled, @value{GDBN} uses the default attributes when 10376accessing memory in that region. Similarly, if no memory regions have 10377been defined, @value{GDBN} uses the default attributes when accessing 10378all memory. 10379 10380When a memory region is defined, it is given a number to identify it; 10381to enable, disable, or remove a memory region, you specify that number. 10382 10383@table @code 10384@kindex mem 10385@item mem @var{lower} @var{upper} @var{attributes}@dots{} 10386Define a memory region bounded by @var{lower} and @var{upper} with 10387attributes @var{attributes}@dots{}, and add it to the list of regions 10388monitored by @value{GDBN}. Note that @var{upper} == 0 is a special 10389case: it is treated as the target's maximum memory address. 10390(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.) 10391 10392@item mem auto 10393Discard any user changes to the memory regions and use target-supplied 10394regions, if available, or no regions if the target does not support. 10395 10396@kindex delete mem 10397@item delete mem @var{nums}@dots{} 10398Remove memory regions @var{nums}@dots{} from the list of regions 10399monitored by @value{GDBN}. 10400 10401@kindex disable mem 10402@item disable mem @var{nums}@dots{} 10403Disable monitoring of memory regions @var{nums}@dots{}. 10404A disabled memory region is not forgotten. 10405It may be enabled again later. 10406 10407@kindex enable mem 10408@item enable mem @var{nums}@dots{} 10409Enable monitoring of memory regions @var{nums}@dots{}. 10410 10411@kindex info mem 10412@item info mem 10413Print a table of all defined memory regions, with the following columns 10414for each region: 10415 10416@table @emph 10417@item Memory Region Number 10418@item Enabled or Disabled. 10419Enabled memory regions are marked with @samp{y}. 10420Disabled memory regions are marked with @samp{n}. 10421 10422@item Lo Address 10423The address defining the inclusive lower bound of the memory region. 10424 10425@item Hi Address 10426The address defining the exclusive upper bound of the memory region. 10427 10428@item Attributes 10429The list of attributes set for this memory region. 10430@end table 10431@end table 10432 10433 10434@subsection Attributes 10435 10436@subsubsection Memory Access Mode 10437The access mode attributes set whether @value{GDBN} may make read or 10438write accesses to a memory region. 10439 10440While these attributes prevent @value{GDBN} from performing invalid 10441memory accesses, they do nothing to prevent the target system, I/O DMA, 10442etc.@: from accessing memory. 10443 10444@table @code 10445@item ro 10446Memory is read only. 10447@item wo 10448Memory is write only. 10449@item rw 10450Memory is read/write. This is the default. 10451@end table 10452 10453@subsubsection Memory Access Size 10454The access size attribute tells @value{GDBN} to use specific sized 10455accesses in the memory region. Often memory mapped device registers 10456require specific sized accesses. If no access size attribute is 10457specified, @value{GDBN} may use accesses of any size. 10458 10459@table @code 10460@item 8 10461Use 8 bit memory accesses. 10462@item 16 10463Use 16 bit memory accesses. 10464@item 32 10465Use 32 bit memory accesses. 10466@item 64 10467Use 64 bit memory accesses. 10468@end table 10469 10470@c @subsubsection Hardware/Software Breakpoints 10471@c The hardware/software breakpoint attributes set whether @value{GDBN} 10472@c will use hardware or software breakpoints for the internal breakpoints 10473@c used by the step, next, finish, until, etc. commands. 10474@c 10475@c @table @code 10476@c @item hwbreak 10477@c Always use hardware breakpoints 10478@c @item swbreak (default) 10479@c @end table 10480 10481@subsubsection Data Cache 10482The data cache attributes set whether @value{GDBN} will cache target 10483memory. While this generally improves performance by reducing debug 10484protocol overhead, it can lead to incorrect results because @value{GDBN} 10485does not know about volatile variables or memory mapped device 10486registers. 10487 10488@table @code 10489@item cache 10490Enable @value{GDBN} to cache target memory. 10491@item nocache 10492Disable @value{GDBN} from caching target memory. This is the default. 10493@end table 10494 10495@subsection Memory Access Checking 10496@value{GDBN} can be instructed to refuse accesses to memory that is 10497not explicitly described. This can be useful if accessing such 10498regions has undesired effects for a specific target, or to provide 10499better error checking. The following commands control this behaviour. 10500 10501@table @code 10502@kindex set mem inaccessible-by-default 10503@item set mem inaccessible-by-default [on|off] 10504If @code{on} is specified, make @value{GDBN} treat memory not 10505explicitly described by the memory ranges as non-existent and refuse accesses 10506to such memory. The checks are only performed if there's at least one 10507memory range defined. If @code{off} is specified, make @value{GDBN} 10508treat the memory not explicitly described by the memory ranges as RAM. 10509The default value is @code{on}. 10510@kindex show mem inaccessible-by-default 10511@item show mem inaccessible-by-default 10512Show the current handling of accesses to unknown memory. 10513@end table 10514 10515 10516@c @subsubsection Memory Write Verification 10517@c The memory write verification attributes set whether @value{GDBN} 10518@c will re-reads data after each write to verify the write was successful. 10519@c 10520@c @table @code 10521@c @item verify 10522@c @item noverify (default) 10523@c @end table 10524 10525@node Dump/Restore Files 10526@section Copy Between Memory and a File 10527@cindex dump/restore files 10528@cindex append data to a file 10529@cindex dump data to a file 10530@cindex restore data from a file 10531 10532You can use the commands @code{dump}, @code{append}, and 10533@code{restore} to copy data between target memory and a file. The 10534@code{dump} and @code{append} commands write data to a file, and the 10535@code{restore} command reads data from a file back into the inferior's 10536memory. Files may be in binary, Motorola S-record, Intel hex, or 10537Tektronix Hex format; however, @value{GDBN} can only append to binary 10538files. 10539 10540@table @code 10541 10542@kindex dump 10543@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 10544@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr} 10545Dump the contents of memory from @var{start_addr} to @var{end_addr}, 10546or the value of @var{expr}, to @var{filename} in the given format. 10547 10548The @var{format} parameter may be any one of: 10549@table @code 10550@item binary 10551Raw binary form. 10552@item ihex 10553Intel hex format. 10554@item srec 10555Motorola S-record format. 10556@item tekhex 10557Tektronix Hex format. 10558@end table 10559 10560@value{GDBN} uses the same definitions of these formats as the 10561@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If 10562@var{format} is omitted, @value{GDBN} dumps the data in raw binary 10563form. 10564 10565@kindex append 10566@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 10567@itemx append @r{[}binary@r{]} value @var{filename} @var{expr} 10568Append the contents of memory from @var{start_addr} to @var{end_addr}, 10569or the value of @var{expr}, to the file @var{filename}, in raw binary form. 10570(@value{GDBN} can only append data to files in raw binary form.) 10571 10572@kindex restore 10573@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end} 10574Restore the contents of file @var{filename} into memory. The 10575@code{restore} command can automatically recognize any known @sc{bfd} 10576file format, except for raw binary. To restore a raw binary file you 10577must specify the optional keyword @code{binary} after the filename. 10578 10579If @var{bias} is non-zero, its value will be added to the addresses 10580contained in the file. Binary files always start at address zero, so 10581they will be restored at address @var{bias}. Other bfd files have 10582a built-in location; they will be restored at offset @var{bias} 10583from that location. 10584 10585If @var{start} and/or @var{end} are non-zero, then only data between 10586file offset @var{start} and file offset @var{end} will be restored. 10587These offsets are relative to the addresses in the file, before 10588the @var{bias} argument is applied. 10589 10590@end table 10591 10592@node Core File Generation 10593@section How to Produce a Core File from Your Program 10594@cindex dump core from inferior 10595 10596A @dfn{core file} or @dfn{core dump} is a file that records the memory 10597image of a running process and its process status (register values 10598etc.). Its primary use is post-mortem debugging of a program that 10599crashed while it ran outside a debugger. A program that crashes 10600automatically produces a core file, unless this feature is disabled by 10601the user. @xref{Files}, for information on invoking @value{GDBN} in 10602the post-mortem debugging mode. 10603 10604Occasionally, you may wish to produce a core file of the program you 10605are debugging in order to preserve a snapshot of its state. 10606@value{GDBN} has a special command for that. 10607 10608@table @code 10609@kindex gcore 10610@kindex generate-core-file 10611@item generate-core-file [@var{file}] 10612@itemx gcore [@var{file}] 10613Produce a core dump of the inferior process. The optional argument 10614@var{file} specifies the file name where to put the core dump. If not 10615specified, the file name defaults to @file{core.@var{pid}}, where 10616@var{pid} is the inferior process ID. 10617 10618Note that this command is implemented only for some systems (as of 10619this writing, @sc{gnu}/Linux, FreeBSD, Solaris, and S390). 10620@end table 10621 10622@node Character Sets 10623@section Character Sets 10624@cindex character sets 10625@cindex charset 10626@cindex translating between character sets 10627@cindex host character set 10628@cindex target character set 10629 10630If the program you are debugging uses a different character set to 10631represent characters and strings than the one @value{GDBN} uses itself, 10632@value{GDBN} can automatically translate between the character sets for 10633you. The character set @value{GDBN} uses we call the @dfn{host 10634character set}; the one the inferior program uses we call the 10635@dfn{target character set}. 10636 10637For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which 10638uses the ISO Latin 1 character set, but you are using @value{GDBN}'s 10639remote protocol (@pxref{Remote Debugging}) to debug a program 10640running on an IBM mainframe, which uses the @sc{ebcdic} character set, 10641then the host character set is Latin-1, and the target character set is 10642@sc{ebcdic}. If you give @value{GDBN} the command @code{set 10643target-charset EBCDIC-US}, then @value{GDBN} translates between 10644@sc{ebcdic} and Latin 1 as you print character or string values, or use 10645character and string literals in expressions. 10646 10647@value{GDBN} has no way to automatically recognize which character set 10648the inferior program uses; you must tell it, using the @code{set 10649target-charset} command, described below. 10650 10651Here are the commands for controlling @value{GDBN}'s character set 10652support: 10653 10654@table @code 10655@item set target-charset @var{charset} 10656@kindex set target-charset 10657Set the current target character set to @var{charset}. To display the 10658list of supported target character sets, type 10659@kbd{@w{set target-charset @key{TAB}@key{TAB}}}. 10660 10661@item set host-charset @var{charset} 10662@kindex set host-charset 10663Set the current host character set to @var{charset}. 10664 10665By default, @value{GDBN} uses a host character set appropriate to the 10666system it is running on; you can override that default using the 10667@code{set host-charset} command. On some systems, @value{GDBN} cannot 10668automatically determine the appropriate host character set. In this 10669case, @value{GDBN} uses @samp{UTF-8}. 10670 10671@value{GDBN} can only use certain character sets as its host character 10672set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}}, 10673@value{GDBN} will list the host character sets it supports. 10674 10675@item set charset @var{charset} 10676@kindex set charset 10677Set the current host and target character sets to @var{charset}. As 10678above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}}, 10679@value{GDBN} will list the names of the character sets that can be used 10680for both host and target. 10681 10682@item show charset 10683@kindex show charset 10684Show the names of the current host and target character sets. 10685 10686@item show host-charset 10687@kindex show host-charset 10688Show the name of the current host character set. 10689 10690@item show target-charset 10691@kindex show target-charset 10692Show the name of the current target character set. 10693 10694@item set target-wide-charset @var{charset} 10695@kindex set target-wide-charset 10696Set the current target's wide character set to @var{charset}. This is 10697the character set used by the target's @code{wchar_t} type. To 10698display the list of supported wide character sets, type 10699@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}. 10700 10701@item show target-wide-charset 10702@kindex show target-wide-charset 10703Show the name of the current target's wide character set. 10704@end table 10705 10706Here is an example of @value{GDBN}'s character set support in action. 10707Assume that the following source code has been placed in the file 10708@file{charset-test.c}: 10709 10710@smallexample 10711#include <stdio.h> 10712 10713char ascii_hello[] 10714 = @{72, 101, 108, 108, 111, 44, 32, 119, 10715 111, 114, 108, 100, 33, 10, 0@}; 10716char ibm1047_hello[] 10717 = @{200, 133, 147, 147, 150, 107, 64, 166, 10718 150, 153, 147, 132, 90, 37, 0@}; 10719 10720main () 10721@{ 10722 printf ("Hello, world!\n"); 10723@} 10724@end smallexample 10725 10726In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays 10727containing the string @samp{Hello, world!} followed by a newline, 10728encoded in the @sc{ascii} and @sc{ibm1047} character sets. 10729 10730We compile the program, and invoke the debugger on it: 10731 10732@smallexample 10733$ gcc -g charset-test.c -o charset-test 10734$ gdb -nw charset-test 10735GNU gdb 2001-12-19-cvs 10736Copyright 2001 Free Software Foundation, Inc. 10737@dots{} 10738(@value{GDBP}) 10739@end smallexample 10740 10741We can use the @code{show charset} command to see what character sets 10742@value{GDBN} is currently using to interpret and display characters and 10743strings: 10744 10745@smallexample 10746(@value{GDBP}) show charset 10747The current host and target character set is `ISO-8859-1'. 10748(@value{GDBP}) 10749@end smallexample 10750 10751For the sake of printing this manual, let's use @sc{ascii} as our 10752initial character set: 10753@smallexample 10754(@value{GDBP}) set charset ASCII 10755(@value{GDBP}) show charset 10756The current host and target character set is `ASCII'. 10757(@value{GDBP}) 10758@end smallexample 10759 10760Let's assume that @sc{ascii} is indeed the correct character set for our 10761host system --- in other words, let's assume that if @value{GDBN} prints 10762characters using the @sc{ascii} character set, our terminal will display 10763them properly. Since our current target character set is also 10764@sc{ascii}, the contents of @code{ascii_hello} print legibly: 10765 10766@smallexample 10767(@value{GDBP}) print ascii_hello 10768$1 = 0x401698 "Hello, world!\n" 10769(@value{GDBP}) print ascii_hello[0] 10770$2 = 72 'H' 10771(@value{GDBP}) 10772@end smallexample 10773 10774@value{GDBN} uses the target character set for character and string 10775literals you use in expressions: 10776 10777@smallexample 10778(@value{GDBP}) print '+' 10779$3 = 43 '+' 10780(@value{GDBP}) 10781@end smallexample 10782 10783The @sc{ascii} character set uses the number 43 to encode the @samp{+} 10784character. 10785 10786@value{GDBN} relies on the user to tell it which character set the 10787target program uses. If we print @code{ibm1047_hello} while our target 10788character set is still @sc{ascii}, we get jibberish: 10789 10790@smallexample 10791(@value{GDBP}) print ibm1047_hello 10792$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%" 10793(@value{GDBP}) print ibm1047_hello[0] 10794$5 = 200 '\310' 10795(@value{GDBP}) 10796@end smallexample 10797 10798If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB}, 10799@value{GDBN} tells us the character sets it supports: 10800 10801@smallexample 10802(@value{GDBP}) set target-charset 10803ASCII EBCDIC-US IBM1047 ISO-8859-1 10804(@value{GDBP}) set target-charset 10805@end smallexample 10806 10807We can select @sc{ibm1047} as our target character set, and examine the 10808program's strings again. Now the @sc{ascii} string is wrong, but 10809@value{GDBN} translates the contents of @code{ibm1047_hello} from the 10810target character set, @sc{ibm1047}, to the host character set, 10811@sc{ascii}, and they display correctly: 10812 10813@smallexample 10814(@value{GDBP}) set target-charset IBM1047 10815(@value{GDBP}) show charset 10816The current host character set is `ASCII'. 10817The current target character set is `IBM1047'. 10818(@value{GDBP}) print ascii_hello 10819$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012" 10820(@value{GDBP}) print ascii_hello[0] 10821$7 = 72 '\110' 10822(@value{GDBP}) print ibm1047_hello 10823$8 = 0x4016a8 "Hello, world!\n" 10824(@value{GDBP}) print ibm1047_hello[0] 10825$9 = 200 'H' 10826(@value{GDBP}) 10827@end smallexample 10828 10829As above, @value{GDBN} uses the target character set for character and 10830string literals you use in expressions: 10831 10832@smallexample 10833(@value{GDBP}) print '+' 10834$10 = 78 '+' 10835(@value{GDBP}) 10836@end smallexample 10837 10838The @sc{ibm1047} character set uses the number 78 to encode the @samp{+} 10839character. 10840 10841@node Caching Target Data 10842@section Caching Data of Targets 10843@cindex caching data of targets 10844 10845@value{GDBN} caches data exchanged between the debugger and a target. 10846Each cache is associated with the address space of the inferior. 10847@xref{Inferiors and Programs}, about inferior and address space. 10848Such caching generally improves performance in remote debugging 10849(@pxref{Remote Debugging}), because it reduces the overhead of the 10850remote protocol by bundling memory reads and writes into large chunks. 10851Unfortunately, simply caching everything would lead to incorrect results, 10852since @value{GDBN} does not necessarily know anything about volatile 10853values, memory-mapped I/O addresses, etc. Furthermore, in non-stop mode 10854(@pxref{Non-Stop Mode}) memory can be changed @emph{while} a gdb command 10855is executing. 10856Therefore, by default, @value{GDBN} only caches data 10857known to be on the stack@footnote{In non-stop mode, it is moderately 10858rare for a running thread to modify the stack of a stopped thread 10859in a way that would interfere with a backtrace, and caching of 10860stack reads provides a significant speed up of remote backtraces.} or 10861in the code segment. 10862Other regions of memory can be explicitly marked as 10863cacheable; @pxref{Memory Region Attributes}. 10864 10865@table @code 10866@kindex set remotecache 10867@item set remotecache on 10868@itemx set remotecache off 10869This option no longer does anything; it exists for compatibility 10870with old scripts. 10871 10872@kindex show remotecache 10873@item show remotecache 10874Show the current state of the obsolete remotecache flag. 10875 10876@kindex set stack-cache 10877@item set stack-cache on 10878@itemx set stack-cache off 10879Enable or disable caching of stack accesses. When @code{on}, use 10880caching. By default, this option is @code{on}. 10881 10882@kindex show stack-cache 10883@item show stack-cache 10884Show the current state of data caching for memory accesses. 10885 10886@kindex set code-cache 10887@item set code-cache on 10888@itemx set code-cache off 10889Enable or disable caching of code segment accesses. When @code{on}, 10890use caching. By default, this option is @code{on}. This improves 10891performance of disassembly in remote debugging. 10892 10893@kindex show code-cache 10894@item show code-cache 10895Show the current state of target memory cache for code segment 10896accesses. 10897 10898@kindex info dcache 10899@item info dcache @r{[}line@r{]} 10900Print the information about the performance of data cache of the 10901current inferior's address space. The information displayed 10902includes the dcache width and depth, and for each cache line, its 10903number, address, and how many times it was referenced. This 10904command is useful for debugging the data cache operation. 10905 10906If a line number is specified, the contents of that line will be 10907printed in hex. 10908 10909@item set dcache size @var{size} 10910@cindex dcache size 10911@kindex set dcache size 10912Set maximum number of entries in dcache (dcache depth above). 10913 10914@item set dcache line-size @var{line-size} 10915@cindex dcache line-size 10916@kindex set dcache line-size 10917Set number of bytes each dcache entry caches (dcache width above). 10918Must be a power of 2. 10919 10920@item show dcache size 10921@kindex show dcache size 10922Show maximum number of dcache entries. @xref{Caching Target Data, info dcache}. 10923 10924@item show dcache line-size 10925@kindex show dcache line-size 10926Show default size of dcache lines. 10927 10928@end table 10929 10930@node Searching Memory 10931@section Search Memory 10932@cindex searching memory 10933 10934Memory can be searched for a particular sequence of bytes with the 10935@code{find} command. 10936 10937@table @code 10938@kindex find 10939@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 10940@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 10941Search memory for the sequence of bytes specified by @var{val1}, @var{val2}, 10942etc. The search begins at address @var{start_addr} and continues for either 10943@var{len} bytes or through to @var{end_addr} inclusive. 10944@end table 10945 10946@var{s} and @var{n} are optional parameters. 10947They may be specified in either order, apart or together. 10948 10949@table @r 10950@item @var{s}, search query size 10951The size of each search query value. 10952 10953@table @code 10954@item b 10955bytes 10956@item h 10957halfwords (two bytes) 10958@item w 10959words (four bytes) 10960@item g 10961giant words (eight bytes) 10962@end table 10963 10964All values are interpreted in the current language. 10965This means, for example, that if the current source language is C/C@t{++} 10966then searching for the string ``hello'' includes the trailing '\0'. 10967 10968If the value size is not specified, it is taken from the 10969value's type in the current language. 10970This is useful when one wants to specify the search 10971pattern as a mixture of types. 10972Note that this means, for example, that in the case of C-like languages 10973a search for an untyped 0x42 will search for @samp{(int) 0x42} 10974which is typically four bytes. 10975 10976@item @var{n}, maximum number of finds 10977The maximum number of matches to print. The default is to print all finds. 10978@end table 10979 10980You can use strings as search values. Quote them with double-quotes 10981 (@code{"}). 10982The string value is copied into the search pattern byte by byte, 10983regardless of the endianness of the target and the size specification. 10984 10985The address of each match found is printed as well as a count of the 10986number of matches found. 10987 10988The address of the last value found is stored in convenience variable 10989@samp{$_}. 10990A count of the number of matches is stored in @samp{$numfound}. 10991 10992For example, if stopped at the @code{printf} in this function: 10993 10994@smallexample 10995void 10996hello () 10997@{ 10998 static char hello[] = "hello-hello"; 10999 static struct @{ char c; short s; int i; @} 11000 __attribute__ ((packed)) mixed 11001 = @{ 'c', 0x1234, 0x87654321 @}; 11002 printf ("%s\n", hello); 11003@} 11004@end smallexample 11005 11006@noindent 11007you get during debugging: 11008 11009@smallexample 11010(gdb) find &hello[0], +sizeof(hello), "hello" 110110x804956d <hello.1620+6> 110121 pattern found 11013(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o' 110140x8049567 <hello.1620> 110150x804956d <hello.1620+6> 110162 patterns found 11017(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l' 110180x8049567 <hello.1620> 110191 pattern found 11020(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321 110210x8049560 <mixed.1625> 110221 pattern found 11023(gdb) print $numfound 11024$1 = 1 11025(gdb) print $_ 11026$2 = (void *) 0x8049560 11027@end smallexample 11028 11029@node Optimized Code 11030@chapter Debugging Optimized Code 11031@cindex optimized code, debugging 11032@cindex debugging optimized code 11033 11034Almost all compilers support optimization. With optimization 11035disabled, the compiler generates assembly code that corresponds 11036directly to your source code, in a simplistic way. As the compiler 11037applies more powerful optimizations, the generated assembly code 11038diverges from your original source code. With help from debugging 11039information generated by the compiler, @value{GDBN} can map from 11040the running program back to constructs from your original source. 11041 11042@value{GDBN} is more accurate with optimization disabled. If you 11043can recompile without optimization, it is easier to follow the 11044progress of your program during debugging. But, there are many cases 11045where you may need to debug an optimized version. 11046 11047When you debug a program compiled with @samp{-g -O}, remember that the 11048optimizer has rearranged your code; the debugger shows you what is 11049really there. Do not be too surprised when the execution path does not 11050exactly match your source file! An extreme example: if you define a 11051variable, but never use it, @value{GDBN} never sees that 11052variable---because the compiler optimizes it out of existence. 11053 11054Some things do not work as well with @samp{-g -O} as with just 11055@samp{-g}, particularly on machines with instruction scheduling. If in 11056doubt, recompile with @samp{-g} alone, and if this fixes the problem, 11057please report it to us as a bug (including a test case!). 11058@xref{Variables}, for more information about debugging optimized code. 11059 11060@menu 11061* Inline Functions:: How @value{GDBN} presents inlining 11062* Tail Call Frames:: @value{GDBN} analysis of jumps to functions 11063@end menu 11064 11065@node Inline Functions 11066@section Inline Functions 11067@cindex inline functions, debugging 11068 11069@dfn{Inlining} is an optimization that inserts a copy of the function 11070body directly at each call site, instead of jumping to a shared 11071routine. @value{GDBN} displays inlined functions just like 11072non-inlined functions. They appear in backtraces. You can view their 11073arguments and local variables, step into them with @code{step}, skip 11074them with @code{next}, and escape from them with @code{finish}. 11075You can check whether a function was inlined by using the 11076@code{info frame} command. 11077 11078For @value{GDBN} to support inlined functions, the compiler must 11079record information about inlining in the debug information --- 11080@value{NGCC} using the @sc{dwarf 2} format does this, and several 11081other compilers do also. @value{GDBN} only supports inlined functions 11082when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1 11083do not emit two required attributes (@samp{DW_AT_call_file} and 11084@samp{DW_AT_call_line}); @value{GDBN} does not display inlined 11085function calls with earlier versions of @value{NGCC}. It instead 11086displays the arguments and local variables of inlined functions as 11087local variables in the caller. 11088 11089The body of an inlined function is directly included at its call site; 11090unlike a non-inlined function, there are no instructions devoted to 11091the call. @value{GDBN} still pretends that the call site and the 11092start of the inlined function are different instructions. Stepping to 11093the call site shows the call site, and then stepping again shows 11094the first line of the inlined function, even though no additional 11095instructions are executed. 11096 11097This makes source-level debugging much clearer; you can see both the 11098context of the call and then the effect of the call. Only stepping by 11099a single instruction using @code{stepi} or @code{nexti} does not do 11100this; single instruction steps always show the inlined body. 11101 11102There are some ways that @value{GDBN} does not pretend that inlined 11103function calls are the same as normal calls: 11104 11105@itemize @bullet 11106@item 11107Setting breakpoints at the call site of an inlined function may not 11108work, because the call site does not contain any code. @value{GDBN} 11109may incorrectly move the breakpoint to the next line of the enclosing 11110function, after the call. This limitation will be removed in a future 11111version of @value{GDBN}; until then, set a breakpoint on an earlier line 11112or inside the inlined function instead. 11113 11114@item 11115@value{GDBN} cannot locate the return value of inlined calls after 11116using the @code{finish} command. This is a limitation of compiler-generated 11117debugging information; after @code{finish}, you can step to the next line 11118and print a variable where your program stored the return value. 11119 11120@end itemize 11121 11122@node Tail Call Frames 11123@section Tail Call Frames 11124@cindex tail call frames, debugging 11125 11126Function @code{B} can call function @code{C} in its very last statement. In 11127unoptimized compilation the call of @code{C} is immediately followed by return 11128instruction at the end of @code{B} code. Optimizing compiler may replace the 11129call and return in function @code{B} into one jump to function @code{C} 11130instead. Such use of a jump instruction is called @dfn{tail call}. 11131 11132During execution of function @code{C}, there will be no indication in the 11133function call stack frames that it was tail-called from @code{B}. If function 11134@code{A} regularly calls function @code{B} which tail-calls function @code{C}, 11135then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in 11136some cases @value{GDBN} can determine that @code{C} was tail-called from 11137@code{B}, and it will then create fictitious call frame for that, with the 11138return address set up as if @code{B} called @code{C} normally. 11139 11140This functionality is currently supported only by DWARF 2 debugging format and 11141the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With 11142@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 11143this information. 11144 11145@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame 11146kind by text @code{tail call frame} such as in this sample @value{GDBN} output: 11147 11148@smallexample 11149(gdb) x/i $pc - 2 11150 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)> 11151(gdb) info frame 11152Stack level 1, frame at 0x7fffffffda30: 11153 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5 11154 tail call frame, caller of frame at 0x7fffffffda30 11155 source language c++. 11156 Arglist at unknown address. 11157 Locals at unknown address, Previous frame's sp is 0x7fffffffda30 11158@end smallexample 11159 11160The detection of all the possible code path executions can find them ambiguous. 11161There is no execution history stored (possible @ref{Reverse Execution} is never 11162used for this purpose) and the last known caller could have reached the known 11163callee by multiple different jump sequences. In such case @value{GDBN} still 11164tries to show at least all the unambiguous top tail callers and all the 11165unambiguous bottom tail calees, if any. 11166 11167@table @code 11168@anchor{set debug entry-values} 11169@item set debug entry-values 11170@kindex set debug entry-values 11171When set to on, enables printing of analysis messages for both frame argument 11172values at function entry and tail calls. It will show all the possible valid 11173tail calls code paths it has considered. It will also print the intersection 11174of them with the final unambiguous (possibly partial or even empty) code path 11175result. 11176 11177@item show debug entry-values 11178@kindex show debug entry-values 11179Show the current state of analysis messages printing for both frame argument 11180values at function entry and tail calls. 11181@end table 11182 11183The analysis messages for tail calls can for example show why the virtual tail 11184call frame for function @code{c} has not been recognized (due to the indirect 11185reference by variable @code{x}): 11186 11187@smallexample 11188static void __attribute__((noinline, noclone)) c (void); 11189void (*x) (void) = c; 11190static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 11191static void __attribute__((noinline, noclone)) c (void) @{ a (); @} 11192int main (void) @{ x (); return 0; @} 11193 11194Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find 11195DW_TAG_GNU_call_site 0x40039a in main 11196a () at t.c:3 111973 static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 11198(gdb) bt 11199#0 a () at t.c:3 11200#1 0x000000000040039a in main () at t.c:5 11201@end smallexample 11202 11203Another possibility is an ambiguous virtual tail call frames resolution: 11204 11205@smallexample 11206int i; 11207static void __attribute__((noinline, noclone)) f (void) @{ i++; @} 11208static void __attribute__((noinline, noclone)) e (void) @{ f (); @} 11209static void __attribute__((noinline, noclone)) d (void) @{ f (); @} 11210static void __attribute__((noinline, noclone)) c (void) @{ d (); @} 11211static void __attribute__((noinline, noclone)) b (void) 11212@{ if (i) c (); else e (); @} 11213static void __attribute__((noinline, noclone)) a (void) @{ b (); @} 11214int main (void) @{ a (); return 0; @} 11215 11216tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d) 11217tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e) 11218tailcall: reduced: 0x4004d2(a) | 11219(gdb) bt 11220#0 f () at t.c:2 11221#1 0x00000000004004d2 in a () at t.c:8 11222#2 0x0000000000400395 in main () at t.c:9 11223@end smallexample 11224 11225@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f} 11226@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f} 11227 11228@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK. 11229@ifset HAVE_MAKEINFO_CLICK 11230@set ARROW @click{} 11231@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}} 11232@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}} 11233@end ifset 11234@ifclear HAVE_MAKEINFO_CLICK 11235@set ARROW -> 11236@set CALLSEQ1B @value{CALLSEQ1A} 11237@set CALLSEQ2B @value{CALLSEQ2A} 11238@end ifclear 11239 11240Frames #0 and #2 are real, #1 is a virtual tail call frame. 11241The code can have possible execution paths @value{CALLSEQ1B} or 11242@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state. 11243 11244@code{initial:} state shows some random possible calling sequence @value{GDBN} 11245has found. It then finds another possible calling sequcen - that one is 11246prefixed by @code{compare:}. The non-ambiguous intersection of these two is 11247printed as the @code{reduced:} calling sequence. That one could have many 11248futher @code{compare:} and @code{reduced:} statements as long as there remain 11249any non-ambiguous sequence entries. 11250 11251For the frame of function @code{b} in both cases there are different possible 11252@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is 11253also ambigous. The only non-ambiguous frame is the one for function @code{a}, 11254therefore this one is displayed to the user while the ambiguous frames are 11255omitted. 11256 11257There can be also reasons why printing of frame argument values at function 11258entry may fail: 11259 11260@smallexample 11261int v; 11262static void __attribute__((noinline, noclone)) c (int i) @{ v++; @} 11263static void __attribute__((noinline, noclone)) a (int i); 11264static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @} 11265static void __attribute__((noinline, noclone)) a (int i) 11266@{ if (i) b (i - 1); else c (0); @} 11267int main (void) @{ a (5); return 0; @} 11268 11269(gdb) bt 11270#0 c (i=i@@entry=0) at t.c:2 11271#1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found 11272function "a" at 0x400420 can call itself via tail calls 11273i=<optimized out>) at t.c:6 11274#2 0x000000000040036e in main () at t.c:7 11275@end smallexample 11276 11277@value{GDBN} cannot find out from the inferior state if and how many times did 11278function @code{a} call itself (via function @code{b}) as these calls would be 11279tail calls. Such tail calls would modify thue @code{i} variable, therefore 11280@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN} 11281prints @code{<optimized out>} instead. 11282 11283@node Macros 11284@chapter C Preprocessor Macros 11285 11286Some languages, such as C and C@t{++}, provide a way to define and invoke 11287``preprocessor macros'' which expand into strings of tokens. 11288@value{GDBN} can evaluate expressions containing macro invocations, show 11289the result of macro expansion, and show a macro's definition, including 11290where it was defined. 11291 11292You may need to compile your program specially to provide @value{GDBN} 11293with information about preprocessor macros. Most compilers do not 11294include macros in their debugging information, even when you compile 11295with the @option{-g} flag. @xref{Compilation}. 11296 11297A program may define a macro at one point, remove that definition later, 11298and then provide a different definition after that. Thus, at different 11299points in the program, a macro may have different definitions, or have 11300no definition at all. If there is a current stack frame, @value{GDBN} 11301uses the macros in scope at that frame's source code line. Otherwise, 11302@value{GDBN} uses the macros in scope at the current listing location; 11303see @ref{List}. 11304 11305Whenever @value{GDBN} evaluates an expression, it always expands any 11306macro invocations present in the expression. @value{GDBN} also provides 11307the following commands for working with macros explicitly. 11308 11309@table @code 11310 11311@kindex macro expand 11312@cindex macro expansion, showing the results of preprocessor 11313@cindex preprocessor macro expansion, showing the results of 11314@cindex expanding preprocessor macros 11315@item macro expand @var{expression} 11316@itemx macro exp @var{expression} 11317Show the results of expanding all preprocessor macro invocations in 11318@var{expression}. Since @value{GDBN} simply expands macros, but does 11319not parse the result, @var{expression} need not be a valid expression; 11320it can be any string of tokens. 11321 11322@kindex macro exp1 11323@item macro expand-once @var{expression} 11324@itemx macro exp1 @var{expression} 11325@cindex expand macro once 11326@i{(This command is not yet implemented.)} Show the results of 11327expanding those preprocessor macro invocations that appear explicitly in 11328@var{expression}. Macro invocations appearing in that expansion are 11329left unchanged. This command allows you to see the effect of a 11330particular macro more clearly, without being confused by further 11331expansions. Since @value{GDBN} simply expands macros, but does not 11332parse the result, @var{expression} need not be a valid expression; it 11333can be any string of tokens. 11334 11335@kindex info macro 11336@cindex macro definition, showing 11337@cindex definition of a macro, showing 11338@cindex macros, from debug info 11339@item info macro [-a|-all] [--] @var{macro} 11340Show the current definition or all definitions of the named @var{macro}, 11341and describe the source location or compiler command-line where that 11342definition was established. The optional double dash is to signify the end of 11343argument processing and the beginning of @var{macro} for non C-like macros where 11344the macro may begin with a hyphen. 11345 11346@kindex info macros 11347@item info macros @var{linespec} 11348Show all macro definitions that are in effect at the location specified 11349by @var{linespec}, and describe the source location or compiler 11350command-line where those definitions were established. 11351 11352@kindex macro define 11353@cindex user-defined macros 11354@cindex defining macros interactively 11355@cindex macros, user-defined 11356@item macro define @var{macro} @var{replacement-list} 11357@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list} 11358Introduce a definition for a preprocessor macro named @var{macro}, 11359invocations of which are replaced by the tokens given in 11360@var{replacement-list}. The first form of this command defines an 11361``object-like'' macro, which takes no arguments; the second form 11362defines a ``function-like'' macro, which takes the arguments given in 11363@var{arglist}. 11364 11365A definition introduced by this command is in scope in every 11366expression evaluated in @value{GDBN}, until it is removed with the 11367@code{macro undef} command, described below. The definition overrides 11368all definitions for @var{macro} present in the program being debugged, 11369as well as any previous user-supplied definition. 11370 11371@kindex macro undef 11372@item macro undef @var{macro} 11373Remove any user-supplied definition for the macro named @var{macro}. 11374This command only affects definitions provided with the @code{macro 11375define} command, described above; it cannot remove definitions present 11376in the program being debugged. 11377 11378@kindex macro list 11379@item macro list 11380List all the macros defined using the @code{macro define} command. 11381@end table 11382 11383@cindex macros, example of debugging with 11384Here is a transcript showing the above commands in action. First, we 11385show our source files: 11386 11387@smallexample 11388$ cat sample.c 11389#include <stdio.h> 11390#include "sample.h" 11391 11392#define M 42 11393#define ADD(x) (M + x) 11394 11395main () 11396@{ 11397#define N 28 11398 printf ("Hello, world!\n"); 11399#undef N 11400 printf ("We're so creative.\n"); 11401#define N 1729 11402 printf ("Goodbye, world!\n"); 11403@} 11404$ cat sample.h 11405#define Q < 11406$ 11407@end smallexample 11408 11409Now, we compile the program using the @sc{gnu} C compiler, 11410@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the 11411minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3} 11412and @option{-gdwarf-4}; we recommend always choosing the most recent 11413version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler 11414includes information about preprocessor macros in the debugging 11415information. 11416 11417@smallexample 11418$ gcc -gdwarf-2 -g3 sample.c -o sample 11419$ 11420@end smallexample 11421 11422Now, we start @value{GDBN} on our sample program: 11423 11424@smallexample 11425$ gdb -nw sample 11426GNU gdb 2002-05-06-cvs 11427Copyright 2002 Free Software Foundation, Inc. 11428GDB is free software, @dots{} 11429(@value{GDBP}) 11430@end smallexample 11431 11432We can expand macros and examine their definitions, even when the 11433program is not running. @value{GDBN} uses the current listing position 11434to decide which macro definitions are in scope: 11435 11436@smallexample 11437(@value{GDBP}) list main 114383 114394 #define M 42 114405 #define ADD(x) (M + x) 114416 114427 main () 114438 @{ 114449 #define N 28 1144510 printf ("Hello, world!\n"); 1144611 #undef N 1144712 printf ("We're so creative.\n"); 11448(@value{GDBP}) info macro ADD 11449Defined at /home/jimb/gdb/macros/play/sample.c:5 11450#define ADD(x) (M + x) 11451(@value{GDBP}) info macro Q 11452Defined at /home/jimb/gdb/macros/play/sample.h:1 11453 included at /home/jimb/gdb/macros/play/sample.c:2 11454#define Q < 11455(@value{GDBP}) macro expand ADD(1) 11456expands to: (42 + 1) 11457(@value{GDBP}) macro expand-once ADD(1) 11458expands to: once (M + 1) 11459(@value{GDBP}) 11460@end smallexample 11461 11462In the example above, note that @code{macro expand-once} expands only 11463the macro invocation explicit in the original text --- the invocation of 11464@code{ADD} --- but does not expand the invocation of the macro @code{M}, 11465which was introduced by @code{ADD}. 11466 11467Once the program is running, @value{GDBN} uses the macro definitions in 11468force at the source line of the current stack frame: 11469 11470@smallexample 11471(@value{GDBP}) break main 11472Breakpoint 1 at 0x8048370: file sample.c, line 10. 11473(@value{GDBP}) run 11474Starting program: /home/jimb/gdb/macros/play/sample 11475 11476Breakpoint 1, main () at sample.c:10 1147710 printf ("Hello, world!\n"); 11478(@value{GDBP}) 11479@end smallexample 11480 11481At line 10, the definition of the macro @code{N} at line 9 is in force: 11482 11483@smallexample 11484(@value{GDBP}) info macro N 11485Defined at /home/jimb/gdb/macros/play/sample.c:9 11486#define N 28 11487(@value{GDBP}) macro expand N Q M 11488expands to: 28 < 42 11489(@value{GDBP}) print N Q M 11490$1 = 1 11491(@value{GDBP}) 11492@end smallexample 11493 11494As we step over directives that remove @code{N}'s definition, and then 11495give it a new definition, @value{GDBN} finds the definition (or lack 11496thereof) in force at each point: 11497 11498@smallexample 11499(@value{GDBP}) next 11500Hello, world! 1150112 printf ("We're so creative.\n"); 11502(@value{GDBP}) info macro N 11503The symbol `N' has no definition as a C/C++ preprocessor macro 11504at /home/jimb/gdb/macros/play/sample.c:12 11505(@value{GDBP}) next 11506We're so creative. 1150714 printf ("Goodbye, world!\n"); 11508(@value{GDBP}) info macro N 11509Defined at /home/jimb/gdb/macros/play/sample.c:13 11510#define N 1729 11511(@value{GDBP}) macro expand N Q M 11512expands to: 1729 < 42 11513(@value{GDBP}) print N Q M 11514$2 = 0 11515(@value{GDBP}) 11516@end smallexample 11517 11518In addition to source files, macros can be defined on the compilation command 11519line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in 11520such a way, @value{GDBN} displays the location of their definition as line zero 11521of the source file submitted to the compiler. 11522 11523@smallexample 11524(@value{GDBP}) info macro __STDC__ 11525Defined at /home/jimb/gdb/macros/play/sample.c:0 11526-D__STDC__=1 11527(@value{GDBP}) 11528@end smallexample 11529 11530 11531@node Tracepoints 11532@chapter Tracepoints 11533@c This chapter is based on the documentation written by Michael 11534@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni. 11535 11536@cindex tracepoints 11537In some applications, it is not feasible for the debugger to interrupt 11538the program's execution long enough for the developer to learn 11539anything helpful about its behavior. If the program's correctness 11540depends on its real-time behavior, delays introduced by a debugger 11541might cause the program to change its behavior drastically, or perhaps 11542fail, even when the code itself is correct. It is useful to be able 11543to observe the program's behavior without interrupting it. 11544 11545Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can 11546specify locations in the program, called @dfn{tracepoints}, and 11547arbitrary expressions to evaluate when those tracepoints are reached. 11548Later, using the @code{tfind} command, you can examine the values 11549those expressions had when the program hit the tracepoints. The 11550expressions may also denote objects in memory---structures or arrays, 11551for example---whose values @value{GDBN} should record; while visiting 11552a particular tracepoint, you may inspect those objects as if they were 11553in memory at that moment. However, because @value{GDBN} records these 11554values without interacting with you, it can do so quickly and 11555unobtrusively, hopefully not disturbing the program's behavior. 11556 11557The tracepoint facility is currently available only for remote 11558targets. @xref{Targets}. In addition, your remote target must know 11559how to collect trace data. This functionality is implemented in the 11560remote stub; however, none of the stubs distributed with @value{GDBN} 11561support tracepoints as of this writing. The format of the remote 11562packets used to implement tracepoints are described in @ref{Tracepoint 11563Packets}. 11564 11565It is also possible to get trace data from a file, in a manner reminiscent 11566of corefiles; you specify the filename, and use @code{tfind} to search 11567through the file. @xref{Trace Files}, for more details. 11568 11569This chapter describes the tracepoint commands and features. 11570 11571@menu 11572* Set Tracepoints:: 11573* Analyze Collected Data:: 11574* Tracepoint Variables:: 11575* Trace Files:: 11576@end menu 11577 11578@node Set Tracepoints 11579@section Commands to Set Tracepoints 11580 11581Before running such a @dfn{trace experiment}, an arbitrary number of 11582tracepoints can be set. A tracepoint is actually a special type of 11583breakpoint (@pxref{Set Breaks}), so you can manipulate it using 11584standard breakpoint commands. For instance, as with breakpoints, 11585tracepoint numbers are successive integers starting from one, and many 11586of the commands associated with tracepoints take the tracepoint number 11587as their argument, to identify which tracepoint to work on. 11588 11589For each tracepoint, you can specify, in advance, some arbitrary set 11590of data that you want the target to collect in the trace buffer when 11591it hits that tracepoint. The collected data can include registers, 11592local variables, or global data. Later, you can use @value{GDBN} 11593commands to examine the values these data had at the time the 11594tracepoint was hit. 11595 11596Tracepoints do not support every breakpoint feature. Ignore counts on 11597tracepoints have no effect, and tracepoints cannot run @value{GDBN} 11598commands when they are hit. Tracepoints may not be thread-specific 11599either. 11600 11601@cindex fast tracepoints 11602Some targets may support @dfn{fast tracepoints}, which are inserted in 11603a different way (such as with a jump instead of a trap), that is 11604faster but possibly restricted in where they may be installed. 11605 11606@cindex static tracepoints 11607@cindex markers, static tracepoints 11608@cindex probing markers, static tracepoints 11609Regular and fast tracepoints are dynamic tracing facilities, meaning 11610that they can be used to insert tracepoints at (almost) any location 11611in the target. Some targets may also support controlling @dfn{static 11612tracepoints} from @value{GDBN}. With static tracing, a set of 11613instrumentation points, also known as @dfn{markers}, are embedded in 11614the target program, and can be activated or deactivated by name or 11615address. These are usually placed at locations which facilitate 11616investigating what the target is actually doing. @value{GDBN}'s 11617support for static tracing includes being able to list instrumentation 11618points, and attach them with @value{GDBN} defined high level 11619tracepoints that expose the whole range of convenience of 11620@value{GDBN}'s tracepoints support. Namely, support for collecting 11621registers values and values of global or local (to the instrumentation 11622point) variables; tracepoint conditions and trace state variables. 11623The act of installing a @value{GDBN} static tracepoint on an 11624instrumentation point, or marker, is referred to as @dfn{probing} a 11625static tracepoint marker. 11626 11627@code{gdbserver} supports tracepoints on some target systems. 11628@xref{Server,,Tracepoints support in @code{gdbserver}}. 11629 11630This section describes commands to set tracepoints and associated 11631conditions and actions. 11632 11633@menu 11634* Create and Delete Tracepoints:: 11635* Enable and Disable Tracepoints:: 11636* Tracepoint Passcounts:: 11637* Tracepoint Conditions:: 11638* Trace State Variables:: 11639* Tracepoint Actions:: 11640* Listing Tracepoints:: 11641* Listing Static Tracepoint Markers:: 11642* Starting and Stopping Trace Experiments:: 11643* Tracepoint Restrictions:: 11644@end menu 11645 11646@node Create and Delete Tracepoints 11647@subsection Create and Delete Tracepoints 11648 11649@table @code 11650@cindex set tracepoint 11651@kindex trace 11652@item trace @var{location} 11653The @code{trace} command is very similar to the @code{break} command. 11654Its argument @var{location} can be a source line, a function name, or 11655an address in the target program. @xref{Specify Location}. The 11656@code{trace} command defines a tracepoint, which is a point in the 11657target program where the debugger will briefly stop, collect some 11658data, and then allow the program to continue. Setting a tracepoint or 11659changing its actions takes effect immediately if the remote stub 11660supports the @samp{InstallInTrace} feature (@pxref{install tracepoint 11661in tracing}). 11662If remote stub doesn't support the @samp{InstallInTrace} feature, all 11663these changes don't take effect until the next @code{tstart} 11664command, and once a trace experiment is running, further changes will 11665not have any effect until the next trace experiment starts. In addition, 11666@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose 11667address is not yet resolved. (This is similar to pending breakpoints.) 11668Pending tracepoints are not downloaded to the target and not installed 11669until they are resolved. The resolution of pending tracepoints requires 11670@value{GDBN} support---when debugging with the remote target, and 11671@value{GDBN} disconnects from the remote stub (@pxref{disconnected 11672tracing}), pending tracepoints can not be resolved (and downloaded to 11673the remote stub) while @value{GDBN} is disconnected. 11674 11675Here are some examples of using the @code{trace} command: 11676 11677@smallexample 11678(@value{GDBP}) @b{trace foo.c:121} // a source file and line number 11679 11680(@value{GDBP}) @b{trace +2} // 2 lines forward 11681 11682(@value{GDBP}) @b{trace my_function} // first source line of function 11683 11684(@value{GDBP}) @b{trace *my_function} // EXACT start address of function 11685 11686(@value{GDBP}) @b{trace *0x2117c4} // an address 11687@end smallexample 11688 11689@noindent 11690You can abbreviate @code{trace} as @code{tr}. 11691 11692@item trace @var{location} if @var{cond} 11693Set a tracepoint with condition @var{cond}; evaluate the expression 11694@var{cond} each time the tracepoint is reached, and collect data only 11695if the value is nonzero---that is, if @var{cond} evaluates as true. 11696@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more 11697information on tracepoint conditions. 11698 11699@item ftrace @var{location} [ if @var{cond} ] 11700@cindex set fast tracepoint 11701@cindex fast tracepoints, setting 11702@kindex ftrace 11703The @code{ftrace} command sets a fast tracepoint. For targets that 11704support them, fast tracepoints will use a more efficient but possibly 11705less general technique to trigger data collection, such as a jump 11706instruction instead of a trap, or some sort of hardware support. It 11707may not be possible to create a fast tracepoint at the desired 11708location, in which case the command will exit with an explanatory 11709message. 11710 11711@value{GDBN} handles arguments to @code{ftrace} exactly as for 11712@code{trace}. 11713 11714On 32-bit x86-architecture systems, fast tracepoints normally need to 11715be placed at an instruction that is 5 bytes or longer, but can be 11716placed at 4-byte instructions if the low 64K of memory of the target 11717program is available to install trampolines. Some Unix-type systems, 11718such as @sc{gnu}/Linux, exclude low addresses from the program's 11719address space; but for instance with the Linux kernel it is possible 11720to let @value{GDBN} use this area by doing a @command{sysctl} command 11721to set the @code{mmap_min_addr} kernel parameter, as in 11722 11723@example 11724sudo sysctl -w vm.mmap_min_addr=32768 11725@end example 11726 11727@noindent 11728which sets the low address to 32K, which leaves plenty of room for 11729trampolines. The minimum address should be set to a page boundary. 11730 11731@item strace @var{location} [ if @var{cond} ] 11732@cindex set static tracepoint 11733@cindex static tracepoints, setting 11734@cindex probe static tracepoint marker 11735@kindex strace 11736The @code{strace} command sets a static tracepoint. For targets that 11737support it, setting a static tracepoint probes a static 11738instrumentation point, or marker, found at @var{location}. It may not 11739be possible to set a static tracepoint at the desired location, in 11740which case the command will exit with an explanatory message. 11741 11742@value{GDBN} handles arguments to @code{strace} exactly as for 11743@code{trace}, with the addition that the user can also specify 11744@code{-m @var{marker}} as @var{location}. This probes the marker 11745identified by the @var{marker} string identifier. This identifier 11746depends on the static tracepoint backend library your program is 11747using. You can find all the marker identifiers in the @samp{ID} field 11748of the @code{info static-tracepoint-markers} command output. 11749@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint 11750Markers}. For example, in the following small program using the UST 11751tracing engine: 11752 11753@smallexample 11754main () 11755@{ 11756 trace_mark(ust, bar33, "str %s", "FOOBAZ"); 11757@} 11758@end smallexample 11759 11760@noindent 11761the marker id is composed of joining the first two arguments to the 11762@code{trace_mark} call with a slash, which translates to: 11763 11764@smallexample 11765(@value{GDBP}) info static-tracepoint-markers 11766Cnt Enb ID Address What 117671 n ust/bar33 0x0000000000400ddc in main at stexample.c:22 11768 Data: "str %s" 11769[etc...] 11770@end smallexample 11771 11772@noindent 11773so you may probe the marker above with: 11774 11775@smallexample 11776(@value{GDBP}) strace -m ust/bar33 11777@end smallexample 11778 11779Static tracepoints accept an extra collect action --- @code{collect 11780$_sdata}. This collects arbitrary user data passed in the probe point 11781call to the tracing library. In the UST example above, you'll see 11782that the third argument to @code{trace_mark} is a printf-like format 11783string. The user data is then the result of running that formating 11784string against the following arguments. Note that @code{info 11785static-tracepoint-markers} command output lists that format string in 11786the @samp{Data:} field. 11787 11788You can inspect this data when analyzing the trace buffer, by printing 11789the $_sdata variable like any other variable available to 11790@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}. 11791 11792@vindex $tpnum 11793@cindex last tracepoint number 11794@cindex recent tracepoint number 11795@cindex tracepoint number 11796The convenience variable @code{$tpnum} records the tracepoint number 11797of the most recently set tracepoint. 11798 11799@kindex delete tracepoint 11800@cindex tracepoint deletion 11801@item delete tracepoint @r{[}@var{num}@r{]} 11802Permanently delete one or more tracepoints. With no argument, the 11803default is to delete all tracepoints. Note that the regular 11804@code{delete} command can remove tracepoints also. 11805 11806Examples: 11807 11808@smallexample 11809(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints 11810 11811(@value{GDBP}) @b{delete trace} // remove all tracepoints 11812@end smallexample 11813 11814@noindent 11815You can abbreviate this command as @code{del tr}. 11816@end table 11817 11818@node Enable and Disable Tracepoints 11819@subsection Enable and Disable Tracepoints 11820 11821These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}. 11822 11823@table @code 11824@kindex disable tracepoint 11825@item disable tracepoint @r{[}@var{num}@r{]} 11826Disable tracepoint @var{num}, or all tracepoints if no argument 11827@var{num} is given. A disabled tracepoint will have no effect during 11828a trace experiment, but it is not forgotten. You can re-enable 11829a disabled tracepoint using the @code{enable tracepoint} command. 11830If the command is issued during a trace experiment and the debug target 11831has support for disabling tracepoints during a trace experiment, then the 11832change will be effective immediately. Otherwise, it will be applied to the 11833next trace experiment. 11834 11835@kindex enable tracepoint 11836@item enable tracepoint @r{[}@var{num}@r{]} 11837Enable tracepoint @var{num}, or all tracepoints. If this command is 11838issued during a trace experiment and the debug target supports enabling 11839tracepoints during a trace experiment, then the enabled tracepoints will 11840become effective immediately. Otherwise, they will become effective the 11841next time a trace experiment is run. 11842@end table 11843 11844@node Tracepoint Passcounts 11845@subsection Tracepoint Passcounts 11846 11847@table @code 11848@kindex passcount 11849@cindex tracepoint pass count 11850@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]} 11851Set the @dfn{passcount} of a tracepoint. The passcount is a way to 11852automatically stop a trace experiment. If a tracepoint's passcount is 11853@var{n}, then the trace experiment will be automatically stopped on 11854the @var{n}'th time that tracepoint is hit. If the tracepoint number 11855@var{num} is not specified, the @code{passcount} command sets the 11856passcount of the most recently defined tracepoint. If no passcount is 11857given, the trace experiment will run until stopped explicitly by the 11858user. 11859 11860Examples: 11861 11862@smallexample 11863(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of 11864@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2} 11865 11866(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the 11867@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.} 11868(@value{GDBP}) @b{trace foo} 11869(@value{GDBP}) @b{pass 3} 11870(@value{GDBP}) @b{trace bar} 11871(@value{GDBP}) @b{pass 2} 11872(@value{GDBP}) @b{trace baz} 11873(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been 11874@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has} 11875@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times} 11876@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.} 11877@end smallexample 11878@end table 11879 11880@node Tracepoint Conditions 11881@subsection Tracepoint Conditions 11882@cindex conditional tracepoints 11883@cindex tracepoint conditions 11884 11885The simplest sort of tracepoint collects data every time your program 11886reaches a specified place. You can also specify a @dfn{condition} for 11887a tracepoint. A condition is just a Boolean expression in your 11888programming language (@pxref{Expressions, ,Expressions}). A 11889tracepoint with a condition evaluates the expression each time your 11890program reaches it, and data collection happens only if the condition 11891is true. 11892 11893Tracepoint conditions can be specified when a tracepoint is set, by 11894using @samp{if} in the arguments to the @code{trace} command. 11895@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can 11896also be set or changed at any time with the @code{condition} command, 11897just as with breakpoints. 11898 11899Unlike breakpoint conditions, @value{GDBN} does not actually evaluate 11900the conditional expression itself. Instead, @value{GDBN} encodes the 11901expression into an agent expression (@pxref{Agent Expressions}) 11902suitable for execution on the target, independently of @value{GDBN}. 11903Global variables become raw memory locations, locals become stack 11904accesses, and so forth. 11905 11906For instance, suppose you have a function that is usually called 11907frequently, but should not be called after an error has occurred. You 11908could use the following tracepoint command to collect data about calls 11909of that function that happen while the error code is propagating 11910through the program; an unconditional tracepoint could end up 11911collecting thousands of useless trace frames that you would have to 11912search through. 11913 11914@smallexample 11915(@value{GDBP}) @kbd{trace normal_operation if errcode > 0} 11916@end smallexample 11917 11918@node Trace State Variables 11919@subsection Trace State Variables 11920@cindex trace state variables 11921 11922A @dfn{trace state variable} is a special type of variable that is 11923created and managed by target-side code. The syntax is the same as 11924that for GDB's convenience variables (a string prefixed with ``$''), 11925but they are stored on the target. They must be created explicitly, 11926using a @code{tvariable} command. They are always 64-bit signed 11927integers. 11928 11929Trace state variables are remembered by @value{GDBN}, and downloaded 11930to the target along with tracepoint information when the trace 11931experiment starts. There are no intrinsic limits on the number of 11932trace state variables, beyond memory limitations of the target. 11933 11934@cindex convenience variables, and trace state variables 11935Although trace state variables are managed by the target, you can use 11936them in print commands and expressions as if they were convenience 11937variables; @value{GDBN} will get the current value from the target 11938while the trace experiment is running. Trace state variables share 11939the same namespace as other ``$'' variables, which means that you 11940cannot have trace state variables with names like @code{$23} or 11941@code{$pc}, nor can you have a trace state variable and a convenience 11942variable with the same name. 11943 11944@table @code 11945 11946@item tvariable $@var{name} [ = @var{expression} ] 11947@kindex tvariable 11948The @code{tvariable} command creates a new trace state variable named 11949@code{$@var{name}}, and optionally gives it an initial value of 11950@var{expression}. @var{expression} is evaluated when this command is 11951entered; the result will be converted to an integer if possible, 11952otherwise @value{GDBN} will report an error. A subsequent 11953@code{tvariable} command specifying the same name does not create a 11954variable, but instead assigns the supplied initial value to the 11955existing variable of that name, overwriting any previous initial 11956value. The default initial value is 0. 11957 11958@item info tvariables 11959@kindex info tvariables 11960List all the trace state variables along with their initial values. 11961Their current values may also be displayed, if the trace experiment is 11962currently running. 11963 11964@item delete tvariable @r{[} $@var{name} @dots{} @r{]} 11965@kindex delete tvariable 11966Delete the given trace state variables, or all of them if no arguments 11967are specified. 11968 11969@end table 11970 11971@node Tracepoint Actions 11972@subsection Tracepoint Action Lists 11973 11974@table @code 11975@kindex actions 11976@cindex tracepoint actions 11977@item actions @r{[}@var{num}@r{]} 11978This command will prompt for a list of actions to be taken when the 11979tracepoint is hit. If the tracepoint number @var{num} is not 11980specified, this command sets the actions for the one that was most 11981recently defined (so that you can define a tracepoint and then say 11982@code{actions} without bothering about its number). You specify the 11983actions themselves on the following lines, one action at a time, and 11984terminate the actions list with a line containing just @code{end}. So 11985far, the only defined actions are @code{collect}, @code{teval}, and 11986@code{while-stepping}. 11987 11988@code{actions} is actually equivalent to @code{commands} (@pxref{Break 11989Commands, ,Breakpoint Command Lists}), except that only the defined 11990actions are allowed; any other @value{GDBN} command is rejected. 11991 11992@cindex remove actions from a tracepoint 11993To remove all actions from a tracepoint, type @samp{actions @var{num}} 11994and follow it immediately with @samp{end}. 11995 11996@smallexample 11997(@value{GDBP}) @b{collect @var{data}} // collect some data 11998 11999(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data 12000 12001(@value{GDBP}) @b{end} // signals the end of actions. 12002@end smallexample 12003 12004In the following example, the action list begins with @code{collect} 12005commands indicating the things to be collected when the tracepoint is 12006hit. Then, in order to single-step and collect additional data 12007following the tracepoint, a @code{while-stepping} command is used, 12008followed by the list of things to be collected after each step in a 12009sequence of single steps. The @code{while-stepping} command is 12010terminated by its own separate @code{end} command. Lastly, the action 12011list is terminated by an @code{end} command. 12012 12013@smallexample 12014(@value{GDBP}) @b{trace foo} 12015(@value{GDBP}) @b{actions} 12016Enter actions for tracepoint 1, one per line: 12017> collect bar,baz 12018> collect $regs 12019> while-stepping 12 12020 > collect $pc, arr[i] 12021 > end 12022end 12023@end smallexample 12024 12025@kindex collect @r{(tracepoints)} 12026@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{} 12027Collect values of the given expressions when the tracepoint is hit. 12028This command accepts a comma-separated list of any valid expressions. 12029In addition to global, static, or local variables, the following 12030special arguments are supported: 12031 12032@table @code 12033@item $regs 12034Collect all registers. 12035 12036@item $args 12037Collect all function arguments. 12038 12039@item $locals 12040Collect all local variables. 12041 12042@item $_ret 12043Collect the return address. This is helpful if you want to see more 12044of a backtrace. 12045 12046@item $_probe_argc 12047Collects the number of arguments from the static probe at which the 12048tracepoint is located. 12049@xref{Static Probe Points}. 12050 12051@item $_probe_arg@var{n} 12052@var{n} is an integer between 0 and 11. Collects the @var{n}th argument 12053from the static probe at which the tracepoint is located. 12054@xref{Static Probe Points}. 12055 12056@item $_sdata 12057@vindex $_sdata@r{, collect} 12058Collect static tracepoint marker specific data. Only available for 12059static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action 12060Lists}. On the UST static tracepoints library backend, an 12061instrumentation point resembles a @code{printf} function call. The 12062tracing library is able to collect user specified data formatted to a 12063character string using the format provided by the programmer that 12064instrumented the program. Other backends have similar mechanisms. 12065Here's an example of a UST marker call: 12066 12067@smallexample 12068 const char master_name[] = "$your_name"; 12069 trace_mark(channel1, marker1, "hello %s", master_name) 12070@end smallexample 12071 12072In this case, collecting @code{$_sdata} collects the string 12073@samp{hello $yourname}. When analyzing the trace buffer, you can 12074inspect @samp{$_sdata} like any other variable available to 12075@value{GDBN}. 12076@end table 12077 12078You can give several consecutive @code{collect} commands, each one 12079with a single argument, or one @code{collect} command with several 12080arguments separated by commas; the effect is the same. 12081 12082The optional @var{mods} changes the usual handling of the arguments. 12083@code{s} requests that pointers to chars be handled as strings, in 12084particular collecting the contents of the memory being pointed at, up 12085to the first zero. The upper bound is by default the value of the 12086@code{print elements} variable; if @code{s} is followed by a decimal 12087number, that is the upper bound instead. So for instance 12088@samp{collect/s25 mystr} collects as many as 25 characters at 12089@samp{mystr}. 12090 12091The command @code{info scope} (@pxref{Symbols, info scope}) is 12092particularly useful for figuring out what data to collect. 12093 12094@kindex teval @r{(tracepoints)} 12095@item teval @var{expr1}, @var{expr2}, @dots{} 12096Evaluate the given expressions when the tracepoint is hit. This 12097command accepts a comma-separated list of expressions. The results 12098are discarded, so this is mainly useful for assigning values to trace 12099state variables (@pxref{Trace State Variables}) without adding those 12100values to the trace buffer, as would be the case if the @code{collect} 12101action were used. 12102 12103@kindex while-stepping @r{(tracepoints)} 12104@item while-stepping @var{n} 12105Perform @var{n} single-step instruction traces after the tracepoint, 12106collecting new data after each step. The @code{while-stepping} 12107command is followed by the list of what to collect while stepping 12108(followed by its own @code{end} command): 12109 12110@smallexample 12111> while-stepping 12 12112 > collect $regs, myglobal 12113 > end 12114> 12115@end smallexample 12116 12117@noindent 12118Note that @code{$pc} is not automatically collected by 12119@code{while-stepping}; you need to explicitly collect that register if 12120you need it. You may abbreviate @code{while-stepping} as @code{ws} or 12121@code{stepping}. 12122 12123@item set default-collect @var{expr1}, @var{expr2}, @dots{} 12124@kindex set default-collect 12125@cindex default collection action 12126This variable is a list of expressions to collect at each tracepoint 12127hit. It is effectively an additional @code{collect} action prepended 12128to every tracepoint action list. The expressions are parsed 12129individually for each tracepoint, so for instance a variable named 12130@code{xyz} may be interpreted as a global for one tracepoint, and a 12131local for another, as appropriate to the tracepoint's location. 12132 12133@item show default-collect 12134@kindex show default-collect 12135Show the list of expressions that are collected by default at each 12136tracepoint hit. 12137 12138@end table 12139 12140@node Listing Tracepoints 12141@subsection Listing Tracepoints 12142 12143@table @code 12144@kindex info tracepoints @r{[}@var{n}@dots{}@r{]} 12145@kindex info tp @r{[}@var{n}@dots{}@r{]} 12146@cindex information about tracepoints 12147@item info tracepoints @r{[}@var{num}@dots{}@r{]} 12148Display information about the tracepoint @var{num}. If you don't 12149specify a tracepoint number, displays information about all the 12150tracepoints defined so far. The format is similar to that used for 12151@code{info breakpoints}; in fact, @code{info tracepoints} is the same 12152command, simply restricting itself to tracepoints. 12153 12154A tracepoint's listing may include additional information specific to 12155tracing: 12156 12157@itemize @bullet 12158@item 12159its passcount as given by the @code{passcount @var{n}} command 12160 12161@item 12162the state about installed on target of each location 12163@end itemize 12164 12165@smallexample 12166(@value{GDBP}) @b{info trace} 12167Num Type Disp Enb Address What 121681 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7 12169 while-stepping 20 12170 collect globfoo, $regs 12171 end 12172 collect globfoo2 12173 end 12174 pass count 1200 121752 tracepoint keep y <MULTIPLE> 12176 collect $eip 121772.1 y 0x0804859c in func4 at change-loc.h:35 12178 installed on target 121792.2 y 0xb7ffc480 in func4 at change-loc.h:35 12180 installed on target 121812.3 y <PENDING> set_tracepoint 121823 tracepoint keep y 0x080485b1 in foo at change-loc.c:29 12183 not installed on target 12184(@value{GDBP}) 12185@end smallexample 12186 12187@noindent 12188This command can be abbreviated @code{info tp}. 12189@end table 12190 12191@node Listing Static Tracepoint Markers 12192@subsection Listing Static Tracepoint Markers 12193 12194@table @code 12195@kindex info static-tracepoint-markers 12196@cindex information about static tracepoint markers 12197@item info static-tracepoint-markers 12198Display information about all static tracepoint markers defined in the 12199program. 12200 12201For each marker, the following columns are printed: 12202 12203@table @emph 12204@item Count 12205An incrementing counter, output to help readability. This is not a 12206stable identifier. 12207@item ID 12208The marker ID, as reported by the target. 12209@item Enabled or Disabled 12210Probed markers are tagged with @samp{y}. @samp{n} identifies marks 12211that are not enabled. 12212@item Address 12213Where the marker is in your program, as a memory address. 12214@item What 12215Where the marker is in the source for your program, as a file and line 12216number. If the debug information included in the program does not 12217allow @value{GDBN} to locate the source of the marker, this column 12218will be left blank. 12219@end table 12220 12221@noindent 12222In addition, the following information may be printed for each marker: 12223 12224@table @emph 12225@item Data 12226User data passed to the tracing library by the marker call. In the 12227UST backend, this is the format string passed as argument to the 12228marker call. 12229@item Static tracepoints probing the marker 12230The list of static tracepoints attached to the marker. 12231@end table 12232 12233@smallexample 12234(@value{GDBP}) info static-tracepoint-markers 12235Cnt ID Enb Address What 122361 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25 12237 Data: number1 %d number2 %d 12238 Probed by static tracepoints: #2 122392 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24 12240 Data: str %s 12241(@value{GDBP}) 12242@end smallexample 12243@end table 12244 12245@node Starting and Stopping Trace Experiments 12246@subsection Starting and Stopping Trace Experiments 12247 12248@table @code 12249@kindex tstart [ @var{notes} ] 12250@cindex start a new trace experiment 12251@cindex collected data discarded 12252@item tstart 12253This command starts the trace experiment, and begins collecting data. 12254It has the side effect of discarding all the data collected in the 12255trace buffer during the previous trace experiment. If any arguments 12256are supplied, they are taken as a note and stored with the trace 12257experiment's state. The notes may be arbitrary text, and are 12258especially useful with disconnected tracing in a multi-user context; 12259the notes can explain what the trace is doing, supply user contact 12260information, and so forth. 12261 12262@kindex tstop [ @var{notes} ] 12263@cindex stop a running trace experiment 12264@item tstop 12265This command stops the trace experiment. If any arguments are 12266supplied, they are recorded with the experiment as a note. This is 12267useful if you are stopping a trace started by someone else, for 12268instance if the trace is interfering with the system's behavior and 12269needs to be stopped quickly. 12270 12271@strong{Note}: a trace experiment and data collection may stop 12272automatically if any tracepoint's passcount is reached 12273(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full. 12274 12275@kindex tstatus 12276@cindex status of trace data collection 12277@cindex trace experiment, status of 12278@item tstatus 12279This command displays the status of the current trace data 12280collection. 12281@end table 12282 12283Here is an example of the commands we described so far: 12284 12285@smallexample 12286(@value{GDBP}) @b{trace gdb_c_test} 12287(@value{GDBP}) @b{actions} 12288Enter actions for tracepoint #1, one per line. 12289> collect $regs,$locals,$args 12290> while-stepping 11 12291 > collect $regs 12292 > end 12293> end 12294(@value{GDBP}) @b{tstart} 12295 [time passes @dots{}] 12296(@value{GDBP}) @b{tstop} 12297@end smallexample 12298 12299@anchor{disconnected tracing} 12300@cindex disconnected tracing 12301You can choose to continue running the trace experiment even if 12302@value{GDBN} disconnects from the target, voluntarily or 12303involuntarily. For commands such as @code{detach}, the debugger will 12304ask what you want to do with the trace. But for unexpected 12305terminations (@value{GDBN} crash, network outage), it would be 12306unfortunate to lose hard-won trace data, so the variable 12307@code{disconnected-tracing} lets you decide whether the trace should 12308continue running without @value{GDBN}. 12309 12310@table @code 12311@item set disconnected-tracing on 12312@itemx set disconnected-tracing off 12313@kindex set disconnected-tracing 12314Choose whether a tracing run should continue to run if @value{GDBN} 12315has disconnected from the target. Note that @code{detach} or 12316@code{quit} will ask you directly what to do about a running trace no 12317matter what this variable's setting, so the variable is mainly useful 12318for handling unexpected situations, such as loss of the network. 12319 12320@item show disconnected-tracing 12321@kindex show disconnected-tracing 12322Show the current choice for disconnected tracing. 12323 12324@end table 12325 12326When you reconnect to the target, the trace experiment may or may not 12327still be running; it might have filled the trace buffer in the 12328meantime, or stopped for one of the other reasons. If it is running, 12329it will continue after reconnection. 12330 12331Upon reconnection, the target will upload information about the 12332tracepoints in effect. @value{GDBN} will then compare that 12333information to the set of tracepoints currently defined, and attempt 12334to match them up, allowing for the possibility that the numbers may 12335have changed due to creation and deletion in the meantime. If one of 12336the target's tracepoints does not match any in @value{GDBN}, the 12337debugger will create a new tracepoint, so that you have a number with 12338which to specify that tracepoint. This matching-up process is 12339necessarily heuristic, and it may result in useless tracepoints being 12340created; you may simply delete them if they are of no use. 12341 12342@cindex circular trace buffer 12343If your target agent supports a @dfn{circular trace buffer}, then you 12344can run a trace experiment indefinitely without filling the trace 12345buffer; when space runs out, the agent deletes already-collected trace 12346frames, oldest first, until there is enough room to continue 12347collecting. This is especially useful if your tracepoints are being 12348hit too often, and your trace gets terminated prematurely because the 12349buffer is full. To ask for a circular trace buffer, simply set 12350@samp{circular-trace-buffer} to on. You can set this at any time, 12351including during tracing; if the agent can do it, it will change 12352buffer handling on the fly, otherwise it will not take effect until 12353the next run. 12354 12355@table @code 12356@item set circular-trace-buffer on 12357@itemx set circular-trace-buffer off 12358@kindex set circular-trace-buffer 12359Choose whether a tracing run should use a linear or circular buffer 12360for trace data. A linear buffer will not lose any trace data, but may 12361fill up prematurely, while a circular buffer will discard old trace 12362data, but it will have always room for the latest tracepoint hits. 12363 12364@item show circular-trace-buffer 12365@kindex show circular-trace-buffer 12366Show the current choice for the trace buffer. Note that this may not 12367match the agent's current buffer handling, nor is it guaranteed to 12368match the setting that might have been in effect during a past run, 12369for instance if you are looking at frames from a trace file. 12370 12371@end table 12372 12373@table @code 12374@item set trace-buffer-size @var{n} 12375@itemx set trace-buffer-size unlimited 12376@kindex set trace-buffer-size 12377Request that the target use a trace buffer of @var{n} bytes. Not all 12378targets will honor the request; they may have a compiled-in size for 12379the trace buffer, or some other limitation. Set to a value of 12380@code{unlimited} or @code{-1} to let the target use whatever size it 12381likes. This is also the default. 12382 12383@item show trace-buffer-size 12384@kindex show trace-buffer-size 12385Show the current requested size for the trace buffer. Note that this 12386will only match the actual size if the target supports size-setting, 12387and was able to handle the requested size. For instance, if the 12388target can only change buffer size between runs, this variable will 12389not reflect the change until the next run starts. Use @code{tstatus} 12390to get a report of the actual buffer size. 12391@end table 12392 12393@table @code 12394@item set trace-user @var{text} 12395@kindex set trace-user 12396 12397@item show trace-user 12398@kindex show trace-user 12399 12400@item set trace-notes @var{text} 12401@kindex set trace-notes 12402Set the trace run's notes. 12403 12404@item show trace-notes 12405@kindex show trace-notes 12406Show the trace run's notes. 12407 12408@item set trace-stop-notes @var{text} 12409@kindex set trace-stop-notes 12410Set the trace run's stop notes. The handling of the note is as for 12411@code{tstop} arguments; the set command is convenient way to fix a 12412stop note that is mistaken or incomplete. 12413 12414@item show trace-stop-notes 12415@kindex show trace-stop-notes 12416Show the trace run's stop notes. 12417 12418@end table 12419 12420@node Tracepoint Restrictions 12421@subsection Tracepoint Restrictions 12422 12423@cindex tracepoint restrictions 12424There are a number of restrictions on the use of tracepoints. As 12425described above, tracepoint data gathering occurs on the target 12426without interaction from @value{GDBN}. Thus the full capabilities of 12427the debugger are not available during data gathering, and then at data 12428examination time, you will be limited by only having what was 12429collected. The following items describe some common problems, but it 12430is not exhaustive, and you may run into additional difficulties not 12431mentioned here. 12432 12433@itemize @bullet 12434 12435@item 12436Tracepoint expressions are intended to gather objects (lvalues). Thus 12437the full flexibility of GDB's expression evaluator is not available. 12438You cannot call functions, cast objects to aggregate types, access 12439convenience variables or modify values (except by assignment to trace 12440state variables). Some language features may implicitly call 12441functions (for instance Objective-C fields with accessors), and therefore 12442cannot be collected either. 12443 12444@item 12445Collection of local variables, either individually or in bulk with 12446@code{$locals} or @code{$args}, during @code{while-stepping} may 12447behave erratically. The stepping action may enter a new scope (for 12448instance by stepping into a function), or the location of the variable 12449may change (for instance it is loaded into a register). The 12450tracepoint data recorded uses the location information for the 12451variables that is correct for the tracepoint location. When the 12452tracepoint is created, it is not possible, in general, to determine 12453where the steps of a @code{while-stepping} sequence will advance the 12454program---particularly if a conditional branch is stepped. 12455 12456@item 12457Collection of an incompletely-initialized or partially-destroyed object 12458may result in something that @value{GDBN} cannot display, or displays 12459in a misleading way. 12460 12461@item 12462When @value{GDBN} displays a pointer to character it automatically 12463dereferences the pointer to also display characters of the string 12464being pointed to. However, collecting the pointer during tracing does 12465not automatically collect the string. You need to explicitly 12466dereference the pointer and provide size information if you want to 12467collect not only the pointer, but the memory pointed to. For example, 12468@code{*ptr@@50} can be used to collect the 50 element array pointed to 12469by @code{ptr}. 12470 12471@item 12472It is not possible to collect a complete stack backtrace at a 12473tracepoint. Instead, you may collect the registers and a few hundred 12474bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300} 12475(adjust to use the name of the actual stack pointer register on your 12476target architecture, and the amount of stack you wish to capture). 12477Then the @code{backtrace} command will show a partial backtrace when 12478using a trace frame. The number of stack frames that can be examined 12479depends on the sizes of the frames in the collected stack. Note that 12480if you ask for a block so large that it goes past the bottom of the 12481stack, the target agent may report an error trying to read from an 12482invalid address. 12483 12484@item 12485If you do not collect registers at a tracepoint, @value{GDBN} can 12486infer that the value of @code{$pc} must be the same as the address of 12487the tracepoint and use that when you are looking at a trace frame 12488for that tracepoint. However, this cannot work if the tracepoint has 12489multiple locations (for instance if it was set in a function that was 12490inlined), or if it has a @code{while-stepping} loop. In those cases 12491@value{GDBN} will warn you that it can't infer @code{$pc}, and default 12492it to zero. 12493 12494@end itemize 12495 12496@node Analyze Collected Data 12497@section Using the Collected Data 12498 12499After the tracepoint experiment ends, you use @value{GDBN} commands 12500for examining the trace data. The basic idea is that each tracepoint 12501collects a trace @dfn{snapshot} every time it is hit and another 12502snapshot every time it single-steps. All these snapshots are 12503consecutively numbered from zero and go into a buffer, and you can 12504examine them later. The way you examine them is to @dfn{focus} on a 12505specific trace snapshot. When the remote stub is focused on a trace 12506snapshot, it will respond to all @value{GDBN} requests for memory and 12507registers by reading from the buffer which belongs to that snapshot, 12508rather than from @emph{real} memory or registers of the program being 12509debugged. This means that @strong{all} @value{GDBN} commands 12510(@code{print}, @code{info registers}, @code{backtrace}, etc.) will 12511behave as if we were currently debugging the program state as it was 12512when the tracepoint occurred. Any requests for data that are not in 12513the buffer will fail. 12514 12515@menu 12516* tfind:: How to select a trace snapshot 12517* tdump:: How to display all data for a snapshot 12518* save tracepoints:: How to save tracepoints for a future run 12519@end menu 12520 12521@node tfind 12522@subsection @code{tfind @var{n}} 12523 12524@kindex tfind 12525@cindex select trace snapshot 12526@cindex find trace snapshot 12527The basic command for selecting a trace snapshot from the buffer is 12528@code{tfind @var{n}}, which finds trace snapshot number @var{n}, 12529counting from zero. If no argument @var{n} is given, the next 12530snapshot is selected. 12531 12532Here are the various forms of using the @code{tfind} command. 12533 12534@table @code 12535@item tfind start 12536Find the first snapshot in the buffer. This is a synonym for 12537@code{tfind 0} (since 0 is the number of the first snapshot). 12538 12539@item tfind none 12540Stop debugging trace snapshots, resume @emph{live} debugging. 12541 12542@item tfind end 12543Same as @samp{tfind none}. 12544 12545@item tfind 12546No argument means find the next trace snapshot. 12547 12548@item tfind - 12549Find the previous trace snapshot before the current one. This permits 12550retracing earlier steps. 12551 12552@item tfind tracepoint @var{num} 12553Find the next snapshot associated with tracepoint @var{num}. Search 12554proceeds forward from the last examined trace snapshot. If no 12555argument @var{num} is given, it means find the next snapshot collected 12556for the same tracepoint as the current snapshot. 12557 12558@item tfind pc @var{addr} 12559Find the next snapshot associated with the value @var{addr} of the 12560program counter. Search proceeds forward from the last examined trace 12561snapshot. If no argument @var{addr} is given, it means find the next 12562snapshot with the same value of PC as the current snapshot. 12563 12564@item tfind outside @var{addr1}, @var{addr2} 12565Find the next snapshot whose PC is outside the given range of 12566addresses (exclusive). 12567 12568@item tfind range @var{addr1}, @var{addr2} 12569Find the next snapshot whose PC is between @var{addr1} and 12570@var{addr2} (inclusive). 12571 12572@item tfind line @r{[}@var{file}:@r{]}@var{n} 12573Find the next snapshot associated with the source line @var{n}. If 12574the optional argument @var{file} is given, refer to line @var{n} in 12575that source file. Search proceeds forward from the last examined 12576trace snapshot. If no argument @var{n} is given, it means find the 12577next line other than the one currently being examined; thus saying 12578@code{tfind line} repeatedly can appear to have the same effect as 12579stepping from line to line in a @emph{live} debugging session. 12580@end table 12581 12582The default arguments for the @code{tfind} commands are specifically 12583designed to make it easy to scan through the trace buffer. For 12584instance, @code{tfind} with no argument selects the next trace 12585snapshot, and @code{tfind -} with no argument selects the previous 12586trace snapshot. So, by giving one @code{tfind} command, and then 12587simply hitting @key{RET} repeatedly you can examine all the trace 12588snapshots in order. Or, by saying @code{tfind -} and then hitting 12589@key{RET} repeatedly you can examine the snapshots in reverse order. 12590The @code{tfind line} command with no argument selects the snapshot 12591for the next source line executed. The @code{tfind pc} command with 12592no argument selects the next snapshot with the same program counter 12593(PC) as the current frame. The @code{tfind tracepoint} command with 12594no argument selects the next trace snapshot collected by the same 12595tracepoint as the current one. 12596 12597In addition to letting you scan through the trace buffer manually, 12598these commands make it easy to construct @value{GDBN} scripts that 12599scan through the trace buffer and print out whatever collected data 12600you are interested in. Thus, if we want to examine the PC, FP, and SP 12601registers from each trace frame in the buffer, we can say this: 12602 12603@smallexample 12604(@value{GDBP}) @b{tfind start} 12605(@value{GDBP}) @b{while ($trace_frame != -1)} 12606> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \ 12607 $trace_frame, $pc, $sp, $fp 12608> tfind 12609> end 12610 12611Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44 12612Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44 12613Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44 12614Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44 12615Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44 12616Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44 12617Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44 12618Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44 12619Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44 12620Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44 12621Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14 12622@end smallexample 12623 12624Or, if we want to examine the variable @code{X} at each source line in 12625the buffer: 12626 12627@smallexample 12628(@value{GDBP}) @b{tfind start} 12629(@value{GDBP}) @b{while ($trace_frame != -1)} 12630> printf "Frame %d, X == %d\n", $trace_frame, X 12631> tfind line 12632> end 12633 12634Frame 0, X = 1 12635Frame 7, X = 2 12636Frame 13, X = 255 12637@end smallexample 12638 12639@node tdump 12640@subsection @code{tdump} 12641@kindex tdump 12642@cindex dump all data collected at tracepoint 12643@cindex tracepoint data, display 12644 12645This command takes no arguments. It prints all the data collected at 12646the current trace snapshot. 12647 12648@smallexample 12649(@value{GDBP}) @b{trace 444} 12650(@value{GDBP}) @b{actions} 12651Enter actions for tracepoint #2, one per line: 12652> collect $regs, $locals, $args, gdb_long_test 12653> end 12654 12655(@value{GDBP}) @b{tstart} 12656 12657(@value{GDBP}) @b{tfind line 444} 12658#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66) 12659at gdb_test.c:444 12660444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", ) 12661 12662(@value{GDBP}) @b{tdump} 12663Data collected at tracepoint 2, trace frame 1: 12664d0 0xc4aa0085 -995491707 12665d1 0x18 24 12666d2 0x80 128 12667d3 0x33 51 12668d4 0x71aea3d 119204413 12669d5 0x22 34 12670d6 0xe0 224 12671d7 0x380035 3670069 12672a0 0x19e24a 1696330 12673a1 0x3000668 50333288 12674a2 0x100 256 12675a3 0x322000 3284992 12676a4 0x3000698 50333336 12677a5 0x1ad3cc 1758156 12678fp 0x30bf3c 0x30bf3c 12679sp 0x30bf34 0x30bf34 12680ps 0x0 0 12681pc 0x20b2c8 0x20b2c8 12682fpcontrol 0x0 0 12683fpstatus 0x0 0 12684fpiaddr 0x0 0 12685p = 0x20e5b4 "gdb-test" 12686p1 = (void *) 0x11 12687p2 = (void *) 0x22 12688p3 = (void *) 0x33 12689p4 = (void *) 0x44 12690p5 = (void *) 0x55 12691p6 = (void *) 0x66 12692gdb_long_test = 17 '\021' 12693 12694(@value{GDBP}) 12695@end smallexample 12696 12697@code{tdump} works by scanning the tracepoint's current collection 12698actions and printing the value of each expression listed. So 12699@code{tdump} can fail, if after a run, you change the tracepoint's 12700actions to mention variables that were not collected during the run. 12701 12702Also, for tracepoints with @code{while-stepping} loops, @code{tdump} 12703uses the collected value of @code{$pc} to distinguish between trace 12704frames that were collected at the tracepoint hit, and frames that were 12705collected while stepping. This allows it to correctly choose whether 12706to display the basic list of collections, or the collections from the 12707body of the while-stepping loop. However, if @code{$pc} was not collected, 12708then @code{tdump} will always attempt to dump using the basic collection 12709list, and may fail if a while-stepping frame does not include all the 12710same data that is collected at the tracepoint hit. 12711@c This is getting pretty arcane, example would be good. 12712 12713@node save tracepoints 12714@subsection @code{save tracepoints @var{filename}} 12715@kindex save tracepoints 12716@kindex save-tracepoints 12717@cindex save tracepoints for future sessions 12718 12719This command saves all current tracepoint definitions together with 12720their actions and passcounts, into a file @file{@var{filename}} 12721suitable for use in a later debugging session. To read the saved 12722tracepoint definitions, use the @code{source} command (@pxref{Command 12723Files}). The @w{@code{save-tracepoints}} command is a deprecated 12724alias for @w{@code{save tracepoints}} 12725 12726@node Tracepoint Variables 12727@section Convenience Variables for Tracepoints 12728@cindex tracepoint variables 12729@cindex convenience variables for tracepoints 12730 12731@table @code 12732@vindex $trace_frame 12733@item (int) $trace_frame 12734The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no 12735snapshot is selected. 12736 12737@vindex $tracepoint 12738@item (int) $tracepoint 12739The tracepoint for the current trace snapshot. 12740 12741@vindex $trace_line 12742@item (int) $trace_line 12743The line number for the current trace snapshot. 12744 12745@vindex $trace_file 12746@item (char []) $trace_file 12747The source file for the current trace snapshot. 12748 12749@vindex $trace_func 12750@item (char []) $trace_func 12751The name of the function containing @code{$tracepoint}. 12752@end table 12753 12754Note: @code{$trace_file} is not suitable for use in @code{printf}, 12755use @code{output} instead. 12756 12757Here's a simple example of using these convenience variables for 12758stepping through all the trace snapshots and printing some of their 12759data. Note that these are not the same as trace state variables, 12760which are managed by the target. 12761 12762@smallexample 12763(@value{GDBP}) @b{tfind start} 12764 12765(@value{GDBP}) @b{while $trace_frame != -1} 12766> output $trace_file 12767> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint 12768> tfind 12769> end 12770@end smallexample 12771 12772@node Trace Files 12773@section Using Trace Files 12774@cindex trace files 12775 12776In some situations, the target running a trace experiment may no 12777longer be available; perhaps it crashed, or the hardware was needed 12778for a different activity. To handle these cases, you can arrange to 12779dump the trace data into a file, and later use that file as a source 12780of trace data, via the @code{target tfile} command. 12781 12782@table @code 12783 12784@kindex tsave 12785@item tsave [ -r ] @var{filename} 12786@itemx tsave [-ctf] @var{dirname} 12787Save the trace data to @var{filename}. By default, this command 12788assumes that @var{filename} refers to the host filesystem, so if 12789necessary @value{GDBN} will copy raw trace data up from the target and 12790then save it. If the target supports it, you can also supply the 12791optional argument @code{-r} (``remote'') to direct the target to save 12792the data directly into @var{filename} in its own filesystem, which may be 12793more efficient if the trace buffer is very large. (Note, however, that 12794@code{target tfile} can only read from files accessible to the host.) 12795By default, this command will save trace frame in tfile format. 12796You can supply the optional argument @code{-ctf} to save date in CTF 12797format. The @dfn{Common Trace Format} (CTF) is proposed as a trace format 12798that can be shared by multiple debugging and tracing tools. Please go to 12799@indicateurl{http://www.efficios.com/ctf} to get more information. 12800 12801@kindex target tfile 12802@kindex tfile 12803@kindex target ctf 12804@kindex ctf 12805@item target tfile @var{filename} 12806@itemx target ctf @var{dirname} 12807Use the file named @var{filename} or directory named @var{dirname} as 12808a source of trace data. Commands that examine data work as they do with 12809a live target, but it is not possible to run any new trace experiments. 12810@code{tstatus} will report the state of the trace run at the moment 12811the data was saved, as well as the current trace frame you are examining. 12812@var{filename} or @var{dirname} must be on a filesystem accessible to 12813the host. 12814 12815@smallexample 12816(@value{GDBP}) target ctf ctf.ctf 12817(@value{GDBP}) tfind 12818Found trace frame 0, tracepoint 2 1281939 ++a; /* set tracepoint 1 here */ 12820(@value{GDBP}) tdump 12821Data collected at tracepoint 2, trace frame 0: 12822i = 0 12823a = 0 12824b = 1 '\001' 12825c = @{"123", "456", "789", "123", "456", "789"@} 12826d = @{@{@{a = 1, b = 2@}, @{a = 3, b = 4@}@}, @{@{a = 5, b = 6@}, @{a = 7, b = 8@}@}@} 12827(@value{GDBP}) p b 12828$1 = 1 12829@end smallexample 12830 12831@end table 12832 12833@node Overlays 12834@chapter Debugging Programs That Use Overlays 12835@cindex overlays 12836 12837If your program is too large to fit completely in your target system's 12838memory, you can sometimes use @dfn{overlays} to work around this 12839problem. @value{GDBN} provides some support for debugging programs that 12840use overlays. 12841 12842@menu 12843* How Overlays Work:: A general explanation of overlays. 12844* Overlay Commands:: Managing overlays in @value{GDBN}. 12845* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are 12846 mapped by asking the inferior. 12847* Overlay Sample Program:: A sample program using overlays. 12848@end menu 12849 12850@node How Overlays Work 12851@section How Overlays Work 12852@cindex mapped overlays 12853@cindex unmapped overlays 12854@cindex load address, overlay's 12855@cindex mapped address 12856@cindex overlay area 12857 12858Suppose you have a computer whose instruction address space is only 64 12859kilobytes long, but which has much more memory which can be accessed by 12860other means: special instructions, segment registers, or memory 12861management hardware, for example. Suppose further that you want to 12862adapt a program which is larger than 64 kilobytes to run on this system. 12863 12864One solution is to identify modules of your program which are relatively 12865independent, and need not call each other directly; call these modules 12866@dfn{overlays}. Separate the overlays from the main program, and place 12867their machine code in the larger memory. Place your main program in 12868instruction memory, but leave at least enough space there to hold the 12869largest overlay as well. 12870 12871Now, to call a function located in an overlay, you must first copy that 12872overlay's machine code from the large memory into the space set aside 12873for it in the instruction memory, and then jump to its entry point 12874there. 12875 12876@c NB: In the below the mapped area's size is greater or equal to the 12877@c size of all overlays. This is intentional to remind the developer 12878@c that overlays don't necessarily need to be the same size. 12879 12880@smallexample 12881@group 12882 Data Instruction Larger 12883Address Space Address Space Address Space 12884+-----------+ +-----------+ +-----------+ 12885| | | | | | 12886+-----------+ +-----------+ +-----------+<-- overlay 1 12887| program | | main | .----| overlay 1 | load address 12888| variables | | program | | +-----------+ 12889| and heap | | | | | | 12890+-----------+ | | | +-----------+<-- overlay 2 12891| | +-----------+ | | | load address 12892+-----------+ | | | .-| overlay 2 | 12893 | | | | | | 12894 mapped --->+-----------+ | | +-----------+ 12895 address | | | | | | 12896 | overlay | <-' | | | 12897 | area | <---' +-----------+<-- overlay 3 12898 | | <---. | | load address 12899 +-----------+ `--| overlay 3 | 12900 | | | | 12901 +-----------+ | | 12902 +-----------+ 12903 | | 12904 +-----------+ 12905 12906 @anchor{A code overlay}A code overlay 12907@end group 12908@end smallexample 12909 12910The diagram (@pxref{A code overlay}) shows a system with separate data 12911and instruction address spaces. To map an overlay, the program copies 12912its code from the larger address space to the instruction address space. 12913Since the overlays shown here all use the same mapped address, only one 12914may be mapped at a time. For a system with a single address space for 12915data and instructions, the diagram would be similar, except that the 12916program variables and heap would share an address space with the main 12917program and the overlay area. 12918 12919An overlay loaded into instruction memory and ready for use is called a 12920@dfn{mapped} overlay; its @dfn{mapped address} is its address in the 12921instruction memory. An overlay not present (or only partially present) 12922in instruction memory is called @dfn{unmapped}; its @dfn{load address} 12923is its address in the larger memory. The mapped address is also called 12924the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also 12925called the @dfn{load memory address}, or @dfn{LMA}. 12926 12927Unfortunately, overlays are not a completely transparent way to adapt a 12928program to limited instruction memory. They introduce a new set of 12929global constraints you must keep in mind as you design your program: 12930 12931@itemize @bullet 12932 12933@item 12934Before calling or returning to a function in an overlay, your program 12935must make sure that overlay is actually mapped. Otherwise, the call or 12936return will transfer control to the right address, but in the wrong 12937overlay, and your program will probably crash. 12938 12939@item 12940If the process of mapping an overlay is expensive on your system, you 12941will need to choose your overlays carefully to minimize their effect on 12942your program's performance. 12943 12944@item 12945The executable file you load onto your system must contain each 12946overlay's instructions, appearing at the overlay's load address, not its 12947mapped address. However, each overlay's instructions must be relocated 12948and its symbols defined as if the overlay were at its mapped address. 12949You can use GNU linker scripts to specify different load and relocation 12950addresses for pieces of your program; see @ref{Overlay Description,,, 12951ld.info, Using ld: the GNU linker}. 12952 12953@item 12954The procedure for loading executable files onto your system must be able 12955to load their contents into the larger address space as well as the 12956instruction and data spaces. 12957 12958@end itemize 12959 12960The overlay system described above is rather simple, and could be 12961improved in many ways: 12962 12963@itemize @bullet 12964 12965@item 12966If your system has suitable bank switch registers or memory management 12967hardware, you could use those facilities to make an overlay's load area 12968contents simply appear at their mapped address in instruction space. 12969This would probably be faster than copying the overlay to its mapped 12970area in the usual way. 12971 12972@item 12973If your overlays are small enough, you could set aside more than one 12974overlay area, and have more than one overlay mapped at a time. 12975 12976@item 12977You can use overlays to manage data, as well as instructions. In 12978general, data overlays are even less transparent to your design than 12979code overlays: whereas code overlays only require care when you call or 12980return to functions, data overlays require care every time you access 12981the data. Also, if you change the contents of a data overlay, you 12982must copy its contents back out to its load address before you can copy a 12983different data overlay into the same mapped area. 12984 12985@end itemize 12986 12987 12988@node Overlay Commands 12989@section Overlay Commands 12990 12991To use @value{GDBN}'s overlay support, each overlay in your program must 12992correspond to a separate section of the executable file. The section's 12993virtual memory address and load memory address must be the overlay's 12994mapped and load addresses. Identifying overlays with sections allows 12995@value{GDBN} to determine the appropriate address of a function or 12996variable, depending on whether the overlay is mapped or not. 12997 12998@value{GDBN}'s overlay commands all start with the word @code{overlay}; 12999you can abbreviate this as @code{ov} or @code{ovly}. The commands are: 13000 13001@table @code 13002@item overlay off 13003@kindex overlay 13004Disable @value{GDBN}'s overlay support. When overlay support is 13005disabled, @value{GDBN} assumes that all functions and variables are 13006always present at their mapped addresses. By default, @value{GDBN}'s 13007overlay support is disabled. 13008 13009@item overlay manual 13010@cindex manual overlay debugging 13011Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN} 13012relies on you to tell it which overlays are mapped, and which are not, 13013using the @code{overlay map-overlay} and @code{overlay unmap-overlay} 13014commands described below. 13015 13016@item overlay map-overlay @var{overlay} 13017@itemx overlay map @var{overlay} 13018@cindex map an overlay 13019Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must 13020be the name of the object file section containing the overlay. When an 13021overlay is mapped, @value{GDBN} assumes it can find the overlay's 13022functions and variables at their mapped addresses. @value{GDBN} assumes 13023that any other overlays whose mapped ranges overlap that of 13024@var{overlay} are now unmapped. 13025 13026@item overlay unmap-overlay @var{overlay} 13027@itemx overlay unmap @var{overlay} 13028@cindex unmap an overlay 13029Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay} 13030must be the name of the object file section containing the overlay. 13031When an overlay is unmapped, @value{GDBN} assumes it can find the 13032overlay's functions and variables at their load addresses. 13033 13034@item overlay auto 13035Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN} 13036consults a data structure the overlay manager maintains in the inferior 13037to see which overlays are mapped. For details, see @ref{Automatic 13038Overlay Debugging}. 13039 13040@item overlay load-target 13041@itemx overlay load 13042@cindex reloading the overlay table 13043Re-read the overlay table from the inferior. Normally, @value{GDBN} 13044re-reads the table @value{GDBN} automatically each time the inferior 13045stops, so this command should only be necessary if you have changed the 13046overlay mapping yourself using @value{GDBN}. This command is only 13047useful when using automatic overlay debugging. 13048 13049@item overlay list-overlays 13050@itemx overlay list 13051@cindex listing mapped overlays 13052Display a list of the overlays currently mapped, along with their mapped 13053addresses, load addresses, and sizes. 13054 13055@end table 13056 13057Normally, when @value{GDBN} prints a code address, it includes the name 13058of the function the address falls in: 13059 13060@smallexample 13061(@value{GDBP}) print main 13062$3 = @{int ()@} 0x11a0 <main> 13063@end smallexample 13064@noindent 13065When overlay debugging is enabled, @value{GDBN} recognizes code in 13066unmapped overlays, and prints the names of unmapped functions with 13067asterisks around them. For example, if @code{foo} is a function in an 13068unmapped overlay, @value{GDBN} prints it this way: 13069 13070@smallexample 13071(@value{GDBP}) overlay list 13072No sections are mapped. 13073(@value{GDBP}) print foo 13074$5 = @{int (int)@} 0x100000 <*foo*> 13075@end smallexample 13076@noindent 13077When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's 13078name normally: 13079 13080@smallexample 13081(@value{GDBP}) overlay list 13082Section .ov.foo.text, loaded at 0x100000 - 0x100034, 13083 mapped at 0x1016 - 0x104a 13084(@value{GDBP}) print foo 13085$6 = @{int (int)@} 0x1016 <foo> 13086@end smallexample 13087 13088When overlay debugging is enabled, @value{GDBN} can find the correct 13089address for functions and variables in an overlay, whether or not the 13090overlay is mapped. This allows most @value{GDBN} commands, like 13091@code{break} and @code{disassemble}, to work normally, even on unmapped 13092code. However, @value{GDBN}'s breakpoint support has some limitations: 13093 13094@itemize @bullet 13095@item 13096@cindex breakpoints in overlays 13097@cindex overlays, setting breakpoints in 13098You can set breakpoints in functions in unmapped overlays, as long as 13099@value{GDBN} can write to the overlay at its load address. 13100@item 13101@value{GDBN} can not set hardware or simulator-based breakpoints in 13102unmapped overlays. However, if you set a breakpoint at the end of your 13103overlay manager (and tell @value{GDBN} which overlays are now mapped, if 13104you are using manual overlay management), @value{GDBN} will re-set its 13105breakpoints properly. 13106@end itemize 13107 13108 13109@node Automatic Overlay Debugging 13110@section Automatic Overlay Debugging 13111@cindex automatic overlay debugging 13112 13113@value{GDBN} can automatically track which overlays are mapped and which 13114are not, given some simple co-operation from the overlay manager in the 13115inferior. If you enable automatic overlay debugging with the 13116@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN} 13117looks in the inferior's memory for certain variables describing the 13118current state of the overlays. 13119 13120Here are the variables your overlay manager must define to support 13121@value{GDBN}'s automatic overlay debugging: 13122 13123@table @asis 13124 13125@item @code{_ovly_table}: 13126This variable must be an array of the following structures: 13127 13128@smallexample 13129struct 13130@{ 13131 /* The overlay's mapped address. */ 13132 unsigned long vma; 13133 13134 /* The size of the overlay, in bytes. */ 13135 unsigned long size; 13136 13137 /* The overlay's load address. */ 13138 unsigned long lma; 13139 13140 /* Non-zero if the overlay is currently mapped; 13141 zero otherwise. */ 13142 unsigned long mapped; 13143@} 13144@end smallexample 13145 13146@item @code{_novlys}: 13147This variable must be a four-byte signed integer, holding the total 13148number of elements in @code{_ovly_table}. 13149 13150@end table 13151 13152To decide whether a particular overlay is mapped or not, @value{GDBN} 13153looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and 13154@code{lma} members equal the VMA and LMA of the overlay's section in the 13155executable file. When @value{GDBN} finds a matching entry, it consults 13156the entry's @code{mapped} member to determine whether the overlay is 13157currently mapped. 13158 13159In addition, your overlay manager may define a function called 13160@code{_ovly_debug_event}. If this function is defined, @value{GDBN} 13161will silently set a breakpoint there. If the overlay manager then 13162calls this function whenever it has changed the overlay table, this 13163will enable @value{GDBN} to accurately keep track of which overlays 13164are in program memory, and update any breakpoints that may be set 13165in overlays. This will allow breakpoints to work even if the 13166overlays are kept in ROM or other non-writable memory while they 13167are not being executed. 13168 13169@node Overlay Sample Program 13170@section Overlay Sample Program 13171@cindex overlay example program 13172 13173When linking a program which uses overlays, you must place the overlays 13174at their load addresses, while relocating them to run at their mapped 13175addresses. To do this, you must write a linker script (@pxref{Overlay 13176Description,,, ld.info, Using ld: the GNU linker}). Unfortunately, 13177since linker scripts are specific to a particular host system, target 13178architecture, and target memory layout, this manual cannot provide 13179portable sample code demonstrating @value{GDBN}'s overlay support. 13180 13181However, the @value{GDBN} source distribution does contain an overlaid 13182program, with linker scripts for a few systems, as part of its test 13183suite. The program consists of the following files from 13184@file{gdb/testsuite/gdb.base}: 13185 13186@table @file 13187@item overlays.c 13188The main program file. 13189@item ovlymgr.c 13190A simple overlay manager, used by @file{overlays.c}. 13191@item foo.c 13192@itemx bar.c 13193@itemx baz.c 13194@itemx grbx.c 13195Overlay modules, loaded and used by @file{overlays.c}. 13196@item d10v.ld 13197@itemx m32r.ld 13198Linker scripts for linking the test program on the @code{d10v-elf} 13199and @code{m32r-elf} targets. 13200@end table 13201 13202You can build the test program using the @code{d10v-elf} GCC 13203cross-compiler like this: 13204 13205@smallexample 13206$ d10v-elf-gcc -g -c overlays.c 13207$ d10v-elf-gcc -g -c ovlymgr.c 13208$ d10v-elf-gcc -g -c foo.c 13209$ d10v-elf-gcc -g -c bar.c 13210$ d10v-elf-gcc -g -c baz.c 13211$ d10v-elf-gcc -g -c grbx.c 13212$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \ 13213 baz.o grbx.o -Wl,-Td10v.ld -o overlays 13214@end smallexample 13215 13216The build process is identical for any other architecture, except that 13217you must substitute the appropriate compiler and linker script for the 13218target system for @code{d10v-elf-gcc} and @code{d10v.ld}. 13219 13220 13221@node Languages 13222@chapter Using @value{GDBN} with Different Languages 13223@cindex languages 13224 13225Although programming languages generally have common aspects, they are 13226rarely expressed in the same manner. For instance, in ANSI C, 13227dereferencing a pointer @code{p} is accomplished by @code{*p}, but in 13228Modula-2, it is accomplished by @code{p^}. Values can also be 13229represented (and displayed) differently. Hex numbers in C appear as 13230@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}. 13231 13232@cindex working language 13233Language-specific information is built into @value{GDBN} for some languages, 13234allowing you to express operations like the above in your program's 13235native language, and allowing @value{GDBN} to output values in a manner 13236consistent with the syntax of your program's native language. The 13237language you use to build expressions is called the @dfn{working 13238language}. 13239 13240@menu 13241* Setting:: Switching between source languages 13242* Show:: Displaying the language 13243* Checks:: Type and range checks 13244* Supported Languages:: Supported languages 13245* Unsupported Languages:: Unsupported languages 13246@end menu 13247 13248@node Setting 13249@section Switching Between Source Languages 13250 13251There are two ways to control the working language---either have @value{GDBN} 13252set it automatically, or select it manually yourself. You can use the 13253@code{set language} command for either purpose. On startup, @value{GDBN} 13254defaults to setting the language automatically. The working language is 13255used to determine how expressions you type are interpreted, how values 13256are printed, etc. 13257 13258In addition to the working language, every source file that 13259@value{GDBN} knows about has its own working language. For some object 13260file formats, the compiler might indicate which language a particular 13261source file is in. However, most of the time @value{GDBN} infers the 13262language from the name of the file. The language of a source file 13263controls whether C@t{++} names are demangled---this way @code{backtrace} can 13264show each frame appropriately for its own language. There is no way to 13265set the language of a source file from within @value{GDBN}, but you can 13266set the language associated with a filename extension. @xref{Show, , 13267Displaying the Language}. 13268 13269This is most commonly a problem when you use a program, such 13270as @code{cfront} or @code{f2c}, that generates C but is written in 13271another language. In that case, make the 13272program use @code{#line} directives in its C output; that way 13273@value{GDBN} will know the correct language of the source code of the original 13274program, and will display that source code, not the generated C code. 13275 13276@menu 13277* Filenames:: Filename extensions and languages. 13278* Manually:: Setting the working language manually 13279* Automatically:: Having @value{GDBN} infer the source language 13280@end menu 13281 13282@node Filenames 13283@subsection List of Filename Extensions and Languages 13284 13285If a source file name ends in one of the following extensions, then 13286@value{GDBN} infers that its language is the one indicated. 13287 13288@table @file 13289@item .ada 13290@itemx .ads 13291@itemx .adb 13292@itemx .a 13293Ada source file. 13294 13295@item .c 13296C source file 13297 13298@item .C 13299@itemx .cc 13300@itemx .cp 13301@itemx .cpp 13302@itemx .cxx 13303@itemx .c++ 13304C@t{++} source file 13305 13306@item .d 13307D source file 13308 13309@item .m 13310Objective-C source file 13311 13312@item .f 13313@itemx .F 13314Fortran source file 13315 13316@item .mod 13317Modula-2 source file 13318 13319@item .s 13320@itemx .S 13321Assembler source file. This actually behaves almost like C, but 13322@value{GDBN} does not skip over function prologues when stepping. 13323@end table 13324 13325In addition, you may set the language associated with a filename 13326extension. @xref{Show, , Displaying the Language}. 13327 13328@node Manually 13329@subsection Setting the Working Language 13330 13331If you allow @value{GDBN} to set the language automatically, 13332expressions are interpreted the same way in your debugging session and 13333your program. 13334 13335@kindex set language 13336If you wish, you may set the language manually. To do this, issue the 13337command @samp{set language @var{lang}}, where @var{lang} is the name of 13338a language, such as 13339@code{c} or @code{modula-2}. 13340For a list of the supported languages, type @samp{set language}. 13341 13342Setting the language manually prevents @value{GDBN} from updating the working 13343language automatically. This can lead to confusion if you try 13344to debug a program when the working language is not the same as the 13345source language, when an expression is acceptable to both 13346languages---but means different things. For instance, if the current 13347source file were written in C, and @value{GDBN} was parsing Modula-2, a 13348command such as: 13349 13350@smallexample 13351print a = b + c 13352@end smallexample 13353 13354@noindent 13355might not have the effect you intended. In C, this means to add 13356@code{b} and @code{c} and place the result in @code{a}. The result 13357printed would be the value of @code{a}. In Modula-2, this means to compare 13358@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value. 13359 13360@node Automatically 13361@subsection Having @value{GDBN} Infer the Source Language 13362 13363To have @value{GDBN} set the working language automatically, use 13364@samp{set language local} or @samp{set language auto}. @value{GDBN} 13365then infers the working language. That is, when your program stops in a 13366frame (usually by encountering a breakpoint), @value{GDBN} sets the 13367working language to the language recorded for the function in that 13368frame. If the language for a frame is unknown (that is, if the function 13369or block corresponding to the frame was defined in a source file that 13370does not have a recognized extension), the current working language is 13371not changed, and @value{GDBN} issues a warning. 13372 13373This may not seem necessary for most programs, which are written 13374entirely in one source language. However, program modules and libraries 13375written in one source language can be used by a main program written in 13376a different source language. Using @samp{set language auto} in this 13377case frees you from having to set the working language manually. 13378 13379@node Show 13380@section Displaying the Language 13381 13382The following commands help you find out which language is the 13383working language, and also what language source files were written in. 13384 13385@table @code 13386@item show language 13387@anchor{show language} 13388@kindex show language 13389Display the current working language. This is the 13390language you can use with commands such as @code{print} to 13391build and compute expressions that may involve variables in your program. 13392 13393@item info frame 13394@kindex info frame@r{, show the source language} 13395Display the source language for this frame. This language becomes the 13396working language if you use an identifier from this frame. 13397@xref{Frame Info, ,Information about a Frame}, to identify the other 13398information listed here. 13399 13400@item info source 13401@kindex info source@r{, show the source language} 13402Display the source language of this source file. 13403@xref{Symbols, ,Examining the Symbol Table}, to identify the other 13404information listed here. 13405@end table 13406 13407In unusual circumstances, you may have source files with extensions 13408not in the standard list. You can then set the extension associated 13409with a language explicitly: 13410 13411@table @code 13412@item set extension-language @var{ext} @var{language} 13413@kindex set extension-language 13414Tell @value{GDBN} that source files with extension @var{ext} are to be 13415assumed as written in the source language @var{language}. 13416 13417@item info extensions 13418@kindex info extensions 13419List all the filename extensions and the associated languages. 13420@end table 13421 13422@node Checks 13423@section Type and Range Checking 13424 13425Some languages are designed to guard you against making seemingly common 13426errors through a series of compile- and run-time checks. These include 13427checking the type of arguments to functions and operators and making 13428sure mathematical overflows are caught at run time. Checks such as 13429these help to ensure a program's correctness once it has been compiled 13430by eliminating type mismatches and providing active checks for range 13431errors when your program is running. 13432 13433By default @value{GDBN} checks for these errors according to the 13434rules of the current source language. Although @value{GDBN} does not check 13435the statements in your program, it can check expressions entered directly 13436into @value{GDBN} for evaluation via the @code{print} command, for example. 13437 13438@menu 13439* Type Checking:: An overview of type checking 13440* Range Checking:: An overview of range checking 13441@end menu 13442 13443@cindex type checking 13444@cindex checks, type 13445@node Type Checking 13446@subsection An Overview of Type Checking 13447 13448Some languages, such as C and C@t{++}, are strongly typed, meaning that the 13449arguments to operators and functions have to be of the correct type, 13450otherwise an error occurs. These checks prevent type mismatch 13451errors from ever causing any run-time problems. For example, 13452 13453@smallexample 13454int klass::my_method(char *b) @{ return b ? 1 : 2; @} 13455 13456(@value{GDBP}) print obj.my_method (0) 13457$1 = 2 13458@exdent but 13459(@value{GDBP}) print obj.my_method (0x1234) 13460Cannot resolve method klass::my_method to any overloaded instance 13461@end smallexample 13462 13463The second example fails because in C@t{++} the integer constant 13464@samp{0x1234} is not type-compatible with the pointer parameter type. 13465 13466For the expressions you use in @value{GDBN} commands, you can tell 13467@value{GDBN} to not enforce strict type checking or 13468to treat any mismatches as errors and abandon the expression; 13469When type checking is disabled, @value{GDBN} successfully evaluates 13470expressions like the second example above. 13471 13472Even if type checking is off, there may be other reasons 13473related to type that prevent @value{GDBN} from evaluating an expression. 13474For instance, @value{GDBN} does not know how to add an @code{int} and 13475a @code{struct foo}. These particular type errors have nothing to do 13476with the language in use and usually arise from expressions which make 13477little sense to evaluate anyway. 13478 13479@value{GDBN} provides some additional commands for controlling type checking: 13480 13481@kindex set check type 13482@kindex show check type 13483@table @code 13484@item set check type on 13485@itemx set check type off 13486Set strict type checking on or off. If any type mismatches occur in 13487evaluating an expression while type checking is on, @value{GDBN} prints a 13488message and aborts evaluation of the expression. 13489 13490@item show check type 13491Show the current setting of type checking and whether @value{GDBN} 13492is enforcing strict type checking rules. 13493@end table 13494 13495@cindex range checking 13496@cindex checks, range 13497@node Range Checking 13498@subsection An Overview of Range Checking 13499 13500In some languages (such as Modula-2), it is an error to exceed the 13501bounds of a type; this is enforced with run-time checks. Such range 13502checking is meant to ensure program correctness by making sure 13503computations do not overflow, or indices on an array element access do 13504not exceed the bounds of the array. 13505 13506For expressions you use in @value{GDBN} commands, you can tell 13507@value{GDBN} to treat range errors in one of three ways: ignore them, 13508always treat them as errors and abandon the expression, or issue 13509warnings but evaluate the expression anyway. 13510 13511A range error can result from numerical overflow, from exceeding an 13512array index bound, or when you type a constant that is not a member 13513of any type. Some languages, however, do not treat overflows as an 13514error. In many implementations of C, mathematical overflow causes the 13515result to ``wrap around'' to lower values---for example, if @var{m} is 13516the largest integer value, and @var{s} is the smallest, then 13517 13518@smallexample 13519@var{m} + 1 @result{} @var{s} 13520@end smallexample 13521 13522This, too, is specific to individual languages, and in some cases 13523specific to individual compilers or machines. @xref{Supported Languages, , 13524Supported Languages}, for further details on specific languages. 13525 13526@value{GDBN} provides some additional commands for controlling the range checker: 13527 13528@kindex set check range 13529@kindex show check range 13530@table @code 13531@item set check range auto 13532Set range checking on or off based on the current working language. 13533@xref{Supported Languages, ,Supported Languages}, for the default settings for 13534each language. 13535 13536@item set check range on 13537@itemx set check range off 13538Set range checking on or off, overriding the default setting for the 13539current working language. A warning is issued if the setting does not 13540match the language default. If a range error occurs and range checking is on, 13541then a message is printed and evaluation of the expression is aborted. 13542 13543@item set check range warn 13544Output messages when the @value{GDBN} range checker detects a range error, 13545but attempt to evaluate the expression anyway. Evaluating the 13546expression may still be impossible for other reasons, such as accessing 13547memory that the process does not own (a typical example from many Unix 13548systems). 13549 13550@item show range 13551Show the current setting of the range checker, and whether or not it is 13552being set automatically by @value{GDBN}. 13553@end table 13554 13555@node Supported Languages 13556@section Supported Languages 13557 13558@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, Java, 13559OpenCL C, Pascal, assembly, Modula-2, and Ada. 13560@c This is false ... 13561Some @value{GDBN} features may be used in expressions regardless of the 13562language you use: the @value{GDBN} @code{@@} and @code{::} operators, 13563and the @samp{@{type@}addr} construct (@pxref{Expressions, 13564,Expressions}) can be used with the constructs of any supported 13565language. 13566 13567The following sections detail to what degree each source language is 13568supported by @value{GDBN}. These sections are not meant to be language 13569tutorials or references, but serve only as a reference guide to what the 13570@value{GDBN} expression parser accepts, and what input and output 13571formats should look like for different languages. There are many good 13572books written on each of these languages; please look to these for a 13573language reference or tutorial. 13574 13575@menu 13576* C:: C and C@t{++} 13577* D:: D 13578* Go:: Go 13579* Objective-C:: Objective-C 13580* OpenCL C:: OpenCL C 13581* Fortran:: Fortran 13582* Pascal:: Pascal 13583* Modula-2:: Modula-2 13584* Ada:: Ada 13585@end menu 13586 13587@node C 13588@subsection C and C@t{++} 13589 13590@cindex C and C@t{++} 13591@cindex expressions in C or C@t{++} 13592 13593Since C and C@t{++} are so closely related, many features of @value{GDBN} apply 13594to both languages. Whenever this is the case, we discuss those languages 13595together. 13596 13597@cindex C@t{++} 13598@cindex @code{g++}, @sc{gnu} C@t{++} compiler 13599@cindex @sc{gnu} C@t{++} 13600The C@t{++} debugging facilities are jointly implemented by the C@t{++} 13601compiler and @value{GDBN}. Therefore, to debug your C@t{++} code 13602effectively, you must compile your C@t{++} programs with a supported 13603C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++} 13604compiler (@code{aCC}). 13605 13606@menu 13607* C Operators:: C and C@t{++} operators 13608* C Constants:: C and C@t{++} constants 13609* C Plus Plus Expressions:: C@t{++} expressions 13610* C Defaults:: Default settings for C and C@t{++} 13611* C Checks:: C and C@t{++} type and range checks 13612* Debugging C:: @value{GDBN} and C 13613* Debugging C Plus Plus:: @value{GDBN} features for C@t{++} 13614* Decimal Floating Point:: Numbers in Decimal Floating Point format 13615@end menu 13616 13617@node C Operators 13618@subsubsection C and C@t{++} Operators 13619 13620@cindex C and C@t{++} operators 13621 13622Operators must be defined on values of specific types. For instance, 13623@code{+} is defined on numbers, but not on structures. Operators are 13624often defined on groups of types. 13625 13626For the purposes of C and C@t{++}, the following definitions hold: 13627 13628@itemize @bullet 13629 13630@item 13631@emph{Integral types} include @code{int} with any of its storage-class 13632specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}. 13633 13634@item 13635@emph{Floating-point types} include @code{float}, @code{double}, and 13636@code{long double} (if supported by the target platform). 13637 13638@item 13639@emph{Pointer types} include all types defined as @code{(@var{type} *)}. 13640 13641@item 13642@emph{Scalar types} include all of the above. 13643 13644@end itemize 13645 13646@noindent 13647The following operators are supported. They are listed here 13648in order of increasing precedence: 13649 13650@table @code 13651@item , 13652The comma or sequencing operator. Expressions in a comma-separated list 13653are evaluated from left to right, with the result of the entire 13654expression being the last expression evaluated. 13655 13656@item = 13657Assignment. The value of an assignment expression is the value 13658assigned. Defined on scalar types. 13659 13660@item @var{op}= 13661Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}}, 13662and translated to @w{@code{@var{a} = @var{a op b}}}. 13663@w{@code{@var{op}=}} and @code{=} have the same precedence. 13664@var{op} is any one of the operators @code{|}, @code{^}, @code{&}, 13665@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}. 13666 13667@item ?: 13668The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought 13669of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an 13670integral type. 13671 13672@item || 13673Logical @sc{or}. Defined on integral types. 13674 13675@item && 13676Logical @sc{and}. Defined on integral types. 13677 13678@item | 13679Bitwise @sc{or}. Defined on integral types. 13680 13681@item ^ 13682Bitwise exclusive-@sc{or}. Defined on integral types. 13683 13684@item & 13685Bitwise @sc{and}. Defined on integral types. 13686 13687@item ==@r{, }!= 13688Equality and inequality. Defined on scalar types. The value of these 13689expressions is 0 for false and non-zero for true. 13690 13691@item <@r{, }>@r{, }<=@r{, }>= 13692Less than, greater than, less than or equal, greater than or equal. 13693Defined on scalar types. The value of these expressions is 0 for false 13694and non-zero for true. 13695 13696@item <<@r{, }>> 13697left shift, and right shift. Defined on integral types. 13698 13699@item @@ 13700The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 13701 13702@item +@r{, }- 13703Addition and subtraction. Defined on integral types, floating-point types and 13704pointer types. 13705 13706@item *@r{, }/@r{, }% 13707Multiplication, division, and modulus. Multiplication and division are 13708defined on integral and floating-point types. Modulus is defined on 13709integral types. 13710 13711@item ++@r{, }-- 13712Increment and decrement. When appearing before a variable, the 13713operation is performed before the variable is used in an expression; 13714when appearing after it, the variable's value is used before the 13715operation takes place. 13716 13717@item * 13718Pointer dereferencing. Defined on pointer types. Same precedence as 13719@code{++}. 13720 13721@item & 13722Address operator. Defined on variables. Same precedence as @code{++}. 13723 13724For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is 13725allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})} 13726to examine the address 13727where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is 13728stored. 13729 13730@item - 13731Negative. Defined on integral and floating-point types. Same 13732precedence as @code{++}. 13733 13734@item ! 13735Logical negation. Defined on integral types. Same precedence as 13736@code{++}. 13737 13738@item ~ 13739Bitwise complement operator. Defined on integral types. Same precedence as 13740@code{++}. 13741 13742 13743@item .@r{, }-> 13744Structure member, and pointer-to-structure member. For convenience, 13745@value{GDBN} regards the two as equivalent, choosing whether to dereference a 13746pointer based on the stored type information. 13747Defined on @code{struct} and @code{union} data. 13748 13749@item .*@r{, }->* 13750Dereferences of pointers to members. 13751 13752@item [] 13753Array indexing. @code{@var{a}[@var{i}]} is defined as 13754@code{*(@var{a}+@var{i})}. Same precedence as @code{->}. 13755 13756@item () 13757Function parameter list. Same precedence as @code{->}. 13758 13759@item :: 13760C@t{++} scope resolution operator. Defined on @code{struct}, @code{union}, 13761and @code{class} types. 13762 13763@item :: 13764Doubled colons also represent the @value{GDBN} scope operator 13765(@pxref{Expressions, ,Expressions}). Same precedence as @code{::}, 13766above. 13767@end table 13768 13769If an operator is redefined in the user code, @value{GDBN} usually 13770attempts to invoke the redefined version instead of using the operator's 13771predefined meaning. 13772 13773@node C Constants 13774@subsubsection C and C@t{++} Constants 13775 13776@cindex C and C@t{++} constants 13777 13778@value{GDBN} allows you to express the constants of C and C@t{++} in the 13779following ways: 13780 13781@itemize @bullet 13782@item 13783Integer constants are a sequence of digits. Octal constants are 13784specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants 13785by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter 13786@samp{l}, specifying that the constant should be treated as a 13787@code{long} value. 13788 13789@item 13790Floating point constants are a sequence of digits, followed by a decimal 13791point, followed by a sequence of digits, and optionally followed by an 13792exponent. An exponent is of the form: 13793@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another 13794sequence of digits. The @samp{+} is optional for positive exponents. 13795A floating-point constant may also end with a letter @samp{f} or 13796@samp{F}, specifying that the constant should be treated as being of 13797the @code{float} (as opposed to the default @code{double}) type; or with 13798a letter @samp{l} or @samp{L}, which specifies a @code{long double} 13799constant. 13800 13801@item 13802Enumerated constants consist of enumerated identifiers, or their 13803integral equivalents. 13804 13805@item 13806Character constants are a single character surrounded by single quotes 13807(@code{'}), or a number---the ordinal value of the corresponding character 13808(usually its @sc{ascii} value). Within quotes, the single character may 13809be represented by a letter or by @dfn{escape sequences}, which are of 13810the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation 13811of the character's ordinal value; or of the form @samp{\@var{x}}, where 13812@samp{@var{x}} is a predefined special character---for example, 13813@samp{\n} for newline. 13814 13815Wide character constants can be written by prefixing a character 13816constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide 13817form of @samp{x}. The target wide character set is used when 13818computing the value of this constant (@pxref{Character Sets}). 13819 13820@item 13821String constants are a sequence of character constants surrounded by 13822double quotes (@code{"}). Any valid character constant (as described 13823above) may appear. Double quotes within the string must be preceded by 13824a backslash, so for instance @samp{"a\"b'c"} is a string of five 13825characters. 13826 13827Wide string constants can be written by prefixing a string constant 13828with @samp{L}, as in C. The target wide character set is used when 13829computing the value of this constant (@pxref{Character Sets}). 13830 13831@item 13832Pointer constants are an integral value. You can also write pointers 13833to constants using the C operator @samp{&}. 13834 13835@item 13836Array constants are comma-separated lists surrounded by braces @samp{@{} 13837and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of 13838integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array, 13839and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers. 13840@end itemize 13841 13842@node C Plus Plus Expressions 13843@subsubsection C@t{++} Expressions 13844 13845@cindex expressions in C@t{++} 13846@value{GDBN} expression handling can interpret most C@t{++} expressions. 13847 13848@cindex debugging C@t{++} programs 13849@cindex C@t{++} compilers 13850@cindex debug formats and C@t{++} 13851@cindex @value{NGCC} and C@t{++} 13852@quotation 13853@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use 13854the proper compiler and the proper debug format. Currently, 13855@value{GDBN} works best when debugging C@t{++} code that is compiled 13856with the most recent version of @value{NGCC} possible. The DWARF 13857debugging format is preferred; @value{NGCC} defaults to this on most 13858popular platforms. Other compilers and/or debug formats are likely to 13859work badly or not at all when using @value{GDBN} to debug C@t{++} 13860code. @xref{Compilation}. 13861@end quotation 13862 13863@enumerate 13864 13865@cindex member functions 13866@item 13867Member function calls are allowed; you can use expressions like 13868 13869@smallexample 13870count = aml->GetOriginal(x, y) 13871@end smallexample 13872 13873@vindex this@r{, inside C@t{++} member functions} 13874@cindex namespace in C@t{++} 13875@item 13876While a member function is active (in the selected stack frame), your 13877expressions have the same namespace available as the member function; 13878that is, @value{GDBN} allows implicit references to the class instance 13879pointer @code{this} following the same rules as C@t{++}. @code{using} 13880declarations in the current scope are also respected by @value{GDBN}. 13881 13882@cindex call overloaded functions 13883@cindex overloaded functions, calling 13884@cindex type conversions in C@t{++} 13885@item 13886You can call overloaded functions; @value{GDBN} resolves the function 13887call to the right definition, with some restrictions. @value{GDBN} does not 13888perform overload resolution involving user-defined type conversions, 13889calls to constructors, or instantiations of templates that do not exist 13890in the program. It also cannot handle ellipsis argument lists or 13891default arguments. 13892 13893It does perform integral conversions and promotions, floating-point 13894promotions, arithmetic conversions, pointer conversions, conversions of 13895class objects to base classes, and standard conversions such as those of 13896functions or arrays to pointers; it requires an exact match on the 13897number of function arguments. 13898 13899Overload resolution is always performed, unless you have specified 13900@code{set overload-resolution off}. @xref{Debugging C Plus Plus, 13901,@value{GDBN} Features for C@t{++}}. 13902 13903You must specify @code{set overload-resolution off} in order to use an 13904explicit function signature to call an overloaded function, as in 13905@smallexample 13906p 'foo(char,int)'('x', 13) 13907@end smallexample 13908 13909The @value{GDBN} command-completion facility can simplify this; 13910see @ref{Completion, ,Command Completion}. 13911 13912@cindex reference declarations 13913@item 13914@value{GDBN} understands variables declared as C@t{++} references; you can use 13915them in expressions just as you do in C@t{++} source---they are automatically 13916dereferenced. 13917 13918In the parameter list shown when @value{GDBN} displays a frame, the values of 13919reference variables are not displayed (unlike other variables); this 13920avoids clutter, since references are often used for large structures. 13921The @emph{address} of a reference variable is always shown, unless 13922you have specified @samp{set print address off}. 13923 13924@item 13925@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your 13926expressions can use it just as expressions in your program do. Since 13927one scope may be defined in another, you can use @code{::} repeatedly if 13928necessary, for example in an expression like 13929@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows 13930resolving name scope by reference to source files, in both C and C@t{++} 13931debugging (@pxref{Variables, ,Program Variables}). 13932 13933@item 13934@value{GDBN} performs argument-dependent lookup, following the C@t{++} 13935specification. 13936@end enumerate 13937 13938@node C Defaults 13939@subsubsection C and C@t{++} Defaults 13940 13941@cindex C and C@t{++} defaults 13942 13943If you allow @value{GDBN} to set range checking automatically, it 13944defaults to @code{off} whenever the working language changes to 13945C or C@t{++}. This happens regardless of whether you or @value{GDBN} 13946selects the working language. 13947 13948If you allow @value{GDBN} to set the language automatically, it 13949recognizes source files whose names end with @file{.c}, @file{.C}, or 13950@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of 13951these files, it sets the working language to C or C@t{++}. 13952@xref{Automatically, ,Having @value{GDBN} Infer the Source Language}, 13953for further details. 13954 13955@node C Checks 13956@subsubsection C and C@t{++} Type and Range Checks 13957 13958@cindex C and C@t{++} checks 13959 13960By default, when @value{GDBN} parses C or C@t{++} expressions, strict type 13961checking is used. However, if you turn type checking off, @value{GDBN} 13962will allow certain non-standard conversions, such as promoting integer 13963constants to pointers. 13964 13965Range checking, if turned on, is done on mathematical operations. Array 13966indices are not checked, since they are often used to index a pointer 13967that is not itself an array. 13968 13969@node Debugging C 13970@subsubsection @value{GDBN} and C 13971 13972The @code{set print union} and @code{show print union} commands apply to 13973the @code{union} type. When set to @samp{on}, any @code{union} that is 13974inside a @code{struct} or @code{class} is also printed. Otherwise, it 13975appears as @samp{@{...@}}. 13976 13977The @code{@@} operator aids in the debugging of dynamic arrays, formed 13978with pointers and a memory allocation function. @xref{Expressions, 13979,Expressions}. 13980 13981@node Debugging C Plus Plus 13982@subsubsection @value{GDBN} Features for C@t{++} 13983 13984@cindex commands for C@t{++} 13985 13986Some @value{GDBN} commands are particularly useful with C@t{++}, and some are 13987designed specifically for use with C@t{++}. Here is a summary: 13988 13989@table @code 13990@cindex break in overloaded functions 13991@item @r{breakpoint menus} 13992When you want a breakpoint in a function whose name is overloaded, 13993@value{GDBN} has the capability to display a menu of possible breakpoint 13994locations to help you specify which function definition you want. 13995@xref{Ambiguous Expressions,,Ambiguous Expressions}. 13996 13997@cindex overloading in C@t{++} 13998@item rbreak @var{regex} 13999Setting breakpoints using regular expressions is helpful for setting 14000breakpoints on overloaded functions that are not members of any special 14001classes. 14002@xref{Set Breaks, ,Setting Breakpoints}. 14003 14004@cindex C@t{++} exception handling 14005@item catch throw 14006@itemx catch rethrow 14007@itemx catch catch 14008Debug C@t{++} exception handling using these commands. @xref{Set 14009Catchpoints, , Setting Catchpoints}. 14010 14011@cindex inheritance 14012@item ptype @var{typename} 14013Print inheritance relationships as well as other information for type 14014@var{typename}. 14015@xref{Symbols, ,Examining the Symbol Table}. 14016 14017@item info vtbl @var{expression}. 14018The @code{info vtbl} command can be used to display the virtual 14019method tables of the object computed by @var{expression}. This shows 14020one entry per virtual table; there may be multiple virtual tables when 14021multiple inheritance is in use. 14022 14023@cindex C@t{++} symbol display 14024@item set print demangle 14025@itemx show print demangle 14026@itemx set print asm-demangle 14027@itemx show print asm-demangle 14028Control whether C@t{++} symbols display in their source form, both when 14029displaying code as C@t{++} source and when displaying disassemblies. 14030@xref{Print Settings, ,Print Settings}. 14031 14032@item set print object 14033@itemx show print object 14034Choose whether to print derived (actual) or declared types of objects. 14035@xref{Print Settings, ,Print Settings}. 14036 14037@item set print vtbl 14038@itemx show print vtbl 14039Control the format for printing virtual function tables. 14040@xref{Print Settings, ,Print Settings}. 14041(The @code{vtbl} commands do not work on programs compiled with the HP 14042ANSI C@t{++} compiler (@code{aCC}).) 14043 14044@kindex set overload-resolution 14045@cindex overloaded functions, overload resolution 14046@item set overload-resolution on 14047Enable overload resolution for C@t{++} expression evaluation. The default 14048is on. For overloaded functions, @value{GDBN} evaluates the arguments 14049and searches for a function whose signature matches the argument types, 14050using the standard C@t{++} conversion rules (see @ref{C Plus Plus 14051Expressions, ,C@t{++} Expressions}, for details). 14052If it cannot find a match, it emits a message. 14053 14054@item set overload-resolution off 14055Disable overload resolution for C@t{++} expression evaluation. For 14056overloaded functions that are not class member functions, @value{GDBN} 14057chooses the first function of the specified name that it finds in the 14058symbol table, whether or not its arguments are of the correct type. For 14059overloaded functions that are class member functions, @value{GDBN} 14060searches for a function whose signature @emph{exactly} matches the 14061argument types. 14062 14063@kindex show overload-resolution 14064@item show overload-resolution 14065Show the current setting of overload resolution. 14066 14067@item @r{Overloaded symbol names} 14068You can specify a particular definition of an overloaded symbol, using 14069the same notation that is used to declare such symbols in C@t{++}: type 14070@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can 14071also use the @value{GDBN} command-line word completion facilities to list the 14072available choices, or to finish the type list for you. 14073@xref{Completion,, Command Completion}, for details on how to do this. 14074@end table 14075 14076@node Decimal Floating Point 14077@subsubsection Decimal Floating Point format 14078@cindex decimal floating point format 14079 14080@value{GDBN} can examine, set and perform computations with numbers in 14081decimal floating point format, which in the C language correspond to the 14082@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as 14083specified by the extension to support decimal floating-point arithmetic. 14084 14085There are two encodings in use, depending on the architecture: BID (Binary 14086Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for 14087PowerPC and S/390. @value{GDBN} will use the appropriate encoding for the 14088configured target. 14089 14090Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN} 14091to manipulate decimal floating point numbers, it is not possible to convert 14092(using a cast, for example) integers wider than 32-bit to decimal float. 14093 14094In addition, in order to imitate @value{GDBN}'s behaviour with binary floating 14095point computations, error checking in decimal float operations ignores 14096underflow, overflow and divide by zero exceptions. 14097 14098In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers 14099to inspect @code{_Decimal128} values stored in floating point registers. 14100See @ref{PowerPC,,PowerPC} for more details. 14101 14102@node D 14103@subsection D 14104 14105@cindex D 14106@value{GDBN} can be used to debug programs written in D and compiled with 14107GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D 14108specific feature --- dynamic arrays. 14109 14110@node Go 14111@subsection Go 14112 14113@cindex Go (programming language) 14114@value{GDBN} can be used to debug programs written in Go and compiled with 14115@file{gccgo} or @file{6g} compilers. 14116 14117Here is a summary of the Go-specific features and restrictions: 14118 14119@table @code 14120@cindex current Go package 14121@item The current Go package 14122The name of the current package does not need to be specified when 14123specifying global variables and functions. 14124 14125For example, given the program: 14126 14127@example 14128package main 14129var myglob = "Shall we?" 14130func main () @{ 14131 // ... 14132@} 14133@end example 14134 14135When stopped inside @code{main} either of these work: 14136 14137@example 14138(gdb) p myglob 14139(gdb) p main.myglob 14140@end example 14141 14142@cindex builtin Go types 14143@item Builtin Go types 14144The @code{string} type is recognized by @value{GDBN} and is printed 14145as a string. 14146 14147@cindex builtin Go functions 14148@item Builtin Go functions 14149The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof} 14150function and handles it internally. 14151 14152@cindex restrictions on Go expressions 14153@item Restrictions on Go expressions 14154All Go operators are supported except @code{&^}. 14155The Go @code{_} ``blank identifier'' is not supported. 14156Automatic dereferencing of pointers is not supported. 14157@end table 14158 14159@node Objective-C 14160@subsection Objective-C 14161 14162@cindex Objective-C 14163This section provides information about some commands and command 14164options that are useful for debugging Objective-C code. See also 14165@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a 14166few more commands specific to Objective-C support. 14167 14168@menu 14169* Method Names in Commands:: 14170* The Print Command with Objective-C:: 14171@end menu 14172 14173@node Method Names in Commands 14174@subsubsection Method Names in Commands 14175 14176The following commands have been extended to accept Objective-C method 14177names as line specifications: 14178 14179@kindex clear@r{, and Objective-C} 14180@kindex break@r{, and Objective-C} 14181@kindex info line@r{, and Objective-C} 14182@kindex jump@r{, and Objective-C} 14183@kindex list@r{, and Objective-C} 14184@itemize 14185@item @code{clear} 14186@item @code{break} 14187@item @code{info line} 14188@item @code{jump} 14189@item @code{list} 14190@end itemize 14191 14192A fully qualified Objective-C method name is specified as 14193 14194@smallexample 14195-[@var{Class} @var{methodName}] 14196@end smallexample 14197 14198where the minus sign is used to indicate an instance method and a 14199plus sign (not shown) is used to indicate a class method. The class 14200name @var{Class} and method name @var{methodName} are enclosed in 14201brackets, similar to the way messages are specified in Objective-C 14202source code. For example, to set a breakpoint at the @code{create} 14203instance method of class @code{Fruit} in the program currently being 14204debugged, enter: 14205 14206@smallexample 14207break -[Fruit create] 14208@end smallexample 14209 14210To list ten program lines around the @code{initialize} class method, 14211enter: 14212 14213@smallexample 14214list +[NSText initialize] 14215@end smallexample 14216 14217In the current version of @value{GDBN}, the plus or minus sign is 14218required. In future versions of @value{GDBN}, the plus or minus 14219sign will be optional, but you can use it to narrow the search. It 14220is also possible to specify just a method name: 14221 14222@smallexample 14223break create 14224@end smallexample 14225 14226You must specify the complete method name, including any colons. If 14227your program's source files contain more than one @code{create} method, 14228you'll be presented with a numbered list of classes that implement that 14229method. Indicate your choice by number, or type @samp{0} to exit if 14230none apply. 14231 14232As another example, to clear a breakpoint established at the 14233@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter: 14234 14235@smallexample 14236clear -[NSWindow makeKeyAndOrderFront:] 14237@end smallexample 14238 14239@node The Print Command with Objective-C 14240@subsubsection The Print Command With Objective-C 14241@cindex Objective-C, print objects 14242@kindex print-object 14243@kindex po @r{(@code{print-object})} 14244 14245The print command has also been extended to accept methods. For example: 14246 14247@smallexample 14248print -[@var{object} hash] 14249@end smallexample 14250 14251@cindex print an Objective-C object description 14252@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects 14253@noindent 14254will tell @value{GDBN} to send the @code{hash} message to @var{object} 14255and print the result. Also, an additional command has been added, 14256@code{print-object} or @code{po} for short, which is meant to print 14257the description of an object. However, this command may only work 14258with certain Objective-C libraries that have a particular hook 14259function, @code{_NSPrintForDebugger}, defined. 14260 14261@node OpenCL C 14262@subsection OpenCL C 14263 14264@cindex OpenCL C 14265This section provides information about @value{GDBN}s OpenCL C support. 14266 14267@menu 14268* OpenCL C Datatypes:: 14269* OpenCL C Expressions:: 14270* OpenCL C Operators:: 14271@end menu 14272 14273@node OpenCL C Datatypes 14274@subsubsection OpenCL C Datatypes 14275 14276@cindex OpenCL C Datatypes 14277@value{GDBN} supports the builtin scalar and vector datatypes specified 14278by OpenCL 1.1. In addition the half- and double-precision floating point 14279data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL 14280extensions are also known to @value{GDBN}. 14281 14282@node OpenCL C Expressions 14283@subsubsection OpenCL C Expressions 14284 14285@cindex OpenCL C Expressions 14286@value{GDBN} supports accesses to vector components including the access as 14287lvalue where possible. Since OpenCL C is based on C99 most C expressions 14288supported by @value{GDBN} can be used as well. 14289 14290@node OpenCL C Operators 14291@subsubsection OpenCL C Operators 14292 14293@cindex OpenCL C Operators 14294@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and 14295vector data types. 14296 14297@node Fortran 14298@subsection Fortran 14299@cindex Fortran-specific support in @value{GDBN} 14300 14301@value{GDBN} can be used to debug programs written in Fortran, but it 14302currently supports only the features of Fortran 77 language. 14303 14304@cindex trailing underscore, in Fortran symbols 14305Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers 14306among them) append an underscore to the names of variables and 14307functions. When you debug programs compiled by those compilers, you 14308will need to refer to variables and functions with a trailing 14309underscore. 14310 14311@menu 14312* Fortran Operators:: Fortran operators and expressions 14313* Fortran Defaults:: Default settings for Fortran 14314* Special Fortran Commands:: Special @value{GDBN} commands for Fortran 14315@end menu 14316 14317@node Fortran Operators 14318@subsubsection Fortran Operators and Expressions 14319 14320@cindex Fortran operators and expressions 14321 14322Operators must be defined on values of specific types. For instance, 14323@code{+} is defined on numbers, but not on characters or other non- 14324arithmetic types. Operators are often defined on groups of types. 14325 14326@table @code 14327@item ** 14328The exponentiation operator. It raises the first operand to the power 14329of the second one. 14330 14331@item : 14332The range operator. Normally used in the form of array(low:high) to 14333represent a section of array. 14334 14335@item % 14336The access component operator. Normally used to access elements in derived 14337types. Also suitable for unions. As unions aren't part of regular Fortran, 14338this can only happen when accessing a register that uses a gdbarch-defined 14339union type. 14340@end table 14341 14342@node Fortran Defaults 14343@subsubsection Fortran Defaults 14344 14345@cindex Fortran Defaults 14346 14347Fortran symbols are usually case-insensitive, so @value{GDBN} by 14348default uses case-insensitive matches for Fortran symbols. You can 14349change that with the @samp{set case-insensitive} command, see 14350@ref{Symbols}, for the details. 14351 14352@node Special Fortran Commands 14353@subsubsection Special Fortran Commands 14354 14355@cindex Special Fortran commands 14356 14357@value{GDBN} has some commands to support Fortran-specific features, 14358such as displaying common blocks. 14359 14360@table @code 14361@cindex @code{COMMON} blocks, Fortran 14362@kindex info common 14363@item info common @r{[}@var{common-name}@r{]} 14364This command prints the values contained in the Fortran @code{COMMON} 14365block whose name is @var{common-name}. With no argument, the names of 14366all @code{COMMON} blocks visible at the current program location are 14367printed. 14368@end table 14369 14370@node Pascal 14371@subsection Pascal 14372 14373@cindex Pascal support in @value{GDBN}, limitations 14374Debugging Pascal programs which use sets, subranges, file variables, or 14375nested functions does not currently work. @value{GDBN} does not support 14376entering expressions, printing values, or similar features using Pascal 14377syntax. 14378 14379The Pascal-specific command @code{set print pascal_static-members} 14380controls whether static members of Pascal objects are displayed. 14381@xref{Print Settings, pascal_static-members}. 14382 14383@node Modula-2 14384@subsection Modula-2 14385 14386@cindex Modula-2, @value{GDBN} support 14387 14388The extensions made to @value{GDBN} to support Modula-2 only support 14389output from the @sc{gnu} Modula-2 compiler (which is currently being 14390developed). Other Modula-2 compilers are not currently supported, and 14391attempting to debug executables produced by them is most likely 14392to give an error as @value{GDBN} reads in the executable's symbol 14393table. 14394 14395@cindex expressions in Modula-2 14396@menu 14397* M2 Operators:: Built-in operators 14398* Built-In Func/Proc:: Built-in functions and procedures 14399* M2 Constants:: Modula-2 constants 14400* M2 Types:: Modula-2 types 14401* M2 Defaults:: Default settings for Modula-2 14402* Deviations:: Deviations from standard Modula-2 14403* M2 Checks:: Modula-2 type and range checks 14404* M2 Scope:: The scope operators @code{::} and @code{.} 14405* GDB/M2:: @value{GDBN} and Modula-2 14406@end menu 14407 14408@node M2 Operators 14409@subsubsection Operators 14410@cindex Modula-2 operators 14411 14412Operators must be defined on values of specific types. For instance, 14413@code{+} is defined on numbers, but not on structures. Operators are 14414often defined on groups of types. For the purposes of Modula-2, the 14415following definitions hold: 14416 14417@itemize @bullet 14418 14419@item 14420@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and 14421their subranges. 14422 14423@item 14424@emph{Character types} consist of @code{CHAR} and its subranges. 14425 14426@item 14427@emph{Floating-point types} consist of @code{REAL}. 14428 14429@item 14430@emph{Pointer types} consist of anything declared as @code{POINTER TO 14431@var{type}}. 14432 14433@item 14434@emph{Scalar types} consist of all of the above. 14435 14436@item 14437@emph{Set types} consist of @code{SET} and @code{BITSET} types. 14438 14439@item 14440@emph{Boolean types} consist of @code{BOOLEAN}. 14441@end itemize 14442 14443@noindent 14444The following operators are supported, and appear in order of 14445increasing precedence: 14446 14447@table @code 14448@item , 14449Function argument or array index separator. 14450 14451@item := 14452Assignment. The value of @var{var} @code{:=} @var{value} is 14453@var{value}. 14454 14455@item <@r{, }> 14456Less than, greater than on integral, floating-point, or enumerated 14457types. 14458 14459@item <=@r{, }>= 14460Less than or equal to, greater than or equal to 14461on integral, floating-point and enumerated types, or set inclusion on 14462set types. Same precedence as @code{<}. 14463 14464@item =@r{, }<>@r{, }# 14465Equality and two ways of expressing inequality, valid on scalar types. 14466Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is 14467available for inequality, since @code{#} conflicts with the script 14468comment character. 14469 14470@item IN 14471Set membership. Defined on set types and the types of their members. 14472Same precedence as @code{<}. 14473 14474@item OR 14475Boolean disjunction. Defined on boolean types. 14476 14477@item AND@r{, }& 14478Boolean conjunction. Defined on boolean types. 14479 14480@item @@ 14481The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 14482 14483@item +@r{, }- 14484Addition and subtraction on integral and floating-point types, or union 14485and difference on set types. 14486 14487@item * 14488Multiplication on integral and floating-point types, or set intersection 14489on set types. 14490 14491@item / 14492Division on floating-point types, or symmetric set difference on set 14493types. Same precedence as @code{*}. 14494 14495@item DIV@r{, }MOD 14496Integer division and remainder. Defined on integral types. Same 14497precedence as @code{*}. 14498 14499@item - 14500Negative. Defined on @code{INTEGER} and @code{REAL} data. 14501 14502@item ^ 14503Pointer dereferencing. Defined on pointer types. 14504 14505@item NOT 14506Boolean negation. Defined on boolean types. Same precedence as 14507@code{^}. 14508 14509@item . 14510@code{RECORD} field selector. Defined on @code{RECORD} data. Same 14511precedence as @code{^}. 14512 14513@item [] 14514Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}. 14515 14516@item () 14517Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence 14518as @code{^}. 14519 14520@item ::@r{, }. 14521@value{GDBN} and Modula-2 scope operators. 14522@end table 14523 14524@quotation 14525@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN} 14526treats the use of the operator @code{IN}, or the use of operators 14527@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#}, 14528@code{<=}, and @code{>=} on sets as an error. 14529@end quotation 14530 14531 14532@node Built-In Func/Proc 14533@subsubsection Built-in Functions and Procedures 14534@cindex Modula-2 built-ins 14535 14536Modula-2 also makes available several built-in procedures and functions. 14537In describing these, the following metavariables are used: 14538 14539@table @var 14540 14541@item a 14542represents an @code{ARRAY} variable. 14543 14544@item c 14545represents a @code{CHAR} constant or variable. 14546 14547@item i 14548represents a variable or constant of integral type. 14549 14550@item m 14551represents an identifier that belongs to a set. Generally used in the 14552same function with the metavariable @var{s}. The type of @var{s} should 14553be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}). 14554 14555@item n 14556represents a variable or constant of integral or floating-point type. 14557 14558@item r 14559represents a variable or constant of floating-point type. 14560 14561@item t 14562represents a type. 14563 14564@item v 14565represents a variable. 14566 14567@item x 14568represents a variable or constant of one of many types. See the 14569explanation of the function for details. 14570@end table 14571 14572All Modula-2 built-in procedures also return a result, described below. 14573 14574@table @code 14575@item ABS(@var{n}) 14576Returns the absolute value of @var{n}. 14577 14578@item CAP(@var{c}) 14579If @var{c} is a lower case letter, it returns its upper case 14580equivalent, otherwise it returns its argument. 14581 14582@item CHR(@var{i}) 14583Returns the character whose ordinal value is @var{i}. 14584 14585@item DEC(@var{v}) 14586Decrements the value in the variable @var{v} by one. Returns the new value. 14587 14588@item DEC(@var{v},@var{i}) 14589Decrements the value in the variable @var{v} by @var{i}. Returns the 14590new value. 14591 14592@item EXCL(@var{m},@var{s}) 14593Removes the element @var{m} from the set @var{s}. Returns the new 14594set. 14595 14596@item FLOAT(@var{i}) 14597Returns the floating point equivalent of the integer @var{i}. 14598 14599@item HIGH(@var{a}) 14600Returns the index of the last member of @var{a}. 14601 14602@item INC(@var{v}) 14603Increments the value in the variable @var{v} by one. Returns the new value. 14604 14605@item INC(@var{v},@var{i}) 14606Increments the value in the variable @var{v} by @var{i}. Returns the 14607new value. 14608 14609@item INCL(@var{m},@var{s}) 14610Adds the element @var{m} to the set @var{s} if it is not already 14611there. Returns the new set. 14612 14613@item MAX(@var{t}) 14614Returns the maximum value of the type @var{t}. 14615 14616@item MIN(@var{t}) 14617Returns the minimum value of the type @var{t}. 14618 14619@item ODD(@var{i}) 14620Returns boolean TRUE if @var{i} is an odd number. 14621 14622@item ORD(@var{x}) 14623Returns the ordinal value of its argument. For example, the ordinal 14624value of a character is its @sc{ascii} value (on machines supporting the 14625@sc{ascii} character set). @var{x} must be of an ordered type, which include 14626integral, character and enumerated types. 14627 14628@item SIZE(@var{x}) 14629Returns the size of its argument. @var{x} can be a variable or a type. 14630 14631@item TRUNC(@var{r}) 14632Returns the integral part of @var{r}. 14633 14634@item TSIZE(@var{x}) 14635Returns the size of its argument. @var{x} can be a variable or a type. 14636 14637@item VAL(@var{t},@var{i}) 14638Returns the member of the type @var{t} whose ordinal value is @var{i}. 14639@end table 14640 14641@quotation 14642@emph{Warning:} Sets and their operations are not yet supported, so 14643@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as 14644an error. 14645@end quotation 14646 14647@cindex Modula-2 constants 14648@node M2 Constants 14649@subsubsection Constants 14650 14651@value{GDBN} allows you to express the constants of Modula-2 in the following 14652ways: 14653 14654@itemize @bullet 14655 14656@item 14657Integer constants are simply a sequence of digits. When used in an 14658expression, a constant is interpreted to be type-compatible with the 14659rest of the expression. Hexadecimal integers are specified by a 14660trailing @samp{H}, and octal integers by a trailing @samp{B}. 14661 14662@item 14663Floating point constants appear as a sequence of digits, followed by a 14664decimal point and another sequence of digits. An optional exponent can 14665then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where 14666@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the 14667digits of the floating point constant must be valid decimal (base 10) 14668digits. 14669 14670@item 14671Character constants consist of a single character enclosed by a pair of 14672like quotes, either single (@code{'}) or double (@code{"}). They may 14673also be expressed by their ordinal value (their @sc{ascii} value, usually) 14674followed by a @samp{C}. 14675 14676@item 14677String constants consist of a sequence of characters enclosed by a 14678pair of like quotes, either single (@code{'}) or double (@code{"}). 14679Escape sequences in the style of C are also allowed. @xref{C 14680Constants, ,C and C@t{++} Constants}, for a brief explanation of escape 14681sequences. 14682 14683@item 14684Enumerated constants consist of an enumerated identifier. 14685 14686@item 14687Boolean constants consist of the identifiers @code{TRUE} and 14688@code{FALSE}. 14689 14690@item 14691Pointer constants consist of integral values only. 14692 14693@item 14694Set constants are not yet supported. 14695@end itemize 14696 14697@node M2 Types 14698@subsubsection Modula-2 Types 14699@cindex Modula-2 types 14700 14701Currently @value{GDBN} can print the following data types in Modula-2 14702syntax: array types, record types, set types, pointer types, procedure 14703types, enumerated types, subrange types and base types. You can also 14704print the contents of variables declared using these type. 14705This section gives a number of simple source code examples together with 14706sample @value{GDBN} sessions. 14707 14708The first example contains the following section of code: 14709 14710@smallexample 14711VAR 14712 s: SET OF CHAR ; 14713 r: [20..40] ; 14714@end smallexample 14715 14716@noindent 14717and you can request @value{GDBN} to interrogate the type and value of 14718@code{r} and @code{s}. 14719 14720@smallexample 14721(@value{GDBP}) print s 14722@{'A'..'C', 'Z'@} 14723(@value{GDBP}) ptype s 14724SET OF CHAR 14725(@value{GDBP}) print r 1472621 14727(@value{GDBP}) ptype r 14728[20..40] 14729@end smallexample 14730 14731@noindent 14732Likewise if your source code declares @code{s} as: 14733 14734@smallexample 14735VAR 14736 s: SET ['A'..'Z'] ; 14737@end smallexample 14738 14739@noindent 14740then you may query the type of @code{s} by: 14741 14742@smallexample 14743(@value{GDBP}) ptype s 14744type = SET ['A'..'Z'] 14745@end smallexample 14746 14747@noindent 14748Note that at present you cannot interactively manipulate set 14749expressions using the debugger. 14750 14751The following example shows how you might declare an array in Modula-2 14752and how you can interact with @value{GDBN} to print its type and contents: 14753 14754@smallexample 14755VAR 14756 s: ARRAY [-10..10] OF CHAR ; 14757@end smallexample 14758 14759@smallexample 14760(@value{GDBP}) ptype s 14761ARRAY [-10..10] OF CHAR 14762@end smallexample 14763 14764Note that the array handling is not yet complete and although the type 14765is printed correctly, expression handling still assumes that all 14766arrays have a lower bound of zero and not @code{-10} as in the example 14767above. 14768 14769Here are some more type related Modula-2 examples: 14770 14771@smallexample 14772TYPE 14773 colour = (blue, red, yellow, green) ; 14774 t = [blue..yellow] ; 14775VAR 14776 s: t ; 14777BEGIN 14778 s := blue ; 14779@end smallexample 14780 14781@noindent 14782The @value{GDBN} interaction shows how you can query the data type 14783and value of a variable. 14784 14785@smallexample 14786(@value{GDBP}) print s 14787$1 = blue 14788(@value{GDBP}) ptype t 14789type = [blue..yellow] 14790@end smallexample 14791 14792@noindent 14793In this example a Modula-2 array is declared and its contents 14794displayed. Observe that the contents are written in the same way as 14795their @code{C} counterparts. 14796 14797@smallexample 14798VAR 14799 s: ARRAY [1..5] OF CARDINAL ; 14800BEGIN 14801 s[1] := 1 ; 14802@end smallexample 14803 14804@smallexample 14805(@value{GDBP}) print s 14806$1 = @{1, 0, 0, 0, 0@} 14807(@value{GDBP}) ptype s 14808type = ARRAY [1..5] OF CARDINAL 14809@end smallexample 14810 14811The Modula-2 language interface to @value{GDBN} also understands 14812pointer types as shown in this example: 14813 14814@smallexample 14815VAR 14816 s: POINTER TO ARRAY [1..5] OF CARDINAL ; 14817BEGIN 14818 NEW(s) ; 14819 s^[1] := 1 ; 14820@end smallexample 14821 14822@noindent 14823and you can request that @value{GDBN} describes the type of @code{s}. 14824 14825@smallexample 14826(@value{GDBP}) ptype s 14827type = POINTER TO ARRAY [1..5] OF CARDINAL 14828@end smallexample 14829 14830@value{GDBN} handles compound types as we can see in this example. 14831Here we combine array types, record types, pointer types and subrange 14832types: 14833 14834@smallexample 14835TYPE 14836 foo = RECORD 14837 f1: CARDINAL ; 14838 f2: CHAR ; 14839 f3: myarray ; 14840 END ; 14841 14842 myarray = ARRAY myrange OF CARDINAL ; 14843 myrange = [-2..2] ; 14844VAR 14845 s: POINTER TO ARRAY myrange OF foo ; 14846@end smallexample 14847 14848@noindent 14849and you can ask @value{GDBN} to describe the type of @code{s} as shown 14850below. 14851 14852@smallexample 14853(@value{GDBP}) ptype s 14854type = POINTER TO ARRAY [-2..2] OF foo = RECORD 14855 f1 : CARDINAL; 14856 f2 : CHAR; 14857 f3 : ARRAY [-2..2] OF CARDINAL; 14858END 14859@end smallexample 14860 14861@node M2 Defaults 14862@subsubsection Modula-2 Defaults 14863@cindex Modula-2 defaults 14864 14865If type and range checking are set automatically by @value{GDBN}, they 14866both default to @code{on} whenever the working language changes to 14867Modula-2. This happens regardless of whether you or @value{GDBN} 14868selected the working language. 14869 14870If you allow @value{GDBN} to set the language automatically, then entering 14871code compiled from a file whose name ends with @file{.mod} sets the 14872working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} 14873Infer the Source Language}, for further details. 14874 14875@node Deviations 14876@subsubsection Deviations from Standard Modula-2 14877@cindex Modula-2, deviations from 14878 14879A few changes have been made to make Modula-2 programs easier to debug. 14880This is done primarily via loosening its type strictness: 14881 14882@itemize @bullet 14883@item 14884Unlike in standard Modula-2, pointer constants can be formed by 14885integers. This allows you to modify pointer variables during 14886debugging. (In standard Modula-2, the actual address contained in a 14887pointer variable is hidden from you; it can only be modified 14888through direct assignment to another pointer variable or expression that 14889returned a pointer.) 14890 14891@item 14892C escape sequences can be used in strings and characters to represent 14893non-printable characters. @value{GDBN} prints out strings with these 14894escape sequences embedded. Single non-printable characters are 14895printed using the @samp{CHR(@var{nnn})} format. 14896 14897@item 14898The assignment operator (@code{:=}) returns the value of its right-hand 14899argument. 14900 14901@item 14902All built-in procedures both modify @emph{and} return their argument. 14903@end itemize 14904 14905@node M2 Checks 14906@subsubsection Modula-2 Type and Range Checks 14907@cindex Modula-2 checks 14908 14909@quotation 14910@emph{Warning:} in this release, @value{GDBN} does not yet perform type or 14911range checking. 14912@end quotation 14913@c FIXME remove warning when type/range checks added 14914 14915@value{GDBN} considers two Modula-2 variables type equivalent if: 14916 14917@itemize @bullet 14918@item 14919They are of types that have been declared equivalent via a @code{TYPE 14920@var{t1} = @var{t2}} statement 14921 14922@item 14923They have been declared on the same line. (Note: This is true of the 14924@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.) 14925@end itemize 14926 14927As long as type checking is enabled, any attempt to combine variables 14928whose types are not equivalent is an error. 14929 14930Range checking is done on all mathematical operations, assignment, array 14931index bounds, and all built-in functions and procedures. 14932 14933@node M2 Scope 14934@subsubsection The Scope Operators @code{::} and @code{.} 14935@cindex scope 14936@cindex @code{.}, Modula-2 scope operator 14937@cindex colon, doubled as scope operator 14938@ifinfo 14939@vindex colon-colon@r{, in Modula-2} 14940@c Info cannot handle :: but TeX can. 14941@end ifinfo 14942@ifnotinfo 14943@vindex ::@r{, in Modula-2} 14944@end ifnotinfo 14945 14946There are a few subtle differences between the Modula-2 scope operator 14947(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have 14948similar syntax: 14949 14950@smallexample 14951 14952@var{module} . @var{id} 14953@var{scope} :: @var{id} 14954@end smallexample 14955 14956@noindent 14957where @var{scope} is the name of a module or a procedure, 14958@var{module} the name of a module, and @var{id} is any declared 14959identifier within your program, except another module. 14960 14961Using the @code{::} operator makes @value{GDBN} search the scope 14962specified by @var{scope} for the identifier @var{id}. If it is not 14963found in the specified scope, then @value{GDBN} searches all scopes 14964enclosing the one specified by @var{scope}. 14965 14966Using the @code{.} operator makes @value{GDBN} search the current scope for 14967the identifier specified by @var{id} that was imported from the 14968definition module specified by @var{module}. With this operator, it is 14969an error if the identifier @var{id} was not imported from definition 14970module @var{module}, or if @var{id} is not an identifier in 14971@var{module}. 14972 14973@node GDB/M2 14974@subsubsection @value{GDBN} and Modula-2 14975 14976Some @value{GDBN} commands have little use when debugging Modula-2 programs. 14977Five subcommands of @code{set print} and @code{show print} apply 14978specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle}, 14979@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four 14980apply to C@t{++}, and the last to the C @code{union} type, which has no direct 14981analogue in Modula-2. 14982 14983The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available 14984with any language, is not useful with Modula-2. Its 14985intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be 14986created in Modula-2 as they can in C or C@t{++}. However, because an 14987address can be specified by an integral constant, the construct 14988@samp{@{@var{type}@}@var{adrexp}} is still useful. 14989 14990@cindex @code{#} in Modula-2 14991In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is 14992interpreted as the beginning of a comment. Use @code{<>} instead. 14993 14994@node Ada 14995@subsection Ada 14996@cindex Ada 14997 14998The extensions made to @value{GDBN} for Ada only support 14999output from the @sc{gnu} Ada (GNAT) compiler. 15000Other Ada compilers are not currently supported, and 15001attempting to debug executables produced by them is most likely 15002to be difficult. 15003 15004 15005@cindex expressions in Ada 15006@menu 15007* Ada Mode Intro:: General remarks on the Ada syntax 15008 and semantics supported by Ada mode 15009 in @value{GDBN}. 15010* Omissions from Ada:: Restrictions on the Ada expression syntax. 15011* Additions to Ada:: Extensions of the Ada expression syntax. 15012* Stopping Before Main Program:: Debugging the program during elaboration. 15013* Ada Exceptions:: Ada Exceptions 15014* Ada Tasks:: Listing and setting breakpoints in tasks. 15015* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files 15016* Ravenscar Profile:: Tasking Support when using the Ravenscar 15017 Profile 15018* Ada Glitches:: Known peculiarities of Ada mode. 15019@end menu 15020 15021@node Ada Mode Intro 15022@subsubsection Introduction 15023@cindex Ada mode, general 15024 15025The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression 15026syntax, with some extensions. 15027The philosophy behind the design of this subset is 15028 15029@itemize @bullet 15030@item 15031That @value{GDBN} should provide basic literals and access to operations for 15032arithmetic, dereferencing, field selection, indexing, and subprogram calls, 15033leaving more sophisticated computations to subprograms written into the 15034program (which therefore may be called from @value{GDBN}). 15035 15036@item 15037That type safety and strict adherence to Ada language restrictions 15038are not particularly important to the @value{GDBN} user. 15039 15040@item 15041That brevity is important to the @value{GDBN} user. 15042@end itemize 15043 15044Thus, for brevity, the debugger acts as if all names declared in 15045user-written packages are directly visible, even if they are not visible 15046according to Ada rules, thus making it unnecessary to fully qualify most 15047names with their packages, regardless of context. Where this causes 15048ambiguity, @value{GDBN} asks the user's intent. 15049 15050The debugger will start in Ada mode if it detects an Ada main program. 15051As for other languages, it will enter Ada mode when stopped in a program that 15052was translated from an Ada source file. 15053 15054While in Ada mode, you may use `@t{--}' for comments. This is useful 15055mostly for documenting command files. The standard @value{GDBN} comment 15056(@samp{#}) still works at the beginning of a line in Ada mode, but not in the 15057middle (to allow based literals). 15058 15059The debugger supports limited overloading. Given a subprogram call in which 15060the function symbol has multiple definitions, it will use the number of 15061actual parameters and some information about their types to attempt to narrow 15062the set of definitions. It also makes very limited use of context, preferring 15063procedures to functions in the context of the @code{call} command, and 15064functions to procedures elsewhere. 15065 15066@node Omissions from Ada 15067@subsubsection Omissions from Ada 15068@cindex Ada, omissions from 15069 15070Here are the notable omissions from the subset: 15071 15072@itemize @bullet 15073@item 15074Only a subset of the attributes are supported: 15075 15076@itemize @minus 15077@item 15078@t{'First}, @t{'Last}, and @t{'Length} 15079 on array objects (not on types and subtypes). 15080 15081@item 15082@t{'Min} and @t{'Max}. 15083 15084@item 15085@t{'Pos} and @t{'Val}. 15086 15087@item 15088@t{'Tag}. 15089 15090@item 15091@t{'Range} on array objects (not subtypes), but only as the right 15092operand of the membership (@code{in}) operator. 15093 15094@item 15095@t{'Access}, @t{'Unchecked_Access}, and 15096@t{'Unrestricted_Access} (a GNAT extension). 15097 15098@item 15099@t{'Address}. 15100@end itemize 15101 15102@item 15103The names in 15104@code{Characters.Latin_1} are not available and 15105concatenation is not implemented. Thus, escape characters in strings are 15106not currently available. 15107 15108@item 15109Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise 15110equality of representations. They will generally work correctly 15111for strings and arrays whose elements have integer or enumeration types. 15112They may not work correctly for arrays whose element 15113types have user-defined equality, for arrays of real values 15114(in particular, IEEE-conformant floating point, because of negative 15115zeroes and NaNs), and for arrays whose elements contain unused bits with 15116indeterminate values. 15117 15118@item 15119The other component-by-component array operations (@code{and}, @code{or}, 15120@code{xor}, @code{not}, and relational tests other than equality) 15121are not implemented. 15122 15123@item 15124@cindex array aggregates (Ada) 15125@cindex record aggregates (Ada) 15126@cindex aggregates (Ada) 15127There is limited support for array and record aggregates. They are 15128permitted only on the right sides of assignments, as in these examples: 15129 15130@smallexample 15131(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6) 15132(@value{GDBP}) set An_Array := (1, others => 0) 15133(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6) 15134(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9)) 15135(@value{GDBP}) set A_Record := (1, "Peter", True); 15136(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True) 15137@end smallexample 15138 15139Changing a 15140discriminant's value by assigning an aggregate has an 15141undefined effect if that discriminant is used within the record. 15142However, you can first modify discriminants by directly assigning to 15143them (which normally would not be allowed in Ada), and then performing an 15144aggregate assignment. For example, given a variable @code{A_Rec} 15145declared to have a type such as: 15146 15147@smallexample 15148type Rec (Len : Small_Integer := 0) is record 15149 Id : Integer; 15150 Vals : IntArray (1 .. Len); 15151end record; 15152@end smallexample 15153 15154you can assign a value with a different size of @code{Vals} with two 15155assignments: 15156 15157@smallexample 15158(@value{GDBP}) set A_Rec.Len := 4 15159(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4)) 15160@end smallexample 15161 15162As this example also illustrates, @value{GDBN} is very loose about the usual 15163rules concerning aggregates. You may leave out some of the 15164components of an array or record aggregate (such as the @code{Len} 15165component in the assignment to @code{A_Rec} above); they will retain their 15166original values upon assignment. You may freely use dynamic values as 15167indices in component associations. You may even use overlapping or 15168redundant component associations, although which component values are 15169assigned in such cases is not defined. 15170 15171@item 15172Calls to dispatching subprograms are not implemented. 15173 15174@item 15175The overloading algorithm is much more limited (i.e., less selective) 15176than that of real Ada. It makes only limited use of the context in 15177which a subexpression appears to resolve its meaning, and it is much 15178looser in its rules for allowing type matches. As a result, some 15179function calls will be ambiguous, and the user will be asked to choose 15180the proper resolution. 15181 15182@item 15183The @code{new} operator is not implemented. 15184 15185@item 15186Entry calls are not implemented. 15187 15188@item 15189Aside from printing, arithmetic operations on the native VAX floating-point 15190formats are not supported. 15191 15192@item 15193It is not possible to slice a packed array. 15194 15195@item 15196The names @code{True} and @code{False}, when not part of a qualified name, 15197are interpreted as if implicitly prefixed by @code{Standard}, regardless of 15198context. 15199Should your program 15200redefine these names in a package or procedure (at best a dubious practice), 15201you will have to use fully qualified names to access their new definitions. 15202@end itemize 15203 15204@node Additions to Ada 15205@subsubsection Additions to Ada 15206@cindex Ada, deviations from 15207 15208As it does for other languages, @value{GDBN} makes certain generic 15209extensions to Ada (@pxref{Expressions}): 15210 15211@itemize @bullet 15212@item 15213If the expression @var{E} is a variable residing in memory (typically 15214a local variable or array element) and @var{N} is a positive integer, 15215then @code{@var{E}@@@var{N}} displays the values of @var{E} and the 15216@var{N}-1 adjacent variables following it in memory as an array. In 15217Ada, this operator is generally not necessary, since its prime use is 15218in displaying parts of an array, and slicing will usually do this in 15219Ada. However, there are occasional uses when debugging programs in 15220which certain debugging information has been optimized away. 15221 15222@item 15223@code{@var{B}::@var{var}} means ``the variable named @var{var} that 15224appears in function or file @var{B}.'' When @var{B} is a file name, 15225you must typically surround it in single quotes. 15226 15227@item 15228The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type 15229@var{type} that appears at address @var{addr}.'' 15230 15231@item 15232A name starting with @samp{$} is a convenience variable 15233(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}). 15234@end itemize 15235 15236In addition, @value{GDBN} provides a few other shortcuts and outright 15237additions specific to Ada: 15238 15239@itemize @bullet 15240@item 15241The assignment statement is allowed as an expression, returning 15242its right-hand operand as its value. Thus, you may enter 15243 15244@smallexample 15245(@value{GDBP}) set x := y + 3 15246(@value{GDBP}) print A(tmp := y + 1) 15247@end smallexample 15248 15249@item 15250The semicolon is allowed as an ``operator,'' returning as its value 15251the value of its right-hand operand. 15252This allows, for example, 15253complex conditional breaks: 15254 15255@smallexample 15256(@value{GDBP}) break f 15257(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100) 15258@end smallexample 15259 15260@item 15261Rather than use catenation and symbolic character names to introduce special 15262characters into strings, one may instead use a special bracket notation, 15263which is also used to print strings. A sequence of characters of the form 15264@samp{["@var{XX}"]} within a string or character literal denotes the 15265(single) character whose numeric encoding is @var{XX} in hexadecimal. The 15266sequence of characters @samp{["""]} also denotes a single quotation mark 15267in strings. For example, 15268@smallexample 15269 "One line.["0a"]Next line.["0a"]" 15270@end smallexample 15271@noindent 15272contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF}) 15273after each period. 15274 15275@item 15276The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and 15277@t{'Max} is optional (and is ignored in any case). For example, it is valid 15278to write 15279 15280@smallexample 15281(@value{GDBP}) print 'max(x, y) 15282@end smallexample 15283 15284@item 15285When printing arrays, @value{GDBN} uses positional notation when the 15286array has a lower bound of 1, and uses a modified named notation otherwise. 15287For example, a one-dimensional array of three integers with a lower bound 15288of 3 might print as 15289 15290@smallexample 15291(3 => 10, 17, 1) 15292@end smallexample 15293 15294@noindent 15295That is, in contrast to valid Ada, only the first component has a @code{=>} 15296clause. 15297 15298@item 15299You may abbreviate attributes in expressions with any unique, 15300multi-character subsequence of 15301their names (an exact match gets preference). 15302For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh} 15303in place of @t{a'length}. 15304 15305@item 15306@cindex quoting Ada internal identifiers 15307Since Ada is case-insensitive, the debugger normally maps identifiers you type 15308to lower case. The GNAT compiler uses upper-case characters for 15309some of its internal identifiers, which are normally of no interest to users. 15310For the rare occasions when you actually have to look at them, 15311enclose them in angle brackets to avoid the lower-case mapping. 15312For example, 15313@smallexample 15314(@value{GDBP}) print <JMPBUF_SAVE>[0] 15315@end smallexample 15316 15317@item 15318Printing an object of class-wide type or dereferencing an 15319access-to-class-wide value will display all the components of the object's 15320specific type (as indicated by its run-time tag). Likewise, component 15321selection on such a value will operate on the specific type of the 15322object. 15323 15324@end itemize 15325 15326@node Stopping Before Main Program 15327@subsubsection Stopping at the Very Beginning 15328 15329@cindex breakpointing Ada elaboration code 15330It is sometimes necessary to debug the program during elaboration, and 15331before reaching the main procedure. 15332As defined in the Ada Reference 15333Manual, the elaboration code is invoked from a procedure called 15334@code{adainit}. To run your program up to the beginning of 15335elaboration, simply use the following two commands: 15336@code{tbreak adainit} and @code{run}. 15337 15338@node Ada Exceptions 15339@subsubsection Ada Exceptions 15340 15341A command is provided to list all Ada exceptions: 15342 15343@table @code 15344@kindex info exceptions 15345@item info exceptions 15346@itemx info exceptions @var{regexp} 15347The @code{info exceptions} command allows you to list all Ada exceptions 15348defined within the program being debugged, as well as their addresses. 15349With a regular expression, @var{regexp}, as argument, only those exceptions 15350whose names match @var{regexp} are listed. 15351@end table 15352 15353Below is a small example, showing how the command can be used, first 15354without argument, and next with a regular expression passed as an 15355argument. 15356 15357@smallexample 15358(@value{GDBP}) info exceptions 15359All defined Ada exceptions: 15360constraint_error: 0x613da0 15361program_error: 0x613d20 15362storage_error: 0x613ce0 15363tasking_error: 0x613ca0 15364const.aint_global_e: 0x613b00 15365(@value{GDBP}) info exceptions const.aint 15366All Ada exceptions matching regular expression "const.aint": 15367constraint_error: 0x613da0 15368const.aint_global_e: 0x613b00 15369@end smallexample 15370 15371It is also possible to ask @value{GDBN} to stop your program's execution 15372when an exception is raised. For more details, see @ref{Set Catchpoints}. 15373 15374@node Ada Tasks 15375@subsubsection Extensions for Ada Tasks 15376@cindex Ada, tasking 15377 15378Support for Ada tasks is analogous to that for threads (@pxref{Threads}). 15379@value{GDBN} provides the following task-related commands: 15380 15381@table @code 15382@kindex info tasks 15383@item info tasks 15384This command shows a list of current Ada tasks, as in the following example: 15385 15386 15387@smallexample 15388@iftex 15389@leftskip=0.5cm 15390@end iftex 15391(@value{GDBP}) info tasks 15392 ID TID P-ID Pri State Name 15393 1 8088000 0 15 Child Activation Wait main_task 15394 2 80a4000 1 15 Accept Statement b 15395 3 809a800 1 15 Child Activation Wait a 15396* 4 80ae800 3 15 Runnable c 15397 15398@end smallexample 15399 15400@noindent 15401In this listing, the asterisk before the last task indicates it to be the 15402task currently being inspected. 15403 15404@table @asis 15405@item ID 15406Represents @value{GDBN}'s internal task number. 15407 15408@item TID 15409The Ada task ID. 15410 15411@item P-ID 15412The parent's task ID (@value{GDBN}'s internal task number). 15413 15414@item Pri 15415The base priority of the task. 15416 15417@item State 15418Current state of the task. 15419 15420@table @code 15421@item Unactivated 15422The task has been created but has not been activated. It cannot be 15423executing. 15424 15425@item Runnable 15426The task is not blocked for any reason known to Ada. (It may be waiting 15427for a mutex, though.) It is conceptually "executing" in normal mode. 15428 15429@item Terminated 15430The task is terminated, in the sense of ARM 9.3 (5). Any dependents 15431that were waiting on terminate alternatives have been awakened and have 15432terminated themselves. 15433 15434@item Child Activation Wait 15435The task is waiting for created tasks to complete activation. 15436 15437@item Accept Statement 15438The task is waiting on an accept or selective wait statement. 15439 15440@item Waiting on entry call 15441The task is waiting on an entry call. 15442 15443@item Async Select Wait 15444The task is waiting to start the abortable part of an asynchronous 15445select statement. 15446 15447@item Delay Sleep 15448The task is waiting on a select statement with only a delay 15449alternative open. 15450 15451@item Child Termination Wait 15452The task is sleeping having completed a master within itself, and is 15453waiting for the tasks dependent on that master to become terminated or 15454waiting on a terminate Phase. 15455 15456@item Wait Child in Term Alt 15457The task is sleeping waiting for tasks on terminate alternatives to 15458finish terminating. 15459 15460@item Accepting RV with @var{taskno} 15461The task is accepting a rendez-vous with the task @var{taskno}. 15462@end table 15463 15464@item Name 15465Name of the task in the program. 15466 15467@end table 15468 15469@kindex info task @var{taskno} 15470@item info task @var{taskno} 15471This command shows detailled informations on the specified task, as in 15472the following example: 15473@smallexample 15474@iftex 15475@leftskip=0.5cm 15476@end iftex 15477(@value{GDBP}) info tasks 15478 ID TID P-ID Pri State Name 15479 1 8077880 0 15 Child Activation Wait main_task 15480* 2 807c468 1 15 Runnable task_1 15481(@value{GDBP}) info task 2 15482Ada Task: 0x807c468 15483Name: task_1 15484Thread: 0x807f378 15485Parent: 1 (main_task) 15486Base Priority: 15 15487State: Runnable 15488@end smallexample 15489 15490@item task 15491@kindex task@r{ (Ada)} 15492@cindex current Ada task ID 15493This command prints the ID of the current task. 15494 15495@smallexample 15496@iftex 15497@leftskip=0.5cm 15498@end iftex 15499(@value{GDBP}) info tasks 15500 ID TID P-ID Pri State Name 15501 1 8077870 0 15 Child Activation Wait main_task 15502* 2 807c458 1 15 Runnable t 15503(@value{GDBP}) task 15504[Current task is 2] 15505@end smallexample 15506 15507@item task @var{taskno} 15508@cindex Ada task switching 15509This command is like the @code{thread @var{threadno}} 15510command (@pxref{Threads}). It switches the context of debugging 15511from the current task to the given task. 15512 15513@smallexample 15514@iftex 15515@leftskip=0.5cm 15516@end iftex 15517(@value{GDBP}) info tasks 15518 ID TID P-ID Pri State Name 15519 1 8077870 0 15 Child Activation Wait main_task 15520* 2 807c458 1 15 Runnable t 15521(@value{GDBP}) task 1 15522[Switching to task 1] 15523#0 0x8067726 in pthread_cond_wait () 15524(@value{GDBP}) bt 15525#0 0x8067726 in pthread_cond_wait () 15526#1 0x8056714 in system.os_interface.pthread_cond_wait () 15527#2 0x805cb63 in system.task_primitives.operations.sleep () 15528#3 0x806153e in system.tasking.stages.activate_tasks () 15529#4 0x804aacc in un () at un.adb:5 15530@end smallexample 15531 15532@item break @var{linespec} task @var{taskno} 15533@itemx break @var{linespec} task @var{taskno} if @dots{} 15534@cindex breakpoints and tasks, in Ada 15535@cindex task breakpoints, in Ada 15536@kindex break @dots{} task @var{taskno}@r{ (Ada)} 15537These commands are like the @code{break @dots{} thread @dots{}} 15538command (@pxref{Thread Stops}). 15539@var{linespec} specifies source lines, as described 15540in @ref{Specify Location}. 15541 15542Use the qualifier @samp{task @var{taskno}} with a breakpoint command 15543to specify that you only want @value{GDBN} to stop the program when a 15544particular Ada task reaches this breakpoint. @var{taskno} is one of the 15545numeric task identifiers assigned by @value{GDBN}, shown in the first 15546column of the @samp{info tasks} display. 15547 15548If you do not specify @samp{task @var{taskno}} when you set a 15549breakpoint, the breakpoint applies to @emph{all} tasks of your 15550program. 15551 15552You can use the @code{task} qualifier on conditional breakpoints as 15553well; in this case, place @samp{task @var{taskno}} before the 15554breakpoint condition (before the @code{if}). 15555 15556For example, 15557 15558@smallexample 15559@iftex 15560@leftskip=0.5cm 15561@end iftex 15562(@value{GDBP}) info tasks 15563 ID TID P-ID Pri State Name 15564 1 140022020 0 15 Child Activation Wait main_task 15565 2 140045060 1 15 Accept/Select Wait t2 15566 3 140044840 1 15 Runnable t1 15567* 4 140056040 1 15 Runnable t3 15568(@value{GDBP}) b 15 task 2 15569Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15. 15570(@value{GDBP}) cont 15571Continuing. 15572task # 1 running 15573task # 2 running 15574 15575Breakpoint 5, test_task_debug () at test_task_debug.adb:15 1557615 flush; 15577(@value{GDBP}) info tasks 15578 ID TID P-ID Pri State Name 15579 1 140022020 0 15 Child Activation Wait main_task 15580* 2 140045060 1 15 Runnable t2 15581 3 140044840 1 15 Runnable t1 15582 4 140056040 1 15 Delay Sleep t3 15583@end smallexample 15584@end table 15585 15586@node Ada Tasks and Core Files 15587@subsubsection Tasking Support when Debugging Core Files 15588@cindex Ada tasking and core file debugging 15589 15590When inspecting a core file, as opposed to debugging a live program, 15591tasking support may be limited or even unavailable, depending on 15592the platform being used. 15593For instance, on x86-linux, the list of tasks is available, but task 15594switching is not supported. On Tru64, however, task switching will work 15595as usual. 15596 15597On certain platforms, including Tru64, the debugger needs to perform some 15598memory writes in order to provide Ada tasking support. When inspecting 15599a core file, this means that the core file must be opened with read-write 15600privileges, using the command @samp{"set write on"} (@pxref{Patching}). 15601Under these circumstances, you should make a backup copy of the core 15602file before inspecting it with @value{GDBN}. 15603 15604@node Ravenscar Profile 15605@subsubsection Tasking Support when using the Ravenscar Profile 15606@cindex Ravenscar Profile 15607 15608The @dfn{Ravenscar Profile} is a subset of the Ada tasking features, 15609specifically designed for systems with safety-critical real-time 15610requirements. 15611 15612@table @code 15613@kindex set ravenscar task-switching on 15614@cindex task switching with program using Ravenscar Profile 15615@item set ravenscar task-switching on 15616Allows task switching when debugging a program that uses the Ravenscar 15617Profile. This is the default. 15618 15619@kindex set ravenscar task-switching off 15620@item set ravenscar task-switching off 15621Turn off task switching when debugging a program that uses the Ravenscar 15622Profile. This is mostly intended to disable the code that adds support 15623for the Ravenscar Profile, in case a bug in either @value{GDBN} or in 15624the Ravenscar runtime is preventing @value{GDBN} from working properly. 15625To be effective, this command should be run before the program is started. 15626 15627@kindex show ravenscar task-switching 15628@item show ravenscar task-switching 15629Show whether it is possible to switch from task to task in a program 15630using the Ravenscar Profile. 15631 15632@end table 15633 15634@node Ada Glitches 15635@subsubsection Known Peculiarities of Ada Mode 15636@cindex Ada, problems 15637 15638Besides the omissions listed previously (@pxref{Omissions from Ada}), 15639we know of several problems with and limitations of Ada mode in 15640@value{GDBN}, 15641some of which will be fixed with planned future releases of the debugger 15642and the GNU Ada compiler. 15643 15644@itemize @bullet 15645@item 15646Static constants that the compiler chooses not to materialize as objects in 15647storage are invisible to the debugger. 15648 15649@item 15650Named parameter associations in function argument lists are ignored (the 15651argument lists are treated as positional). 15652 15653@item 15654Many useful library packages are currently invisible to the debugger. 15655 15656@item 15657Fixed-point arithmetic, conversions, input, and output is carried out using 15658floating-point arithmetic, and may give results that only approximate those on 15659the host machine. 15660 15661@item 15662The GNAT compiler never generates the prefix @code{Standard} for any of 15663the standard symbols defined by the Ada language. @value{GDBN} knows about 15664this: it will strip the prefix from names when you use it, and will never 15665look for a name you have so qualified among local symbols, nor match against 15666symbols in other packages or subprograms. If you have 15667defined entities anywhere in your program other than parameters and 15668local variables whose simple names match names in @code{Standard}, 15669GNAT's lack of qualification here can cause confusion. When this happens, 15670you can usually resolve the confusion 15671by qualifying the problematic names with package 15672@code{Standard} explicitly. 15673@end itemize 15674 15675Older versions of the compiler sometimes generate erroneous debugging 15676information, resulting in the debugger incorrectly printing the value 15677of affected entities. In some cases, the debugger is able to work 15678around an issue automatically. In other cases, the debugger is able 15679to work around the issue, but the work-around has to be specifically 15680enabled. 15681 15682@kindex set ada trust-PAD-over-XVS 15683@kindex show ada trust-PAD-over-XVS 15684@table @code 15685 15686@item set ada trust-PAD-over-XVS on 15687Configure GDB to strictly follow the GNAT encoding when computing the 15688value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS} 15689types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for 15690a complete description of the encoding used by the GNAT compiler). 15691This is the default. 15692 15693@item set ada trust-PAD-over-XVS off 15694This is related to the encoding using by the GNAT compiler. If @value{GDBN} 15695sometimes prints the wrong value for certain entities, changing @code{ada 15696trust-PAD-over-XVS} to @code{off} activates a work-around which may fix 15697the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to 15698@code{off}, but this incurs a slight performance penalty, so it is 15699recommended to leave this setting to @code{on} unless necessary. 15700 15701@end table 15702 15703@node Unsupported Languages 15704@section Unsupported Languages 15705 15706@cindex unsupported languages 15707@cindex minimal language 15708In addition to the other fully-supported programming languages, 15709@value{GDBN} also provides a pseudo-language, called @code{minimal}. 15710It does not represent a real programming language, but provides a set 15711of capabilities close to what the C or assembly languages provide. 15712This should allow most simple operations to be performed while debugging 15713an application that uses a language currently not supported by @value{GDBN}. 15714 15715If the language is set to @code{auto}, @value{GDBN} will automatically 15716select this language if the current frame corresponds to an unsupported 15717language. 15718 15719@node Symbols 15720@chapter Examining the Symbol Table 15721 15722The commands described in this chapter allow you to inquire about the 15723symbols (names of variables, functions and types) defined in your 15724program. This information is inherent in the text of your program and 15725does not change as your program executes. @value{GDBN} finds it in your 15726program's symbol table, in the file indicated when you started @value{GDBN} 15727(@pxref{File Options, ,Choosing Files}), or by one of the 15728file-management commands (@pxref{Files, ,Commands to Specify Files}). 15729 15730@cindex symbol names 15731@cindex names of symbols 15732@cindex quoting names 15733Occasionally, you may need to refer to symbols that contain unusual 15734characters, which @value{GDBN} ordinarily treats as word delimiters. The 15735most frequent case is in referring to static variables in other 15736source files (@pxref{Variables,,Program Variables}). File names 15737are recorded in object files as debugging symbols, but @value{GDBN} would 15738ordinarily parse a typical file name, like @file{foo.c}, as the three words 15739@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize 15740@samp{foo.c} as a single symbol, enclose it in single quotes; for example, 15741 15742@smallexample 15743p 'foo.c'::x 15744@end smallexample 15745 15746@noindent 15747looks up the value of @code{x} in the scope of the file @file{foo.c}. 15748 15749@table @code 15750@cindex case-insensitive symbol names 15751@cindex case sensitivity in symbol names 15752@kindex set case-sensitive 15753@item set case-sensitive on 15754@itemx set case-sensitive off 15755@itemx set case-sensitive auto 15756Normally, when @value{GDBN} looks up symbols, it matches their names 15757with case sensitivity determined by the current source language. 15758Occasionally, you may wish to control that. The command @code{set 15759case-sensitive} lets you do that by specifying @code{on} for 15760case-sensitive matches or @code{off} for case-insensitive ones. If 15761you specify @code{auto}, case sensitivity is reset to the default 15762suitable for the source language. The default is case-sensitive 15763matches for all languages except for Fortran, for which the default is 15764case-insensitive matches. 15765 15766@kindex show case-sensitive 15767@item show case-sensitive 15768This command shows the current setting of case sensitivity for symbols 15769lookups. 15770 15771@kindex set print type methods 15772@item set print type methods 15773@itemx set print type methods on 15774@itemx set print type methods off 15775Normally, when @value{GDBN} prints a class, it displays any methods 15776declared in that class. You can control this behavior either by 15777passing the appropriate flag to @code{ptype}, or using @command{set 15778print type methods}. Specifying @code{on} will cause @value{GDBN} to 15779display the methods; this is the default. Specifying @code{off} will 15780cause @value{GDBN} to omit the methods. 15781 15782@kindex show print type methods 15783@item show print type methods 15784This command shows the current setting of method display when printing 15785classes. 15786 15787@kindex set print type typedefs 15788@item set print type typedefs 15789@itemx set print type typedefs on 15790@itemx set print type typedefs off 15791 15792Normally, when @value{GDBN} prints a class, it displays any typedefs 15793defined in that class. You can control this behavior either by 15794passing the appropriate flag to @code{ptype}, or using @command{set 15795print type typedefs}. Specifying @code{on} will cause @value{GDBN} to 15796display the typedef definitions; this is the default. Specifying 15797@code{off} will cause @value{GDBN} to omit the typedef definitions. 15798Note that this controls whether the typedef definition itself is 15799printed, not whether typedef names are substituted when printing other 15800types. 15801 15802@kindex show print type typedefs 15803@item show print type typedefs 15804This command shows the current setting of typedef display when 15805printing classes. 15806 15807@kindex info address 15808@cindex address of a symbol 15809@item info address @var{symbol} 15810Describe where the data for @var{symbol} is stored. For a register 15811variable, this says which register it is kept in. For a non-register 15812local variable, this prints the stack-frame offset at which the variable 15813is always stored. 15814 15815Note the contrast with @samp{print &@var{symbol}}, which does not work 15816at all for a register variable, and for a stack local variable prints 15817the exact address of the current instantiation of the variable. 15818 15819@kindex info symbol 15820@cindex symbol from address 15821@cindex closest symbol and offset for an address 15822@item info symbol @var{addr} 15823Print the name of a symbol which is stored at the address @var{addr}. 15824If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the 15825nearest symbol and an offset from it: 15826 15827@smallexample 15828(@value{GDBP}) info symbol 0x54320 15829_initialize_vx + 396 in section .text 15830@end smallexample 15831 15832@noindent 15833This is the opposite of the @code{info address} command. You can use 15834it to find out the name of a variable or a function given its address. 15835 15836For dynamically linked executables, the name of executable or shared 15837library containing the symbol is also printed: 15838 15839@smallexample 15840(@value{GDBP}) info symbol 0x400225 15841_start + 5 in section .text of /tmp/a.out 15842(@value{GDBP}) info symbol 0x2aaaac2811cf 15843__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6 15844@end smallexample 15845 15846@kindex whatis 15847@item whatis[/@var{flags}] [@var{arg}] 15848Print the data type of @var{arg}, which can be either an expression 15849or a name of a data type. With no argument, print the data type of 15850@code{$}, the last value in the value history. 15851 15852If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it 15853is not actually evaluated, and any side-effecting operations (such as 15854assignments or function calls) inside it do not take place. 15855 15856If @var{arg} is a variable or an expression, @code{whatis} prints its 15857literal type as it is used in the source code. If the type was 15858defined using a @code{typedef}, @code{whatis} will @emph{not} print 15859the data type underlying the @code{typedef}. If the type of the 15860variable or the expression is a compound data type, such as 15861@code{struct} or @code{class}, @code{whatis} never prints their 15862fields or methods. It just prints the @code{struct}/@code{class} 15863name (a.k.a.@: its @dfn{tag}). If you want to see the members of 15864such a compound data type, use @code{ptype}. 15865 15866If @var{arg} is a type name that was defined using @code{typedef}, 15867@code{whatis} @dfn{unrolls} only one level of that @code{typedef}. 15868Unrolling means that @code{whatis} will show the underlying type used 15869in the @code{typedef} declaration of @var{arg}. However, if that 15870underlying type is also a @code{typedef}, @code{whatis} will not 15871unroll it. 15872 15873For C code, the type names may also have the form @samp{class 15874@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union 15875@var{union-tag}} or @samp{enum @var{enum-tag}}. 15876 15877@var{flags} can be used to modify how the type is displayed. 15878Available flags are: 15879 15880@table @code 15881@item r 15882Display in ``raw'' form. Normally, @value{GDBN} substitutes template 15883parameters and typedefs defined in a class when printing the class' 15884members. The @code{/r} flag disables this. 15885 15886@item m 15887Do not print methods defined in the class. 15888 15889@item M 15890Print methods defined in the class. This is the default, but the flag 15891exists in case you change the default with @command{set print type methods}. 15892 15893@item t 15894Do not print typedefs defined in the class. Note that this controls 15895whether the typedef definition itself is printed, not whether typedef 15896names are substituted when printing other types. 15897 15898@item T 15899Print typedefs defined in the class. This is the default, but the flag 15900exists in case you change the default with @command{set print type typedefs}. 15901@end table 15902 15903@kindex ptype 15904@item ptype[/@var{flags}] [@var{arg}] 15905@code{ptype} accepts the same arguments as @code{whatis}, but prints a 15906detailed description of the type, instead of just the name of the type. 15907@xref{Expressions, ,Expressions}. 15908 15909Contrary to @code{whatis}, @code{ptype} always unrolls any 15910@code{typedef}s in its argument declaration, whether the argument is 15911a variable, expression, or a data type. This means that @code{ptype} 15912of a variable or an expression will not print literally its type as 15913present in the source code---use @code{whatis} for that. @code{typedef}s at 15914the pointer or reference targets are also unrolled. Only @code{typedef}s of 15915fields, methods and inner @code{class typedef}s of @code{struct}s, 15916@code{class}es and @code{union}s are not unrolled even with @code{ptype}. 15917 15918For example, for this variable declaration: 15919 15920@smallexample 15921typedef double real_t; 15922struct complex @{ real_t real; double imag; @}; 15923typedef struct complex complex_t; 15924complex_t var; 15925real_t *real_pointer_var; 15926@end smallexample 15927 15928@noindent 15929the two commands give this output: 15930 15931@smallexample 15932@group 15933(@value{GDBP}) whatis var 15934type = complex_t 15935(@value{GDBP}) ptype var 15936type = struct complex @{ 15937 real_t real; 15938 double imag; 15939@} 15940(@value{GDBP}) whatis complex_t 15941type = struct complex 15942(@value{GDBP}) whatis struct complex 15943type = struct complex 15944(@value{GDBP}) ptype struct complex 15945type = struct complex @{ 15946 real_t real; 15947 double imag; 15948@} 15949(@value{GDBP}) whatis real_pointer_var 15950type = real_t * 15951(@value{GDBP}) ptype real_pointer_var 15952type = double * 15953@end group 15954@end smallexample 15955 15956@noindent 15957As with @code{whatis}, using @code{ptype} without an argument refers to 15958the type of @code{$}, the last value in the value history. 15959 15960@cindex incomplete type 15961Sometimes, programs use opaque data types or incomplete specifications 15962of complex data structure. If the debug information included in the 15963program does not allow @value{GDBN} to display a full declaration of 15964the data type, it will say @samp{<incomplete type>}. For example, 15965given these declarations: 15966 15967@smallexample 15968 struct foo; 15969 struct foo *fooptr; 15970@end smallexample 15971 15972@noindent 15973but no definition for @code{struct foo} itself, @value{GDBN} will say: 15974 15975@smallexample 15976 (@value{GDBP}) ptype foo 15977 $1 = <incomplete type> 15978@end smallexample 15979 15980@noindent 15981``Incomplete type'' is C terminology for data types that are not 15982completely specified. 15983 15984@kindex info types 15985@item info types @var{regexp} 15986@itemx info types 15987Print a brief description of all types whose names match the regular 15988expression @var{regexp} (or all types in your program, if you supply 15989no argument). Each complete typename is matched as though it were a 15990complete line; thus, @samp{i type value} gives information on all 15991types in your program whose names include the string @code{value}, but 15992@samp{i type ^value$} gives information only on types whose complete 15993name is @code{value}. 15994 15995This command differs from @code{ptype} in two ways: first, like 15996@code{whatis}, it does not print a detailed description; second, it 15997lists all source files where a type is defined. 15998 15999@kindex info type-printers 16000@item info type-printers 16001Versions of @value{GDBN} that ship with Python scripting enabled may 16002have ``type printers'' available. When using @command{ptype} or 16003@command{whatis}, these printers are consulted when the name of a type 16004is needed. @xref{Type Printing API}, for more information on writing 16005type printers. 16006 16007@code{info type-printers} displays all the available type printers. 16008 16009@kindex enable type-printer 16010@kindex disable type-printer 16011@item enable type-printer @var{name}@dots{} 16012@item disable type-printer @var{name}@dots{} 16013These commands can be used to enable or disable type printers. 16014 16015@kindex info scope 16016@cindex local variables 16017@item info scope @var{location} 16018List all the variables local to a particular scope. This command 16019accepts a @var{location} argument---a function name, a source line, or 16020an address preceded by a @samp{*}, and prints all the variables local 16021to the scope defined by that location. (@xref{Specify Location}, for 16022details about supported forms of @var{location}.) For example: 16023 16024@smallexample 16025(@value{GDBP}) @b{info scope command_line_handler} 16026Scope for command_line_handler: 16027Symbol rl is an argument at stack/frame offset 8, length 4. 16028Symbol linebuffer is in static storage at address 0x150a18, length 4. 16029Symbol linelength is in static storage at address 0x150a1c, length 4. 16030Symbol p is a local variable in register $esi, length 4. 16031Symbol p1 is a local variable in register $ebx, length 4. 16032Symbol nline is a local variable in register $edx, length 4. 16033Symbol repeat is a local variable at frame offset -8, length 4. 16034@end smallexample 16035 16036@noindent 16037This command is especially useful for determining what data to collect 16038during a @dfn{trace experiment}, see @ref{Tracepoint Actions, 16039collect}. 16040 16041@kindex info source 16042@item info source 16043Show information about the current source file---that is, the source file for 16044the function containing the current point of execution: 16045@itemize @bullet 16046@item 16047the name of the source file, and the directory containing it, 16048@item 16049the directory it was compiled in, 16050@item 16051its length, in lines, 16052@item 16053which programming language it is written in, 16054@item 16055whether the executable includes debugging information for that file, and 16056if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and 16057@item 16058whether the debugging information includes information about 16059preprocessor macros. 16060@end itemize 16061 16062 16063@kindex info sources 16064@item info sources 16065Print the names of all source files in your program for which there is 16066debugging information, organized into two lists: files whose symbols 16067have already been read, and files whose symbols will be read when needed. 16068 16069@kindex info functions 16070@item info functions 16071Print the names and data types of all defined functions. 16072 16073@item info functions @var{regexp} 16074Print the names and data types of all defined functions 16075whose names contain a match for regular expression @var{regexp}. 16076Thus, @samp{info fun step} finds all functions whose names 16077include @code{step}; @samp{info fun ^step} finds those whose names 16078start with @code{step}. If a function name contains characters 16079that conflict with the regular expression language (e.g.@: 16080@samp{operator*()}), they may be quoted with a backslash. 16081 16082@kindex info variables 16083@item info variables 16084Print the names and data types of all variables that are defined 16085outside of functions (i.e.@: excluding local variables). 16086 16087@item info variables @var{regexp} 16088Print the names and data types of all variables (except for local 16089variables) whose names contain a match for regular expression 16090@var{regexp}. 16091 16092@kindex info classes 16093@cindex Objective-C, classes and selectors 16094@item info classes 16095@itemx info classes @var{regexp} 16096Display all Objective-C classes in your program, or 16097(with the @var{regexp} argument) all those matching a particular regular 16098expression. 16099 16100@kindex info selectors 16101@item info selectors 16102@itemx info selectors @var{regexp} 16103Display all Objective-C selectors in your program, or 16104(with the @var{regexp} argument) all those matching a particular regular 16105expression. 16106 16107@ignore 16108This was never implemented. 16109@kindex info methods 16110@item info methods 16111@itemx info methods @var{regexp} 16112The @code{info methods} command permits the user to examine all defined 16113methods within C@t{++} program, or (with the @var{regexp} argument) a 16114specific set of methods found in the various C@t{++} classes. Many 16115C@t{++} classes provide a large number of methods. Thus, the output 16116from the @code{ptype} command can be overwhelming and hard to use. The 16117@code{info-methods} command filters the methods, printing only those 16118which match the regular-expression @var{regexp}. 16119@end ignore 16120 16121@cindex opaque data types 16122@kindex set opaque-type-resolution 16123@item set opaque-type-resolution on 16124Tell @value{GDBN} to resolve opaque types. An opaque type is a type 16125declared as a pointer to a @code{struct}, @code{class}, or 16126@code{union}---for example, @code{struct MyType *}---that is used in one 16127source file although the full declaration of @code{struct MyType} is in 16128another source file. The default is on. 16129 16130A change in the setting of this subcommand will not take effect until 16131the next time symbols for a file are loaded. 16132 16133@item set opaque-type-resolution off 16134Tell @value{GDBN} not to resolve opaque types. In this case, the type 16135is printed as follows: 16136@smallexample 16137@{<no data fields>@} 16138@end smallexample 16139 16140@kindex show opaque-type-resolution 16141@item show opaque-type-resolution 16142Show whether opaque types are resolved or not. 16143 16144@kindex maint print symbols 16145@cindex symbol dump 16146@kindex maint print psymbols 16147@cindex partial symbol dump 16148@kindex maint print msymbols 16149@cindex minimal symbol dump 16150@item maint print symbols @var{filename} 16151@itemx maint print psymbols @var{filename} 16152@itemx maint print msymbols @var{filename} 16153Write a dump of debugging symbol data into the file @var{filename}. 16154These commands are used to debug the @value{GDBN} symbol-reading code. Only 16155symbols with debugging data are included. If you use @samp{maint print 16156symbols}, @value{GDBN} includes all the symbols for which it has already 16157collected full details: that is, @var{filename} reflects symbols for 16158only those files whose symbols @value{GDBN} has read. You can use the 16159command @code{info sources} to find out which files these are. If you 16160use @samp{maint print psymbols} instead, the dump shows information about 16161symbols that @value{GDBN} only knows partially---that is, symbols defined in 16162files that @value{GDBN} has skimmed, but not yet read completely. Finally, 16163@samp{maint print msymbols} dumps just the minimal symbol information 16164required for each object file from which @value{GDBN} has read some symbols. 16165@xref{Files, ,Commands to Specify Files}, for a discussion of how 16166@value{GDBN} reads symbols (in the description of @code{symbol-file}). 16167 16168@kindex maint info symtabs 16169@kindex maint info psymtabs 16170@cindex listing @value{GDBN}'s internal symbol tables 16171@cindex symbol tables, listing @value{GDBN}'s internal 16172@cindex full symbol tables, listing @value{GDBN}'s internal 16173@cindex partial symbol tables, listing @value{GDBN}'s internal 16174@item maint info symtabs @r{[} @var{regexp} @r{]} 16175@itemx maint info psymtabs @r{[} @var{regexp} @r{]} 16176 16177List the @code{struct symtab} or @code{struct partial_symtab} 16178structures whose names match @var{regexp}. If @var{regexp} is not 16179given, list them all. The output includes expressions which you can 16180copy into a @value{GDBN} debugging this one to examine a particular 16181structure in more detail. For example: 16182 16183@smallexample 16184(@value{GDBP}) maint info psymtabs dwarf2read 16185@{ objfile /home/gnu/build/gdb/gdb 16186 ((struct objfile *) 0x82e69d0) 16187 @{ psymtab /home/gnu/src/gdb/dwarf2read.c 16188 ((struct partial_symtab *) 0x8474b10) 16189 readin no 16190 fullname (null) 16191 text addresses 0x814d3c8 -- 0x8158074 16192 globals (* (struct partial_symbol **) 0x8507a08 @@ 9) 16193 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882) 16194 dependencies (none) 16195 @} 16196@} 16197(@value{GDBP}) maint info symtabs 16198(@value{GDBP}) 16199@end smallexample 16200@noindent 16201We see that there is one partial symbol table whose filename contains 16202the string @samp{dwarf2read}, belonging to the @samp{gdb} executable; 16203and we see that @value{GDBN} has not read in any symtabs yet at all. 16204If we set a breakpoint on a function, that will cause @value{GDBN} to 16205read the symtab for the compilation unit containing that function: 16206 16207@smallexample 16208(@value{GDBP}) break dwarf2_psymtab_to_symtab 16209Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c, 16210line 1574. 16211(@value{GDBP}) maint info symtabs 16212@{ objfile /home/gnu/build/gdb/gdb 16213 ((struct objfile *) 0x82e69d0) 16214 @{ symtab /home/gnu/src/gdb/dwarf2read.c 16215 ((struct symtab *) 0x86c1f38) 16216 dirname (null) 16217 fullname (null) 16218 blockvector ((struct blockvector *) 0x86c1bd0) (primary) 16219 linetable ((struct linetable *) 0x8370fa0) 16220 debugformat DWARF 2 16221 @} 16222@} 16223(@value{GDBP}) 16224@end smallexample 16225@end table 16226 16227 16228@node Altering 16229@chapter Altering Execution 16230 16231Once you think you have found an error in your program, you might want to 16232find out for certain whether correcting the apparent error would lead to 16233correct results in the rest of the run. You can find the answer by 16234experiment, using the @value{GDBN} features for altering execution of the 16235program. 16236 16237For example, you can store new values into variables or memory 16238locations, give your program a signal, restart it at a different 16239address, or even return prematurely from a function. 16240 16241@menu 16242* Assignment:: Assignment to variables 16243* Jumping:: Continuing at a different address 16244* Signaling:: Giving your program a signal 16245* Returning:: Returning from a function 16246* Calling:: Calling your program's functions 16247* Patching:: Patching your program 16248@end menu 16249 16250@node Assignment 16251@section Assignment to Variables 16252 16253@cindex assignment 16254@cindex setting variables 16255To alter the value of a variable, evaluate an assignment expression. 16256@xref{Expressions, ,Expressions}. For example, 16257 16258@smallexample 16259print x=4 16260@end smallexample 16261 16262@noindent 16263stores the value 4 into the variable @code{x}, and then prints the 16264value of the assignment expression (which is 4). 16265@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more 16266information on operators in supported languages. 16267 16268@kindex set variable 16269@cindex variables, setting 16270If you are not interested in seeing the value of the assignment, use the 16271@code{set} command instead of the @code{print} command. @code{set} is 16272really the same as @code{print} except that the expression's value is 16273not printed and is not put in the value history (@pxref{Value History, 16274,Value History}). The expression is evaluated only for its effects. 16275 16276If the beginning of the argument string of the @code{set} command 16277appears identical to a @code{set} subcommand, use the @code{set 16278variable} command instead of just @code{set}. This command is identical 16279to @code{set} except for its lack of subcommands. For example, if your 16280program has a variable @code{width}, you get an error if you try to set 16281a new value with just @samp{set width=13}, because @value{GDBN} has the 16282command @code{set width}: 16283 16284@smallexample 16285(@value{GDBP}) whatis width 16286type = double 16287(@value{GDBP}) p width 16288$4 = 13 16289(@value{GDBP}) set width=47 16290Invalid syntax in expression. 16291@end smallexample 16292 16293@noindent 16294The invalid expression, of course, is @samp{=47}. In 16295order to actually set the program's variable @code{width}, use 16296 16297@smallexample 16298(@value{GDBP}) set var width=47 16299@end smallexample 16300 16301Because the @code{set} command has many subcommands that can conflict 16302with the names of program variables, it is a good idea to use the 16303@code{set variable} command instead of just @code{set}. For example, if 16304your program has a variable @code{g}, you run into problems if you try 16305to set a new value with just @samp{set g=4}, because @value{GDBN} has 16306the command @code{set gnutarget}, abbreviated @code{set g}: 16307 16308@smallexample 16309@group 16310(@value{GDBP}) whatis g 16311type = double 16312(@value{GDBP}) p g 16313$1 = 1 16314(@value{GDBP}) set g=4 16315(@value{GDBP}) p g 16316$2 = 1 16317(@value{GDBP}) r 16318The program being debugged has been started already. 16319Start it from the beginning? (y or n) y 16320Starting program: /home/smith/cc_progs/a.out 16321"/home/smith/cc_progs/a.out": can't open to read symbols: 16322 Invalid bfd target. 16323(@value{GDBP}) show g 16324The current BFD target is "=4". 16325@end group 16326@end smallexample 16327 16328@noindent 16329The program variable @code{g} did not change, and you silently set the 16330@code{gnutarget} to an invalid value. In order to set the variable 16331@code{g}, use 16332 16333@smallexample 16334(@value{GDBP}) set var g=4 16335@end smallexample 16336 16337@value{GDBN} allows more implicit conversions in assignments than C; you can 16338freely store an integer value into a pointer variable or vice versa, 16339and you can convert any structure to any other structure that is the 16340same length or shorter. 16341@comment FIXME: how do structs align/pad in these conversions? 16342@comment /doc@cygnus.com 18dec1990 16343 16344To store values into arbitrary places in memory, use the @samp{@{@dots{}@}} 16345construct to generate a value of specified type at a specified address 16346(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers 16347to memory location @code{0x83040} as an integer (which implies a certain size 16348and representation in memory), and 16349 16350@smallexample 16351set @{int@}0x83040 = 4 16352@end smallexample 16353 16354@noindent 16355stores the value 4 into that memory location. 16356 16357@node Jumping 16358@section Continuing at a Different Address 16359 16360Ordinarily, when you continue your program, you do so at the place where 16361it stopped, with the @code{continue} command. You can instead continue at 16362an address of your own choosing, with the following commands: 16363 16364@table @code 16365@kindex jump 16366@kindex j @r{(@code{jump})} 16367@item jump @var{linespec} 16368@itemx j @var{linespec} 16369@itemx jump @var{location} 16370@itemx j @var{location} 16371Resume execution at line @var{linespec} or at address given by 16372@var{location}. Execution stops again immediately if there is a 16373breakpoint there. @xref{Specify Location}, for a description of the 16374different forms of @var{linespec} and @var{location}. It is common 16375practice to use the @code{tbreak} command in conjunction with 16376@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}. 16377 16378The @code{jump} command does not change the current stack frame, or 16379the stack pointer, or the contents of any memory location or any 16380register other than the program counter. If line @var{linespec} is in 16381a different function from the one currently executing, the results may 16382be bizarre if the two functions expect different patterns of arguments or 16383of local variables. For this reason, the @code{jump} command requests 16384confirmation if the specified line is not in the function currently 16385executing. However, even bizarre results are predictable if you are 16386well acquainted with the machine-language code of your program. 16387@end table 16388 16389@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt. 16390On many systems, you can get much the same effect as the @code{jump} 16391command by storing a new value into the register @code{$pc}. The 16392difference is that this does not start your program running; it only 16393changes the address of where it @emph{will} run when you continue. For 16394example, 16395 16396@smallexample 16397set $pc = 0x485 16398@end smallexample 16399 16400@noindent 16401makes the next @code{continue} command or stepping command execute at 16402address @code{0x485}, rather than at the address where your program stopped. 16403@xref{Continuing and Stepping, ,Continuing and Stepping}. 16404 16405The most common occasion to use the @code{jump} command is to back 16406up---perhaps with more breakpoints set---over a portion of a program 16407that has already executed, in order to examine its execution in more 16408detail. 16409 16410@c @group 16411@node Signaling 16412@section Giving your Program a Signal 16413@cindex deliver a signal to a program 16414 16415@table @code 16416@kindex signal 16417@item signal @var{signal} 16418Resume execution where your program stopped, but immediately give it the 16419signal @var{signal}. @var{signal} can be the name or the number of a 16420signal. For example, on many systems @code{signal 2} and @code{signal 16421SIGINT} are both ways of sending an interrupt signal. 16422 16423Alternatively, if @var{signal} is zero, continue execution without 16424giving a signal. This is useful when your program stopped on account of 16425a signal and would ordinarily see the signal when resumed with the 16426@code{continue} command; @samp{signal 0} causes it to resume without a 16427signal. 16428 16429@code{signal} does not repeat when you press @key{RET} a second time 16430after executing the command. 16431@end table 16432@c @end group 16433 16434Invoking the @code{signal} command is not the same as invoking the 16435@code{kill} utility from the shell. Sending a signal with @code{kill} 16436causes @value{GDBN} to decide what to do with the signal depending on 16437the signal handling tables (@pxref{Signals}). The @code{signal} command 16438passes the signal directly to your program. 16439 16440 16441@node Returning 16442@section Returning from a Function 16443 16444@table @code 16445@cindex returning from a function 16446@kindex return 16447@item return 16448@itemx return @var{expression} 16449You can cancel execution of a function call with the @code{return} 16450command. If you give an 16451@var{expression} argument, its value is used as the function's return 16452value. 16453@end table 16454 16455When you use @code{return}, @value{GDBN} discards the selected stack frame 16456(and all frames within it). You can think of this as making the 16457discarded frame return prematurely. If you wish to specify a value to 16458be returned, give that value as the argument to @code{return}. 16459 16460This pops the selected stack frame (@pxref{Selection, ,Selecting a 16461Frame}), and any other frames inside of it, leaving its caller as the 16462innermost remaining frame. That frame becomes selected. The 16463specified value is stored in the registers used for returning values 16464of functions. 16465 16466The @code{return} command does not resume execution; it leaves the 16467program stopped in the state that would exist if the function had just 16468returned. In contrast, the @code{finish} command (@pxref{Continuing 16469and Stepping, ,Continuing and Stepping}) resumes execution until the 16470selected stack frame returns naturally. 16471 16472@value{GDBN} needs to know how the @var{expression} argument should be set for 16473the inferior. The concrete registers assignment depends on the OS ABI and the 16474type being returned by the selected stack frame. For example it is common for 16475OS ABI to return floating point values in FPU registers while integer values in 16476CPU registers. Still some ABIs return even floating point values in CPU 16477registers. Larger integer widths (such as @code{long long int}) also have 16478specific placement rules. @value{GDBN} already knows the OS ABI from its 16479current target so it needs to find out also the type being returned to make the 16480assignment into the right register(s). 16481 16482Normally, the selected stack frame has debug info. @value{GDBN} will always 16483use the debug info instead of the implicit type of @var{expression} when the 16484debug info is available. For example, if you type @kbd{return -1}, and the 16485function in the current stack frame is declared to return a @code{long long 16486int}, @value{GDBN} transparently converts the implicit @code{int} value of -1 16487into a @code{long long int}: 16488 16489@smallexample 16490Breakpoint 1, func () at gdb.base/return-nodebug.c:29 1649129 return 31; 16492(@value{GDBP}) return -1 16493Make func return now? (y or n) y 16494#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43 1649543 printf ("result=%lld\n", func ()); 16496(@value{GDBP}) 16497@end smallexample 16498 16499However, if the selected stack frame does not have a debug info, e.g., if the 16500function was compiled without debug info, @value{GDBN} has to find out the type 16501to return from user. Specifying a different type by mistake may set the value 16502in different inferior registers than the caller code expects. For example, 16503typing @kbd{return -1} with its implicit type @code{int} would set only a part 16504of a @code{long long int} result for a debug info less function (on 32-bit 16505architectures). Therefore the user is required to specify the return type by 16506an appropriate cast explicitly: 16507 16508@smallexample 16509Breakpoint 2, 0x0040050b in func () 16510(@value{GDBP}) return -1 16511Return value type not available for selected stack frame. 16512Please use an explicit cast of the value to return. 16513(@value{GDBP}) return (long long int) -1 16514Make selected stack frame return now? (y or n) y 16515#0 0x00400526 in main () 16516(@value{GDBP}) 16517@end smallexample 16518 16519@node Calling 16520@section Calling Program Functions 16521 16522@table @code 16523@cindex calling functions 16524@cindex inferior functions, calling 16525@item print @var{expr} 16526Evaluate the expression @var{expr} and display the resulting value. 16527@var{expr} may include calls to functions in the program being 16528debugged. 16529 16530@kindex call 16531@item call @var{expr} 16532Evaluate the expression @var{expr} without displaying @code{void} 16533returned values. 16534 16535You can use this variant of the @code{print} command if you want to 16536execute a function from your program that does not return anything 16537(a.k.a.@: @dfn{a void function}), but without cluttering the output 16538with @code{void} returned values that @value{GDBN} will otherwise 16539print. If the result is not void, it is printed and saved in the 16540value history. 16541@end table 16542 16543It is possible for the function you call via the @code{print} or 16544@code{call} command to generate a signal (e.g., if there's a bug in 16545the function, or if you passed it incorrect arguments). What happens 16546in that case is controlled by the @code{set unwindonsignal} command. 16547 16548Similarly, with a C@t{++} program it is possible for the function you 16549call via the @code{print} or @code{call} command to generate an 16550exception that is not handled due to the constraints of the dummy 16551frame. In this case, any exception that is raised in the frame, but has 16552an out-of-frame exception handler will not be found. GDB builds a 16553dummy-frame for the inferior function call, and the unwinder cannot 16554seek for exception handlers outside of this dummy-frame. What happens 16555in that case is controlled by the 16556@code{set unwind-on-terminating-exception} command. 16557 16558@table @code 16559@item set unwindonsignal 16560@kindex set unwindonsignal 16561@cindex unwind stack in called functions 16562@cindex call dummy stack unwinding 16563Set unwinding of the stack if a signal is received while in a function 16564that @value{GDBN} called in the program being debugged. If set to on, 16565@value{GDBN} unwinds the stack it created for the call and restores 16566the context to what it was before the call. If set to off (the 16567default), @value{GDBN} stops in the frame where the signal was 16568received. 16569 16570@item show unwindonsignal 16571@kindex show unwindonsignal 16572Show the current setting of stack unwinding in the functions called by 16573@value{GDBN}. 16574 16575@item set unwind-on-terminating-exception 16576@kindex set unwind-on-terminating-exception 16577@cindex unwind stack in called functions with unhandled exceptions 16578@cindex call dummy stack unwinding on unhandled exception. 16579Set unwinding of the stack if a C@t{++} exception is raised, but left 16580unhandled while in a function that @value{GDBN} called in the program being 16581debugged. If set to on (the default), @value{GDBN} unwinds the stack 16582it created for the call and restores the context to what it was before 16583the call. If set to off, @value{GDBN} the exception is delivered to 16584the default C@t{++} exception handler and the inferior terminated. 16585 16586@item show unwind-on-terminating-exception 16587@kindex show unwind-on-terminating-exception 16588Show the current setting of stack unwinding in the functions called by 16589@value{GDBN}. 16590 16591@end table 16592 16593@cindex weak alias functions 16594Sometimes, a function you wish to call is actually a @dfn{weak alias} 16595for another function. In such case, @value{GDBN} might not pick up 16596the type information, including the types of the function arguments, 16597which causes @value{GDBN} to call the inferior function incorrectly. 16598As a result, the called function will function erroneously and may 16599even crash. A solution to that is to use the name of the aliased 16600function instead. 16601 16602@node Patching 16603@section Patching Programs 16604 16605@cindex patching binaries 16606@cindex writing into executables 16607@cindex writing into corefiles 16608 16609By default, @value{GDBN} opens the file containing your program's 16610executable code (or the corefile) read-only. This prevents accidental 16611alterations to machine code; but it also prevents you from intentionally 16612patching your program's binary. 16613 16614If you'd like to be able to patch the binary, you can specify that 16615explicitly with the @code{set write} command. For example, you might 16616want to turn on internal debugging flags, or even to make emergency 16617repairs. 16618 16619@table @code 16620@kindex set write 16621@item set write on 16622@itemx set write off 16623If you specify @samp{set write on}, @value{GDBN} opens executable and 16624core files for both reading and writing; if you specify @kbd{set write 16625off} (the default), @value{GDBN} opens them read-only. 16626 16627If you have already loaded a file, you must load it again (using the 16628@code{exec-file} or @code{core-file} command) after changing @code{set 16629write}, for your new setting to take effect. 16630 16631@item show write 16632@kindex show write 16633Display whether executable files and core files are opened for writing 16634as well as reading. 16635@end table 16636 16637@node GDB Files 16638@chapter @value{GDBN} Files 16639 16640@value{GDBN} needs to know the file name of the program to be debugged, 16641both in order to read its symbol table and in order to start your 16642program. To debug a core dump of a previous run, you must also tell 16643@value{GDBN} the name of the core dump file. 16644 16645@menu 16646* Files:: Commands to specify files 16647* Separate Debug Files:: Debugging information in separate files 16648* MiniDebugInfo:: Debugging information in a special section 16649* Index Files:: Index files speed up GDB 16650* Symbol Errors:: Errors reading symbol files 16651* Data Files:: GDB data files 16652@end menu 16653 16654@node Files 16655@section Commands to Specify Files 16656 16657@cindex symbol table 16658@cindex core dump file 16659 16660You may want to specify executable and core dump file names. The usual 16661way to do this is at start-up time, using the arguments to 16662@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and 16663Out of @value{GDBN}}). 16664 16665Occasionally it is necessary to change to a different file during a 16666@value{GDBN} session. Or you may run @value{GDBN} and forget to 16667specify a file you want to use. Or you are debugging a remote target 16668via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver} 16669Program}). In these situations the @value{GDBN} commands to specify 16670new files are useful. 16671 16672@table @code 16673@cindex executable file 16674@kindex file 16675@item file @var{filename} 16676Use @var{filename} as the program to be debugged. It is read for its 16677symbols and for the contents of pure memory. It is also the program 16678executed when you use the @code{run} command. If you do not specify a 16679directory and the file is not found in the @value{GDBN} working directory, 16680@value{GDBN} uses the environment variable @code{PATH} as a list of 16681directories to search, just as the shell does when looking for a program 16682to run. You can change the value of this variable, for both @value{GDBN} 16683and your program, using the @code{path} command. 16684 16685@cindex unlinked object files 16686@cindex patching object files 16687You can load unlinked object @file{.o} files into @value{GDBN} using 16688the @code{file} command. You will not be able to ``run'' an object 16689file, but you can disassemble functions and inspect variables. Also, 16690if the underlying BFD functionality supports it, you could use 16691@kbd{gdb -write} to patch object files using this technique. Note 16692that @value{GDBN} can neither interpret nor modify relocations in this 16693case, so branches and some initialized variables will appear to go to 16694the wrong place. But this feature is still handy from time to time. 16695 16696@item file 16697@code{file} with no argument makes @value{GDBN} discard any information it 16698has on both executable file and the symbol table. 16699 16700@kindex exec-file 16701@item exec-file @r{[} @var{filename} @r{]} 16702Specify that the program to be run (but not the symbol table) is found 16703in @var{filename}. @value{GDBN} searches the environment variable @code{PATH} 16704if necessary to locate your program. Omitting @var{filename} means to 16705discard information on the executable file. 16706 16707@kindex symbol-file 16708@item symbol-file @r{[} @var{filename} @r{]} 16709Read symbol table information from file @var{filename}. @code{PATH} is 16710searched when necessary. Use the @code{file} command to get both symbol 16711table and program to run from the same file. 16712 16713@code{symbol-file} with no argument clears out @value{GDBN} information on your 16714program's symbol table. 16715 16716The @code{symbol-file} command causes @value{GDBN} to forget the contents of 16717some breakpoints and auto-display expressions. This is because they may 16718contain pointers to the internal data recording symbols and data types, 16719which are part of the old symbol table data being discarded inside 16720@value{GDBN}. 16721 16722@code{symbol-file} does not repeat if you press @key{RET} again after 16723executing it once. 16724 16725When @value{GDBN} is configured for a particular environment, it 16726understands debugging information in whatever format is the standard 16727generated for that environment; you may use either a @sc{gnu} compiler, or 16728other compilers that adhere to the local conventions. 16729Best results are usually obtained from @sc{gnu} compilers; for example, 16730using @code{@value{NGCC}} you can generate debugging information for 16731optimized code. 16732 16733For most kinds of object files, with the exception of old SVR3 systems 16734using COFF, the @code{symbol-file} command does not normally read the 16735symbol table in full right away. Instead, it scans the symbol table 16736quickly to find which source files and which symbols are present. The 16737details are read later, one source file at a time, as they are needed. 16738 16739The purpose of this two-stage reading strategy is to make @value{GDBN} 16740start up faster. For the most part, it is invisible except for 16741occasional pauses while the symbol table details for a particular source 16742file are being read. (The @code{set verbose} command can turn these 16743pauses into messages if desired. @xref{Messages/Warnings, ,Optional 16744Warnings and Messages}.) 16745 16746We have not implemented the two-stage strategy for COFF yet. When the 16747symbol table is stored in COFF format, @code{symbol-file} reads the 16748symbol table data in full right away. Note that ``stabs-in-COFF'' 16749still does the two-stage strategy, since the debug info is actually 16750in stabs format. 16751 16752@kindex readnow 16753@cindex reading symbols immediately 16754@cindex symbols, reading immediately 16755@item symbol-file @r{[} -readnow @r{]} @var{filename} 16756@itemx file @r{[} -readnow @r{]} @var{filename} 16757You can override the @value{GDBN} two-stage strategy for reading symbol 16758tables by using the @samp{-readnow} option with any of the commands that 16759load symbol table information, if you want to be sure @value{GDBN} has the 16760entire symbol table available. 16761 16762@c FIXME: for now no mention of directories, since this seems to be in 16763@c flux. 13mar1992 status is that in theory GDB would look either in 16764@c current dir or in same dir as myprog; but issues like competing 16765@c GDB's, or clutter in system dirs, mean that in practice right now 16766@c only current dir is used. FFish says maybe a special GDB hierarchy 16767@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol 16768@c files. 16769 16770@kindex core-file 16771@item core-file @r{[}@var{filename}@r{]} 16772@itemx core 16773Specify the whereabouts of a core dump file to be used as the ``contents 16774of memory''. Traditionally, core files contain only some parts of the 16775address space of the process that generated them; @value{GDBN} can access the 16776executable file itself for other parts. 16777 16778@code{core-file} with no argument specifies that no core file is 16779to be used. 16780 16781Note that the core file is ignored when your program is actually running 16782under @value{GDBN}. So, if you have been running your program and you 16783wish to debug a core file instead, you must kill the subprocess in which 16784the program is running. To do this, use the @code{kill} command 16785(@pxref{Kill Process, ,Killing the Child Process}). 16786 16787@kindex add-symbol-file 16788@cindex dynamic linking 16789@item add-symbol-file @var{filename} @var{address} 16790@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} 16791@itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{} 16792The @code{add-symbol-file} command reads additional symbol table 16793information from the file @var{filename}. You would use this command 16794when @var{filename} has been dynamically loaded (by some other means) 16795into the program that is running. @var{address} should be the memory 16796address at which the file has been loaded; @value{GDBN} cannot figure 16797this out for itself. You can additionally specify an arbitrary number 16798of @samp{-s @var{section} @var{address}} pairs, to give an explicit 16799section name and base address for that section. You can specify any 16800@var{address} as an expression. 16801 16802The symbol table of the file @var{filename} is added to the symbol table 16803originally read with the @code{symbol-file} command. You can use the 16804@code{add-symbol-file} command any number of times; the new symbol data 16805thus read is kept in addition to the old. 16806 16807Changes can be reverted using the command @code{remove-symbol-file}. 16808 16809@cindex relocatable object files, reading symbols from 16810@cindex object files, relocatable, reading symbols from 16811@cindex reading symbols from relocatable object files 16812@cindex symbols, reading from relocatable object files 16813@cindex @file{.o} files, reading symbols from 16814Although @var{filename} is typically a shared library file, an 16815executable file, or some other object file which has been fully 16816relocated for loading into a process, you can also load symbolic 16817information from relocatable @file{.o} files, as long as: 16818 16819@itemize @bullet 16820@item 16821the file's symbolic information refers only to linker symbols defined in 16822that file, not to symbols defined by other object files, 16823@item 16824every section the file's symbolic information refers to has actually 16825been loaded into the inferior, as it appears in the file, and 16826@item 16827you can determine the address at which every section was loaded, and 16828provide these to the @code{add-symbol-file} command. 16829@end itemize 16830 16831@noindent 16832Some embedded operating systems, like Sun Chorus and VxWorks, can load 16833relocatable files into an already running program; such systems 16834typically make the requirements above easy to meet. However, it's 16835important to recognize that many native systems use complex link 16836procedures (@code{.linkonce} section factoring and C@t{++} constructor table 16837assembly, for example) that make the requirements difficult to meet. In 16838general, one cannot assume that using @code{add-symbol-file} to read a 16839relocatable object file's symbolic information will have the same effect 16840as linking the relocatable object file into the program in the normal 16841way. 16842 16843@code{add-symbol-file} does not repeat if you press @key{RET} after using it. 16844 16845@kindex remove-symbol-file 16846@item remove-symbol-file @var{filename} 16847@item remove-symbol-file -a @var{address} 16848Remove a symbol file added via the @code{add-symbol-file} command. The 16849file to remove can be identified by its @var{filename} or by an @var{address} 16850that lies within the boundaries of this symbol file in memory. Example: 16851 16852@smallexample 16853(gdb) add-symbol-file /home/user/gdb/mylib.so 0x7ffff7ff9480 16854add symbol table from file "/home/user/gdb/mylib.so" at 16855 .text_addr = 0x7ffff7ff9480 16856(y or n) y 16857Reading symbols from /home/user/gdb/mylib.so...done. 16858(gdb) remove-symbol-file -a 0x7ffff7ff9480 16859Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y 16860(gdb) 16861@end smallexample 16862 16863 16864@code{remove-symbol-file} does not repeat if you press @key{RET} after using it. 16865 16866@kindex add-symbol-file-from-memory 16867@cindex @code{syscall DSO} 16868@cindex load symbols from memory 16869@item add-symbol-file-from-memory @var{address} 16870Load symbols from the given @var{address} in a dynamically loaded 16871object file whose image is mapped directly into the inferior's memory. 16872For example, the Linux kernel maps a @code{syscall DSO} into each 16873process's address space; this DSO provides kernel-specific code for 16874some system calls. The argument can be any expression whose 16875evaluation yields the address of the file's shared object file header. 16876For this command to work, you must have used @code{symbol-file} or 16877@code{exec-file} commands in advance. 16878 16879@kindex add-shared-symbol-files 16880@kindex assf 16881@item add-shared-symbol-files @var{library-file} 16882@itemx assf @var{library-file} 16883The @code{add-shared-symbol-files} command can currently be used only 16884in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an 16885alias for the @code{dll-symbols} command (@pxref{Cygwin Native}). 16886@value{GDBN} automatically looks for shared libraries, however if 16887@value{GDBN} does not find yours, you can invoke 16888@code{add-shared-symbol-files}. It takes one argument: the shared 16889library's file name. @code{assf} is a shorthand alias for 16890@code{add-shared-symbol-files}. 16891 16892@kindex section 16893@item section @var{section} @var{addr} 16894The @code{section} command changes the base address of the named 16895@var{section} of the exec file to @var{addr}. This can be used if the 16896exec file does not contain section addresses, (such as in the 16897@code{a.out} format), or when the addresses specified in the file 16898itself are wrong. Each section must be changed separately. The 16899@code{info files} command, described below, lists all the sections and 16900their addresses. 16901 16902@kindex info files 16903@kindex info target 16904@item info files 16905@itemx info target 16906@code{info files} and @code{info target} are synonymous; both print the 16907current target (@pxref{Targets, ,Specifying a Debugging Target}), 16908including the names of the executable and core dump files currently in 16909use by @value{GDBN}, and the files from which symbols were loaded. The 16910command @code{help target} lists all possible targets rather than 16911current ones. 16912 16913@kindex maint info sections 16914@item maint info sections 16915Another command that can give you extra information about program sections 16916is @code{maint info sections}. In addition to the section information 16917displayed by @code{info files}, this command displays the flags and file 16918offset of each section in the executable and core dump files. In addition, 16919@code{maint info sections} provides the following command options (which 16920may be arbitrarily combined): 16921 16922@table @code 16923@item ALLOBJ 16924Display sections for all loaded object files, including shared libraries. 16925@item @var{sections} 16926Display info only for named @var{sections}. 16927@item @var{section-flags} 16928Display info only for sections for which @var{section-flags} are true. 16929The section flags that @value{GDBN} currently knows about are: 16930@table @code 16931@item ALLOC 16932Section will have space allocated in the process when loaded. 16933Set for all sections except those containing debug information. 16934@item LOAD 16935Section will be loaded from the file into the child process memory. 16936Set for pre-initialized code and data, clear for @code{.bss} sections. 16937@item RELOC 16938Section needs to be relocated before loading. 16939@item READONLY 16940Section cannot be modified by the child process. 16941@item CODE 16942Section contains executable code only. 16943@item DATA 16944Section contains data only (no executable code). 16945@item ROM 16946Section will reside in ROM. 16947@item CONSTRUCTOR 16948Section contains data for constructor/destructor lists. 16949@item HAS_CONTENTS 16950Section is not empty. 16951@item NEVER_LOAD 16952An instruction to the linker to not output the section. 16953@item COFF_SHARED_LIBRARY 16954A notification to the linker that the section contains 16955COFF shared library information. 16956@item IS_COMMON 16957Section contains common symbols. 16958@end table 16959@end table 16960@kindex set trust-readonly-sections 16961@cindex read-only sections 16962@item set trust-readonly-sections on 16963Tell @value{GDBN} that readonly sections in your object file 16964really are read-only (i.e.@: that their contents will not change). 16965In that case, @value{GDBN} can fetch values from these sections 16966out of the object file, rather than from the target program. 16967For some targets (notably embedded ones), this can be a significant 16968enhancement to debugging performance. 16969 16970The default is off. 16971 16972@item set trust-readonly-sections off 16973Tell @value{GDBN} not to trust readonly sections. This means that 16974the contents of the section might change while the program is running, 16975and must therefore be fetched from the target when needed. 16976 16977@item show trust-readonly-sections 16978Show the current setting of trusting readonly sections. 16979@end table 16980 16981All file-specifying commands allow both absolute and relative file names 16982as arguments. @value{GDBN} always converts the file name to an absolute file 16983name and remembers it that way. 16984 16985@cindex shared libraries 16986@anchor{Shared Libraries} 16987@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix, 16988and IBM RS/6000 AIX shared libraries. 16989 16990On MS-Windows @value{GDBN} must be linked with the Expat library to support 16991shared libraries. @xref{Expat}. 16992 16993@value{GDBN} automatically loads symbol definitions from shared libraries 16994when you use the @code{run} command, or when you examine a core file. 16995(Before you issue the @code{run} command, @value{GDBN} does not understand 16996references to a function in a shared library, however---unless you are 16997debugging a core file). 16998 16999On HP-UX, if the program loads a library explicitly, @value{GDBN} 17000automatically loads the symbols at the time of the @code{shl_load} call. 17001 17002@c FIXME: some @value{GDBN} release may permit some refs to undef 17003@c FIXME...symbols---eg in a break cmd---assuming they are from a shared 17004@c FIXME...lib; check this from time to time when updating manual 17005 17006There are times, however, when you may wish to not automatically load 17007symbol definitions from shared libraries, such as when they are 17008particularly large or there are many of them. 17009 17010To control the automatic loading of shared library symbols, use the 17011commands: 17012 17013@table @code 17014@kindex set auto-solib-add 17015@item set auto-solib-add @var{mode} 17016If @var{mode} is @code{on}, symbols from all shared object libraries 17017will be loaded automatically when the inferior begins execution, you 17018attach to an independently started inferior, or when the dynamic linker 17019informs @value{GDBN} that a new library has been loaded. If @var{mode} 17020is @code{off}, symbols must be loaded manually, using the 17021@code{sharedlibrary} command. The default value is @code{on}. 17022 17023@cindex memory used for symbol tables 17024If your program uses lots of shared libraries with debug info that 17025takes large amounts of memory, you can decrease the @value{GDBN} 17026memory footprint by preventing it from automatically loading the 17027symbols from shared libraries. To that end, type @kbd{set 17028auto-solib-add off} before running the inferior, then load each 17029library whose debug symbols you do need with @kbd{sharedlibrary 17030@var{regexp}}, where @var{regexp} is a regular expression that matches 17031the libraries whose symbols you want to be loaded. 17032 17033@kindex show auto-solib-add 17034@item show auto-solib-add 17035Display the current autoloading mode. 17036@end table 17037 17038@cindex load shared library 17039To explicitly load shared library symbols, use the @code{sharedlibrary} 17040command: 17041 17042@table @code 17043@kindex info sharedlibrary 17044@kindex info share 17045@item info share @var{regex} 17046@itemx info sharedlibrary @var{regex} 17047Print the names of the shared libraries which are currently loaded 17048that match @var{regex}. If @var{regex} is omitted then print 17049all shared libraries that are loaded. 17050 17051@kindex sharedlibrary 17052@kindex share 17053@item sharedlibrary @var{regex} 17054@itemx share @var{regex} 17055Load shared object library symbols for files matching a 17056Unix regular expression. 17057As with files loaded automatically, it only loads shared libraries 17058required by your program for a core file or after typing @code{run}. If 17059@var{regex} is omitted all shared libraries required by your program are 17060loaded. 17061 17062@item nosharedlibrary 17063@kindex nosharedlibrary 17064@cindex unload symbols from shared libraries 17065Unload all shared object library symbols. This discards all symbols 17066that have been loaded from all shared libraries. Symbols from shared 17067libraries that were loaded by explicit user requests are not 17068discarded. 17069@end table 17070 17071Sometimes you may wish that @value{GDBN} stops and gives you control 17072when any of shared library events happen. The best way to do this is 17073to use @code{catch load} and @code{catch unload} (@pxref{Set 17074Catchpoints}). 17075 17076@value{GDBN} also supports the the @code{set stop-on-solib-events} 17077command for this. This command exists for historical reasons. It is 17078less useful than setting a catchpoint, because it does not allow for 17079conditions or commands as a catchpoint does. 17080 17081@table @code 17082@item set stop-on-solib-events 17083@kindex set stop-on-solib-events 17084This command controls whether @value{GDBN} should give you control 17085when the dynamic linker notifies it about some shared library event. 17086The most common event of interest is loading or unloading of a new 17087shared library. 17088 17089@item show stop-on-solib-events 17090@kindex show stop-on-solib-events 17091Show whether @value{GDBN} stops and gives you control when shared 17092library events happen. 17093@end table 17094 17095Shared libraries are also supported in many cross or remote debugging 17096configurations. @value{GDBN} needs to have access to the target's libraries; 17097this can be accomplished either by providing copies of the libraries 17098on the host system, or by asking @value{GDBN} to automatically retrieve the 17099libraries from the target. If copies of the target libraries are 17100provided, they need to be the same as the target libraries, although the 17101copies on the target can be stripped as long as the copies on the host are 17102not. 17103 17104@cindex where to look for shared libraries 17105For remote debugging, you need to tell @value{GDBN} where the target 17106libraries are, so that it can load the correct copies---otherwise, it 17107may try to load the host's libraries. @value{GDBN} has two variables 17108to specify the search directories for target libraries. 17109 17110@table @code 17111@cindex prefix for shared library file names 17112@cindex system root, alternate 17113@kindex set solib-absolute-prefix 17114@kindex set sysroot 17115@item set sysroot @var{path} 17116Use @var{path} as the system root for the program being debugged. Any 17117absolute shared library paths will be prefixed with @var{path}; many 17118runtime loaders store the absolute paths to the shared library in the 17119target program's memory. If you use @code{set sysroot} to find shared 17120libraries, they need to be laid out in the same way that they are on 17121the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy 17122under @var{path}. 17123 17124If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will 17125retrieve the target libraries from the remote system. This is only 17126supported when using a remote target that supports the @code{remote get} 17127command (@pxref{File Transfer,,Sending files to a remote system}). 17128The part of @var{path} following the initial @file{remote:} 17129(if present) is used as system root prefix on the remote file system. 17130@footnote{If you want to specify a local system root using a directory 17131that happens to be named @file{remote:}, you need to use some equivalent 17132variant of the name like @file{./remote:}.} 17133 17134For targets with an MS-DOS based filesystem, such as MS-Windows and 17135SymbianOS, @value{GDBN} tries prefixing a few variants of the target 17136absolute file name with @var{path}. But first, on Unix hosts, 17137@value{GDBN} converts all backslash directory separators into forward 17138slashes, because the backslash is not a directory separator on Unix: 17139 17140@smallexample 17141 c:\foo\bar.dll @result{} c:/foo/bar.dll 17142@end smallexample 17143 17144Then, @value{GDBN} attempts prefixing the target file name with 17145@var{path}, and looks for the resulting file name in the host file 17146system: 17147 17148@smallexample 17149 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll 17150@end smallexample 17151 17152If that does not find the shared library, @value{GDBN} tries removing 17153the @samp{:} character from the drive spec, both for convenience, and, 17154for the case of the host file system not supporting file names with 17155colons: 17156 17157@smallexample 17158 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll 17159@end smallexample 17160 17161This makes it possible to have a system root that mirrors a target 17162with more than one drive. E.g., you may want to setup your local 17163copies of the target system shared libraries like so (note @samp{c} vs 17164@samp{z}): 17165 17166@smallexample 17167 @file{/path/to/sysroot/c/sys/bin/foo.dll} 17168 @file{/path/to/sysroot/c/sys/bin/bar.dll} 17169 @file{/path/to/sysroot/z/sys/bin/bar.dll} 17170@end smallexample 17171 17172@noindent 17173and point the system root at @file{/path/to/sysroot}, so that 17174@value{GDBN} can find the correct copies of both 17175@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}. 17176 17177If that still does not find the shared library, @value{GDBN} tries 17178removing the whole drive spec from the target file name: 17179 17180@smallexample 17181 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll 17182@end smallexample 17183 17184This last lookup makes it possible to not care about the drive name, 17185if you don't want or need to. 17186 17187The @code{set solib-absolute-prefix} command is an alias for @code{set 17188sysroot}. 17189 17190@cindex default system root 17191@cindex @samp{--with-sysroot} 17192You can set the default system root by using the configure-time 17193@samp{--with-sysroot} option. If the system root is inside 17194@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 17195@samp{--exec-prefix}), then the default system root will be updated 17196automatically if the installed @value{GDBN} is moved to a new 17197location. 17198 17199@kindex show sysroot 17200@item show sysroot 17201Display the current shared library prefix. 17202 17203@kindex set solib-search-path 17204@item set solib-search-path @var{path} 17205If this variable is set, @var{path} is a colon-separated list of 17206directories to search for shared libraries. @samp{solib-search-path} 17207is used after @samp{sysroot} fails to locate the library, or if the 17208path to the library is relative instead of absolute. If you want to 17209use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set 17210@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from 17211finding your host's libraries. @samp{sysroot} is preferred; setting 17212it to a nonexistent directory may interfere with automatic loading 17213of shared library symbols. 17214 17215@kindex show solib-search-path 17216@item show solib-search-path 17217Display the current shared library search path. 17218 17219@cindex DOS file-name semantics of file names. 17220@kindex set target-file-system-kind (unix|dos-based|auto) 17221@kindex show target-file-system-kind 17222@item set target-file-system-kind @var{kind} 17223Set assumed file system kind for target reported file names. 17224 17225Shared library file names as reported by the target system may not 17226make sense as is on the system @value{GDBN} is running on. For 17227example, when remote debugging a target that has MS-DOS based file 17228system semantics, from a Unix host, the target may be reporting to 17229@value{GDBN} a list of loaded shared libraries with file names such as 17230@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of 17231drive letters, so the @samp{c:\} prefix is not normally understood as 17232indicating an absolute file name, and neither is the backslash 17233normally considered a directory separator character. In that case, 17234the native file system would interpret this whole absolute file name 17235as a relative file name with no directory components. This would make 17236it impossible to point @value{GDBN} at a copy of the remote target's 17237shared libraries on the host using @code{set sysroot}, and impractical 17238with @code{set solib-search-path}. Setting 17239@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN} 17240to interpret such file names similarly to how the target would, and to 17241map them to file names valid on @value{GDBN}'s native file system 17242semantics. The value of @var{kind} can be @code{"auto"}, in addition 17243to one of the supported file system kinds. In that case, @value{GDBN} 17244tries to determine the appropriate file system variant based on the 17245current target's operating system (@pxref{ABI, ,Configuring the 17246Current ABI}). The supported file system settings are: 17247 17248@table @code 17249@item unix 17250Instruct @value{GDBN} to assume the target file system is of Unix 17251kind. Only file names starting the forward slash (@samp{/}) character 17252are considered absolute, and the directory separator character is also 17253the forward slash. 17254 17255@item dos-based 17256Instruct @value{GDBN} to assume the target file system is DOS based. 17257File names starting with either a forward slash, or a drive letter 17258followed by a colon (e.g., @samp{c:}), are considered absolute, and 17259both the slash (@samp{/}) and the backslash (@samp{\\}) characters are 17260considered directory separators. 17261 17262@item auto 17263Instruct @value{GDBN} to use the file system kind associated with the 17264target operating system (@pxref{ABI, ,Configuring the Current ABI}). 17265This is the default. 17266@end table 17267@end table 17268 17269@cindex file name canonicalization 17270@cindex base name differences 17271When processing file names provided by the user, @value{GDBN} 17272frequently needs to compare them to the file names recorded in the 17273program's debug info. Normally, @value{GDBN} compares just the 17274@dfn{base names} of the files as strings, which is reasonably fast 17275even for very large programs. (The base name of a file is the last 17276portion of its name, after stripping all the leading directories.) 17277This shortcut in comparison is based upon the assumption that files 17278cannot have more than one base name. This is usually true, but 17279references to files that use symlinks or similar filesystem 17280facilities violate that assumption. If your program records files 17281using such facilities, or if you provide file names to @value{GDBN} 17282using symlinks etc., you can set @code{basenames-may-differ} to 17283@code{true} to instruct @value{GDBN} to completely canonicalize each 17284pair of file names it needs to compare. This will make file-name 17285comparisons accurate, but at a price of a significant slowdown. 17286 17287@table @code 17288@item set basenames-may-differ 17289@kindex set basenames-may-differ 17290Set whether a source file may have multiple base names. 17291 17292@item show basenames-may-differ 17293@kindex show basenames-may-differ 17294Show whether a source file may have multiple base names. 17295@end table 17296 17297@node Separate Debug Files 17298@section Debugging Information in Separate Files 17299@cindex separate debugging information files 17300@cindex debugging information in separate files 17301@cindex @file{.debug} subdirectories 17302@cindex debugging information directory, global 17303@cindex global debugging information directories 17304@cindex build ID, and separate debugging files 17305@cindex @file{.build-id} directory 17306 17307@value{GDBN} allows you to put a program's debugging information in a 17308file separate from the executable itself, in a way that allows 17309@value{GDBN} to find and load the debugging information automatically. 17310Since debugging information can be very large---sometimes larger 17311than the executable code itself---some systems distribute debugging 17312information for their executables in separate files, which users can 17313install only when they need to debug a problem. 17314 17315@value{GDBN} supports two ways of specifying the separate debug info 17316file: 17317 17318@itemize @bullet 17319@item 17320The executable contains a @dfn{debug link} that specifies the name of 17321the separate debug info file. The separate debug file's name is 17322usually @file{@var{executable}.debug}, where @var{executable} is the 17323name of the corresponding executable file without leading directories 17324(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the 17325debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC) 17326checksum for the debug file, which @value{GDBN} uses to validate that 17327the executable and the debug file came from the same build. 17328 17329@item 17330The executable contains a @dfn{build ID}, a unique bit string that is 17331also present in the corresponding debug info file. (This is supported 17332only on some operating systems, notably those which use the ELF format 17333for binary files and the @sc{gnu} Binutils.) For more details about 17334this feature, see the description of the @option{--build-id} 17335command-line option in @ref{Options, , Command Line Options, ld.info, 17336The GNU Linker}. The debug info file's name is not specified 17337explicitly by the build ID, but can be computed from the build ID, see 17338below. 17339@end itemize 17340 17341Depending on the way the debug info file is specified, @value{GDBN} 17342uses two different methods of looking for the debug file: 17343 17344@itemize @bullet 17345@item 17346For the ``debug link'' method, @value{GDBN} looks up the named file in 17347the directory of the executable file, then in a subdirectory of that 17348directory named @file{.debug}, and finally under each one of the global debug 17349directories, in a subdirectory whose name is identical to the leading 17350directories of the executable's absolute file name. 17351 17352@item 17353For the ``build ID'' method, @value{GDBN} looks in the 17354@file{.build-id} subdirectory of each one of the global debug directories for 17355a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the 17356first 2 hex characters of the build ID bit string, and @var{nnnnnnnn} 17357are the rest of the bit string. (Real build ID strings are 32 or more 17358hex characters, not 10.) 17359@end itemize 17360 17361So, for example, suppose you ask @value{GDBN} to debug 17362@file{/usr/bin/ls}, which has a debug link that specifies the 17363file @file{ls.debug}, and a build ID whose value in hex is 17364@code{abcdef1234}. If the list of the global debug directories includes 17365@file{/usr/lib/debug}, then @value{GDBN} will look for the following 17366debug information files, in the indicated order: 17367 17368@itemize @minus 17369@item 17370@file{/usr/lib/debug/.build-id/ab/cdef1234.debug} 17371@item 17372@file{/usr/bin/ls.debug} 17373@item 17374@file{/usr/bin/.debug/ls.debug} 17375@item 17376@file{/usr/lib/debug/usr/bin/ls.debug}. 17377@end itemize 17378 17379@anchor{debug-file-directory} 17380Global debugging info directories default to what is set by @value{GDBN} 17381configure option @option{--with-separate-debug-dir}. During @value{GDBN} run 17382you can also set the global debugging info directories, and view the list 17383@value{GDBN} is currently using. 17384 17385@table @code 17386 17387@kindex set debug-file-directory 17388@item set debug-file-directory @var{directories} 17389Set the directories which @value{GDBN} searches for separate debugging 17390information files to @var{directory}. Multiple path components can be set 17391concatenating them by a path separator. 17392 17393@kindex show debug-file-directory 17394@item show debug-file-directory 17395Show the directories @value{GDBN} searches for separate debugging 17396information files. 17397 17398@end table 17399 17400@cindex @code{.gnu_debuglink} sections 17401@cindex debug link sections 17402A debug link is a special section of the executable file named 17403@code{.gnu_debuglink}. The section must contain: 17404 17405@itemize 17406@item 17407A filename, with any leading directory components removed, followed by 17408a zero byte, 17409@item 17410zero to three bytes of padding, as needed to reach the next four-byte 17411boundary within the section, and 17412@item 17413a four-byte CRC checksum, stored in the same endianness used for the 17414executable file itself. The checksum is computed on the debugging 17415information file's full contents by the function given below, passing 17416zero as the @var{crc} argument. 17417@end itemize 17418 17419Any executable file format can carry a debug link, as long as it can 17420contain a section named @code{.gnu_debuglink} with the contents 17421described above. 17422 17423@cindex @code{.note.gnu.build-id} sections 17424@cindex build ID sections 17425The build ID is a special section in the executable file (and in other 17426ELF binary files that @value{GDBN} may consider). This section is 17427often named @code{.note.gnu.build-id}, but that name is not mandatory. 17428It contains unique identification for the built files---the ID remains 17429the same across multiple builds of the same build tree. The default 17430algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the 17431content for the build ID string. The same section with an identical 17432value is present in the original built binary with symbols, in its 17433stripped variant, and in the separate debugging information file. 17434 17435The debugging information file itself should be an ordinary 17436executable, containing a full set of linker symbols, sections, and 17437debugging information. The sections of the debugging information file 17438should have the same names, addresses, and sizes as the original file, 17439but they need not contain any data---much like a @code{.bss} section 17440in an ordinary executable. 17441 17442The @sc{gnu} binary utilities (Binutils) package includes the 17443@samp{objcopy} utility that can produce 17444the separated executable / debugging information file pairs using the 17445following commands: 17446 17447@smallexample 17448@kbd{objcopy --only-keep-debug foo foo.debug} 17449@kbd{strip -g foo} 17450@end smallexample 17451 17452@noindent 17453These commands remove the debugging 17454information from the executable file @file{foo} and place it in the file 17455@file{foo.debug}. You can use the first, second or both methods to link the 17456two files: 17457 17458@itemize @bullet 17459@item 17460The debug link method needs the following additional command to also leave 17461behind a debug link in @file{foo}: 17462 17463@smallexample 17464@kbd{objcopy --add-gnu-debuglink=foo.debug foo} 17465@end smallexample 17466 17467Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains 17468a version of the @code{strip} command such that the command @kbd{strip foo -f 17469foo.debug} has the same functionality as the two @code{objcopy} commands and 17470the @code{ln -s} command above, together. 17471 17472@item 17473Build ID gets embedded into the main executable using @code{ld --build-id} or 17474the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus 17475compatibility fixes for debug files separation are present in @sc{gnu} binary 17476utilities (Binutils) package since version 2.18. 17477@end itemize 17478 17479@noindent 17480 17481@cindex CRC algorithm definition 17482The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in 17483IEEE 802.3 using the polynomial: 17484 17485@c TexInfo requires naked braces for multi-digit exponents for Tex 17486@c output, but this causes HTML output to barf. HTML has to be set using 17487@c raw commands. So we end up having to specify this equation in 2 17488@c different ways! 17489@ifhtml 17490@display 17491@html 17492 <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> 17493 + <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 17494@end html 17495@end display 17496@end ifhtml 17497@ifnothtml 17498@display 17499 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}} 17500 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1} 17501@end display 17502@end ifnothtml 17503 17504The function is computed byte at a time, taking the least 17505significant bit of each byte first. The initial pattern 17506@code{0xffffffff} is used, to ensure leading zeros affect the CRC and 17507the final result is inverted to ensure trailing zeros also affect the 17508CRC. 17509 17510@emph{Note:} This is the same CRC polynomial as used in handling the 17511@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol, 17512, @value{GDBN} Remote Serial Protocol}). However in the 17513case of the Remote Serial Protocol, the CRC is computed @emph{most} 17514significant bit first, and the result is not inverted, so trailing 17515zeros have no effect on the CRC value. 17516 17517To complete the description, we show below the code of the function 17518which produces the CRC used in @code{.gnu_debuglink}. Inverting the 17519initially supplied @code{crc} argument means that an initial call to 17520this function passing in zero will start computing the CRC using 17521@code{0xffffffff}. 17522 17523@kindex gnu_debuglink_crc32 17524@smallexample 17525unsigned long 17526gnu_debuglink_crc32 (unsigned long crc, 17527 unsigned char *buf, size_t len) 17528@{ 17529 static const unsigned long crc32_table[256] = 17530 @{ 17531 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 17532 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 17533 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 17534 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 17535 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 17536 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 17537 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 17538 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 17539 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 17540 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 17541 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 17542 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 17543 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 17544 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 17545 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 17546 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 17547 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 17548 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 17549 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 17550 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 17551 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 17552 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 17553 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 17554 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 17555 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 17556 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 17557 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 17558 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 17559 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 17560 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 17561 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 17562 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 17563 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 17564 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 17565 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 17566 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 17567 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 17568 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 17569 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 17570 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 17571 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 17572 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 17573 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 17574 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 17575 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 17576 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 17577 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 17578 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 17579 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 17580 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 17581 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 17582 0x2d02ef8d 17583 @}; 17584 unsigned char *end; 17585 17586 crc = ~crc & 0xffffffff; 17587 for (end = buf + len; buf < end; ++buf) 17588 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); 17589 return ~crc & 0xffffffff; 17590@} 17591@end smallexample 17592 17593@noindent 17594This computation does not apply to the ``build ID'' method. 17595 17596@node MiniDebugInfo 17597@section Debugging information in a special section 17598@cindex separate debug sections 17599@cindex @samp{.gnu_debugdata} section 17600 17601Some systems ship pre-built executables and libraries that have a 17602special @samp{.gnu_debugdata} section. This feature is called 17603@dfn{MiniDebugInfo}. This section holds an LZMA-compressed object and 17604is used to supply extra symbols for backtraces. 17605 17606The intent of this section is to provide extra minimal debugging 17607information for use in simple backtraces. It is not intended to be a 17608replacement for full separate debugging information (@pxref{Separate 17609Debug Files}). The example below shows the intended use; however, 17610@value{GDBN} does not currently put restrictions on what sort of 17611debugging information might be included in the section. 17612 17613@value{GDBN} has support for this extension. If the section exists, 17614then it is used provided that no other source of debugging information 17615can be found, and that @value{GDBN} was configured with LZMA support. 17616 17617This section can be easily created using @command{objcopy} and other 17618standard utilities: 17619 17620@smallexample 17621# Extract the dynamic symbols from the main binary, there is no need 17622# to also have these in the normal symbol table. 17623nm -D @var{binary} --format=posix --defined-only \ 17624 | awk '@{ print $1 @}' | sort > dynsyms 17625 17626# Extract all the text (i.e. function) symbols from the debuginfo. 17627# (Note that we actually also accept "D" symbols, for the benefit 17628# of platforms like PowerPC64 that use function descriptors.) 17629nm @var{binary} --format=posix --defined-only \ 17630 | awk '@{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 @}' \ 17631 | sort > funcsyms 17632 17633# Keep all the function symbols not already in the dynamic symbol 17634# table. 17635comm -13 dynsyms funcsyms > keep_symbols 17636 17637# Separate full debug info into debug binary. 17638objcopy --only-keep-debug @var{binary} debug 17639 17640# Copy the full debuginfo, keeping only a minimal set of symbols and 17641# removing some unnecessary sections. 17642objcopy -S --remove-section .gdb_index --remove-section .comment \ 17643 --keep-symbols=keep_symbols debug mini_debuginfo 17644 17645# Drop the full debug info from the original binary. 17646strip --strip-all -R .comment @var{binary} 17647 17648# Inject the compressed data into the .gnu_debugdata section of the 17649# original binary. 17650xz mini_debuginfo 17651objcopy --add-section .gnu_debugdata=mini_debuginfo.xz @var{binary} 17652@end smallexample 17653 17654@node Index Files 17655@section Index Files Speed Up @value{GDBN} 17656@cindex index files 17657@cindex @samp{.gdb_index} section 17658 17659When @value{GDBN} finds a symbol file, it scans the symbols in the 17660file in order to construct an internal symbol table. This lets most 17661@value{GDBN} operations work quickly---at the cost of a delay early 17662on. For large programs, this delay can be quite lengthy, so 17663@value{GDBN} provides a way to build an index, which speeds up 17664startup. 17665 17666The index is stored as a section in the symbol file. @value{GDBN} can 17667write the index to a file, then you can put it into the symbol file 17668using @command{objcopy}. 17669 17670To create an index file, use the @code{save gdb-index} command: 17671 17672@table @code 17673@item save gdb-index @var{directory} 17674@kindex save gdb-index 17675Create an index file for each symbol file currently known by 17676@value{GDBN}. Each file is named after its corresponding symbol file, 17677with @samp{.gdb-index} appended, and is written into the given 17678@var{directory}. 17679@end table 17680 17681Once you have created an index file you can merge it into your symbol 17682file, here named @file{symfile}, using @command{objcopy}: 17683 17684@smallexample 17685$ objcopy --add-section .gdb_index=symfile.gdb-index \ 17686 --set-section-flags .gdb_index=readonly symfile symfile 17687@end smallexample 17688 17689@value{GDBN} will normally ignore older versions of @file{.gdb_index} 17690sections that have been deprecated. Usually they are deprecated because 17691they are missing a new feature or have performance issues. 17692To tell @value{GDBN} to use a deprecated index section anyway 17693specify @code{set use-deprecated-index-sections on}. 17694The default is @code{off}. 17695This can speed up startup, but may result in some functionality being lost. 17696@xref{Index Section Format}. 17697 17698@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on} 17699must be done before gdb reads the file. The following will not work: 17700 17701@smallexample 17702$ gdb -ex "set use-deprecated-index-sections on" <program> 17703@end smallexample 17704 17705Instead you must do, for example, 17706 17707@smallexample 17708$ gdb -iex "set use-deprecated-index-sections on" <program> 17709@end smallexample 17710 17711There are currently some limitation on indices. They only work when 17712for DWARF debugging information, not stabs. And, they do not 17713currently work for programs using Ada. 17714 17715@node Symbol Errors 17716@section Errors Reading Symbol Files 17717 17718While reading a symbol file, @value{GDBN} occasionally encounters problems, 17719such as symbol types it does not recognize, or known bugs in compiler 17720output. By default, @value{GDBN} does not notify you of such problems, since 17721they are relatively common and primarily of interest to people 17722debugging compilers. If you are interested in seeing information 17723about ill-constructed symbol tables, you can either ask @value{GDBN} to print 17724only one message about each such type of problem, no matter how many 17725times the problem occurs; or you can ask @value{GDBN} to print more messages, 17726to see how many times the problems occur, with the @code{set 17727complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and 17728Messages}). 17729 17730The messages currently printed, and their meanings, include: 17731 17732@table @code 17733@item inner block not inside outer block in @var{symbol} 17734 17735The symbol information shows where symbol scopes begin and end 17736(such as at the start of a function or a block of statements). This 17737error indicates that an inner scope block is not fully contained 17738in its outer scope blocks. 17739 17740@value{GDBN} circumvents the problem by treating the inner block as if it had 17741the same scope as the outer block. In the error message, @var{symbol} 17742may be shown as ``@code{(don't know)}'' if the outer block is not a 17743function. 17744 17745@item block at @var{address} out of order 17746 17747The symbol information for symbol scope blocks should occur in 17748order of increasing addresses. This error indicates that it does not 17749do so. 17750 17751@value{GDBN} does not circumvent this problem, and has trouble 17752locating symbols in the source file whose symbols it is reading. (You 17753can often determine what source file is affected by specifying 17754@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and 17755Messages}.) 17756 17757@item bad block start address patched 17758 17759The symbol information for a symbol scope block has a start address 17760smaller than the address of the preceding source line. This is known 17761to occur in the SunOS 4.1.1 (and earlier) C compiler. 17762 17763@value{GDBN} circumvents the problem by treating the symbol scope block as 17764starting on the previous source line. 17765 17766@item bad string table offset in symbol @var{n} 17767 17768@cindex foo 17769Symbol number @var{n} contains a pointer into the string table which is 17770larger than the size of the string table. 17771 17772@value{GDBN} circumvents the problem by considering the symbol to have the 17773name @code{foo}, which may cause other problems if many symbols end up 17774with this name. 17775 17776@item unknown symbol type @code{0x@var{nn}} 17777 17778The symbol information contains new data types that @value{GDBN} does 17779not yet know how to read. @code{0x@var{nn}} is the symbol type of the 17780uncomprehended information, in hexadecimal. 17781 17782@value{GDBN} circumvents the error by ignoring this symbol information. 17783This usually allows you to debug your program, though certain symbols 17784are not accessible. If you encounter such a problem and feel like 17785debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint 17786on @code{complain}, then go up to the function @code{read_dbx_symtab} 17787and examine @code{*bufp} to see the symbol. 17788 17789@item stub type has NULL name 17790 17791@value{GDBN} could not find the full definition for a struct or class. 17792 17793@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{} 17794The symbol information for a C@t{++} member function is missing some 17795information that recent versions of the compiler should have output for 17796it. 17797 17798@item info mismatch between compiler and debugger 17799 17800@value{GDBN} could not parse a type specification output by the compiler. 17801 17802@end table 17803 17804@node Data Files 17805@section GDB Data Files 17806 17807@cindex prefix for data files 17808@value{GDBN} will sometimes read an auxiliary data file. These files 17809are kept in a directory known as the @dfn{data directory}. 17810 17811You can set the data directory's name, and view the name @value{GDBN} 17812is currently using. 17813 17814@table @code 17815@kindex set data-directory 17816@item set data-directory @var{directory} 17817Set the directory which @value{GDBN} searches for auxiliary data files 17818to @var{directory}. 17819 17820@kindex show data-directory 17821@item show data-directory 17822Show the directory @value{GDBN} searches for auxiliary data files. 17823@end table 17824 17825@cindex default data directory 17826@cindex @samp{--with-gdb-datadir} 17827You can set the default data directory by using the configure-time 17828@samp{--with-gdb-datadir} option. If the data directory is inside 17829@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 17830@samp{--exec-prefix}), then the default data directory will be updated 17831automatically if the installed @value{GDBN} is moved to a new 17832location. 17833 17834The data directory may also be specified with the 17835@code{--data-directory} command line option. 17836@xref{Mode Options}. 17837 17838@node Targets 17839@chapter Specifying a Debugging Target 17840 17841@cindex debugging target 17842A @dfn{target} is the execution environment occupied by your program. 17843 17844Often, @value{GDBN} runs in the same host environment as your program; 17845in that case, the debugging target is specified as a side effect when 17846you use the @code{file} or @code{core} commands. When you need more 17847flexibility---for example, running @value{GDBN} on a physically separate 17848host, or controlling a standalone system over a serial port or a 17849realtime system over a TCP/IP connection---you can use the @code{target} 17850command to specify one of the target types configured for @value{GDBN} 17851(@pxref{Target Commands, ,Commands for Managing Targets}). 17852 17853@cindex target architecture 17854It is possible to build @value{GDBN} for several different @dfn{target 17855architectures}. When @value{GDBN} is built like that, you can choose 17856one of the available architectures with the @kbd{set architecture} 17857command. 17858 17859@table @code 17860@kindex set architecture 17861@kindex show architecture 17862@item set architecture @var{arch} 17863This command sets the current target architecture to @var{arch}. The 17864value of @var{arch} can be @code{"auto"}, in addition to one of the 17865supported architectures. 17866 17867@item show architecture 17868Show the current target architecture. 17869 17870@item set processor 17871@itemx processor 17872@kindex set processor 17873@kindex show processor 17874These are alias commands for, respectively, @code{set architecture} 17875and @code{show architecture}. 17876@end table 17877 17878@menu 17879* Active Targets:: Active targets 17880* Target Commands:: Commands for managing targets 17881* Byte Order:: Choosing target byte order 17882@end menu 17883 17884@node Active Targets 17885@section Active Targets 17886 17887@cindex stacking targets 17888@cindex active targets 17889@cindex multiple targets 17890 17891There are multiple classes of targets such as: processes, executable files or 17892recording sessions. Core files belong to the process class, making core file 17893and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently 17894on multiple active targets, one in each class. This allows you to (for 17895example) start a process and inspect its activity, while still having access to 17896the executable file after the process finishes. Or if you start process 17897recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are 17898presented a virtual layer of the recording target, while the process target 17899remains stopped at the chronologically last point of the process execution. 17900 17901Use the @code{core-file} and @code{exec-file} commands to select a new core 17902file or executable target (@pxref{Files, ,Commands to Specify Files}). To 17903specify as a target a process that is already running, use the @code{attach} 17904command (@pxref{Attach, ,Debugging an Already-running Process}). 17905 17906@node Target Commands 17907@section Commands for Managing Targets 17908 17909@table @code 17910@item target @var{type} @var{parameters} 17911Connects the @value{GDBN} host environment to a target machine or 17912process. A target is typically a protocol for talking to debugging 17913facilities. You use the argument @var{type} to specify the type or 17914protocol of the target machine. 17915 17916Further @var{parameters} are interpreted by the target protocol, but 17917typically include things like device names or host names to connect 17918with, process numbers, and baud rates. 17919 17920The @code{target} command does not repeat if you press @key{RET} again 17921after executing the command. 17922 17923@kindex help target 17924@item help target 17925Displays the names of all targets available. To display targets 17926currently selected, use either @code{info target} or @code{info files} 17927(@pxref{Files, ,Commands to Specify Files}). 17928 17929@item help target @var{name} 17930Describe a particular target, including any parameters necessary to 17931select it. 17932 17933@kindex set gnutarget 17934@item set gnutarget @var{args} 17935@value{GDBN} uses its own library BFD to read your files. @value{GDBN} 17936knows whether it is reading an @dfn{executable}, 17937a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format 17938with the @code{set gnutarget} command. Unlike most @code{target} commands, 17939with @code{gnutarget} the @code{target} refers to a program, not a machine. 17940 17941@quotation 17942@emph{Warning:} To specify a file format with @code{set gnutarget}, 17943you must know the actual BFD name. 17944@end quotation 17945 17946@noindent 17947@xref{Files, , Commands to Specify Files}. 17948 17949@kindex show gnutarget 17950@item show gnutarget 17951Use the @code{show gnutarget} command to display what file format 17952@code{gnutarget} is set to read. If you have not set @code{gnutarget}, 17953@value{GDBN} will determine the file format for each file automatically, 17954and @code{show gnutarget} displays @samp{The current BFD target is "auto"}. 17955@end table 17956 17957@cindex common targets 17958Here are some common targets (available, or not, depending on the GDB 17959configuration): 17960 17961@table @code 17962@kindex target 17963@item target exec @var{program} 17964@cindex executable file target 17965An executable file. @samp{target exec @var{program}} is the same as 17966@samp{exec-file @var{program}}. 17967 17968@item target core @var{filename} 17969@cindex core dump file target 17970A core dump file. @samp{target core @var{filename}} is the same as 17971@samp{core-file @var{filename}}. 17972 17973@item target remote @var{medium} 17974@cindex remote target 17975A remote system connected to @value{GDBN} via a serial line or network 17976connection. This command tells @value{GDBN} to use its own remote 17977protocol over @var{medium} for debugging. @xref{Remote Debugging}. 17978 17979For example, if you have a board connected to @file{/dev/ttya} on the 17980machine running @value{GDBN}, you could say: 17981 17982@smallexample 17983target remote /dev/ttya 17984@end smallexample 17985 17986@code{target remote} supports the @code{load} command. This is only 17987useful if you have some other way of getting the stub to the target 17988system, and you can put it somewhere in memory where it won't get 17989clobbered by the download. 17990 17991@item target sim @r{[}@var{simargs}@r{]} @dots{} 17992@cindex built-in simulator target 17993Builtin CPU simulator. @value{GDBN} includes simulators for most architectures. 17994In general, 17995@smallexample 17996 target sim 17997 load 17998 run 17999@end smallexample 18000@noindent 18001works; however, you cannot assume that a specific memory map, device 18002drivers, or even basic I/O is available, although some simulators do 18003provide these. For info about any processor-specific simulator details, 18004see the appropriate section in @ref{Embedded Processors, ,Embedded 18005Processors}. 18006 18007@end table 18008 18009Different targets are available on different configurations of @value{GDBN}; 18010your configuration may have more or fewer targets. 18011 18012Many remote targets require you to download the executable's code once 18013you've successfully established a connection. You may wish to control 18014various aspects of this process. 18015 18016@table @code 18017 18018@item set hash 18019@kindex set hash@r{, for remote monitors} 18020@cindex hash mark while downloading 18021This command controls whether a hash mark @samp{#} is displayed while 18022downloading a file to the remote monitor. If on, a hash mark is 18023displayed after each S-record is successfully downloaded to the 18024monitor. 18025 18026@item show hash 18027@kindex show hash@r{, for remote monitors} 18028Show the current status of displaying the hash mark. 18029 18030@item set debug monitor 18031@kindex set debug monitor 18032@cindex display remote monitor communications 18033Enable or disable display of communications messages between 18034@value{GDBN} and the remote monitor. 18035 18036@item show debug monitor 18037@kindex show debug monitor 18038Show the current status of displaying communications between 18039@value{GDBN} and the remote monitor. 18040@end table 18041 18042@table @code 18043 18044@kindex load @var{filename} 18045@item load @var{filename} 18046@anchor{load} 18047Depending on what remote debugging facilities are configured into 18048@value{GDBN}, the @code{load} command may be available. Where it exists, it 18049is meant to make @var{filename} (an executable) available for debugging 18050on the remote system---by downloading, or dynamic linking, for example. 18051@code{load} also records the @var{filename} symbol table in @value{GDBN}, like 18052the @code{add-symbol-file} command. 18053 18054If your @value{GDBN} does not have a @code{load} command, attempting to 18055execute it gets the error message ``@code{You can't do that when your 18056target is @dots{}}'' 18057 18058The file is loaded at whatever address is specified in the executable. 18059For some object file formats, you can specify the load address when you 18060link the program; for other formats, like a.out, the object file format 18061specifies a fixed address. 18062@c FIXME! This would be a good place for an xref to the GNU linker doc. 18063 18064Depending on the remote side capabilities, @value{GDBN} may be able to 18065load programs into flash memory. 18066 18067@code{load} does not repeat if you press @key{RET} again after using it. 18068@end table 18069 18070@node Byte Order 18071@section Choosing Target Byte Order 18072 18073@cindex choosing target byte order 18074@cindex target byte order 18075 18076Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH, 18077offer the ability to run either big-endian or little-endian byte 18078orders. Usually the executable or symbol will include a bit to 18079designate the endian-ness, and you will not need to worry about 18080which to use. However, you may still find it useful to adjust 18081@value{GDBN}'s idea of processor endian-ness manually. 18082 18083@table @code 18084@kindex set endian 18085@item set endian big 18086Instruct @value{GDBN} to assume the target is big-endian. 18087 18088@item set endian little 18089Instruct @value{GDBN} to assume the target is little-endian. 18090 18091@item set endian auto 18092Instruct @value{GDBN} to use the byte order associated with the 18093executable. 18094 18095@item show endian 18096Display @value{GDBN}'s current idea of the target byte order. 18097 18098@end table 18099 18100Note that these commands merely adjust interpretation of symbolic 18101data on the host, and that they have absolutely no effect on the 18102target system. 18103 18104 18105@node Remote Debugging 18106@chapter Debugging Remote Programs 18107@cindex remote debugging 18108 18109If you are trying to debug a program running on a machine that cannot run 18110@value{GDBN} in the usual way, it is often useful to use remote debugging. 18111For example, you might use remote debugging on an operating system kernel, 18112or on a small system which does not have a general purpose operating system 18113powerful enough to run a full-featured debugger. 18114 18115Some configurations of @value{GDBN} have special serial or TCP/IP interfaces 18116to make this work with particular debugging targets. In addition, 18117@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN}, 18118but not specific to any particular target system) which you can use if you 18119write the remote stubs---the code that runs on the remote system to 18120communicate with @value{GDBN}. 18121 18122Other remote targets may be available in your 18123configuration of @value{GDBN}; use @code{help target} to list them. 18124 18125@menu 18126* Connecting:: Connecting to a remote target 18127* File Transfer:: Sending files to a remote system 18128* Server:: Using the gdbserver program 18129* Remote Configuration:: Remote configuration 18130* Remote Stub:: Implementing a remote stub 18131@end menu 18132 18133@node Connecting 18134@section Connecting to a Remote Target 18135 18136On the @value{GDBN} host machine, you will need an unstripped copy of 18137your program, since @value{GDBN} needs symbol and debugging information. 18138Start up @value{GDBN} as usual, using the name of the local copy of your 18139program as the first argument. 18140 18141@cindex @code{target remote} 18142@value{GDBN} can communicate with the target over a serial line, or 18143over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In 18144each case, @value{GDBN} uses the same protocol for debugging your 18145program; only the medium carrying the debugging packets varies. The 18146@code{target remote} command establishes a connection to the target. 18147Its arguments indicate which medium to use: 18148 18149@table @code 18150 18151@item target remote @var{serial-device} 18152@cindex serial line, @code{target remote} 18153Use @var{serial-device} to communicate with the target. For example, 18154to use a serial line connected to the device named @file{/dev/ttyb}: 18155 18156@smallexample 18157target remote /dev/ttyb 18158@end smallexample 18159 18160If you're using a serial line, you may want to give @value{GDBN} the 18161@samp{--baud} option, or use the @code{set serial baud} command 18162(@pxref{Remote Configuration, set serial baud}) before the 18163@code{target} command. 18164 18165@item target remote @code{@var{host}:@var{port}} 18166@itemx target remote @code{tcp:@var{host}:@var{port}} 18167@cindex @acronym{TCP} port, @code{target remote} 18168Debug using a @acronym{TCP} connection to @var{port} on @var{host}. 18169The @var{host} may be either a host name or a numeric @acronym{IP} 18170address; @var{port} must be a decimal number. The @var{host} could be 18171the target machine itself, if it is directly connected to the net, or 18172it might be a terminal server which in turn has a serial line to the 18173target. 18174 18175For example, to connect to port 2828 on a terminal server named 18176@code{manyfarms}: 18177 18178@smallexample 18179target remote manyfarms:2828 18180@end smallexample 18181 18182If your remote target is actually running on the same machine as your 18183debugger session (e.g.@: a simulator for your target running on the 18184same host), you can omit the hostname. For example, to connect to 18185port 1234 on your local machine: 18186 18187@smallexample 18188target remote :1234 18189@end smallexample 18190@noindent 18191 18192Note that the colon is still required here. 18193 18194@item target remote @code{udp:@var{host}:@var{port}} 18195@cindex @acronym{UDP} port, @code{target remote} 18196Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to 18197connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}: 18198 18199@smallexample 18200target remote udp:manyfarms:2828 18201@end smallexample 18202 18203When using a @acronym{UDP} connection for remote debugging, you should 18204keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP} 18205can silently drop packets on busy or unreliable networks, which will 18206cause havoc with your debugging session. 18207 18208@item target remote | @var{command} 18209@cindex pipe, @code{target remote} to 18210Run @var{command} in the background and communicate with it using a 18211pipe. The @var{command} is a shell command, to be parsed and expanded 18212by the system's command shell, @code{/bin/sh}; it should expect remote 18213protocol packets on its standard input, and send replies on its 18214standard output. You could use this to run a stand-alone simulator 18215that speaks the remote debugging protocol, to make net connections 18216using programs like @code{ssh}, or for other similar tricks. 18217 18218If @var{command} closes its standard output (perhaps by exiting), 18219@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the 18220program has already exited, this will have no effect.) 18221 18222@end table 18223 18224Once the connection has been established, you can use all the usual 18225commands to examine and change data. The remote program is already 18226running; you can use @kbd{step} and @kbd{continue}, and you do not 18227need to use @kbd{run}. 18228 18229@cindex interrupting remote programs 18230@cindex remote programs, interrupting 18231Whenever @value{GDBN} is waiting for the remote program, if you type the 18232interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the 18233program. This may or may not succeed, depending in part on the hardware 18234and the serial drivers the remote system uses. If you type the 18235interrupt character once again, @value{GDBN} displays this prompt: 18236 18237@smallexample 18238Interrupted while waiting for the program. 18239Give up (and stop debugging it)? (y or n) 18240@end smallexample 18241 18242If you type @kbd{y}, @value{GDBN} abandons the remote debugging session. 18243(If you decide you want to try again later, you can use @samp{target 18244remote} again to connect once more.) If you type @kbd{n}, @value{GDBN} 18245goes back to waiting. 18246 18247@table @code 18248@kindex detach (remote) 18249@item detach 18250When you have finished debugging the remote program, you can use the 18251@code{detach} command to release it from @value{GDBN} control. 18252Detaching from the target normally resumes its execution, but the results 18253will depend on your particular remote stub. After the @code{detach} 18254command, @value{GDBN} is free to connect to another target. 18255 18256@kindex disconnect 18257@item disconnect 18258The @code{disconnect} command behaves like @code{detach}, except that 18259the target is generally not resumed. It will wait for @value{GDBN} 18260(this instance or another one) to connect and continue debugging. After 18261the @code{disconnect} command, @value{GDBN} is again free to connect to 18262another target. 18263 18264@cindex send command to remote monitor 18265@cindex extend @value{GDBN} for remote targets 18266@cindex add new commands for external monitor 18267@kindex monitor 18268@item monitor @var{cmd} 18269This command allows you to send arbitrary commands directly to the 18270remote monitor. Since @value{GDBN} doesn't care about the commands it 18271sends like this, this command is the way to extend @value{GDBN}---you 18272can add new commands that only the external monitor will understand 18273and implement. 18274@end table 18275 18276@node File Transfer 18277@section Sending files to a remote system 18278@cindex remote target, file transfer 18279@cindex file transfer 18280@cindex sending files to remote systems 18281 18282Some remote targets offer the ability to transfer files over the same 18283connection used to communicate with @value{GDBN}. This is convenient 18284for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems 18285running @code{gdbserver} over a network interface. For other targets, 18286e.g.@: embedded devices with only a single serial port, this may be 18287the only way to upload or download files. 18288 18289Not all remote targets support these commands. 18290 18291@table @code 18292@kindex remote put 18293@item remote put @var{hostfile} @var{targetfile} 18294Copy file @var{hostfile} from the host system (the machine running 18295@value{GDBN}) to @var{targetfile} on the target system. 18296 18297@kindex remote get 18298@item remote get @var{targetfile} @var{hostfile} 18299Copy file @var{targetfile} from the target system to @var{hostfile} 18300on the host system. 18301 18302@kindex remote delete 18303@item remote delete @var{targetfile} 18304Delete @var{targetfile} from the target system. 18305 18306@end table 18307 18308@node Server 18309@section Using the @code{gdbserver} Program 18310 18311@kindex gdbserver 18312@cindex remote connection without stubs 18313@code{gdbserver} is a control program for Unix-like systems, which 18314allows you to connect your program with a remote @value{GDBN} via 18315@code{target remote}---but without linking in the usual debugging stub. 18316 18317@code{gdbserver} is not a complete replacement for the debugging stubs, 18318because it requires essentially the same operating-system facilities 18319that @value{GDBN} itself does. In fact, a system that can run 18320@code{gdbserver} to connect to a remote @value{GDBN} could also run 18321@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless, 18322because it is a much smaller program than @value{GDBN} itself. It is 18323also easier to port than all of @value{GDBN}, so you may be able to get 18324started more quickly on a new system by using @code{gdbserver}. 18325Finally, if you develop code for real-time systems, you may find that 18326the tradeoffs involved in real-time operation make it more convenient to 18327do as much development work as possible on another system, for example 18328by cross-compiling. You can use @code{gdbserver} to make a similar 18329choice for debugging. 18330 18331@value{GDBN} and @code{gdbserver} communicate via either a serial line 18332or a TCP connection, using the standard @value{GDBN} remote serial 18333protocol. 18334 18335@quotation 18336@emph{Warning:} @code{gdbserver} does not have any built-in security. 18337Do not run @code{gdbserver} connected to any public network; a 18338@value{GDBN} connection to @code{gdbserver} provides access to the 18339target system with the same privileges as the user running 18340@code{gdbserver}. 18341@end quotation 18342 18343@subsection Running @code{gdbserver} 18344@cindex arguments, to @code{gdbserver} 18345@cindex @code{gdbserver}, command-line arguments 18346 18347Run @code{gdbserver} on the target system. You need a copy of the 18348program you want to debug, including any libraries it requires. 18349@code{gdbserver} does not need your program's symbol table, so you can 18350strip the program if necessary to save space. @value{GDBN} on the host 18351system does all the symbol handling. 18352 18353To use the server, you must tell it how to communicate with @value{GDBN}; 18354the name of your program; and the arguments for your program. The usual 18355syntax is: 18356 18357@smallexample 18358target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ] 18359@end smallexample 18360 18361@var{comm} is either a device name (to use a serial line), or a TCP 18362hostname and portnumber, or @code{-} or @code{stdio} to use 18363stdin/stdout of @code{gdbserver}. 18364For example, to debug Emacs with the argument 18365@samp{foo.txt} and communicate with @value{GDBN} over the serial port 18366@file{/dev/com1}: 18367 18368@smallexample 18369target> gdbserver /dev/com1 emacs foo.txt 18370@end smallexample 18371 18372@code{gdbserver} waits passively for the host @value{GDBN} to communicate 18373with it. 18374 18375To use a TCP connection instead of a serial line: 18376 18377@smallexample 18378target> gdbserver host:2345 emacs foo.txt 18379@end smallexample 18380 18381The only difference from the previous example is the first argument, 18382specifying that you are communicating with the host @value{GDBN} via 18383TCP. The @samp{host:2345} argument means that @code{gdbserver} is to 18384expect a TCP connection from machine @samp{host} to local TCP port 2345. 18385(Currently, the @samp{host} part is ignored.) You can choose any number 18386you want for the port number as long as it does not conflict with any 18387TCP ports already in use on the target system (for example, @code{23} is 18388reserved for @code{telnet}).@footnote{If you choose a port number that 18389conflicts with another service, @code{gdbserver} prints an error message 18390and exits.} You must use the same port number with the host @value{GDBN} 18391@code{target remote} command. 18392 18393The @code{stdio} connection is useful when starting @code{gdbserver} 18394with ssh: 18395 18396@smallexample 18397(gdb) target remote | ssh -T hostname gdbserver - hello 18398@end smallexample 18399 18400The @samp{-T} option to ssh is provided because we don't need a remote pty, 18401and we don't want escape-character handling. Ssh does this by default when 18402a command is provided, the flag is provided to make it explicit. 18403You could elide it if you want to. 18404 18405Programs started with stdio-connected gdbserver have @file{/dev/null} for 18406@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for 18407display through a pipe connected to gdbserver. 18408Both @code{stdout} and @code{stderr} use the same pipe. 18409 18410@subsubsection Attaching to a Running Program 18411@cindex attach to a program, @code{gdbserver} 18412@cindex @option{--attach}, @code{gdbserver} option 18413 18414On some targets, @code{gdbserver} can also attach to running programs. 18415This is accomplished via the @code{--attach} argument. The syntax is: 18416 18417@smallexample 18418target> gdbserver --attach @var{comm} @var{pid} 18419@end smallexample 18420 18421@var{pid} is the process ID of a currently running process. It isn't necessary 18422to point @code{gdbserver} at a binary for the running process. 18423 18424@pindex pidof 18425You can debug processes by name instead of process ID if your target has the 18426@code{pidof} utility: 18427 18428@smallexample 18429target> gdbserver --attach @var{comm} `pidof @var{program}` 18430@end smallexample 18431 18432In case more than one copy of @var{program} is running, or @var{program} 18433has multiple threads, most versions of @code{pidof} support the 18434@code{-s} option to only return the first process ID. 18435 18436@subsubsection Multi-Process Mode for @code{gdbserver} 18437@cindex @code{gdbserver}, multiple processes 18438@cindex multiple processes with @code{gdbserver} 18439 18440When you connect to @code{gdbserver} using @code{target remote}, 18441@code{gdbserver} debugs the specified program only once. When the 18442program exits, or you detach from it, @value{GDBN} closes the connection 18443and @code{gdbserver} exits. 18444 18445If you connect using @kbd{target extended-remote}, @code{gdbserver} 18446enters multi-process mode. When the debugged program exits, or you 18447detach from it, @value{GDBN} stays connected to @code{gdbserver} even 18448though no program is running. The @code{run} and @code{attach} 18449commands instruct @code{gdbserver} to run or attach to a new program. 18450The @code{run} command uses @code{set remote exec-file} (@pxref{set 18451remote exec-file}) to select the program to run. Command line 18452arguments are supported, except for wildcard expansion and I/O 18453redirection (@pxref{Arguments}). 18454 18455@cindex @option{--multi}, @code{gdbserver} option 18456To start @code{gdbserver} without supplying an initial command to run 18457or process ID to attach, use the @option{--multi} command line option. 18458Then you can connect using @kbd{target extended-remote} and start 18459the program you want to debug. 18460 18461In multi-process mode @code{gdbserver} does not automatically exit unless you 18462use the option @option{--once}. You can terminate it by using 18463@code{monitor exit} (@pxref{Monitor Commands for gdbserver}). Note that the 18464conditions under which @code{gdbserver} terminates depend on how @value{GDBN} 18465connects to it (@kbd{target remote} or @kbd{target extended-remote}). The 18466@option{--multi} option to @code{gdbserver} has no influence on that. 18467 18468@subsubsection TCP port allocation lifecycle of @code{gdbserver} 18469 18470This section applies only when @code{gdbserver} is run to listen on a TCP port. 18471 18472@code{gdbserver} normally terminates after all of its debugged processes have 18473terminated in @kbd{target remote} mode. On the other hand, for @kbd{target 18474extended-remote}, @code{gdbserver} stays running even with no processes left. 18475@value{GDBN} normally terminates the spawned debugged process on its exit, 18476which normally also terminates @code{gdbserver} in the @kbd{target remote} 18477mode. Therefore, when the connection drops unexpectedly, and @value{GDBN} 18478cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver} 18479stays running even in the @kbd{target remote} mode. 18480 18481When @code{gdbserver} stays running, @value{GDBN} can connect to it again later. 18482Such reconnecting is useful for features like @ref{disconnected tracing}. For 18483completeness, at most one @value{GDBN} can be connected at a time. 18484 18485@cindex @option{--once}, @code{gdbserver} option 18486By default, @code{gdbserver} keeps the listening TCP port open, so that 18487subsequent connections are possible. However, if you start @code{gdbserver} 18488with the @option{--once} option, it will stop listening for any further 18489connection attempts after connecting to the first @value{GDBN} session. This 18490means no further connections to @code{gdbserver} will be possible after the 18491first one. It also means @code{gdbserver} will terminate after the first 18492connection with remote @value{GDBN} has closed, even for unexpectedly closed 18493connections and even in the @kbd{target extended-remote} mode. The 18494@option{--once} option allows reusing the same port number for connecting to 18495multiple instances of @code{gdbserver} running on the same host, since each 18496instance closes its port after the first connection. 18497 18498@subsubsection Other Command-Line Arguments for @code{gdbserver} 18499 18500@cindex @option{--debug}, @code{gdbserver} option 18501The @option{--debug} option tells @code{gdbserver} to display extra 18502status information about the debugging process. 18503@cindex @option{--remote-debug}, @code{gdbserver} option 18504The @option{--remote-debug} option tells @code{gdbserver} to display 18505remote protocol debug output. These options are intended for 18506@code{gdbserver} development and for bug reports to the developers. 18507 18508@cindex @option{--wrapper}, @code{gdbserver} option 18509The @option{--wrapper} option specifies a wrapper to launch programs 18510for debugging. The option should be followed by the name of the 18511wrapper, then any command-line arguments to pass to the wrapper, then 18512@kbd{--} indicating the end of the wrapper arguments. 18513 18514@code{gdbserver} runs the specified wrapper program with a combined 18515command line including the wrapper arguments, then the name of the 18516program to debug, then any arguments to the program. The wrapper 18517runs until it executes your program, and then @value{GDBN} gains control. 18518 18519You can use any program that eventually calls @code{execve} with 18520its arguments as a wrapper. Several standard Unix utilities do 18521this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 18522with @code{exec "$@@"} will also work. 18523 18524For example, you can use @code{env} to pass an environment variable to 18525the debugged program, without setting the variable in @code{gdbserver}'s 18526environment: 18527 18528@smallexample 18529$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog 18530@end smallexample 18531 18532@subsection Connecting to @code{gdbserver} 18533 18534Run @value{GDBN} on the host system. 18535 18536First make sure you have the necessary symbol files. Load symbols for 18537your application using the @code{file} command before you connect. Use 18538@code{set sysroot} to locate target libraries (unless your @value{GDBN} 18539was compiled with the correct sysroot using @code{--with-sysroot}). 18540 18541The symbol file and target libraries must exactly match the executable 18542and libraries on the target, with one exception: the files on the host 18543system should not be stripped, even if the files on the target system 18544are. Mismatched or missing files will lead to confusing results 18545during debugging. On @sc{gnu}/Linux targets, mismatched or missing 18546files may also prevent @code{gdbserver} from debugging multi-threaded 18547programs. 18548 18549Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}). 18550For TCP connections, you must start up @code{gdbserver} prior to using 18551the @code{target remote} command. Otherwise you may get an error whose 18552text depends on the host system, but which usually looks something like 18553@samp{Connection refused}. Don't use the @code{load} 18554command in @value{GDBN} when using @code{gdbserver}, since the program is 18555already on the target. 18556 18557@subsection Monitor Commands for @code{gdbserver} 18558@cindex monitor commands, for @code{gdbserver} 18559@anchor{Monitor Commands for gdbserver} 18560 18561During a @value{GDBN} session using @code{gdbserver}, you can use the 18562@code{monitor} command to send special requests to @code{gdbserver}. 18563Here are the available commands. 18564 18565@table @code 18566@item monitor help 18567List the available monitor commands. 18568 18569@item monitor set debug 0 18570@itemx monitor set debug 1 18571Disable or enable general debugging messages. 18572 18573@item monitor set remote-debug 0 18574@itemx monitor set remote-debug 1 18575Disable or enable specific debugging messages associated with the remote 18576protocol (@pxref{Remote Protocol}). 18577 18578@item monitor set libthread-db-search-path [PATH] 18579@cindex gdbserver, search path for @code{libthread_db} 18580When this command is issued, @var{path} is a colon-separated list of 18581directories to search for @code{libthread_db} (@pxref{Threads,,set 18582libthread-db-search-path}). If you omit @var{path}, 18583@samp{libthread-db-search-path} will be reset to its default value. 18584 18585The special entry @samp{$pdir} for @samp{libthread-db-search-path} is 18586not supported in @code{gdbserver}. 18587 18588@item monitor exit 18589Tell gdbserver to exit immediately. This command should be followed by 18590@code{disconnect} to close the debugging session. @code{gdbserver} will 18591detach from any attached processes and kill any processes it created. 18592Use @code{monitor exit} to terminate @code{gdbserver} at the end 18593of a multi-process mode debug session. 18594 18595@end table 18596 18597@subsection Tracepoints support in @code{gdbserver} 18598@cindex tracepoints support in @code{gdbserver} 18599 18600On some targets, @code{gdbserver} supports tracepoints, fast 18601tracepoints and static tracepoints. 18602 18603For fast or static tracepoints to work, a special library called the 18604@dfn{in-process agent} (IPA), must be loaded in the inferior process. 18605This library is built and distributed as an integral part of 18606@code{gdbserver}. In addition, support for static tracepoints 18607requires building the in-process agent library with static tracepoints 18608support. At present, the UST (LTTng Userspace Tracer, 18609@url{http://lttng.org/ust}) tracing engine is supported. This support 18610is automatically available if UST development headers are found in the 18611standard include path when @code{gdbserver} is built, or if 18612@code{gdbserver} was explicitly configured using @option{--with-ust} 18613to point at such headers. You can explicitly disable the support 18614using @option{--with-ust=no}. 18615 18616There are several ways to load the in-process agent in your program: 18617 18618@table @code 18619@item Specifying it as dependency at link time 18620 18621You can link your program dynamically with the in-process agent 18622library. On most systems, this is accomplished by adding 18623@code{-linproctrace} to the link command. 18624 18625@item Using the system's preloading mechanisms 18626 18627You can force loading the in-process agent at startup time by using 18628your system's support for preloading shared libraries. Many Unixes 18629support the concept of preloading user defined libraries. In most 18630cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so} 18631in the environment. See also the description of @code{gdbserver}'s 18632@option{--wrapper} command line option. 18633 18634@item Using @value{GDBN} to force loading the agent at run time 18635 18636On some systems, you can force the inferior to load a shared library, 18637by calling a dynamic loader function in the inferior that takes care 18638of dynamically looking up and loading a shared library. On most Unix 18639systems, the function is @code{dlopen}. You'll use the @code{call} 18640command for that. For example: 18641 18642@smallexample 18643(@value{GDBP}) call dlopen ("libinproctrace.so", ...) 18644@end smallexample 18645 18646Note that on most Unix systems, for the @code{dlopen} function to be 18647available, the program needs to be linked with @code{-ldl}. 18648@end table 18649 18650On systems that have a userspace dynamic loader, like most Unix 18651systems, when you connect to @code{gdbserver} using @code{target 18652remote}, you'll find that the program is stopped at the dynamic 18653loader's entry point, and no shared library has been loaded in the 18654program's address space yet, including the in-process agent. In that 18655case, before being able to use any of the fast or static tracepoints 18656features, you need to let the loader run and load the shared 18657libraries. The simplest way to do that is to run the program to the 18658main procedure. E.g., if debugging a C or C@t{++} program, start 18659@code{gdbserver} like so: 18660 18661@smallexample 18662$ gdbserver :9999 myprogram 18663@end smallexample 18664 18665Start GDB and connect to @code{gdbserver} like so, and run to main: 18666 18667@smallexample 18668$ gdb myprogram 18669(@value{GDBP}) target remote myhost:9999 186700x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2 18671(@value{GDBP}) b main 18672(@value{GDBP}) continue 18673@end smallexample 18674 18675The in-process tracing agent library should now be loaded into the 18676process; you can confirm it with the @code{info sharedlibrary} 18677command, which will list @file{libinproctrace.so} as loaded in the 18678process. You are now ready to install fast tracepoints, list static 18679tracepoint markers, probe static tracepoints markers, and start 18680tracing. 18681 18682@node Remote Configuration 18683@section Remote Configuration 18684 18685@kindex set remote 18686@kindex show remote 18687This section documents the configuration options available when 18688debugging remote programs. For the options related to the File I/O 18689extensions of the remote protocol, see @ref{system, 18690system-call-allowed}. 18691 18692@table @code 18693@item set remoteaddresssize @var{bits} 18694@cindex address size for remote targets 18695@cindex bits in remote address 18696Set the maximum size of address in a memory packet to the specified 18697number of bits. @value{GDBN} will mask off the address bits above 18698that number, when it passes addresses to the remote target. The 18699default value is the number of bits in the target's address. 18700 18701@item show remoteaddresssize 18702Show the current value of remote address size in bits. 18703 18704@item set serial baud @var{n} 18705@cindex baud rate for remote targets 18706Set the baud rate for the remote serial I/O to @var{n} baud. The 18707value is used to set the speed of the serial port used for debugging 18708remote targets. 18709 18710@item show serial baud 18711Show the current speed of the remote connection. 18712 18713@item set remotebreak 18714@cindex interrupt remote programs 18715@cindex BREAK signal instead of Ctrl-C 18716@anchor{set remotebreak} 18717If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote 18718when you type @kbd{Ctrl-c} to interrupt the program running 18719on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C} 18720character instead. The default is off, since most remote systems 18721expect to see @samp{Ctrl-C} as the interrupt signal. 18722 18723@item show remotebreak 18724Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to 18725interrupt the remote program. 18726 18727@item set remoteflow on 18728@itemx set remoteflow off 18729@kindex set remoteflow 18730Enable or disable hardware flow control (@code{RTS}/@code{CTS}) 18731on the serial port used to communicate to the remote target. 18732 18733@item show remoteflow 18734@kindex show remoteflow 18735Show the current setting of hardware flow control. 18736 18737@item set remotelogbase @var{base} 18738Set the base (a.k.a.@: radix) of logging serial protocol 18739communications to @var{base}. Supported values of @var{base} are: 18740@code{ascii}, @code{octal}, and @code{hex}. The default is 18741@code{ascii}. 18742 18743@item show remotelogbase 18744Show the current setting of the radix for logging remote serial 18745protocol. 18746 18747@item set remotelogfile @var{file} 18748@cindex record serial communications on file 18749Record remote serial communications on the named @var{file}. The 18750default is not to record at all. 18751 18752@item show remotelogfile. 18753Show the current setting of the file name on which to record the 18754serial communications. 18755 18756@item set remotetimeout @var{num} 18757@cindex timeout for serial communications 18758@cindex remote timeout 18759Set the timeout limit to wait for the remote target to respond to 18760@var{num} seconds. The default is 2 seconds. 18761 18762@item show remotetimeout 18763Show the current number of seconds to wait for the remote target 18764responses. 18765 18766@cindex limit hardware breakpoints and watchpoints 18767@cindex remote target, limit break- and watchpoints 18768@anchor{set remote hardware-watchpoint-limit} 18769@anchor{set remote hardware-breakpoint-limit} 18770@item set remote hardware-watchpoint-limit @var{limit} 18771@itemx set remote hardware-breakpoint-limit @var{limit} 18772Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or 18773watchpoints. A limit of -1, the default, is treated as unlimited. 18774 18775@cindex limit hardware watchpoints length 18776@cindex remote target, limit watchpoints length 18777@anchor{set remote hardware-watchpoint-length-limit} 18778@item set remote hardware-watchpoint-length-limit @var{limit} 18779Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of 18780a remote hardware watchpoint. A limit of -1, the default, is treated 18781as unlimited. 18782 18783@item show remote hardware-watchpoint-length-limit 18784Show the current limit (in bytes) of the maximum length of 18785a remote hardware watchpoint. 18786 18787@item set remote exec-file @var{filename} 18788@itemx show remote exec-file 18789@anchor{set remote exec-file} 18790@cindex executable file, for remote target 18791Select the file used for @code{run} with @code{target 18792extended-remote}. This should be set to a filename valid on the 18793target system. If it is not set, the target will use a default 18794filename (e.g.@: the last program run). 18795 18796@item set remote interrupt-sequence 18797@cindex interrupt remote programs 18798@cindex select Ctrl-C, BREAK or BREAK-g 18799Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or 18800@samp{BREAK-g} as the 18801sequence to the remote target in order to interrupt the execution. 18802@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which 18803is high level of serial line for some certain time. 18804Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g. 18805It is @code{BREAK} signal followed by character @code{g}. 18806 18807@item show interrupt-sequence 18808Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g} 18809is sent by @value{GDBN} to interrupt the remote program. 18810@code{BREAK-g} is BREAK signal followed by @code{g} and 18811also known as Magic SysRq g. 18812 18813@item set remote interrupt-on-connect 18814@cindex send interrupt-sequence on start 18815Specify whether interrupt-sequence is sent to remote target when 18816@value{GDBN} connects to it. This is mostly needed when you debug 18817Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g} 18818which is known as Magic SysRq g in order to connect @value{GDBN}. 18819 18820@item show interrupt-on-connect 18821Show whether interrupt-sequence is sent 18822to remote target when @value{GDBN} connects to it. 18823 18824@kindex set tcp 18825@kindex show tcp 18826@item set tcp auto-retry on 18827@cindex auto-retry, for remote TCP target 18828Enable auto-retry for remote TCP connections. This is useful if the remote 18829debugging agent is launched in parallel with @value{GDBN}; there is a race 18830condition because the agent may not become ready to accept the connection 18831before @value{GDBN} attempts to connect. When auto-retry is 18832enabled, if the initial attempt to connect fails, @value{GDBN} reattempts 18833to establish the connection using the timeout specified by 18834@code{set tcp connect-timeout}. 18835 18836@item set tcp auto-retry off 18837Do not auto-retry failed TCP connections. 18838 18839@item show tcp auto-retry 18840Show the current auto-retry setting. 18841 18842@item set tcp connect-timeout @var{seconds} 18843@itemx set tcp connect-timeout unlimited 18844@cindex connection timeout, for remote TCP target 18845@cindex timeout, for remote target connection 18846Set the timeout for establishing a TCP connection to the remote target to 18847@var{seconds}. The timeout affects both polling to retry failed connections 18848(enabled by @code{set tcp auto-retry on}) and waiting for connections 18849that are merely slow to complete, and represents an approximate cumulative 18850value. If @var{seconds} is @code{unlimited}, there is no timeout and 18851@value{GDBN} will keep attempting to establish a connection forever, 18852unless interrupted with @kbd{Ctrl-c}. The default is 15 seconds. 18853 18854@item show tcp connect-timeout 18855Show the current connection timeout setting. 18856@end table 18857 18858@cindex remote packets, enabling and disabling 18859The @value{GDBN} remote protocol autodetects the packets supported by 18860your debugging stub. If you need to override the autodetection, you 18861can use these commands to enable or disable individual packets. Each 18862packet can be set to @samp{on} (the remote target supports this 18863packet), @samp{off} (the remote target does not support this packet), 18864or @samp{auto} (detect remote target support for this packet). They 18865all default to @samp{auto}. For more information about each packet, 18866see @ref{Remote Protocol}. 18867 18868During normal use, you should not have to use any of these commands. 18869If you do, that may be a bug in your remote debugging stub, or a bug 18870in @value{GDBN}. You may want to report the problem to the 18871@value{GDBN} developers. 18872 18873For each packet @var{name}, the command to enable or disable the 18874packet is @code{set remote @var{name}-packet}. The available settings 18875are: 18876 18877@multitable @columnfractions 0.28 0.32 0.25 18878@item Command Name 18879@tab Remote Packet 18880@tab Related Features 18881 18882@item @code{fetch-register} 18883@tab @code{p} 18884@tab @code{info registers} 18885 18886@item @code{set-register} 18887@tab @code{P} 18888@tab @code{set} 18889 18890@item @code{binary-download} 18891@tab @code{X} 18892@tab @code{load}, @code{set} 18893 18894@item @code{read-aux-vector} 18895@tab @code{qXfer:auxv:read} 18896@tab @code{info auxv} 18897 18898@item @code{symbol-lookup} 18899@tab @code{qSymbol} 18900@tab Detecting multiple threads 18901 18902@item @code{attach} 18903@tab @code{vAttach} 18904@tab @code{attach} 18905 18906@item @code{verbose-resume} 18907@tab @code{vCont} 18908@tab Stepping or resuming multiple threads 18909 18910@item @code{run} 18911@tab @code{vRun} 18912@tab @code{run} 18913 18914@item @code{software-breakpoint} 18915@tab @code{Z0} 18916@tab @code{break} 18917 18918@item @code{hardware-breakpoint} 18919@tab @code{Z1} 18920@tab @code{hbreak} 18921 18922@item @code{write-watchpoint} 18923@tab @code{Z2} 18924@tab @code{watch} 18925 18926@item @code{read-watchpoint} 18927@tab @code{Z3} 18928@tab @code{rwatch} 18929 18930@item @code{access-watchpoint} 18931@tab @code{Z4} 18932@tab @code{awatch} 18933 18934@item @code{target-features} 18935@tab @code{qXfer:features:read} 18936@tab @code{set architecture} 18937 18938@item @code{library-info} 18939@tab @code{qXfer:libraries:read} 18940@tab @code{info sharedlibrary} 18941 18942@item @code{memory-map} 18943@tab @code{qXfer:memory-map:read} 18944@tab @code{info mem} 18945 18946@item @code{read-sdata-object} 18947@tab @code{qXfer:sdata:read} 18948@tab @code{print $_sdata} 18949 18950@item @code{read-spu-object} 18951@tab @code{qXfer:spu:read} 18952@tab @code{info spu} 18953 18954@item @code{write-spu-object} 18955@tab @code{qXfer:spu:write} 18956@tab @code{info spu} 18957 18958@item @code{read-siginfo-object} 18959@tab @code{qXfer:siginfo:read} 18960@tab @code{print $_siginfo} 18961 18962@item @code{write-siginfo-object} 18963@tab @code{qXfer:siginfo:write} 18964@tab @code{set $_siginfo} 18965 18966@item @code{threads} 18967@tab @code{qXfer:threads:read} 18968@tab @code{info threads} 18969 18970@item @code{get-thread-local-@*storage-address} 18971@tab @code{qGetTLSAddr} 18972@tab Displaying @code{__thread} variables 18973 18974@item @code{get-thread-information-block-address} 18975@tab @code{qGetTIBAddr} 18976@tab Display MS-Windows Thread Information Block. 18977 18978@item @code{search-memory} 18979@tab @code{qSearch:memory} 18980@tab @code{find} 18981 18982@item @code{supported-packets} 18983@tab @code{qSupported} 18984@tab Remote communications parameters 18985 18986@item @code{pass-signals} 18987@tab @code{QPassSignals} 18988@tab @code{handle @var{signal}} 18989 18990@item @code{program-signals} 18991@tab @code{QProgramSignals} 18992@tab @code{handle @var{signal}} 18993 18994@item @code{hostio-close-packet} 18995@tab @code{vFile:close} 18996@tab @code{remote get}, @code{remote put} 18997 18998@item @code{hostio-open-packet} 18999@tab @code{vFile:open} 19000@tab @code{remote get}, @code{remote put} 19001 19002@item @code{hostio-pread-packet} 19003@tab @code{vFile:pread} 19004@tab @code{remote get}, @code{remote put} 19005 19006@item @code{hostio-pwrite-packet} 19007@tab @code{vFile:pwrite} 19008@tab @code{remote get}, @code{remote put} 19009 19010@item @code{hostio-unlink-packet} 19011@tab @code{vFile:unlink} 19012@tab @code{remote delete} 19013 19014@item @code{hostio-readlink-packet} 19015@tab @code{vFile:readlink} 19016@tab Host I/O 19017 19018@item @code{noack-packet} 19019@tab @code{QStartNoAckMode} 19020@tab Packet acknowledgment 19021 19022@item @code{osdata} 19023@tab @code{qXfer:osdata:read} 19024@tab @code{info os} 19025 19026@item @code{query-attached} 19027@tab @code{qAttached} 19028@tab Querying remote process attach state. 19029 19030@item @code{trace-buffer-size} 19031@tab @code{QTBuffer:size} 19032@tab @code{set trace-buffer-size} 19033 19034@item @code{trace-status} 19035@tab @code{qTStatus} 19036@tab @code{tstatus} 19037 19038@item @code{traceframe-info} 19039@tab @code{qXfer:traceframe-info:read} 19040@tab Traceframe info 19041 19042@item @code{install-in-trace} 19043@tab @code{InstallInTrace} 19044@tab Install tracepoint in tracing 19045 19046@item @code{disable-randomization} 19047@tab @code{QDisableRandomization} 19048@tab @code{set disable-randomization} 19049 19050@item @code{conditional-breakpoints-packet} 19051@tab @code{Z0 and Z1} 19052@tab @code{Support for target-side breakpoint condition evaluation} 19053@end multitable 19054 19055@node Remote Stub 19056@section Implementing a Remote Stub 19057 19058@cindex debugging stub, example 19059@cindex remote stub, example 19060@cindex stub example, remote debugging 19061The stub files provided with @value{GDBN} implement the target side of the 19062communication protocol, and the @value{GDBN} side is implemented in the 19063@value{GDBN} source file @file{remote.c}. Normally, you can simply allow 19064these subroutines to communicate, and ignore the details. (If you're 19065implementing your own stub file, you can still ignore the details: start 19066with one of the existing stub files. @file{sparc-stub.c} is the best 19067organized, and therefore the easiest to read.) 19068 19069@cindex remote serial debugging, overview 19070To debug a program running on another machine (the debugging 19071@dfn{target} machine), you must first arrange for all the usual 19072prerequisites for the program to run by itself. For example, for a C 19073program, you need: 19074 19075@enumerate 19076@item 19077A startup routine to set up the C runtime environment; these usually 19078have a name like @file{crt0}. The startup routine may be supplied by 19079your hardware supplier, or you may have to write your own. 19080 19081@item 19082A C subroutine library to support your program's 19083subroutine calls, notably managing input and output. 19084 19085@item 19086A way of getting your program to the other machine---for example, a 19087download program. These are often supplied by the hardware 19088manufacturer, but you may have to write your own from hardware 19089documentation. 19090@end enumerate 19091 19092The next step is to arrange for your program to use a serial port to 19093communicate with the machine where @value{GDBN} is running (the @dfn{host} 19094machine). In general terms, the scheme looks like this: 19095 19096@table @emph 19097@item On the host, 19098@value{GDBN} already understands how to use this protocol; when everything 19099else is set up, you can simply use the @samp{target remote} command 19100(@pxref{Targets,,Specifying a Debugging Target}). 19101 19102@item On the target, 19103you must link with your program a few special-purpose subroutines that 19104implement the @value{GDBN} remote serial protocol. The file containing these 19105subroutines is called a @dfn{debugging stub}. 19106 19107On certain remote targets, you can use an auxiliary program 19108@code{gdbserver} instead of linking a stub into your program. 19109@xref{Server,,Using the @code{gdbserver} Program}, for details. 19110@end table 19111 19112The debugging stub is specific to the architecture of the remote 19113machine; for example, use @file{sparc-stub.c} to debug programs on 19114@sc{sparc} boards. 19115 19116@cindex remote serial stub list 19117These working remote stubs are distributed with @value{GDBN}: 19118 19119@table @code 19120 19121@item i386-stub.c 19122@cindex @file{i386-stub.c} 19123@cindex Intel 19124@cindex i386 19125For Intel 386 and compatible architectures. 19126 19127@item m68k-stub.c 19128@cindex @file{m68k-stub.c} 19129@cindex Motorola 680x0 19130@cindex m680x0 19131For Motorola 680x0 architectures. 19132 19133@item sh-stub.c 19134@cindex @file{sh-stub.c} 19135@cindex Renesas 19136@cindex SH 19137For Renesas SH architectures. 19138 19139@item sparc-stub.c 19140@cindex @file{sparc-stub.c} 19141@cindex Sparc 19142For @sc{sparc} architectures. 19143 19144@item sparcl-stub.c 19145@cindex @file{sparcl-stub.c} 19146@cindex Fujitsu 19147@cindex SparcLite 19148For Fujitsu @sc{sparclite} architectures. 19149 19150@end table 19151 19152The @file{README} file in the @value{GDBN} distribution may list other 19153recently added stubs. 19154 19155@menu 19156* Stub Contents:: What the stub can do for you 19157* Bootstrapping:: What you must do for the stub 19158* Debug Session:: Putting it all together 19159@end menu 19160 19161@node Stub Contents 19162@subsection What the Stub Can Do for You 19163 19164@cindex remote serial stub 19165The debugging stub for your architecture supplies these three 19166subroutines: 19167 19168@table @code 19169@item set_debug_traps 19170@findex set_debug_traps 19171@cindex remote serial stub, initialization 19172This routine arranges for @code{handle_exception} to run when your 19173program stops. You must call this subroutine explicitly in your 19174program's startup code. 19175 19176@item handle_exception 19177@findex handle_exception 19178@cindex remote serial stub, main routine 19179This is the central workhorse, but your program never calls it 19180explicitly---the setup code arranges for @code{handle_exception} to 19181run when a trap is triggered. 19182 19183@code{handle_exception} takes control when your program stops during 19184execution (for example, on a breakpoint), and mediates communications 19185with @value{GDBN} on the host machine. This is where the communications 19186protocol is implemented; @code{handle_exception} acts as the @value{GDBN} 19187representative on the target machine. It begins by sending summary 19188information on the state of your program, then continues to execute, 19189retrieving and transmitting any information @value{GDBN} needs, until you 19190execute a @value{GDBN} command that makes your program resume; at that point, 19191@code{handle_exception} returns control to your own code on the target 19192machine. 19193 19194@item breakpoint 19195@cindex @code{breakpoint} subroutine, remote 19196Use this auxiliary subroutine to make your program contain a 19197breakpoint. Depending on the particular situation, this may be the only 19198way for @value{GDBN} to get control. For instance, if your target 19199machine has some sort of interrupt button, you won't need to call this; 19200pressing the interrupt button transfers control to 19201@code{handle_exception}---in effect, to @value{GDBN}. On some machines, 19202simply receiving characters on the serial port may also trigger a trap; 19203again, in that situation, you don't need to call @code{breakpoint} from 19204your own program---simply running @samp{target remote} from the host 19205@value{GDBN} session gets control. 19206 19207Call @code{breakpoint} if none of these is true, or if you simply want 19208to make certain your program stops at a predetermined point for the 19209start of your debugging session. 19210@end table 19211 19212@node Bootstrapping 19213@subsection What You Must Do for the Stub 19214 19215@cindex remote stub, support routines 19216The debugging stubs that come with @value{GDBN} are set up for a particular 19217chip architecture, but they have no information about the rest of your 19218debugging target machine. 19219 19220First of all you need to tell the stub how to communicate with the 19221serial port. 19222 19223@table @code 19224@item int getDebugChar() 19225@findex getDebugChar 19226Write this subroutine to read a single character from the serial port. 19227It may be identical to @code{getchar} for your target system; a 19228different name is used to allow you to distinguish the two if you wish. 19229 19230@item void putDebugChar(int) 19231@findex putDebugChar 19232Write this subroutine to write a single character to the serial port. 19233It may be identical to @code{putchar} for your target system; a 19234different name is used to allow you to distinguish the two if you wish. 19235@end table 19236 19237@cindex control C, and remote debugging 19238@cindex interrupting remote targets 19239If you want @value{GDBN} to be able to stop your program while it is 19240running, you need to use an interrupt-driven serial driver, and arrange 19241for it to stop when it receives a @code{^C} (@samp{\003}, the control-C 19242character). That is the character which @value{GDBN} uses to tell the 19243remote system to stop. 19244 19245Getting the debugging target to return the proper status to @value{GDBN} 19246probably requires changes to the standard stub; one quick and dirty way 19247is to just execute a breakpoint instruction (the ``dirty'' part is that 19248@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}). 19249 19250Other routines you need to supply are: 19251 19252@table @code 19253@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address}) 19254@findex exceptionHandler 19255Write this function to install @var{exception_address} in the exception 19256handling tables. You need to do this because the stub does not have any 19257way of knowing what the exception handling tables on your target system 19258are like (for example, the processor's table might be in @sc{rom}, 19259containing entries which point to a table in @sc{ram}). 19260@var{exception_number} is the exception number which should be changed; 19261its meaning is architecture-dependent (for example, different numbers 19262might represent divide by zero, misaligned access, etc). When this 19263exception occurs, control should be transferred directly to 19264@var{exception_address}, and the processor state (stack, registers, 19265and so on) should be just as it is when a processor exception occurs. So if 19266you want to use a jump instruction to reach @var{exception_address}, it 19267should be a simple jump, not a jump to subroutine. 19268 19269For the 386, @var{exception_address} should be installed as an interrupt 19270gate so that interrupts are masked while the handler runs. The gate 19271should be at privilege level 0 (the most privileged level). The 19272@sc{sparc} and 68k stubs are able to mask interrupts themselves without 19273help from @code{exceptionHandler}. 19274 19275@item void flush_i_cache() 19276@findex flush_i_cache 19277On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the 19278instruction cache, if any, on your target machine. If there is no 19279instruction cache, this subroutine may be a no-op. 19280 19281On target machines that have instruction caches, @value{GDBN} requires this 19282function to make certain that the state of your program is stable. 19283@end table 19284 19285@noindent 19286You must also make sure this library routine is available: 19287 19288@table @code 19289@item void *memset(void *, int, int) 19290@findex memset 19291This is the standard library function @code{memset} that sets an area of 19292memory to a known value. If you have one of the free versions of 19293@code{libc.a}, @code{memset} can be found there; otherwise, you must 19294either obtain it from your hardware manufacturer, or write your own. 19295@end table 19296 19297If you do not use the GNU C compiler, you may need other standard 19298library subroutines as well; this varies from one stub to another, 19299but in general the stubs are likely to use any of the common library 19300subroutines which @code{@value{NGCC}} generates as inline code. 19301 19302 19303@node Debug Session 19304@subsection Putting it All Together 19305 19306@cindex remote serial debugging summary 19307In summary, when your program is ready to debug, you must follow these 19308steps. 19309 19310@enumerate 19311@item 19312Make sure you have defined the supporting low-level routines 19313(@pxref{Bootstrapping,,What You Must Do for the Stub}): 19314@display 19315@code{getDebugChar}, @code{putDebugChar}, 19316@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}. 19317@end display 19318 19319@item 19320Insert these lines in your program's startup code, before the main 19321procedure is called: 19322 19323@smallexample 19324set_debug_traps(); 19325breakpoint(); 19326@end smallexample 19327 19328On some machines, when a breakpoint trap is raised, the hardware 19329automatically makes the PC point to the instruction after the 19330breakpoint. If your machine doesn't do that, you may need to adjust 19331@code{handle_exception} to arrange for it to return to the instruction 19332after the breakpoint on this first invocation, so that your program 19333doesn't keep hitting the initial breakpoint instead of making 19334progress. 19335 19336@item 19337For the 680x0 stub only, you need to provide a variable called 19338@code{exceptionHook}. Normally you just use: 19339 19340@smallexample 19341void (*exceptionHook)() = 0; 19342@end smallexample 19343 19344@noindent 19345but if before calling @code{set_debug_traps}, you set it to point to a 19346function in your program, that function is called when 19347@code{@value{GDBN}} continues after stopping on a trap (for example, bus 19348error). The function indicated by @code{exceptionHook} is called with 19349one parameter: an @code{int} which is the exception number. 19350 19351@item 19352Compile and link together: your program, the @value{GDBN} debugging stub for 19353your target architecture, and the supporting subroutines. 19354 19355@item 19356Make sure you have a serial connection between your target machine and 19357the @value{GDBN} host, and identify the serial port on the host. 19358 19359@item 19360@c The "remote" target now provides a `load' command, so we should 19361@c document that. FIXME. 19362Download your program to your target machine (or get it there by 19363whatever means the manufacturer provides), and start it. 19364 19365@item 19366Start @value{GDBN} on the host, and connect to the target 19367(@pxref{Connecting,,Connecting to a Remote Target}). 19368 19369@end enumerate 19370 19371@node Configurations 19372@chapter Configuration-Specific Information 19373 19374While nearly all @value{GDBN} commands are available for all native and 19375cross versions of the debugger, there are some exceptions. This chapter 19376describes things that are only available in certain configurations. 19377 19378There are three major categories of configurations: native 19379configurations, where the host and target are the same, embedded 19380operating system configurations, which are usually the same for several 19381different processor architectures, and bare embedded processors, which 19382are quite different from each other. 19383 19384@menu 19385* Native:: 19386* Embedded OS:: 19387* Embedded Processors:: 19388* Architectures:: 19389@end menu 19390 19391@node Native 19392@section Native 19393 19394This section describes details specific to particular native 19395configurations. 19396 19397@menu 19398* HP-UX:: HP-UX 19399* BSD libkvm Interface:: Debugging BSD kernel memory images 19400* SVR4 Process Information:: SVR4 process information 19401* DJGPP Native:: Features specific to the DJGPP port 19402* Cygwin Native:: Features specific to the Cygwin port 19403* Hurd Native:: Features specific to @sc{gnu} Hurd 19404* Darwin:: Features specific to Darwin 19405@end menu 19406 19407@node HP-UX 19408@subsection HP-UX 19409 19410On HP-UX systems, if you refer to a function or variable name that 19411begins with a dollar sign, @value{GDBN} searches for a user or system 19412name first, before it searches for a convenience variable. 19413 19414 19415@node BSD libkvm Interface 19416@subsection BSD libkvm Interface 19417 19418@cindex libkvm 19419@cindex kernel memory image 19420@cindex kernel crash dump 19421 19422BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory 19423interface that provides a uniform interface for accessing kernel virtual 19424memory images, including live systems and crash dumps. @value{GDBN} 19425uses this interface to allow you to debug live kernels and kernel crash 19426dumps on many native BSD configurations. This is implemented as a 19427special @code{kvm} debugging target. For debugging a live system, load 19428the currently running kernel into @value{GDBN} and connect to the 19429@code{kvm} target: 19430 19431@smallexample 19432(@value{GDBP}) @b{target kvm} 19433@end smallexample 19434 19435For debugging crash dumps, provide the file name of the crash dump as an 19436argument: 19437 19438@smallexample 19439(@value{GDBP}) @b{target kvm /var/crash/bsd.0} 19440@end smallexample 19441 19442Once connected to the @code{kvm} target, the following commands are 19443available: 19444 19445@table @code 19446@kindex kvm 19447@item kvm pcb 19448Set current context from the @dfn{Process Control Block} (PCB) address. 19449 19450@item kvm proc 19451Set current context from proc address. This command isn't available on 19452modern FreeBSD systems. 19453@end table 19454 19455@node SVR4 Process Information 19456@subsection SVR4 Process Information 19457@cindex /proc 19458@cindex examine process image 19459@cindex process info via @file{/proc} 19460 19461Many versions of SVR4 and compatible systems provide a facility called 19462@samp{/proc} that can be used to examine the image of a running 19463process using file-system subroutines. 19464 19465If @value{GDBN} is configured for an operating system with this 19466facility, the command @code{info proc} is available to report 19467information about the process running your program, or about any 19468process running on your system. This includes, as of this writing, 19469@sc{gnu}/Linux, OSF/1 (Digital Unix), Solaris, and Irix, but 19470not HP-UX, for example. 19471 19472This command may also work on core files that were created on a system 19473that has the @samp{/proc} facility. 19474 19475@table @code 19476@kindex info proc 19477@cindex process ID 19478@item info proc 19479@itemx info proc @var{process-id} 19480Summarize available information about any running process. If a 19481process ID is specified by @var{process-id}, display information about 19482that process; otherwise display information about the program being 19483debugged. The summary includes the debugged process ID, the command 19484line used to invoke it, its current working directory, and its 19485executable file's absolute file name. 19486 19487On some systems, @var{process-id} can be of the form 19488@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID 19489within a process. If the optional @var{pid} part is missing, it means 19490a thread from the process being debugged (the leading @samp{/} still 19491needs to be present, or else @value{GDBN} will interpret the number as 19492a process ID rather than a thread ID). 19493 19494@item info proc cmdline 19495@cindex info proc cmdline 19496Show the original command line of the process. This command is 19497specific to @sc{gnu}/Linux. 19498 19499@item info proc cwd 19500@cindex info proc cwd 19501Show the current working directory of the process. This command is 19502specific to @sc{gnu}/Linux. 19503 19504@item info proc exe 19505@cindex info proc exe 19506Show the name of executable of the process. This command is specific 19507to @sc{gnu}/Linux. 19508 19509@item info proc mappings 19510@cindex memory address space mappings 19511Report the memory address space ranges accessible in the program, with 19512information on whether the process has read, write, or execute access 19513rights to each range. On @sc{gnu}/Linux systems, each memory range 19514includes the object file which is mapped to that range, instead of the 19515memory access rights to that range. 19516 19517@item info proc stat 19518@itemx info proc status 19519@cindex process detailed status information 19520These subcommands are specific to @sc{gnu}/Linux systems. They show 19521the process-related information, including the user ID and group ID; 19522how many threads are there in the process; its virtual memory usage; 19523the signals that are pending, blocked, and ignored; its TTY; its 19524consumption of system and user time; its stack size; its @samp{nice} 19525value; etc. For more information, see the @samp{proc} man page 19526(type @kbd{man 5 proc} from your shell prompt). 19527 19528@item info proc all 19529Show all the information about the process described under all of the 19530above @code{info proc} subcommands. 19531 19532@ignore 19533@comment These sub-options of 'info proc' were not included when 19534@comment procfs.c was re-written. Keep their descriptions around 19535@comment against the day when someone finds the time to put them back in. 19536@kindex info proc times 19537@item info proc times 19538Starting time, user CPU time, and system CPU time for your program and 19539its children. 19540 19541@kindex info proc id 19542@item info proc id 19543Report on the process IDs related to your program: its own process ID, 19544the ID of its parent, the process group ID, and the session ID. 19545@end ignore 19546 19547@item set procfs-trace 19548@kindex set procfs-trace 19549@cindex @code{procfs} API calls 19550This command enables and disables tracing of @code{procfs} API calls. 19551 19552@item show procfs-trace 19553@kindex show procfs-trace 19554Show the current state of @code{procfs} API call tracing. 19555 19556@item set procfs-file @var{file} 19557@kindex set procfs-file 19558Tell @value{GDBN} to write @code{procfs} API trace to the named 19559@var{file}. @value{GDBN} appends the trace info to the previous 19560contents of the file. The default is to display the trace on the 19561standard output. 19562 19563@item show procfs-file 19564@kindex show procfs-file 19565Show the file to which @code{procfs} API trace is written. 19566 19567@item proc-trace-entry 19568@itemx proc-trace-exit 19569@itemx proc-untrace-entry 19570@itemx proc-untrace-exit 19571@kindex proc-trace-entry 19572@kindex proc-trace-exit 19573@kindex proc-untrace-entry 19574@kindex proc-untrace-exit 19575These commands enable and disable tracing of entries into and exits 19576from the @code{syscall} interface. 19577 19578@item info pidlist 19579@kindex info pidlist 19580@cindex process list, QNX Neutrino 19581For QNX Neutrino only, this command displays the list of all the 19582processes and all the threads within each process. 19583 19584@item info meminfo 19585@kindex info meminfo 19586@cindex mapinfo list, QNX Neutrino 19587For QNX Neutrino only, this command displays the list of all mapinfos. 19588@end table 19589 19590@node DJGPP Native 19591@subsection Features for Debugging @sc{djgpp} Programs 19592@cindex @sc{djgpp} debugging 19593@cindex native @sc{djgpp} debugging 19594@cindex MS-DOS-specific commands 19595 19596@cindex DPMI 19597@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and 19598MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs 19599that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on 19600top of real-mode DOS systems and their emulations. 19601 19602@value{GDBN} supports native debugging of @sc{djgpp} programs, and 19603defines a few commands specific to the @sc{djgpp} port. This 19604subsection describes those commands. 19605 19606@table @code 19607@kindex info dos 19608@item info dos 19609This is a prefix of @sc{djgpp}-specific commands which print 19610information about the target system and important OS structures. 19611 19612@kindex sysinfo 19613@cindex MS-DOS system info 19614@cindex free memory information (MS-DOS) 19615@item info dos sysinfo 19616This command displays assorted information about the underlying 19617platform: the CPU type and features, the OS version and flavor, the 19618DPMI version, and the available conventional and DPMI memory. 19619 19620@cindex GDT 19621@cindex LDT 19622@cindex IDT 19623@cindex segment descriptor tables 19624@cindex descriptor tables display 19625@item info dos gdt 19626@itemx info dos ldt 19627@itemx info dos idt 19628These 3 commands display entries from, respectively, Global, Local, 19629and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor 19630tables are data structures which store a descriptor for each segment 19631that is currently in use. The segment's selector is an index into a 19632descriptor table; the table entry for that index holds the 19633descriptor's base address and limit, and its attributes and access 19634rights. 19635 19636A typical @sc{djgpp} program uses 3 segments: a code segment, a data 19637segment (used for both data and the stack), and a DOS segment (which 19638allows access to DOS/BIOS data structures and absolute addresses in 19639conventional memory). However, the DPMI host will usually define 19640additional segments in order to support the DPMI environment. 19641 19642@cindex garbled pointers 19643These commands allow to display entries from the descriptor tables. 19644Without an argument, all entries from the specified table are 19645displayed. An argument, which should be an integer expression, means 19646display a single entry whose index is given by the argument. For 19647example, here's a convenient way to display information about the 19648debugged program's data segment: 19649 19650@smallexample 19651@exdent @code{(@value{GDBP}) info dos ldt $ds} 19652@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)} 19653@end smallexample 19654 19655@noindent 19656This comes in handy when you want to see whether a pointer is outside 19657the data segment's limit (i.e.@: @dfn{garbled}). 19658 19659@cindex page tables display (MS-DOS) 19660@item info dos pde 19661@itemx info dos pte 19662These two commands display entries from, respectively, the Page 19663Directory and the Page Tables. Page Directories and Page Tables are 19664data structures which control how virtual memory addresses are mapped 19665into physical addresses. A Page Table includes an entry for every 19666page of memory that is mapped into the program's address space; there 19667may be several Page Tables, each one holding up to 4096 entries. A 19668Page Directory has up to 4096 entries, one each for every Page Table 19669that is currently in use. 19670 19671Without an argument, @kbd{info dos pde} displays the entire Page 19672Directory, and @kbd{info dos pte} displays all the entries in all of 19673the Page Tables. An argument, an integer expression, given to the 19674@kbd{info dos pde} command means display only that entry from the Page 19675Directory table. An argument given to the @kbd{info dos pte} command 19676means display entries from a single Page Table, the one pointed to by 19677the specified entry in the Page Directory. 19678 19679@cindex direct memory access (DMA) on MS-DOS 19680These commands are useful when your program uses @dfn{DMA} (Direct 19681Memory Access), which needs physical addresses to program the DMA 19682controller. 19683 19684These commands are supported only with some DPMI servers. 19685 19686@cindex physical address from linear address 19687@item info dos address-pte @var{addr} 19688This command displays the Page Table entry for a specified linear 19689address. The argument @var{addr} is a linear address which should 19690already have the appropriate segment's base address added to it, 19691because this command accepts addresses which may belong to @emph{any} 19692segment. For example, here's how to display the Page Table entry for 19693the page where a variable @code{i} is stored: 19694 19695@smallexample 19696@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i} 19697@exdent @code{Page Table entry for address 0x11a00d30:} 19698@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30} 19699@end smallexample 19700 19701@noindent 19702This says that @code{i} is stored at offset @code{0xd30} from the page 19703whose physical base address is @code{0x02698000}, and shows all the 19704attributes of that page. 19705 19706Note that you must cast the addresses of variables to a @code{char *}, 19707since otherwise the value of @code{__djgpp_base_address}, the base 19708address of all variables and functions in a @sc{djgpp} program, will 19709be added using the rules of C pointer arithmetics: if @code{i} is 19710declared an @code{int}, @value{GDBN} will add 4 times the value of 19711@code{__djgpp_base_address} to the address of @code{i}. 19712 19713Here's another example, it displays the Page Table entry for the 19714transfer buffer: 19715 19716@smallexample 19717@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)} 19718@exdent @code{Page Table entry for address 0x29110:} 19719@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110} 19720@end smallexample 19721 19722@noindent 19723(The @code{+ 3} offset is because the transfer buffer's address is the 197243rd member of the @code{_go32_info_block} structure.) The output 19725clearly shows that this DPMI server maps the addresses in conventional 19726memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and 19727linear (@code{0x29110}) addresses are identical. 19728 19729This command is supported only with some DPMI servers. 19730@end table 19731 19732@cindex DOS serial data link, remote debugging 19733In addition to native debugging, the DJGPP port supports remote 19734debugging via a serial data link. The following commands are specific 19735to remote serial debugging in the DJGPP port of @value{GDBN}. 19736 19737@table @code 19738@kindex set com1base 19739@kindex set com1irq 19740@kindex set com2base 19741@kindex set com2irq 19742@kindex set com3base 19743@kindex set com3irq 19744@kindex set com4base 19745@kindex set com4irq 19746@item set com1base @var{addr} 19747This command sets the base I/O port address of the @file{COM1} serial 19748port. 19749 19750@item set com1irq @var{irq} 19751This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use 19752for the @file{COM1} serial port. 19753 19754There are similar commands @samp{set com2base}, @samp{set com3irq}, 19755etc.@: for setting the port address and the @code{IRQ} lines for the 19756other 3 COM ports. 19757 19758@kindex show com1base 19759@kindex show com1irq 19760@kindex show com2base 19761@kindex show com2irq 19762@kindex show com3base 19763@kindex show com3irq 19764@kindex show com4base 19765@kindex show com4irq 19766The related commands @samp{show com1base}, @samp{show com1irq} etc.@: 19767display the current settings of the base address and the @code{IRQ} 19768lines used by the COM ports. 19769 19770@item info serial 19771@kindex info serial 19772@cindex DOS serial port status 19773This command prints the status of the 4 DOS serial ports. For each 19774port, it prints whether it's active or not, its I/O base address and 19775IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the 19776counts of various errors encountered so far. 19777@end table 19778 19779 19780@node Cygwin Native 19781@subsection Features for Debugging MS Windows PE Executables 19782@cindex MS Windows debugging 19783@cindex native Cygwin debugging 19784@cindex Cygwin-specific commands 19785 19786@value{GDBN} supports native debugging of MS Windows programs, including 19787DLLs with and without symbolic debugging information. 19788 19789@cindex Ctrl-BREAK, MS-Windows 19790@cindex interrupt debuggee on MS-Windows 19791MS-Windows programs that call @code{SetConsoleMode} to switch off the 19792special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted 19793by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows 19794supports @kbd{C-@key{BREAK}} as an alternative interrupt key 19795sequence, which can be used to interrupt the debuggee even if it 19796ignores @kbd{C-c}. 19797 19798There are various additional Cygwin-specific commands, described in 19799this section. Working with DLLs that have no debugging symbols is 19800described in @ref{Non-debug DLL Symbols}. 19801 19802@table @code 19803@kindex info w32 19804@item info w32 19805This is a prefix of MS Windows-specific commands which print 19806information about the target system and important OS structures. 19807 19808@item info w32 selector 19809This command displays information returned by 19810the Win32 API @code{GetThreadSelectorEntry} function. 19811It takes an optional argument that is evaluated to 19812a long value to give the information about this given selector. 19813Without argument, this command displays information 19814about the six segment registers. 19815 19816@item info w32 thread-information-block 19817This command displays thread specific information stored in the 19818Thread Information Block (readable on the X86 CPU family using @code{$fs} 19819selector for 32-bit programs and @code{$gs} for 64-bit programs). 19820 19821@kindex info dll 19822@item info dll 19823This is a Cygwin-specific alias of @code{info shared}. 19824 19825@kindex dll-symbols 19826@item dll-symbols 19827This command loads symbols from a dll similarly to 19828add-sym command but without the need to specify a base address. 19829 19830@kindex set cygwin-exceptions 19831@cindex debugging the Cygwin DLL 19832@cindex Cygwin DLL, debugging 19833@item set cygwin-exceptions @var{mode} 19834If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that 19835happen inside the Cygwin DLL. If @var{mode} is @code{off}, 19836@value{GDBN} will delay recognition of exceptions, and may ignore some 19837exceptions which seem to be caused by internal Cygwin DLL 19838``bookkeeping''. This option is meant primarily for debugging the 19839Cygwin DLL itself; the default value is @code{off} to avoid annoying 19840@value{GDBN} users with false @code{SIGSEGV} signals. 19841 19842@kindex show cygwin-exceptions 19843@item show cygwin-exceptions 19844Displays whether @value{GDBN} will break on exceptions that happen 19845inside the Cygwin DLL itself. 19846 19847@kindex set new-console 19848@item set new-console @var{mode} 19849If @var{mode} is @code{on} the debuggee will 19850be started in a new console on next start. 19851If @var{mode} is @code{off}, the debuggee will 19852be started in the same console as the debugger. 19853 19854@kindex show new-console 19855@item show new-console 19856Displays whether a new console is used 19857when the debuggee is started. 19858 19859@kindex set new-group 19860@item set new-group @var{mode} 19861This boolean value controls whether the debuggee should 19862start a new group or stay in the same group as the debugger. 19863This affects the way the Windows OS handles 19864@samp{Ctrl-C}. 19865 19866@kindex show new-group 19867@item show new-group 19868Displays current value of new-group boolean. 19869 19870@kindex set debugevents 19871@item set debugevents 19872This boolean value adds debug output concerning kernel events related 19873to the debuggee seen by the debugger. This includes events that 19874signal thread and process creation and exit, DLL loading and 19875unloading, console interrupts, and debugging messages produced by the 19876Windows @code{OutputDebugString} API call. 19877 19878@kindex set debugexec 19879@item set debugexec 19880This boolean value adds debug output concerning execute events 19881(such as resume thread) seen by the debugger. 19882 19883@kindex set debugexceptions 19884@item set debugexceptions 19885This boolean value adds debug output concerning exceptions in the 19886debuggee seen by the debugger. 19887 19888@kindex set debugmemory 19889@item set debugmemory 19890This boolean value adds debug output concerning debuggee memory reads 19891and writes by the debugger. 19892 19893@kindex set shell 19894@item set shell 19895This boolean values specifies whether the debuggee is called 19896via a shell or directly (default value is on). 19897 19898@kindex show shell 19899@item show shell 19900Displays if the debuggee will be started with a shell. 19901 19902@end table 19903 19904@menu 19905* Non-debug DLL Symbols:: Support for DLLs without debugging symbols 19906@end menu 19907 19908@node Non-debug DLL Symbols 19909@subsubsection Support for DLLs without Debugging Symbols 19910@cindex DLLs with no debugging symbols 19911@cindex Minimal symbols and DLLs 19912 19913Very often on windows, some of the DLLs that your program relies on do 19914not include symbolic debugging information (for example, 19915@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging 19916symbols in a DLL, it relies on the minimal amount of symbolic 19917information contained in the DLL's export table. This section 19918describes working with such symbols, known internally to @value{GDBN} as 19919``minimal symbols''. 19920 19921Note that before the debugged program has started execution, no DLLs 19922will have been loaded. The easiest way around this problem is simply to 19923start the program --- either by setting a breakpoint or letting the 19924program run once to completion. It is also possible to force 19925@value{GDBN} to load a particular DLL before starting the executable --- 19926see the shared library information in @ref{Files}, or the 19927@code{dll-symbols} command in @ref{Cygwin Native}. Currently, 19928explicitly loading symbols from a DLL with no debugging information will 19929cause the symbol names to be duplicated in @value{GDBN}'s lookup table, 19930which may adversely affect symbol lookup performance. 19931 19932@subsubsection DLL Name Prefixes 19933 19934In keeping with the naming conventions used by the Microsoft debugging 19935tools, DLL export symbols are made available with a prefix based on the 19936DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is 19937also entered into the symbol table, so @code{CreateFileA} is often 19938sufficient. In some cases there will be name clashes within a program 19939(particularly if the executable itself includes full debugging symbols) 19940necessitating the use of the fully qualified name when referring to the 19941contents of the DLL. Use single-quotes around the name to avoid the 19942exclamation mark (``!'') being interpreted as a language operator. 19943 19944Note that the internal name of the DLL may be all upper-case, even 19945though the file name of the DLL is lower-case, or vice-versa. Since 19946symbols within @value{GDBN} are @emph{case-sensitive} this may cause 19947some confusion. If in doubt, try the @code{info functions} and 19948@code{info variables} commands or even @code{maint print msymbols} 19949(@pxref{Symbols}). Here's an example: 19950 19951@smallexample 19952(@value{GDBP}) info function CreateFileA 19953All functions matching regular expression "CreateFileA": 19954 19955Non-debugging symbols: 199560x77e885f4 CreateFileA 199570x77e885f4 KERNEL32!CreateFileA 19958@end smallexample 19959 19960@smallexample 19961(@value{GDBP}) info function ! 19962All functions matching regular expression "!": 19963 19964Non-debugging symbols: 199650x6100114c cygwin1!__assert 199660x61004034 cygwin1!_dll_crt0@@0 199670x61004240 cygwin1!dll_crt0(per_process *) 19968[etc...] 19969@end smallexample 19970 19971@subsubsection Working with Minimal Symbols 19972 19973Symbols extracted from a DLL's export table do not contain very much 19974type information. All that @value{GDBN} can do is guess whether a symbol 19975refers to a function or variable depending on the linker section that 19976contains the symbol. Also note that the actual contents of the memory 19977contained in a DLL are not available unless the program is running. This 19978means that you cannot examine the contents of a variable or disassemble 19979a function within a DLL without a running program. 19980 19981Variables are generally treated as pointers and dereferenced 19982automatically. For this reason, it is often necessary to prefix a 19983variable name with the address-of operator (``&'') and provide explicit 19984type information in the command. Here's an example of the type of 19985problem: 19986 19987@smallexample 19988(@value{GDBP}) print 'cygwin1!__argv' 19989$1 = 268572168 19990@end smallexample 19991 19992@smallexample 19993(@value{GDBP}) x 'cygwin1!__argv' 199940x10021610: "\230y\"" 19995@end smallexample 19996 19997And two possible solutions: 19998 19999@smallexample 20000(@value{GDBP}) print ((char **)'cygwin1!__argv')[0] 20001$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram" 20002@end smallexample 20003 20004@smallexample 20005(@value{GDBP}) x/2x &'cygwin1!__argv' 200060x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000 20007(@value{GDBP}) x/x 0x10021608 200080x10021608: 0x0022fd98 20009(@value{GDBP}) x/s 0x0022fd98 200100x22fd98: "/cygdrive/c/mydirectory/myprogram" 20011@end smallexample 20012 20013Setting a break point within a DLL is possible even before the program 20014starts execution. However, under these circumstances, @value{GDBN} can't 20015examine the initial instructions of the function in order to skip the 20016function's frame set-up code. You can work around this by using ``*&'' 20017to set the breakpoint at a raw memory address: 20018 20019@smallexample 20020(@value{GDBP}) break *&'python22!PyOS_Readline' 20021Breakpoint 1 at 0x1e04eff0 20022@end smallexample 20023 20024The author of these extensions is not entirely convinced that setting a 20025break point within a shared DLL like @file{kernel32.dll} is completely 20026safe. 20027 20028@node Hurd Native 20029@subsection Commands Specific to @sc{gnu} Hurd Systems 20030@cindex @sc{gnu} Hurd debugging 20031 20032This subsection describes @value{GDBN} commands specific to the 20033@sc{gnu} Hurd native debugging. 20034 20035@table @code 20036@item set signals 20037@itemx set sigs 20038@kindex set signals@r{, Hurd command} 20039@kindex set sigs@r{, Hurd command} 20040This command toggles the state of inferior signal interception by 20041@value{GDBN}. Mach exceptions, such as breakpoint traps, are not 20042affected by this command. @code{sigs} is a shorthand alias for 20043@code{signals}. 20044 20045@item show signals 20046@itemx show sigs 20047@kindex show signals@r{, Hurd command} 20048@kindex show sigs@r{, Hurd command} 20049Show the current state of intercepting inferior's signals. 20050 20051@item set signal-thread 20052@itemx set sigthread 20053@kindex set signal-thread 20054@kindex set sigthread 20055This command tells @value{GDBN} which thread is the @code{libc} signal 20056thread. That thread is run when a signal is delivered to a running 20057process. @code{set sigthread} is the shorthand alias of @code{set 20058signal-thread}. 20059 20060@item show signal-thread 20061@itemx show sigthread 20062@kindex show signal-thread 20063@kindex show sigthread 20064These two commands show which thread will run when the inferior is 20065delivered a signal. 20066 20067@item set stopped 20068@kindex set stopped@r{, Hurd command} 20069This commands tells @value{GDBN} that the inferior process is stopped, 20070as with the @code{SIGSTOP} signal. The stopped process can be 20071continued by delivering a signal to it. 20072 20073@item show stopped 20074@kindex show stopped@r{, Hurd command} 20075This command shows whether @value{GDBN} thinks the debuggee is 20076stopped. 20077 20078@item set exceptions 20079@kindex set exceptions@r{, Hurd command} 20080Use this command to turn off trapping of exceptions in the inferior. 20081When exception trapping is off, neither breakpoints nor 20082single-stepping will work. To restore the default, set exception 20083trapping on. 20084 20085@item show exceptions 20086@kindex show exceptions@r{, Hurd command} 20087Show the current state of trapping exceptions in the inferior. 20088 20089@item set task pause 20090@kindex set task@r{, Hurd commands} 20091@cindex task attributes (@sc{gnu} Hurd) 20092@cindex pause current task (@sc{gnu} Hurd) 20093This command toggles task suspension when @value{GDBN} has control. 20094Setting it to on takes effect immediately, and the task is suspended 20095whenever @value{GDBN} gets control. Setting it to off will take 20096effect the next time the inferior is continued. If this option is set 20097to off, you can use @code{set thread default pause on} or @code{set 20098thread pause on} (see below) to pause individual threads. 20099 20100@item show task pause 20101@kindex show task@r{, Hurd commands} 20102Show the current state of task suspension. 20103 20104@item set task detach-suspend-count 20105@cindex task suspend count 20106@cindex detach from task, @sc{gnu} Hurd 20107This command sets the suspend count the task will be left with when 20108@value{GDBN} detaches from it. 20109 20110@item show task detach-suspend-count 20111Show the suspend count the task will be left with when detaching. 20112 20113@item set task exception-port 20114@itemx set task excp 20115@cindex task exception port, @sc{gnu} Hurd 20116This command sets the task exception port to which @value{GDBN} will 20117forward exceptions. The argument should be the value of the @dfn{send 20118rights} of the task. @code{set task excp} is a shorthand alias. 20119 20120@item set noninvasive 20121@cindex noninvasive task options 20122This command switches @value{GDBN} to a mode that is the least 20123invasive as far as interfering with the inferior is concerned. This 20124is the same as using @code{set task pause}, @code{set exceptions}, and 20125@code{set signals} to values opposite to the defaults. 20126 20127@item info send-rights 20128@itemx info receive-rights 20129@itemx info port-rights 20130@itemx info port-sets 20131@itemx info dead-names 20132@itemx info ports 20133@itemx info psets 20134@cindex send rights, @sc{gnu} Hurd 20135@cindex receive rights, @sc{gnu} Hurd 20136@cindex port rights, @sc{gnu} Hurd 20137@cindex port sets, @sc{gnu} Hurd 20138@cindex dead names, @sc{gnu} Hurd 20139These commands display information about, respectively, send rights, 20140receive rights, port rights, port sets, and dead names of a task. 20141There are also shorthand aliases: @code{info ports} for @code{info 20142port-rights} and @code{info psets} for @code{info port-sets}. 20143 20144@item set thread pause 20145@kindex set thread@r{, Hurd command} 20146@cindex thread properties, @sc{gnu} Hurd 20147@cindex pause current thread (@sc{gnu} Hurd) 20148This command toggles current thread suspension when @value{GDBN} has 20149control. Setting it to on takes effect immediately, and the current 20150thread is suspended whenever @value{GDBN} gets control. Setting it to 20151off will take effect the next time the inferior is continued. 20152Normally, this command has no effect, since when @value{GDBN} has 20153control, the whole task is suspended. However, if you used @code{set 20154task pause off} (see above), this command comes in handy to suspend 20155only the current thread. 20156 20157@item show thread pause 20158@kindex show thread@r{, Hurd command} 20159This command shows the state of current thread suspension. 20160 20161@item set thread run 20162This command sets whether the current thread is allowed to run. 20163 20164@item show thread run 20165Show whether the current thread is allowed to run. 20166 20167@item set thread detach-suspend-count 20168@cindex thread suspend count, @sc{gnu} Hurd 20169@cindex detach from thread, @sc{gnu} Hurd 20170This command sets the suspend count @value{GDBN} will leave on a 20171thread when detaching. This number is relative to the suspend count 20172found by @value{GDBN} when it notices the thread; use @code{set thread 20173takeover-suspend-count} to force it to an absolute value. 20174 20175@item show thread detach-suspend-count 20176Show the suspend count @value{GDBN} will leave on the thread when 20177detaching. 20178 20179@item set thread exception-port 20180@itemx set thread excp 20181Set the thread exception port to which to forward exceptions. This 20182overrides the port set by @code{set task exception-port} (see above). 20183@code{set thread excp} is the shorthand alias. 20184 20185@item set thread takeover-suspend-count 20186Normally, @value{GDBN}'s thread suspend counts are relative to the 20187value @value{GDBN} finds when it notices each thread. This command 20188changes the suspend counts to be absolute instead. 20189 20190@item set thread default 20191@itemx show thread default 20192@cindex thread default settings, @sc{gnu} Hurd 20193Each of the above @code{set thread} commands has a @code{set thread 20194default} counterpart (e.g., @code{set thread default pause}, @code{set 20195thread default exception-port}, etc.). The @code{thread default} 20196variety of commands sets the default thread properties for all 20197threads; you can then change the properties of individual threads with 20198the non-default commands. 20199@end table 20200 20201@node Darwin 20202@subsection Darwin 20203@cindex Darwin 20204 20205@value{GDBN} provides the following commands specific to the Darwin target: 20206 20207@table @code 20208@item set debug darwin @var{num} 20209@kindex set debug darwin 20210When set to a non zero value, enables debugging messages specific to 20211the Darwin support. Higher values produce more verbose output. 20212 20213@item show debug darwin 20214@kindex show debug darwin 20215Show the current state of Darwin messages. 20216 20217@item set debug mach-o @var{num} 20218@kindex set debug mach-o 20219When set to a non zero value, enables debugging messages while 20220@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the 20221file format used on Darwin for object and executable files.) Higher 20222values produce more verbose output. This is a command to diagnose 20223problems internal to @value{GDBN} and should not be needed in normal 20224usage. 20225 20226@item show debug mach-o 20227@kindex show debug mach-o 20228Show the current state of Mach-O file messages. 20229 20230@item set mach-exceptions on 20231@itemx set mach-exceptions off 20232@kindex set mach-exceptions 20233On Darwin, faults are first reported as a Mach exception and are then 20234mapped to a Posix signal. Use this command to turn on trapping of 20235Mach exceptions in the inferior. This might be sometimes useful to 20236better understand the cause of a fault. The default is off. 20237 20238@item show mach-exceptions 20239@kindex show mach-exceptions 20240Show the current state of exceptions trapping. 20241@end table 20242 20243 20244@node Embedded OS 20245@section Embedded Operating Systems 20246 20247This section describes configurations involving the debugging of 20248embedded operating systems that are available for several different 20249architectures. 20250 20251@menu 20252* VxWorks:: Using @value{GDBN} with VxWorks 20253@end menu 20254 20255@value{GDBN} includes the ability to debug programs running on 20256various real-time operating systems. 20257 20258@node VxWorks 20259@subsection Using @value{GDBN} with VxWorks 20260 20261@cindex VxWorks 20262 20263@table @code 20264 20265@kindex target vxworks 20266@item target vxworks @var{machinename} 20267A VxWorks system, attached via TCP/IP. The argument @var{machinename} 20268is the target system's machine name or IP address. 20269 20270@end table 20271 20272On VxWorks, @code{load} links @var{filename} dynamically on the 20273current target system as well as adding its symbols in @value{GDBN}. 20274 20275@value{GDBN} enables developers to spawn and debug tasks running on networked 20276VxWorks targets from a Unix host. Already-running tasks spawned from 20277the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on 20278both the Unix host and on the VxWorks target. The program 20279@code{@value{GDBP}} is installed and executed on the Unix host. (It may be 20280installed with the name @code{vxgdb}, to distinguish it from a 20281@value{GDBN} for debugging programs on the host itself.) 20282 20283@table @code 20284@item VxWorks-timeout @var{args} 20285@kindex vxworks-timeout 20286All VxWorks-based targets now support the option @code{vxworks-timeout}. 20287This option is set by the user, and @var{args} represents the number of 20288seconds @value{GDBN} waits for responses to rpc's. You might use this if 20289your VxWorks target is a slow software simulator or is on the far side 20290of a thin network line. 20291@end table 20292 20293The following information on connecting to VxWorks was current when 20294this manual was produced; newer releases of VxWorks may use revised 20295procedures. 20296 20297@findex INCLUDE_RDB 20298To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel 20299to include the remote debugging interface routines in the VxWorks 20300library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the 20301VxWorks configuration file @file{configAll.h} and rebuild your VxWorks 20302kernel. The resulting kernel contains @file{rdb.a}, and spawns the 20303source debugging task @code{tRdbTask} when VxWorks is booted. For more 20304information on configuring and remaking VxWorks, see the manufacturer's 20305manual. 20306@c VxWorks, see the @cite{VxWorks Programmer's Guide}. 20307 20308Once you have included @file{rdb.a} in your VxWorks system image and set 20309your Unix execution search path to find @value{GDBN}, you are ready to 20310run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or 20311@code{vxgdb}, depending on your installation). 20312 20313@value{GDBN} comes up showing the prompt: 20314 20315@smallexample 20316(vxgdb) 20317@end smallexample 20318 20319@menu 20320* VxWorks Connection:: Connecting to VxWorks 20321* VxWorks Download:: VxWorks download 20322* VxWorks Attach:: Running tasks 20323@end menu 20324 20325@node VxWorks Connection 20326@subsubsection Connecting to VxWorks 20327 20328The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the 20329network. To connect to a target whose host name is ``@code{tt}'', type: 20330 20331@smallexample 20332(vxgdb) target vxworks tt 20333@end smallexample 20334 20335@need 750 20336@value{GDBN} displays messages like these: 20337 20338@smallexample 20339Attaching remote machine across net... 20340Connected to tt. 20341@end smallexample 20342 20343@need 1000 20344@value{GDBN} then attempts to read the symbol tables of any object modules 20345loaded into the VxWorks target since it was last booted. @value{GDBN} locates 20346these files by searching the directories listed in the command search 20347path (@pxref{Environment, ,Your Program's Environment}); if it fails 20348to find an object file, it displays a message such as: 20349 20350@smallexample 20351prog.o: No such file or directory. 20352@end smallexample 20353 20354When this happens, add the appropriate directory to the search path with 20355the @value{GDBN} command @code{path}, and execute the @code{target} 20356command again. 20357 20358@node VxWorks Download 20359@subsubsection VxWorks Download 20360 20361@cindex download to VxWorks 20362If you have connected to the VxWorks target and you want to debug an 20363object that has not yet been loaded, you can use the @value{GDBN} 20364@code{load} command to download a file from Unix to VxWorks 20365incrementally. The object file given as an argument to the @code{load} 20366command is actually opened twice: first by the VxWorks target in order 20367to download the code, then by @value{GDBN} in order to read the symbol 20368table. This can lead to problems if the current working directories on 20369the two systems differ. If both systems have NFS mounted the same 20370filesystems, you can avoid these problems by using absolute paths. 20371Otherwise, it is simplest to set the working directory on both systems 20372to the directory in which the object file resides, and then to reference 20373the file by its name, without any path. For instance, a program 20374@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks 20375and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this 20376program, type this on VxWorks: 20377 20378@smallexample 20379-> cd "@var{vxpath}/vw/demo/rdb" 20380@end smallexample 20381 20382@noindent 20383Then, in @value{GDBN}, type: 20384 20385@smallexample 20386(vxgdb) cd @var{hostpath}/vw/demo/rdb 20387(vxgdb) load prog.o 20388@end smallexample 20389 20390@value{GDBN} displays a response similar to this: 20391 20392@smallexample 20393Reading symbol data from wherever/vw/demo/rdb/prog.o... done. 20394@end smallexample 20395 20396You can also use the @code{load} command to reload an object module 20397after editing and recompiling the corresponding source file. Note that 20398this makes @value{GDBN} delete all currently-defined breakpoints, 20399auto-displays, and convenience variables, and to clear the value 20400history. (This is necessary in order to preserve the integrity of 20401debugger's data structures that reference the target system's symbol 20402table.) 20403 20404@node VxWorks Attach 20405@subsubsection Running Tasks 20406 20407@cindex running VxWorks tasks 20408You can also attach to an existing task using the @code{attach} command as 20409follows: 20410 20411@smallexample 20412(vxgdb) attach @var{task} 20413@end smallexample 20414 20415@noindent 20416where @var{task} is the VxWorks hexadecimal task ID. The task can be running 20417or suspended when you attach to it. Running tasks are suspended at 20418the time of attachment. 20419 20420@node Embedded Processors 20421@section Embedded Processors 20422 20423This section goes into details specific to particular embedded 20424configurations. 20425 20426@cindex send command to simulator 20427Whenever a specific embedded processor has a simulator, @value{GDBN} 20428allows to send an arbitrary command to the simulator. 20429 20430@table @code 20431@item sim @var{command} 20432@kindex sim@r{, a command} 20433Send an arbitrary @var{command} string to the simulator. Consult the 20434documentation for the specific simulator in use for information about 20435acceptable commands. 20436@end table 20437 20438 20439@menu 20440* ARM:: ARM RDI 20441* M32R/D:: Renesas M32R/D 20442* M68K:: Motorola M68K 20443* MicroBlaze:: Xilinx MicroBlaze 20444* MIPS Embedded:: MIPS Embedded 20445* PowerPC Embedded:: PowerPC Embedded 20446* PA:: HP PA Embedded 20447* Sparclet:: Tsqware Sparclet 20448* Sparclite:: Fujitsu Sparclite 20449* Z8000:: Zilog Z8000 20450* AVR:: Atmel AVR 20451* CRIS:: CRIS 20452* Super-H:: Renesas Super-H 20453@end menu 20454 20455@node ARM 20456@subsection ARM 20457@cindex ARM RDI 20458 20459@table @code 20460@kindex target rdi 20461@item target rdi @var{dev} 20462ARM Angel monitor, via RDI library interface to ADP protocol. You may 20463use this target to communicate with both boards running the Angel 20464monitor, or with the EmbeddedICE JTAG debug device. 20465 20466@kindex target rdp 20467@item target rdp @var{dev} 20468ARM Demon monitor. 20469 20470@end table 20471 20472@value{GDBN} provides the following ARM-specific commands: 20473 20474@table @code 20475@item set arm disassembler 20476@kindex set arm 20477This commands selects from a list of disassembly styles. The 20478@code{"std"} style is the standard style. 20479 20480@item show arm disassembler 20481@kindex show arm 20482Show the current disassembly style. 20483 20484@item set arm apcs32 20485@cindex ARM 32-bit mode 20486This command toggles ARM operation mode between 32-bit and 26-bit. 20487 20488@item show arm apcs32 20489Display the current usage of the ARM 32-bit mode. 20490 20491@item set arm fpu @var{fputype} 20492This command sets the ARM floating-point unit (FPU) type. The 20493argument @var{fputype} can be one of these: 20494 20495@table @code 20496@item auto 20497Determine the FPU type by querying the OS ABI. 20498@item softfpa 20499Software FPU, with mixed-endian doubles on little-endian ARM 20500processors. 20501@item fpa 20502GCC-compiled FPA co-processor. 20503@item softvfp 20504Software FPU with pure-endian doubles. 20505@item vfp 20506VFP co-processor. 20507@end table 20508 20509@item show arm fpu 20510Show the current type of the FPU. 20511 20512@item set arm abi 20513This command forces @value{GDBN} to use the specified ABI. 20514 20515@item show arm abi 20516Show the currently used ABI. 20517 20518@item set arm fallback-mode (arm|thumb|auto) 20519@value{GDBN} uses the symbol table, when available, to determine 20520whether instructions are ARM or Thumb. This command controls 20521@value{GDBN}'s default behavior when the symbol table is not 20522available. The default is @samp{auto}, which causes @value{GDBN} to 20523use the current execution mode (from the @code{T} bit in the @code{CPSR} 20524register). 20525 20526@item show arm fallback-mode 20527Show the current fallback instruction mode. 20528 20529@item set arm force-mode (arm|thumb|auto) 20530This command overrides use of the symbol table to determine whether 20531instructions are ARM or Thumb. The default is @samp{auto}, which 20532causes @value{GDBN} to use the symbol table and then the setting 20533of @samp{set arm fallback-mode}. 20534 20535@item show arm force-mode 20536Show the current forced instruction mode. 20537 20538@item set debug arm 20539Toggle whether to display ARM-specific debugging messages from the ARM 20540target support subsystem. 20541 20542@item show debug arm 20543Show whether ARM-specific debugging messages are enabled. 20544@end table 20545 20546The following commands are available when an ARM target is debugged 20547using the RDI interface: 20548 20549@table @code 20550@item rdilogfile @r{[}@var{file}@r{]} 20551@kindex rdilogfile 20552@cindex ADP (Angel Debugger Protocol) logging 20553Set the filename for the ADP (Angel Debugger Protocol) packet log. 20554With an argument, sets the log file to the specified @var{file}. With 20555no argument, show the current log file name. The default log file is 20556@file{rdi.log}. 20557 20558@item rdilogenable @r{[}@var{arg}@r{]} 20559@kindex rdilogenable 20560Control logging of ADP packets. With an argument of 1 or @code{"yes"} 20561enables logging, with an argument 0 or @code{"no"} disables it. With 20562no arguments displays the current setting. When logging is enabled, 20563ADP packets exchanged between @value{GDBN} and the RDI target device 20564are logged to a file. 20565 20566@item set rdiromatzero 20567@kindex set rdiromatzero 20568@cindex ROM at zero address, RDI 20569Tell @value{GDBN} whether the target has ROM at address 0. If on, 20570vector catching is disabled, so that zero address can be used. If off 20571(the default), vector catching is enabled. For this command to take 20572effect, it needs to be invoked prior to the @code{target rdi} command. 20573 20574@item show rdiromatzero 20575@kindex show rdiromatzero 20576Show the current setting of ROM at zero address. 20577 20578@item set rdiheartbeat 20579@kindex set rdiheartbeat 20580@cindex RDI heartbeat 20581Enable or disable RDI heartbeat packets. It is not recommended to 20582turn on this option, since it confuses ARM and EPI JTAG interface, as 20583well as the Angel monitor. 20584 20585@item show rdiheartbeat 20586@kindex show rdiheartbeat 20587Show the setting of RDI heartbeat packets. 20588@end table 20589 20590@table @code 20591@item target sim @r{[}@var{simargs}@r{]} @dots{} 20592The @value{GDBN} ARM simulator accepts the following optional arguments. 20593 20594@table @code 20595@item --swi-support=@var{type} 20596Tell the simulator which SWI interfaces to support. 20597@var{type} may be a comma separated list of the following values. 20598The default value is @code{all}. 20599 20600@table @code 20601@item none 20602@item demon 20603@item angel 20604@item redboot 20605@item all 20606@end table 20607@end table 20608@end table 20609 20610@node M32R/D 20611@subsection Renesas M32R/D and M32R/SDI 20612 20613@table @code 20614@kindex target m32r 20615@item target m32r @var{dev} 20616Renesas M32R/D ROM monitor. 20617 20618@kindex target m32rsdi 20619@item target m32rsdi @var{dev} 20620Renesas M32R SDI server, connected via parallel port to the board. 20621@end table 20622 20623The following @value{GDBN} commands are specific to the M32R monitor: 20624 20625@table @code 20626@item set download-path @var{path} 20627@kindex set download-path 20628@cindex find downloadable @sc{srec} files (M32R) 20629Set the default path for finding downloadable @sc{srec} files. 20630 20631@item show download-path 20632@kindex show download-path 20633Show the default path for downloadable @sc{srec} files. 20634 20635@item set board-address @var{addr} 20636@kindex set board-address 20637@cindex M32-EVA target board address 20638Set the IP address for the M32R-EVA target board. 20639 20640@item show board-address 20641@kindex show board-address 20642Show the current IP address of the target board. 20643 20644@item set server-address @var{addr} 20645@kindex set server-address 20646@cindex download server address (M32R) 20647Set the IP address for the download server, which is the @value{GDBN}'s 20648host machine. 20649 20650@item show server-address 20651@kindex show server-address 20652Display the IP address of the download server. 20653 20654@item upload @r{[}@var{file}@r{]} 20655@kindex upload@r{, M32R} 20656Upload the specified @sc{srec} @var{file} via the monitor's Ethernet 20657upload capability. If no @var{file} argument is given, the current 20658executable file is uploaded. 20659 20660@item tload @r{[}@var{file}@r{]} 20661@kindex tload@r{, M32R} 20662Test the @code{upload} command. 20663@end table 20664 20665The following commands are available for M32R/SDI: 20666 20667@table @code 20668@item sdireset 20669@kindex sdireset 20670@cindex reset SDI connection, M32R 20671This command resets the SDI connection. 20672 20673@item sdistatus 20674@kindex sdistatus 20675This command shows the SDI connection status. 20676 20677@item debug_chaos 20678@kindex debug_chaos 20679@cindex M32R/Chaos debugging 20680Instructs the remote that M32R/Chaos debugging is to be used. 20681 20682@item use_debug_dma 20683@kindex use_debug_dma 20684Instructs the remote to use the DEBUG_DMA method of accessing memory. 20685 20686@item use_mon_code 20687@kindex use_mon_code 20688Instructs the remote to use the MON_CODE method of accessing memory. 20689 20690@item use_ib_break 20691@kindex use_ib_break 20692Instructs the remote to set breakpoints by IB break. 20693 20694@item use_dbt_break 20695@kindex use_dbt_break 20696Instructs the remote to set breakpoints by DBT. 20697@end table 20698 20699@node M68K 20700@subsection M68k 20701 20702The Motorola m68k configuration includes ColdFire support, and a 20703target command for the following ROM monitor. 20704 20705@table @code 20706 20707@kindex target dbug 20708@item target dbug @var{dev} 20709dBUG ROM monitor for Motorola ColdFire. 20710 20711@end table 20712 20713@node MicroBlaze 20714@subsection MicroBlaze 20715@cindex Xilinx MicroBlaze 20716@cindex XMD, Xilinx Microprocessor Debugger 20717 20718The MicroBlaze is a soft-core processor supported on various Xilinx 20719FPGAs, such as Spartan or Virtex series. Boards with these processors 20720usually have JTAG ports which connect to a host system running the Xilinx 20721Embedded Development Kit (EDK) or Software Development Kit (SDK). 20722This host system is used to download the configuration bitstream to 20723the target FPGA. The Xilinx Microprocessor Debugger (XMD) program 20724communicates with the target board using the JTAG interface and 20725presents a @code{gdbserver} interface to the board. By default 20726@code{xmd} uses port @code{1234}. (While it is possible to change 20727this default port, it requires the use of undocumented @code{xmd} 20728commands. Contact Xilinx support if you need to do this.) 20729 20730Use these GDB commands to connect to the MicroBlaze target processor. 20731 20732@table @code 20733@item target remote :1234 20734Use this command to connect to the target if you are running @value{GDBN} 20735on the same system as @code{xmd}. 20736 20737@item target remote @var{xmd-host}:1234 20738Use this command to connect to the target if it is connected to @code{xmd} 20739running on a different system named @var{xmd-host}. 20740 20741@item load 20742Use this command to download a program to the MicroBlaze target. 20743 20744@item set debug microblaze @var{n} 20745Enable MicroBlaze-specific debugging messages if non-zero. 20746 20747@item show debug microblaze @var{n} 20748Show MicroBlaze-specific debugging level. 20749@end table 20750 20751@node MIPS Embedded 20752@subsection @acronym{MIPS} Embedded 20753 20754@cindex @acronym{MIPS} boards 20755@value{GDBN} can use the @acronym{MIPS} remote debugging protocol to talk to a 20756@acronym{MIPS} board attached to a serial line. This is available when 20757you configure @value{GDBN} with @samp{--target=mips-elf}. 20758 20759@need 1000 20760Use these @value{GDBN} commands to specify the connection to your target board: 20761 20762@table @code 20763@item target mips @var{port} 20764@kindex target mips @var{port} 20765To run a program on the board, start up @code{@value{GDBP}} with the 20766name of your program as the argument. To connect to the board, use the 20767command @samp{target mips @var{port}}, where @var{port} is the name of 20768the serial port connected to the board. If the program has not already 20769been downloaded to the board, you may use the @code{load} command to 20770download it. You can then use all the usual @value{GDBN} commands. 20771 20772For example, this sequence connects to the target board through a serial 20773port, and loads and runs a program called @var{prog} through the 20774debugger: 20775 20776@smallexample 20777host$ @value{GDBP} @var{prog} 20778@value{GDBN} is free software and @dots{} 20779(@value{GDBP}) target mips /dev/ttyb 20780(@value{GDBP}) load @var{prog} 20781(@value{GDBP}) run 20782@end smallexample 20783 20784@item target mips @var{hostname}:@var{portnumber} 20785On some @value{GDBN} host configurations, you can specify a TCP 20786connection (for instance, to a serial line managed by a terminal 20787concentrator) instead of a serial port, using the syntax 20788@samp{@var{hostname}:@var{portnumber}}. 20789 20790@item target pmon @var{port} 20791@kindex target pmon @var{port} 20792PMON ROM monitor. 20793 20794@item target ddb @var{port} 20795@kindex target ddb @var{port} 20796NEC's DDB variant of PMON for Vr4300. 20797 20798@item target lsi @var{port} 20799@kindex target lsi @var{port} 20800LSI variant of PMON. 20801 20802@kindex target r3900 20803@item target r3900 @var{dev} 20804Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips. 20805 20806@kindex target array 20807@item target array @var{dev} 20808Array Tech LSI33K RAID controller board. 20809 20810@end table 20811 20812 20813@noindent 20814@value{GDBN} also supports these special commands for @acronym{MIPS} targets: 20815 20816@table @code 20817@item set mipsfpu double 20818@itemx set mipsfpu single 20819@itemx set mipsfpu none 20820@itemx set mipsfpu auto 20821@itemx show mipsfpu 20822@kindex set mipsfpu 20823@kindex show mipsfpu 20824@cindex @acronym{MIPS} remote floating point 20825@cindex floating point, @acronym{MIPS} remote 20826If your target board does not support the @acronym{MIPS} floating point 20827coprocessor, you should use the command @samp{set mipsfpu none} (if you 20828need this, you may wish to put the command in your @value{GDBN} init 20829file). This tells @value{GDBN} how to find the return value of 20830functions which return floating point values. It also allows 20831@value{GDBN} to avoid saving the floating point registers when calling 20832functions on the board. If you are using a floating point coprocessor 20833with only single precision floating point support, as on the @sc{r4650} 20834processor, use the command @samp{set mipsfpu single}. The default 20835double precision floating point coprocessor may be selected using 20836@samp{set mipsfpu double}. 20837 20838In previous versions the only choices were double precision or no 20839floating point, so @samp{set mipsfpu on} will select double precision 20840and @samp{set mipsfpu off} will select no floating point. 20841 20842As usual, you can inquire about the @code{mipsfpu} variable with 20843@samp{show mipsfpu}. 20844 20845@item set timeout @var{seconds} 20846@itemx set retransmit-timeout @var{seconds} 20847@itemx show timeout 20848@itemx show retransmit-timeout 20849@cindex @code{timeout}, @acronym{MIPS} protocol 20850@cindex @code{retransmit-timeout}, @acronym{MIPS} protocol 20851@kindex set timeout 20852@kindex show timeout 20853@kindex set retransmit-timeout 20854@kindex show retransmit-timeout 20855You can control the timeout used while waiting for a packet, in the @acronym{MIPS} 20856remote protocol, with the @code{set timeout @var{seconds}} command. The 20857default is 5 seconds. Similarly, you can control the timeout used while 20858waiting for an acknowledgment of a packet with the @code{set 20859retransmit-timeout @var{seconds}} command. The default is 3 seconds. 20860You can inspect both values with @code{show timeout} and @code{show 20861retransmit-timeout}. (These commands are @emph{only} available when 20862@value{GDBN} is configured for @samp{--target=mips-elf}.) 20863 20864The timeout set by @code{set timeout} does not apply when @value{GDBN} 20865is waiting for your program to stop. In that case, @value{GDBN} waits 20866forever because it has no way of knowing how long the program is going 20867to run before stopping. 20868 20869@item set syn-garbage-limit @var{num} 20870@kindex set syn-garbage-limit@r{, @acronym{MIPS} remote} 20871@cindex synchronize with remote @acronym{MIPS} target 20872Limit the maximum number of characters @value{GDBN} should ignore when 20873it tries to synchronize with the remote target. The default is 10 20874characters. Setting the limit to -1 means there's no limit. 20875 20876@item show syn-garbage-limit 20877@kindex show syn-garbage-limit@r{, @acronym{MIPS} remote} 20878Show the current limit on the number of characters to ignore when 20879trying to synchronize with the remote system. 20880 20881@item set monitor-prompt @var{prompt} 20882@kindex set monitor-prompt@r{, @acronym{MIPS} remote} 20883@cindex remote monitor prompt 20884Tell @value{GDBN} to expect the specified @var{prompt} string from the 20885remote monitor. The default depends on the target: 20886@table @asis 20887@item pmon target 20888@samp{PMON} 20889@item ddb target 20890@samp{NEC010} 20891@item lsi target 20892@samp{PMON>} 20893@end table 20894 20895@item show monitor-prompt 20896@kindex show monitor-prompt@r{, @acronym{MIPS} remote} 20897Show the current strings @value{GDBN} expects as the prompt from the 20898remote monitor. 20899 20900@item set monitor-warnings 20901@kindex set monitor-warnings@r{, @acronym{MIPS} remote} 20902Enable or disable monitor warnings about hardware breakpoints. This 20903has effect only for the @code{lsi} target. When on, @value{GDBN} will 20904display warning messages whose codes are returned by the @code{lsi} 20905PMON monitor for breakpoint commands. 20906 20907@item show monitor-warnings 20908@kindex show monitor-warnings@r{, @acronym{MIPS} remote} 20909Show the current setting of printing monitor warnings. 20910 20911@item pmon @var{command} 20912@kindex pmon@r{, @acronym{MIPS} remote} 20913@cindex send PMON command 20914This command allows sending an arbitrary @var{command} string to the 20915monitor. The monitor must be in debug mode for this to work. 20916@end table 20917 20918@node PowerPC Embedded 20919@subsection PowerPC Embedded 20920 20921@cindex DVC register 20922@value{GDBN} supports using the DVC (Data Value Compare) register to 20923implement in hardware simple hardware watchpoint conditions of the form: 20924 20925@smallexample 20926(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \ 20927 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION} 20928@end smallexample 20929 20930The DVC register will be automatically used when @value{GDBN} detects 20931such pattern in a condition expression, and the created watchpoint uses one 20932debug register (either the @code{exact-watchpoints} option is on and the 20933variable is scalar, or the variable has a length of one byte). This feature 20934is available in native @value{GDBN} running on a Linux kernel version 2.6.34 20935or newer. 20936 20937When running on PowerPC embedded processors, @value{GDBN} automatically uses 20938ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on, 20939in which case watchpoints using only one debug register are created when 20940watching variables of scalar types. 20941 20942You can create an artificial array to watch an arbitrary memory 20943region using one of the following commands (@pxref{Expressions}): 20944 20945@smallexample 20946(@value{GDBP}) watch *((char *) @var{address})@@@var{length} 20947(@value{GDBP}) watch @{char[@var{length}]@} @var{address} 20948@end smallexample 20949 20950PowerPC embedded processors support masked watchpoints. See the discussion 20951about the @code{mask} argument in @ref{Set Watchpoints}. 20952 20953@cindex ranged breakpoint 20954PowerPC embedded processors support hardware accelerated 20955@dfn{ranged breakpoints}. A ranged breakpoint stops execution of 20956the inferior whenever it executes an instruction at any address within 20957the range it specifies. To set a ranged breakpoint in @value{GDBN}, 20958use the @code{break-range} command. 20959 20960@value{GDBN} provides the following PowerPC-specific commands: 20961 20962@table @code 20963@kindex break-range 20964@item break-range @var{start-location}, @var{end-location} 20965Set a breakpoint for an address range. 20966@var{start-location} and @var{end-location} can specify a function name, 20967a line number, an offset of lines from the current line or from the start 20968location, or an address of an instruction (see @ref{Specify Location}, 20969for a list of all the possible ways to specify a @var{location}.) 20970The breakpoint will stop execution of the inferior whenever it 20971executes an instruction at any address within the specified range, 20972(including @var{start-location} and @var{end-location}.) 20973 20974@kindex set powerpc 20975@item set powerpc soft-float 20976@itemx show powerpc soft-float 20977Force @value{GDBN} to use (or not use) a software floating point calling 20978convention. By default, @value{GDBN} selects the calling convention based 20979on the selected architecture and the provided executable file. 20980 20981@item set powerpc vector-abi 20982@itemx show powerpc vector-abi 20983Force @value{GDBN} to use the specified calling convention for vector 20984arguments and return values. The valid options are @samp{auto}; 20985@samp{generic}, to avoid vector registers even if they are present; 20986@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE 20987registers. By default, @value{GDBN} selects the calling convention 20988based on the selected architecture and the provided executable file. 20989 20990@item set powerpc exact-watchpoints 20991@itemx show powerpc exact-watchpoints 20992Allow @value{GDBN} to use only one debug register when watching a variable 20993of scalar type, thus assuming that the variable is accessed through the 20994address of its first byte. 20995 20996@kindex target dink32 20997@item target dink32 @var{dev} 20998DINK32 ROM monitor. 20999 21000@kindex target ppcbug 21001@item target ppcbug @var{dev} 21002@kindex target ppcbug1 21003@item target ppcbug1 @var{dev} 21004PPCBUG ROM monitor for PowerPC. 21005 21006@kindex target sds 21007@item target sds @var{dev} 21008SDS monitor, running on a PowerPC board (such as Motorola's ADS). 21009@end table 21010 21011@cindex SDS protocol 21012The following commands specific to the SDS protocol are supported 21013by @value{GDBN}: 21014 21015@table @code 21016@item set sdstimeout @var{nsec} 21017@kindex set sdstimeout 21018Set the timeout for SDS protocol reads to be @var{nsec} seconds. The 21019default is 2 seconds. 21020 21021@item show sdstimeout 21022@kindex show sdstimeout 21023Show the current value of the SDS timeout. 21024 21025@item sds @var{command} 21026@kindex sds@r{, a command} 21027Send the specified @var{command} string to the SDS monitor. 21028@end table 21029 21030 21031@node PA 21032@subsection HP PA Embedded 21033 21034@table @code 21035 21036@kindex target op50n 21037@item target op50n @var{dev} 21038OP50N monitor, running on an OKI HPPA board. 21039 21040@kindex target w89k 21041@item target w89k @var{dev} 21042W89K monitor, running on a Winbond HPPA board. 21043 21044@end table 21045 21046@node Sparclet 21047@subsection Tsqware Sparclet 21048 21049@cindex Sparclet 21050 21051@value{GDBN} enables developers to debug tasks running on 21052Sparclet targets from a Unix host. 21053@value{GDBN} uses code that runs on 21054both the Unix host and on the Sparclet target. The program 21055@code{@value{GDBP}} is installed and executed on the Unix host. 21056 21057@table @code 21058@item remotetimeout @var{args} 21059@kindex remotetimeout 21060@value{GDBN} supports the option @code{remotetimeout}. 21061This option is set by the user, and @var{args} represents the number of 21062seconds @value{GDBN} waits for responses. 21063@end table 21064 21065@cindex compiling, on Sparclet 21066When compiling for debugging, include the options @samp{-g} to get debug 21067information and @samp{-Ttext} to relocate the program to where you wish to 21068load it on the target. You may also want to add the options @samp{-n} or 21069@samp{-N} in order to reduce the size of the sections. Example: 21070 21071@smallexample 21072sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N 21073@end smallexample 21074 21075You can use @code{objdump} to verify that the addresses are what you intended: 21076 21077@smallexample 21078sparclet-aout-objdump --headers --syms prog 21079@end smallexample 21080 21081@cindex running, on Sparclet 21082Once you have set 21083your Unix execution search path to find @value{GDBN}, you are ready to 21084run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} 21085(or @code{sparclet-aout-gdb}, depending on your installation). 21086 21087@value{GDBN} comes up showing the prompt: 21088 21089@smallexample 21090(gdbslet) 21091@end smallexample 21092 21093@menu 21094* Sparclet File:: Setting the file to debug 21095* Sparclet Connection:: Connecting to Sparclet 21096* Sparclet Download:: Sparclet download 21097* Sparclet Execution:: Running and debugging 21098@end menu 21099 21100@node Sparclet File 21101@subsubsection Setting File to Debug 21102 21103The @value{GDBN} command @code{file} lets you choose with program to debug. 21104 21105@smallexample 21106(gdbslet) file prog 21107@end smallexample 21108 21109@need 1000 21110@value{GDBN} then attempts to read the symbol table of @file{prog}. 21111@value{GDBN} locates 21112the file by searching the directories listed in the command search 21113path. 21114If the file was compiled with debug information (option @samp{-g}), source 21115files will be searched as well. 21116@value{GDBN} locates 21117the source files by searching the directories listed in the directory search 21118path (@pxref{Environment, ,Your Program's Environment}). 21119If it fails 21120to find a file, it displays a message such as: 21121 21122@smallexample 21123prog: No such file or directory. 21124@end smallexample 21125 21126When this happens, add the appropriate directories to the search paths with 21127the @value{GDBN} commands @code{path} and @code{dir}, and execute the 21128@code{target} command again. 21129 21130@node Sparclet Connection 21131@subsubsection Connecting to Sparclet 21132 21133The @value{GDBN} command @code{target} lets you connect to a Sparclet target. 21134To connect to a target on serial port ``@code{ttya}'', type: 21135 21136@smallexample 21137(gdbslet) target sparclet /dev/ttya 21138Remote target sparclet connected to /dev/ttya 21139main () at ../prog.c:3 21140@end smallexample 21141 21142@need 750 21143@value{GDBN} displays messages like these: 21144 21145@smallexample 21146Connected to ttya. 21147@end smallexample 21148 21149@node Sparclet Download 21150@subsubsection Sparclet Download 21151 21152@cindex download to Sparclet 21153Once connected to the Sparclet target, 21154you can use the @value{GDBN} 21155@code{load} command to download the file from the host to the target. 21156The file name and load offset should be given as arguments to the @code{load} 21157command. 21158Since the file format is aout, the program must be loaded to the starting 21159address. You can use @code{objdump} to find out what this value is. The load 21160offset is an offset which is added to the VMA (virtual memory address) 21161of each of the file's sections. 21162For instance, if the program 21163@file{prog} was linked to text address 0x1201000, with data at 0x12010160 21164and bss at 0x12010170, in @value{GDBN}, type: 21165 21166@smallexample 21167(gdbslet) load prog 0x12010000 21168Loading section .text, size 0xdb0 vma 0x12010000 21169@end smallexample 21170 21171If the code is loaded at a different address then what the program was linked 21172to, you may need to use the @code{section} and @code{add-symbol-file} commands 21173to tell @value{GDBN} where to map the symbol table. 21174 21175@node Sparclet Execution 21176@subsubsection Running and Debugging 21177 21178@cindex running and debugging Sparclet programs 21179You can now begin debugging the task using @value{GDBN}'s execution control 21180commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN} 21181manual for the list of commands. 21182 21183@smallexample 21184(gdbslet) b main 21185Breakpoint 1 at 0x12010000: file prog.c, line 3. 21186(gdbslet) run 21187Starting program: prog 21188Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3 211893 char *symarg = 0; 21190(gdbslet) step 211914 char *execarg = "hello!"; 21192(gdbslet) 21193@end smallexample 21194 21195@node Sparclite 21196@subsection Fujitsu Sparclite 21197 21198@table @code 21199 21200@kindex target sparclite 21201@item target sparclite @var{dev} 21202Fujitsu sparclite boards, used only for the purpose of loading. 21203You must use an additional command to debug the program. 21204For example: target remote @var{dev} using @value{GDBN} standard 21205remote protocol. 21206 21207@end table 21208 21209@node Z8000 21210@subsection Zilog Z8000 21211 21212@cindex Z8000 21213@cindex simulator, Z8000 21214@cindex Zilog Z8000 simulator 21215 21216When configured for debugging Zilog Z8000 targets, @value{GDBN} includes 21217a Z8000 simulator. 21218 21219For the Z8000 family, @samp{target sim} simulates either the Z8002 (the 21220unsegmented variant of the Z8000 architecture) or the Z8001 (the 21221segmented variant). The simulator recognizes which architecture is 21222appropriate by inspecting the object code. 21223 21224@table @code 21225@item target sim @var{args} 21226@kindex sim 21227@kindex target sim@r{, with Z8000} 21228Debug programs on a simulated CPU. If the simulator supports setup 21229options, specify them via @var{args}. 21230@end table 21231 21232@noindent 21233After specifying this target, you can debug programs for the simulated 21234CPU in the same style as programs for your host computer; use the 21235@code{file} command to load a new program image, the @code{run} command 21236to run your program, and so on. 21237 21238As well as making available all the usual machine registers 21239(@pxref{Registers, ,Registers}), the Z8000 simulator provides three 21240additional items of information as specially named registers: 21241 21242@table @code 21243 21244@item cycles 21245Counts clock-ticks in the simulator. 21246 21247@item insts 21248Counts instructions run in the simulator. 21249 21250@item time 21251Execution time in 60ths of a second. 21252 21253@end table 21254 21255You can refer to these values in @value{GDBN} expressions with the usual 21256conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a 21257conditional breakpoint that suspends only after at least 5000 21258simulated clock ticks. 21259 21260@node AVR 21261@subsection Atmel AVR 21262@cindex AVR 21263 21264When configured for debugging the Atmel AVR, @value{GDBN} supports the 21265following AVR-specific commands: 21266 21267@table @code 21268@item info io_registers 21269@kindex info io_registers@r{, AVR} 21270@cindex I/O registers (Atmel AVR) 21271This command displays information about the AVR I/O registers. For 21272each register, @value{GDBN} prints its number and value. 21273@end table 21274 21275@node CRIS 21276@subsection CRIS 21277@cindex CRIS 21278 21279When configured for debugging CRIS, @value{GDBN} provides the 21280following CRIS-specific commands: 21281 21282@table @code 21283@item set cris-version @var{ver} 21284@cindex CRIS version 21285Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}. 21286The CRIS version affects register names and sizes. This command is useful in 21287case autodetection of the CRIS version fails. 21288 21289@item show cris-version 21290Show the current CRIS version. 21291 21292@item set cris-dwarf2-cfi 21293@cindex DWARF-2 CFI and CRIS 21294Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}. 21295Change to @samp{off} when using @code{gcc-cris} whose version is below 21296@code{R59}. 21297 21298@item show cris-dwarf2-cfi 21299Show the current state of using DWARF-2 CFI. 21300 21301@item set cris-mode @var{mode} 21302@cindex CRIS mode 21303Set the current CRIS mode to @var{mode}. It should only be changed when 21304debugging in guru mode, in which case it should be set to 21305@samp{guru} (the default is @samp{normal}). 21306 21307@item show cris-mode 21308Show the current CRIS mode. 21309@end table 21310 21311@node Super-H 21312@subsection Renesas Super-H 21313@cindex Super-H 21314 21315For the Renesas Super-H processor, @value{GDBN} provides these 21316commands: 21317 21318@table @code 21319@item set sh calling-convention @var{convention} 21320@kindex set sh calling-convention 21321Set the calling-convention used when calling functions from @value{GDBN}. 21322Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}. 21323With the @samp{gcc} setting, functions are called using the @value{NGCC} calling 21324convention. If the DWARF-2 information of the called function specifies 21325that the function follows the Renesas calling convention, the function 21326is called using the Renesas calling convention. If the calling convention 21327is set to @samp{renesas}, the Renesas calling convention is always used, 21328regardless of the DWARF-2 information. This can be used to override the 21329default of @samp{gcc} if debug information is missing, or the compiler 21330does not emit the DWARF-2 calling convention entry for a function. 21331 21332@item show sh calling-convention 21333@kindex show sh calling-convention 21334Show the current calling convention setting. 21335 21336@end table 21337 21338 21339@node Architectures 21340@section Architectures 21341 21342This section describes characteristics of architectures that affect 21343all uses of @value{GDBN} with the architecture, both native and cross. 21344 21345@menu 21346* AArch64:: 21347* i386:: 21348* Alpha:: 21349* MIPS:: 21350* HPPA:: HP PA architecture 21351* SPU:: Cell Broadband Engine SPU architecture 21352* PowerPC:: 21353* Nios II:: 21354@end menu 21355 21356@node AArch64 21357@subsection AArch64 21358@cindex AArch64 support 21359 21360When @value{GDBN} is debugging the AArch64 architecture, it provides the 21361following special commands: 21362 21363@table @code 21364@item set debug aarch64 21365@kindex set debug aarch64 21366This command determines whether AArch64 architecture-specific debugging 21367messages are to be displayed. 21368 21369@item show debug aarch64 21370Show whether AArch64 debugging messages are displayed. 21371 21372@end table 21373 21374@node i386 21375@subsection x86 Architecture-specific Issues 21376 21377@table @code 21378@item set struct-convention @var{mode} 21379@kindex set struct-convention 21380@cindex struct return convention 21381@cindex struct/union returned in registers 21382Set the convention used by the inferior to return @code{struct}s and 21383@code{union}s from functions to @var{mode}. Possible values of 21384@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the 21385default). @code{"default"} or @code{"pcc"} means that @code{struct}s 21386are returned on the stack, while @code{"reg"} means that a 21387@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will 21388be returned in a register. 21389 21390@item show struct-convention 21391@kindex show struct-convention 21392Show the current setting of the convention to return @code{struct}s 21393from functions. 21394@end table 21395 21396@subsubsection Intel(R) @dfn{Memory Protection Extensions} (MPX). 21397@cindex Intel(R) Memory Protection Extensions (MPX). 21398 21399Memory Protection Extension (MPX) adds the bound registers @samp{BND0} 21400@footnote{The register named with capital letters represent the architecture 21401registers.} through @samp{BND3}. Bound registers store a pair of 64-bit values 21402which are the lower bound and upper bound. Bounds are effective addresses or 21403memory locations. The upper bounds are architecturally represented in 1's 21404complement form. A bound having lower bound = 0, and upper bound = 0 21405(1's complement of all bits set) will allow access to the entire address space. 21406 21407@samp{BND0} through @samp{BND3} are represented in @value{GDBN} as @samp{bnd0raw} 21408through @samp{bnd3raw}. Pseudo registers @samp{bnd0} through @samp{bnd3} 21409display the upper bound performing the complement of one operation on the 21410upper bound value, i.e.@ when upper bound in @samp{bnd0raw} is 0 in the 21411@value{GDBN} @samp{bnd0} it will be @code{0xfff@dots{}}. In this sense it 21412can also be noted that the upper bounds are inclusive. 21413 21414As an example, assume that the register BND0 holds bounds for a pointer having 21415access allowed for the range between 0x32 and 0x71. The values present on 21416bnd0raw and bnd registers are presented as follows: 21417 21418@smallexample 21419 bnd0raw = @{0x32, 0xffffffff8e@} 21420 bnd0 = @{lbound = 0x32, ubound = 0x71@} : size 64 21421@end smallexample 21422 21423This way the raw value can be accessed via bnd0raw@dots{}bnd3raw. Any 21424change on bnd0@dots{}bnd3 or bnd0raw@dots{}bnd3raw is reflect on its 21425counterpart. When the bnd0@dots{}bnd3 registers are displayed via 21426Python, the display includes the memory size, in bits, accessible to 21427the pointer. 21428 21429@node Alpha 21430@subsection Alpha 21431 21432See the following section. 21433 21434@node MIPS 21435@subsection @acronym{MIPS} 21436 21437@cindex stack on Alpha 21438@cindex stack on @acronym{MIPS} 21439@cindex Alpha stack 21440@cindex @acronym{MIPS} stack 21441Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which 21442sometimes requires @value{GDBN} to search backward in the object code to 21443find the beginning of a function. 21444 21445@cindex response time, @acronym{MIPS} debugging 21446To improve response time (especially for embedded applications, where 21447@value{GDBN} may be restricted to a slow serial line for this search) 21448you may want to limit the size of this search, using one of these 21449commands: 21450 21451@table @code 21452@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS}) 21453@item set heuristic-fence-post @var{limit} 21454Restrict @value{GDBN} to examining at most @var{limit} bytes in its 21455search for the beginning of a function. A value of @var{0} (the 21456default) means there is no limit. However, except for @var{0}, the 21457larger the limit the more bytes @code{heuristic-fence-post} must search 21458and therefore the longer it takes to run. You should only need to use 21459this command when debugging a stripped executable. 21460 21461@item show heuristic-fence-post 21462Display the current limit. 21463@end table 21464 21465@noindent 21466These commands are available @emph{only} when @value{GDBN} is configured 21467for debugging programs on Alpha or @acronym{MIPS} processors. 21468 21469Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS} 21470programs: 21471 21472@table @code 21473@item set mips abi @var{arg} 21474@kindex set mips abi 21475@cindex set ABI for @acronym{MIPS} 21476Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible 21477values of @var{arg} are: 21478 21479@table @samp 21480@item auto 21481The default ABI associated with the current binary (this is the 21482default). 21483@item o32 21484@item o64 21485@item n32 21486@item n64 21487@item eabi32 21488@item eabi64 21489@end table 21490 21491@item show mips abi 21492@kindex show mips abi 21493Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior. 21494 21495@item set mips compression @var{arg} 21496@kindex set mips compression 21497@cindex code compression, @acronym{MIPS} 21498Tell @value{GDBN} which @acronym{MIPS} compressed 21499@acronym{ISA, Instruction Set Architecture} encoding is used by the 21500inferior. @value{GDBN} uses this for code disassembly and other 21501internal interpretation purposes. This setting is only referred to 21502when no executable has been associated with the debugging session or 21503the executable does not provide information about the encoding it uses. 21504Otherwise this setting is automatically updated from information 21505provided by the executable. 21506 21507Possible values of @var{arg} are @samp{mips16} and @samp{micromips}. 21508The default compressed @acronym{ISA} encoding is @samp{mips16}, as 21509executables containing @acronym{MIPS16} code frequently are not 21510identified as such. 21511 21512This setting is ``sticky''; that is, it retains its value across 21513debugging sessions until reset either explicitly with this command or 21514implicitly from an executable. 21515 21516The compiler and/or assembler typically add symbol table annotations to 21517identify functions compiled for the @acronym{MIPS16} or 21518@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations 21519are present, @value{GDBN} uses them in preference to the global 21520compressed @acronym{ISA} encoding setting. 21521 21522@item show mips compression 21523@kindex show mips compression 21524Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by 21525@value{GDBN} to debug the inferior. 21526 21527@item set mipsfpu 21528@itemx show mipsfpu 21529@xref{MIPS Embedded, set mipsfpu}. 21530 21531@item set mips mask-address @var{arg} 21532@kindex set mips mask-address 21533@cindex @acronym{MIPS} addresses, masking 21534This command determines whether the most-significant 32 bits of 64-bit 21535@acronym{MIPS} addresses are masked off. The argument @var{arg} can be 21536@samp{on}, @samp{off}, or @samp{auto}. The latter is the default 21537setting, which lets @value{GDBN} determine the correct value. 21538 21539@item show mips mask-address 21540@kindex show mips mask-address 21541Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or 21542not. 21543 21544@item set remote-mips64-transfers-32bit-regs 21545@kindex set remote-mips64-transfers-32bit-regs 21546This command controls compatibility with 64-bit @acronym{MIPS} targets that 21547transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target 21548that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr}, 21549and 64 bits for other registers, set this option to @samp{on}. 21550 21551@item show remote-mips64-transfers-32bit-regs 21552@kindex show remote-mips64-transfers-32bit-regs 21553Show the current setting of compatibility with older @acronym{MIPS} 64 targets. 21554 21555@item set debug mips 21556@kindex set debug mips 21557This command turns on and off debugging messages for the @acronym{MIPS}-specific 21558target code in @value{GDBN}. 21559 21560@item show debug mips 21561@kindex show debug mips 21562Show the current setting of @acronym{MIPS} debugging messages. 21563@end table 21564 21565 21566@node HPPA 21567@subsection HPPA 21568@cindex HPPA support 21569 21570When @value{GDBN} is debugging the HP PA architecture, it provides the 21571following special commands: 21572 21573@table @code 21574@item set debug hppa 21575@kindex set debug hppa 21576This command determines whether HPPA architecture-specific debugging 21577messages are to be displayed. 21578 21579@item show debug hppa 21580Show whether HPPA debugging messages are displayed. 21581 21582@item maint print unwind @var{address} 21583@kindex maint print unwind@r{, HPPA} 21584This command displays the contents of the unwind table entry at the 21585given @var{address}. 21586 21587@end table 21588 21589 21590@node SPU 21591@subsection Cell Broadband Engine SPU architecture 21592@cindex Cell Broadband Engine 21593@cindex SPU 21594 21595When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture, 21596it provides the following special commands: 21597 21598@table @code 21599@item info spu event 21600@kindex info spu 21601Display SPU event facility status. Shows current event mask 21602and pending event status. 21603 21604@item info spu signal 21605Display SPU signal notification facility status. Shows pending 21606signal-control word and signal notification mode of both signal 21607notification channels. 21608 21609@item info spu mailbox 21610Display SPU mailbox facility status. Shows all pending entries, 21611in order of processing, in each of the SPU Write Outbound, 21612SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes. 21613 21614@item info spu dma 21615Display MFC DMA status. Shows all pending commands in the MFC 21616DMA queue. For each entry, opcode, tag, class IDs, effective 21617and local store addresses and transfer size are shown. 21618 21619@item info spu proxydma 21620Display MFC Proxy-DMA status. Shows all pending commands in the MFC 21621Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective 21622and local store addresses and transfer size are shown. 21623 21624@end table 21625 21626When @value{GDBN} is debugging a combined PowerPC/SPU application 21627on the Cell Broadband Engine, it provides in addition the following 21628special commands: 21629 21630@table @code 21631@item set spu stop-on-load @var{arg} 21632@kindex set spu 21633Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN} 21634will give control to the user when a new SPE thread enters its @code{main} 21635function. The default is @code{off}. 21636 21637@item show spu stop-on-load 21638@kindex show spu 21639Show whether to stop for new SPE threads. 21640 21641@item set spu auto-flush-cache @var{arg} 21642Set whether to automatically flush the software-managed cache. When set to 21643@code{on}, @value{GDBN} will automatically cause the SPE software-managed 21644cache to be flushed whenever SPE execution stops. This provides a consistent 21645view of PowerPC memory that is accessed via the cache. If an application 21646does not use the software-managed cache, this option has no effect. 21647 21648@item show spu auto-flush-cache 21649Show whether to automatically flush the software-managed cache. 21650 21651@end table 21652 21653@node PowerPC 21654@subsection PowerPC 21655@cindex PowerPC architecture 21656 21657When @value{GDBN} is debugging the PowerPC architecture, it provides a set of 21658pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point 21659numbers stored in the floating point registers. These values must be stored 21660in two consecutive registers, always starting at an even register like 21661@code{f0} or @code{f2}. 21662 21663The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed 21664by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0}, 21665@code{f2} and @code{f3} for @code{$dl1} and so on. 21666 21667For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit 21668wide Extended Floating Point Registers (@samp{f32} through @samp{f63}). 21669 21670@node Nios II 21671@subsection Nios II 21672@cindex Nios II architecture 21673 21674When @value{GDBN} is debugging the Nios II architecture, 21675it provides the following special commands: 21676 21677@table @code 21678 21679@item set debug nios2 21680@kindex set debug nios2 21681This command turns on and off debugging messages for the Nios II 21682target code in @value{GDBN}. 21683 21684@item show debug nios2 21685@kindex show debug nios2 21686Show the current setting of Nios II debugging messages. 21687@end table 21688 21689@node Controlling GDB 21690@chapter Controlling @value{GDBN} 21691 21692You can alter the way @value{GDBN} interacts with you by using the 21693@code{set} command. For commands controlling how @value{GDBN} displays 21694data, see @ref{Print Settings, ,Print Settings}. Other settings are 21695described here. 21696 21697@menu 21698* Prompt:: Prompt 21699* Editing:: Command editing 21700* Command History:: Command history 21701* Screen Size:: Screen size 21702* Numbers:: Numbers 21703* ABI:: Configuring the current ABI 21704* Auto-loading:: Automatically loading associated files 21705* Messages/Warnings:: Optional warnings and messages 21706* Debugging Output:: Optional messages about internal happenings 21707* Other Misc Settings:: Other Miscellaneous Settings 21708@end menu 21709 21710@node Prompt 21711@section Prompt 21712 21713@cindex prompt 21714 21715@value{GDBN} indicates its readiness to read a command by printing a string 21716called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You 21717can change the prompt string with the @code{set prompt} command. For 21718instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change 21719the prompt in one of the @value{GDBN} sessions so that you can always tell 21720which one you are talking to. 21721 21722@emph{Note:} @code{set prompt} does not add a space for you after the 21723prompt you set. This allows you to set a prompt which ends in a space 21724or a prompt that does not. 21725 21726@table @code 21727@kindex set prompt 21728@item set prompt @var{newprompt} 21729Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth. 21730 21731@kindex show prompt 21732@item show prompt 21733Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}} 21734@end table 21735 21736Versions of @value{GDBN} that ship with Python scripting enabled have 21737prompt extensions. The commands for interacting with these extensions 21738are: 21739 21740@table @code 21741@kindex set extended-prompt 21742@item set extended-prompt @var{prompt} 21743Set an extended prompt that allows for substitutions. 21744@xref{gdb.prompt}, for a list of escape sequences that can be used for 21745substitution. Any escape sequences specified as part of the prompt 21746string are replaced with the corresponding strings each time the prompt 21747is displayed. 21748 21749For example: 21750 21751@smallexample 21752set extended-prompt Current working directory: \w (gdb) 21753@end smallexample 21754 21755Note that when an extended-prompt is set, it takes control of the 21756@var{prompt_hook} hook. @xref{prompt_hook}, for further information. 21757 21758@kindex show extended-prompt 21759@item show extended-prompt 21760Prints the extended prompt. Any escape sequences specified as part of 21761the prompt string with @code{set extended-prompt}, are replaced with the 21762corresponding strings each time the prompt is displayed. 21763@end table 21764 21765@node Editing 21766@section Command Editing 21767@cindex readline 21768@cindex command line editing 21769 21770@value{GDBN} reads its input commands via the @dfn{Readline} interface. This 21771@sc{gnu} library provides consistent behavior for programs which provide a 21772command line interface to the user. Advantages are @sc{gnu} Emacs-style 21773or @dfn{vi}-style inline editing of commands, @code{csh}-like history 21774substitution, and a storage and recall of command history across 21775debugging sessions. 21776 21777You may control the behavior of command line editing in @value{GDBN} with the 21778command @code{set}. 21779 21780@table @code 21781@kindex set editing 21782@cindex editing 21783@item set editing 21784@itemx set editing on 21785Enable command line editing (enabled by default). 21786 21787@item set editing off 21788Disable command line editing. 21789 21790@kindex show editing 21791@item show editing 21792Show whether command line editing is enabled. 21793@end table 21794 21795@ifset SYSTEM_READLINE 21796@xref{Command Line Editing, , , rluserman, GNU Readline Library}, 21797@end ifset 21798@ifclear SYSTEM_READLINE 21799@xref{Command Line Editing}, 21800@end ifclear 21801for more details about the Readline 21802interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are 21803encouraged to read that chapter. 21804 21805@node Command History 21806@section Command History 21807@cindex command history 21808 21809@value{GDBN} can keep track of the commands you type during your 21810debugging sessions, so that you can be certain of precisely what 21811happened. Use these commands to manage the @value{GDBN} command 21812history facility. 21813 21814@value{GDBN} uses the @sc{gnu} History library, a part of the Readline 21815package, to provide the history facility. 21816@ifset SYSTEM_READLINE 21817@xref{Using History Interactively, , , history, GNU History Library}, 21818@end ifset 21819@ifclear SYSTEM_READLINE 21820@xref{Using History Interactively}, 21821@end ifclear 21822for the detailed description of the History library. 21823 21824To issue a command to @value{GDBN} without affecting certain aspects of 21825the state which is seen by users, prefix it with @samp{server } 21826(@pxref{Server Prefix}). This 21827means that this command will not affect the command history, nor will it 21828affect @value{GDBN}'s notion of which command to repeat if @key{RET} is 21829pressed on a line by itself. 21830 21831@cindex @code{server}, command prefix 21832The server prefix does not affect the recording of values into the value 21833history; to print a value without recording it into the value history, 21834use the @code{output} command instead of the @code{print} command. 21835 21836Here is the description of @value{GDBN} commands related to command 21837history. 21838 21839@table @code 21840@cindex history substitution 21841@cindex history file 21842@kindex set history filename 21843@cindex @env{GDBHISTFILE}, environment variable 21844@item set history filename @var{fname} 21845Set the name of the @value{GDBN} command history file to @var{fname}. 21846This is the file where @value{GDBN} reads an initial command history 21847list, and where it writes the command history from this session when it 21848exits. You can access this list through history expansion or through 21849the history command editing characters listed below. This file defaults 21850to the value of the environment variable @code{GDBHISTFILE}, or to 21851@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable 21852is not set. 21853 21854@cindex save command history 21855@kindex set history save 21856@item set history save 21857@itemx set history save on 21858Record command history in a file, whose name may be specified with the 21859@code{set history filename} command. By default, this option is disabled. 21860 21861@item set history save off 21862Stop recording command history in a file. 21863 21864@cindex history size 21865@kindex set history size 21866@cindex @env{HISTSIZE}, environment variable 21867@item set history size @var{size} 21868@itemx set history size unlimited 21869Set the number of commands which @value{GDBN} keeps in its history list. 21870This defaults to the value of the environment variable 21871@code{HISTSIZE}, or to 256 if this variable is not set. If @var{size} 21872is @code{unlimited}, the number of commands @value{GDBN} keeps in the 21873history list is unlimited. 21874@end table 21875 21876History expansion assigns special meaning to the character @kbd{!}. 21877@ifset SYSTEM_READLINE 21878@xref{Event Designators, , , history, GNU History Library}, 21879@end ifset 21880@ifclear SYSTEM_READLINE 21881@xref{Event Designators}, 21882@end ifclear 21883for more details. 21884 21885@cindex history expansion, turn on/off 21886Since @kbd{!} is also the logical not operator in C, history expansion 21887is off by default. If you decide to enable history expansion with the 21888@code{set history expansion on} command, you may sometimes need to 21889follow @kbd{!} (when it is used as logical not, in an expression) with 21890a space or a tab to prevent it from being expanded. The readline 21891history facilities do not attempt substitution on the strings 21892@kbd{!=} and @kbd{!(}, even when history expansion is enabled. 21893 21894The commands to control history expansion are: 21895 21896@table @code 21897@item set history expansion on 21898@itemx set history expansion 21899@kindex set history expansion 21900Enable history expansion. History expansion is off by default. 21901 21902@item set history expansion off 21903Disable history expansion. 21904 21905@c @group 21906@kindex show history 21907@item show history 21908@itemx show history filename 21909@itemx show history save 21910@itemx show history size 21911@itemx show history expansion 21912These commands display the state of the @value{GDBN} history parameters. 21913@code{show history} by itself displays all four states. 21914@c @end group 21915@end table 21916 21917@table @code 21918@kindex show commands 21919@cindex show last commands 21920@cindex display command history 21921@item show commands 21922Display the last ten commands in the command history. 21923 21924@item show commands @var{n} 21925Print ten commands centered on command number @var{n}. 21926 21927@item show commands + 21928Print ten commands just after the commands last printed. 21929@end table 21930 21931@node Screen Size 21932@section Screen Size 21933@cindex size of screen 21934@cindex pauses in output 21935 21936Certain commands to @value{GDBN} may produce large amounts of 21937information output to the screen. To help you read all of it, 21938@value{GDBN} pauses and asks you for input at the end of each page of 21939output. Type @key{RET} when you want to continue the output, or @kbd{q} 21940to discard the remaining output. Also, the screen width setting 21941determines when to wrap lines of output. Depending on what is being 21942printed, @value{GDBN} tries to break the line at a readable place, 21943rather than simply letting it overflow onto the following line. 21944 21945Normally @value{GDBN} knows the size of the screen from the terminal 21946driver software. For example, on Unix @value{GDBN} uses the termcap data base 21947together with the value of the @code{TERM} environment variable and the 21948@code{stty rows} and @code{stty cols} settings. If this is not correct, 21949you can override it with the @code{set height} and @code{set 21950width} commands: 21951 21952@table @code 21953@kindex set height 21954@kindex set width 21955@kindex show width 21956@kindex show height 21957@item set height @var{lpp} 21958@itemx set height unlimited 21959@itemx show height 21960@itemx set width @var{cpl} 21961@itemx set width unlimited 21962@itemx show width 21963These @code{set} commands specify a screen height of @var{lpp} lines and 21964a screen width of @var{cpl} characters. The associated @code{show} 21965commands display the current settings. 21966 21967If you specify a height of either @code{unlimited} or zero lines, 21968@value{GDBN} does not pause during output no matter how long the 21969output is. This is useful if output is to a file or to an editor 21970buffer. 21971 21972Likewise, you can specify @samp{set width unlimited} or @samp{set 21973width 0} to prevent @value{GDBN} from wrapping its output. 21974 21975@item set pagination on 21976@itemx set pagination off 21977@kindex set pagination 21978Turn the output pagination on or off; the default is on. Turning 21979pagination off is the alternative to @code{set height unlimited}. Note that 21980running @value{GDBN} with the @option{--batch} option (@pxref{Mode 21981Options, -batch}) also automatically disables pagination. 21982 21983@item show pagination 21984@kindex show pagination 21985Show the current pagination mode. 21986@end table 21987 21988@node Numbers 21989@section Numbers 21990@cindex number representation 21991@cindex entering numbers 21992 21993You can always enter numbers in octal, decimal, or hexadecimal in 21994@value{GDBN} by the usual conventions: octal numbers begin with 21995@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers 21996begin with @samp{0x}. Numbers that neither begin with @samp{0} or 21997@samp{0x}, nor end with a @samp{.} are, by default, entered in base 2199810; likewise, the default display for numbers---when no particular 21999format is specified---is base 10. You can change the default base for 22000both input and output with the commands described below. 22001 22002@table @code 22003@kindex set input-radix 22004@item set input-radix @var{base} 22005Set the default base for numeric input. Supported choices 22006for @var{base} are decimal 8, 10, or 16. @var{base} must itself be 22007specified either unambiguously or using the current input radix; for 22008example, any of 22009 22010@smallexample 22011set input-radix 012 22012set input-radix 10. 22013set input-radix 0xa 22014@end smallexample 22015 22016@noindent 22017sets the input base to decimal. On the other hand, @samp{set input-radix 10} 22018leaves the input radix unchanged, no matter what it was, since 22019@samp{10}, being without any leading or trailing signs of its base, is 22020interpreted in the current radix. Thus, if the current radix is 16, 22021@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't 22022change the radix. 22023 22024@kindex set output-radix 22025@item set output-radix @var{base} 22026Set the default base for numeric display. Supported choices 22027for @var{base} are decimal 8, 10, or 16. @var{base} must itself be 22028specified either unambiguously or using the current input radix. 22029 22030@kindex show input-radix 22031@item show input-radix 22032Display the current default base for numeric input. 22033 22034@kindex show output-radix 22035@item show output-radix 22036Display the current default base for numeric display. 22037 22038@item set radix @r{[}@var{base}@r{]} 22039@itemx show radix 22040@kindex set radix 22041@kindex show radix 22042These commands set and show the default base for both input and output 22043of numbers. @code{set radix} sets the radix of input and output to 22044the same base; without an argument, it resets the radix back to its 22045default value of 10. 22046 22047@end table 22048 22049@node ABI 22050@section Configuring the Current ABI 22051 22052@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your 22053application automatically. However, sometimes you need to override its 22054conclusions. Use these commands to manage @value{GDBN}'s view of the 22055current ABI. 22056 22057@cindex OS ABI 22058@kindex set osabi 22059@kindex show osabi 22060@cindex Newlib OS ABI and its influence on the longjmp handling 22061 22062One @value{GDBN} configuration can debug binaries for multiple operating 22063system targets, either via remote debugging or native emulation. 22064@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use, 22065but you can override its conclusion using the @code{set osabi} command. 22066One example where this is useful is in debugging of binaries which use 22067an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does 22068not have the same identifying marks that the standard C library for your 22069platform provides. 22070 22071When @value{GDBN} is debugging the AArch64 architecture, it provides a 22072``Newlib'' OS ABI. This is useful for handling @code{setjmp} and 22073@code{longjmp} when debugging binaries that use the @sc{newlib} C library. 22074The ``Newlib'' OS ABI can be selected by @code{set osabi Newlib}. 22075 22076@table @code 22077@item show osabi 22078Show the OS ABI currently in use. 22079 22080@item set osabi 22081With no argument, show the list of registered available OS ABI's. 22082 22083@item set osabi @var{abi} 22084Set the current OS ABI to @var{abi}. 22085@end table 22086 22087@cindex float promotion 22088 22089Generally, the way that an argument of type @code{float} is passed to a 22090function depends on whether the function is prototyped. For a prototyped 22091(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged, 22092according to the architecture's convention for @code{float}. For unprototyped 22093(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type 22094@code{double} and then passed. 22095 22096Unfortunately, some forms of debug information do not reliably indicate whether 22097a function is prototyped. If @value{GDBN} calls a function that is not marked 22098as prototyped, it consults @kbd{set coerce-float-to-double}. 22099 22100@table @code 22101@kindex set coerce-float-to-double 22102@item set coerce-float-to-double 22103@itemx set coerce-float-to-double on 22104Arguments of type @code{float} will be promoted to @code{double} when passed 22105to an unprototyped function. This is the default setting. 22106 22107@item set coerce-float-to-double off 22108Arguments of type @code{float} will be passed directly to unprototyped 22109functions. 22110 22111@kindex show coerce-float-to-double 22112@item show coerce-float-to-double 22113Show the current setting of promoting @code{float} to @code{double}. 22114@end table 22115 22116@kindex set cp-abi 22117@kindex show cp-abi 22118@value{GDBN} needs to know the ABI used for your program's C@t{++} 22119objects. The correct C@t{++} ABI depends on which C@t{++} compiler was 22120used to build your application. @value{GDBN} only fully supports 22121programs with a single C@t{++} ABI; if your program contains code using 22122multiple C@t{++} ABI's or if @value{GDBN} can not identify your 22123program's ABI correctly, you can tell @value{GDBN} which ABI to use. 22124Currently supported ABI's include ``gnu-v2'', for @code{g++} versions 22125before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and 22126``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may 22127use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is 22128``auto''. 22129 22130@table @code 22131@item show cp-abi 22132Show the C@t{++} ABI currently in use. 22133 22134@item set cp-abi 22135With no argument, show the list of supported C@t{++} ABI's. 22136 22137@item set cp-abi @var{abi} 22138@itemx set cp-abi auto 22139Set the current C@t{++} ABI to @var{abi}, or return to automatic detection. 22140@end table 22141 22142@node Auto-loading 22143@section Automatically loading associated files 22144@cindex auto-loading 22145 22146@value{GDBN} sometimes reads files with commands and settings automatically, 22147without being explicitly told so by the user. We call this feature 22148@dfn{auto-loading}. While auto-loading is useful for automatically adapting 22149@value{GDBN} to the needs of your project, it can sometimes produce unexpected 22150results or introduce security risks (e.g., if the file comes from untrusted 22151sources). 22152 22153@menu 22154* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit} 22155* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db} 22156 22157* Auto-loading safe path:: @samp{set/show/info auto-load safe-path} 22158* Auto-loading verbose mode:: @samp{set/show debug auto-load} 22159@end menu 22160 22161There are various kinds of files @value{GDBN} can automatically load. 22162In addition to these files, @value{GDBN} supports auto-loading code written 22163in various extension languages. @xref{Auto-loading extensions}. 22164 22165Note that loading of these associated files (including the local @file{.gdbinit} 22166file) requires accordingly configured @code{auto-load safe-path} 22167(@pxref{Auto-loading safe path}). 22168 22169For these reasons, @value{GDBN} includes commands and options to let you 22170control when to auto-load files and which files should be auto-loaded. 22171 22172@table @code 22173@anchor{set auto-load off} 22174@kindex set auto-load off 22175@item set auto-load off 22176Globally disable loading of all auto-loaded files. 22177You may want to use this command with the @samp{-iex} option 22178(@pxref{Option -init-eval-command}) such as: 22179@smallexample 22180$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile} 22181@end smallexample 22182 22183Be aware that system init file (@pxref{System-wide configuration}) 22184and init files from your home directory (@pxref{Home Directory Init File}) 22185still get read (as they come from generally trusted directories). 22186To prevent @value{GDBN} from auto-loading even those init files, use the 22187@option{-nx} option (@pxref{Mode Options}), in addition to 22188@code{set auto-load no}. 22189 22190@anchor{show auto-load} 22191@kindex show auto-load 22192@item show auto-load 22193Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled 22194or disabled. 22195 22196@smallexample 22197(gdb) show auto-load 22198gdb-scripts: Auto-loading of canned sequences of commands scripts is on. 22199libthread-db: Auto-loading of inferior specific libthread_db is on. 22200local-gdbinit: Auto-loading of .gdbinit script from current directory 22201 is on. 22202python-scripts: Auto-loading of Python scripts is on. 22203safe-path: List of directories from which it is safe to auto-load files 22204 is $debugdir:$datadir/auto-load. 22205scripts-directory: List of directories from which to load auto-loaded scripts 22206 is $debugdir:$datadir/auto-load. 22207@end smallexample 22208 22209@anchor{info auto-load} 22210@kindex info auto-load 22211@item info auto-load 22212Print whether each specific @samp{auto-load} file(s) have been auto-loaded or 22213not. 22214 22215@smallexample 22216(gdb) info auto-load 22217gdb-scripts: 22218Loaded Script 22219Yes /home/user/gdb/gdb-gdb.gdb 22220libthread-db: No auto-loaded libthread-db. 22221local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been 22222 loaded. 22223python-scripts: 22224Loaded Script 22225Yes /home/user/gdb/gdb-gdb.py 22226@end smallexample 22227@end table 22228 22229These are @value{GDBN} control commands for the auto-loading: 22230 22231@multitable @columnfractions .5 .5 22232@item @xref{set auto-load off}. 22233@tab Disable auto-loading globally. 22234@item @xref{show auto-load}. 22235@tab Show setting of all kinds of files. 22236@item @xref{info auto-load}. 22237@tab Show state of all kinds of files. 22238@item @xref{set auto-load gdb-scripts}. 22239@tab Control for @value{GDBN} command scripts. 22240@item @xref{show auto-load gdb-scripts}. 22241@tab Show setting of @value{GDBN} command scripts. 22242@item @xref{info auto-load gdb-scripts}. 22243@tab Show state of @value{GDBN} command scripts. 22244@item @xref{set auto-load python-scripts}. 22245@tab Control for @value{GDBN} Python scripts. 22246@item @xref{show auto-load python-scripts}. 22247@tab Show setting of @value{GDBN} Python scripts. 22248@item @xref{info auto-load python-scripts}. 22249@tab Show state of @value{GDBN} Python scripts. 22250@item @xref{set auto-load scripts-directory}. 22251@tab Control for @value{GDBN} auto-loaded scripts location. 22252@item @xref{show auto-load scripts-directory}. 22253@tab Show @value{GDBN} auto-loaded scripts location. 22254@item @xref{set auto-load local-gdbinit}. 22255@tab Control for init file in the current directory. 22256@item @xref{show auto-load local-gdbinit}. 22257@tab Show setting of init file in the current directory. 22258@item @xref{info auto-load local-gdbinit}. 22259@tab Show state of init file in the current directory. 22260@item @xref{set auto-load libthread-db}. 22261@tab Control for thread debugging library. 22262@item @xref{show auto-load libthread-db}. 22263@tab Show setting of thread debugging library. 22264@item @xref{info auto-load libthread-db}. 22265@tab Show state of thread debugging library. 22266@item @xref{set auto-load safe-path}. 22267@tab Control directories trusted for automatic loading. 22268@item @xref{show auto-load safe-path}. 22269@tab Show directories trusted for automatic loading. 22270@item @xref{add-auto-load-safe-path}. 22271@tab Add directory trusted for automatic loading. 22272@end multitable 22273 22274@node Init File in the Current Directory 22275@subsection Automatically loading init file in the current directory 22276@cindex auto-loading init file in the current directory 22277 22278By default, @value{GDBN} reads and executes the canned sequences of commands 22279from init file (if any) in the current working directory, 22280see @ref{Init File in the Current Directory during Startup}. 22281 22282Note that loading of this local @file{.gdbinit} file also requires accordingly 22283configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}). 22284 22285@table @code 22286@anchor{set auto-load local-gdbinit} 22287@kindex set auto-load local-gdbinit 22288@item set auto-load local-gdbinit [on|off] 22289Enable or disable the auto-loading of canned sequences of commands 22290(@pxref{Sequences}) found in init file in the current directory. 22291 22292@anchor{show auto-load local-gdbinit} 22293@kindex show auto-load local-gdbinit 22294@item show auto-load local-gdbinit 22295Show whether auto-loading of canned sequences of commands from init file in the 22296current directory is enabled or disabled. 22297 22298@anchor{info auto-load local-gdbinit} 22299@kindex info auto-load local-gdbinit 22300@item info auto-load local-gdbinit 22301Print whether canned sequences of commands from init file in the 22302current directory have been auto-loaded. 22303@end table 22304 22305@node libthread_db.so.1 file 22306@subsection Automatically loading thread debugging library 22307@cindex auto-loading libthread_db.so.1 22308 22309This feature is currently present only on @sc{gnu}/Linux native hosts. 22310 22311@value{GDBN} reads in some cases thread debugging library from places specific 22312to the inferior (@pxref{set libthread-db-search-path}). 22313 22314The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed 22315without checking this @samp{set auto-load libthread-db} switch as system 22316libraries have to be trusted in general. In all other cases of 22317@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set 22318auto-load libthread-db} is enabled before trying to open such thread debugging 22319library. 22320 22321Note that loading of this debugging library also requires accordingly configured 22322@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 22323 22324@table @code 22325@anchor{set auto-load libthread-db} 22326@kindex set auto-load libthread-db 22327@item set auto-load libthread-db [on|off] 22328Enable or disable the auto-loading of inferior specific thread debugging library. 22329 22330@anchor{show auto-load libthread-db} 22331@kindex show auto-load libthread-db 22332@item show auto-load libthread-db 22333Show whether auto-loading of inferior specific thread debugging library is 22334enabled or disabled. 22335 22336@anchor{info auto-load libthread-db} 22337@kindex info auto-load libthread-db 22338@item info auto-load libthread-db 22339Print the list of all loaded inferior specific thread debugging libraries and 22340for each such library print list of inferior @var{pid}s using it. 22341@end table 22342 22343@node Auto-loading safe path 22344@subsection Security restriction for auto-loading 22345@cindex auto-loading safe-path 22346 22347As the files of inferior can come from untrusted source (such as submitted by 22348an application user) @value{GDBN} does not always load any files automatically. 22349@value{GDBN} provides the @samp{set auto-load safe-path} setting to list 22350directories trusted for loading files not explicitly requested by user. 22351Each directory can also be a shell wildcard pattern. 22352 22353If the path is not set properly you will see a warning and the file will not 22354get loaded: 22355 22356@smallexample 22357$ ./gdb -q ./gdb 22358Reading symbols from /home/user/gdb/gdb...done. 22359warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been 22360 declined by your `auto-load safe-path' set 22361 to "$debugdir:$datadir/auto-load". 22362warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been 22363 declined by your `auto-load safe-path' set 22364 to "$debugdir:$datadir/auto-load". 22365@end smallexample 22366 22367@noindent 22368To instruct @value{GDBN} to go ahead and use the init files anyway, 22369invoke @value{GDBN} like this: 22370 22371@smallexample 22372$ gdb -q -iex "set auto-load safe-path /home/user/gdb" ./gdb 22373@end smallexample 22374 22375The list of trusted directories is controlled by the following commands: 22376 22377@table @code 22378@anchor{set auto-load safe-path} 22379@kindex set auto-load safe-path 22380@item set auto-load safe-path @r{[}@var{directories}@r{]} 22381Set the list of directories (and their subdirectories) trusted for automatic 22382loading and execution of scripts. You can also enter a specific trusted file. 22383Each directory can also be a shell wildcard pattern; wildcards do not match 22384directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch} 22385(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}). 22386If you omit @var{directories}, @samp{auto-load safe-path} will be reset to 22387its default value as specified during @value{GDBN} compilation. 22388 22389The list of directories uses path separator (@samp{:} on GNU and Unix 22390systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 22391to the @env{PATH} environment variable. 22392 22393@anchor{show auto-load safe-path} 22394@kindex show auto-load safe-path 22395@item show auto-load safe-path 22396Show the list of directories trusted for automatic loading and execution of 22397scripts. 22398 22399@anchor{add-auto-load-safe-path} 22400@kindex add-auto-load-safe-path 22401@item add-auto-load-safe-path 22402Add an entry (or list of entries) the list of directories trusted for automatic 22403loading and execution of scripts. Multiple entries may be delimited by the 22404host platform path separator in use. 22405@end table 22406 22407This variable defaults to what @code{--with-auto-load-dir} has been configured 22408to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir} 22409substitution applies the same as for @ref{set auto-load scripts-directory}. 22410The default @code{set auto-load safe-path} value can be also overriden by 22411@value{GDBN} configuration option @option{--with-auto-load-safe-path}. 22412 22413Setting this variable to @file{/} disables this security protection, 22414corresponding @value{GDBN} configuration option is 22415@option{--without-auto-load-safe-path}. 22416This variable is supposed to be set to the system directories writable by the 22417system superuser only. Users can add their source directories in init files in 22418their home directories (@pxref{Home Directory Init File}). See also deprecated 22419init file in the current directory 22420(@pxref{Init File in the Current Directory during Startup}). 22421 22422To force @value{GDBN} to load the files it declined to load in the previous 22423example, you could use one of the following ways: 22424 22425@table @asis 22426@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb} 22427Specify this trusted directory (or a file) as additional component of the list. 22428You have to specify also any existing directories displayed by 22429by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example). 22430 22431@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}} 22432Specify this directory as in the previous case but just for a single 22433@value{GDBN} session. 22434 22435@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}} 22436Disable auto-loading safety for a single @value{GDBN} session. 22437This assumes all the files you debug during this @value{GDBN} session will come 22438from trusted sources. 22439 22440@item @kbd{./configure --without-auto-load-safe-path} 22441During compilation of @value{GDBN} you may disable any auto-loading safety. 22442This assumes all the files you will ever debug with this @value{GDBN} come from 22443trusted sources. 22444@end table 22445 22446On the other hand you can also explicitly forbid automatic files loading which 22447also suppresses any such warning messages: 22448 22449@table @asis 22450@item @kbd{gdb -iex "set auto-load no" @dots{}} 22451You can use @value{GDBN} command-line option for a single @value{GDBN} session. 22452 22453@item @file{~/.gdbinit}: @samp{set auto-load no} 22454Disable auto-loading globally for the user 22455(@pxref{Home Directory Init File}). While it is improbable, you could also 22456use system init file instead (@pxref{System-wide configuration}). 22457@end table 22458 22459This setting applies to the file names as entered by user. If no entry matches 22460@value{GDBN} tries as a last resort to also resolve all the file names into 22461their canonical form (typically resolving symbolic links) and compare the 22462entries again. @value{GDBN} already canonicalizes most of the filenames on its 22463own before starting the comparison so a canonical form of directories is 22464recommended to be entered. 22465 22466@node Auto-loading verbose mode 22467@subsection Displaying files tried for auto-load 22468@cindex auto-loading verbose mode 22469 22470For better visibility of all the file locations where you can place scripts to 22471be auto-loaded with inferior --- or to protect yourself against accidental 22472execution of untrusted scripts --- @value{GDBN} provides a feature for printing 22473all the files attempted to be loaded. Both existing and non-existing files may 22474be printed. 22475 22476For example the list of directories from which it is safe to auto-load files 22477(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which 22478may not be too obvious while setting it up. 22479 22480@smallexample 22481(gdb) set debug auto-load on 22482(gdb) file ~/src/t/true 22483auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb" 22484 for objfile "/tmp/true". 22485auto-load: Updating directories of "/usr:/opt". 22486auto-load: Using directory "/usr". 22487auto-load: Using directory "/opt". 22488warning: File "/tmp/true-gdb.gdb" auto-loading has been declined 22489 by your `auto-load safe-path' set to "/usr:/opt". 22490@end smallexample 22491 22492@table @code 22493@anchor{set debug auto-load} 22494@kindex set debug auto-load 22495@item set debug auto-load [on|off] 22496Set whether to print the filenames attempted to be auto-loaded. 22497 22498@anchor{show debug auto-load} 22499@kindex show debug auto-load 22500@item show debug auto-load 22501Show whether printing of the filenames attempted to be auto-loaded is turned 22502on or off. 22503@end table 22504 22505@node Messages/Warnings 22506@section Optional Warnings and Messages 22507 22508@cindex verbose operation 22509@cindex optional warnings 22510By default, @value{GDBN} is silent about its inner workings. If you are 22511running on a slow machine, you may want to use the @code{set verbose} 22512command. This makes @value{GDBN} tell you when it does a lengthy 22513internal operation, so you will not think it has crashed. 22514 22515Currently, the messages controlled by @code{set verbose} are those 22516which announce that the symbol table for a source file is being read; 22517see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}. 22518 22519@table @code 22520@kindex set verbose 22521@item set verbose on 22522Enables @value{GDBN} output of certain informational messages. 22523 22524@item set verbose off 22525Disables @value{GDBN} output of certain informational messages. 22526 22527@kindex show verbose 22528@item show verbose 22529Displays whether @code{set verbose} is on or off. 22530@end table 22531 22532By default, if @value{GDBN} encounters bugs in the symbol table of an 22533object file, it is silent; but if you are debugging a compiler, you may 22534find this information useful (@pxref{Symbol Errors, ,Errors Reading 22535Symbol Files}). 22536 22537@table @code 22538 22539@kindex set complaints 22540@item set complaints @var{limit} 22541Permits @value{GDBN} to output @var{limit} complaints about each type of 22542unusual symbols before becoming silent about the problem. Set 22543@var{limit} to zero to suppress all complaints; set it to a large number 22544to prevent complaints from being suppressed. 22545 22546@kindex show complaints 22547@item show complaints 22548Displays how many symbol complaints @value{GDBN} is permitted to produce. 22549 22550@end table 22551 22552@anchor{confirmation requests} 22553By default, @value{GDBN} is cautious, and asks what sometimes seems to be a 22554lot of stupid questions to confirm certain commands. For example, if 22555you try to run a program which is already running: 22556 22557@smallexample 22558(@value{GDBP}) run 22559The program being debugged has been started already. 22560Start it from the beginning? (y or n) 22561@end smallexample 22562 22563If you are willing to unflinchingly face the consequences of your own 22564commands, you can disable this ``feature'': 22565 22566@table @code 22567 22568@kindex set confirm 22569@cindex flinching 22570@cindex confirmation 22571@cindex stupid questions 22572@item set confirm off 22573Disables confirmation requests. Note that running @value{GDBN} with 22574the @option{--batch} option (@pxref{Mode Options, -batch}) also 22575automatically disables confirmation requests. 22576 22577@item set confirm on 22578Enables confirmation requests (the default). 22579 22580@kindex show confirm 22581@item show confirm 22582Displays state of confirmation requests. 22583 22584@end table 22585 22586@cindex command tracing 22587If you need to debug user-defined commands or sourced files you may find it 22588useful to enable @dfn{command tracing}. In this mode each command will be 22589printed as it is executed, prefixed with one or more @samp{+} symbols, the 22590quantity denoting the call depth of each command. 22591 22592@table @code 22593@kindex set trace-commands 22594@cindex command scripts, debugging 22595@item set trace-commands on 22596Enable command tracing. 22597@item set trace-commands off 22598Disable command tracing. 22599@item show trace-commands 22600Display the current state of command tracing. 22601@end table 22602 22603@node Debugging Output 22604@section Optional Messages about Internal Happenings 22605@cindex optional debugging messages 22606 22607@value{GDBN} has commands that enable optional debugging messages from 22608various @value{GDBN} subsystems; normally these commands are of 22609interest to @value{GDBN} maintainers, or when reporting a bug. This 22610section documents those commands. 22611 22612@table @code 22613@kindex set exec-done-display 22614@item set exec-done-display 22615Turns on or off the notification of asynchronous commands' 22616completion. When on, @value{GDBN} will print a message when an 22617asynchronous command finishes its execution. The default is off. 22618@kindex show exec-done-display 22619@item show exec-done-display 22620Displays the current setting of asynchronous command completion 22621notification. 22622@kindex set debug 22623@cindex ARM AArch64 22624@item set debug aarch64 22625Turns on or off display of debugging messages related to ARM AArch64. 22626The default is off. 22627@kindex show debug 22628@item show debug aarch64 22629Displays the current state of displaying debugging messages related to 22630ARM AArch64. 22631@cindex gdbarch debugging info 22632@cindex architecture debugging info 22633@item set debug arch 22634Turns on or off display of gdbarch debugging info. The default is off 22635@item show debug arch 22636Displays the current state of displaying gdbarch debugging info. 22637@item set debug aix-solib 22638@cindex AIX shared library debugging 22639Control display of debugging messages from the AIX shared library 22640support module. The default is off. 22641@item show debug aix-thread 22642Show the current state of displaying AIX shared library debugging messages. 22643@item set debug aix-thread 22644@cindex AIX threads 22645Display debugging messages about inner workings of the AIX thread 22646module. 22647@item show debug aix-thread 22648Show the current state of AIX thread debugging info display. 22649@item set debug check-physname 22650@cindex physname 22651Check the results of the ``physname'' computation. When reading DWARF 22652debugging information for C@t{++}, @value{GDBN} attempts to compute 22653each entity's name. @value{GDBN} can do this computation in two 22654different ways, depending on exactly what information is present. 22655When enabled, this setting causes @value{GDBN} to compute the names 22656both ways and display any discrepancies. 22657@item show debug check-physname 22658Show the current state of ``physname'' checking. 22659@item set debug coff-pe-read 22660@cindex COFF/PE exported symbols 22661Control display of debugging messages related to reading of COFF/PE 22662exported symbols. The default is off. 22663@item show debug coff-pe-read 22664Displays the current state of displaying debugging messages related to 22665reading of COFF/PE exported symbols. 22666@item set debug dwarf2-die 22667@cindex DWARF2 DIEs 22668Dump DWARF2 DIEs after they are read in. 22669The value is the number of nesting levels to print. 22670A value of zero turns off the display. 22671@item show debug dwarf2-die 22672Show the current state of DWARF2 DIE debugging. 22673@item set debug dwarf2-read 22674@cindex DWARF2 Reading 22675Turns on or off display of debugging messages related to reading 22676DWARF debug info. The default is 0 (off). 22677A value of 1 provides basic information. 22678A value greater than 1 provides more verbose information. 22679@item show debug dwarf2-read 22680Show the current state of DWARF2 reader debugging. 22681@item set debug displaced 22682@cindex displaced stepping debugging info 22683Turns on or off display of @value{GDBN} debugging info for the 22684displaced stepping support. The default is off. 22685@item show debug displaced 22686Displays the current state of displaying @value{GDBN} debugging info 22687related to displaced stepping. 22688@item set debug event 22689@cindex event debugging info 22690Turns on or off display of @value{GDBN} event debugging info. The 22691default is off. 22692@item show debug event 22693Displays the current state of displaying @value{GDBN} event debugging 22694info. 22695@item set debug expression 22696@cindex expression debugging info 22697Turns on or off display of debugging info about @value{GDBN} 22698expression parsing. The default is off. 22699@item show debug expression 22700Displays the current state of displaying debugging info about 22701@value{GDBN} expression parsing. 22702@item set debug frame 22703@cindex frame debugging info 22704Turns on or off display of @value{GDBN} frame debugging info. The 22705default is off. 22706@item show debug frame 22707Displays the current state of displaying @value{GDBN} frame debugging 22708info. 22709@item set debug gnu-nat 22710@cindex @sc{gnu}/Hurd debug messages 22711Turns on or off debugging messages from the @sc{gnu}/Hurd debug support. 22712@item show debug gnu-nat 22713Show the current state of @sc{gnu}/Hurd debugging messages. 22714@item set debug infrun 22715@cindex inferior debugging info 22716Turns on or off display of @value{GDBN} debugging info for running the inferior. 22717The default is off. @file{infrun.c} contains GDB's runtime state machine used 22718for implementing operations such as single-stepping the inferior. 22719@item show debug infrun 22720Displays the current state of @value{GDBN} inferior debugging. 22721@item set debug jit 22722@cindex just-in-time compilation, debugging messages 22723Turns on or off debugging messages from JIT debug support. 22724@item show debug jit 22725Displays the current state of @value{GDBN} JIT debugging. 22726@item set debug lin-lwp 22727@cindex @sc{gnu}/Linux LWP debug messages 22728@cindex Linux lightweight processes 22729Turns on or off debugging messages from the Linux LWP debug support. 22730@item show debug lin-lwp 22731Show the current state of Linux LWP debugging messages. 22732@item set debug mach-o 22733@cindex Mach-O symbols processing 22734Control display of debugging messages related to Mach-O symbols 22735processing. The default is off. 22736@item show debug mach-o 22737Displays the current state of displaying debugging messages related to 22738reading of COFF/PE exported symbols. 22739@item set debug notification 22740@cindex remote async notification debugging info 22741Turns on or off debugging messages about remote async notification. 22742The default is off. 22743@item show debug notification 22744Displays the current state of remote async notification debugging messages. 22745@item set debug observer 22746@cindex observer debugging info 22747Turns on or off display of @value{GDBN} observer debugging. This 22748includes info such as the notification of observable events. 22749@item show debug observer 22750Displays the current state of observer debugging. 22751@item set debug overload 22752@cindex C@t{++} overload debugging info 22753Turns on or off display of @value{GDBN} C@t{++} overload debugging 22754info. This includes info such as ranking of functions, etc. The default 22755is off. 22756@item show debug overload 22757Displays the current state of displaying @value{GDBN} C@t{++} overload 22758debugging info. 22759@cindex expression parser, debugging info 22760@cindex debug expression parser 22761@item set debug parser 22762Turns on or off the display of expression parser debugging output. 22763Internally, this sets the @code{yydebug} variable in the expression 22764parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for 22765details. The default is off. 22766@item show debug parser 22767Show the current state of expression parser debugging. 22768@cindex packets, reporting on stdout 22769@cindex serial connections, debugging 22770@cindex debug remote protocol 22771@cindex remote protocol debugging 22772@cindex display remote packets 22773@item set debug remote 22774Turns on or off display of reports on all packets sent back and forth across 22775the serial line to the remote machine. The info is printed on the 22776@value{GDBN} standard output stream. The default is off. 22777@item show debug remote 22778Displays the state of display of remote packets. 22779@item set debug serial 22780Turns on or off display of @value{GDBN} serial debugging info. The 22781default is off. 22782@item show debug serial 22783Displays the current state of displaying @value{GDBN} serial debugging 22784info. 22785@item set debug solib-frv 22786@cindex FR-V shared-library debugging 22787Turns on or off debugging messages for FR-V shared-library code. 22788@item show debug solib-frv 22789Display the current state of FR-V shared-library code debugging 22790messages. 22791@item set debug symfile 22792@cindex symbol file functions 22793Turns on or off display of debugging messages related to symbol file functions. 22794The default is off. @xref{Files}. 22795@item show debug symfile 22796Show the current state of symbol file debugging messages. 22797@item set debug symtab-create 22798@cindex symbol table creation 22799Turns on or off display of debugging messages related to symbol table creation. 22800The default is 0 (off). 22801A value of 1 provides basic information. 22802A value greater than 1 provides more verbose information. 22803@item show debug symtab-create 22804Show the current state of symbol table creation debugging. 22805@item set debug target 22806@cindex target debugging info 22807Turns on or off display of @value{GDBN} target debugging info. This info 22808includes what is going on at the target level of GDB, as it happens. The 22809default is 0. Set it to 1 to track events, and to 2 to also track the 22810value of large memory transfers. Changes to this flag do not take effect 22811until the next time you connect to a target or use the @code{run} command. 22812@item show debug target 22813Displays the current state of displaying @value{GDBN} target debugging 22814info. 22815@item set debug timestamp 22816@cindex timestampping debugging info 22817Turns on or off display of timestamps with @value{GDBN} debugging info. 22818When enabled, seconds and microseconds are displayed before each debugging 22819message. 22820@item show debug timestamp 22821Displays the current state of displaying timestamps with @value{GDBN} 22822debugging info. 22823@item set debugvarobj 22824@cindex variable object debugging info 22825Turns on or off display of @value{GDBN} variable object debugging 22826info. The default is off. 22827@item show debugvarobj 22828Displays the current state of displaying @value{GDBN} variable object 22829debugging info. 22830@item set debug xml 22831@cindex XML parser debugging 22832Turns on or off debugging messages for built-in XML parsers. 22833@item show debug xml 22834Displays the current state of XML debugging messages. 22835@end table 22836 22837@node Other Misc Settings 22838@section Other Miscellaneous Settings 22839@cindex miscellaneous settings 22840 22841@table @code 22842@kindex set interactive-mode 22843@item set interactive-mode 22844If @code{on}, forces @value{GDBN} to assume that GDB was started 22845in a terminal. In practice, this means that @value{GDBN} should wait 22846for the user to answer queries generated by commands entered at 22847the command prompt. If @code{off}, forces @value{GDBN} to operate 22848in the opposite mode, and it uses the default answers to all queries. 22849If @code{auto} (the default), @value{GDBN} tries to determine whether 22850its standard input is a terminal, and works in interactive-mode if it 22851is, non-interactively otherwise. 22852 22853In the vast majority of cases, the debugger should be able to guess 22854correctly which mode should be used. But this setting can be useful 22855in certain specific cases, such as running a MinGW @value{GDBN} 22856inside a cygwin window. 22857 22858@kindex show interactive-mode 22859@item show interactive-mode 22860Displays whether the debugger is operating in interactive mode or not. 22861@end table 22862 22863@node Extending GDB 22864@chapter Extending @value{GDBN} 22865@cindex extending GDB 22866 22867@value{GDBN} provides several mechanisms for extension. 22868@value{GDBN} also provides the ability to automatically load 22869extensions when it reads a file for debugging. This allows the 22870user to automatically customize @value{GDBN} for the program 22871being debugged. 22872 22873@menu 22874* Sequences:: Canned Sequences of @value{GDBN} Commands 22875* Python:: Extending @value{GDBN} using Python 22876* Auto-loading extensions:: Automatically loading extensions 22877* Aliases:: Creating new spellings of existing commands 22878@end menu 22879 22880To facilitate the use of extension languages, @value{GDBN} is capable 22881of evaluating the contents of a file. When doing so, @value{GDBN} 22882can recognize which extension language is being used by looking at 22883the filename extension. Files with an unrecognized filename extension 22884are always treated as a @value{GDBN} Command Files. 22885@xref{Command Files,, Command files}. 22886 22887You can control how @value{GDBN} evaluates these files with the following 22888setting: 22889 22890@table @code 22891@kindex set script-extension 22892@kindex show script-extension 22893@item set script-extension off 22894All scripts are always evaluated as @value{GDBN} Command Files. 22895 22896@item set script-extension soft 22897The debugger determines the scripting language based on filename 22898extension. If this scripting language is supported, @value{GDBN} 22899evaluates the script using that language. Otherwise, it evaluates 22900the file as a @value{GDBN} Command File. 22901 22902@item set script-extension strict 22903The debugger determines the scripting language based on filename 22904extension, and evaluates the script using that language. If the 22905language is not supported, then the evaluation fails. 22906 22907@item show script-extension 22908Display the current value of the @code{script-extension} option. 22909 22910@end table 22911 22912@node Sequences 22913@section Canned Sequences of Commands 22914 22915Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint 22916Command Lists}), @value{GDBN} provides two ways to store sequences of 22917commands for execution as a unit: user-defined commands and command 22918files. 22919 22920@menu 22921* Define:: How to define your own commands 22922* Hooks:: Hooks for user-defined commands 22923* Command Files:: How to write scripts of commands to be stored in a file 22924* Output:: Commands for controlled output 22925* Auto-loading sequences:: Controlling auto-loaded command files 22926@end menu 22927 22928@node Define 22929@subsection User-defined Commands 22930 22931@cindex user-defined command 22932@cindex arguments, to user-defined commands 22933A @dfn{user-defined command} is a sequence of @value{GDBN} commands to 22934which you assign a new name as a command. This is done with the 22935@code{define} command. User commands may accept up to 10 arguments 22936separated by whitespace. Arguments are accessed within the user command 22937via @code{$arg0@dots{}$arg9}. A trivial example: 22938 22939@smallexample 22940define adder 22941 print $arg0 + $arg1 + $arg2 22942end 22943@end smallexample 22944 22945@noindent 22946To execute the command use: 22947 22948@smallexample 22949adder 1 2 3 22950@end smallexample 22951 22952@noindent 22953This defines the command @code{adder}, which prints the sum of 22954its three arguments. Note the arguments are text substitutions, so they may 22955reference variables, use complex expressions, or even perform inferior 22956functions calls. 22957 22958@cindex argument count in user-defined commands 22959@cindex how many arguments (user-defined commands) 22960In addition, @code{$argc} may be used to find out how many arguments have 22961been passed. This expands to a number in the range 0@dots{}10. 22962 22963@smallexample 22964define adder 22965 if $argc == 2 22966 print $arg0 + $arg1 22967 end 22968 if $argc == 3 22969 print $arg0 + $arg1 + $arg2 22970 end 22971end 22972@end smallexample 22973 22974@table @code 22975 22976@kindex define 22977@item define @var{commandname} 22978Define a command named @var{commandname}. If there is already a command 22979by that name, you are asked to confirm that you want to redefine it. 22980@var{commandname} may be a bare command name consisting of letters, 22981numbers, dashes, and underscores. It may also start with any predefined 22982prefix command. For example, @samp{define target my-target} creates 22983a user-defined @samp{target my-target} command. 22984 22985The definition of the command is made up of other @value{GDBN} command lines, 22986which are given following the @code{define} command. The end of these 22987commands is marked by a line containing @code{end}. 22988 22989@kindex document 22990@kindex end@r{ (user-defined commands)} 22991@item document @var{commandname} 22992Document the user-defined command @var{commandname}, so that it can be 22993accessed by @code{help}. The command @var{commandname} must already be 22994defined. This command reads lines of documentation just as @code{define} 22995reads the lines of the command definition, ending with @code{end}. 22996After the @code{document} command is finished, @code{help} on command 22997@var{commandname} displays the documentation you have written. 22998 22999You may use the @code{document} command again to change the 23000documentation of a command. Redefining the command with @code{define} 23001does not change the documentation. 23002 23003@kindex dont-repeat 23004@cindex don't repeat command 23005@item dont-repeat 23006Used inside a user-defined command, this tells @value{GDBN} that this 23007command should not be repeated when the user hits @key{RET} 23008(@pxref{Command Syntax, repeat last command}). 23009 23010@kindex help user-defined 23011@item help user-defined 23012List all user-defined commands and all python commands defined in class 23013COMAND_USER. The first line of the documentation or docstring is 23014included (if any). 23015 23016@kindex show user 23017@item show user 23018@itemx show user @var{commandname} 23019Display the @value{GDBN} commands used to define @var{commandname} (but 23020not its documentation). If no @var{commandname} is given, display the 23021definitions for all user-defined commands. 23022This does not work for user-defined python commands. 23023 23024@cindex infinite recursion in user-defined commands 23025@kindex show max-user-call-depth 23026@kindex set max-user-call-depth 23027@item show max-user-call-depth 23028@itemx set max-user-call-depth 23029The value of @code{max-user-call-depth} controls how many recursion 23030levels are allowed in user-defined commands before @value{GDBN} suspects an 23031infinite recursion and aborts the command. 23032This does not apply to user-defined python commands. 23033@end table 23034 23035In addition to the above commands, user-defined commands frequently 23036use control flow commands, described in @ref{Command Files}. 23037 23038When user-defined commands are executed, the 23039commands of the definition are not printed. An error in any command 23040stops execution of the user-defined command. 23041 23042If used interactively, commands that would ask for confirmation proceed 23043without asking when used inside a user-defined command. Many @value{GDBN} 23044commands that normally print messages to say what they are doing omit the 23045messages when used in a user-defined command. 23046 23047@node Hooks 23048@subsection User-defined Command Hooks 23049@cindex command hooks 23050@cindex hooks, for commands 23051@cindex hooks, pre-command 23052 23053@kindex hook 23054You may define @dfn{hooks}, which are a special kind of user-defined 23055command. Whenever you run the command @samp{foo}, if the user-defined 23056command @samp{hook-foo} exists, it is executed (with no arguments) 23057before that command. 23058 23059@cindex hooks, post-command 23060@kindex hookpost 23061A hook may also be defined which is run after the command you executed. 23062Whenever you run the command @samp{foo}, if the user-defined command 23063@samp{hookpost-foo} exists, it is executed (with no arguments) after 23064that command. Post-execution hooks may exist simultaneously with 23065pre-execution hooks, for the same command. 23066 23067It is valid for a hook to call the command which it hooks. If this 23068occurs, the hook is not re-executed, thereby avoiding infinite recursion. 23069 23070@c It would be nice if hookpost could be passed a parameter indicating 23071@c if the command it hooks executed properly or not. FIXME! 23072 23073@kindex stop@r{, a pseudo-command} 23074In addition, a pseudo-command, @samp{stop} exists. Defining 23075(@samp{hook-stop}) makes the associated commands execute every time 23076execution stops in your program: before breakpoint commands are run, 23077displays are printed, or the stack frame is printed. 23078 23079For example, to ignore @code{SIGALRM} signals while 23080single-stepping, but treat them normally during normal execution, 23081you could define: 23082 23083@smallexample 23084define hook-stop 23085handle SIGALRM nopass 23086end 23087 23088define hook-run 23089handle SIGALRM pass 23090end 23091 23092define hook-continue 23093handle SIGALRM pass 23094end 23095@end smallexample 23096 23097As a further example, to hook at the beginning and end of the @code{echo} 23098command, and to add extra text to the beginning and end of the message, 23099you could define: 23100 23101@smallexample 23102define hook-echo 23103echo <<<--- 23104end 23105 23106define hookpost-echo 23107echo --->>>\n 23108end 23109 23110(@value{GDBP}) echo Hello World 23111<<<---Hello World--->>> 23112(@value{GDBP}) 23113 23114@end smallexample 23115 23116You can define a hook for any single-word command in @value{GDBN}, but 23117not for command aliases; you should define a hook for the basic command 23118name, e.g.@: @code{backtrace} rather than @code{bt}. 23119@c FIXME! So how does Joe User discover whether a command is an alias 23120@c or not? 23121You can hook a multi-word command by adding @code{hook-} or 23122@code{hookpost-} to the last word of the command, e.g.@: 23123@samp{define target hook-remote} to add a hook to @samp{target remote}. 23124 23125If an error occurs during the execution of your hook, execution of 23126@value{GDBN} commands stops and @value{GDBN} issues a prompt 23127(before the command that you actually typed had a chance to run). 23128 23129If you try to define a hook which does not match any known command, you 23130get a warning from the @code{define} command. 23131 23132@node Command Files 23133@subsection Command Files 23134 23135@cindex command files 23136@cindex scripting commands 23137A command file for @value{GDBN} is a text file made of lines that are 23138@value{GDBN} commands. Comments (lines starting with @kbd{#}) may 23139also be included. An empty line in a command file does nothing; it 23140does not mean to repeat the last command, as it would from the 23141terminal. 23142 23143You can request the execution of a command file with the @code{source} 23144command. Note that the @code{source} command is also used to evaluate 23145scripts that are not Command Files. The exact behavior can be configured 23146using the @code{script-extension} setting. 23147@xref{Extending GDB,, Extending GDB}. 23148 23149@table @code 23150@kindex source 23151@cindex execute commands from a file 23152@item source [-s] [-v] @var{filename} 23153Execute the command file @var{filename}. 23154@end table 23155 23156The lines in a command file are generally executed sequentially, 23157unless the order of execution is changed by one of the 23158@emph{flow-control commands} described below. The commands are not 23159printed as they are executed. An error in any command terminates 23160execution of the command file and control is returned to the console. 23161 23162@value{GDBN} first searches for @var{filename} in the current directory. 23163If the file is not found there, and @var{filename} does not specify a 23164directory, then @value{GDBN} also looks for the file on the source search path 23165(specified with the @samp{directory} command); 23166except that @file{$cdir} is not searched because the compilation directory 23167is not relevant to scripts. 23168 23169If @code{-s} is specified, then @value{GDBN} searches for @var{filename} 23170on the search path even if @var{filename} specifies a directory. 23171The search is done by appending @var{filename} to each element of the 23172search path. So, for example, if @var{filename} is @file{mylib/myscript} 23173and the search path contains @file{/home/user} then @value{GDBN} will 23174look for the script @file{/home/user/mylib/myscript}. 23175The search is also done if @var{filename} is an absolute path. 23176For example, if @var{filename} is @file{/tmp/myscript} and 23177the search path contains @file{/home/user} then @value{GDBN} will 23178look for the script @file{/home/user/tmp/myscript}. 23179For DOS-like systems, if @var{filename} contains a drive specification, 23180it is stripped before concatenation. For example, if @var{filename} is 23181@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN} 23182will look for the script @file{c:/tmp/myscript}. 23183 23184If @code{-v}, for verbose mode, is given then @value{GDBN} displays 23185each command as it is executed. The option must be given before 23186@var{filename}, and is interpreted as part of the filename anywhere else. 23187 23188Commands that would ask for confirmation if used interactively proceed 23189without asking when used in a command file. Many @value{GDBN} commands that 23190normally print messages to say what they are doing omit the messages 23191when called from command files. 23192 23193@value{GDBN} also accepts command input from standard input. In this 23194mode, normal output goes to standard output and error output goes to 23195standard error. Errors in a command file supplied on standard input do 23196not terminate execution of the command file---execution continues with 23197the next command. 23198 23199@smallexample 23200gdb < cmds > log 2>&1 23201@end smallexample 23202 23203(The syntax above will vary depending on the shell used.) This example 23204will execute commands from the file @file{cmds}. All output and errors 23205would be directed to @file{log}. 23206 23207Since commands stored on command files tend to be more general than 23208commands typed interactively, they frequently need to deal with 23209complicated situations, such as different or unexpected values of 23210variables and symbols, changes in how the program being debugged is 23211built, etc. @value{GDBN} provides a set of flow-control commands to 23212deal with these complexities. Using these commands, you can write 23213complex scripts that loop over data structures, execute commands 23214conditionally, etc. 23215 23216@table @code 23217@kindex if 23218@kindex else 23219@item if 23220@itemx else 23221This command allows to include in your script conditionally executed 23222commands. The @code{if} command takes a single argument, which is an 23223expression to evaluate. It is followed by a series of commands that 23224are executed only if the expression is true (its value is nonzero). 23225There can then optionally be an @code{else} line, followed by a series 23226of commands that are only executed if the expression was false. The 23227end of the list is marked by a line containing @code{end}. 23228 23229@kindex while 23230@item while 23231This command allows to write loops. Its syntax is similar to 23232@code{if}: the command takes a single argument, which is an expression 23233to evaluate, and must be followed by the commands to execute, one per 23234line, terminated by an @code{end}. These commands are called the 23235@dfn{body} of the loop. The commands in the body of @code{while} are 23236executed repeatedly as long as the expression evaluates to true. 23237 23238@kindex loop_break 23239@item loop_break 23240This command exits the @code{while} loop in whose body it is included. 23241Execution of the script continues after that @code{while}s @code{end} 23242line. 23243 23244@kindex loop_continue 23245@item loop_continue 23246This command skips the execution of the rest of the body of commands 23247in the @code{while} loop in whose body it is included. Execution 23248branches to the beginning of the @code{while} loop, where it evaluates 23249the controlling expression. 23250 23251@kindex end@r{ (if/else/while commands)} 23252@item end 23253Terminate the block of commands that are the body of @code{if}, 23254@code{else}, or @code{while} flow-control commands. 23255@end table 23256 23257 23258@node Output 23259@subsection Commands for Controlled Output 23260 23261During the execution of a command file or a user-defined command, normal 23262@value{GDBN} output is suppressed; the only output that appears is what is 23263explicitly printed by the commands in the definition. This section 23264describes three commands useful for generating exactly the output you 23265want. 23266 23267@table @code 23268@kindex echo 23269@item echo @var{text} 23270@c I do not consider backslash-space a standard C escape sequence 23271@c because it is not in ANSI. 23272Print @var{text}. Nonprinting characters can be included in 23273@var{text} using C escape sequences, such as @samp{\n} to print a 23274newline. @strong{No newline is printed unless you specify one.} 23275In addition to the standard C escape sequences, a backslash followed 23276by a space stands for a space. This is useful for displaying a 23277string with spaces at the beginning or the end, since leading and 23278trailing spaces are otherwise trimmed from all arguments. 23279To print @samp{@w{ }and foo =@w{ }}, use the command 23280@samp{echo \@w{ }and foo = \@w{ }}. 23281 23282A backslash at the end of @var{text} can be used, as in C, to continue 23283the command onto subsequent lines. For example, 23284 23285@smallexample 23286echo This is some text\n\ 23287which is continued\n\ 23288onto several lines.\n 23289@end smallexample 23290 23291produces the same output as 23292 23293@smallexample 23294echo This is some text\n 23295echo which is continued\n 23296echo onto several lines.\n 23297@end smallexample 23298 23299@kindex output 23300@item output @var{expression} 23301Print the value of @var{expression} and nothing but that value: no 23302newlines, no @samp{$@var{nn} = }. The value is not entered in the 23303value history either. @xref{Expressions, ,Expressions}, for more information 23304on expressions. 23305 23306@item output/@var{fmt} @var{expression} 23307Print the value of @var{expression} in format @var{fmt}. You can use 23308the same formats as for @code{print}. @xref{Output Formats,,Output 23309Formats}, for more information. 23310 23311@kindex printf 23312@item printf @var{template}, @var{expressions}@dots{} 23313Print the values of one or more @var{expressions} under the control of 23314the string @var{template}. To print several values, make 23315@var{expressions} be a comma-separated list of individual expressions, 23316which may be either numbers or pointers. Their values are printed as 23317specified by @var{template}, exactly as a C program would do by 23318executing the code below: 23319 23320@smallexample 23321printf (@var{template}, @var{expressions}@dots{}); 23322@end smallexample 23323 23324As in @code{C} @code{printf}, ordinary characters in @var{template} 23325are printed verbatim, while @dfn{conversion specification} introduced 23326by the @samp{%} character cause subsequent @var{expressions} to be 23327evaluated, their values converted and formatted according to type and 23328style information encoded in the conversion specifications, and then 23329printed. 23330 23331For example, you can print two values in hex like this: 23332 23333@smallexample 23334printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo 23335@end smallexample 23336 23337@code{printf} supports all the standard @code{C} conversion 23338specifications, including the flags and modifiers between the @samp{%} 23339character and the conversion letter, with the following exceptions: 23340 23341@itemize @bullet 23342@item 23343The argument-ordering modifiers, such as @samp{2$}, are not supported. 23344 23345@item 23346The modifier @samp{*} is not supported for specifying precision or 23347width. 23348 23349@item 23350The @samp{'} flag (for separation of digits into groups according to 23351@code{LC_NUMERIC'}) is not supported. 23352 23353@item 23354The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not 23355supported. 23356 23357@item 23358The conversion letter @samp{n} (as in @samp{%n}) is not supported. 23359 23360@item 23361The conversion letters @samp{a} and @samp{A} are not supported. 23362@end itemize 23363 23364@noindent 23365Note that the @samp{ll} type modifier is supported only if the 23366underlying @code{C} implementation used to build @value{GDBN} supports 23367the @code{long long int} type, and the @samp{L} type modifier is 23368supported only if @code{long double} type is available. 23369 23370As in @code{C}, @code{printf} supports simple backslash-escape 23371sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"}, 23372@samp{\a}, and @samp{\f}, that consist of backslash followed by a 23373single character. Octal and hexadecimal escape sequences are not 23374supported. 23375 23376Additionally, @code{printf} supports conversion specifications for DFP 23377(@dfn{Decimal Floating Point}) types using the following length modifiers 23378together with a floating point specifier. 23379letters: 23380 23381@itemize @bullet 23382@item 23383@samp{H} for printing @code{Decimal32} types. 23384 23385@item 23386@samp{D} for printing @code{Decimal64} types. 23387 23388@item 23389@samp{DD} for printing @code{Decimal128} types. 23390@end itemize 23391 23392If the underlying @code{C} implementation used to build @value{GDBN} has 23393support for the three length modifiers for DFP types, other modifiers 23394such as width and precision will also be available for @value{GDBN} to use. 23395 23396In case there is no such @code{C} support, no additional modifiers will be 23397available and the value will be printed in the standard way. 23398 23399Here's an example of printing DFP types using the above conversion letters: 23400@smallexample 23401printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl 23402@end smallexample 23403 23404@kindex eval 23405@item eval @var{template}, @var{expressions}@dots{} 23406Convert the values of one or more @var{expressions} under the control of 23407the string @var{template} to a command line, and call it. 23408 23409@end table 23410 23411@node Auto-loading sequences 23412@subsection Controlling auto-loading native @value{GDBN} scripts 23413@cindex native script auto-loading 23414 23415When a new object file is read (for example, due to the @code{file} 23416command, or because the inferior has loaded a shared library), 23417@value{GDBN} will look for the command file @file{@var{objfile}-gdb.gdb}. 23418@xref{Auto-loading extensions}. 23419 23420Auto-loading can be enabled or disabled, 23421and the list of auto-loaded scripts can be printed. 23422 23423@table @code 23424@anchor{set auto-load gdb-scripts} 23425@kindex set auto-load gdb-scripts 23426@item set auto-load gdb-scripts [on|off] 23427Enable or disable the auto-loading of canned sequences of commands scripts. 23428 23429@anchor{show auto-load gdb-scripts} 23430@kindex show auto-load gdb-scripts 23431@item show auto-load gdb-scripts 23432Show whether auto-loading of canned sequences of commands scripts is enabled or 23433disabled. 23434 23435@anchor{info auto-load gdb-scripts} 23436@kindex info auto-load gdb-scripts 23437@cindex print list of auto-loaded canned sequences of commands scripts 23438@item info auto-load gdb-scripts [@var{regexp}] 23439Print the list of all canned sequences of commands scripts that @value{GDBN} 23440auto-loaded. 23441@end table 23442 23443If @var{regexp} is supplied only canned sequences of commands scripts with 23444matching names are printed. 23445 23446@node Python 23447@section Extending @value{GDBN} using Python 23448@cindex python scripting 23449@cindex scripting with python 23450 23451You can extend @value{GDBN} using the @uref{http://www.python.org/, 23452Python programming language}. This feature is available only if 23453@value{GDBN} was configured using @option{--with-python}. 23454 23455@cindex python directory 23456Python scripts used by @value{GDBN} should be installed in 23457@file{@var{data-directory}/python}, where @var{data-directory} is 23458the data directory as determined at @value{GDBN} startup (@pxref{Data Files}). 23459This directory, known as the @dfn{python directory}, 23460is automatically added to the Python Search Path in order to allow 23461the Python interpreter to locate all scripts installed at this location. 23462 23463Additionally, @value{GDBN} commands and convenience functions which 23464are written in Python and are located in the 23465@file{@var{data-directory}/python/gdb/command} or 23466@file{@var{data-directory}/python/gdb/function} directories are 23467automatically imported when @value{GDBN} starts. 23468 23469@menu 23470* Python Commands:: Accessing Python from @value{GDBN}. 23471* Python API:: Accessing @value{GDBN} from Python. 23472* Python Auto-loading:: Automatically loading Python code. 23473* Python modules:: Python modules provided by @value{GDBN}. 23474@end menu 23475 23476@node Python Commands 23477@subsection Python Commands 23478@cindex python commands 23479@cindex commands to access python 23480 23481@value{GDBN} provides two commands for accessing the Python interpreter, 23482and one related setting: 23483 23484@table @code 23485@kindex python-interactive 23486@kindex pi 23487@item python-interactive @r{[}@var{command}@r{]} 23488@itemx pi @r{[}@var{command}@r{]} 23489Without an argument, the @code{python-interactive} command can be used 23490to start an interactive Python prompt. To return to @value{GDBN}, 23491type the @code{EOF} character (e.g., @kbd{Ctrl-D} on an empty prompt). 23492 23493Alternatively, a single-line Python command can be given as an 23494argument and evaluated. If the command is an expression, the result 23495will be printed; otherwise, nothing will be printed. For example: 23496 23497@smallexample 23498(@value{GDBP}) python-interactive 2 + 3 234995 23500@end smallexample 23501 23502@kindex python 23503@kindex py 23504@item python @r{[}@var{command}@r{]} 23505@itemx py @r{[}@var{command}@r{]} 23506The @code{python} command can be used to evaluate Python code. 23507 23508If given an argument, the @code{python} command will evaluate the 23509argument as a Python command. For example: 23510 23511@smallexample 23512(@value{GDBP}) python print 23 2351323 23514@end smallexample 23515 23516If you do not provide an argument to @code{python}, it will act as a 23517multi-line command, like @code{define}. In this case, the Python 23518script is made up of subsequent command lines, given after the 23519@code{python} command. This command list is terminated using a line 23520containing @code{end}. For example: 23521 23522@smallexample 23523(@value{GDBP}) python 23524Type python script 23525End with a line saying just "end". 23526>print 23 23527>end 2352823 23529@end smallexample 23530 23531@kindex set python print-stack 23532@item set python print-stack 23533By default, @value{GDBN} will print only the message component of a 23534Python exception when an error occurs in a Python script. This can be 23535controlled using @code{set python print-stack}: if @code{full}, then 23536full Python stack printing is enabled; if @code{none}, then Python stack 23537and message printing is disabled; if @code{message}, the default, only 23538the message component of the error is printed. 23539@end table 23540 23541It is also possible to execute a Python script from the @value{GDBN} 23542interpreter: 23543 23544@table @code 23545@item source @file{script-name} 23546The script name must end with @samp{.py} and @value{GDBN} must be configured 23547to recognize the script language based on filename extension using 23548the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}. 23549 23550@item python execfile ("script-name") 23551This method is based on the @code{execfile} Python built-in function, 23552and thus is always available. 23553@end table 23554 23555@node Python API 23556@subsection Python API 23557@cindex python api 23558@cindex programming in python 23559 23560You can get quick online help for @value{GDBN}'s Python API by issuing 23561the command @w{@kbd{python help (gdb)}}. 23562 23563Functions and methods which have two or more optional arguments allow 23564them to be specified using keyword syntax. This allows passing some 23565optional arguments while skipping others. Example: 23566@w{@code{gdb.some_function ('foo', bar = 1, baz = 2)}}. 23567 23568@menu 23569* Basic Python:: Basic Python Functions. 23570* Exception Handling:: How Python exceptions are translated. 23571* Values From Inferior:: Python representation of values. 23572* Types In Python:: Python representation of types. 23573* Pretty Printing API:: Pretty-printing values. 23574* Selecting Pretty-Printers:: How GDB chooses a pretty-printer. 23575* Writing a Pretty-Printer:: Writing a Pretty-Printer. 23576* Type Printing API:: Pretty-printing types. 23577* Frame Filter API:: Filtering Frames. 23578* Frame Decorator API:: Decorating Frames. 23579* Writing a Frame Filter:: Writing a Frame Filter. 23580* Inferiors In Python:: Python representation of inferiors (processes) 23581* Events In Python:: Listening for events from @value{GDBN}. 23582* Threads In Python:: Accessing inferior threads from Python. 23583* Commands In Python:: Implementing new commands in Python. 23584* Parameters In Python:: Adding new @value{GDBN} parameters. 23585* Functions In Python:: Writing new convenience functions. 23586* Progspaces In Python:: Program spaces. 23587* Objfiles In Python:: Object files. 23588* Frames In Python:: Accessing inferior stack frames from Python. 23589* Blocks In Python:: Accessing blocks from Python. 23590* Symbols In Python:: Python representation of symbols. 23591* Symbol Tables In Python:: Python representation of symbol tables. 23592* Line Tables In Python:: Python representation of line tables. 23593* Breakpoints In Python:: Manipulating breakpoints using Python. 23594* Finish Breakpoints in Python:: Setting Breakpoints on function return 23595 using Python. 23596* Lazy Strings In Python:: Python representation of lazy strings. 23597* Architectures In Python:: Python representation of architectures. 23598@end menu 23599 23600@node Basic Python 23601@subsubsection Basic Python 23602 23603@cindex python stdout 23604@cindex python pagination 23605At startup, @value{GDBN} overrides Python's @code{sys.stdout} and 23606@code{sys.stderr} to print using @value{GDBN}'s output-paging streams. 23607A Python program which outputs to one of these streams may have its 23608output interrupted by the user (@pxref{Screen Size}). In this 23609situation, a Python @code{KeyboardInterrupt} exception is thrown. 23610 23611Some care must be taken when writing Python code to run in 23612@value{GDBN}. Two things worth noting in particular: 23613 23614@itemize @bullet 23615@item 23616@value{GDBN} install handlers for @code{SIGCHLD} and @code{SIGINT}. 23617Python code must not override these, or even change the options using 23618@code{sigaction}. If your program changes the handling of these 23619signals, @value{GDBN} will most likely stop working correctly. Note 23620that it is unfortunately common for GUI toolkits to install a 23621@code{SIGCHLD} handler. 23622 23623@item 23624@value{GDBN} takes care to mark its internal file descriptors as 23625close-on-exec. However, this cannot be done in a thread-safe way on 23626all platforms. Your Python programs should be aware of this and 23627should both create new file descriptors with the close-on-exec flag 23628set and arrange to close unneeded file descriptors before starting a 23629child process. 23630@end itemize 23631 23632@cindex python functions 23633@cindex python module 23634@cindex gdb module 23635@value{GDBN} introduces a new Python module, named @code{gdb}. All 23636methods and classes added by @value{GDBN} are placed in this module. 23637@value{GDBN} automatically @code{import}s the @code{gdb} module for 23638use in all scripts evaluated by the @code{python} command. 23639 23640@findex gdb.PYTHONDIR 23641@defvar gdb.PYTHONDIR 23642A string containing the python directory (@pxref{Python}). 23643@end defvar 23644 23645@findex gdb.execute 23646@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]}) 23647Evaluate @var{command}, a string, as a @value{GDBN} CLI command. 23648If a GDB exception happens while @var{command} runs, it is 23649translated as described in @ref{Exception Handling,,Exception Handling}. 23650 23651@var{from_tty} specifies whether @value{GDBN} ought to consider this 23652command as having originated from the user invoking it interactively. 23653It must be a boolean value. If omitted, it defaults to @code{False}. 23654 23655By default, any output produced by @var{command} is sent to 23656@value{GDBN}'s standard output. If the @var{to_string} parameter is 23657@code{True}, then output will be collected by @code{gdb.execute} and 23658returned as a string. The default is @code{False}, in which case the 23659return value is @code{None}. If @var{to_string} is @code{True}, the 23660@value{GDBN} virtual terminal will be temporarily set to unlimited width 23661and height, and its pagination will be disabled; @pxref{Screen Size}. 23662@end defun 23663 23664@findex gdb.breakpoints 23665@defun gdb.breakpoints () 23666Return a sequence holding all of @value{GDBN}'s breakpoints. 23667@xref{Breakpoints In Python}, for more information. 23668@end defun 23669 23670@findex gdb.parameter 23671@defun gdb.parameter (parameter) 23672Return the value of a @value{GDBN} parameter. @var{parameter} is a 23673string naming the parameter to look up; @var{parameter} may contain 23674spaces if the parameter has a multi-part name. For example, 23675@samp{print object} is a valid parameter name. 23676 23677If the named parameter does not exist, this function throws a 23678@code{gdb.error} (@pxref{Exception Handling}). Otherwise, the 23679parameter's value is converted to a Python value of the appropriate 23680type, and returned. 23681@end defun 23682 23683@findex gdb.history 23684@defun gdb.history (number) 23685Return a value from @value{GDBN}'s value history (@pxref{Value 23686History}). @var{number} indicates which history element to return. 23687If @var{number} is negative, then @value{GDBN} will take its absolute value 23688and count backward from the last element (i.e., the most recent element) to 23689find the value to return. If @var{number} is zero, then @value{GDBN} will 23690return the most recent element. If the element specified by @var{number} 23691doesn't exist in the value history, a @code{gdb.error} exception will be 23692raised. 23693 23694If no exception is raised, the return value is always an instance of 23695@code{gdb.Value} (@pxref{Values From Inferior}). 23696@end defun 23697 23698@findex gdb.parse_and_eval 23699@defun gdb.parse_and_eval (expression) 23700Parse @var{expression} as an expression in the current language, 23701evaluate it, and return the result as a @code{gdb.Value}. 23702@var{expression} must be a string. 23703 23704This function can be useful when implementing a new command 23705(@pxref{Commands In Python}), as it provides a way to parse the 23706command's argument as an expression. It is also useful simply to 23707compute values, for example, it is the only way to get the value of a 23708convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}. 23709@end defun 23710 23711@findex gdb.find_pc_line 23712@defun gdb.find_pc_line (pc) 23713Return the @code{gdb.Symtab_and_line} object corresponding to the 23714@var{pc} value. @xref{Symbol Tables In Python}. If an invalid 23715value of @var{pc} is passed as an argument, then the @code{symtab} and 23716@code{line} attributes of the returned @code{gdb.Symtab_and_line} object 23717will be @code{None} and 0 respectively. 23718@end defun 23719 23720@findex gdb.post_event 23721@defun gdb.post_event (event) 23722Put @var{event}, a callable object taking no arguments, into 23723@value{GDBN}'s internal event queue. This callable will be invoked at 23724some later point, during @value{GDBN}'s event processing. Events 23725posted using @code{post_event} will be run in the order in which they 23726were posted; however, there is no way to know when they will be 23727processed relative to other events inside @value{GDBN}. 23728 23729@value{GDBN} is not thread-safe. If your Python program uses multiple 23730threads, you must be careful to only call @value{GDBN}-specific 23731functions in the main @value{GDBN} thread. @code{post_event} ensures 23732this. For example: 23733 23734@smallexample 23735(@value{GDBP}) python 23736>import threading 23737> 23738>class Writer(): 23739> def __init__(self, message): 23740> self.message = message; 23741> def __call__(self): 23742> gdb.write(self.message) 23743> 23744>class MyThread1 (threading.Thread): 23745> def run (self): 23746> gdb.post_event(Writer("Hello ")) 23747> 23748>class MyThread2 (threading.Thread): 23749> def run (self): 23750> gdb.post_event(Writer("World\n")) 23751> 23752>MyThread1().start() 23753>MyThread2().start() 23754>end 23755(@value{GDBP}) Hello World 23756@end smallexample 23757@end defun 23758 23759@findex gdb.write 23760@defun gdb.write (string @r{[}, stream{]}) 23761Print a string to @value{GDBN}'s paginated output stream. The 23762optional @var{stream} determines the stream to print to. The default 23763stream is @value{GDBN}'s standard output stream. Possible stream 23764values are: 23765 23766@table @code 23767@findex STDOUT 23768@findex gdb.STDOUT 23769@item gdb.STDOUT 23770@value{GDBN}'s standard output stream. 23771 23772@findex STDERR 23773@findex gdb.STDERR 23774@item gdb.STDERR 23775@value{GDBN}'s standard error stream. 23776 23777@findex STDLOG 23778@findex gdb.STDLOG 23779@item gdb.STDLOG 23780@value{GDBN}'s log stream (@pxref{Logging Output}). 23781@end table 23782 23783Writing to @code{sys.stdout} or @code{sys.stderr} will automatically 23784call this function and will automatically direct the output to the 23785relevant stream. 23786@end defun 23787 23788@findex gdb.flush 23789@defun gdb.flush () 23790Flush the buffer of a @value{GDBN} paginated stream so that the 23791contents are displayed immediately. @value{GDBN} will flush the 23792contents of a stream automatically when it encounters a newline in the 23793buffer. The optional @var{stream} determines the stream to flush. The 23794default stream is @value{GDBN}'s standard output stream. Possible 23795stream values are: 23796 23797@table @code 23798@findex STDOUT 23799@findex gdb.STDOUT 23800@item gdb.STDOUT 23801@value{GDBN}'s standard output stream. 23802 23803@findex STDERR 23804@findex gdb.STDERR 23805@item gdb.STDERR 23806@value{GDBN}'s standard error stream. 23807 23808@findex STDLOG 23809@findex gdb.STDLOG 23810@item gdb.STDLOG 23811@value{GDBN}'s log stream (@pxref{Logging Output}). 23812 23813@end table 23814 23815Flushing @code{sys.stdout} or @code{sys.stderr} will automatically 23816call this function for the relevant stream. 23817@end defun 23818 23819@findex gdb.target_charset 23820@defun gdb.target_charset () 23821Return the name of the current target character set (@pxref{Character 23822Sets}). This differs from @code{gdb.parameter('target-charset')} in 23823that @samp{auto} is never returned. 23824@end defun 23825 23826@findex gdb.target_wide_charset 23827@defun gdb.target_wide_charset () 23828Return the name of the current target wide character set 23829(@pxref{Character Sets}). This differs from 23830@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is 23831never returned. 23832@end defun 23833 23834@findex gdb.solib_name 23835@defun gdb.solib_name (address) 23836Return the name of the shared library holding the given @var{address} 23837as a string, or @code{None}. 23838@end defun 23839 23840@findex gdb.decode_line 23841@defun gdb.decode_line @r{[}expression@r{]} 23842Return locations of the line specified by @var{expression}, or of the 23843current line if no argument was given. This function returns a Python 23844tuple containing two elements. The first element contains a string 23845holding any unparsed section of @var{expression} (or @code{None} if 23846the expression has been fully parsed). The second element contains 23847either @code{None} or another tuple that contains all the locations 23848that match the expression represented as @code{gdb.Symtab_and_line} 23849objects (@pxref{Symbol Tables In Python}). If @var{expression} is 23850provided, it is decoded the way that @value{GDBN}'s inbuilt 23851@code{break} or @code{edit} commands do (@pxref{Specify Location}). 23852@end defun 23853 23854@defun gdb.prompt_hook (current_prompt) 23855@anchor{prompt_hook} 23856 23857If @var{prompt_hook} is callable, @value{GDBN} will call the method 23858assigned to this operation before a prompt is displayed by 23859@value{GDBN}. 23860 23861The parameter @code{current_prompt} contains the current @value{GDBN} 23862prompt. This method must return a Python string, or @code{None}. If 23863a string is returned, the @value{GDBN} prompt will be set to that 23864string. If @code{None} is returned, @value{GDBN} will continue to use 23865the current prompt. 23866 23867Some prompts cannot be substituted in @value{GDBN}. Secondary prompts 23868such as those used by readline for command input, and annotation 23869related prompts are prohibited from being changed. 23870@end defun 23871 23872@node Exception Handling 23873@subsubsection Exception Handling 23874@cindex python exceptions 23875@cindex exceptions, python 23876 23877When executing the @code{python} command, Python exceptions 23878uncaught within the Python code are translated to calls to 23879@value{GDBN} error-reporting mechanism. If the command that called 23880@code{python} does not handle the error, @value{GDBN} will 23881terminate it and print an error message containing the Python 23882exception name, the associated value, and the Python call stack 23883backtrace at the point where the exception was raised. Example: 23884 23885@smallexample 23886(@value{GDBP}) python print foo 23887Traceback (most recent call last): 23888 File "<string>", line 1, in <module> 23889NameError: name 'foo' is not defined 23890@end smallexample 23891 23892@value{GDBN} errors that happen in @value{GDBN} commands invoked by 23893Python code are converted to Python exceptions. The type of the 23894Python exception depends on the error. 23895 23896@ftable @code 23897@item gdb.error 23898This is the base class for most exceptions generated by @value{GDBN}. 23899It is derived from @code{RuntimeError}, for compatibility with earlier 23900versions of @value{GDBN}. 23901 23902If an error occurring in @value{GDBN} does not fit into some more 23903specific category, then the generated exception will have this type. 23904 23905@item gdb.MemoryError 23906This is a subclass of @code{gdb.error} which is thrown when an 23907operation tried to access invalid memory in the inferior. 23908 23909@item KeyboardInterrupt 23910User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination 23911prompt) is translated to a Python @code{KeyboardInterrupt} exception. 23912@end ftable 23913 23914In all cases, your exception handler will see the @value{GDBN} error 23915message as its value and the Python call stack backtrace at the Python 23916statement closest to where the @value{GDBN} error occured as the 23917traceback. 23918 23919@findex gdb.GdbError 23920When implementing @value{GDBN} commands in Python via @code{gdb.Command}, 23921it is useful to be able to throw an exception that doesn't cause a 23922traceback to be printed. For example, the user may have invoked the 23923command incorrectly. Use the @code{gdb.GdbError} exception 23924to handle this case. Example: 23925 23926@smallexample 23927(gdb) python 23928>class HelloWorld (gdb.Command): 23929> """Greet the whole world.""" 23930> def __init__ (self): 23931> super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER) 23932> def invoke (self, args, from_tty): 23933> argv = gdb.string_to_argv (args) 23934> if len (argv) != 0: 23935> raise gdb.GdbError ("hello-world takes no arguments") 23936> print "Hello, World!" 23937>HelloWorld () 23938>end 23939(gdb) hello-world 42 23940hello-world takes no arguments 23941@end smallexample 23942 23943@node Values From Inferior 23944@subsubsection Values From Inferior 23945@cindex values from inferior, with Python 23946@cindex python, working with values from inferior 23947 23948@cindex @code{gdb.Value} 23949@value{GDBN} provides values it obtains from the inferior program in 23950an object of type @code{gdb.Value}. @value{GDBN} uses this object 23951for its internal bookkeeping of the inferior's values, and for 23952fetching values when necessary. 23953 23954Inferior values that are simple scalars can be used directly in 23955Python expressions that are valid for the value's data type. Here's 23956an example for an integer or floating-point value @code{some_val}: 23957 23958@smallexample 23959bar = some_val + 2 23960@end smallexample 23961 23962@noindent 23963As result of this, @code{bar} will also be a @code{gdb.Value} object 23964whose values are of the same type as those of @code{some_val}. 23965 23966Inferior values that are structures or instances of some class can 23967be accessed using the Python @dfn{dictionary syntax}. For example, if 23968@code{some_val} is a @code{gdb.Value} instance holding a structure, you 23969can access its @code{foo} element with: 23970 23971@smallexample 23972bar = some_val['foo'] 23973@end smallexample 23974 23975@cindex getting structure elements using gdb.Field objects as subscripts 23976Again, @code{bar} will also be a @code{gdb.Value} object. Structure 23977elements can also be accessed by using @code{gdb.Field} objects as 23978subscripts (@pxref{Types In Python}, for more information on 23979@code{gdb.Field} objects). For example, if @code{foo_field} is a 23980@code{gdb.Field} object corresponding to element @code{foo} of the above 23981structure, then @code{bar} can also be accessed as follows: 23982 23983@smallexample 23984bar = some_val[foo_field] 23985@end smallexample 23986 23987A @code{gdb.Value} that represents a function can be executed via 23988inferior function call. Any arguments provided to the call must match 23989the function's prototype, and must be provided in the order specified 23990by that prototype. 23991 23992For example, @code{some_val} is a @code{gdb.Value} instance 23993representing a function that takes two integers as arguments. To 23994execute this function, call it like so: 23995 23996@smallexample 23997result = some_val (10,20) 23998@end smallexample 23999 24000Any values returned from a function call will be stored as a 24001@code{gdb.Value}. 24002 24003The following attributes are provided: 24004 24005@defvar Value.address 24006If this object is addressable, this read-only attribute holds a 24007@code{gdb.Value} object representing the address. Otherwise, 24008this attribute holds @code{None}. 24009@end defvar 24010 24011@cindex optimized out value in Python 24012@defvar Value.is_optimized_out 24013This read-only boolean attribute is true if the compiler optimized out 24014this value, thus it is not available for fetching from the inferior. 24015@end defvar 24016 24017@defvar Value.type 24018The type of this @code{gdb.Value}. The value of this attribute is a 24019@code{gdb.Type} object (@pxref{Types In Python}). 24020@end defvar 24021 24022@defvar Value.dynamic_type 24023The dynamic type of this @code{gdb.Value}. This uses C@t{++} run-time 24024type information (@acronym{RTTI}) to determine the dynamic type of the 24025value. If this value is of class type, it will return the class in 24026which the value is embedded, if any. If this value is of pointer or 24027reference to a class type, it will compute the dynamic type of the 24028referenced object, and return a pointer or reference to that type, 24029respectively. In all other cases, it will return the value's static 24030type. 24031 24032Note that this feature will only work when debugging a C@t{++} program 24033that includes @acronym{RTTI} for the object in question. Otherwise, 24034it will just return the static type of the value as in @kbd{ptype foo} 24035(@pxref{Symbols, ptype}). 24036@end defvar 24037 24038@defvar Value.is_lazy 24039The value of this read-only boolean attribute is @code{True} if this 24040@code{gdb.Value} has not yet been fetched from the inferior. 24041@value{GDBN} does not fetch values until necessary, for efficiency. 24042For example: 24043 24044@smallexample 24045myval = gdb.parse_and_eval ('somevar') 24046@end smallexample 24047 24048The value of @code{somevar} is not fetched at this time. It will be 24049fetched when the value is needed, or when the @code{fetch_lazy} 24050method is invoked. 24051@end defvar 24052 24053The following methods are provided: 24054 24055@defun Value.__init__ (@var{val}) 24056Many Python values can be converted directly to a @code{gdb.Value} via 24057this object initializer. Specifically: 24058 24059@table @asis 24060@item Python boolean 24061A Python boolean is converted to the boolean type from the current 24062language. 24063 24064@item Python integer 24065A Python integer is converted to the C @code{long} type for the 24066current architecture. 24067 24068@item Python long 24069A Python long is converted to the C @code{long long} type for the 24070current architecture. 24071 24072@item Python float 24073A Python float is converted to the C @code{double} type for the 24074current architecture. 24075 24076@item Python string 24077A Python string is converted to a target string, using the current 24078target encoding. 24079 24080@item @code{gdb.Value} 24081If @code{val} is a @code{gdb.Value}, then a copy of the value is made. 24082 24083@item @code{gdb.LazyString} 24084If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In 24085Python}), then the lazy string's @code{value} method is called, and 24086its result is used. 24087@end table 24088@end defun 24089 24090@defun Value.cast (type) 24091Return a new instance of @code{gdb.Value} that is the result of 24092casting this instance to the type described by @var{type}, which must 24093be a @code{gdb.Type} object. If the cast cannot be performed for some 24094reason, this method throws an exception. 24095@end defun 24096 24097@defun Value.dereference () 24098For pointer data types, this method returns a new @code{gdb.Value} object 24099whose contents is the object pointed to by the pointer. For example, if 24100@code{foo} is a C pointer to an @code{int}, declared in your C program as 24101 24102@smallexample 24103int *foo; 24104@end smallexample 24105 24106@noindent 24107then you can use the corresponding @code{gdb.Value} to access what 24108@code{foo} points to like this: 24109 24110@smallexample 24111bar = foo.dereference () 24112@end smallexample 24113 24114The result @code{bar} will be a @code{gdb.Value} object holding the 24115value pointed to by @code{foo}. 24116 24117A similar function @code{Value.referenced_value} exists which also 24118returns @code{gdb.Value} objects corresonding to the values pointed to 24119by pointer values (and additionally, values referenced by reference 24120values). However, the behavior of @code{Value.dereference} 24121differs from @code{Value.referenced_value} by the fact that the 24122behavior of @code{Value.dereference} is identical to applying the C 24123unary operator @code{*} on a given value. For example, consider a 24124reference to a pointer @code{ptrref}, declared in your C@t{++} program 24125as 24126 24127@smallexample 24128typedef int *intptr; 24129... 24130int val = 10; 24131intptr ptr = &val; 24132intptr &ptrref = ptr; 24133@end smallexample 24134 24135Though @code{ptrref} is a reference value, one can apply the method 24136@code{Value.dereference} to the @code{gdb.Value} object corresponding 24137to it and obtain a @code{gdb.Value} which is identical to that 24138corresponding to @code{val}. However, if you apply the method 24139@code{Value.referenced_value}, the result would be a @code{gdb.Value} 24140object identical to that corresponding to @code{ptr}. 24141 24142@smallexample 24143py_ptrref = gdb.parse_and_eval ("ptrref") 24144py_val = py_ptrref.dereference () 24145py_ptr = py_ptrref.referenced_value () 24146@end smallexample 24147 24148The @code{gdb.Value} object @code{py_val} is identical to that 24149corresponding to @code{val}, and @code{py_ptr} is identical to that 24150corresponding to @code{ptr}. In general, @code{Value.dereference} can 24151be applied whenever the C unary operator @code{*} can be applied 24152to the corresponding C value. For those cases where applying both 24153@code{Value.dereference} and @code{Value.referenced_value} is allowed, 24154the results obtained need not be identical (as we have seen in the above 24155example). The results are however identical when applied on 24156@code{gdb.Value} objects corresponding to pointers (@code{gdb.Value} 24157objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program. 24158@end defun 24159 24160@defun Value.referenced_value () 24161For pointer or reference data types, this method returns a new 24162@code{gdb.Value} object corresponding to the value referenced by the 24163pointer/reference value. For pointer data types, 24164@code{Value.dereference} and @code{Value.referenced_value} produce 24165identical results. The difference between these methods is that 24166@code{Value.dereference} cannot get the values referenced by reference 24167values. For example, consider a reference to an @code{int}, declared 24168in your C@t{++} program as 24169 24170@smallexample 24171int val = 10; 24172int &ref = val; 24173@end smallexample 24174 24175@noindent 24176then applying @code{Value.dereference} to the @code{gdb.Value} object 24177corresponding to @code{ref} will result in an error, while applying 24178@code{Value.referenced_value} will result in a @code{gdb.Value} object 24179identical to that corresponding to @code{val}. 24180 24181@smallexample 24182py_ref = gdb.parse_and_eval ("ref") 24183er_ref = py_ref.dereference () # Results in error 24184py_val = py_ref.referenced_value () # Returns the referenced value 24185@end smallexample 24186 24187The @code{gdb.Value} object @code{py_val} is identical to that 24188corresponding to @code{val}. 24189@end defun 24190 24191@defun Value.dynamic_cast (type) 24192Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast} 24193operator were used. Consult a C@t{++} reference for details. 24194@end defun 24195 24196@defun Value.reinterpret_cast (type) 24197Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast} 24198operator were used. Consult a C@t{++} reference for details. 24199@end defun 24200 24201@defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]}) 24202If this @code{gdb.Value} represents a string, then this method 24203converts the contents to a Python string. Otherwise, this method will 24204throw an exception. 24205 24206Strings are recognized in a language-specific way; whether a given 24207@code{gdb.Value} represents a string is determined by the current 24208language. 24209 24210For C-like languages, a value is a string if it is a pointer to or an 24211array of characters or ints. The string is assumed to be terminated 24212by a zero of the appropriate width. However if the optional length 24213argument is given, the string will be converted to that given length, 24214ignoring any embedded zeros that the string may contain. 24215 24216If the optional @var{encoding} argument is given, it must be a string 24217naming the encoding of the string in the @code{gdb.Value}, such as 24218@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts 24219the same encodings as the corresponding argument to Python's 24220@code{string.decode} method, and the Python codec machinery will be used 24221to convert the string. If @var{encoding} is not given, or if 24222@var{encoding} is the empty string, then either the @code{target-charset} 24223(@pxref{Character Sets}) will be used, or a language-specific encoding 24224will be used, if the current language is able to supply one. 24225 24226The optional @var{errors} argument is the same as the corresponding 24227argument to Python's @code{string.decode} method. 24228 24229If the optional @var{length} argument is given, the string will be 24230fetched and converted to the given length. 24231@end defun 24232 24233@defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]}) 24234If this @code{gdb.Value} represents a string, then this method 24235converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings 24236In Python}). Otherwise, this method will throw an exception. 24237 24238If the optional @var{encoding} argument is given, it must be a string 24239naming the encoding of the @code{gdb.LazyString}. Some examples are: 24240@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the 24241@var{encoding} argument is an encoding that @value{GDBN} does 24242recognize, @value{GDBN} will raise an error. 24243 24244When a lazy string is printed, the @value{GDBN} encoding machinery is 24245used to convert the string during printing. If the optional 24246@var{encoding} argument is not provided, or is an empty string, 24247@value{GDBN} will automatically select the encoding most suitable for 24248the string type. For further information on encoding in @value{GDBN} 24249please see @ref{Character Sets}. 24250 24251If the optional @var{length} argument is given, the string will be 24252fetched and encoded to the length of characters specified. If 24253the @var{length} argument is not provided, the string will be fetched 24254and encoded until a null of appropriate width is found. 24255@end defun 24256 24257@defun Value.fetch_lazy () 24258If the @code{gdb.Value} object is currently a lazy value 24259(@code{gdb.Value.is_lazy} is @code{True}), then the value is 24260fetched from the inferior. Any errors that occur in the process 24261will produce a Python exception. 24262 24263If the @code{gdb.Value} object is not a lazy value, this method 24264has no effect. 24265 24266This method does not return a value. 24267@end defun 24268 24269 24270@node Types In Python 24271@subsubsection Types In Python 24272@cindex types in Python 24273@cindex Python, working with types 24274 24275@tindex gdb.Type 24276@value{GDBN} represents types from the inferior using the class 24277@code{gdb.Type}. 24278 24279The following type-related functions are available in the @code{gdb} 24280module: 24281 24282@findex gdb.lookup_type 24283@defun gdb.lookup_type (name @r{[}, block@r{]}) 24284This function looks up a type by name. @var{name} is the name of the 24285type to look up. It must be a string. 24286 24287If @var{block} is given, then @var{name} is looked up in that scope. 24288Otherwise, it is searched for globally. 24289 24290Ordinarily, this function will return an instance of @code{gdb.Type}. 24291If the named type cannot be found, it will throw an exception. 24292@end defun 24293 24294If the type is a structure or class type, or an enum type, the fields 24295of that type can be accessed using the Python @dfn{dictionary syntax}. 24296For example, if @code{some_type} is a @code{gdb.Type} instance holding 24297a structure type, you can access its @code{foo} field with: 24298 24299@smallexample 24300bar = some_type['foo'] 24301@end smallexample 24302 24303@code{bar} will be a @code{gdb.Field} object; see below under the 24304description of the @code{Type.fields} method for a description of the 24305@code{gdb.Field} class. 24306 24307An instance of @code{Type} has the following attributes: 24308 24309@defvar Type.code 24310The type code for this type. The type code will be one of the 24311@code{TYPE_CODE_} constants defined below. 24312@end defvar 24313 24314@defvar Type.name 24315The name of this type. If this type has no name, then @code{None} 24316is returned. 24317@end defvar 24318 24319@defvar Type.sizeof 24320The size of this type, in target @code{char} units. Usually, a 24321target's @code{char} type will be an 8-bit byte. However, on some 24322unusual platforms, this type may have a different size. 24323@end defvar 24324 24325@defvar Type.tag 24326The tag name for this type. The tag name is the name after 24327@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all 24328languages have this concept. If this type has no tag name, then 24329@code{None} is returned. 24330@end defvar 24331 24332The following methods are provided: 24333 24334@defun Type.fields () 24335For structure and union types, this method returns the fields. Range 24336types have two fields, the minimum and maximum values. Enum types 24337have one field per enum constant. Function and method types have one 24338field per parameter. The base types of C@t{++} classes are also 24339represented as fields. If the type has no fields, or does not fit 24340into one of these categories, an empty sequence will be returned. 24341 24342Each field is a @code{gdb.Field} object, with some pre-defined attributes: 24343@table @code 24344@item bitpos 24345This attribute is not available for @code{enum} or @code{static} 24346(as in C@t{++} or Java) fields. The value is the position, counting 24347in bits, from the start of the containing type. 24348 24349@item enumval 24350This attribute is only available for @code{enum} fields, and its value 24351is the enumeration member's integer representation. 24352 24353@item name 24354The name of the field, or @code{None} for anonymous fields. 24355 24356@item artificial 24357This is @code{True} if the field is artificial, usually meaning that 24358it was provided by the compiler and not the user. This attribute is 24359always provided, and is @code{False} if the field is not artificial. 24360 24361@item is_base_class 24362This is @code{True} if the field represents a base class of a C@t{++} 24363structure. This attribute is always provided, and is @code{False} 24364if the field is not a base class of the type that is the argument of 24365@code{fields}, or if that type was not a C@t{++} class. 24366 24367@item bitsize 24368If the field is packed, or is a bitfield, then this will have a 24369non-zero value, which is the size of the field in bits. Otherwise, 24370this will be zero; in this case the field's size is given by its type. 24371 24372@item type 24373The type of the field. This is usually an instance of @code{Type}, 24374but it can be @code{None} in some situations. 24375 24376@item parent_type 24377The type which contains this field. This is an instance of 24378@code{gdb.Type}. 24379@end table 24380@end defun 24381 24382@defun Type.array (@var{n1} @r{[}, @var{n2}@r{]}) 24383Return a new @code{gdb.Type} object which represents an array of this 24384type. If one argument is given, it is the inclusive upper bound of 24385the array; in this case the lower bound is zero. If two arguments are 24386given, the first argument is the lower bound of the array, and the 24387second argument is the upper bound of the array. An array's length 24388must not be negative, but the bounds can be. 24389@end defun 24390 24391@defun Type.vector (@var{n1} @r{[}, @var{n2}@r{]}) 24392Return a new @code{gdb.Type} object which represents a vector of this 24393type. If one argument is given, it is the inclusive upper bound of 24394the vector; in this case the lower bound is zero. If two arguments are 24395given, the first argument is the lower bound of the vector, and the 24396second argument is the upper bound of the vector. A vector's length 24397must not be negative, but the bounds can be. 24398 24399The difference between an @code{array} and a @code{vector} is that 24400arrays behave like in C: when used in expressions they decay to a pointer 24401to the first element whereas vectors are treated as first class values. 24402@end defun 24403 24404@defun Type.const () 24405Return a new @code{gdb.Type} object which represents a 24406@code{const}-qualified variant of this type. 24407@end defun 24408 24409@defun Type.volatile () 24410Return a new @code{gdb.Type} object which represents a 24411@code{volatile}-qualified variant of this type. 24412@end defun 24413 24414@defun Type.unqualified () 24415Return a new @code{gdb.Type} object which represents an unqualified 24416variant of this type. That is, the result is neither @code{const} nor 24417@code{volatile}. 24418@end defun 24419 24420@defun Type.range () 24421Return a Python @code{Tuple} object that contains two elements: the 24422low bound of the argument type and the high bound of that type. If 24423the type does not have a range, @value{GDBN} will raise a 24424@code{gdb.error} exception (@pxref{Exception Handling}). 24425@end defun 24426 24427@defun Type.reference () 24428Return a new @code{gdb.Type} object which represents a reference to this 24429type. 24430@end defun 24431 24432@defun Type.pointer () 24433Return a new @code{gdb.Type} object which represents a pointer to this 24434type. 24435@end defun 24436 24437@defun Type.strip_typedefs () 24438Return a new @code{gdb.Type} that represents the real type, 24439after removing all layers of typedefs. 24440@end defun 24441 24442@defun Type.target () 24443Return a new @code{gdb.Type} object which represents the target type 24444of this type. 24445 24446For a pointer type, the target type is the type of the pointed-to 24447object. For an array type (meaning C-like arrays), the target type is 24448the type of the elements of the array. For a function or method type, 24449the target type is the type of the return value. For a complex type, 24450the target type is the type of the elements. For a typedef, the 24451target type is the aliased type. 24452 24453If the type does not have a target, this method will throw an 24454exception. 24455@end defun 24456 24457@defun Type.template_argument (n @r{[}, block@r{]}) 24458If this @code{gdb.Type} is an instantiation of a template, this will 24459return a new @code{gdb.Type} which represents the type of the 24460@var{n}th template argument. 24461 24462If this @code{gdb.Type} is not a template type, this will throw an 24463exception. Ordinarily, only C@t{++} code will have template types. 24464 24465If @var{block} is given, then @var{name} is looked up in that scope. 24466Otherwise, it is searched for globally. 24467@end defun 24468 24469 24470Each type has a code, which indicates what category this type falls 24471into. The available type categories are represented by constants 24472defined in the @code{gdb} module: 24473 24474@table @code 24475@findex TYPE_CODE_PTR 24476@findex gdb.TYPE_CODE_PTR 24477@item gdb.TYPE_CODE_PTR 24478The type is a pointer. 24479 24480@findex TYPE_CODE_ARRAY 24481@findex gdb.TYPE_CODE_ARRAY 24482@item gdb.TYPE_CODE_ARRAY 24483The type is an array. 24484 24485@findex TYPE_CODE_STRUCT 24486@findex gdb.TYPE_CODE_STRUCT 24487@item gdb.TYPE_CODE_STRUCT 24488The type is a structure. 24489 24490@findex TYPE_CODE_UNION 24491@findex gdb.TYPE_CODE_UNION 24492@item gdb.TYPE_CODE_UNION 24493The type is a union. 24494 24495@findex TYPE_CODE_ENUM 24496@findex gdb.TYPE_CODE_ENUM 24497@item gdb.TYPE_CODE_ENUM 24498The type is an enum. 24499 24500@findex TYPE_CODE_FLAGS 24501@findex gdb.TYPE_CODE_FLAGS 24502@item gdb.TYPE_CODE_FLAGS 24503A bit flags type, used for things such as status registers. 24504 24505@findex TYPE_CODE_FUNC 24506@findex gdb.TYPE_CODE_FUNC 24507@item gdb.TYPE_CODE_FUNC 24508The type is a function. 24509 24510@findex TYPE_CODE_INT 24511@findex gdb.TYPE_CODE_INT 24512@item gdb.TYPE_CODE_INT 24513The type is an integer type. 24514 24515@findex TYPE_CODE_FLT 24516@findex gdb.TYPE_CODE_FLT 24517@item gdb.TYPE_CODE_FLT 24518A floating point type. 24519 24520@findex TYPE_CODE_VOID 24521@findex gdb.TYPE_CODE_VOID 24522@item gdb.TYPE_CODE_VOID 24523The special type @code{void}. 24524 24525@findex TYPE_CODE_SET 24526@findex gdb.TYPE_CODE_SET 24527@item gdb.TYPE_CODE_SET 24528A Pascal set type. 24529 24530@findex TYPE_CODE_RANGE 24531@findex gdb.TYPE_CODE_RANGE 24532@item gdb.TYPE_CODE_RANGE 24533A range type, that is, an integer type with bounds. 24534 24535@findex TYPE_CODE_STRING 24536@findex gdb.TYPE_CODE_STRING 24537@item gdb.TYPE_CODE_STRING 24538A string type. Note that this is only used for certain languages with 24539language-defined string types; C strings are not represented this way. 24540 24541@findex TYPE_CODE_BITSTRING 24542@findex gdb.TYPE_CODE_BITSTRING 24543@item gdb.TYPE_CODE_BITSTRING 24544A string of bits. It is deprecated. 24545 24546@findex TYPE_CODE_ERROR 24547@findex gdb.TYPE_CODE_ERROR 24548@item gdb.TYPE_CODE_ERROR 24549An unknown or erroneous type. 24550 24551@findex TYPE_CODE_METHOD 24552@findex gdb.TYPE_CODE_METHOD 24553@item gdb.TYPE_CODE_METHOD 24554A method type, as found in C@t{++} or Java. 24555 24556@findex TYPE_CODE_METHODPTR 24557@findex gdb.TYPE_CODE_METHODPTR 24558@item gdb.TYPE_CODE_METHODPTR 24559A pointer-to-member-function. 24560 24561@findex TYPE_CODE_MEMBERPTR 24562@findex gdb.TYPE_CODE_MEMBERPTR 24563@item gdb.TYPE_CODE_MEMBERPTR 24564A pointer-to-member. 24565 24566@findex TYPE_CODE_REF 24567@findex gdb.TYPE_CODE_REF 24568@item gdb.TYPE_CODE_REF 24569A reference type. 24570 24571@findex TYPE_CODE_CHAR 24572@findex gdb.TYPE_CODE_CHAR 24573@item gdb.TYPE_CODE_CHAR 24574A character type. 24575 24576@findex TYPE_CODE_BOOL 24577@findex gdb.TYPE_CODE_BOOL 24578@item gdb.TYPE_CODE_BOOL 24579A boolean type. 24580 24581@findex TYPE_CODE_COMPLEX 24582@findex gdb.TYPE_CODE_COMPLEX 24583@item gdb.TYPE_CODE_COMPLEX 24584A complex float type. 24585 24586@findex TYPE_CODE_TYPEDEF 24587@findex gdb.TYPE_CODE_TYPEDEF 24588@item gdb.TYPE_CODE_TYPEDEF 24589A typedef to some other type. 24590 24591@findex TYPE_CODE_NAMESPACE 24592@findex gdb.TYPE_CODE_NAMESPACE 24593@item gdb.TYPE_CODE_NAMESPACE 24594A C@t{++} namespace. 24595 24596@findex TYPE_CODE_DECFLOAT 24597@findex gdb.TYPE_CODE_DECFLOAT 24598@item gdb.TYPE_CODE_DECFLOAT 24599A decimal floating point type. 24600 24601@findex TYPE_CODE_INTERNAL_FUNCTION 24602@findex gdb.TYPE_CODE_INTERNAL_FUNCTION 24603@item gdb.TYPE_CODE_INTERNAL_FUNCTION 24604A function internal to @value{GDBN}. This is the type used to represent 24605convenience functions. 24606@end table 24607 24608Further support for types is provided in the @code{gdb.types} 24609Python module (@pxref{gdb.types}). 24610 24611@node Pretty Printing API 24612@subsubsection Pretty Printing API 24613 24614An example output is provided (@pxref{Pretty Printing}). 24615 24616A pretty-printer is just an object that holds a value and implements a 24617specific interface, defined here. 24618 24619@defun pretty_printer.children (self) 24620@value{GDBN} will call this method on a pretty-printer to compute the 24621children of the pretty-printer's value. 24622 24623This method must return an object conforming to the Python iterator 24624protocol. Each item returned by the iterator must be a tuple holding 24625two elements. The first element is the ``name'' of the child; the 24626second element is the child's value. The value can be any Python 24627object which is convertible to a @value{GDBN} value. 24628 24629This method is optional. If it does not exist, @value{GDBN} will act 24630as though the value has no children. 24631@end defun 24632 24633@defun pretty_printer.display_hint (self) 24634The CLI may call this method and use its result to change the 24635formatting of a value. The result will also be supplied to an MI 24636consumer as a @samp{displayhint} attribute of the variable being 24637printed. 24638 24639This method is optional. If it does exist, this method must return a 24640string. 24641 24642Some display hints are predefined by @value{GDBN}: 24643 24644@table @samp 24645@item array 24646Indicate that the object being printed is ``array-like''. The CLI 24647uses this to respect parameters such as @code{set print elements} and 24648@code{set print array}. 24649 24650@item map 24651Indicate that the object being printed is ``map-like'', and that the 24652children of this value can be assumed to alternate between keys and 24653values. 24654 24655@item string 24656Indicate that the object being printed is ``string-like''. If the 24657printer's @code{to_string} method returns a Python string of some 24658kind, then @value{GDBN} will call its internal language-specific 24659string-printing function to format the string. For the CLI this means 24660adding quotation marks, possibly escaping some characters, respecting 24661@code{set print elements}, and the like. 24662@end table 24663@end defun 24664 24665@defun pretty_printer.to_string (self) 24666@value{GDBN} will call this method to display the string 24667representation of the value passed to the object's constructor. 24668 24669When printing from the CLI, if the @code{to_string} method exists, 24670then @value{GDBN} will prepend its result to the values returned by 24671@code{children}. Exactly how this formatting is done is dependent on 24672the display hint, and may change as more hints are added. Also, 24673depending on the print settings (@pxref{Print Settings}), the CLI may 24674print just the result of @code{to_string} in a stack trace, omitting 24675the result of @code{children}. 24676 24677If this method returns a string, it is printed verbatim. 24678 24679Otherwise, if this method returns an instance of @code{gdb.Value}, 24680then @value{GDBN} prints this value. This may result in a call to 24681another pretty-printer. 24682 24683If instead the method returns a Python value which is convertible to a 24684@code{gdb.Value}, then @value{GDBN} performs the conversion and prints 24685the resulting value. Again, this may result in a call to another 24686pretty-printer. Python scalars (integers, floats, and booleans) and 24687strings are convertible to @code{gdb.Value}; other types are not. 24688 24689Finally, if this method returns @code{None} then no further operations 24690are peformed in this method and nothing is printed. 24691 24692If the result is not one of these types, an exception is raised. 24693@end defun 24694 24695@value{GDBN} provides a function which can be used to look up the 24696default pretty-printer for a @code{gdb.Value}: 24697 24698@findex gdb.default_visualizer 24699@defun gdb.default_visualizer (value) 24700This function takes a @code{gdb.Value} object as an argument. If a 24701pretty-printer for this value exists, then it is returned. If no such 24702printer exists, then this returns @code{None}. 24703@end defun 24704 24705@node Selecting Pretty-Printers 24706@subsubsection Selecting Pretty-Printers 24707 24708The Python list @code{gdb.pretty_printers} contains an array of 24709functions or callable objects that have been registered via addition 24710as a pretty-printer. Printers in this list are called @code{global} 24711printers, they're available when debugging all inferiors. 24712Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute. 24713Each @code{gdb.Objfile} also contains a @code{pretty_printers} 24714attribute. 24715 24716Each function on these lists is passed a single @code{gdb.Value} 24717argument and should return a pretty-printer object conforming to the 24718interface definition above (@pxref{Pretty Printing API}). If a function 24719cannot create a pretty-printer for the value, it should return 24720@code{None}. 24721 24722@value{GDBN} first checks the @code{pretty_printers} attribute of each 24723@code{gdb.Objfile} in the current program space and iteratively calls 24724each enabled lookup routine in the list for that @code{gdb.Objfile} 24725until it receives a pretty-printer object. 24726If no pretty-printer is found in the objfile lists, @value{GDBN} then 24727searches the pretty-printer list of the current program space, 24728calling each enabled function until an object is returned. 24729After these lists have been exhausted, it tries the global 24730@code{gdb.pretty_printers} list, again calling each enabled function until an 24731object is returned. 24732 24733The order in which the objfiles are searched is not specified. For a 24734given list, functions are always invoked from the head of the list, 24735and iterated over sequentially until the end of the list, or a printer 24736object is returned. 24737 24738For various reasons a pretty-printer may not work. 24739For example, the underlying data structure may have changed and 24740the pretty-printer is out of date. 24741 24742The consequences of a broken pretty-printer are severe enough that 24743@value{GDBN} provides support for enabling and disabling individual 24744printers. For example, if @code{print frame-arguments} is on, 24745a backtrace can become highly illegible if any argument is printed 24746with a broken printer. 24747 24748Pretty-printers are enabled and disabled by attaching an @code{enabled} 24749attribute to the registered function or callable object. If this attribute 24750is present and its value is @code{False}, the printer is disabled, otherwise 24751the printer is enabled. 24752 24753@node Writing a Pretty-Printer 24754@subsubsection Writing a Pretty-Printer 24755@cindex writing a pretty-printer 24756 24757A pretty-printer consists of two parts: a lookup function to detect 24758if the type is supported, and the printer itself. 24759 24760Here is an example showing how a @code{std::string} printer might be 24761written. @xref{Pretty Printing API}, for details on the API this class 24762must provide. 24763 24764@smallexample 24765class StdStringPrinter(object): 24766 "Print a std::string" 24767 24768 def __init__(self, val): 24769 self.val = val 24770 24771 def to_string(self): 24772 return self.val['_M_dataplus']['_M_p'] 24773 24774 def display_hint(self): 24775 return 'string' 24776@end smallexample 24777 24778And here is an example showing how a lookup function for the printer 24779example above might be written. 24780 24781@smallexample 24782def str_lookup_function(val): 24783 lookup_tag = val.type.tag 24784 if lookup_tag == None: 24785 return None 24786 regex = re.compile("^std::basic_string<char,.*>$") 24787 if regex.match(lookup_tag): 24788 return StdStringPrinter(val) 24789 return None 24790@end smallexample 24791 24792The example lookup function extracts the value's type, and attempts to 24793match it to a type that it can pretty-print. If it is a type the 24794printer can pretty-print, it will return a printer object. If not, it 24795returns @code{None}. 24796 24797We recommend that you put your core pretty-printers into a Python 24798package. If your pretty-printers are for use with a library, we 24799further recommend embedding a version number into the package name. 24800This practice will enable @value{GDBN} to load multiple versions of 24801your pretty-printers at the same time, because they will have 24802different names. 24803 24804You should write auto-loaded code (@pxref{Python Auto-loading}) such that it 24805can be evaluated multiple times without changing its meaning. An 24806ideal auto-load file will consist solely of @code{import}s of your 24807printer modules, followed by a call to a register pretty-printers with 24808the current objfile. 24809 24810Taken as a whole, this approach will scale nicely to multiple 24811inferiors, each potentially using a different library version. 24812Embedding a version number in the Python package name will ensure that 24813@value{GDBN} is able to load both sets of printers simultaneously. 24814Then, because the search for pretty-printers is done by objfile, and 24815because your auto-loaded code took care to register your library's 24816printers with a specific objfile, @value{GDBN} will find the correct 24817printers for the specific version of the library used by each 24818inferior. 24819 24820To continue the @code{std::string} example (@pxref{Pretty Printing API}), 24821this code might appear in @code{gdb.libstdcxx.v6}: 24822 24823@smallexample 24824def register_printers(objfile): 24825 objfile.pretty_printers.append(str_lookup_function) 24826@end smallexample 24827 24828@noindent 24829And then the corresponding contents of the auto-load file would be: 24830 24831@smallexample 24832import gdb.libstdcxx.v6 24833gdb.libstdcxx.v6.register_printers(gdb.current_objfile()) 24834@end smallexample 24835 24836The previous example illustrates a basic pretty-printer. 24837There are a few things that can be improved on. 24838The printer doesn't have a name, making it hard to identify in a 24839list of installed printers. The lookup function has a name, but 24840lookup functions can have arbitrary, even identical, names. 24841 24842Second, the printer only handles one type, whereas a library typically has 24843several types. One could install a lookup function for each desired type 24844in the library, but one could also have a single lookup function recognize 24845several types. The latter is the conventional way this is handled. 24846If a pretty-printer can handle multiple data types, then its 24847@dfn{subprinters} are the printers for the individual data types. 24848 24849The @code{gdb.printing} module provides a formal way of solving these 24850problems (@pxref{gdb.printing}). 24851Here is another example that handles multiple types. 24852 24853These are the types we are going to pretty-print: 24854 24855@smallexample 24856struct foo @{ int a, b; @}; 24857struct bar @{ struct foo x, y; @}; 24858@end smallexample 24859 24860Here are the printers: 24861 24862@smallexample 24863class fooPrinter: 24864 """Print a foo object.""" 24865 24866 def __init__(self, val): 24867 self.val = val 24868 24869 def to_string(self): 24870 return ("a=<" + str(self.val["a"]) + 24871 "> b=<" + str(self.val["b"]) + ">") 24872 24873class barPrinter: 24874 """Print a bar object.""" 24875 24876 def __init__(self, val): 24877 self.val = val 24878 24879 def to_string(self): 24880 return ("x=<" + str(self.val["x"]) + 24881 "> y=<" + str(self.val["y"]) + ">") 24882@end smallexample 24883 24884This example doesn't need a lookup function, that is handled by the 24885@code{gdb.printing} module. Instead a function is provided to build up 24886the object that handles the lookup. 24887 24888@smallexample 24889import gdb.printing 24890 24891def build_pretty_printer(): 24892 pp = gdb.printing.RegexpCollectionPrettyPrinter( 24893 "my_library") 24894 pp.add_printer('foo', '^foo$', fooPrinter) 24895 pp.add_printer('bar', '^bar$', barPrinter) 24896 return pp 24897@end smallexample 24898 24899And here is the autoload support: 24900 24901@smallexample 24902import gdb.printing 24903import my_library 24904gdb.printing.register_pretty_printer( 24905 gdb.current_objfile(), 24906 my_library.build_pretty_printer()) 24907@end smallexample 24908 24909Finally, when this printer is loaded into @value{GDBN}, here is the 24910corresponding output of @samp{info pretty-printer}: 24911 24912@smallexample 24913(gdb) info pretty-printer 24914my_library.so: 24915 my_library 24916 foo 24917 bar 24918@end smallexample 24919 24920@node Type Printing API 24921@subsubsection Type Printing API 24922@cindex type printing API for Python 24923 24924@value{GDBN} provides a way for Python code to customize type display. 24925This is mainly useful for substituting canonical typedef names for 24926types. 24927 24928@cindex type printer 24929A @dfn{type printer} is just a Python object conforming to a certain 24930protocol. A simple base class implementing the protocol is provided; 24931see @ref{gdb.types}. A type printer must supply at least: 24932 24933@defivar type_printer enabled 24934A boolean which is True if the printer is enabled, and False 24935otherwise. This is manipulated by the @code{enable type-printer} 24936and @code{disable type-printer} commands. 24937@end defivar 24938 24939@defivar type_printer name 24940The name of the type printer. This must be a string. This is used by 24941the @code{enable type-printer} and @code{disable type-printer} 24942commands. 24943@end defivar 24944 24945@defmethod type_printer instantiate (self) 24946This is called by @value{GDBN} at the start of type-printing. It is 24947only called if the type printer is enabled. This method must return a 24948new object that supplies a @code{recognize} method, as described below. 24949@end defmethod 24950 24951 24952When displaying a type, say via the @code{ptype} command, @value{GDBN} 24953will compute a list of type recognizers. This is done by iterating 24954first over the per-objfile type printers (@pxref{Objfiles In Python}), 24955followed by the per-progspace type printers (@pxref{Progspaces In 24956Python}), and finally the global type printers. 24957 24958@value{GDBN} will call the @code{instantiate} method of each enabled 24959type printer. If this method returns @code{None}, then the result is 24960ignored; otherwise, it is appended to the list of recognizers. 24961 24962Then, when @value{GDBN} is going to display a type name, it iterates 24963over the list of recognizers. For each one, it calls the recognition 24964function, stopping if the function returns a non-@code{None} value. 24965The recognition function is defined as: 24966 24967@defmethod type_recognizer recognize (self, type) 24968If @var{type} is not recognized, return @code{None}. Otherwise, 24969return a string which is to be printed as the name of @var{type}. 24970@var{type} will be an instance of @code{gdb.Type} (@pxref{Types In 24971Python}). 24972@end defmethod 24973 24974@value{GDBN} uses this two-pass approach so that type printers can 24975efficiently cache information without holding on to it too long. For 24976example, it can be convenient to look up type information in a type 24977printer and hold it for a recognizer's lifetime; if a single pass were 24978done then type printers would have to make use of the event system in 24979order to avoid holding information that could become stale as the 24980inferior changed. 24981 24982@node Frame Filter API 24983@subsubsection Filtering Frames. 24984@cindex frame filters api 24985 24986Frame filters are Python objects that manipulate the visibility of a 24987frame or frames when a backtrace (@pxref{Backtrace}) is printed by 24988@value{GDBN}. 24989 24990Only commands that print a backtrace, or, in the case of @sc{gdb/mi} 24991commands (@pxref{GDB/MI}), those that return a collection of frames 24992are affected. The commands that work with frame filters are: 24993 24994@code{backtrace} (@pxref{backtrace-command,, The backtrace command}), 24995@code{-stack-list-frames} 24996(@pxref{-stack-list-frames,, The -stack-list-frames command}), 24997@code{-stack-list-variables} (@pxref{-stack-list-variables,, The 24998-stack-list-variables command}), @code{-stack-list-arguments} 24999@pxref{-stack-list-arguments,, The -stack-list-arguments command}) and 25000@code{-stack-list-locals} (@pxref{-stack-list-locals,, The 25001-stack-list-locals command}). 25002 25003A frame filter works by taking an iterator as an argument, applying 25004actions to the contents of that iterator, and returning another 25005iterator (or, possibly, the same iterator it was provided in the case 25006where the filter does not perform any operations). Typically, frame 25007filters utilize tools such as the Python's @code{itertools} module to 25008work with and create new iterators from the source iterator. 25009Regardless of how a filter chooses to apply actions, it must not alter 25010the underlying @value{GDBN} frame or frames, or attempt to alter the 25011call-stack within @value{GDBN}. This preserves data integrity within 25012@value{GDBN}. Frame filters are executed on a priority basis and care 25013should be taken that some frame filters may have been executed before, 25014and that some frame filters will be executed after. 25015 25016An important consideration when designing frame filters, and well 25017worth reflecting upon, is that frame filters should avoid unwinding 25018the call stack if possible. Some stacks can run very deep, into the 25019tens of thousands in some cases. To search every frame when a frame 25020filter executes may be too expensive at that step. The frame filter 25021cannot know how many frames it has to iterate over, and it may have to 25022iterate through them all. This ends up duplicating effort as 25023@value{GDBN} performs this iteration when it prints the frames. If 25024the filter can defer unwinding frames until frame decorators are 25025executed, after the last filter has executed, it should. @xref{Frame 25026Decorator API}, for more information on decorators. Also, there are 25027examples for both frame decorators and filters in later chapters. 25028@xref{Writing a Frame Filter}, for more information. 25029 25030The Python dictionary @code{gdb.frame_filters} contains key/object 25031pairings that comprise a frame filter. Frame filters in this 25032dictionary are called @code{global} frame filters, and they are 25033available when debugging all inferiors. These frame filters must 25034register with the dictionary directly. In addition to the 25035@code{global} dictionary, there are other dictionaries that are loaded 25036with different inferiors via auto-loading (@pxref{Python 25037Auto-loading}). The two other areas where frame filter dictionaries 25038can be found are: @code{gdb.Progspace} which contains a 25039@code{frame_filters} dictionary attribute, and each @code{gdb.Objfile} 25040object which also contains a @code{frame_filters} dictionary 25041attribute. 25042 25043When a command is executed from @value{GDBN} that is compatible with 25044frame filters, @value{GDBN} combines the @code{global}, 25045@code{gdb.Progspace} and all @code{gdb.Objfile} dictionaries currently 25046loaded. All of the @code{gdb.Objfile} dictionaries are combined, as 25047several frames, and thus several object files, might be in use. 25048@value{GDBN} then prunes any frame filter whose @code{enabled} 25049attribute is @code{False}. This pruned list is then sorted according 25050to the @code{priority} attribute in each filter. 25051 25052Once the dictionaries are combined, pruned and sorted, @value{GDBN} 25053creates an iterator which wraps each frame in the call stack in a 25054@code{FrameDecorator} object, and calls each filter in order. The 25055output from the previous filter will always be the input to the next 25056filter, and so on. 25057 25058Frame filters have a mandatory interface which each frame filter must 25059implement, defined here: 25060 25061@defun FrameFilter.filter (iterator) 25062@value{GDBN} will call this method on a frame filter when it has 25063reached the order in the priority list for that filter. 25064 25065For example, if there are four frame filters: 25066 25067@smallexample 25068Name Priority 25069 25070Filter1 5 25071Filter2 10 25072Filter3 100 25073Filter4 1 25074@end smallexample 25075 25076The order that the frame filters will be called is: 25077 25078@smallexample 25079Filter3 -> Filter2 -> Filter1 -> Filter4 25080@end smallexample 25081 25082Note that the output from @code{Filter3} is passed to the input of 25083@code{Filter2}, and so on. 25084 25085This @code{filter} method is passed a Python iterator. This iterator 25086contains a sequence of frame decorators that wrap each 25087@code{gdb.Frame}, or a frame decorator that wraps another frame 25088decorator. The first filter that is executed in the sequence of frame 25089filters will receive an iterator entirely comprised of default 25090@code{FrameDecorator} objects. However, after each frame filter is 25091executed, the previous frame filter may have wrapped some or all of 25092the frame decorators with their own frame decorator. As frame 25093decorators must also conform to a mandatory interface, these 25094decorators can be assumed to act in a uniform manner (@pxref{Frame 25095Decorator API}). 25096 25097This method must return an object conforming to the Python iterator 25098protocol. Each item in the iterator must be an object conforming to 25099the frame decorator interface. If a frame filter does not wish to 25100perform any operations on this iterator, it should return that 25101iterator untouched. 25102 25103This method is not optional. If it does not exist, @value{GDBN} will 25104raise and print an error. 25105@end defun 25106 25107@defvar FrameFilter.name 25108The @code{name} attribute must be Python string which contains the 25109name of the filter displayed by @value{GDBN} (@pxref{Frame Filter 25110Management}). This attribute may contain any combination of letters 25111or numbers. Care should be taken to ensure that it is unique. This 25112attribute is mandatory. 25113@end defvar 25114 25115@defvar FrameFilter.enabled 25116The @code{enabled} attribute must be Python boolean. This attribute 25117indicates to @value{GDBN} whether the frame filter is enabled, and 25118should be considered when frame filters are executed. If 25119@code{enabled} is @code{True}, then the frame filter will be executed 25120when any of the backtrace commands detailed earlier in this chapter 25121are executed. If @code{enabled} is @code{False}, then the frame 25122filter will not be executed. This attribute is mandatory. 25123@end defvar 25124 25125@defvar FrameFilter.priority 25126The @code{priority} attribute must be Python integer. This attribute 25127controls the order of execution in relation to other frame filters. 25128There are no imposed limits on the range of @code{priority} other than 25129it must be a valid integer. The higher the @code{priority} attribute, 25130the sooner the frame filter will be executed in relation to other 25131frame filters. Although @code{priority} can be negative, it is 25132recommended practice to assume zero is the lowest priority that a 25133frame filter can be assigned. Frame filters that have the same 25134priority are executed in unsorted order in that priority slot. This 25135attribute is mandatory. 25136@end defvar 25137 25138@node Frame Decorator API 25139@subsubsection Decorating Frames. 25140@cindex frame decorator api 25141 25142Frame decorators are sister objects to frame filters (@pxref{Frame 25143Filter API}). Frame decorators are applied by a frame filter and can 25144only be used in conjunction with frame filters. 25145 25146The purpose of a frame decorator is to customize the printed content 25147of each @code{gdb.Frame} in commands where frame filters are executed. 25148This concept is called decorating a frame. Frame decorators decorate 25149a @code{gdb.Frame} with Python code contained within each API call. 25150This separates the actual data contained in a @code{gdb.Frame} from 25151the decorated data produced by a frame decorator. This abstraction is 25152necessary to maintain integrity of the data contained in each 25153@code{gdb.Frame}. 25154 25155Frame decorators have a mandatory interface, defined below. 25156 25157@value{GDBN} already contains a frame decorator called 25158@code{FrameDecorator}. This contains substantial amounts of 25159boilerplate code to decorate the content of a @code{gdb.Frame}. It is 25160recommended that other frame decorators inherit and extend this 25161object, and only to override the methods needed. 25162 25163@defun FrameDecorator.elided (self) 25164 25165The @code{elided} method groups frames together in a hierarchical 25166system. An example would be an interpreter, where multiple low-level 25167frames make up a single call in the interpreted language. In this 25168example, the frame filter would elide the low-level frames and present 25169a single high-level frame, representing the call in the interpreted 25170language, to the user. 25171 25172The @code{elided} function must return an iterable and this iterable 25173must contain the frames that are being elided wrapped in a suitable 25174frame decorator. If no frames are being elided this function may 25175return an empty iterable, or @code{None}. Elided frames are indented 25176from normal frames in a @code{CLI} backtrace, or in the case of 25177@code{GDB/MI}, are placed in the @code{children} field of the eliding 25178frame. 25179 25180It is the frame filter's task to also filter out the elided frames from 25181the source iterator. This will avoid printing the frame twice. 25182@end defun 25183 25184@defun FrameDecorator.function (self) 25185 25186This method returns the name of the function in the frame that is to 25187be printed. 25188 25189This method must return a Python string describing the function, or 25190@code{None}. 25191 25192If this function returns @code{None}, @value{GDBN} will not print any 25193data for this field. 25194@end defun 25195 25196@defun FrameDecorator.address (self) 25197 25198This method returns the address of the frame that is to be printed. 25199 25200This method must return a Python numeric integer type of sufficient 25201size to describe the address of the frame, or @code{None}. 25202 25203If this function returns a @code{None}, @value{GDBN} will not print 25204any data for this field. 25205@end defun 25206 25207@defun FrameDecorator.filename (self) 25208 25209This method returns the filename and path associated with this frame. 25210 25211This method must return a Python string containing the filename and 25212the path to the object file backing the frame, or @code{None}. 25213 25214If this function returns a @code{None}, @value{GDBN} will not print 25215any data for this field. 25216@end defun 25217 25218@defun FrameDecorator.line (self): 25219 25220This method returns the line number associated with the current 25221position within the function addressed by this frame. 25222 25223This method must return a Python integer type, or @code{None}. 25224 25225If this function returns a @code{None}, @value{GDBN} will not print 25226any data for this field. 25227@end defun 25228 25229@defun FrameDecorator.frame_args (self) 25230@anchor{frame_args} 25231 25232This method must return an iterable, or @code{None}. Returning an 25233empty iterable, or @code{None} means frame arguments will not be 25234printed for this frame. This iterable must contain objects that 25235implement two methods, described here. 25236 25237This object must implement a @code{argument} method which takes a 25238single @code{self} parameter and must return a @code{gdb.Symbol} 25239(@pxref{Symbols In Python}), or a Python string. The object must also 25240implement a @code{value} method which takes a single @code{self} 25241parameter and must return a @code{gdb.Value} (@pxref{Values From 25242Inferior}), a Python value, or @code{None}. If the @code{value} 25243method returns @code{None}, and the @code{argument} method returns a 25244@code{gdb.Symbol}, @value{GDBN} will look-up and print the value of 25245the @code{gdb.Symbol} automatically. 25246 25247A brief example: 25248 25249@smallexample 25250class SymValueWrapper(): 25251 25252 def __init__(self, symbol, value): 25253 self.sym = symbol 25254 self.val = value 25255 25256 def value(self): 25257 return self.val 25258 25259 def symbol(self): 25260 return self.sym 25261 25262class SomeFrameDecorator() 25263... 25264... 25265 def frame_args(self): 25266 args = [] 25267 try: 25268 block = self.inferior_frame.block() 25269 except: 25270 return None 25271 25272 # Iterate over all symbols in a block. Only add 25273 # symbols that are arguments. 25274 for sym in block: 25275 if not sym.is_argument: 25276 continue 25277 args.append(SymValueWrapper(sym,None)) 25278 25279 # Add example synthetic argument. 25280 args.append(SymValueWrapper(``foo'', 42)) 25281 25282 return args 25283@end smallexample 25284@end defun 25285 25286@defun FrameDecorator.frame_locals (self) 25287 25288This method must return an iterable or @code{None}. Returning an 25289empty iterable, or @code{None} means frame local arguments will not be 25290printed for this frame. 25291 25292The object interface, the description of the various strategies for 25293reading frame locals, and the example are largely similar to those 25294described in the @code{frame_args} function, (@pxref{frame_args,,The 25295frame filter frame_args function}). Below is a modified example: 25296 25297@smallexample 25298class SomeFrameDecorator() 25299... 25300... 25301 def frame_locals(self): 25302 vars = [] 25303 try: 25304 block = self.inferior_frame.block() 25305 except: 25306 return None 25307 25308 # Iterate over all symbols in a block. Add all 25309 # symbols, except arguments. 25310 for sym in block: 25311 if sym.is_argument: 25312 continue 25313 vars.append(SymValueWrapper(sym,None)) 25314 25315 # Add an example of a synthetic local variable. 25316 vars.append(SymValueWrapper(``bar'', 99)) 25317 25318 return vars 25319@end smallexample 25320@end defun 25321 25322@defun FrameDecorator.inferior_frame (self): 25323 25324This method must return the underlying @code{gdb.Frame} that this 25325frame decorator is decorating. @value{GDBN} requires the underlying 25326frame for internal frame information to determine how to print certain 25327values when printing a frame. 25328@end defun 25329 25330@node Writing a Frame Filter 25331@subsubsection Writing a Frame Filter 25332@cindex writing a frame filter 25333 25334There are three basic elements that a frame filter must implement: it 25335must correctly implement the documented interface (@pxref{Frame Filter 25336API}), it must register itself with @value{GDBN}, and finally, it must 25337decide if it is to work on the data provided by @value{GDBN}. In all 25338cases, whether it works on the iterator or not, each frame filter must 25339return an iterator. A bare-bones frame filter follows the pattern in 25340the following example. 25341 25342@smallexample 25343import gdb 25344 25345class FrameFilter(): 25346 25347 def __init__(self): 25348 # Frame filter attribute creation. 25349 # 25350 # 'name' is the name of the filter that GDB will display. 25351 # 25352 # 'priority' is the priority of the filter relative to other 25353 # filters. 25354 # 25355 # 'enabled' is a boolean that indicates whether this filter is 25356 # enabled and should be executed. 25357 25358 self.name = "Foo" 25359 self.priority = 100 25360 self.enabled = True 25361 25362 # Register this frame filter with the global frame_filters 25363 # dictionary. 25364 gdb.frame_filters[self.name] = self 25365 25366 def filter(self, frame_iter): 25367 # Just return the iterator. 25368 return frame_iter 25369@end smallexample 25370 25371The frame filter in the example above implements the three 25372requirements for all frame filters. It implements the API, self 25373registers, and makes a decision on the iterator (in this case, it just 25374returns the iterator untouched). 25375 25376The first step is attribute creation and assignment, and as shown in 25377the comments the filter assigns the following attributes: @code{name}, 25378@code{priority} and whether the filter should be enabled with the 25379@code{enabled} attribute. 25380 25381The second step is registering the frame filter with the dictionary or 25382dictionaries that the frame filter has interest in. As shown in the 25383comments, this filter just registers itself with the global dictionary 25384@code{gdb.frame_filters}. As noted earlier, @code{gdb.frame_filters} 25385is a dictionary that is initialized in the @code{gdb} module when 25386@value{GDBN} starts. What dictionary a filter registers with is an 25387important consideration. Generally, if a filter is specific to a set 25388of code, it should be registered either in the @code{objfile} or 25389@code{progspace} dictionaries as they are specific to the program 25390currently loaded in @value{GDBN}. The global dictionary is always 25391present in @value{GDBN} and is never unloaded. Any filters registered 25392with the global dictionary will exist until @value{GDBN} exits. To 25393avoid filters that may conflict, it is generally better to register 25394frame filters against the dictionaries that more closely align with 25395the usage of the filter currently in question. @xref{Python 25396Auto-loading}, for further information on auto-loading Python scripts. 25397 25398@value{GDBN} takes a hands-off approach to frame filter registration, 25399therefore it is the frame filter's responsibility to ensure 25400registration has occurred, and that any exceptions are handled 25401appropriately. In particular, you may wish to handle exceptions 25402relating to Python dictionary key uniqueness. It is mandatory that 25403the dictionary key is the same as frame filter's @code{name} 25404attribute. When a user manages frame filters (@pxref{Frame Filter 25405Management}), the names @value{GDBN} will display are those contained 25406in the @code{name} attribute. 25407 25408The final step of this example is the implementation of the 25409@code{filter} method. As shown in the example comments, we define the 25410@code{filter} method and note that the method must take an iterator, 25411and also must return an iterator. In this bare-bones example, the 25412frame filter is not very useful as it just returns the iterator 25413untouched. However this is a valid operation for frame filters that 25414have the @code{enabled} attribute set, but decide not to operate on 25415any frames. 25416 25417In the next example, the frame filter operates on all frames and 25418utilizes a frame decorator to perform some work on the frames. 25419@xref{Frame Decorator API}, for further information on the frame 25420decorator interface. 25421 25422This example works on inlined frames. It highlights frames which are 25423inlined by tagging them with an ``[inlined]'' tag. By applying a 25424frame decorator to all frames with the Python @code{itertools imap} 25425method, the example defers actions to the frame decorator. Frame 25426decorators are only processed when @value{GDBN} prints the backtrace. 25427 25428This introduces a new decision making topic: whether to perform 25429decision making operations at the filtering step, or at the printing 25430step. In this example's approach, it does not perform any filtering 25431decisions at the filtering step beyond mapping a frame decorator to 25432each frame. This allows the actual decision making to be performed 25433when each frame is printed. This is an important consideration, and 25434well worth reflecting upon when designing a frame filter. An issue 25435that frame filters should avoid is unwinding the stack if possible. 25436Some stacks can run very deep, into the tens of thousands in some 25437cases. To search every frame to determine if it is inlined ahead of 25438time may be too expensive at the filtering step. The frame filter 25439cannot know how many frames it has to iterate over, and it would have 25440to iterate through them all. This ends up duplicating effort as 25441@value{GDBN} performs this iteration when it prints the frames. 25442 25443In this example decision making can be deferred to the printing step. 25444As each frame is printed, the frame decorator can examine each frame 25445in turn when @value{GDBN} iterates. From a performance viewpoint, 25446this is the most appropriate decision to make as it avoids duplicating 25447the effort that the printing step would undertake anyway. Also, if 25448there are many frame filters unwinding the stack during filtering, it 25449can substantially delay the printing of the backtrace which will 25450result in large memory usage, and a poor user experience. 25451 25452@smallexample 25453class InlineFilter(): 25454 25455 def __init__(self): 25456 self.name = "InlinedFrameFilter" 25457 self.priority = 100 25458 self.enabled = True 25459 gdb.frame_filters[self.name] = self 25460 25461 def filter(self, frame_iter): 25462 frame_iter = itertools.imap(InlinedFrameDecorator, 25463 frame_iter) 25464 return frame_iter 25465@end smallexample 25466 25467This frame filter is somewhat similar to the earlier example, except 25468that the @code{filter} method applies a frame decorator object called 25469@code{InlinedFrameDecorator} to each element in the iterator. The 25470@code{imap} Python method is light-weight. It does not proactively 25471iterate over the iterator, but rather creates a new iterator which 25472wraps the existing one. 25473 25474Below is the frame decorator for this example. 25475 25476@smallexample 25477class InlinedFrameDecorator(FrameDecorator): 25478 25479 def __init__(self, fobj): 25480 super(InlinedFrameDecorator, self).__init__(fobj) 25481 25482 def function(self): 25483 frame = fobj.inferior_frame() 25484 name = str(frame.name()) 25485 25486 if frame.type() == gdb.INLINE_FRAME: 25487 name = name + " [inlined]" 25488 25489 return name 25490@end smallexample 25491 25492This frame decorator only defines and overrides the @code{function} 25493method. It lets the supplied @code{FrameDecorator}, which is shipped 25494with @value{GDBN}, perform the other work associated with printing 25495this frame. 25496 25497The combination of these two objects create this output from a 25498backtrace: 25499 25500@smallexample 25501#0 0x004004e0 in bar () at inline.c:11 25502#1 0x00400566 in max [inlined] (b=6, a=12) at inline.c:21 25503#2 0x00400566 in main () at inline.c:31 25504@end smallexample 25505 25506So in the case of this example, a frame decorator is applied to all 25507frames, regardless of whether they may be inlined or not. As 25508@value{GDBN} iterates over the iterator produced by the frame filters, 25509@value{GDBN} executes each frame decorator which then makes a decision 25510on what to print in the @code{function} callback. Using a strategy 25511like this is a way to defer decisions on the frame content to printing 25512time. 25513 25514@subheading Eliding Frames 25515 25516It might be that the above example is not desirable for representing 25517inlined frames, and a hierarchical approach may be preferred. If we 25518want to hierarchically represent frames, the @code{elided} frame 25519decorator interface might be preferable. 25520 25521This example approaches the issue with the @code{elided} method. This 25522example is quite long, but very simplistic. It is out-of-scope for 25523this section to write a complete example that comprehensively covers 25524all approaches of finding and printing inlined frames. However, this 25525example illustrates the approach an author might use. 25526 25527This example comprises of three sections. 25528 25529@smallexample 25530class InlineFrameFilter(): 25531 25532 def __init__(self): 25533 self.name = "InlinedFrameFilter" 25534 self.priority = 100 25535 self.enabled = True 25536 gdb.frame_filters[self.name] = self 25537 25538 def filter(self, frame_iter): 25539 return ElidingInlineIterator(frame_iter) 25540@end smallexample 25541 25542This frame filter is very similar to the other examples. The only 25543difference is this frame filter is wrapping the iterator provided to 25544it (@code{frame_iter}) with a custom iterator called 25545@code{ElidingInlineIterator}. This again defers actions to when 25546@value{GDBN} prints the backtrace, as the iterator is not traversed 25547until printing. 25548 25549The iterator for this example is as follows. It is in this section of 25550the example where decisions are made on the content of the backtrace. 25551 25552@smallexample 25553class ElidingInlineIterator: 25554 def __init__(self, ii): 25555 self.input_iterator = ii 25556 25557 def __iter__(self): 25558 return self 25559 25560 def next(self): 25561 frame = next(self.input_iterator) 25562 25563 if frame.inferior_frame().type() != gdb.INLINE_FRAME: 25564 return frame 25565 25566 try: 25567 eliding_frame = next(self.input_iterator) 25568 except StopIteration: 25569 return frame 25570 return ElidingFrameDecorator(eliding_frame, [frame]) 25571@end smallexample 25572 25573This iterator implements the Python iterator protocol. When the 25574@code{next} function is called (when @value{GDBN} prints each frame), 25575the iterator checks if this frame decorator, @code{frame}, is wrapping 25576an inlined frame. If it is not, it returns the existing frame decorator 25577untouched. If it is wrapping an inlined frame, it assumes that the 25578inlined frame was contained within the next oldest frame, 25579@code{eliding_frame}, which it fetches. It then creates and returns a 25580frame decorator, @code{ElidingFrameDecorator}, which contains both the 25581elided frame, and the eliding frame. 25582 25583@smallexample 25584class ElidingInlineDecorator(FrameDecorator): 25585 25586 def __init__(self, frame, elided_frames): 25587 super(ElidingInlineDecorator, self).__init__(frame) 25588 self.frame = frame 25589 self.elided_frames = elided_frames 25590 25591 def elided(self): 25592 return iter(self.elided_frames) 25593@end smallexample 25594 25595This frame decorator overrides one function and returns the inlined 25596frame in the @code{elided} method. As before it lets 25597@code{FrameDecorator} do the rest of the work involved in printing 25598this frame. This produces the following output. 25599 25600@smallexample 25601#0 0x004004e0 in bar () at inline.c:11 25602#2 0x00400529 in main () at inline.c:25 25603 #1 0x00400529 in max (b=6, a=12) at inline.c:15 25604@end smallexample 25605 25606In that output, @code{max} which has been inlined into @code{main} is 25607printed hierarchically. Another approach would be to combine the 25608@code{function} method, and the @code{elided} method to both print a 25609marker in the inlined frame, and also show the hierarchical 25610relationship. 25611 25612@node Inferiors In Python 25613@subsubsection Inferiors In Python 25614@cindex inferiors in Python 25615 25616@findex gdb.Inferior 25617Programs which are being run under @value{GDBN} are called inferiors 25618(@pxref{Inferiors and Programs}). Python scripts can access 25619information about and manipulate inferiors controlled by @value{GDBN} 25620via objects of the @code{gdb.Inferior} class. 25621 25622The following inferior-related functions are available in the @code{gdb} 25623module: 25624 25625@defun gdb.inferiors () 25626Return a tuple containing all inferior objects. 25627@end defun 25628 25629@defun gdb.selected_inferior () 25630Return an object representing the current inferior. 25631@end defun 25632 25633A @code{gdb.Inferior} object has the following attributes: 25634 25635@defvar Inferior.num 25636ID of inferior, as assigned by GDB. 25637@end defvar 25638 25639@defvar Inferior.pid 25640Process ID of the inferior, as assigned by the underlying operating 25641system. 25642@end defvar 25643 25644@defvar Inferior.was_attached 25645Boolean signaling whether the inferior was created using `attach', or 25646started by @value{GDBN} itself. 25647@end defvar 25648 25649A @code{gdb.Inferior} object has the following methods: 25650 25651@defun Inferior.is_valid () 25652Returns @code{True} if the @code{gdb.Inferior} object is valid, 25653@code{False} if not. A @code{gdb.Inferior} object will become invalid 25654if the inferior no longer exists within @value{GDBN}. All other 25655@code{gdb.Inferior} methods will throw an exception if it is invalid 25656at the time the method is called. 25657@end defun 25658 25659@defun Inferior.threads () 25660This method returns a tuple holding all the threads which are valid 25661when it is called. If there are no valid threads, the method will 25662return an empty tuple. 25663@end defun 25664 25665@findex Inferior.read_memory 25666@defun Inferior.read_memory (address, length) 25667Read @var{length} bytes of memory from the inferior, starting at 25668@var{address}. Returns a buffer object, which behaves much like an array 25669or a string. It can be modified and given to the 25670@code{Inferior.write_memory} function. In @code{Python} 3, the return 25671value is a @code{memoryview} object. 25672@end defun 25673 25674@findex Inferior.write_memory 25675@defun Inferior.write_memory (address, buffer @r{[}, length@r{]}) 25676Write the contents of @var{buffer} to the inferior, starting at 25677@var{address}. The @var{buffer} parameter must be a Python object 25678which supports the buffer protocol, i.e., a string, an array or the 25679object returned from @code{Inferior.read_memory}. If given, @var{length} 25680determines the number of bytes from @var{buffer} to be written. 25681@end defun 25682 25683@findex gdb.search_memory 25684@defun Inferior.search_memory (address, length, pattern) 25685Search a region of the inferior memory starting at @var{address} with 25686the given @var{length} using the search pattern supplied in 25687@var{pattern}. The @var{pattern} parameter must be a Python object 25688which supports the buffer protocol, i.e., a string, an array or the 25689object returned from @code{gdb.read_memory}. Returns a Python @code{Long} 25690containing the address where the pattern was found, or @code{None} if 25691the pattern could not be found. 25692@end defun 25693 25694@node Events In Python 25695@subsubsection Events In Python 25696@cindex inferior events in Python 25697 25698@value{GDBN} provides a general event facility so that Python code can be 25699notified of various state changes, particularly changes that occur in 25700the inferior. 25701 25702An @dfn{event} is just an object that describes some state change. The 25703type of the object and its attributes will vary depending on the details 25704of the change. All the existing events are described below. 25705 25706In order to be notified of an event, you must register an event handler 25707with an @dfn{event registry}. An event registry is an object in the 25708@code{gdb.events} module which dispatches particular events. A registry 25709provides methods to register and unregister event handlers: 25710 25711@defun EventRegistry.connect (object) 25712Add the given callable @var{object} to the registry. This object will be 25713called when an event corresponding to this registry occurs. 25714@end defun 25715 25716@defun EventRegistry.disconnect (object) 25717Remove the given @var{object} from the registry. Once removed, the object 25718will no longer receive notifications of events. 25719@end defun 25720 25721Here is an example: 25722 25723@smallexample 25724def exit_handler (event): 25725 print "event type: exit" 25726 print "exit code: %d" % (event.exit_code) 25727 25728gdb.events.exited.connect (exit_handler) 25729@end smallexample 25730 25731In the above example we connect our handler @code{exit_handler} to the 25732registry @code{events.exited}. Once connected, @code{exit_handler} gets 25733called when the inferior exits. The argument @dfn{event} in this example is 25734of type @code{gdb.ExitedEvent}. As you can see in the example the 25735@code{ExitedEvent} object has an attribute which indicates the exit code of 25736the inferior. 25737 25738The following is a listing of the event registries that are available and 25739details of the events they emit: 25740 25741@table @code 25742 25743@item events.cont 25744Emits @code{gdb.ThreadEvent}. 25745 25746Some events can be thread specific when @value{GDBN} is running in non-stop 25747mode. When represented in Python, these events all extend 25748@code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead, 25749events which are emitted by this or other modules might extend this event. 25750Examples of these events are @code{gdb.BreakpointEvent} and 25751@code{gdb.ContinueEvent}. 25752 25753@defvar ThreadEvent.inferior_thread 25754In non-stop mode this attribute will be set to the specific thread which was 25755involved in the emitted event. Otherwise, it will be set to @code{None}. 25756@end defvar 25757 25758Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}. 25759 25760This event indicates that the inferior has been continued after a stop. For 25761inherited attribute refer to @code{gdb.ThreadEvent} above. 25762 25763@item events.exited 25764Emits @code{events.ExitedEvent} which indicates that the inferior has exited. 25765@code{events.ExitedEvent} has two attributes: 25766@defvar ExitedEvent.exit_code 25767An integer representing the exit code, if available, which the inferior 25768has returned. (The exit code could be unavailable if, for example, 25769@value{GDBN} detaches from the inferior.) If the exit code is unavailable, 25770the attribute does not exist. 25771@end defvar 25772@defvar ExitedEvent inferior 25773A reference to the inferior which triggered the @code{exited} event. 25774@end defvar 25775 25776@item events.stop 25777Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}. 25778 25779Indicates that the inferior has stopped. All events emitted by this registry 25780extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent} 25781will indicate the stopped thread when @value{GDBN} is running in non-stop 25782mode. Refer to @code{gdb.ThreadEvent} above for more details. 25783 25784Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}. 25785 25786This event indicates that the inferior or one of its threads has received as 25787signal. @code{gdb.SignalEvent} has the following attributes: 25788 25789@defvar SignalEvent.stop_signal 25790A string representing the signal received by the inferior. A list of possible 25791signal values can be obtained by running the command @code{info signals} in 25792the @value{GDBN} command prompt. 25793@end defvar 25794 25795Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}. 25796 25797@code{gdb.BreakpointEvent} event indicates that one or more breakpoints have 25798been hit, and has the following attributes: 25799 25800@defvar BreakpointEvent.breakpoints 25801A sequence containing references to all the breakpoints (type 25802@code{gdb.Breakpoint}) that were hit. 25803@xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object. 25804@end defvar 25805@defvar BreakpointEvent.breakpoint 25806A reference to the first breakpoint that was hit. 25807This function is maintained for backward compatibility and is now deprecated 25808in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute. 25809@end defvar 25810 25811@item events.new_objfile 25812Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has 25813been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute: 25814 25815@defvar NewObjFileEvent.new_objfile 25816A reference to the object file (@code{gdb.Objfile}) which has been loaded. 25817@xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object. 25818@end defvar 25819 25820@end table 25821 25822@node Threads In Python 25823@subsubsection Threads In Python 25824@cindex threads in python 25825 25826@findex gdb.InferiorThread 25827Python scripts can access information about, and manipulate inferior threads 25828controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class. 25829 25830The following thread-related functions are available in the @code{gdb} 25831module: 25832 25833@findex gdb.selected_thread 25834@defun gdb.selected_thread () 25835This function returns the thread object for the selected thread. If there 25836is no selected thread, this will return @code{None}. 25837@end defun 25838 25839A @code{gdb.InferiorThread} object has the following attributes: 25840 25841@defvar InferiorThread.name 25842The name of the thread. If the user specified a name using 25843@code{thread name}, then this returns that name. Otherwise, if an 25844OS-supplied name is available, then it is returned. Otherwise, this 25845returns @code{None}. 25846 25847This attribute can be assigned to. The new value must be a string 25848object, which sets the new name, or @code{None}, which removes any 25849user-specified thread name. 25850@end defvar 25851 25852@defvar InferiorThread.num 25853ID of the thread, as assigned by GDB. 25854@end defvar 25855 25856@defvar InferiorThread.ptid 25857ID of the thread, as assigned by the operating system. This attribute is a 25858tuple containing three integers. The first is the Process ID (PID); the second 25859is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID). 25860Either the LWPID or TID may be 0, which indicates that the operating system 25861does not use that identifier. 25862@end defvar 25863 25864A @code{gdb.InferiorThread} object has the following methods: 25865 25866@defun InferiorThread.is_valid () 25867Returns @code{True} if the @code{gdb.InferiorThread} object is valid, 25868@code{False} if not. A @code{gdb.InferiorThread} object will become 25869invalid if the thread exits, or the inferior that the thread belongs 25870is deleted. All other @code{gdb.InferiorThread} methods will throw an 25871exception if it is invalid at the time the method is called. 25872@end defun 25873 25874@defun InferiorThread.switch () 25875This changes @value{GDBN}'s currently selected thread to the one represented 25876by this object. 25877@end defun 25878 25879@defun InferiorThread.is_stopped () 25880Return a Boolean indicating whether the thread is stopped. 25881@end defun 25882 25883@defun InferiorThread.is_running () 25884Return a Boolean indicating whether the thread is running. 25885@end defun 25886 25887@defun InferiorThread.is_exited () 25888Return a Boolean indicating whether the thread is exited. 25889@end defun 25890 25891@node Commands In Python 25892@subsubsection Commands In Python 25893 25894@cindex commands in python 25895@cindex python commands 25896You can implement new @value{GDBN} CLI commands in Python. A CLI 25897command is implemented using an instance of the @code{gdb.Command} 25898class, most commonly using a subclass. 25899 25900@defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]}) 25901The object initializer for @code{Command} registers the new command 25902with @value{GDBN}. This initializer is normally invoked from the 25903subclass' own @code{__init__} method. 25904 25905@var{name} is the name of the command. If @var{name} consists of 25906multiple words, then the initial words are looked for as prefix 25907commands. In this case, if one of the prefix commands does not exist, 25908an exception is raised. 25909 25910There is no support for multi-line commands. 25911 25912@var{command_class} should be one of the @samp{COMMAND_} constants 25913defined below. This argument tells @value{GDBN} how to categorize the 25914new command in the help system. 25915 25916@var{completer_class} is an optional argument. If given, it should be 25917one of the @samp{COMPLETE_} constants defined below. This argument 25918tells @value{GDBN} how to perform completion for this command. If not 25919given, @value{GDBN} will attempt to complete using the object's 25920@code{complete} method (see below); if no such method is found, an 25921error will occur when completion is attempted. 25922 25923@var{prefix} is an optional argument. If @code{True}, then the new 25924command is a prefix command; sub-commands of this command may be 25925registered. 25926 25927The help text for the new command is taken from the Python 25928documentation string for the command's class, if there is one. If no 25929documentation string is provided, the default value ``This command is 25930not documented.'' is used. 25931@end defun 25932 25933@cindex don't repeat Python command 25934@defun Command.dont_repeat () 25935By default, a @value{GDBN} command is repeated when the user enters a 25936blank line at the command prompt. A command can suppress this 25937behavior by invoking the @code{dont_repeat} method. This is similar 25938to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}. 25939@end defun 25940 25941@defun Command.invoke (argument, from_tty) 25942This method is called by @value{GDBN} when this command is invoked. 25943 25944@var{argument} is a string. It is the argument to the command, after 25945leading and trailing whitespace has been stripped. 25946 25947@var{from_tty} is a boolean argument. When true, this means that the 25948command was entered by the user at the terminal; when false it means 25949that the command came from elsewhere. 25950 25951If this method throws an exception, it is turned into a @value{GDBN} 25952@code{error} call. Otherwise, the return value is ignored. 25953 25954@findex gdb.string_to_argv 25955To break @var{argument} up into an argv-like string use 25956@code{gdb.string_to_argv}. This function behaves identically to 25957@value{GDBN}'s internal argument lexer @code{buildargv}. 25958It is recommended to use this for consistency. 25959Arguments are separated by spaces and may be quoted. 25960Example: 25961 25962@smallexample 25963print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"") 25964['1', '2 "3', '4 "5', "6 '7"] 25965@end smallexample 25966 25967@end defun 25968 25969@cindex completion of Python commands 25970@defun Command.complete (text, word) 25971This method is called by @value{GDBN} when the user attempts 25972completion on this command. All forms of completion are handled by 25973this method, that is, the @key{TAB} and @key{M-?} key bindings 25974(@pxref{Completion}), and the @code{complete} command (@pxref{Help, 25975complete}). 25976 25977The arguments @var{text} and @var{word} are both strings. @var{text} 25978holds the complete command line up to the cursor's location. 25979@var{word} holds the last word of the command line; this is computed 25980using a word-breaking heuristic. 25981 25982The @code{complete} method can return several values: 25983@itemize @bullet 25984@item 25985If the return value is a sequence, the contents of the sequence are 25986used as the completions. It is up to @code{complete} to ensure that the 25987contents actually do complete the word. A zero-length sequence is 25988allowed, it means that there were no completions available. Only 25989string elements of the sequence are used; other elements in the 25990sequence are ignored. 25991 25992@item 25993If the return value is one of the @samp{COMPLETE_} constants defined 25994below, then the corresponding @value{GDBN}-internal completion 25995function is invoked, and its result is used. 25996 25997@item 25998All other results are treated as though there were no available 25999completions. 26000@end itemize 26001@end defun 26002 26003When a new command is registered, it must be declared as a member of 26004some general class of commands. This is used to classify top-level 26005commands in the on-line help system; note that prefix commands are not 26006listed under their own category but rather that of their top-level 26007command. The available classifications are represented by constants 26008defined in the @code{gdb} module: 26009 26010@table @code 26011@findex COMMAND_NONE 26012@findex gdb.COMMAND_NONE 26013@item gdb.COMMAND_NONE 26014The command does not belong to any particular class. A command in 26015this category will not be displayed in any of the help categories. 26016 26017@findex COMMAND_RUNNING 26018@findex gdb.COMMAND_RUNNING 26019@item gdb.COMMAND_RUNNING 26020The command is related to running the inferior. For example, 26021@code{start}, @code{step}, and @code{continue} are in this category. 26022Type @kbd{help running} at the @value{GDBN} prompt to see a list of 26023commands in this category. 26024 26025@findex COMMAND_DATA 26026@findex gdb.COMMAND_DATA 26027@item gdb.COMMAND_DATA 26028The command is related to data or variables. For example, 26029@code{call}, @code{find}, and @code{print} are in this category. Type 26030@kbd{help data} at the @value{GDBN} prompt to see a list of commands 26031in this category. 26032 26033@findex COMMAND_STACK 26034@findex gdb.COMMAND_STACK 26035@item gdb.COMMAND_STACK 26036The command has to do with manipulation of the stack. For example, 26037@code{backtrace}, @code{frame}, and @code{return} are in this 26038category. Type @kbd{help stack} at the @value{GDBN} prompt to see a 26039list of commands in this category. 26040 26041@findex COMMAND_FILES 26042@findex gdb.COMMAND_FILES 26043@item gdb.COMMAND_FILES 26044This class is used for file-related commands. For example, 26045@code{file}, @code{list} and @code{section} are in this category. 26046Type @kbd{help files} at the @value{GDBN} prompt to see a list of 26047commands in this category. 26048 26049@findex COMMAND_SUPPORT 26050@findex gdb.COMMAND_SUPPORT 26051@item gdb.COMMAND_SUPPORT 26052This should be used for ``support facilities'', generally meaning 26053things that are useful to the user when interacting with @value{GDBN}, 26054but not related to the state of the inferior. For example, 26055@code{help}, @code{make}, and @code{shell} are in this category. Type 26056@kbd{help support} at the @value{GDBN} prompt to see a list of 26057commands in this category. 26058 26059@findex COMMAND_STATUS 26060@findex gdb.COMMAND_STATUS 26061@item gdb.COMMAND_STATUS 26062The command is an @samp{info}-related command, that is, related to the 26063state of @value{GDBN} itself. For example, @code{info}, @code{macro}, 26064and @code{show} are in this category. Type @kbd{help status} at the 26065@value{GDBN} prompt to see a list of commands in this category. 26066 26067@findex COMMAND_BREAKPOINTS 26068@findex gdb.COMMAND_BREAKPOINTS 26069@item gdb.COMMAND_BREAKPOINTS 26070The command has to do with breakpoints. For example, @code{break}, 26071@code{clear}, and @code{delete} are in this category. Type @kbd{help 26072breakpoints} at the @value{GDBN} prompt to see a list of commands in 26073this category. 26074 26075@findex COMMAND_TRACEPOINTS 26076@findex gdb.COMMAND_TRACEPOINTS 26077@item gdb.COMMAND_TRACEPOINTS 26078The command has to do with tracepoints. For example, @code{trace}, 26079@code{actions}, and @code{tfind} are in this category. Type 26080@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of 26081commands in this category. 26082 26083@findex COMMAND_USER 26084@findex gdb.COMMAND_USER 26085@item gdb.COMMAND_USER 26086The command is a general purpose command for the user, and typically 26087does not fit in one of the other categories. 26088Type @kbd{help user-defined} at the @value{GDBN} prompt to see 26089a list of commands in this category, as well as the list of gdb macros 26090(@pxref{Sequences}). 26091 26092@findex COMMAND_OBSCURE 26093@findex gdb.COMMAND_OBSCURE 26094@item gdb.COMMAND_OBSCURE 26095The command is only used in unusual circumstances, or is not of 26096general interest to users. For example, @code{checkpoint}, 26097@code{fork}, and @code{stop} are in this category. Type @kbd{help 26098obscure} at the @value{GDBN} prompt to see a list of commands in this 26099category. 26100 26101@findex COMMAND_MAINTENANCE 26102@findex gdb.COMMAND_MAINTENANCE 26103@item gdb.COMMAND_MAINTENANCE 26104The command is only useful to @value{GDBN} maintainers. The 26105@code{maintenance} and @code{flushregs} commands are in this category. 26106Type @kbd{help internals} at the @value{GDBN} prompt to see a list of 26107commands in this category. 26108@end table 26109 26110A new command can use a predefined completion function, either by 26111specifying it via an argument at initialization, or by returning it 26112from the @code{complete} method. These predefined completion 26113constants are all defined in the @code{gdb} module: 26114 26115@table @code 26116@findex COMPLETE_NONE 26117@findex gdb.COMPLETE_NONE 26118@item gdb.COMPLETE_NONE 26119This constant means that no completion should be done. 26120 26121@findex COMPLETE_FILENAME 26122@findex gdb.COMPLETE_FILENAME 26123@item gdb.COMPLETE_FILENAME 26124This constant means that filename completion should be performed. 26125 26126@findex COMPLETE_LOCATION 26127@findex gdb.COMPLETE_LOCATION 26128@item gdb.COMPLETE_LOCATION 26129This constant means that location completion should be done. 26130@xref{Specify Location}. 26131 26132@findex COMPLETE_COMMAND 26133@findex gdb.COMPLETE_COMMAND 26134@item gdb.COMPLETE_COMMAND 26135This constant means that completion should examine @value{GDBN} 26136command names. 26137 26138@findex COMPLETE_SYMBOL 26139@findex gdb.COMPLETE_SYMBOL 26140@item gdb.COMPLETE_SYMBOL 26141This constant means that completion should be done using symbol names 26142as the source. 26143 26144@findex COMPLETE_EXPRESSION 26145@findex gdb.COMPLETE_EXPRESSION 26146@item gdb.COMPLETE_EXPRESSION 26147This constant means that completion should be done on expressions. 26148Often this means completing on symbol names, but some language 26149parsers also have support for completing on field names. 26150@end table 26151 26152The following code snippet shows how a trivial CLI command can be 26153implemented in Python: 26154 26155@smallexample 26156class HelloWorld (gdb.Command): 26157 """Greet the whole world.""" 26158 26159 def __init__ (self): 26160 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER) 26161 26162 def invoke (self, arg, from_tty): 26163 print "Hello, World!" 26164 26165HelloWorld () 26166@end smallexample 26167 26168The last line instantiates the class, and is necessary to trigger the 26169registration of the command with @value{GDBN}. Depending on how the 26170Python code is read into @value{GDBN}, you may need to import the 26171@code{gdb} module explicitly. 26172 26173@node Parameters In Python 26174@subsubsection Parameters In Python 26175 26176@cindex parameters in python 26177@cindex python parameters 26178@tindex gdb.Parameter 26179@tindex Parameter 26180You can implement new @value{GDBN} parameters using Python. A new 26181parameter is implemented as an instance of the @code{gdb.Parameter} 26182class. 26183 26184Parameters are exposed to the user via the @code{set} and 26185@code{show} commands. @xref{Help}. 26186 26187There are many parameters that already exist and can be set in 26188@value{GDBN}. Two examples are: @code{set follow fork} and 26189@code{set charset}. Setting these parameters influences certain 26190behavior in @value{GDBN}. Similarly, you can define parameters that 26191can be used to influence behavior in custom Python scripts and commands. 26192 26193@defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]}) 26194The object initializer for @code{Parameter} registers the new 26195parameter with @value{GDBN}. This initializer is normally invoked 26196from the subclass' own @code{__init__} method. 26197 26198@var{name} is the name of the new parameter. If @var{name} consists 26199of multiple words, then the initial words are looked for as prefix 26200parameters. An example of this can be illustrated with the 26201@code{set print} set of parameters. If @var{name} is 26202@code{print foo}, then @code{print} will be searched as the prefix 26203parameter. In this case the parameter can subsequently be accessed in 26204@value{GDBN} as @code{set print foo}. 26205 26206If @var{name} consists of multiple words, and no prefix parameter group 26207can be found, an exception is raised. 26208 26209@var{command-class} should be one of the @samp{COMMAND_} constants 26210(@pxref{Commands In Python}). This argument tells @value{GDBN} how to 26211categorize the new parameter in the help system. 26212 26213@var{parameter-class} should be one of the @samp{PARAM_} constants 26214defined below. This argument tells @value{GDBN} the type of the new 26215parameter; this information is used for input validation and 26216completion. 26217 26218If @var{parameter-class} is @code{PARAM_ENUM}, then 26219@var{enum-sequence} must be a sequence of strings. These strings 26220represent the possible values for the parameter. 26221 26222If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence 26223of a fourth argument will cause an exception to be thrown. 26224 26225The help text for the new parameter is taken from the Python 26226documentation string for the parameter's class, if there is one. If 26227there is no documentation string, a default value is used. 26228@end defun 26229 26230@defvar Parameter.set_doc 26231If this attribute exists, and is a string, then its value is used as 26232the help text for this parameter's @code{set} command. The value is 26233examined when @code{Parameter.__init__} is invoked; subsequent changes 26234have no effect. 26235@end defvar 26236 26237@defvar Parameter.show_doc 26238If this attribute exists, and is a string, then its value is used as 26239the help text for this parameter's @code{show} command. The value is 26240examined when @code{Parameter.__init__} is invoked; subsequent changes 26241have no effect. 26242@end defvar 26243 26244@defvar Parameter.value 26245The @code{value} attribute holds the underlying value of the 26246parameter. It can be read and assigned to just as any other 26247attribute. @value{GDBN} does validation when assignments are made. 26248@end defvar 26249 26250There are two methods that should be implemented in any 26251@code{Parameter} class. These are: 26252 26253@defun Parameter.get_set_string (self) 26254@value{GDBN} will call this method when a @var{parameter}'s value has 26255been changed via the @code{set} API (for example, @kbd{set foo off}). 26256The @code{value} attribute has already been populated with the new 26257value and may be used in output. This method must return a string. 26258@end defun 26259 26260@defun Parameter.get_show_string (self, svalue) 26261@value{GDBN} will call this method when a @var{parameter}'s 26262@code{show} API has been invoked (for example, @kbd{show foo}). The 26263argument @code{svalue} receives the string representation of the 26264current value. This method must return a string. 26265@end defun 26266 26267When a new parameter is defined, its type must be specified. The 26268available types are represented by constants defined in the @code{gdb} 26269module: 26270 26271@table @code 26272@findex PARAM_BOOLEAN 26273@findex gdb.PARAM_BOOLEAN 26274@item gdb.PARAM_BOOLEAN 26275The value is a plain boolean. The Python boolean values, @code{True} 26276and @code{False} are the only valid values. 26277 26278@findex PARAM_AUTO_BOOLEAN 26279@findex gdb.PARAM_AUTO_BOOLEAN 26280@item gdb.PARAM_AUTO_BOOLEAN 26281The value has three possible states: true, false, and @samp{auto}. In 26282Python, true and false are represented using boolean constants, and 26283@samp{auto} is represented using @code{None}. 26284 26285@findex PARAM_UINTEGER 26286@findex gdb.PARAM_UINTEGER 26287@item gdb.PARAM_UINTEGER 26288The value is an unsigned integer. The value of 0 should be 26289interpreted to mean ``unlimited''. 26290 26291@findex PARAM_INTEGER 26292@findex gdb.PARAM_INTEGER 26293@item gdb.PARAM_INTEGER 26294The value is a signed integer. The value of 0 should be interpreted 26295to mean ``unlimited''. 26296 26297@findex PARAM_STRING 26298@findex gdb.PARAM_STRING 26299@item gdb.PARAM_STRING 26300The value is a string. When the user modifies the string, any escape 26301sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are 26302translated into corresponding characters and encoded into the current 26303host charset. 26304 26305@findex PARAM_STRING_NOESCAPE 26306@findex gdb.PARAM_STRING_NOESCAPE 26307@item gdb.PARAM_STRING_NOESCAPE 26308The value is a string. When the user modifies the string, escapes are 26309passed through untranslated. 26310 26311@findex PARAM_OPTIONAL_FILENAME 26312@findex gdb.PARAM_OPTIONAL_FILENAME 26313@item gdb.PARAM_OPTIONAL_FILENAME 26314The value is a either a filename (a string), or @code{None}. 26315 26316@findex PARAM_FILENAME 26317@findex gdb.PARAM_FILENAME 26318@item gdb.PARAM_FILENAME 26319The value is a filename. This is just like 26320@code{PARAM_STRING_NOESCAPE}, but uses file names for completion. 26321 26322@findex PARAM_ZINTEGER 26323@findex gdb.PARAM_ZINTEGER 26324@item gdb.PARAM_ZINTEGER 26325The value is an integer. This is like @code{PARAM_INTEGER}, except 0 26326is interpreted as itself. 26327 26328@findex PARAM_ENUM 26329@findex gdb.PARAM_ENUM 26330@item gdb.PARAM_ENUM 26331The value is a string, which must be one of a collection string 26332constants provided when the parameter is created. 26333@end table 26334 26335@node Functions In Python 26336@subsubsection Writing new convenience functions 26337 26338@cindex writing convenience functions 26339@cindex convenience functions in python 26340@cindex python convenience functions 26341@tindex gdb.Function 26342@tindex Function 26343You can implement new convenience functions (@pxref{Convenience Vars}) 26344in Python. A convenience function is an instance of a subclass of the 26345class @code{gdb.Function}. 26346 26347@defun Function.__init__ (name) 26348The initializer for @code{Function} registers the new function with 26349@value{GDBN}. The argument @var{name} is the name of the function, 26350a string. The function will be visible to the user as a convenience 26351variable of type @code{internal function}, whose name is the same as 26352the given @var{name}. 26353 26354The documentation for the new function is taken from the documentation 26355string for the new class. 26356@end defun 26357 26358@defun Function.invoke (@var{*args}) 26359When a convenience function is evaluated, its arguments are converted 26360to instances of @code{gdb.Value}, and then the function's 26361@code{invoke} method is called. Note that @value{GDBN} does not 26362predetermine the arity of convenience functions. Instead, all 26363available arguments are passed to @code{invoke}, following the 26364standard Python calling convention. In particular, a convenience 26365function can have default values for parameters without ill effect. 26366 26367The return value of this method is used as its value in the enclosing 26368expression. If an ordinary Python value is returned, it is converted 26369to a @code{gdb.Value} following the usual rules. 26370@end defun 26371 26372The following code snippet shows how a trivial convenience function can 26373be implemented in Python: 26374 26375@smallexample 26376class Greet (gdb.Function): 26377 """Return string to greet someone. 26378Takes a name as argument.""" 26379 26380 def __init__ (self): 26381 super (Greet, self).__init__ ("greet") 26382 26383 def invoke (self, name): 26384 return "Hello, %s!" % name.string () 26385 26386Greet () 26387@end smallexample 26388 26389The last line instantiates the class, and is necessary to trigger the 26390registration of the function with @value{GDBN}. Depending on how the 26391Python code is read into @value{GDBN}, you may need to import the 26392@code{gdb} module explicitly. 26393 26394Now you can use the function in an expression: 26395 26396@smallexample 26397(gdb) print $greet("Bob") 26398$1 = "Hello, Bob!" 26399@end smallexample 26400 26401@node Progspaces In Python 26402@subsubsection Program Spaces In Python 26403 26404@cindex progspaces in python 26405@tindex gdb.Progspace 26406@tindex Progspace 26407A program space, or @dfn{progspace}, represents a symbolic view 26408of an address space. 26409It consists of all of the objfiles of the program. 26410@xref{Objfiles In Python}. 26411@xref{Inferiors and Programs, program spaces}, for more details 26412about program spaces. 26413 26414The following progspace-related functions are available in the 26415@code{gdb} module: 26416 26417@findex gdb.current_progspace 26418@defun gdb.current_progspace () 26419This function returns the program space of the currently selected inferior. 26420@xref{Inferiors and Programs}. 26421@end defun 26422 26423@findex gdb.progspaces 26424@defun gdb.progspaces () 26425Return a sequence of all the progspaces currently known to @value{GDBN}. 26426@end defun 26427 26428Each progspace is represented by an instance of the @code{gdb.Progspace} 26429class. 26430 26431@defvar Progspace.filename 26432The file name of the progspace as a string. 26433@end defvar 26434 26435@defvar Progspace.pretty_printers 26436The @code{pretty_printers} attribute is a list of functions. It is 26437used to look up pretty-printers. A @code{Value} is passed to each 26438function in order; if the function returns @code{None}, then the 26439search continues. Otherwise, the return value should be an object 26440which is used to format the value. @xref{Pretty Printing API}, for more 26441information. 26442@end defvar 26443 26444@defvar Progspace.type_printers 26445The @code{type_printers} attribute is a list of type printer objects. 26446@xref{Type Printing API}, for more information. 26447@end defvar 26448 26449@defvar Progspace.frame_filters 26450The @code{frame_filters} attribute is a dictionary of frame filter 26451objects. @xref{Frame Filter API}, for more information. 26452@end defvar 26453 26454@node Objfiles In Python 26455@subsubsection Objfiles In Python 26456 26457@cindex objfiles in python 26458@tindex gdb.Objfile 26459@tindex Objfile 26460@value{GDBN} loads symbols for an inferior from various 26461symbol-containing files (@pxref{Files}). These include the primary 26462executable file, any shared libraries used by the inferior, and any 26463separate debug info files (@pxref{Separate Debug Files}). 26464@value{GDBN} calls these symbol-containing files @dfn{objfiles}. 26465 26466The following objfile-related functions are available in the 26467@code{gdb} module: 26468 26469@findex gdb.current_objfile 26470@defun gdb.current_objfile () 26471When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN} 26472sets the ``current objfile'' to the corresponding objfile. This 26473function returns the current objfile. If there is no current objfile, 26474this function returns @code{None}. 26475@end defun 26476 26477@findex gdb.objfiles 26478@defun gdb.objfiles () 26479Return a sequence of all the objfiles current known to @value{GDBN}. 26480@xref{Objfiles In Python}. 26481@end defun 26482 26483Each objfile is represented by an instance of the @code{gdb.Objfile} 26484class. 26485 26486@defvar Objfile.filename 26487The file name of the objfile as a string. 26488@end defvar 26489 26490@defvar Objfile.pretty_printers 26491The @code{pretty_printers} attribute is a list of functions. It is 26492used to look up pretty-printers. A @code{Value} is passed to each 26493function in order; if the function returns @code{None}, then the 26494search continues. Otherwise, the return value should be an object 26495which is used to format the value. @xref{Pretty Printing API}, for more 26496information. 26497@end defvar 26498 26499@defvar Objfile.type_printers 26500The @code{type_printers} attribute is a list of type printer objects. 26501@xref{Type Printing API}, for more information. 26502@end defvar 26503 26504@defvar Objfile.frame_filters 26505The @code{frame_filters} attribute is a dictionary of frame filter 26506objects. @xref{Frame Filter API}, for more information. 26507@end defvar 26508 26509A @code{gdb.Objfile} object has the following methods: 26510 26511@defun Objfile.is_valid () 26512Returns @code{True} if the @code{gdb.Objfile} object is valid, 26513@code{False} if not. A @code{gdb.Objfile} object can become invalid 26514if the object file it refers to is not loaded in @value{GDBN} any 26515longer. All other @code{gdb.Objfile} methods will throw an exception 26516if it is invalid at the time the method is called. 26517@end defun 26518 26519@node Frames In Python 26520@subsubsection Accessing inferior stack frames from Python. 26521 26522@cindex frames in python 26523When the debugged program stops, @value{GDBN} is able to analyze its call 26524stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class 26525represents a frame in the stack. A @code{gdb.Frame} object is only valid 26526while its corresponding frame exists in the inferior's stack. If you try 26527to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error} 26528exception (@pxref{Exception Handling}). 26529 26530Two @code{gdb.Frame} objects can be compared for equality with the @code{==} 26531operator, like: 26532 26533@smallexample 26534(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame () 26535True 26536@end smallexample 26537 26538The following frame-related functions are available in the @code{gdb} module: 26539 26540@findex gdb.selected_frame 26541@defun gdb.selected_frame () 26542Return the selected frame object. (@pxref{Selection,,Selecting a Frame}). 26543@end defun 26544 26545@findex gdb.newest_frame 26546@defun gdb.newest_frame () 26547Return the newest frame object for the selected thread. 26548@end defun 26549 26550@defun gdb.frame_stop_reason_string (reason) 26551Return a string explaining the reason why @value{GDBN} stopped unwinding 26552frames, as expressed by the given @var{reason} code (an integer, see the 26553@code{unwind_stop_reason} method further down in this section). 26554@end defun 26555 26556A @code{gdb.Frame} object has the following methods: 26557 26558@defun Frame.is_valid () 26559Returns true if the @code{gdb.Frame} object is valid, false if not. 26560A frame object can become invalid if the frame it refers to doesn't 26561exist anymore in the inferior. All @code{gdb.Frame} methods will throw 26562an exception if it is invalid at the time the method is called. 26563@end defun 26564 26565@defun Frame.name () 26566Returns the function name of the frame, or @code{None} if it can't be 26567obtained. 26568@end defun 26569 26570@defun Frame.architecture () 26571Returns the @code{gdb.Architecture} object corresponding to the frame's 26572architecture. @xref{Architectures In Python}. 26573@end defun 26574 26575@defun Frame.type () 26576Returns the type of the frame. The value can be one of: 26577@table @code 26578@item gdb.NORMAL_FRAME 26579An ordinary stack frame. 26580 26581@item gdb.DUMMY_FRAME 26582A fake stack frame that was created by @value{GDBN} when performing an 26583inferior function call. 26584 26585@item gdb.INLINE_FRAME 26586A frame representing an inlined function. The function was inlined 26587into a @code{gdb.NORMAL_FRAME} that is older than this one. 26588 26589@item gdb.TAILCALL_FRAME 26590A frame representing a tail call. @xref{Tail Call Frames}. 26591 26592@item gdb.SIGTRAMP_FRAME 26593A signal trampoline frame. This is the frame created by the OS when 26594it calls into a signal handler. 26595 26596@item gdb.ARCH_FRAME 26597A fake stack frame representing a cross-architecture call. 26598 26599@item gdb.SENTINEL_FRAME 26600This is like @code{gdb.NORMAL_FRAME}, but it is only used for the 26601newest frame. 26602@end table 26603@end defun 26604 26605@defun Frame.unwind_stop_reason () 26606Return an integer representing the reason why it's not possible to find 26607more frames toward the outermost frame. Use 26608@code{gdb.frame_stop_reason_string} to convert the value returned by this 26609function to a string. The value can be one of: 26610 26611@table @code 26612@item gdb.FRAME_UNWIND_NO_REASON 26613No particular reason (older frames should be available). 26614 26615@item gdb.FRAME_UNWIND_NULL_ID 26616The previous frame's analyzer returns an invalid result. This is no 26617longer used by @value{GDBN}, and is kept only for backward 26618compatibility. 26619 26620@item gdb.FRAME_UNWIND_OUTERMOST 26621This frame is the outermost. 26622 26623@item gdb.FRAME_UNWIND_UNAVAILABLE 26624Cannot unwind further, because that would require knowing the 26625values of registers or memory that have not been collected. 26626 26627@item gdb.FRAME_UNWIND_INNER_ID 26628This frame ID looks like it ought to belong to a NEXT frame, 26629but we got it for a PREV frame. Normally, this is a sign of 26630unwinder failure. It could also indicate stack corruption. 26631 26632@item gdb.FRAME_UNWIND_SAME_ID 26633This frame has the same ID as the previous one. That means 26634that unwinding further would almost certainly give us another 26635frame with exactly the same ID, so break the chain. Normally, 26636this is a sign of unwinder failure. It could also indicate 26637stack corruption. 26638 26639@item gdb.FRAME_UNWIND_NO_SAVED_PC 26640The frame unwinder did not find any saved PC, but we needed 26641one to unwind further. 26642 26643@item gdb.FRAME_UNWIND_FIRST_ERROR 26644Any stop reason greater or equal to this value indicates some kind 26645of error. This special value facilitates writing code that tests 26646for errors in unwinding in a way that will work correctly even if 26647the list of the other values is modified in future @value{GDBN} 26648versions. Using it, you could write: 26649@smallexample 26650reason = gdb.selected_frame().unwind_stop_reason () 26651reason_str = gdb.frame_stop_reason_string (reason) 26652if reason >= gdb.FRAME_UNWIND_FIRST_ERROR: 26653 print "An error occured: %s" % reason_str 26654@end smallexample 26655@end table 26656 26657@end defun 26658 26659@defun Frame.pc () 26660Returns the frame's resume address. 26661@end defun 26662 26663@defun Frame.block () 26664Return the frame's code block. @xref{Blocks In Python}. 26665@end defun 26666 26667@defun Frame.function () 26668Return the symbol for the function corresponding to this frame. 26669@xref{Symbols In Python}. 26670@end defun 26671 26672@defun Frame.older () 26673Return the frame that called this frame. 26674@end defun 26675 26676@defun Frame.newer () 26677Return the frame called by this frame. 26678@end defun 26679 26680@defun Frame.find_sal () 26681Return the frame's symtab and line object. 26682@xref{Symbol Tables In Python}. 26683@end defun 26684 26685@defun Frame.read_var (variable @r{[}, block@r{]}) 26686Return the value of @var{variable} in this frame. If the optional 26687argument @var{block} is provided, search for the variable from that 26688block; otherwise start at the frame's current block (which is 26689determined by the frame's current program counter). @var{variable} 26690must be a string or a @code{gdb.Symbol} object. @var{block} must be a 26691@code{gdb.Block} object. 26692@end defun 26693 26694@defun Frame.select () 26695Set this frame to be the selected frame. @xref{Stack, ,Examining the 26696Stack}. 26697@end defun 26698 26699@node Blocks In Python 26700@subsubsection Accessing blocks from Python. 26701 26702@cindex blocks in python 26703@tindex gdb.Block 26704 26705In @value{GDBN}, symbols are stored in blocks. A block corresponds 26706roughly to a scope in the source code. Blocks are organized 26707hierarchically, and are represented individually in Python as a 26708@code{gdb.Block}. Blocks rely on debugging information being 26709available. 26710 26711A frame has a block. Please see @ref{Frames In Python}, for a more 26712in-depth discussion of frames. 26713 26714The outermost block is known as the @dfn{global block}. The global 26715block typically holds public global variables and functions. 26716 26717The block nested just inside the global block is the @dfn{static 26718block}. The static block typically holds file-scoped variables and 26719functions. 26720 26721@value{GDBN} provides a method to get a block's superblock, but there 26722is currently no way to examine the sub-blocks of a block, or to 26723iterate over all the blocks in a symbol table (@pxref{Symbol Tables In 26724Python}). 26725 26726Here is a short example that should help explain blocks: 26727 26728@smallexample 26729/* This is in the global block. */ 26730int global; 26731 26732/* This is in the static block. */ 26733static int file_scope; 26734 26735/* 'function' is in the global block, and 'argument' is 26736 in a block nested inside of 'function'. */ 26737int function (int argument) 26738@{ 26739 /* 'local' is in a block inside 'function'. It may or may 26740 not be in the same block as 'argument'. */ 26741 int local; 26742 26743 @{ 26744 /* 'inner' is in a block whose superblock is the one holding 26745 'local'. */ 26746 int inner; 26747 26748 /* If this call is expanded by the compiler, you may see 26749 a nested block here whose function is 'inline_function' 26750 and whose superblock is the one holding 'inner'. */ 26751 inline_function (); 26752 @} 26753@} 26754@end smallexample 26755 26756A @code{gdb.Block} is iterable. The iterator returns the symbols 26757(@pxref{Symbols In Python}) local to the block. Python programs 26758should not assume that a specific block object will always contain a 26759given symbol, since changes in @value{GDBN} features and 26760infrastructure may cause symbols move across blocks in a symbol 26761table. 26762 26763The following block-related functions are available in the @code{gdb} 26764module: 26765 26766@findex gdb.block_for_pc 26767@defun gdb.block_for_pc (pc) 26768Return the innermost @code{gdb.Block} containing the given @var{pc} 26769value. If the block cannot be found for the @var{pc} value specified, 26770the function will return @code{None}. 26771@end defun 26772 26773A @code{gdb.Block} object has the following methods: 26774 26775@defun Block.is_valid () 26776Returns @code{True} if the @code{gdb.Block} object is valid, 26777@code{False} if not. A block object can become invalid if the block it 26778refers to doesn't exist anymore in the inferior. All other 26779@code{gdb.Block} methods will throw an exception if it is invalid at 26780the time the method is called. The block's validity is also checked 26781during iteration over symbols of the block. 26782@end defun 26783 26784A @code{gdb.Block} object has the following attributes: 26785 26786@defvar Block.start 26787The start address of the block. This attribute is not writable. 26788@end defvar 26789 26790@defvar Block.end 26791The end address of the block. This attribute is not writable. 26792@end defvar 26793 26794@defvar Block.function 26795The name of the block represented as a @code{gdb.Symbol}. If the 26796block is not named, then this attribute holds @code{None}. This 26797attribute is not writable. 26798 26799For ordinary function blocks, the superblock is the static block. 26800However, you should note that it is possible for a function block to 26801have a superblock that is not the static block -- for instance this 26802happens for an inlined function. 26803@end defvar 26804 26805@defvar Block.superblock 26806The block containing this block. If this parent block does not exist, 26807this attribute holds @code{None}. This attribute is not writable. 26808@end defvar 26809 26810@defvar Block.global_block 26811The global block associated with this block. This attribute is not 26812writable. 26813@end defvar 26814 26815@defvar Block.static_block 26816The static block associated with this block. This attribute is not 26817writable. 26818@end defvar 26819 26820@defvar Block.is_global 26821@code{True} if the @code{gdb.Block} object is a global block, 26822@code{False} if not. This attribute is not 26823writable. 26824@end defvar 26825 26826@defvar Block.is_static 26827@code{True} if the @code{gdb.Block} object is a static block, 26828@code{False} if not. This attribute is not writable. 26829@end defvar 26830 26831@node Symbols In Python 26832@subsubsection Python representation of Symbols. 26833 26834@cindex symbols in python 26835@tindex gdb.Symbol 26836 26837@value{GDBN} represents every variable, function and type as an 26838entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}. 26839Similarly, Python represents these symbols in @value{GDBN} with the 26840@code{gdb.Symbol} object. 26841 26842The following symbol-related functions are available in the @code{gdb} 26843module: 26844 26845@findex gdb.lookup_symbol 26846@defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]}) 26847This function searches for a symbol by name. The search scope can be 26848restricted to the parameters defined in the optional domain and block 26849arguments. 26850 26851@var{name} is the name of the symbol. It must be a string. The 26852optional @var{block} argument restricts the search to symbols visible 26853in that @var{block}. The @var{block} argument must be a 26854@code{gdb.Block} object. If omitted, the block for the current frame 26855is used. The optional @var{domain} argument restricts 26856the search to the domain type. The @var{domain} argument must be a 26857domain constant defined in the @code{gdb} module and described later 26858in this chapter. 26859 26860The result is a tuple of two elements. 26861The first element is a @code{gdb.Symbol} object or @code{None} if the symbol 26862is not found. 26863If the symbol is found, the second element is @code{True} if the symbol 26864is a field of a method's object (e.g., @code{this} in C@t{++}), 26865otherwise it is @code{False}. 26866If the symbol is not found, the second element is @code{False}. 26867@end defun 26868 26869@findex gdb.lookup_global_symbol 26870@defun gdb.lookup_global_symbol (name @r{[}, domain@r{]}) 26871This function searches for a global symbol by name. 26872The search scope can be restricted to by the domain argument. 26873 26874@var{name} is the name of the symbol. It must be a string. 26875The optional @var{domain} argument restricts the search to the domain type. 26876The @var{domain} argument must be a domain constant defined in the @code{gdb} 26877module and described later in this chapter. 26878 26879The result is a @code{gdb.Symbol} object or @code{None} if the symbol 26880is not found. 26881@end defun 26882 26883A @code{gdb.Symbol} object has the following attributes: 26884 26885@defvar Symbol.type 26886The type of the symbol or @code{None} if no type is recorded. 26887This attribute is represented as a @code{gdb.Type} object. 26888@xref{Types In Python}. This attribute is not writable. 26889@end defvar 26890 26891@defvar Symbol.symtab 26892The symbol table in which the symbol appears. This attribute is 26893represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In 26894Python}. This attribute is not writable. 26895@end defvar 26896 26897@defvar Symbol.line 26898The line number in the source code at which the symbol was defined. 26899This is an integer. 26900@end defvar 26901 26902@defvar Symbol.name 26903The name of the symbol as a string. This attribute is not writable. 26904@end defvar 26905 26906@defvar Symbol.linkage_name 26907The name of the symbol, as used by the linker (i.e., may be mangled). 26908This attribute is not writable. 26909@end defvar 26910 26911@defvar Symbol.print_name 26912The name of the symbol in a form suitable for output. This is either 26913@code{name} or @code{linkage_name}, depending on whether the user 26914asked @value{GDBN} to display demangled or mangled names. 26915@end defvar 26916 26917@defvar Symbol.addr_class 26918The address class of the symbol. This classifies how to find the value 26919of a symbol. Each address class is a constant defined in the 26920@code{gdb} module and described later in this chapter. 26921@end defvar 26922 26923@defvar Symbol.needs_frame 26924This is @code{True} if evaluating this symbol's value requires a frame 26925(@pxref{Frames In Python}) and @code{False} otherwise. Typically, 26926local variables will require a frame, but other symbols will not. 26927@end defvar 26928 26929@defvar Symbol.is_argument 26930@code{True} if the symbol is an argument of a function. 26931@end defvar 26932 26933@defvar Symbol.is_constant 26934@code{True} if the symbol is a constant. 26935@end defvar 26936 26937@defvar Symbol.is_function 26938@code{True} if the symbol is a function or a method. 26939@end defvar 26940 26941@defvar Symbol.is_variable 26942@code{True} if the symbol is a variable. 26943@end defvar 26944 26945A @code{gdb.Symbol} object has the following methods: 26946 26947@defun Symbol.is_valid () 26948Returns @code{True} if the @code{gdb.Symbol} object is valid, 26949@code{False} if not. A @code{gdb.Symbol} object can become invalid if 26950the symbol it refers to does not exist in @value{GDBN} any longer. 26951All other @code{gdb.Symbol} methods will throw an exception if it is 26952invalid at the time the method is called. 26953@end defun 26954 26955@defun Symbol.value (@r{[}frame@r{]}) 26956Compute the value of the symbol, as a @code{gdb.Value}. For 26957functions, this computes the address of the function, cast to the 26958appropriate type. If the symbol requires a frame in order to compute 26959its value, then @var{frame} must be given. If @var{frame} is not 26960given, or if @var{frame} is invalid, then this method will throw an 26961exception. 26962@end defun 26963 26964The available domain categories in @code{gdb.Symbol} are represented 26965as constants in the @code{gdb} module: 26966 26967@table @code 26968@findex SYMBOL_UNDEF_DOMAIN 26969@findex gdb.SYMBOL_UNDEF_DOMAIN 26970@item gdb.SYMBOL_UNDEF_DOMAIN 26971This is used when a domain has not been discovered or none of the 26972following domains apply. This usually indicates an error either 26973in the symbol information or in @value{GDBN}'s handling of symbols. 26974@findex SYMBOL_VAR_DOMAIN 26975@findex gdb.SYMBOL_VAR_DOMAIN 26976@item gdb.SYMBOL_VAR_DOMAIN 26977This domain contains variables, function names, typedef names and enum 26978type values. 26979@findex SYMBOL_STRUCT_DOMAIN 26980@findex gdb.SYMBOL_STRUCT_DOMAIN 26981@item gdb.SYMBOL_STRUCT_DOMAIN 26982This domain holds struct, union and enum type names. 26983@findex SYMBOL_LABEL_DOMAIN 26984@findex gdb.SYMBOL_LABEL_DOMAIN 26985@item gdb.SYMBOL_LABEL_DOMAIN 26986This domain contains names of labels (for gotos). 26987@findex SYMBOL_VARIABLES_DOMAIN 26988@findex gdb.SYMBOL_VARIABLES_DOMAIN 26989@item gdb.SYMBOL_VARIABLES_DOMAIN 26990This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it 26991contains everything minus functions and types. 26992@findex SYMBOL_FUNCTIONS_DOMAIN 26993@findex gdb.SYMBOL_FUNCTIONS_DOMAIN 26994@item gdb.SYMBOL_FUNCTION_DOMAIN 26995This domain contains all functions. 26996@findex SYMBOL_TYPES_DOMAIN 26997@findex gdb.SYMBOL_TYPES_DOMAIN 26998@item gdb.SYMBOL_TYPES_DOMAIN 26999This domain contains all types. 27000@end table 27001 27002The available address class categories in @code{gdb.Symbol} are represented 27003as constants in the @code{gdb} module: 27004 27005@table @code 27006@findex SYMBOL_LOC_UNDEF 27007@findex gdb.SYMBOL_LOC_UNDEF 27008@item gdb.SYMBOL_LOC_UNDEF 27009If this is returned by address class, it indicates an error either in 27010the symbol information or in @value{GDBN}'s handling of symbols. 27011@findex SYMBOL_LOC_CONST 27012@findex gdb.SYMBOL_LOC_CONST 27013@item gdb.SYMBOL_LOC_CONST 27014Value is constant int. 27015@findex SYMBOL_LOC_STATIC 27016@findex gdb.SYMBOL_LOC_STATIC 27017@item gdb.SYMBOL_LOC_STATIC 27018Value is at a fixed address. 27019@findex SYMBOL_LOC_REGISTER 27020@findex gdb.SYMBOL_LOC_REGISTER 27021@item gdb.SYMBOL_LOC_REGISTER 27022Value is in a register. 27023@findex SYMBOL_LOC_ARG 27024@findex gdb.SYMBOL_LOC_ARG 27025@item gdb.SYMBOL_LOC_ARG 27026Value is an argument. This value is at the offset stored within the 27027symbol inside the frame's argument list. 27028@findex SYMBOL_LOC_REF_ARG 27029@findex gdb.SYMBOL_LOC_REF_ARG 27030@item gdb.SYMBOL_LOC_REF_ARG 27031Value address is stored in the frame's argument list. Just like 27032@code{LOC_ARG} except that the value's address is stored at the 27033offset, not the value itself. 27034@findex SYMBOL_LOC_REGPARM_ADDR 27035@findex gdb.SYMBOL_LOC_REGPARM_ADDR 27036@item gdb.SYMBOL_LOC_REGPARM_ADDR 27037Value is a specified register. Just like @code{LOC_REGISTER} except 27038the register holds the address of the argument instead of the argument 27039itself. 27040@findex SYMBOL_LOC_LOCAL 27041@findex gdb.SYMBOL_LOC_LOCAL 27042@item gdb.SYMBOL_LOC_LOCAL 27043Value is a local variable. 27044@findex SYMBOL_LOC_TYPEDEF 27045@findex gdb.SYMBOL_LOC_TYPEDEF 27046@item gdb.SYMBOL_LOC_TYPEDEF 27047Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all 27048have this class. 27049@findex SYMBOL_LOC_BLOCK 27050@findex gdb.SYMBOL_LOC_BLOCK 27051@item gdb.SYMBOL_LOC_BLOCK 27052Value is a block. 27053@findex SYMBOL_LOC_CONST_BYTES 27054@findex gdb.SYMBOL_LOC_CONST_BYTES 27055@item gdb.SYMBOL_LOC_CONST_BYTES 27056Value is a byte-sequence. 27057@findex SYMBOL_LOC_UNRESOLVED 27058@findex gdb.SYMBOL_LOC_UNRESOLVED 27059@item gdb.SYMBOL_LOC_UNRESOLVED 27060Value is at a fixed address, but the address of the variable has to be 27061determined from the minimal symbol table whenever the variable is 27062referenced. 27063@findex SYMBOL_LOC_OPTIMIZED_OUT 27064@findex gdb.SYMBOL_LOC_OPTIMIZED_OUT 27065@item gdb.SYMBOL_LOC_OPTIMIZED_OUT 27066The value does not actually exist in the program. 27067@findex SYMBOL_LOC_COMPUTED 27068@findex gdb.SYMBOL_LOC_COMPUTED 27069@item gdb.SYMBOL_LOC_COMPUTED 27070The value's address is a computed location. 27071@end table 27072 27073@node Symbol Tables In Python 27074@subsubsection Symbol table representation in Python. 27075 27076@cindex symbol tables in python 27077@tindex gdb.Symtab 27078@tindex gdb.Symtab_and_line 27079 27080Access to symbol table data maintained by @value{GDBN} on the inferior 27081is exposed to Python via two objects: @code{gdb.Symtab_and_line} and 27082@code{gdb.Symtab}. Symbol table and line data for a frame is returned 27083from the @code{find_sal} method in @code{gdb.Frame} object. 27084@xref{Frames In Python}. 27085 27086For more information on @value{GDBN}'s symbol table management, see 27087@ref{Symbols, ,Examining the Symbol Table}, for more information. 27088 27089A @code{gdb.Symtab_and_line} object has the following attributes: 27090 27091@defvar Symtab_and_line.symtab 27092The symbol table object (@code{gdb.Symtab}) for this frame. 27093This attribute is not writable. 27094@end defvar 27095 27096@defvar Symtab_and_line.pc 27097Indicates the start of the address range occupied by code for the 27098current source line. This attribute is not writable. 27099@end defvar 27100 27101@defvar Symtab_and_line.last 27102Indicates the end of the address range occupied by code for the current 27103source line. This attribute is not writable. 27104@end defvar 27105 27106@defvar Symtab_and_line.line 27107Indicates the current line number for this object. This 27108attribute is not writable. 27109@end defvar 27110 27111A @code{gdb.Symtab_and_line} object has the following methods: 27112 27113@defun Symtab_and_line.is_valid () 27114Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid, 27115@code{False} if not. A @code{gdb.Symtab_and_line} object can become 27116invalid if the Symbol table and line object it refers to does not 27117exist in @value{GDBN} any longer. All other 27118@code{gdb.Symtab_and_line} methods will throw an exception if it is 27119invalid at the time the method is called. 27120@end defun 27121 27122A @code{gdb.Symtab} object has the following attributes: 27123 27124@defvar Symtab.filename 27125The symbol table's source filename. This attribute is not writable. 27126@end defvar 27127 27128@defvar Symtab.objfile 27129The symbol table's backing object file. @xref{Objfiles In Python}. 27130This attribute is not writable. 27131@end defvar 27132 27133A @code{gdb.Symtab} object has the following methods: 27134 27135@defun Symtab.is_valid () 27136Returns @code{True} if the @code{gdb.Symtab} object is valid, 27137@code{False} if not. A @code{gdb.Symtab} object can become invalid if 27138the symbol table it refers to does not exist in @value{GDBN} any 27139longer. All other @code{gdb.Symtab} methods will throw an exception 27140if it is invalid at the time the method is called. 27141@end defun 27142 27143@defun Symtab.fullname () 27144Return the symbol table's source absolute file name. 27145@end defun 27146 27147@defun Symtab.global_block () 27148Return the global block of the underlying symbol table. 27149@xref{Blocks In Python}. 27150@end defun 27151 27152@defun Symtab.static_block () 27153Return the static block of the underlying symbol table. 27154@xref{Blocks In Python}. 27155@end defun 27156 27157@defun Symtab.linetable () 27158Return the line table associated with the symbol table. 27159@xref{Line Tables In Python}. 27160@end defun 27161 27162@node Line Tables In Python 27163@subsubsection Manipulating line tables using Python 27164 27165@cindex line tables in python 27166@tindex gdb.LineTable 27167 27168Python code can request and inspect line table information from a 27169symbol table that is loaded in @value{GDBN}. A line table is a 27170mapping of source lines to their executable locations in memory. To 27171acquire the line table information for a particular symbol table, use 27172the @code{linetable} function (@pxref{Symbol Tables In Python}). 27173 27174A @code{gdb.LineTable} is iterable. The iterator returns 27175@code{LineTableEntry} objects that correspond to the source line and 27176address for each line table entry. @code{LineTableEntry} objects have 27177the following attributes: 27178 27179@defvar LineTableEntry.line 27180The source line number for this line table entry. This number 27181corresponds to the actual line of source. This attribute is not 27182writable. 27183@end defvar 27184 27185@defvar LineTableEntry.pc 27186The address that is associated with the line table entry where the 27187executable code for that source line resides in memory. This 27188attribute is not writable. 27189@end defvar 27190 27191As there can be multiple addresses for a single source line, you may 27192receive multiple @code{LineTableEntry} objects with matching 27193@code{line} attributes, but with different @code{pc} attributes. The 27194iterator is sorted in ascending @code{pc} order. Here is a small 27195example illustrating iterating over a line table. 27196 27197@smallexample 27198symtab = gdb.selected_frame().find_sal().symtab 27199linetable = symtab.linetable() 27200for line in linetable: 27201 print "Line: "+str(line.line)+" Address: "+hex(line.pc) 27202@end smallexample 27203 27204This will have the following output: 27205 27206@smallexample 27207Line: 33 Address: 0x4005c8L 27208Line: 37 Address: 0x4005caL 27209Line: 39 Address: 0x4005d2L 27210Line: 40 Address: 0x4005f8L 27211Line: 42 Address: 0x4005ffL 27212Line: 44 Address: 0x400608L 27213Line: 42 Address: 0x40060cL 27214Line: 45 Address: 0x400615L 27215@end smallexample 27216 27217In addition to being able to iterate over a @code{LineTable}, it also 27218has the following direct access methods: 27219 27220@defun LineTable.line (line) 27221Return a Python @code{Tuple} of @code{LineTableEntry} objects for any 27222entries in the line table for the given @var{line}. @var{line} refers 27223to the source code line. If there are no entries for that source code 27224@var{line}, the Python @code{None} is returned. 27225@end defun 27226 27227@defun LineTable.has_line (line) 27228Return a Python @code{Boolean} indicating whether there is an entry in 27229the line table for this source line. Return @code{True} if an entry 27230is found, or @code{False} if not. 27231@end defun 27232 27233@defun LineTable.source_lines () 27234Return a Python @code{List} of the source line numbers in the symbol 27235table. Only lines with executable code locations are returned. The 27236contents of the @code{List} will just be the source line entries 27237represented as Python @code{Long} values. 27238@end defun 27239 27240@node Breakpoints In Python 27241@subsubsection Manipulating breakpoints using Python 27242 27243@cindex breakpoints in python 27244@tindex gdb.Breakpoint 27245 27246Python code can manipulate breakpoints via the @code{gdb.Breakpoint} 27247class. 27248 27249@defun Breakpoint.__init__ (spec @r{[}, type @r{[}, wp_class @r{[},internal @r{[},temporary@r{]]]]}) 27250Create a new breakpoint. @var{spec} is a string naming the location 27251of the breakpoint, or an expression that defines a watchpoint. The 27252contents can be any location recognized by the @code{break} command, 27253or in the case of a watchpoint, by the @code{watch} command. The 27254optional @var{type} denotes the breakpoint to create from the types 27255defined later in this chapter. This argument can be either: 27256@code{gdb.BP_BREAKPOINT} or @code{gdb.BP_WATCHPOINT}. @var{type} 27257defaults to @code{gdb.BP_BREAKPOINT}. The optional @var{internal} 27258argument allows the breakpoint to become invisible to the user. The 27259breakpoint will neither be reported when created, nor will it be 27260listed in the output from @code{info breakpoints} (but will be listed 27261with the @code{maint info breakpoints} command). The optional 27262@var{temporary} argument makes the breakpoint a temporary breakpoint. 27263Temporary breakpoints are deleted after they have been hit. Any 27264further access to the Python breakpoint after it has been hit will 27265result in a runtime error (as that breakpoint has now been 27266automatically deleted). The optional @var{wp_class} argument defines 27267the class of watchpoint to create, if @var{type} is 27268@code{gdb.BP_WATCHPOINT}. If a watchpoint class is not provided, it 27269is assumed to be a @code{gdb.WP_WRITE} class. 27270@end defun 27271 27272@defun Breakpoint.stop (self) 27273The @code{gdb.Breakpoint} class can be sub-classed and, in 27274particular, you may choose to implement the @code{stop} method. 27275If this method is defined in a sub-class of @code{gdb.Breakpoint}, 27276it will be called when the inferior reaches any location of a 27277breakpoint which instantiates that sub-class. If the method returns 27278@code{True}, the inferior will be stopped at the location of the 27279breakpoint, otherwise the inferior will continue. 27280 27281If there are multiple breakpoints at the same location with a 27282@code{stop} method, each one will be called regardless of the 27283return status of the previous. This ensures that all @code{stop} 27284methods have a chance to execute at that location. In this scenario 27285if one of the methods returns @code{True} but the others return 27286@code{False}, the inferior will still be stopped. 27287 27288You should not alter the execution state of the inferior (i.e.@:, step, 27289next, etc.), alter the current frame context (i.e.@:, change the current 27290active frame), or alter, add or delete any breakpoint. As a general 27291rule, you should not alter any data within @value{GDBN} or the inferior 27292at this time. 27293 27294Example @code{stop} implementation: 27295 27296@smallexample 27297class MyBreakpoint (gdb.Breakpoint): 27298 def stop (self): 27299 inf_val = gdb.parse_and_eval("foo") 27300 if inf_val == 3: 27301 return True 27302 return False 27303@end smallexample 27304@end defun 27305 27306The available watchpoint types represented by constants are defined in the 27307@code{gdb} module: 27308 27309@table @code 27310@findex WP_READ 27311@findex gdb.WP_READ 27312@item gdb.WP_READ 27313Read only watchpoint. 27314 27315@findex WP_WRITE 27316@findex gdb.WP_WRITE 27317@item gdb.WP_WRITE 27318Write only watchpoint. 27319 27320@findex WP_ACCESS 27321@findex gdb.WP_ACCESS 27322@item gdb.WP_ACCESS 27323Read/Write watchpoint. 27324@end table 27325 27326@defun Breakpoint.is_valid () 27327Return @code{True} if this @code{Breakpoint} object is valid, 27328@code{False} otherwise. A @code{Breakpoint} object can become invalid 27329if the user deletes the breakpoint. In this case, the object still 27330exists, but the underlying breakpoint does not. In the cases of 27331watchpoint scope, the watchpoint remains valid even if execution of the 27332inferior leaves the scope of that watchpoint. 27333@end defun 27334 27335@defun Breakpoint.delete 27336Permanently deletes the @value{GDBN} breakpoint. This also 27337invalidates the Python @code{Breakpoint} object. Any further access 27338to this object's attributes or methods will raise an error. 27339@end defun 27340 27341@defvar Breakpoint.enabled 27342This attribute is @code{True} if the breakpoint is enabled, and 27343@code{False} otherwise. This attribute is writable. 27344@end defvar 27345 27346@defvar Breakpoint.silent 27347This attribute is @code{True} if the breakpoint is silent, and 27348@code{False} otherwise. This attribute is writable. 27349 27350Note that a breakpoint can also be silent if it has commands and the 27351first command is @code{silent}. This is not reported by the 27352@code{silent} attribute. 27353@end defvar 27354 27355@defvar Breakpoint.thread 27356If the breakpoint is thread-specific, this attribute holds the thread 27357id. If the breakpoint is not thread-specific, this attribute is 27358@code{None}. This attribute is writable. 27359@end defvar 27360 27361@defvar Breakpoint.task 27362If the breakpoint is Ada task-specific, this attribute holds the Ada task 27363id. If the breakpoint is not task-specific (or the underlying 27364language is not Ada), this attribute is @code{None}. This attribute 27365is writable. 27366@end defvar 27367 27368@defvar Breakpoint.ignore_count 27369This attribute holds the ignore count for the breakpoint, an integer. 27370This attribute is writable. 27371@end defvar 27372 27373@defvar Breakpoint.number 27374This attribute holds the breakpoint's number --- the identifier used by 27375the user to manipulate the breakpoint. This attribute is not writable. 27376@end defvar 27377 27378@defvar Breakpoint.type 27379This attribute holds the breakpoint's type --- the identifier used to 27380determine the actual breakpoint type or use-case. This attribute is not 27381writable. 27382@end defvar 27383 27384@defvar Breakpoint.visible 27385This attribute tells whether the breakpoint is visible to the user 27386when set, or when the @samp{info breakpoints} command is run. This 27387attribute is not writable. 27388@end defvar 27389 27390@defvar Breakpoint.temporary 27391This attribute indicates whether the breakpoint was created as a 27392temporary breakpoint. Temporary breakpoints are automatically deleted 27393after that breakpoint has been hit. Access to this attribute, and all 27394other attributes and functions other than the @code{is_valid} 27395function, will result in an error after the breakpoint has been hit 27396(as it has been automatically deleted). This attribute is not 27397writable. 27398@end defvar 27399 27400The available types are represented by constants defined in the @code{gdb} 27401module: 27402 27403@table @code 27404@findex BP_BREAKPOINT 27405@findex gdb.BP_BREAKPOINT 27406@item gdb.BP_BREAKPOINT 27407Normal code breakpoint. 27408 27409@findex BP_WATCHPOINT 27410@findex gdb.BP_WATCHPOINT 27411@item gdb.BP_WATCHPOINT 27412Watchpoint breakpoint. 27413 27414@findex BP_HARDWARE_WATCHPOINT 27415@findex gdb.BP_HARDWARE_WATCHPOINT 27416@item gdb.BP_HARDWARE_WATCHPOINT 27417Hardware assisted watchpoint. 27418 27419@findex BP_READ_WATCHPOINT 27420@findex gdb.BP_READ_WATCHPOINT 27421@item gdb.BP_READ_WATCHPOINT 27422Hardware assisted read watchpoint. 27423 27424@findex BP_ACCESS_WATCHPOINT 27425@findex gdb.BP_ACCESS_WATCHPOINT 27426@item gdb.BP_ACCESS_WATCHPOINT 27427Hardware assisted access watchpoint. 27428@end table 27429 27430@defvar Breakpoint.hit_count 27431This attribute holds the hit count for the breakpoint, an integer. 27432This attribute is writable, but currently it can only be set to zero. 27433@end defvar 27434 27435@defvar Breakpoint.location 27436This attribute holds the location of the breakpoint, as specified by 27437the user. It is a string. If the breakpoint does not have a location 27438(that is, it is a watchpoint) the attribute's value is @code{None}. This 27439attribute is not writable. 27440@end defvar 27441 27442@defvar Breakpoint.expression 27443This attribute holds a breakpoint expression, as specified by 27444the user. It is a string. If the breakpoint does not have an 27445expression (the breakpoint is not a watchpoint) the attribute's value 27446is @code{None}. This attribute is not writable. 27447@end defvar 27448 27449@defvar Breakpoint.condition 27450This attribute holds the condition of the breakpoint, as specified by 27451the user. It is a string. If there is no condition, this attribute's 27452value is @code{None}. This attribute is writable. 27453@end defvar 27454 27455@defvar Breakpoint.commands 27456This attribute holds the commands attached to the breakpoint. If 27457there are commands, this attribute's value is a string holding all the 27458commands, separated by newlines. If there are no commands, this 27459attribute is @code{None}. This attribute is not writable. 27460@end defvar 27461 27462@node Finish Breakpoints in Python 27463@subsubsection Finish Breakpoints 27464 27465@cindex python finish breakpoints 27466@tindex gdb.FinishBreakpoint 27467 27468A finish breakpoint is a temporary breakpoint set at the return address of 27469a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint} 27470extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled 27471and deleted when the execution will run out of the breakpoint scope (i.e.@: 27472@code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered). 27473Finish breakpoints are thread specific and must be create with the right 27474thread selected. 27475 27476@defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]}) 27477Create a finish breakpoint at the return address of the @code{gdb.Frame} 27478object @var{frame}. If @var{frame} is not provided, this defaults to the 27479newest frame. The optional @var{internal} argument allows the breakpoint to 27480become invisible to the user. @xref{Breakpoints In Python}, for further 27481details about this argument. 27482@end defun 27483 27484@defun FinishBreakpoint.out_of_scope (self) 27485In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN} 27486@code{return} command, @dots{}), a function may not properly terminate, and 27487thus never hit the finish breakpoint. When @value{GDBN} notices such a 27488situation, the @code{out_of_scope} callback will be triggered. 27489 27490You may want to sub-class @code{gdb.FinishBreakpoint} and override this 27491method: 27492 27493@smallexample 27494class MyFinishBreakpoint (gdb.FinishBreakpoint) 27495 def stop (self): 27496 print "normal finish" 27497 return True 27498 27499 def out_of_scope (): 27500 print "abnormal finish" 27501@end smallexample 27502@end defun 27503 27504@defvar FinishBreakpoint.return_value 27505When @value{GDBN} is stopped at a finish breakpoint and the frame 27506used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this 27507attribute will contain a @code{gdb.Value} object corresponding to the return 27508value of the function. The value will be @code{None} if the function return 27509type is @code{void} or if the return value was not computable. This attribute 27510is not writable. 27511@end defvar 27512 27513@node Lazy Strings In Python 27514@subsubsection Python representation of lazy strings. 27515 27516@cindex lazy strings in python 27517@tindex gdb.LazyString 27518 27519A @dfn{lazy string} is a string whose contents is not retrieved or 27520encoded until it is needed. 27521 27522A @code{gdb.LazyString} is represented in @value{GDBN} as an 27523@code{address} that points to a region of memory, an @code{encoding} 27524that will be used to encode that region of memory, and a @code{length} 27525to delimit the region of memory that represents the string. The 27526difference between a @code{gdb.LazyString} and a string wrapped within 27527a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated 27528differently by @value{GDBN} when printing. A @code{gdb.LazyString} is 27529retrieved and encoded during printing, while a @code{gdb.Value} 27530wrapping a string is immediately retrieved and encoded on creation. 27531 27532A @code{gdb.LazyString} object has the following functions: 27533 27534@defun LazyString.value () 27535Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value 27536will point to the string in memory, but will lose all the delayed 27537retrieval, encoding and handling that @value{GDBN} applies to a 27538@code{gdb.LazyString}. 27539@end defun 27540 27541@defvar LazyString.address 27542This attribute holds the address of the string. This attribute is not 27543writable. 27544@end defvar 27545 27546@defvar LazyString.length 27547This attribute holds the length of the string in characters. If the 27548length is -1, then the string will be fetched and encoded up to the 27549first null of appropriate width. This attribute is not writable. 27550@end defvar 27551 27552@defvar LazyString.encoding 27553This attribute holds the encoding that will be applied to the string 27554when the string is printed by @value{GDBN}. If the encoding is not 27555set, or contains an empty string, then @value{GDBN} will select the 27556most appropriate encoding when the string is printed. This attribute 27557is not writable. 27558@end defvar 27559 27560@defvar LazyString.type 27561This attribute holds the type that is represented by the lazy string's 27562type. For a lazy string this will always be a pointer type. To 27563resolve this to the lazy string's character type, use the type's 27564@code{target} method. @xref{Types In Python}. This attribute is not 27565writable. 27566@end defvar 27567 27568@node Architectures In Python 27569@subsubsection Python representation of architectures 27570@cindex Python architectures 27571 27572@value{GDBN} uses architecture specific parameters and artifacts in a 27573number of its various computations. An architecture is represented 27574by an instance of the @code{gdb.Architecture} class. 27575 27576A @code{gdb.Architecture} class has the following methods: 27577 27578@defun Architecture.name () 27579Return the name (string value) of the architecture. 27580@end defun 27581 27582@defun Architecture.disassemble (@var{start_pc} @r{[}, @var{end_pc} @r{[}, @var{count}@r{]]}) 27583Return a list of disassembled instructions starting from the memory 27584address @var{start_pc}. The optional arguments @var{end_pc} and 27585@var{count} determine the number of instructions in the returned list. 27586If both the optional arguments @var{end_pc} and @var{count} are 27587specified, then a list of at most @var{count} disassembled instructions 27588whose start address falls in the closed memory address interval from 27589@var{start_pc} to @var{end_pc} are returned. If @var{end_pc} is not 27590specified, but @var{count} is specified, then @var{count} number of 27591instructions starting from the address @var{start_pc} are returned. If 27592@var{count} is not specified but @var{end_pc} is specified, then all 27593instructions whose start address falls in the closed memory address 27594interval from @var{start_pc} to @var{end_pc} are returned. If neither 27595@var{end_pc} nor @var{count} are specified, then a single instruction at 27596@var{start_pc} is returned. For all of these cases, each element of the 27597returned list is a Python @code{dict} with the following string keys: 27598 27599@table @code 27600 27601@item addr 27602The value corresponding to this key is a Python long integer capturing 27603the memory address of the instruction. 27604 27605@item asm 27606The value corresponding to this key is a string value which represents 27607the instruction with assembly language mnemonics. The assembly 27608language flavor used is the same as that specified by the current CLI 27609variable @code{disassembly-flavor}. @xref{Machine Code}. 27610 27611@item length 27612The value corresponding to this key is the length (integer value) of the 27613instruction in bytes. 27614 27615@end table 27616@end defun 27617 27618@node Python Auto-loading 27619@subsection Python Auto-loading 27620@cindex Python auto-loading 27621 27622When a new object file is read (for example, due to the @code{file} 27623command, or because the inferior has loaded a shared library), 27624@value{GDBN} will look for Python support scripts in several ways: 27625@file{@var{objfile}-gdb.py} and @code{.debug_gdb_scripts} section. 27626@xref{Auto-loading extensions}. 27627 27628The auto-loading feature is useful for supplying application-specific 27629debugging commands and scripts. 27630 27631Auto-loading can be enabled or disabled, 27632and the list of auto-loaded scripts can be printed. 27633 27634@table @code 27635@anchor{set auto-load python-scripts} 27636@kindex set auto-load python-scripts 27637@item set auto-load python-scripts [on|off] 27638Enable or disable the auto-loading of Python scripts. 27639 27640@anchor{show auto-load python-scripts} 27641@kindex show auto-load python-scripts 27642@item show auto-load python-scripts 27643Show whether auto-loading of Python scripts is enabled or disabled. 27644 27645@anchor{info auto-load python-scripts} 27646@kindex info auto-load python-scripts 27647@cindex print list of auto-loaded Python scripts 27648@item info auto-load python-scripts [@var{regexp}] 27649Print the list of all Python scripts that @value{GDBN} auto-loaded. 27650 27651Also printed is the list of Python scripts that were mentioned in 27652the @code{.debug_gdb_scripts} section and were not found 27653(@pxref{dotdebug_gdb_scripts section}). 27654This is useful because their names are not printed when @value{GDBN} 27655tries to load them and fails. There may be many of them, and printing 27656an error message for each one is problematic. 27657 27658If @var{regexp} is supplied only Python scripts with matching names are printed. 27659 27660Example: 27661 27662@smallexample 27663(gdb) info auto-load python-scripts 27664Loaded Script 27665Yes py-section-script.py 27666 full name: /tmp/py-section-script.py 27667No my-foo-pretty-printers.py 27668@end smallexample 27669@end table 27670 27671When reading an auto-loaded file, @value{GDBN} sets the 27672@dfn{current objfile}. This is available via the @code{gdb.current_objfile} 27673function (@pxref{Objfiles In Python}). This can be useful for 27674registering objfile-specific pretty-printers and frame-filters. 27675 27676@node Python modules 27677@subsection Python modules 27678@cindex python modules 27679 27680@value{GDBN} comes with several modules to assist writing Python code. 27681 27682@menu 27683* gdb.printing:: Building and registering pretty-printers. 27684* gdb.types:: Utilities for working with types. 27685* gdb.prompt:: Utilities for prompt value substitution. 27686@end menu 27687 27688@node gdb.printing 27689@subsubsection gdb.printing 27690@cindex gdb.printing 27691 27692This module provides a collection of utilities for working with 27693pretty-printers. 27694 27695@table @code 27696@item PrettyPrinter (@var{name}, @var{subprinters}=None) 27697This class specifies the API that makes @samp{info pretty-printer}, 27698@samp{enable pretty-printer} and @samp{disable pretty-printer} work. 27699Pretty-printers should generally inherit from this class. 27700 27701@item SubPrettyPrinter (@var{name}) 27702For printers that handle multiple types, this class specifies the 27703corresponding API for the subprinters. 27704 27705@item RegexpCollectionPrettyPrinter (@var{name}) 27706Utility class for handling multiple printers, all recognized via 27707regular expressions. 27708@xref{Writing a Pretty-Printer}, for an example. 27709 27710@item FlagEnumerationPrinter (@var{name}) 27711A pretty-printer which handles printing of @code{enum} values. Unlike 27712@value{GDBN}'s built-in @code{enum} printing, this printer attempts to 27713work properly when there is some overlap between the enumeration 27714constants. @var{name} is the name of the printer and also the name of 27715the @code{enum} type to look up. 27716 27717@item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False) 27718Register @var{printer} with the pretty-printer list of @var{obj}. 27719If @var{replace} is @code{True} then any existing copy of the printer 27720is replaced. Otherwise a @code{RuntimeError} exception is raised 27721if a printer with the same name already exists. 27722@end table 27723 27724@node gdb.types 27725@subsubsection gdb.types 27726@cindex gdb.types 27727 27728This module provides a collection of utilities for working with 27729@code{gdb.Type} objects. 27730 27731@table @code 27732@item get_basic_type (@var{type}) 27733Return @var{type} with const and volatile qualifiers stripped, 27734and with typedefs and C@t{++} references converted to the underlying type. 27735 27736C@t{++} example: 27737 27738@smallexample 27739typedef const int const_int; 27740const_int foo (3); 27741const_int& foo_ref (foo); 27742int main () @{ return 0; @} 27743@end smallexample 27744 27745Then in gdb: 27746 27747@smallexample 27748(gdb) start 27749(gdb) python import gdb.types 27750(gdb) python foo_ref = gdb.parse_and_eval("foo_ref") 27751(gdb) python print gdb.types.get_basic_type(foo_ref.type) 27752int 27753@end smallexample 27754 27755@item has_field (@var{type}, @var{field}) 27756Return @code{True} if @var{type}, assumed to be a type with fields 27757(e.g., a structure or union), has field @var{field}. 27758 27759@item make_enum_dict (@var{enum_type}) 27760Return a Python @code{dictionary} type produced from @var{enum_type}. 27761 27762@item deep_items (@var{type}) 27763Returns a Python iterator similar to the standard 27764@code{gdb.Type.iteritems} method, except that the iterator returned 27765by @code{deep_items} will recursively traverse anonymous struct or 27766union fields. For example: 27767 27768@smallexample 27769struct A 27770@{ 27771 int a; 27772 union @{ 27773 int b0; 27774 int b1; 27775 @}; 27776@}; 27777@end smallexample 27778 27779@noindent 27780Then in @value{GDBN}: 27781@smallexample 27782(@value{GDBP}) python import gdb.types 27783(@value{GDBP}) python struct_a = gdb.lookup_type("struct A") 27784(@value{GDBP}) python print struct_a.keys () 27785@{['a', '']@} 27786(@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)] 27787@{['a', 'b0', 'b1']@} 27788@end smallexample 27789 27790@item get_type_recognizers () 27791Return a list of the enabled type recognizers for the current context. 27792This is called by @value{GDBN} during the type-printing process 27793(@pxref{Type Printing API}). 27794 27795@item apply_type_recognizers (recognizers, type_obj) 27796Apply the type recognizers, @var{recognizers}, to the type object 27797@var{type_obj}. If any recognizer returns a string, return that 27798string. Otherwise, return @code{None}. This is called by 27799@value{GDBN} during the type-printing process (@pxref{Type Printing 27800API}). 27801 27802@item register_type_printer (locus, printer) 27803This is a convenience function to register a type printer. 27804@var{printer} is the type printer to register. It must implement the 27805type printer protocol. @var{locus} is either a @code{gdb.Objfile}, in 27806which case the printer is registered with that objfile; a 27807@code{gdb.Progspace}, in which case the printer is registered with 27808that progspace; or @code{None}, in which case the printer is 27809registered globally. 27810 27811@item TypePrinter 27812This is a base class that implements the type printer protocol. Type 27813printers are encouraged, but not required, to derive from this class. 27814It defines a constructor: 27815 27816@defmethod TypePrinter __init__ (self, name) 27817Initialize the type printer with the given name. The new printer 27818starts in the enabled state. 27819@end defmethod 27820 27821@end table 27822 27823@node gdb.prompt 27824@subsubsection gdb.prompt 27825@cindex gdb.prompt 27826 27827This module provides a method for prompt value-substitution. 27828 27829@table @code 27830@item substitute_prompt (@var{string}) 27831Return @var{string} with escape sequences substituted by values. Some 27832escape sequences take arguments. You can specify arguments inside 27833``@{@}'' immediately following the escape sequence. 27834 27835The escape sequences you can pass to this function are: 27836 27837@table @code 27838@item \\ 27839Substitute a backslash. 27840@item \e 27841Substitute an ESC character. 27842@item \f 27843Substitute the selected frame; an argument names a frame parameter. 27844@item \n 27845Substitute a newline. 27846@item \p 27847Substitute a parameter's value; the argument names the parameter. 27848@item \r 27849Substitute a carriage return. 27850@item \t 27851Substitute the selected thread; an argument names a thread parameter. 27852@item \v 27853Substitute the version of GDB. 27854@item \w 27855Substitute the current working directory. 27856@item \[ 27857Begin a sequence of non-printing characters. These sequences are 27858typically used with the ESC character, and are not counted in the string 27859length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a 27860blue-colored ``(gdb)'' prompt where the length is five. 27861@item \] 27862End a sequence of non-printing characters. 27863@end table 27864 27865For example: 27866 27867@smallexample 27868substitute_prompt (``frame: \f, 27869 print arguments: \p@{print frame-arguments@}'') 27870@end smallexample 27871 27872@exdent will return the string: 27873 27874@smallexample 27875"frame: main, print arguments: scalars" 27876@end smallexample 27877@end table 27878 27879@node Auto-loading extensions 27880@section Auto-loading extensions 27881@cindex auto-loading extensions 27882 27883@value{GDBN} provides two mechanisms for automatically loading extensions 27884when a new object file is read (for example, due to the @code{file} 27885command, or because the inferior has loaded a shared library): 27886@file{@var{objfile}-gdb.@var{ext}} and the @code{.debug_gdb_scripts} 27887section of modern file formats like ELF. 27888 27889@menu 27890* objfile-gdb.ext file: objfile-gdbdotext file. The @file{@var{objfile}-gdb.@var{ext}} file 27891* .debug_gdb_scripts section: dotdebug_gdb_scripts section. The @code{.debug_gdb_scripts} section 27892* Which flavor to choose?:: 27893@end menu 27894 27895The auto-loading feature is useful for supplying application-specific 27896debugging commands and features. 27897 27898Auto-loading can be enabled or disabled, 27899and the list of auto-loaded scripts can be printed. 27900See the @samp{auto-loading} section of each extension language 27901for more information. 27902For @value{GDBN} command files see @ref{Auto-loading sequences}. 27903For Python files see @ref{Python Auto-loading}. 27904 27905Note that loading of this script file also requires accordingly configured 27906@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 27907 27908@node objfile-gdbdotext file 27909@subsection The @file{@var{objfile}-gdb.@var{ext}} file 27910@cindex @file{@var{objfile}-gdb.gdb} 27911@cindex @file{@var{objfile}-gdb.py} 27912@cindex @file{@var{objfile}-gdb.scm} 27913 27914When a new object file is read, @value{GDBN} looks for a file named 27915@file{@var{objfile}-gdb.@var{ext}} (we call it @var{script-name} below), 27916where @var{objfile} is the object file's name and 27917where @var{ext} is the file extension for the extension language: 27918 27919@table @code 27920@item @file{@var{objfile}-gdb.gdb} 27921GDB's own command language 27922@item @file{@var{objfile}-gdb.py} 27923Python 27924@end table 27925 27926@var{script-name} is formed by ensuring that the file name of @var{objfile} 27927is absolute, following all symlinks, and resolving @code{.} and @code{..} 27928components, and appending the @file{-gdb.@var{ext}} suffix. 27929If this file exists and is readable, @value{GDBN} will evaluate it as a 27930script in the specified extension language. 27931 27932If this file does not exist, then @value{GDBN} will look for 27933@var{script-name} file in all of the directories as specified below. 27934 27935Note that loading of these files requires an accordingly configured 27936@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 27937 27938For object files using @file{.exe} suffix @value{GDBN} tries to load first the 27939scripts normally according to its @file{.exe} filename. But if no scripts are 27940found @value{GDBN} also tries script filenames matching the object file without 27941its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it 27942is attempted on any platform. This makes the script filenames compatible 27943between Unix and MS-Windows hosts. 27944 27945@table @code 27946@anchor{set auto-load scripts-directory} 27947@kindex set auto-load scripts-directory 27948@item set auto-load scripts-directory @r{[}@var{directories}@r{]} 27949Control @value{GDBN} auto-loaded scripts location. Multiple directory entries 27950may be delimited by the host platform path separator in use 27951(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS). 27952 27953Each entry here needs to be covered also by the security setting 27954@code{set auto-load safe-path} (@pxref{set auto-load safe-path}). 27955 27956@anchor{with-auto-load-dir} 27957This variable defaults to @file{$debugdir:$datadir/auto-load}. The default 27958@code{set auto-load safe-path} value can be also overriden by @value{GDBN} 27959configuration option @option{--with-auto-load-dir}. 27960 27961Any reference to @file{$debugdir} will get replaced by 27962@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any 27963reference to @file{$datadir} will get replaced by @var{data-directory} which is 27964determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and 27965@file{$datadir} must be placed as a directory component --- either alone or 27966delimited by @file{/} or @file{\} directory separators, depending on the host 27967platform. 27968 27969The list of directories uses path separator (@samp{:} on GNU and Unix 27970systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 27971to the @env{PATH} environment variable. 27972 27973@anchor{show auto-load scripts-directory} 27974@kindex show auto-load scripts-directory 27975@item show auto-load scripts-directory 27976Show @value{GDBN} auto-loaded scripts location. 27977@end table 27978 27979@value{GDBN} does not track which files it has already auto-loaded this way. 27980@value{GDBN} will load the associated script every time the corresponding 27981@var{objfile} is opened. 27982So your @file{-gdb.@var{ext}} file should be careful to avoid errors if it 27983is evaluated more than once. 27984 27985@node dotdebug_gdb_scripts section 27986@subsection The @code{.debug_gdb_scripts} section 27987@cindex @code{.debug_gdb_scripts} section 27988 27989For systems using file formats like ELF and COFF, 27990when @value{GDBN} loads a new object file 27991it will look for a special section named @code{.debug_gdb_scripts}. 27992If this section exists, its contents is a list of NUL-terminated names 27993of scripts to load. Each entry begins with a non-NULL prefix byte that 27994specifies the kind of entry, typically the extension language. 27995 27996@value{GDBN} will look for each specified script file first in the 27997current directory and then along the source search path 27998(@pxref{Source Path, ,Specifying Source Directories}), 27999except that @file{$cdir} is not searched, since the compilation 28000directory is not relevant to scripts. 28001 28002Entries can be placed in section @code{.debug_gdb_scripts} with, 28003for example, this GCC macro for Python scripts. 28004 28005@example 28006/* Note: The "MS" section flags are to remove duplicates. */ 28007#define DEFINE_GDB_PY_SCRIPT(script_name) \ 28008 asm("\ 28009.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\ 28010.byte 1 /* Python */\n\ 28011.asciz \"" script_name "\"\n\ 28012.popsection \n\ 28013"); 28014@end example 28015 28016@noindent 28017Then one can reference the macro in a header or source file like this: 28018 28019@example 28020DEFINE_GDB_PY_SCRIPT ("my-app-scripts.py") 28021@end example 28022 28023The script name may include directories if desired. 28024 28025Note that loading of this script file also requires accordingly configured 28026@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 28027 28028If the macro invocation is put in a header, any application or library 28029using this header will get a reference to the specified script, 28030and with the use of @code{"MS"} attributes on the section, the linker 28031will remove duplicates. 28032 28033@node Which flavor to choose? 28034@subsection Which flavor to choose? 28035 28036Given the multiple ways of auto-loading extensions, it might not always 28037be clear which one to choose. This section provides some guidance. 28038 28039@noindent 28040Benefits of the @file{-gdb.@var{ext}} way: 28041 28042@itemize @bullet 28043@item 28044Can be used with file formats that don't support multiple sections. 28045 28046@item 28047Ease of finding scripts for public libraries. 28048 28049Scripts specified in the @code{.debug_gdb_scripts} section are searched for 28050in the source search path. 28051For publicly installed libraries, e.g., @file{libstdc++}, there typically 28052isn't a source directory in which to find the script. 28053 28054@item 28055Doesn't require source code additions. 28056@end itemize 28057 28058@noindent 28059Benefits of the @code{.debug_gdb_scripts} way: 28060 28061@itemize @bullet 28062@item 28063Works with static linking. 28064 28065Scripts for libraries done the @file{-gdb.@var{ext}} way require an objfile to 28066trigger their loading. When an application is statically linked the only 28067objfile available is the executable, and it is cumbersome to attach all the 28068scripts from all the input libraries to the executable's 28069@file{-gdb.@var{ext}} script. 28070 28071@item 28072Works with classes that are entirely inlined. 28073 28074Some classes can be entirely inlined, and thus there may not be an associated 28075shared library to attach a @file{-gdb.@var{ext}} script to. 28076 28077@item 28078Scripts needn't be copied out of the source tree. 28079 28080In some circumstances, apps can be built out of large collections of internal 28081libraries, and the build infrastructure necessary to install the 28082@file{-gdb.@var{ext}} scripts in a place where @value{GDBN} can find them is 28083cumbersome. It may be easier to specify the scripts in the 28084@code{.debug_gdb_scripts} section as relative paths, and add a path to the 28085top of the source tree to the source search path. 28086@end itemize 28087 28088@node Aliases 28089@section Creating new spellings of existing commands 28090@cindex aliases for commands 28091 28092It is often useful to define alternate spellings of existing commands. 28093For example, if a new @value{GDBN} command defined in Python has 28094a long name to type, it is handy to have an abbreviated version of it 28095that involves less typing. 28096 28097@value{GDBN} itself uses aliases. For example @samp{s} is an alias 28098of the @samp{step} command even though it is otherwise an ambiguous 28099abbreviation of other commands like @samp{set} and @samp{show}. 28100 28101Aliases are also used to provide shortened or more common versions 28102of multi-word commands. For example, @value{GDBN} provides the 28103@samp{tty} alias of the @samp{set inferior-tty} command. 28104 28105You can define a new alias with the @samp{alias} command. 28106 28107@table @code 28108 28109@kindex alias 28110@item alias [-a] [--] @var{ALIAS} = @var{COMMAND} 28111 28112@end table 28113 28114@var{ALIAS} specifies the name of the new alias. 28115Each word of @var{ALIAS} must consist of letters, numbers, dashes and 28116underscores. 28117 28118@var{COMMAND} specifies the name of an existing command 28119that is being aliased. 28120 28121The @samp{-a} option specifies that the new alias is an abbreviation 28122of the command. Abbreviations are not shown in command 28123lists displayed by the @samp{help} command. 28124 28125The @samp{--} option specifies the end of options, 28126and is useful when @var{ALIAS} begins with a dash. 28127 28128Here is a simple example showing how to make an abbreviation 28129of a command so that there is less to type. 28130Suppose you were tired of typing @samp{disas}, the current 28131shortest unambiguous abbreviation of the @samp{disassemble} command 28132and you wanted an even shorter version named @samp{di}. 28133The following will accomplish this. 28134 28135@smallexample 28136(gdb) alias -a di = disas 28137@end smallexample 28138 28139Note that aliases are different from user-defined commands. 28140With a user-defined command, you also need to write documentation 28141for it with the @samp{document} command. 28142An alias automatically picks up the documentation of the existing command. 28143 28144Here is an example where we make @samp{elms} an abbreviation of 28145@samp{elements} in the @samp{set print elements} command. 28146This is to show that you can make an abbreviation of any part 28147of a command. 28148 28149@smallexample 28150(gdb) alias -a set print elms = set print elements 28151(gdb) alias -a show print elms = show print elements 28152(gdb) set p elms 20 28153(gdb) show p elms 28154Limit on string chars or array elements to print is 200. 28155@end smallexample 28156 28157Note that if you are defining an alias of a @samp{set} command, 28158and you want to have an alias for the corresponding @samp{show} 28159command, then you need to define the latter separately. 28160 28161Unambiguously abbreviated commands are allowed in @var{COMMAND} and 28162@var{ALIAS}, just as they are normally. 28163 28164@smallexample 28165(gdb) alias -a set pr elms = set p ele 28166@end smallexample 28167 28168Finally, here is an example showing the creation of a one word 28169alias for a more complex command. 28170This creates alias @samp{spe} of the command @samp{set print elements}. 28171 28172@smallexample 28173(gdb) alias spe = set print elements 28174(gdb) spe 20 28175@end smallexample 28176 28177@node Interpreters 28178@chapter Command Interpreters 28179@cindex command interpreters 28180 28181@value{GDBN} supports multiple command interpreters, and some command 28182infrastructure to allow users or user interface writers to switch 28183between interpreters or run commands in other interpreters. 28184 28185@value{GDBN} currently supports two command interpreters, the console 28186interpreter (sometimes called the command-line interpreter or @sc{cli}) 28187and the machine interface interpreter (or @sc{gdb/mi}). This manual 28188describes both of these interfaces in great detail. 28189 28190By default, @value{GDBN} will start with the console interpreter. 28191However, the user may choose to start @value{GDBN} with another 28192interpreter by specifying the @option{-i} or @option{--interpreter} 28193startup options. Defined interpreters include: 28194 28195@table @code 28196@item console 28197@cindex console interpreter 28198The traditional console or command-line interpreter. This is the most often 28199used interpreter with @value{GDBN}. With no interpreter specified at runtime, 28200@value{GDBN} will use this interpreter. 28201 28202@item mi 28203@cindex mi interpreter 28204The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily 28205by programs wishing to use @value{GDBN} as a backend for a debugger GUI 28206or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi} 28207Interface}. 28208 28209@item mi2 28210@cindex mi2 interpreter 28211The current @sc{gdb/mi} interface. 28212 28213@item mi1 28214@cindex mi1 interpreter 28215The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3. 28216 28217@end table 28218 28219@cindex invoke another interpreter 28220The interpreter being used by @value{GDBN} may not be dynamically 28221switched at runtime. Although possible, this could lead to a very 28222precarious situation. Consider an IDE using @sc{gdb/mi}. If a user 28223enters the command "interpreter-set console" in a console view, 28224@value{GDBN} would switch to using the console interpreter, rendering 28225the IDE inoperable! 28226 28227@kindex interpreter-exec 28228Although you may only choose a single interpreter at startup, you may execute 28229commands in any interpreter from the current interpreter using the appropriate 28230command. If you are running the console interpreter, simply use the 28231@code{interpreter-exec} command: 28232 28233@smallexample 28234interpreter-exec mi "-data-list-register-names" 28235@end smallexample 28236 28237@sc{gdb/mi} has a similar command, although it is only available in versions of 28238@value{GDBN} which support @sc{gdb/mi} version 2 (or greater). 28239 28240@node TUI 28241@chapter @value{GDBN} Text User Interface 28242@cindex TUI 28243@cindex Text User Interface 28244 28245@menu 28246* TUI Overview:: TUI overview 28247* TUI Keys:: TUI key bindings 28248* TUI Single Key Mode:: TUI single key mode 28249* TUI Commands:: TUI-specific commands 28250* TUI Configuration:: TUI configuration variables 28251@end menu 28252 28253The @value{GDBN} Text User Interface (TUI) is a terminal 28254interface which uses the @code{curses} library to show the source 28255file, the assembly output, the program registers and @value{GDBN} 28256commands in separate text windows. The TUI mode is supported only 28257on platforms where a suitable version of the @code{curses} library 28258is available. 28259 28260The TUI mode is enabled by default when you invoke @value{GDBN} as 28261@samp{@value{GDBP} -tui}. 28262You can also switch in and out of TUI mode while @value{GDBN} runs by 28263using various TUI commands and key bindings, such as @kbd{C-x C-a}. 28264@xref{TUI Keys, ,TUI Key Bindings}. 28265 28266@node TUI Overview 28267@section TUI Overview 28268 28269In TUI mode, @value{GDBN} can display several text windows: 28270 28271@table @emph 28272@item command 28273This window is the @value{GDBN} command window with the @value{GDBN} 28274prompt and the @value{GDBN} output. The @value{GDBN} input is still 28275managed using readline. 28276 28277@item source 28278The source window shows the source file of the program. The current 28279line and active breakpoints are displayed in this window. 28280 28281@item assembly 28282The assembly window shows the disassembly output of the program. 28283 28284@item register 28285This window shows the processor registers. Registers are highlighted 28286when their values change. 28287@end table 28288 28289The source and assembly windows show the current program position 28290by highlighting the current line and marking it with a @samp{>} marker. 28291Breakpoints are indicated with two markers. The first marker 28292indicates the breakpoint type: 28293 28294@table @code 28295@item B 28296Breakpoint which was hit at least once. 28297 28298@item b 28299Breakpoint which was never hit. 28300 28301@item H 28302Hardware breakpoint which was hit at least once. 28303 28304@item h 28305Hardware breakpoint which was never hit. 28306@end table 28307 28308The second marker indicates whether the breakpoint is enabled or not: 28309 28310@table @code 28311@item + 28312Breakpoint is enabled. 28313 28314@item - 28315Breakpoint is disabled. 28316@end table 28317 28318The source, assembly and register windows are updated when the current 28319thread changes, when the frame changes, or when the program counter 28320changes. 28321 28322These windows are not all visible at the same time. The command 28323window is always visible. The others can be arranged in several 28324layouts: 28325 28326@itemize @bullet 28327@item 28328source only, 28329 28330@item 28331assembly only, 28332 28333@item 28334source and assembly, 28335 28336@item 28337source and registers, or 28338 28339@item 28340assembly and registers. 28341@end itemize 28342 28343A status line above the command window shows the following information: 28344 28345@table @emph 28346@item target 28347Indicates the current @value{GDBN} target. 28348(@pxref{Targets, ,Specifying a Debugging Target}). 28349 28350@item process 28351Gives the current process or thread number. 28352When no process is being debugged, this field is set to @code{No process}. 28353 28354@item function 28355Gives the current function name for the selected frame. 28356The name is demangled if demangling is turned on (@pxref{Print Settings}). 28357When there is no symbol corresponding to the current program counter, 28358the string @code{??} is displayed. 28359 28360@item line 28361Indicates the current line number for the selected frame. 28362When the current line number is not known, the string @code{??} is displayed. 28363 28364@item pc 28365Indicates the current program counter address. 28366@end table 28367 28368@node TUI Keys 28369@section TUI Key Bindings 28370@cindex TUI key bindings 28371 28372The TUI installs several key bindings in the readline keymaps 28373@ifset SYSTEM_READLINE 28374(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}). 28375@end ifset 28376@ifclear SYSTEM_READLINE 28377(@pxref{Command Line Editing}). 28378@end ifclear 28379The following key bindings are installed for both TUI mode and the 28380@value{GDBN} standard mode. 28381 28382@table @kbd 28383@kindex C-x C-a 28384@item C-x C-a 28385@kindex C-x a 28386@itemx C-x a 28387@kindex C-x A 28388@itemx C-x A 28389Enter or leave the TUI mode. When leaving the TUI mode, 28390the curses window management stops and @value{GDBN} operates using 28391its standard mode, writing on the terminal directly. When reentering 28392the TUI mode, control is given back to the curses windows. 28393The screen is then refreshed. 28394 28395@kindex C-x 1 28396@item C-x 1 28397Use a TUI layout with only one window. The layout will 28398either be @samp{source} or @samp{assembly}. When the TUI mode 28399is not active, it will switch to the TUI mode. 28400 28401Think of this key binding as the Emacs @kbd{C-x 1} binding. 28402 28403@kindex C-x 2 28404@item C-x 2 28405Use a TUI layout with at least two windows. When the current 28406layout already has two windows, the next layout with two windows is used. 28407When a new layout is chosen, one window will always be common to the 28408previous layout and the new one. 28409 28410Think of it as the Emacs @kbd{C-x 2} binding. 28411 28412@kindex C-x o 28413@item C-x o 28414Change the active window. The TUI associates several key bindings 28415(like scrolling and arrow keys) with the active window. This command 28416gives the focus to the next TUI window. 28417 28418Think of it as the Emacs @kbd{C-x o} binding. 28419 28420@kindex C-x s 28421@item C-x s 28422Switch in and out of the TUI SingleKey mode that binds single 28423keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}). 28424@end table 28425 28426The following key bindings only work in the TUI mode: 28427 28428@table @asis 28429@kindex PgUp 28430@item @key{PgUp} 28431Scroll the active window one page up. 28432 28433@kindex PgDn 28434@item @key{PgDn} 28435Scroll the active window one page down. 28436 28437@kindex Up 28438@item @key{Up} 28439Scroll the active window one line up. 28440 28441@kindex Down 28442@item @key{Down} 28443Scroll the active window one line down. 28444 28445@kindex Left 28446@item @key{Left} 28447Scroll the active window one column left. 28448 28449@kindex Right 28450@item @key{Right} 28451Scroll the active window one column right. 28452 28453@kindex C-L 28454@item @kbd{C-L} 28455Refresh the screen. 28456@end table 28457 28458Because the arrow keys scroll the active window in the TUI mode, they 28459are not available for their normal use by readline unless the command 28460window has the focus. When another window is active, you must use 28461other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b} 28462and @kbd{C-f} to control the command window. 28463 28464@node TUI Single Key Mode 28465@section TUI Single Key Mode 28466@cindex TUI single key mode 28467 28468The TUI also provides a @dfn{SingleKey} mode, which binds several 28469frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to 28470switch into this mode, where the following key bindings are used: 28471 28472@table @kbd 28473@kindex c @r{(SingleKey TUI key)} 28474@item c 28475continue 28476 28477@kindex d @r{(SingleKey TUI key)} 28478@item d 28479down 28480 28481@kindex f @r{(SingleKey TUI key)} 28482@item f 28483finish 28484 28485@kindex n @r{(SingleKey TUI key)} 28486@item n 28487next 28488 28489@kindex q @r{(SingleKey TUI key)} 28490@item q 28491exit the SingleKey mode. 28492 28493@kindex r @r{(SingleKey TUI key)} 28494@item r 28495run 28496 28497@kindex s @r{(SingleKey TUI key)} 28498@item s 28499step 28500 28501@kindex u @r{(SingleKey TUI key)} 28502@item u 28503up 28504 28505@kindex v @r{(SingleKey TUI key)} 28506@item v 28507info locals 28508 28509@kindex w @r{(SingleKey TUI key)} 28510@item w 28511where 28512@end table 28513 28514Other keys temporarily switch to the @value{GDBN} command prompt. 28515The key that was pressed is inserted in the editing buffer so that 28516it is possible to type most @value{GDBN} commands without interaction 28517with the TUI SingleKey mode. Once the command is entered the TUI 28518SingleKey mode is restored. The only way to permanently leave 28519this mode is by typing @kbd{q} or @kbd{C-x s}. 28520 28521 28522@node TUI Commands 28523@section TUI-specific Commands 28524@cindex TUI commands 28525 28526The TUI has specific commands to control the text windows. 28527These commands are always available, even when @value{GDBN} is not in 28528the TUI mode. When @value{GDBN} is in the standard mode, most 28529of these commands will automatically switch to the TUI mode. 28530 28531Note that if @value{GDBN}'s @code{stdout} is not connected to a 28532terminal, or @value{GDBN} has been started with the machine interface 28533interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of 28534these commands will fail with an error, because it would not be 28535possible or desirable to enable curses window management. 28536 28537@table @code 28538@item info win 28539@kindex info win 28540List and give the size of all displayed windows. 28541 28542@item layout next 28543@kindex layout 28544Display the next layout. 28545 28546@item layout prev 28547Display the previous layout. 28548 28549@item layout src 28550Display the source window only. 28551 28552@item layout asm 28553Display the assembly window only. 28554 28555@item layout split 28556Display the source and assembly window. 28557 28558@item layout regs 28559Display the register window together with the source or assembly window. 28560 28561@item focus next 28562@kindex focus 28563Make the next window active for scrolling. 28564 28565@item focus prev 28566Make the previous window active for scrolling. 28567 28568@item focus src 28569Make the source window active for scrolling. 28570 28571@item focus asm 28572Make the assembly window active for scrolling. 28573 28574@item focus regs 28575Make the register window active for scrolling. 28576 28577@item focus cmd 28578Make the command window active for scrolling. 28579 28580@item refresh 28581@kindex refresh 28582Refresh the screen. This is similar to typing @kbd{C-L}. 28583 28584@item tui reg float 28585@kindex tui reg 28586Show the floating point registers in the register window. 28587 28588@item tui reg general 28589Show the general registers in the register window. 28590 28591@item tui reg next 28592Show the next register group. The list of register groups as well as 28593their order is target specific. The predefined register groups are the 28594following: @code{general}, @code{float}, @code{system}, @code{vector}, 28595@code{all}, @code{save}, @code{restore}. 28596 28597@item tui reg system 28598Show the system registers in the register window. 28599 28600@item update 28601@kindex update 28602Update the source window and the current execution point. 28603 28604@item winheight @var{name} +@var{count} 28605@itemx winheight @var{name} -@var{count} 28606@kindex winheight 28607Change the height of the window @var{name} by @var{count} 28608lines. Positive counts increase the height, while negative counts 28609decrease it. 28610 28611@item tabset @var{nchars} 28612@kindex tabset 28613Set the width of tab stops to be @var{nchars} characters. 28614@end table 28615 28616@node TUI Configuration 28617@section TUI Configuration Variables 28618@cindex TUI configuration variables 28619 28620Several configuration variables control the appearance of TUI windows. 28621 28622@table @code 28623@item set tui border-kind @var{kind} 28624@kindex set tui border-kind 28625Select the border appearance for the source, assembly and register windows. 28626The possible values are the following: 28627@table @code 28628@item space 28629Use a space character to draw the border. 28630 28631@item ascii 28632Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border. 28633 28634@item acs 28635Use the Alternate Character Set to draw the border. The border is 28636drawn using character line graphics if the terminal supports them. 28637@end table 28638 28639@item set tui border-mode @var{mode} 28640@kindex set tui border-mode 28641@itemx set tui active-border-mode @var{mode} 28642@kindex set tui active-border-mode 28643Select the display attributes for the borders of the inactive windows 28644or the active window. The @var{mode} can be one of the following: 28645@table @code 28646@item normal 28647Use normal attributes to display the border. 28648 28649@item standout 28650Use standout mode. 28651 28652@item reverse 28653Use reverse video mode. 28654 28655@item half 28656Use half bright mode. 28657 28658@item half-standout 28659Use half bright and standout mode. 28660 28661@item bold 28662Use extra bright or bold mode. 28663 28664@item bold-standout 28665Use extra bright or bold and standout mode. 28666@end table 28667@end table 28668 28669@node Emacs 28670@chapter Using @value{GDBN} under @sc{gnu} Emacs 28671 28672@cindex Emacs 28673@cindex @sc{gnu} Emacs 28674A special interface allows you to use @sc{gnu} Emacs to view (and 28675edit) the source files for the program you are debugging with 28676@value{GDBN}. 28677 28678To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the 28679executable file you want to debug as an argument. This command starts 28680@value{GDBN} as a subprocess of Emacs, with input and output through a newly 28681created Emacs buffer. 28682@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.) 28683 28684Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two 28685things: 28686 28687@itemize @bullet 28688@item 28689All ``terminal'' input and output goes through an Emacs buffer, called 28690the GUD buffer. 28691 28692This applies both to @value{GDBN} commands and their output, and to the input 28693and output done by the program you are debugging. 28694 28695This is useful because it means that you can copy the text of previous 28696commands and input them again; you can even use parts of the output 28697in this way. 28698 28699All the facilities of Emacs' Shell mode are available for interacting 28700with your program. In particular, you can send signals the usual 28701way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a 28702stop. 28703 28704@item 28705@value{GDBN} displays source code through Emacs. 28706 28707Each time @value{GDBN} displays a stack frame, Emacs automatically finds the 28708source file for that frame and puts an arrow (@samp{=>}) at the 28709left margin of the current line. Emacs uses a separate buffer for 28710source display, and splits the screen to show both your @value{GDBN} session 28711and the source. 28712 28713Explicit @value{GDBN} @code{list} or search commands still produce output as 28714usual, but you probably have no reason to use them from Emacs. 28715@end itemize 28716 28717We call this @dfn{text command mode}. Emacs 22.1, and later, also uses 28718a graphical mode, enabled by default, which provides further buffers 28719that can control the execution and describe the state of your program. 28720@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}. 28721 28722If you specify an absolute file name when prompted for the @kbd{M-x 28723gdb} argument, then Emacs sets your current working directory to where 28724your program resides. If you only specify the file name, then Emacs 28725sets your current working directory to the directory associated 28726with the previous buffer. In this case, @value{GDBN} may find your 28727program by searching your environment's @code{PATH} variable, but on 28728some operating systems it might not find the source. So, although the 28729@value{GDBN} input and output session proceeds normally, the auxiliary 28730buffer does not display the current source and line of execution. 28731 28732The initial working directory of @value{GDBN} is printed on the top 28733line of the GUD buffer and this serves as a default for the commands 28734that specify files for @value{GDBN} to operate on. @xref{Files, 28735,Commands to Specify Files}. 28736 28737By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you 28738need to call @value{GDBN} by a different name (for example, if you 28739keep several configurations around, with different names) you can 28740customize the Emacs variable @code{gud-gdb-command-name} to run the 28741one you want. 28742 28743In the GUD buffer, you can use these special Emacs commands in 28744addition to the standard Shell mode commands: 28745 28746@table @kbd 28747@item C-h m 28748Describe the features of Emacs' GUD Mode. 28749 28750@item C-c C-s 28751Execute to another source line, like the @value{GDBN} @code{step} command; also 28752update the display window to show the current file and location. 28753 28754@item C-c C-n 28755Execute to next source line in this function, skipping all function 28756calls, like the @value{GDBN} @code{next} command. Then update the display window 28757to show the current file and location. 28758 28759@item C-c C-i 28760Execute one instruction, like the @value{GDBN} @code{stepi} command; update 28761display window accordingly. 28762 28763@item C-c C-f 28764Execute until exit from the selected stack frame, like the @value{GDBN} 28765@code{finish} command. 28766 28767@item C-c C-r 28768Continue execution of your program, like the @value{GDBN} @code{continue} 28769command. 28770 28771@item C-c < 28772Go up the number of frames indicated by the numeric argument 28773(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}), 28774like the @value{GDBN} @code{up} command. 28775 28776@item C-c > 28777Go down the number of frames indicated by the numeric argument, like the 28778@value{GDBN} @code{down} command. 28779@end table 28780 28781In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break}) 28782tells @value{GDBN} to set a breakpoint on the source line point is on. 28783 28784In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a 28785separate frame which shows a backtrace when the GUD buffer is current. 28786Move point to any frame in the stack and type @key{RET} to make it 28787become the current frame and display the associated source in the 28788source buffer. Alternatively, click @kbd{Mouse-2} to make the 28789selected frame become the current one. In graphical mode, the 28790speedbar displays watch expressions. 28791 28792If you accidentally delete the source-display buffer, an easy way to get 28793it back is to type the command @code{f} in the @value{GDBN} buffer, to 28794request a frame display; when you run under Emacs, this recreates 28795the source buffer if necessary to show you the context of the current 28796frame. 28797 28798The source files displayed in Emacs are in ordinary Emacs buffers 28799which are visiting the source files in the usual way. You can edit 28800the files with these buffers if you wish; but keep in mind that @value{GDBN} 28801communicates with Emacs in terms of line numbers. If you add or 28802delete lines from the text, the line numbers that @value{GDBN} knows cease 28803to correspond properly with the code. 28804 28805A more detailed description of Emacs' interaction with @value{GDBN} is 28806given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu} 28807Emacs Manual}). 28808 28809@node GDB/MI 28810@chapter The @sc{gdb/mi} Interface 28811 28812@unnumberedsec Function and Purpose 28813 28814@cindex @sc{gdb/mi}, its purpose 28815@sc{gdb/mi} is a line based machine oriented text interface to 28816@value{GDBN} and is activated by specifying using the 28817@option{--interpreter} command line option (@pxref{Mode Options}). It 28818is specifically intended to support the development of systems which 28819use the debugger as just one small component of a larger system. 28820 28821This chapter is a specification of the @sc{gdb/mi} interface. It is written 28822in the form of a reference manual. 28823 28824Note that @sc{gdb/mi} is still under construction, so some of the 28825features described below are incomplete and subject to change 28826(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}). 28827 28828@unnumberedsec Notation and Terminology 28829 28830@cindex notational conventions, for @sc{gdb/mi} 28831This chapter uses the following notation: 28832 28833@itemize @bullet 28834@item 28835@code{|} separates two alternatives. 28836 28837@item 28838@code{[ @var{something} ]} indicates that @var{something} is optional: 28839it may or may not be given. 28840 28841@item 28842@code{( @var{group} )*} means that @var{group} inside the parentheses 28843may repeat zero or more times. 28844 28845@item 28846@code{( @var{group} )+} means that @var{group} inside the parentheses 28847may repeat one or more times. 28848 28849@item 28850@code{"@var{string}"} means a literal @var{string}. 28851@end itemize 28852 28853@ignore 28854@heading Dependencies 28855@end ignore 28856 28857@menu 28858* GDB/MI General Design:: 28859* GDB/MI Command Syntax:: 28860* GDB/MI Compatibility with CLI:: 28861* GDB/MI Development and Front Ends:: 28862* GDB/MI Output Records:: 28863* GDB/MI Simple Examples:: 28864* GDB/MI Command Description Format:: 28865* GDB/MI Breakpoint Commands:: 28866* GDB/MI Catchpoint Commands:: 28867* GDB/MI Program Context:: 28868* GDB/MI Thread Commands:: 28869* GDB/MI Ada Tasking Commands:: 28870* GDB/MI Program Execution:: 28871* GDB/MI Stack Manipulation:: 28872* GDB/MI Variable Objects:: 28873* GDB/MI Data Manipulation:: 28874* GDB/MI Tracepoint Commands:: 28875* GDB/MI Symbol Query:: 28876* GDB/MI File Commands:: 28877@ignore 28878* GDB/MI Kod Commands:: 28879* GDB/MI Memory Overlay Commands:: 28880* GDB/MI Signal Handling Commands:: 28881@end ignore 28882* GDB/MI Target Manipulation:: 28883* GDB/MI File Transfer Commands:: 28884* GDB/MI Ada Exceptions Commands:: 28885* GDB/MI Support Commands:: 28886* GDB/MI Miscellaneous Commands:: 28887@end menu 28888 28889@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28890@node GDB/MI General Design 28891@section @sc{gdb/mi} General Design 28892@cindex GDB/MI General Design 28893 28894Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three 28895parts---commands sent to @value{GDBN}, responses to those commands 28896and notifications. Each command results in exactly one response, 28897indicating either successful completion of the command, or an error. 28898For the commands that do not resume the target, the response contains the 28899requested information. For the commands that resume the target, the 28900response only indicates whether the target was successfully resumed. 28901Notifications is the mechanism for reporting changes in the state of the 28902target, or in @value{GDBN} state, that cannot conveniently be associated with 28903a command and reported as part of that command response. 28904 28905The important examples of notifications are: 28906@itemize @bullet 28907 28908@item 28909Exec notifications. These are used to report changes in 28910target state---when a target is resumed, or stopped. It would not 28911be feasible to include this information in response of resuming 28912commands, because one resume commands can result in multiple events in 28913different threads. Also, quite some time may pass before any event 28914happens in the target, while a frontend needs to know whether the resuming 28915command itself was successfully executed. 28916 28917@item 28918Console output, and status notifications. Console output 28919notifications are used to report output of CLI commands, as well as 28920diagnostics for other commands. Status notifications are used to 28921report the progress of a long-running operation. Naturally, including 28922this information in command response would mean no output is produced 28923until the command is finished, which is undesirable. 28924 28925@item 28926General notifications. Commands may have various side effects on 28927the @value{GDBN} or target state beyond their official purpose. For example, 28928a command may change the selected thread. Although such changes can 28929be included in command response, using notification allows for more 28930orthogonal frontend design. 28931 28932@end itemize 28933 28934There's no guarantee that whenever an MI command reports an error, 28935@value{GDBN} or the target are in any specific state, and especially, 28936the state is not reverted to the state before the MI command was 28937processed. Therefore, whenever an MI command results in an error, 28938we recommend that the frontend refreshes all the information shown in 28939the user interface. 28940 28941 28942@menu 28943* Context management:: 28944* Asynchronous and non-stop modes:: 28945* Thread groups:: 28946@end menu 28947 28948@node Context management 28949@subsection Context management 28950 28951@subsubsection Threads and Frames 28952 28953In most cases when @value{GDBN} accesses the target, this access is 28954done in context of a specific thread and frame (@pxref{Frames}). 28955Often, even when accessing global data, the target requires that a thread 28956be specified. The CLI interface maintains the selected thread and frame, 28957and supplies them to target on each command. This is convenient, 28958because a command line user would not want to specify that information 28959explicitly on each command, and because user interacts with 28960@value{GDBN} via a single terminal, so no confusion is possible as 28961to what thread and frame are the current ones. 28962 28963In the case of MI, the concept of selected thread and frame is less 28964useful. First, a frontend can easily remember this information 28965itself. Second, a graphical frontend can have more than one window, 28966each one used for debugging a different thread, and the frontend might 28967want to access additional threads for internal purposes. This 28968increases the risk that by relying on implicitly selected thread, the 28969frontend may be operating on a wrong one. Therefore, each MI command 28970should explicitly specify which thread and frame to operate on. To 28971make it possible, each MI command accepts the @samp{--thread} and 28972@samp{--frame} options, the value to each is @value{GDBN} identifier 28973for thread and frame to operate on. 28974 28975Usually, each top-level window in a frontend allows the user to select 28976a thread and a frame, and remembers the user selection for further 28977operations. However, in some cases @value{GDBN} may suggest that the 28978current thread be changed. For example, when stopping on a breakpoint 28979it is reasonable to switch to the thread where breakpoint is hit. For 28980another example, if the user issues the CLI @samp{thread} command via 28981the frontend, it is desirable to change the frontend's selected thread to the 28982one specified by user. @value{GDBN} communicates the suggestion to 28983change current thread using the @samp{=thread-selected} notification. 28984No such notification is available for the selected frame at the moment. 28985 28986Note that historically, MI shares the selected thread with CLI, so 28987frontends used the @code{-thread-select} to execute commands in the 28988right context. However, getting this to work right is cumbersome. The 28989simplest way is for frontend to emit @code{-thread-select} command 28990before every command. This doubles the number of commands that need 28991to be sent. The alternative approach is to suppress @code{-thread-select} 28992if the selected thread in @value{GDBN} is supposed to be identical to the 28993thread the frontend wants to operate on. However, getting this 28994optimization right can be tricky. In particular, if the frontend 28995sends several commands to @value{GDBN}, and one of the commands changes the 28996selected thread, then the behaviour of subsequent commands will 28997change. So, a frontend should either wait for response from such 28998problematic commands, or explicitly add @code{-thread-select} for 28999all subsequent commands. No frontend is known to do this exactly 29000right, so it is suggested to just always pass the @samp{--thread} and 29001@samp{--frame} options. 29002 29003@subsubsection Language 29004 29005The execution of several commands depends on which language is selected. 29006By default, the current language (@pxref{show language}) is used. 29007But for commands known to be language-sensitive, it is recommended 29008to use the @samp{--language} option. This option takes one argument, 29009which is the name of the language to use while executing the command. 29010For instance: 29011 29012@smallexample 29013-data-evaluate-expression --language c "sizeof (void*)" 29014^done,value="4" 29015(gdb) 29016@end smallexample 29017 29018The valid language names are the same names accepted by the 29019@samp{set language} command (@pxref{Manually}), excluding @samp{auto}, 29020@samp{local} or @samp{unknown}. 29021 29022@node Asynchronous and non-stop modes 29023@subsection Asynchronous command execution and non-stop mode 29024 29025On some targets, @value{GDBN} is capable of processing MI commands 29026even while the target is running. This is called @dfn{asynchronous 29027command execution} (@pxref{Background Execution}). The frontend may 29028specify a preferrence for asynchronous execution using the 29029@code{-gdb-set target-async 1} command, which should be emitted before 29030either running the executable or attaching to the target. After the 29031frontend has started the executable or attached to the target, it can 29032find if asynchronous execution is enabled using the 29033@code{-list-target-features} command. 29034 29035Even if @value{GDBN} can accept a command while target is running, 29036many commands that access the target do not work when the target is 29037running. Therefore, asynchronous command execution is most useful 29038when combined with non-stop mode (@pxref{Non-Stop Mode}). Then, 29039it is possible to examine the state of one thread, while other threads 29040are running. 29041 29042When a given thread is running, MI commands that try to access the 29043target in the context of that thread may not work, or may work only on 29044some targets. In particular, commands that try to operate on thread's 29045stack will not work, on any target. Commands that read memory, or 29046modify breakpoints, may work or not work, depending on the target. Note 29047that even commands that operate on global state, such as @code{print}, 29048@code{set}, and breakpoint commands, still access the target in the 29049context of a specific thread, so frontend should try to find a 29050stopped thread and perform the operation on that thread (using the 29051@samp{--thread} option). 29052 29053Which commands will work in the context of a running thread is 29054highly target dependent. However, the two commands 29055@code{-exec-interrupt}, to stop a thread, and @code{-thread-info}, 29056to find the state of a thread, will always work. 29057 29058@node Thread groups 29059@subsection Thread groups 29060@value{GDBN} may be used to debug several processes at the same time. 29061On some platfroms, @value{GDBN} may support debugging of several 29062hardware systems, each one having several cores with several different 29063processes running on each core. This section describes the MI 29064mechanism to support such debugging scenarios. 29065 29066The key observation is that regardless of the structure of the 29067target, MI can have a global list of threads, because most commands that 29068accept the @samp{--thread} option do not need to know what process that 29069thread belongs to. Therefore, it is not necessary to introduce 29070neither additional @samp{--process} option, nor an notion of the 29071current process in the MI interface. The only strictly new feature 29072that is required is the ability to find how the threads are grouped 29073into processes. 29074 29075To allow the user to discover such grouping, and to support arbitrary 29076hierarchy of machines/cores/processes, MI introduces the concept of a 29077@dfn{thread group}. Thread group is a collection of threads and other 29078thread groups. A thread group always has a string identifier, a type, 29079and may have additional attributes specific to the type. A new 29080command, @code{-list-thread-groups}, returns the list of top-level 29081thread groups, which correspond to processes that @value{GDBN} is 29082debugging at the moment. By passing an identifier of a thread group 29083to the @code{-list-thread-groups} command, it is possible to obtain 29084the members of specific thread group. 29085 29086To allow the user to easily discover processes, and other objects, he 29087wishes to debug, a concept of @dfn{available thread group} is 29088introduced. Available thread group is an thread group that 29089@value{GDBN} is not debugging, but that can be attached to, using the 29090@code{-target-attach} command. The list of available top-level thread 29091groups can be obtained using @samp{-list-thread-groups --available}. 29092In general, the content of a thread group may be only retrieved only 29093after attaching to that thread group. 29094 29095Thread groups are related to inferiors (@pxref{Inferiors and 29096Programs}). Each inferior corresponds to a thread group of a special 29097type @samp{process}, and some additional operations are permitted on 29098such thread groups. 29099 29100@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29101@node GDB/MI Command Syntax 29102@section @sc{gdb/mi} Command Syntax 29103 29104@menu 29105* GDB/MI Input Syntax:: 29106* GDB/MI Output Syntax:: 29107@end menu 29108 29109@node GDB/MI Input Syntax 29110@subsection @sc{gdb/mi} Input Syntax 29111 29112@cindex input syntax for @sc{gdb/mi} 29113@cindex @sc{gdb/mi}, input syntax 29114@table @code 29115@item @var{command} @expansion{} 29116@code{@var{cli-command} | @var{mi-command}} 29117 29118@item @var{cli-command} @expansion{} 29119@code{[ @var{token} ] @var{cli-command} @var{nl}}, where 29120@var{cli-command} is any existing @value{GDBN} CLI command. 29121 29122@item @var{mi-command} @expansion{} 29123@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )* 29124@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}} 29125 29126@item @var{token} @expansion{} 29127"any sequence of digits" 29128 29129@item @var{option} @expansion{} 29130@code{"-" @var{parameter} [ " " @var{parameter} ]} 29131 29132@item @var{parameter} @expansion{} 29133@code{@var{non-blank-sequence} | @var{c-string}} 29134 29135@item @var{operation} @expansion{} 29136@emph{any of the operations described in this chapter} 29137 29138@item @var{non-blank-sequence} @expansion{} 29139@emph{anything, provided it doesn't contain special characters such as 29140"-", @var{nl}, """ and of course " "} 29141 29142@item @var{c-string} @expansion{} 29143@code{""" @var{seven-bit-iso-c-string-content} """} 29144 29145@item @var{nl} @expansion{} 29146@code{CR | CR-LF} 29147@end table 29148 29149@noindent 29150Notes: 29151 29152@itemize @bullet 29153@item 29154The CLI commands are still handled by the @sc{mi} interpreter; their 29155output is described below. 29156 29157@item 29158The @code{@var{token}}, when present, is passed back when the command 29159finishes. 29160 29161@item 29162Some @sc{mi} commands accept optional arguments as part of the parameter 29163list. Each option is identified by a leading @samp{-} (dash) and may be 29164followed by an optional argument parameter. Options occur first in the 29165parameter list and can be delimited from normal parameters using 29166@samp{--} (this is useful when some parameters begin with a dash). 29167@end itemize 29168 29169Pragmatics: 29170 29171@itemize @bullet 29172@item 29173We want easy access to the existing CLI syntax (for debugging). 29174 29175@item 29176We want it to be easy to spot a @sc{mi} operation. 29177@end itemize 29178 29179@node GDB/MI Output Syntax 29180@subsection @sc{gdb/mi} Output Syntax 29181 29182@cindex output syntax of @sc{gdb/mi} 29183@cindex @sc{gdb/mi}, output syntax 29184The output from @sc{gdb/mi} consists of zero or more out-of-band records 29185followed, optionally, by a single result record. This result record 29186is for the most recent command. The sequence of output records is 29187terminated by @samp{(gdb)}. 29188 29189If an input command was prefixed with a @code{@var{token}} then the 29190corresponding output for that command will also be prefixed by that same 29191@var{token}. 29192 29193@table @code 29194@item @var{output} @expansion{} 29195@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}} 29196 29197@item @var{result-record} @expansion{} 29198@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}} 29199 29200@item @var{out-of-band-record} @expansion{} 29201@code{@var{async-record} | @var{stream-record}} 29202 29203@item @var{async-record} @expansion{} 29204@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}} 29205 29206@item @var{exec-async-output} @expansion{} 29207@code{[ @var{token} ] "*" @var{async-output}} 29208 29209@item @var{status-async-output} @expansion{} 29210@code{[ @var{token} ] "+" @var{async-output}} 29211 29212@item @var{notify-async-output} @expansion{} 29213@code{[ @var{token} ] "=" @var{async-output}} 29214 29215@item @var{async-output} @expansion{} 29216@code{@var{async-class} ( "," @var{result} )* @var{nl}} 29217 29218@item @var{result-class} @expansion{} 29219@code{"done" | "running" | "connected" | "error" | "exit"} 29220 29221@item @var{async-class} @expansion{} 29222@code{"stopped" | @var{others}} (where @var{others} will be added 29223depending on the needs---this is still in development). 29224 29225@item @var{result} @expansion{} 29226@code{ @var{variable} "=" @var{value}} 29227 29228@item @var{variable} @expansion{} 29229@code{ @var{string} } 29230 29231@item @var{value} @expansion{} 29232@code{ @var{const} | @var{tuple} | @var{list} } 29233 29234@item @var{const} @expansion{} 29235@code{@var{c-string}} 29236 29237@item @var{tuple} @expansion{} 29238@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" } 29239 29240@item @var{list} @expansion{} 29241@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "[" 29242@var{result} ( "," @var{result} )* "]" } 29243 29244@item @var{stream-record} @expansion{} 29245@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}} 29246 29247@item @var{console-stream-output} @expansion{} 29248@code{"~" @var{c-string}} 29249 29250@item @var{target-stream-output} @expansion{} 29251@code{"@@" @var{c-string}} 29252 29253@item @var{log-stream-output} @expansion{} 29254@code{"&" @var{c-string}} 29255 29256@item @var{nl} @expansion{} 29257@code{CR | CR-LF} 29258 29259@item @var{token} @expansion{} 29260@emph{any sequence of digits}. 29261@end table 29262 29263@noindent 29264Notes: 29265 29266@itemize @bullet 29267@item 29268All output sequences end in a single line containing a period. 29269 29270@item 29271The @code{@var{token}} is from the corresponding request. Note that 29272for all async output, while the token is allowed by the grammar and 29273may be output by future versions of @value{GDBN} for select async 29274output messages, it is generally omitted. Frontends should treat 29275all async output as reporting general changes in the state of the 29276target and there should be no need to associate async output to any 29277prior command. 29278 29279@item 29280@cindex status output in @sc{gdb/mi} 29281@var{status-async-output} contains on-going status information about the 29282progress of a slow operation. It can be discarded. All status output is 29283prefixed by @samp{+}. 29284 29285@item 29286@cindex async output in @sc{gdb/mi} 29287@var{exec-async-output} contains asynchronous state change on the target 29288(stopped, started, disappeared). All async output is prefixed by 29289@samp{*}. 29290 29291@item 29292@cindex notify output in @sc{gdb/mi} 29293@var{notify-async-output} contains supplementary information that the 29294client should handle (e.g., a new breakpoint information). All notify 29295output is prefixed by @samp{=}. 29296 29297@item 29298@cindex console output in @sc{gdb/mi} 29299@var{console-stream-output} is output that should be displayed as is in the 29300console. It is the textual response to a CLI command. All the console 29301output is prefixed by @samp{~}. 29302 29303@item 29304@cindex target output in @sc{gdb/mi} 29305@var{target-stream-output} is the output produced by the target program. 29306All the target output is prefixed by @samp{@@}. 29307 29308@item 29309@cindex log output in @sc{gdb/mi} 29310@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for 29311instance messages that should be displayed as part of an error log. All 29312the log output is prefixed by @samp{&}. 29313 29314@item 29315@cindex list output in @sc{gdb/mi} 29316New @sc{gdb/mi} commands should only output @var{lists} containing 29317@var{values}. 29318 29319 29320@end itemize 29321 29322@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more 29323details about the various output records. 29324 29325@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29326@node GDB/MI Compatibility with CLI 29327@section @sc{gdb/mi} Compatibility with CLI 29328 29329@cindex compatibility, @sc{gdb/mi} and CLI 29330@cindex @sc{gdb/mi}, compatibility with CLI 29331 29332For the developers convenience CLI commands can be entered directly, 29333but there may be some unexpected behaviour. For example, commands 29334that query the user will behave as if the user replied yes, breakpoint 29335command lists are not executed and some CLI commands, such as 29336@code{if}, @code{when} and @code{define}, prompt for further input with 29337@samp{>}, which is not valid MI output. 29338 29339This feature may be removed at some stage in the future and it is 29340recommended that front ends use the @code{-interpreter-exec} command 29341(@pxref{-interpreter-exec}). 29342 29343@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29344@node GDB/MI Development and Front Ends 29345@section @sc{gdb/mi} Development and Front Ends 29346@cindex @sc{gdb/mi} development 29347 29348The application which takes the MI output and presents the state of the 29349program being debugged to the user is called a @dfn{front end}. 29350 29351Although @sc{gdb/mi} is still incomplete, it is currently being used 29352by a variety of front ends to @value{GDBN}. This makes it difficult 29353to introduce new functionality without breaking existing usage. This 29354section tries to minimize the problems by describing how the protocol 29355might change. 29356 29357Some changes in MI need not break a carefully designed front end, and 29358for these the MI version will remain unchanged. The following is a 29359list of changes that may occur within one level, so front ends should 29360parse MI output in a way that can handle them: 29361 29362@itemize @bullet 29363@item 29364New MI commands may be added. 29365 29366@item 29367New fields may be added to the output of any MI command. 29368 29369@item 29370The range of values for fields with specified values, e.g., 29371@code{in_scope} (@pxref{-var-update}) may be extended. 29372 29373@c The format of field's content e.g type prefix, may change so parse it 29374@c at your own risk. Yes, in general? 29375 29376@c The order of fields may change? Shouldn't really matter but it might 29377@c resolve inconsistencies. 29378@end itemize 29379 29380If the changes are likely to break front ends, the MI version level 29381will be increased by one. This will allow the front end to parse the 29382output according to the MI version. Apart from mi0, new versions of 29383@value{GDBN} will not support old versions of MI and it will be the 29384responsibility of the front end to work with the new one. 29385 29386@c Starting with mi3, add a new command -mi-version that prints the MI 29387@c version? 29388 29389The best way to avoid unexpected changes in MI that might break your front 29390end is to make your project known to @value{GDBN} developers and 29391follow development on @email{gdb@@sourceware.org} and 29392@email{gdb-patches@@sourceware.org}. 29393@cindex mailing lists 29394 29395@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29396@node GDB/MI Output Records 29397@section @sc{gdb/mi} Output Records 29398 29399@menu 29400* GDB/MI Result Records:: 29401* GDB/MI Stream Records:: 29402* GDB/MI Async Records:: 29403* GDB/MI Breakpoint Information:: 29404* GDB/MI Frame Information:: 29405* GDB/MI Thread Information:: 29406* GDB/MI Ada Exception Information:: 29407@end menu 29408 29409@node GDB/MI Result Records 29410@subsection @sc{gdb/mi} Result Records 29411 29412@cindex result records in @sc{gdb/mi} 29413@cindex @sc{gdb/mi}, result records 29414In addition to a number of out-of-band notifications, the response to a 29415@sc{gdb/mi} command includes one of the following result indications: 29416 29417@table @code 29418@findex ^done 29419@item "^done" [ "," @var{results} ] 29420The synchronous operation was successful, @code{@var{results}} are the return 29421values. 29422 29423@item "^running" 29424@findex ^running 29425This result record is equivalent to @samp{^done}. Historically, it 29426was output instead of @samp{^done} if the command has resumed the 29427target. This behaviour is maintained for backward compatibility, but 29428all frontends should treat @samp{^done} and @samp{^running} 29429identically and rely on the @samp{*running} output record to determine 29430which threads are resumed. 29431 29432@item "^connected" 29433@findex ^connected 29434@value{GDBN} has connected to a remote target. 29435 29436@item "^error" "," "msg=" @var{c-string} [ "," "code=" @var{c-string} ] 29437@findex ^error 29438The operation failed. The @code{msg=@var{c-string}} variable contains 29439the corresponding error message. 29440 29441If present, the @code{code=@var{c-string}} variable provides an error 29442code on which consumers can rely on to detect the corresponding 29443error condition. At present, only one error code is defined: 29444 29445@table @samp 29446@item "undefined-command" 29447Indicates that the command causing the error does not exist. 29448@end table 29449 29450@item "^exit" 29451@findex ^exit 29452@value{GDBN} has terminated. 29453 29454@end table 29455 29456@node GDB/MI Stream Records 29457@subsection @sc{gdb/mi} Stream Records 29458 29459@cindex @sc{gdb/mi}, stream records 29460@cindex stream records in @sc{gdb/mi} 29461@value{GDBN} internally maintains a number of output streams: the console, the 29462target, and the log. The output intended for each of these streams is 29463funneled through the @sc{gdb/mi} interface using @dfn{stream records}. 29464 29465Each stream record begins with a unique @dfn{prefix character} which 29466identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output 29467Syntax}). In addition to the prefix, each stream record contains a 29468@code{@var{string-output}}. This is either raw text (with an implicit new 29469line) or a quoted C string (which does not contain an implicit newline). 29470 29471@table @code 29472@item "~" @var{string-output} 29473The console output stream contains text that should be displayed in the 29474CLI console window. It contains the textual responses to CLI commands. 29475 29476@item "@@" @var{string-output} 29477The target output stream contains any textual output from the running 29478target. This is only present when GDB's event loop is truly 29479asynchronous, which is currently only the case for remote targets. 29480 29481@item "&" @var{string-output} 29482The log stream contains debugging messages being produced by @value{GDBN}'s 29483internals. 29484@end table 29485 29486@node GDB/MI Async Records 29487@subsection @sc{gdb/mi} Async Records 29488 29489@cindex async records in @sc{gdb/mi} 29490@cindex @sc{gdb/mi}, async records 29491@dfn{Async} records are used to notify the @sc{gdb/mi} client of 29492additional changes that have occurred. Those changes can either be a 29493consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of 29494target activity (e.g., target stopped). 29495 29496The following is the list of possible async records: 29497 29498@table @code 29499 29500@item *running,thread-id="@var{thread}" 29501The target is now running. The @var{thread} field tells which 29502specific thread is now running, and can be @samp{all} if all threads 29503are running. The frontend should assume that no interaction with a 29504running thread is possible after this notification is produced. 29505The frontend should not assume that this notification is output 29506only once for any command. @value{GDBN} may emit this notification 29507several times, either for different threads, because it cannot resume 29508all threads together, or even for a single thread, if the thread must 29509be stepped though some code before letting it run freely. 29510 29511@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}" 29512The target has stopped. The @var{reason} field can have one of the 29513following values: 29514 29515@table @code 29516@item breakpoint-hit 29517A breakpoint was reached. 29518@item watchpoint-trigger 29519A watchpoint was triggered. 29520@item read-watchpoint-trigger 29521A read watchpoint was triggered. 29522@item access-watchpoint-trigger 29523An access watchpoint was triggered. 29524@item function-finished 29525An -exec-finish or similar CLI command was accomplished. 29526@item location-reached 29527An -exec-until or similar CLI command was accomplished. 29528@item watchpoint-scope 29529A watchpoint has gone out of scope. 29530@item end-stepping-range 29531An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or 29532similar CLI command was accomplished. 29533@item exited-signalled 29534The inferior exited because of a signal. 29535@item exited 29536The inferior exited. 29537@item exited-normally 29538The inferior exited normally. 29539@item signal-received 29540A signal was received by the inferior. 29541@item solib-event 29542The inferior has stopped due to a library being loaded or unloaded. 29543This can happen when @code{stop-on-solib-events} (@pxref{Files}) is 29544set or when a @code{catch load} or @code{catch unload} catchpoint is 29545in use (@pxref{Set Catchpoints}). 29546@item fork 29547The inferior has forked. This is reported when @code{catch fork} 29548(@pxref{Set Catchpoints}) has been used. 29549@item vfork 29550The inferior has vforked. This is reported in when @code{catch vfork} 29551(@pxref{Set Catchpoints}) has been used. 29552@item syscall-entry 29553The inferior entered a system call. This is reported when @code{catch 29554syscall} (@pxref{Set Catchpoints}) has been used. 29555@item syscall-entry 29556The inferior returned from a system call. This is reported when 29557@code{catch syscall} (@pxref{Set Catchpoints}) has been used. 29558@item exec 29559The inferior called @code{exec}. This is reported when @code{catch exec} 29560(@pxref{Set Catchpoints}) has been used. 29561@end table 29562 29563The @var{id} field identifies the thread that directly caused the stop 29564-- for example by hitting a breakpoint. Depending on whether all-stop 29565mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either 29566stop all threads, or only the thread that directly triggered the stop. 29567If all threads are stopped, the @var{stopped} field will have the 29568value of @code{"all"}. Otherwise, the value of the @var{stopped} 29569field will be a list of thread identifiers. Presently, this list will 29570always include a single thread, but frontend should be prepared to see 29571several threads in the list. The @var{core} field reports the 29572processor core on which the stop event has happened. This field may be absent 29573if such information is not available. 29574 29575@item =thread-group-added,id="@var{id}" 29576@itemx =thread-group-removed,id="@var{id}" 29577A thread group was either added or removed. The @var{id} field 29578contains the @value{GDBN} identifier of the thread group. When a thread 29579group is added, it generally might not be associated with a running 29580process. When a thread group is removed, its id becomes invalid and 29581cannot be used in any way. 29582 29583@item =thread-group-started,id="@var{id}",pid="@var{pid}" 29584A thread group became associated with a running program, 29585either because the program was just started or the thread group 29586was attached to a program. The @var{id} field contains the 29587@value{GDBN} identifier of the thread group. The @var{pid} field 29588contains process identifier, specific to the operating system. 29589 29590@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"] 29591A thread group is no longer associated with a running program, 29592either because the program has exited, or because it was detached 29593from. The @var{id} field contains the @value{GDBN} identifier of the 29594thread group. @var{code} is the exit code of the inferior; it exists 29595only when the inferior exited with some code. 29596 29597@item =thread-created,id="@var{id}",group-id="@var{gid}" 29598@itemx =thread-exited,id="@var{id}",group-id="@var{gid}" 29599A thread either was created, or has exited. The @var{id} field 29600contains the @value{GDBN} identifier of the thread. The @var{gid} 29601field identifies the thread group this thread belongs to. 29602 29603@item =thread-selected,id="@var{id}" 29604Informs that the selected thread was changed as result of the last 29605command. This notification is not emitted as result of @code{-thread-select} 29606command but is emitted whenever an MI command that is not documented 29607to change the selected thread actually changes it. In particular, 29608invoking, directly or indirectly (via user-defined command), the CLI 29609@code{thread} command, will generate this notification. 29610 29611We suggest that in response to this notification, front ends 29612highlight the selected thread and cause subsequent commands to apply to 29613that thread. 29614 29615@item =library-loaded,... 29616Reports that a new library file was loaded by the program. This 29617notification has 4 fields---@var{id}, @var{target-name}, 29618@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an 29619opaque identifier of the library. For remote debugging case, 29620@var{target-name} and @var{host-name} fields give the name of the 29621library file on the target, and on the host respectively. For native 29622debugging, both those fields have the same value. The 29623@var{symbols-loaded} field is emitted only for backward compatibility 29624and should not be relied on to convey any useful information. The 29625@var{thread-group} field, if present, specifies the id of the thread 29626group in whose context the library was loaded. If the field is 29627absent, it means the library was loaded in the context of all present 29628thread groups. 29629 29630@item =library-unloaded,... 29631Reports that a library was unloaded by the program. This notification 29632has 3 fields---@var{id}, @var{target-name} and @var{host-name} with 29633the same meaning as for the @code{=library-loaded} notification. 29634The @var{thread-group} field, if present, specifies the id of the 29635thread group in whose context the library was unloaded. If the field is 29636absent, it means the library was unloaded in the context of all present 29637thread groups. 29638 29639@item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum} 29640@itemx =traceframe-changed,end 29641Reports that the trace frame was changed and its new number is 29642@var{tfnum}. The number of the tracepoint associated with this trace 29643frame is @var{tpnum}. 29644 29645@item =tsv-created,name=@var{name},initial=@var{initial} 29646Reports that the new trace state variable @var{name} is created with 29647initial value @var{initial}. 29648 29649@item =tsv-deleted,name=@var{name} 29650@itemx =tsv-deleted 29651Reports that the trace state variable @var{name} is deleted or all 29652trace state variables are deleted. 29653 29654@item =tsv-modified,name=@var{name},initial=@var{initial}[,current=@var{current}] 29655Reports that the trace state variable @var{name} is modified with 29656the initial value @var{initial}. The current value @var{current} of 29657trace state variable is optional and is reported if the current 29658value of trace state variable is known. 29659 29660@item =breakpoint-created,bkpt=@{...@} 29661@itemx =breakpoint-modified,bkpt=@{...@} 29662@itemx =breakpoint-deleted,id=@var{number} 29663Reports that a breakpoint was created, modified, or deleted, 29664respectively. Only user-visible breakpoints are reported to the MI 29665user. 29666 29667The @var{bkpt} argument is of the same form as returned by the various 29668breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The 29669@var{number} is the ordinal number of the breakpoint. 29670 29671Note that if a breakpoint is emitted in the result record of a 29672command, then it will not also be emitted in an async record. 29673 29674@item =record-started,thread-group="@var{id}" 29675@itemx =record-stopped,thread-group="@var{id}" 29676Execution log recording was either started or stopped on an 29677inferior. The @var{id} is the @value{GDBN} identifier of the thread 29678group corresponding to the affected inferior. 29679 29680@item =cmd-param-changed,param=@var{param},value=@var{value} 29681Reports that a parameter of the command @code{set @var{param}} is 29682changed to @var{value}. In the multi-word @code{set} command, 29683the @var{param} is the whole parameter list to @code{set} command. 29684For example, In command @code{set check type on}, @var{param} 29685is @code{check type} and @var{value} is @code{on}. 29686 29687@item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"] 29688Reports that bytes from @var{addr} to @var{data} + @var{len} were 29689written in an inferior. The @var{id} is the identifier of the 29690thread group corresponding to the affected inferior. The optional 29691@code{type="code"} part is reported if the memory written to holds 29692executable code. 29693@end table 29694 29695@node GDB/MI Breakpoint Information 29696@subsection @sc{gdb/mi} Breakpoint Information 29697 29698When @value{GDBN} reports information about a breakpoint, a 29699tracepoint, a watchpoint, or a catchpoint, it uses a tuple with the 29700following fields: 29701 29702@table @code 29703@item number 29704The breakpoint number. For a breakpoint that represents one location 29705of a multi-location breakpoint, this will be a dotted pair, like 29706@samp{1.2}. 29707 29708@item type 29709The type of the breakpoint. For ordinary breakpoints this will be 29710@samp{breakpoint}, but many values are possible. 29711 29712@item catch-type 29713If the type of the breakpoint is @samp{catchpoint}, then this 29714indicates the exact type of catchpoint. 29715 29716@item disp 29717This is the breakpoint disposition---either @samp{del}, meaning that 29718the breakpoint will be deleted at the next stop, or @samp{keep}, 29719meaning that the breakpoint will not be deleted. 29720 29721@item enabled 29722This indicates whether the breakpoint is enabled, in which case the 29723value is @samp{y}, or disabled, in which case the value is @samp{n}. 29724Note that this is not the same as the field @code{enable}. 29725 29726@item addr 29727The address of the breakpoint. This may be a hexidecimal number, 29728giving the address; or the string @samp{<PENDING>}, for a pending 29729breakpoint; or the string @samp{<MULTIPLE>}, for a breakpoint with 29730multiple locations. This field will not be present if no address can 29731be determined. For example, a watchpoint does not have an address. 29732 29733@item func 29734If known, the function in which the breakpoint appears. 29735If not known, this field is not present. 29736 29737@item filename 29738The name of the source file which contains this function, if known. 29739If not known, this field is not present. 29740 29741@item fullname 29742The full file name of the source file which contains this function, if 29743known. If not known, this field is not present. 29744 29745@item line 29746The line number at which this breakpoint appears, if known. 29747If not known, this field is not present. 29748 29749@item at 29750If the source file is not known, this field may be provided. If 29751provided, this holds the address of the breakpoint, possibly followed 29752by a symbol name. 29753 29754@item pending 29755If this breakpoint is pending, this field is present and holds the 29756text used to set the breakpoint, as entered by the user. 29757 29758@item evaluated-by 29759Where this breakpoint's condition is evaluated, either @samp{host} or 29760@samp{target}. 29761 29762@item thread 29763If this is a thread-specific breakpoint, then this identifies the 29764thread in which the breakpoint can trigger. 29765 29766@item task 29767If this breakpoint is restricted to a particular Ada task, then this 29768field will hold the task identifier. 29769 29770@item cond 29771If the breakpoint is conditional, this is the condition expression. 29772 29773@item ignore 29774The ignore count of the breakpoint. 29775 29776@item enable 29777The enable count of the breakpoint. 29778 29779@item traceframe-usage 29780FIXME. 29781 29782@item static-tracepoint-marker-string-id 29783For a static tracepoint, the name of the static tracepoint marker. 29784 29785@item mask 29786For a masked watchpoint, this is the mask. 29787 29788@item pass 29789A tracepoint's pass count. 29790 29791@item original-location 29792The location of the breakpoint as originally specified by the user. 29793This field is optional. 29794 29795@item times 29796The number of times the breakpoint has been hit. 29797 29798@item installed 29799This field is only given for tracepoints. This is either @samp{y}, 29800meaning that the tracepoint is installed, or @samp{n}, meaning that it 29801is not. 29802 29803@item what 29804Some extra data, the exact contents of which are type-dependent. 29805 29806@end table 29807 29808For example, here is what the output of @code{-break-insert} 29809(@pxref{GDB/MI Breakpoint Commands}) might be: 29810 29811@smallexample 29812-> -break-insert main 29813<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 29814 enabled="y",addr="0x08048564",func="main",file="myprog.c", 29815 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 29816 times="0"@} 29817<- (gdb) 29818@end smallexample 29819 29820@node GDB/MI Frame Information 29821@subsection @sc{gdb/mi} Frame Information 29822 29823Response from many MI commands includes an information about stack 29824frame. This information is a tuple that may have the following 29825fields: 29826 29827@table @code 29828@item level 29829The level of the stack frame. The innermost frame has the level of 29830zero. This field is always present. 29831 29832@item func 29833The name of the function corresponding to the frame. This field may 29834be absent if @value{GDBN} is unable to determine the function name. 29835 29836@item addr 29837The code address for the frame. This field is always present. 29838 29839@item file 29840The name of the source files that correspond to the frame's code 29841address. This field may be absent. 29842 29843@item line 29844The source line corresponding to the frames' code address. This field 29845may be absent. 29846 29847@item from 29848The name of the binary file (either executable or shared library) the 29849corresponds to the frame's code address. This field may be absent. 29850 29851@end table 29852 29853@node GDB/MI Thread Information 29854@subsection @sc{gdb/mi} Thread Information 29855 29856Whenever @value{GDBN} has to report an information about a thread, it 29857uses a tuple with the following fields: 29858 29859@table @code 29860@item id 29861The numeric id assigned to the thread by @value{GDBN}. This field is 29862always present. 29863 29864@item target-id 29865Target-specific string identifying the thread. This field is always present. 29866 29867@item details 29868Additional information about the thread provided by the target. 29869It is supposed to be human-readable and not interpreted by the 29870frontend. This field is optional. 29871 29872@item state 29873Either @samp{stopped} or @samp{running}, depending on whether the 29874thread is presently running. This field is always present. 29875 29876@item core 29877The value of this field is an integer number of the processor core the 29878thread was last seen on. This field is optional. 29879@end table 29880 29881@node GDB/MI Ada Exception Information 29882@subsection @sc{gdb/mi} Ada Exception Information 29883 29884Whenever a @code{*stopped} record is emitted because the program 29885stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}), 29886@value{GDBN} provides the name of the exception that was raised via 29887the @code{exception-name} field. 29888 29889@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29890@node GDB/MI Simple Examples 29891@section Simple Examples of @sc{gdb/mi} Interaction 29892@cindex @sc{gdb/mi}, simple examples 29893 29894This subsection presents several simple examples of interaction using 29895the @sc{gdb/mi} interface. In these examples, @samp{->} means that the 29896following line is passed to @sc{gdb/mi} as input, while @samp{<-} means 29897the output received from @sc{gdb/mi}. 29898 29899Note the line breaks shown in the examples are here only for 29900readability, they don't appear in the real output. 29901 29902@subheading Setting a Breakpoint 29903 29904Setting a breakpoint generates synchronous output which contains detailed 29905information of the breakpoint. 29906 29907@smallexample 29908-> -break-insert main 29909<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 29910 enabled="y",addr="0x08048564",func="main",file="myprog.c", 29911 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 29912 times="0"@} 29913<- (gdb) 29914@end smallexample 29915 29916@subheading Program Execution 29917 29918Program execution generates asynchronous records and MI gives the 29919reason that execution stopped. 29920 29921@smallexample 29922-> -exec-run 29923<- ^running 29924<- (gdb) 29925<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 29926 frame=@{addr="0x08048564",func="main", 29927 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}], 29928 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@} 29929<- (gdb) 29930-> -exec-continue 29931<- ^running 29932<- (gdb) 29933<- *stopped,reason="exited-normally" 29934<- (gdb) 29935@end smallexample 29936 29937@subheading Quitting @value{GDBN} 29938 29939Quitting @value{GDBN} just prints the result class @samp{^exit}. 29940 29941@smallexample 29942-> (gdb) 29943<- -gdb-exit 29944<- ^exit 29945@end smallexample 29946 29947Please note that @samp{^exit} is printed immediately, but it might 29948take some time for @value{GDBN} to actually exit. During that time, @value{GDBN} 29949performs necessary cleanups, including killing programs being debugged 29950or disconnecting from debug hardware, so the frontend should wait till 29951@value{GDBN} exits and should only forcibly kill @value{GDBN} if it 29952fails to exit in reasonable time. 29953 29954@subheading A Bad Command 29955 29956Here's what happens if you pass a non-existent command: 29957 29958@smallexample 29959-> -rubbish 29960<- ^error,msg="Undefined MI command: rubbish" 29961<- (gdb) 29962@end smallexample 29963 29964 29965@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29966@node GDB/MI Command Description Format 29967@section @sc{gdb/mi} Command Description Format 29968 29969The remaining sections describe blocks of commands. Each block of 29970commands is laid out in a fashion similar to this section. 29971 29972@subheading Motivation 29973 29974The motivation for this collection of commands. 29975 29976@subheading Introduction 29977 29978A brief introduction to this collection of commands as a whole. 29979 29980@subheading Commands 29981 29982For each command in the block, the following is described: 29983 29984@subsubheading Synopsis 29985 29986@smallexample 29987 -command @var{args}@dots{} 29988@end smallexample 29989 29990@subsubheading Result 29991 29992@subsubheading @value{GDBN} Command 29993 29994The corresponding @value{GDBN} CLI command(s), if any. 29995 29996@subsubheading Example 29997 29998Example(s) formatted for readability. Some of the described commands have 29999not been implemented yet and these are labeled N.A.@: (not available). 30000 30001 30002@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30003@node GDB/MI Breakpoint Commands 30004@section @sc{gdb/mi} Breakpoint Commands 30005 30006@cindex breakpoint commands for @sc{gdb/mi} 30007@cindex @sc{gdb/mi}, breakpoint commands 30008This section documents @sc{gdb/mi} commands for manipulating 30009breakpoints. 30010 30011@subheading The @code{-break-after} Command 30012@findex -break-after 30013 30014@subsubheading Synopsis 30015 30016@smallexample 30017 -break-after @var{number} @var{count} 30018@end smallexample 30019 30020The breakpoint number @var{number} is not in effect until it has been 30021hit @var{count} times. To see how this is reflected in the output of 30022the @samp{-break-list} command, see the description of the 30023@samp{-break-list} command below. 30024 30025@subsubheading @value{GDBN} Command 30026 30027The corresponding @value{GDBN} command is @samp{ignore}. 30028 30029@subsubheading Example 30030 30031@smallexample 30032(gdb) 30033-break-insert main 30034^done,bkpt=@{number="1",type="breakpoint",disp="keep", 30035enabled="y",addr="0x000100d0",func="main",file="hello.c", 30036fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 30037times="0"@} 30038(gdb) 30039-break-after 1 3 30040~ 30041^done 30042(gdb) 30043-break-list 30044^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 30045hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30046@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30047@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30048@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30049@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30050@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30051body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30052addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 30053line="5",thread-groups=["i1"],times="0",ignore="3"@}]@} 30054(gdb) 30055@end smallexample 30056 30057@ignore 30058@subheading The @code{-break-catch} Command 30059@findex -break-catch 30060@end ignore 30061 30062@subheading The @code{-break-commands} Command 30063@findex -break-commands 30064 30065@subsubheading Synopsis 30066 30067@smallexample 30068 -break-commands @var{number} [ @var{command1} ... @var{commandN} ] 30069@end smallexample 30070 30071Specifies the CLI commands that should be executed when breakpoint 30072@var{number} is hit. The parameters @var{command1} to @var{commandN} 30073are the commands. If no command is specified, any previously-set 30074commands are cleared. @xref{Break Commands}. Typical use of this 30075functionality is tracing a program, that is, printing of values of 30076some variables whenever breakpoint is hit and then continuing. 30077 30078@subsubheading @value{GDBN} Command 30079 30080The corresponding @value{GDBN} command is @samp{commands}. 30081 30082@subsubheading Example 30083 30084@smallexample 30085(gdb) 30086-break-insert main 30087^done,bkpt=@{number="1",type="breakpoint",disp="keep", 30088enabled="y",addr="0x000100d0",func="main",file="hello.c", 30089fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 30090times="0"@} 30091(gdb) 30092-break-commands 1 "print v" "continue" 30093^done 30094(gdb) 30095@end smallexample 30096 30097@subheading The @code{-break-condition} Command 30098@findex -break-condition 30099 30100@subsubheading Synopsis 30101 30102@smallexample 30103 -break-condition @var{number} @var{expr} 30104@end smallexample 30105 30106Breakpoint @var{number} will stop the program only if the condition in 30107@var{expr} is true. The condition becomes part of the 30108@samp{-break-list} output (see the description of the @samp{-break-list} 30109command below). 30110 30111@subsubheading @value{GDBN} Command 30112 30113The corresponding @value{GDBN} command is @samp{condition}. 30114 30115@subsubheading Example 30116 30117@smallexample 30118(gdb) 30119-break-condition 1 1 30120^done 30121(gdb) 30122-break-list 30123^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 30124hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30125@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30126@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30127@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30128@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30129@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30130body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30131addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 30132line="5",cond="1",thread-groups=["i1"],times="0",ignore="3"@}]@} 30133(gdb) 30134@end smallexample 30135 30136@subheading The @code{-break-delete} Command 30137@findex -break-delete 30138 30139@subsubheading Synopsis 30140 30141@smallexample 30142 -break-delete ( @var{breakpoint} )+ 30143@end smallexample 30144 30145Delete the breakpoint(s) whose number(s) are specified in the argument 30146list. This is obviously reflected in the breakpoint list. 30147 30148@subsubheading @value{GDBN} Command 30149 30150The corresponding @value{GDBN} command is @samp{delete}. 30151 30152@subsubheading Example 30153 30154@smallexample 30155(gdb) 30156-break-delete 1 30157^done 30158(gdb) 30159-break-list 30160^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 30161hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30162@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30163@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30164@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30165@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30166@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30167body=[]@} 30168(gdb) 30169@end smallexample 30170 30171@subheading The @code{-break-disable} Command 30172@findex -break-disable 30173 30174@subsubheading Synopsis 30175 30176@smallexample 30177 -break-disable ( @var{breakpoint} )+ 30178@end smallexample 30179 30180Disable the named @var{breakpoint}(s). The field @samp{enabled} in the 30181break list is now set to @samp{n} for the named @var{breakpoint}(s). 30182 30183@subsubheading @value{GDBN} Command 30184 30185The corresponding @value{GDBN} command is @samp{disable}. 30186 30187@subsubheading Example 30188 30189@smallexample 30190(gdb) 30191-break-disable 2 30192^done 30193(gdb) 30194-break-list 30195^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 30196hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30197@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30198@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30199@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30200@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30201@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30202body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n", 30203addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 30204line="5",thread-groups=["i1"],times="0"@}]@} 30205(gdb) 30206@end smallexample 30207 30208@subheading The @code{-break-enable} Command 30209@findex -break-enable 30210 30211@subsubheading Synopsis 30212 30213@smallexample 30214 -break-enable ( @var{breakpoint} )+ 30215@end smallexample 30216 30217Enable (previously disabled) @var{breakpoint}(s). 30218 30219@subsubheading @value{GDBN} Command 30220 30221The corresponding @value{GDBN} command is @samp{enable}. 30222 30223@subsubheading Example 30224 30225@smallexample 30226(gdb) 30227-break-enable 2 30228^done 30229(gdb) 30230-break-list 30231^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 30232hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30233@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30234@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30235@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30236@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30237@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30238body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 30239addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 30240line="5",thread-groups=["i1"],times="0"@}]@} 30241(gdb) 30242@end smallexample 30243 30244@subheading The @code{-break-info} Command 30245@findex -break-info 30246 30247@subsubheading Synopsis 30248 30249@smallexample 30250 -break-info @var{breakpoint} 30251@end smallexample 30252 30253@c REDUNDANT??? 30254Get information about a single breakpoint. 30255 30256The result is a table of breakpoints. @xref{GDB/MI Breakpoint 30257Information}, for details on the format of each breakpoint in the 30258table. 30259 30260@subsubheading @value{GDBN} Command 30261 30262The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}. 30263 30264@subsubheading Example 30265N.A. 30266 30267@subheading The @code{-break-insert} Command 30268@findex -break-insert 30269 30270@subsubheading Synopsis 30271 30272@smallexample 30273 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ] 30274 [ -c @var{condition} ] [ -i @var{ignore-count} ] 30275 [ -p @var{thread-id} ] [ @var{location} ] 30276@end smallexample 30277 30278@noindent 30279If specified, @var{location}, can be one of: 30280 30281@itemize @bullet 30282@item function 30283@c @item +offset 30284@c @item -offset 30285@c @item linenum 30286@item filename:linenum 30287@item filename:function 30288@item *address 30289@end itemize 30290 30291The possible optional parameters of this command are: 30292 30293@table @samp 30294@item -t 30295Insert a temporary breakpoint. 30296@item -h 30297Insert a hardware breakpoint. 30298@item -f 30299If @var{location} cannot be parsed (for example if it 30300refers to unknown files or functions), create a pending 30301breakpoint. Without this flag, @value{GDBN} will report 30302an error, and won't create a breakpoint, if @var{location} 30303cannot be parsed. 30304@item -d 30305Create a disabled breakpoint. 30306@item -a 30307Create a tracepoint. @xref{Tracepoints}. When this parameter 30308is used together with @samp{-h}, a fast tracepoint is created. 30309@item -c @var{condition} 30310Make the breakpoint conditional on @var{condition}. 30311@item -i @var{ignore-count} 30312Initialize the @var{ignore-count}. 30313@item -p @var{thread-id} 30314Restrict the breakpoint to the specified @var{thread-id}. 30315@end table 30316 30317@subsubheading Result 30318 30319@xref{GDB/MI Breakpoint Information}, for details on the format of the 30320resulting breakpoint. 30321 30322Note: this format is open to change. 30323@c An out-of-band breakpoint instead of part of the result? 30324 30325@subsubheading @value{GDBN} Command 30326 30327The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak}, 30328@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}. 30329 30330@subsubheading Example 30331 30332@smallexample 30333(gdb) 30334-break-insert main 30335^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c", 30336fullname="/home/foo/recursive2.c,line="4",thread-groups=["i1"], 30337times="0"@} 30338(gdb) 30339-break-insert -t foo 30340^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c", 30341fullname="/home/foo/recursive2.c,line="11",thread-groups=["i1"], 30342times="0"@} 30343(gdb) 30344-break-list 30345^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 30346hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30347@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30348@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30349@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30350@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30351@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30352body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30353addr="0x0001072c", func="main",file="recursive2.c", 30354fullname="/home/foo/recursive2.c,"line="4",thread-groups=["i1"], 30355times="0"@}, 30356bkpt=@{number="2",type="breakpoint",disp="del",enabled="y", 30357addr="0x00010774",func="foo",file="recursive2.c", 30358fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 30359times="0"@}]@} 30360(gdb) 30361@c -break-insert -r foo.* 30362@c ~int foo(int, int); 30363@c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c, 30364@c "fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 30365@c times="0"@} 30366@c (gdb) 30367@end smallexample 30368 30369@subheading The @code{-dprintf-insert} Command 30370@findex -dprintf-insert 30371 30372@subsubheading Synopsis 30373 30374@smallexample 30375 -dprintf-insert [ -t ] [ -f ] [ -d ] 30376 [ -c @var{condition} ] [ -i @var{ignore-count} ] 30377 [ -p @var{thread-id} ] [ @var{location} ] [ @var{format} ] 30378 [ @var{argument} ] 30379@end smallexample 30380 30381@noindent 30382If specified, @var{location}, can be one of: 30383 30384@itemize @bullet 30385@item @var{function} 30386@c @item +offset 30387@c @item -offset 30388@c @item @var{linenum} 30389@item @var{filename}:@var{linenum} 30390@item @var{filename}:function 30391@item *@var{address} 30392@end itemize 30393 30394The possible optional parameters of this command are: 30395 30396@table @samp 30397@item -t 30398Insert a temporary breakpoint. 30399@item -f 30400If @var{location} cannot be parsed (for example, if it 30401refers to unknown files or functions), create a pending 30402breakpoint. Without this flag, @value{GDBN} will report 30403an error, and won't create a breakpoint, if @var{location} 30404cannot be parsed. 30405@item -d 30406Create a disabled breakpoint. 30407@item -c @var{condition} 30408Make the breakpoint conditional on @var{condition}. 30409@item -i @var{ignore-count} 30410Set the ignore count of the breakpoint (@pxref{Conditions, ignore count}) 30411to @var{ignore-count}. 30412@item -p @var{thread-id} 30413Restrict the breakpoint to the specified @var{thread-id}. 30414@end table 30415 30416@subsubheading Result 30417 30418@xref{GDB/MI Breakpoint Information}, for details on the format of the 30419resulting breakpoint. 30420 30421@c An out-of-band breakpoint instead of part of the result? 30422 30423@subsubheading @value{GDBN} Command 30424 30425The corresponding @value{GDBN} command is @samp{dprintf}. 30426 30427@subsubheading Example 30428 30429@smallexample 30430(gdb) 304314-dprintf-insert foo "At foo entry\n" 304324^done,bkpt=@{number="1",type="dprintf",disp="keep",enabled="y", 30433addr="0x000000000040061b",func="foo",file="mi-dprintf.c", 30434fullname="mi-dprintf.c",line="25",thread-groups=["i1"], 30435times="0",script=@{"printf \"At foo entry\\n\"","continue"@}, 30436original-location="foo"@} 30437(gdb) 304385-dprintf-insert 26 "arg=%d, g=%d\n" arg g 304395^done,bkpt=@{number="2",type="dprintf",disp="keep",enabled="y", 30440addr="0x000000000040062a",func="foo",file="mi-dprintf.c", 30441fullname="mi-dprintf.c",line="26",thread-groups=["i1"], 30442times="0",script=@{"printf \"arg=%d, g=%d\\n\", arg, g","continue"@}, 30443original-location="mi-dprintf.c:26"@} 30444(gdb) 30445@end smallexample 30446 30447@subheading The @code{-break-list} Command 30448@findex -break-list 30449 30450@subsubheading Synopsis 30451 30452@smallexample 30453 -break-list 30454@end smallexample 30455 30456Displays the list of inserted breakpoints, showing the following fields: 30457 30458@table @samp 30459@item Number 30460number of the breakpoint 30461@item Type 30462type of the breakpoint: @samp{breakpoint} or @samp{watchpoint} 30463@item Disposition 30464should the breakpoint be deleted or disabled when it is hit: @samp{keep} 30465or @samp{nokeep} 30466@item Enabled 30467is the breakpoint enabled or no: @samp{y} or @samp{n} 30468@item Address 30469memory location at which the breakpoint is set 30470@item What 30471logical location of the breakpoint, expressed by function name, file 30472name, line number 30473@item Thread-groups 30474list of thread groups to which this breakpoint applies 30475@item Times 30476number of times the breakpoint has been hit 30477@end table 30478 30479If there are no breakpoints or watchpoints, the @code{BreakpointTable} 30480@code{body} field is an empty list. 30481 30482@subsubheading @value{GDBN} Command 30483 30484The corresponding @value{GDBN} command is @samp{info break}. 30485 30486@subsubheading Example 30487 30488@smallexample 30489(gdb) 30490-break-list 30491^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 30492hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30493@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30494@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30495@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30496@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30497@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30498body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30499addr="0x000100d0",func="main",file="hello.c",line="5",thread-groups=["i1"], 30500times="0"@}, 30501bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 30502addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c", 30503line="13",thread-groups=["i1"],times="0"@}]@} 30504(gdb) 30505@end smallexample 30506 30507Here's an example of the result when there are no breakpoints: 30508 30509@smallexample 30510(gdb) 30511-break-list 30512^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 30513hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30514@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30515@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30516@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30517@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30518@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30519body=[]@} 30520(gdb) 30521@end smallexample 30522 30523@subheading The @code{-break-passcount} Command 30524@findex -break-passcount 30525 30526@subsubheading Synopsis 30527 30528@smallexample 30529 -break-passcount @var{tracepoint-number} @var{passcount} 30530@end smallexample 30531 30532Set the passcount for tracepoint @var{tracepoint-number} to 30533@var{passcount}. If the breakpoint referred to by @var{tracepoint-number} 30534is not a tracepoint, error is emitted. This corresponds to CLI 30535command @samp{passcount}. 30536 30537@subheading The @code{-break-watch} Command 30538@findex -break-watch 30539 30540@subsubheading Synopsis 30541 30542@smallexample 30543 -break-watch [ -a | -r ] 30544@end smallexample 30545 30546Create a watchpoint. With the @samp{-a} option it will create an 30547@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a 30548read from or on a write to the memory location. With the @samp{-r} 30549option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will 30550trigger only when the memory location is accessed for reading. Without 30551either of the options, the watchpoint created is a regular watchpoint, 30552i.e., it will trigger when the memory location is accessed for writing. 30553@xref{Set Watchpoints, , Setting Watchpoints}. 30554 30555Note that @samp{-break-list} will report a single list of watchpoints and 30556breakpoints inserted. 30557 30558@subsubheading @value{GDBN} Command 30559 30560The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and 30561@samp{rwatch}. 30562 30563@subsubheading Example 30564 30565Setting a watchpoint on a variable in the @code{main} function: 30566 30567@smallexample 30568(gdb) 30569-break-watch x 30570^done,wpt=@{number="2",exp="x"@} 30571(gdb) 30572-exec-continue 30573^running 30574(gdb) 30575*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@}, 30576value=@{old="-268439212",new="55"@}, 30577frame=@{func="main",args=[],file="recursive2.c", 30578fullname="/home/foo/bar/recursive2.c",line="5"@} 30579(gdb) 30580@end smallexample 30581 30582Setting a watchpoint on a variable local to a function. @value{GDBN} will stop 30583the program execution twice: first for the variable changing value, then 30584for the watchpoint going out of scope. 30585 30586@smallexample 30587(gdb) 30588-break-watch C 30589^done,wpt=@{number="5",exp="C"@} 30590(gdb) 30591-exec-continue 30592^running 30593(gdb) 30594*stopped,reason="watchpoint-trigger", 30595wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@}, 30596frame=@{func="callee4",args=[], 30597file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30598fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@} 30599(gdb) 30600-exec-continue 30601^running 30602(gdb) 30603*stopped,reason="watchpoint-scope",wpnum="5", 30604frame=@{func="callee3",args=[@{name="strarg", 30605value="0x11940 \"A string argument.\""@}], 30606file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30607fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} 30608(gdb) 30609@end smallexample 30610 30611Listing breakpoints and watchpoints, at different points in the program 30612execution. Note that once the watchpoint goes out of scope, it is 30613deleted. 30614 30615@smallexample 30616(gdb) 30617-break-watch C 30618^done,wpt=@{number="2",exp="C"@} 30619(gdb) 30620-break-list 30621^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 30622hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30623@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30624@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30625@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30626@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30627@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30628body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30629addr="0x00010734",func="callee4", 30630file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30631fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",thread-groups=["i1"], 30632times="1"@}, 30633bkpt=@{number="2",type="watchpoint",disp="keep", 30634enabled="y",addr="",what="C",thread-groups=["i1"],times="0"@}]@} 30635(gdb) 30636-exec-continue 30637^running 30638(gdb) 30639*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@}, 30640value=@{old="-276895068",new="3"@}, 30641frame=@{func="callee4",args=[], 30642file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30643fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@} 30644(gdb) 30645-break-list 30646^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 30647hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30648@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30649@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30650@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30651@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30652@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30653body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30654addr="0x00010734",func="callee4", 30655file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30656fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",thread-groups=["i1"], 30657times="1"@}, 30658bkpt=@{number="2",type="watchpoint",disp="keep", 30659enabled="y",addr="",what="C",thread-groups=["i1"],times="-5"@}]@} 30660(gdb) 30661-exec-continue 30662^running 30663^done,reason="watchpoint-scope",wpnum="2", 30664frame=@{func="callee3",args=[@{name="strarg", 30665value="0x11940 \"A string argument.\""@}], 30666file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30667fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} 30668(gdb) 30669-break-list 30670^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 30671hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 30672@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 30673@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 30674@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 30675@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 30676@{width="40",alignment="2",col_name="what",colhdr="What"@}], 30677body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 30678addr="0x00010734",func="callee4", 30679file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30680fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 30681thread-groups=["i1"],times="1"@}]@} 30682(gdb) 30683@end smallexample 30684 30685 30686@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30687@node GDB/MI Catchpoint Commands 30688@section @sc{gdb/mi} Catchpoint Commands 30689 30690This section documents @sc{gdb/mi} commands for manipulating 30691catchpoints. 30692 30693@menu 30694* Shared Library GDB/MI Catchpoint Commands:: 30695* Ada Exception GDB/MI Catchpoint Commands:: 30696@end menu 30697 30698@node Shared Library GDB/MI Catchpoint Commands 30699@subsection Shared Library @sc{gdb/mi} Catchpoints 30700 30701@subheading The @code{-catch-load} Command 30702@findex -catch-load 30703 30704@subsubheading Synopsis 30705 30706@smallexample 30707 -catch-load [ -t ] [ -d ] @var{regexp} 30708@end smallexample 30709 30710Add a catchpoint for library load events. If the @samp{-t} option is used, 30711the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 30712Breakpoints}). If the @samp{-d} option is used, the catchpoint is created 30713in a disabled state. The @samp{regexp} argument is a regular 30714expression used to match the name of the loaded library. 30715 30716 30717@subsubheading @value{GDBN} Command 30718 30719The corresponding @value{GDBN} command is @samp{catch load}. 30720 30721@subsubheading Example 30722 30723@smallexample 30724-catch-load -t foo.so 30725^done,bkpt=@{number="1",type="catchpoint",disp="del",enabled="y", 30726what="load of library matching foo.so",catch-type="load",times="0"@} 30727(gdb) 30728@end smallexample 30729 30730 30731@subheading The @code{-catch-unload} Command 30732@findex -catch-unload 30733 30734@subsubheading Synopsis 30735 30736@smallexample 30737 -catch-unload [ -t ] [ -d ] @var{regexp} 30738@end smallexample 30739 30740Add a catchpoint for library unload events. If the @samp{-t} option is 30741used, the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 30742Breakpoints}). If the @samp{-d} option is used, the catchpoint is 30743created in a disabled state. The @samp{regexp} argument is a regular 30744expression used to match the name of the unloaded library. 30745 30746@subsubheading @value{GDBN} Command 30747 30748The corresponding @value{GDBN} command is @samp{catch unload}. 30749 30750@subsubheading Example 30751 30752@smallexample 30753-catch-unload -d bar.so 30754^done,bkpt=@{number="2",type="catchpoint",disp="keep",enabled="n", 30755what="load of library matching bar.so",catch-type="unload",times="0"@} 30756(gdb) 30757@end smallexample 30758 30759@node Ada Exception GDB/MI Catchpoint Commands 30760@subsection Ada Exception @sc{gdb/mi} Catchpoints 30761 30762The following @sc{gdb/mi} commands can be used to create catchpoints 30763that stop the execution when Ada exceptions are being raised. 30764 30765@subheading The @code{-catch-assert} Command 30766@findex -catch-assert 30767 30768@subsubheading Synopsis 30769 30770@smallexample 30771 -catch-assert [ -c @var{condition}] [ -d ] [ -t ] 30772@end smallexample 30773 30774Add a catchpoint for failed Ada assertions. 30775 30776The possible optional parameters for this command are: 30777 30778@table @samp 30779@item -c @var{condition} 30780Make the catchpoint conditional on @var{condition}. 30781@item -d 30782Create a disabled catchpoint. 30783@item -t 30784Create a temporary catchpoint. 30785@end table 30786 30787@subsubheading @value{GDBN} Command 30788 30789The corresponding @value{GDBN} command is @samp{catch assert}. 30790 30791@subsubheading Example 30792 30793@smallexample 30794-catch-assert 30795^done,bkptno="5",bkpt=@{number="5",type="breakpoint",disp="keep", 30796enabled="y",addr="0x0000000000404888",what="failed Ada assertions", 30797thread-groups=["i1"],times="0", 30798original-location="__gnat_debug_raise_assert_failure"@} 30799(gdb) 30800@end smallexample 30801 30802@subheading The @code{-catch-exception} Command 30803@findex -catch-exception 30804 30805@subsubheading Synopsis 30806 30807@smallexample 30808 -catch-exception [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ] 30809 [ -t ] [ -u ] 30810@end smallexample 30811 30812Add a catchpoint stopping when Ada exceptions are raised. 30813By default, the command stops the program when any Ada exception 30814gets raised. But it is also possible, by using some of the 30815optional parameters described below, to create more selective 30816catchpoints. 30817 30818The possible optional parameters for this command are: 30819 30820@table @samp 30821@item -c @var{condition} 30822Make the catchpoint conditional on @var{condition}. 30823@item -d 30824Create a disabled catchpoint. 30825@item -e @var{exception-name} 30826Only stop when @var{exception-name} is raised. This option cannot 30827be used combined with @samp{-u}. 30828@item -t 30829Create a temporary catchpoint. 30830@item -u 30831Stop only when an unhandled exception gets raised. This option 30832cannot be used combined with @samp{-e}. 30833@end table 30834 30835@subsubheading @value{GDBN} Command 30836 30837The corresponding @value{GDBN} commands are @samp{catch exception} 30838and @samp{catch exception unhandled}. 30839 30840@subsubheading Example 30841 30842@smallexample 30843-catch-exception -e Program_Error 30844^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep", 30845enabled="y",addr="0x0000000000404874", 30846what="`Program_Error' Ada exception", thread-groups=["i1"], 30847times="0",original-location="__gnat_debug_raise_exception"@} 30848(gdb) 30849@end smallexample 30850 30851@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30852@node GDB/MI Program Context 30853@section @sc{gdb/mi} Program Context 30854 30855@subheading The @code{-exec-arguments} Command 30856@findex -exec-arguments 30857 30858 30859@subsubheading Synopsis 30860 30861@smallexample 30862 -exec-arguments @var{args} 30863@end smallexample 30864 30865Set the inferior program arguments, to be used in the next 30866@samp{-exec-run}. 30867 30868@subsubheading @value{GDBN} Command 30869 30870The corresponding @value{GDBN} command is @samp{set args}. 30871 30872@subsubheading Example 30873 30874@smallexample 30875(gdb) 30876-exec-arguments -v word 30877^done 30878(gdb) 30879@end smallexample 30880 30881 30882@ignore 30883@subheading The @code{-exec-show-arguments} Command 30884@findex -exec-show-arguments 30885 30886@subsubheading Synopsis 30887 30888@smallexample 30889 -exec-show-arguments 30890@end smallexample 30891 30892Print the arguments of the program. 30893 30894@subsubheading @value{GDBN} Command 30895 30896The corresponding @value{GDBN} command is @samp{show args}. 30897 30898@subsubheading Example 30899N.A. 30900@end ignore 30901 30902 30903@subheading The @code{-environment-cd} Command 30904@findex -environment-cd 30905 30906@subsubheading Synopsis 30907 30908@smallexample 30909 -environment-cd @var{pathdir} 30910@end smallexample 30911 30912Set @value{GDBN}'s working directory. 30913 30914@subsubheading @value{GDBN} Command 30915 30916The corresponding @value{GDBN} command is @samp{cd}. 30917 30918@subsubheading Example 30919 30920@smallexample 30921(gdb) 30922-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 30923^done 30924(gdb) 30925@end smallexample 30926 30927 30928@subheading The @code{-environment-directory} Command 30929@findex -environment-directory 30930 30931@subsubheading Synopsis 30932 30933@smallexample 30934 -environment-directory [ -r ] [ @var{pathdir} ]+ 30935@end smallexample 30936 30937Add directories @var{pathdir} to beginning of search path for source files. 30938If the @samp{-r} option is used, the search path is reset to the default 30939search path. If directories @var{pathdir} are supplied in addition to the 30940@samp{-r} option, the search path is first reset and then addition 30941occurs as normal. 30942Multiple directories may be specified, separated by blanks. Specifying 30943multiple directories in a single command 30944results in the directories added to the beginning of the 30945search path in the same order they were presented in the command. 30946If blanks are needed as 30947part of a directory name, double-quotes should be used around 30948the name. In the command output, the path will show up separated 30949by the system directory-separator character. The directory-separator 30950character must not be used 30951in any directory name. 30952If no directories are specified, the current search path is displayed. 30953 30954@subsubheading @value{GDBN} Command 30955 30956The corresponding @value{GDBN} command is @samp{dir}. 30957 30958@subsubheading Example 30959 30960@smallexample 30961(gdb) 30962-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 30963^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 30964(gdb) 30965-environment-directory "" 30966^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 30967(gdb) 30968-environment-directory -r /home/jjohnstn/src/gdb /usr/src 30969^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd" 30970(gdb) 30971-environment-directory -r 30972^done,source-path="$cdir:$cwd" 30973(gdb) 30974@end smallexample 30975 30976 30977@subheading The @code{-environment-path} Command 30978@findex -environment-path 30979 30980@subsubheading Synopsis 30981 30982@smallexample 30983 -environment-path [ -r ] [ @var{pathdir} ]+ 30984@end smallexample 30985 30986Add directories @var{pathdir} to beginning of search path for object files. 30987If the @samp{-r} option is used, the search path is reset to the original 30988search path that existed at gdb start-up. If directories @var{pathdir} are 30989supplied in addition to the 30990@samp{-r} option, the search path is first reset and then addition 30991occurs as normal. 30992Multiple directories may be specified, separated by blanks. Specifying 30993multiple directories in a single command 30994results in the directories added to the beginning of the 30995search path in the same order they were presented in the command. 30996If blanks are needed as 30997part of a directory name, double-quotes should be used around 30998the name. In the command output, the path will show up separated 30999by the system directory-separator character. The directory-separator 31000character must not be used 31001in any directory name. 31002If no directories are specified, the current path is displayed. 31003 31004 31005@subsubheading @value{GDBN} Command 31006 31007The corresponding @value{GDBN} command is @samp{path}. 31008 31009@subsubheading Example 31010 31011@smallexample 31012(gdb) 31013-environment-path 31014^done,path="/usr/bin" 31015(gdb) 31016-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin 31017^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin" 31018(gdb) 31019-environment-path -r /usr/local/bin 31020^done,path="/usr/local/bin:/usr/bin" 31021(gdb) 31022@end smallexample 31023 31024 31025@subheading The @code{-environment-pwd} Command 31026@findex -environment-pwd 31027 31028@subsubheading Synopsis 31029 31030@smallexample 31031 -environment-pwd 31032@end smallexample 31033 31034Show the current working directory. 31035 31036@subsubheading @value{GDBN} Command 31037 31038The corresponding @value{GDBN} command is @samp{pwd}. 31039 31040@subsubheading Example 31041 31042@smallexample 31043(gdb) 31044-environment-pwd 31045^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb" 31046(gdb) 31047@end smallexample 31048 31049@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31050@node GDB/MI Thread Commands 31051@section @sc{gdb/mi} Thread Commands 31052 31053 31054@subheading The @code{-thread-info} Command 31055@findex -thread-info 31056 31057@subsubheading Synopsis 31058 31059@smallexample 31060 -thread-info [ @var{thread-id} ] 31061@end smallexample 31062 31063Reports information about either a specific thread, if 31064the @var{thread-id} parameter is present, or about all 31065threads. When printing information about all threads, 31066also reports the current thread. 31067 31068@subsubheading @value{GDBN} Command 31069 31070The @samp{info thread} command prints the same information 31071about all threads. 31072 31073@subsubheading Result 31074 31075The result is a list of threads. The following attributes are 31076defined for a given thread: 31077 31078@table @samp 31079@item current 31080This field exists only for the current thread. It has the value @samp{*}. 31081 31082@item id 31083The identifier that @value{GDBN} uses to refer to the thread. 31084 31085@item target-id 31086The identifier that the target uses to refer to the thread. 31087 31088@item details 31089Extra information about the thread, in a target-specific format. This 31090field is optional. 31091 31092@item name 31093The name of the thread. If the user specified a name using the 31094@code{thread name} command, then this name is given. Otherwise, if 31095@value{GDBN} can extract the thread name from the target, then that 31096name is given. If @value{GDBN} cannot find the thread name, then this 31097field is omitted. 31098 31099@item frame 31100The stack frame currently executing in the thread. 31101 31102@item state 31103The thread's state. The @samp{state} field may have the following 31104values: 31105 31106@table @code 31107@item stopped 31108The thread is stopped. Frame information is available for stopped 31109threads. 31110 31111@item running 31112The thread is running. There's no frame information for running 31113threads. 31114 31115@end table 31116 31117@item core 31118If @value{GDBN} can find the CPU core on which this thread is running, 31119then this field is the core identifier. This field is optional. 31120 31121@end table 31122 31123@subsubheading Example 31124 31125@smallexample 31126-thread-info 31127^done,threads=[ 31128@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 31129 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall", 31130 args=[]@},state="running"@}, 31131@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 31132 frame=@{level="0",addr="0x0804891f",func="foo", 31133 args=[@{name="i",value="10"@}], 31134 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@}, 31135 state="running"@}], 31136current-thread-id="1" 31137(gdb) 31138@end smallexample 31139 31140@subheading The @code{-thread-list-ids} Command 31141@findex -thread-list-ids 31142 31143@subsubheading Synopsis 31144 31145@smallexample 31146 -thread-list-ids 31147@end smallexample 31148 31149Produces a list of the currently known @value{GDBN} thread ids. At the 31150end of the list it also prints the total number of such threads. 31151 31152This command is retained for historical reasons, the 31153@code{-thread-info} command should be used instead. 31154 31155@subsubheading @value{GDBN} Command 31156 31157Part of @samp{info threads} supplies the same information. 31158 31159@subsubheading Example 31160 31161@smallexample 31162(gdb) 31163-thread-list-ids 31164^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 31165current-thread-id="1",number-of-threads="3" 31166(gdb) 31167@end smallexample 31168 31169 31170@subheading The @code{-thread-select} Command 31171@findex -thread-select 31172 31173@subsubheading Synopsis 31174 31175@smallexample 31176 -thread-select @var{threadnum} 31177@end smallexample 31178 31179Make @var{threadnum} the current thread. It prints the number of the new 31180current thread, and the topmost frame for that thread. 31181 31182This command is deprecated in favor of explicitly using the 31183@samp{--thread} option to each command. 31184 31185@subsubheading @value{GDBN} Command 31186 31187The corresponding @value{GDBN} command is @samp{thread}. 31188 31189@subsubheading Example 31190 31191@smallexample 31192(gdb) 31193-exec-next 31194^running 31195(gdb) 31196*stopped,reason="end-stepping-range",thread-id="2",line="187", 31197file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c" 31198(gdb) 31199-thread-list-ids 31200^done, 31201thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 31202number-of-threads="3" 31203(gdb) 31204-thread-select 3 31205^done,new-thread-id="3", 31206frame=@{level="0",func="vprintf", 31207args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@}, 31208@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@} 31209(gdb) 31210@end smallexample 31211 31212@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31213@node GDB/MI Ada Tasking Commands 31214@section @sc{gdb/mi} Ada Tasking Commands 31215 31216@subheading The @code{-ada-task-info} Command 31217@findex -ada-task-info 31218 31219@subsubheading Synopsis 31220 31221@smallexample 31222 -ada-task-info [ @var{task-id} ] 31223@end smallexample 31224 31225Reports information about either a specific Ada task, if the 31226@var{task-id} parameter is present, or about all Ada tasks. 31227 31228@subsubheading @value{GDBN} Command 31229 31230The @samp{info tasks} command prints the same information 31231about all Ada tasks (@pxref{Ada Tasks}). 31232 31233@subsubheading Result 31234 31235The result is a table of Ada tasks. The following columns are 31236defined for each Ada task: 31237 31238@table @samp 31239@item current 31240This field exists only for the current thread. It has the value @samp{*}. 31241 31242@item id 31243The identifier that @value{GDBN} uses to refer to the Ada task. 31244 31245@item task-id 31246The identifier that the target uses to refer to the Ada task. 31247 31248@item thread-id 31249The identifier of the thread corresponding to the Ada task. 31250 31251This field should always exist, as Ada tasks are always implemented 31252on top of a thread. But if @value{GDBN} cannot find this corresponding 31253thread for any reason, the field is omitted. 31254 31255@item parent-id 31256This field exists only when the task was created by another task. 31257In this case, it provides the ID of the parent task. 31258 31259@item priority 31260The base priority of the task. 31261 31262@item state 31263The current state of the task. For a detailed description of the 31264possible states, see @ref{Ada Tasks}. 31265 31266@item name 31267The name of the task. 31268 31269@end table 31270 31271@subsubheading Example 31272 31273@smallexample 31274-ada-task-info 31275^done,tasks=@{nr_rows="3",nr_cols="8", 31276hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@}, 31277@{width="3",alignment="1",col_name="id",colhdr="ID"@}, 31278@{width="9",alignment="1",col_name="task-id",colhdr="TID"@}, 31279@{width="4",alignment="1",col_name="thread-id",colhdr=""@}, 31280@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@}, 31281@{width="3",alignment="1",col_name="priority",colhdr="Pri"@}, 31282@{width="22",alignment="-1",col_name="state",colhdr="State"@}, 31283@{width="1",alignment="2",col_name="name",colhdr="Name"@}], 31284body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48", 31285state="Child Termination Wait",name="main_task"@}]@} 31286(gdb) 31287@end smallexample 31288 31289@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31290@node GDB/MI Program Execution 31291@section @sc{gdb/mi} Program Execution 31292 31293These are the asynchronous commands which generate the out-of-band 31294record @samp{*stopped}. Currently @value{GDBN} only really executes 31295asynchronously with remote targets and this interaction is mimicked in 31296other cases. 31297 31298@subheading The @code{-exec-continue} Command 31299@findex -exec-continue 31300 31301@subsubheading Synopsis 31302 31303@smallexample 31304 -exec-continue [--reverse] [--all|--thread-group N] 31305@end smallexample 31306 31307Resumes the execution of the inferior program, which will continue 31308to execute until it reaches a debugger stop event. If the 31309@samp{--reverse} option is specified, execution resumes in reverse until 31310it reaches a stop event. Stop events may include 31311@itemize @bullet 31312@item 31313breakpoints or watchpoints 31314@item 31315signals or exceptions 31316@item 31317the end of the process (or its beginning under @samp{--reverse}) 31318@item 31319the end or beginning of a replay log if one is being used. 31320@end itemize 31321In all-stop mode (@pxref{All-Stop 31322Mode}), may resume only one thread, or all threads, depending on the 31323value of the @samp{scheduler-locking} variable. If @samp{--all} is 31324specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is 31325ignored in all-stop mode. If the @samp{--thread-group} options is 31326specified, then all threads in that thread group are resumed. 31327 31328@subsubheading @value{GDBN} Command 31329 31330The corresponding @value{GDBN} corresponding is @samp{continue}. 31331 31332@subsubheading Example 31333 31334@smallexample 31335-exec-continue 31336^running 31337(gdb) 31338@@Hello world 31339*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{ 31340func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c", 31341line="13"@} 31342(gdb) 31343@end smallexample 31344 31345 31346@subheading The @code{-exec-finish} Command 31347@findex -exec-finish 31348 31349@subsubheading Synopsis 31350 31351@smallexample 31352 -exec-finish [--reverse] 31353@end smallexample 31354 31355Resumes the execution of the inferior program until the current 31356function is exited. Displays the results returned by the function. 31357If the @samp{--reverse} option is specified, resumes the reverse 31358execution of the inferior program until the point where current 31359function was called. 31360 31361@subsubheading @value{GDBN} Command 31362 31363The corresponding @value{GDBN} command is @samp{finish}. 31364 31365@subsubheading Example 31366 31367Function returning @code{void}. 31368 31369@smallexample 31370-exec-finish 31371^running 31372(gdb) 31373@@hello from foo 31374*stopped,reason="function-finished",frame=@{func="main",args=[], 31375file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@} 31376(gdb) 31377@end smallexample 31378 31379Function returning other than @code{void}. The name of the internal 31380@value{GDBN} variable storing the result is printed, together with the 31381value itself. 31382 31383@smallexample 31384-exec-finish 31385^running 31386(gdb) 31387*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo", 31388args=[@{name="a",value="1"],@{name="b",value="9"@}@}, 31389file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 31390gdb-result-var="$1",return-value="0" 31391(gdb) 31392@end smallexample 31393 31394 31395@subheading The @code{-exec-interrupt} Command 31396@findex -exec-interrupt 31397 31398@subsubheading Synopsis 31399 31400@smallexample 31401 -exec-interrupt [--all|--thread-group N] 31402@end smallexample 31403 31404Interrupts the background execution of the target. Note how the token 31405associated with the stop message is the one for the execution command 31406that has been interrupted. The token for the interrupt itself only 31407appears in the @samp{^done} output. If the user is trying to 31408interrupt a non-running program, an error message will be printed. 31409 31410Note that when asynchronous execution is enabled, this command is 31411asynchronous just like other execution commands. That is, first the 31412@samp{^done} response will be printed, and the target stop will be 31413reported after that using the @samp{*stopped} notification. 31414 31415In non-stop mode, only the context thread is interrupted by default. 31416All threads (in all inferiors) will be interrupted if the 31417@samp{--all} option is specified. If the @samp{--thread-group} 31418option is specified, all threads in that group will be interrupted. 31419 31420@subsubheading @value{GDBN} Command 31421 31422The corresponding @value{GDBN} command is @samp{interrupt}. 31423 31424@subsubheading Example 31425 31426@smallexample 31427(gdb) 31428111-exec-continue 31429111^running 31430 31431(gdb) 31432222-exec-interrupt 31433222^done 31434(gdb) 31435111*stopped,signal-name="SIGINT",signal-meaning="Interrupt", 31436frame=@{addr="0x00010140",func="foo",args=[],file="try.c", 31437fullname="/home/foo/bar/try.c",line="13"@} 31438(gdb) 31439 31440(gdb) 31441-exec-interrupt 31442^error,msg="mi_cmd_exec_interrupt: Inferior not executing." 31443(gdb) 31444@end smallexample 31445 31446@subheading The @code{-exec-jump} Command 31447@findex -exec-jump 31448 31449@subsubheading Synopsis 31450 31451@smallexample 31452 -exec-jump @var{location} 31453@end smallexample 31454 31455Resumes execution of the inferior program at the location specified by 31456parameter. @xref{Specify Location}, for a description of the 31457different forms of @var{location}. 31458 31459@subsubheading @value{GDBN} Command 31460 31461The corresponding @value{GDBN} command is @samp{jump}. 31462 31463@subsubheading Example 31464 31465@smallexample 31466-exec-jump foo.c:10 31467*running,thread-id="all" 31468^running 31469@end smallexample 31470 31471 31472@subheading The @code{-exec-next} Command 31473@findex -exec-next 31474 31475@subsubheading Synopsis 31476 31477@smallexample 31478 -exec-next [--reverse] 31479@end smallexample 31480 31481Resumes execution of the inferior program, stopping when the beginning 31482of the next source line is reached. 31483 31484If the @samp{--reverse} option is specified, resumes reverse execution 31485of the inferior program, stopping at the beginning of the previous 31486source line. If you issue this command on the first line of a 31487function, it will take you back to the caller of that function, to the 31488source line where the function was called. 31489 31490 31491@subsubheading @value{GDBN} Command 31492 31493The corresponding @value{GDBN} command is @samp{next}. 31494 31495@subsubheading Example 31496 31497@smallexample 31498-exec-next 31499^running 31500(gdb) 31501*stopped,reason="end-stepping-range",line="8",file="hello.c" 31502(gdb) 31503@end smallexample 31504 31505 31506@subheading The @code{-exec-next-instruction} Command 31507@findex -exec-next-instruction 31508 31509@subsubheading Synopsis 31510 31511@smallexample 31512 -exec-next-instruction [--reverse] 31513@end smallexample 31514 31515Executes one machine instruction. If the instruction is a function 31516call, continues until the function returns. If the program stops at an 31517instruction in the middle of a source line, the address will be 31518printed as well. 31519 31520If the @samp{--reverse} option is specified, resumes reverse execution 31521of the inferior program, stopping at the previous instruction. If the 31522previously executed instruction was a return from another function, 31523it will continue to execute in reverse until the call to that function 31524(from the current stack frame) is reached. 31525 31526@subsubheading @value{GDBN} Command 31527 31528The corresponding @value{GDBN} command is @samp{nexti}. 31529 31530@subsubheading Example 31531 31532@smallexample 31533(gdb) 31534-exec-next-instruction 31535^running 31536 31537(gdb) 31538*stopped,reason="end-stepping-range", 31539addr="0x000100d4",line="5",file="hello.c" 31540(gdb) 31541@end smallexample 31542 31543 31544@subheading The @code{-exec-return} Command 31545@findex -exec-return 31546 31547@subsubheading Synopsis 31548 31549@smallexample 31550 -exec-return 31551@end smallexample 31552 31553Makes current function return immediately. Doesn't execute the inferior. 31554Displays the new current frame. 31555 31556@subsubheading @value{GDBN} Command 31557 31558The corresponding @value{GDBN} command is @samp{return}. 31559 31560@subsubheading Example 31561 31562@smallexample 31563(gdb) 31564200-break-insert callee4 31565200^done,bkpt=@{number="1",addr="0x00010734", 31566file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@} 31567(gdb) 31568000-exec-run 31569000^running 31570(gdb) 31571000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 31572frame=@{func="callee4",args=[], 31573file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31574fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@} 31575(gdb) 31576205-break-delete 31577205^done 31578(gdb) 31579111-exec-return 31580111^done,frame=@{level="0",func="callee3", 31581args=[@{name="strarg", 31582value="0x11940 \"A string argument.\""@}], 31583file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31584fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} 31585(gdb) 31586@end smallexample 31587 31588 31589@subheading The @code{-exec-run} Command 31590@findex -exec-run 31591 31592@subsubheading Synopsis 31593 31594@smallexample 31595 -exec-run [ --all | --thread-group N ] [ --start ] 31596@end smallexample 31597 31598Starts execution of the inferior from the beginning. The inferior 31599executes until either a breakpoint is encountered or the program 31600exits. In the latter case the output will include an exit code, if 31601the program has exited exceptionally. 31602 31603When neither the @samp{--all} nor the @samp{--thread-group} option 31604is specified, the current inferior is started. If the 31605@samp{--thread-group} option is specified, it should refer to a thread 31606group of type @samp{process}, and that thread group will be started. 31607If the @samp{--all} option is specified, then all inferiors will be started. 31608 31609Using the @samp{--start} option instructs the debugger to stop 31610the execution at the start of the inferior's main subprogram, 31611following the same behavior as the @code{start} command 31612(@pxref{Starting}). 31613 31614@subsubheading @value{GDBN} Command 31615 31616The corresponding @value{GDBN} command is @samp{run}. 31617 31618@subsubheading Examples 31619 31620@smallexample 31621(gdb) 31622-break-insert main 31623^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@} 31624(gdb) 31625-exec-run 31626^running 31627(gdb) 31628*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 31629frame=@{func="main",args=[],file="recursive2.c", 31630fullname="/home/foo/bar/recursive2.c",line="4"@} 31631(gdb) 31632@end smallexample 31633 31634@noindent 31635Program exited normally: 31636 31637@smallexample 31638(gdb) 31639-exec-run 31640^running 31641(gdb) 31642x = 55 31643*stopped,reason="exited-normally" 31644(gdb) 31645@end smallexample 31646 31647@noindent 31648Program exited exceptionally: 31649 31650@smallexample 31651(gdb) 31652-exec-run 31653^running 31654(gdb) 31655x = 55 31656*stopped,reason="exited",exit-code="01" 31657(gdb) 31658@end smallexample 31659 31660Another way the program can terminate is if it receives a signal such as 31661@code{SIGINT}. In this case, @sc{gdb/mi} displays this: 31662 31663@smallexample 31664(gdb) 31665*stopped,reason="exited-signalled",signal-name="SIGINT", 31666signal-meaning="Interrupt" 31667@end smallexample 31668 31669 31670@c @subheading -exec-signal 31671 31672 31673@subheading The @code{-exec-step} Command 31674@findex -exec-step 31675 31676@subsubheading Synopsis 31677 31678@smallexample 31679 -exec-step [--reverse] 31680@end smallexample 31681 31682Resumes execution of the inferior program, stopping when the beginning 31683of the next source line is reached, if the next source line is not a 31684function call. If it is, stop at the first instruction of the called 31685function. If the @samp{--reverse} option is specified, resumes reverse 31686execution of the inferior program, stopping at the beginning of the 31687previously executed source line. 31688 31689@subsubheading @value{GDBN} Command 31690 31691The corresponding @value{GDBN} command is @samp{step}. 31692 31693@subsubheading Example 31694 31695Stepping into a function: 31696 31697@smallexample 31698-exec-step 31699^running 31700(gdb) 31701*stopped,reason="end-stepping-range", 31702frame=@{func="foo",args=[@{name="a",value="10"@}, 31703@{name="b",value="0"@}],file="recursive2.c", 31704fullname="/home/foo/bar/recursive2.c",line="11"@} 31705(gdb) 31706@end smallexample 31707 31708Regular stepping: 31709 31710@smallexample 31711-exec-step 31712^running 31713(gdb) 31714*stopped,reason="end-stepping-range",line="14",file="recursive2.c" 31715(gdb) 31716@end smallexample 31717 31718 31719@subheading The @code{-exec-step-instruction} Command 31720@findex -exec-step-instruction 31721 31722@subsubheading Synopsis 31723 31724@smallexample 31725 -exec-step-instruction [--reverse] 31726@end smallexample 31727 31728Resumes the inferior which executes one machine instruction. If the 31729@samp{--reverse} option is specified, resumes reverse execution of the 31730inferior program, stopping at the previously executed instruction. 31731The output, once @value{GDBN} has stopped, will vary depending on 31732whether we have stopped in the middle of a source line or not. In the 31733former case, the address at which the program stopped will be printed 31734as well. 31735 31736@subsubheading @value{GDBN} Command 31737 31738The corresponding @value{GDBN} command is @samp{stepi}. 31739 31740@subsubheading Example 31741 31742@smallexample 31743(gdb) 31744-exec-step-instruction 31745^running 31746 31747(gdb) 31748*stopped,reason="end-stepping-range", 31749frame=@{func="foo",args=[],file="try.c", 31750fullname="/home/foo/bar/try.c",line="10"@} 31751(gdb) 31752-exec-step-instruction 31753^running 31754 31755(gdb) 31756*stopped,reason="end-stepping-range", 31757frame=@{addr="0x000100f4",func="foo",args=[],file="try.c", 31758fullname="/home/foo/bar/try.c",line="10"@} 31759(gdb) 31760@end smallexample 31761 31762 31763@subheading The @code{-exec-until} Command 31764@findex -exec-until 31765 31766@subsubheading Synopsis 31767 31768@smallexample 31769 -exec-until [ @var{location} ] 31770@end smallexample 31771 31772Executes the inferior until the @var{location} specified in the 31773argument is reached. If there is no argument, the inferior executes 31774until a source line greater than the current one is reached. The 31775reason for stopping in this case will be @samp{location-reached}. 31776 31777@subsubheading @value{GDBN} Command 31778 31779The corresponding @value{GDBN} command is @samp{until}. 31780 31781@subsubheading Example 31782 31783@smallexample 31784(gdb) 31785-exec-until recursive2.c:6 31786^running 31787(gdb) 31788x = 55 31789*stopped,reason="location-reached",frame=@{func="main",args=[], 31790file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@} 31791(gdb) 31792@end smallexample 31793 31794@ignore 31795@subheading -file-clear 31796Is this going away???? 31797@end ignore 31798 31799@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31800@node GDB/MI Stack Manipulation 31801@section @sc{gdb/mi} Stack Manipulation Commands 31802 31803@subheading The @code{-enable-frame-filters} Command 31804@findex -enable-frame-filters 31805 31806@smallexample 31807-enable-frame-filters 31808@end smallexample 31809 31810@value{GDBN} allows Python-based frame filters to affect the output of 31811the MI commands relating to stack traces. As there is no way to 31812implement this in a fully backward-compatible way, a front end must 31813request that this functionality be enabled. 31814 31815Once enabled, this feature cannot be disabled. 31816 31817Note that if Python support has not been compiled into @value{GDBN}, 31818this command will still succeed (and do nothing). 31819 31820@subheading The @code{-stack-info-frame} Command 31821@findex -stack-info-frame 31822 31823@subsubheading Synopsis 31824 31825@smallexample 31826 -stack-info-frame 31827@end smallexample 31828 31829Get info on the selected frame. 31830 31831@subsubheading @value{GDBN} Command 31832 31833The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame} 31834(without arguments). 31835 31836@subsubheading Example 31837 31838@smallexample 31839(gdb) 31840-stack-info-frame 31841^done,frame=@{level="1",addr="0x0001076c",func="callee3", 31842file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31843fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@} 31844(gdb) 31845@end smallexample 31846 31847@subheading The @code{-stack-info-depth} Command 31848@findex -stack-info-depth 31849 31850@subsubheading Synopsis 31851 31852@smallexample 31853 -stack-info-depth [ @var{max-depth} ] 31854@end smallexample 31855 31856Return the depth of the stack. If the integer argument @var{max-depth} 31857is specified, do not count beyond @var{max-depth} frames. 31858 31859@subsubheading @value{GDBN} Command 31860 31861There's no equivalent @value{GDBN} command. 31862 31863@subsubheading Example 31864 31865For a stack with frame levels 0 through 11: 31866 31867@smallexample 31868(gdb) 31869-stack-info-depth 31870^done,depth="12" 31871(gdb) 31872-stack-info-depth 4 31873^done,depth="4" 31874(gdb) 31875-stack-info-depth 12 31876^done,depth="12" 31877(gdb) 31878-stack-info-depth 11 31879^done,depth="11" 31880(gdb) 31881-stack-info-depth 13 31882^done,depth="12" 31883(gdb) 31884@end smallexample 31885 31886@anchor{-stack-list-arguments} 31887@subheading The @code{-stack-list-arguments} Command 31888@findex -stack-list-arguments 31889 31890@subsubheading Synopsis 31891 31892@smallexample 31893 -stack-list-arguments [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 31894 [ @var{low-frame} @var{high-frame} ] 31895@end smallexample 31896 31897Display a list of the arguments for the frames between @var{low-frame} 31898and @var{high-frame} (inclusive). If @var{low-frame} and 31899@var{high-frame} are not provided, list the arguments for the whole 31900call stack. If the two arguments are equal, show the single frame 31901at the corresponding level. It is an error if @var{low-frame} is 31902larger than the actual number of frames. On the other hand, 31903@var{high-frame} may be larger than the actual number of frames, in 31904which case only existing frames will be returned. 31905 31906If @var{print-values} is 0 or @code{--no-values}, print only the names of 31907the variables; if it is 1 or @code{--all-values}, print also their 31908values; and if it is 2 or @code{--simple-values}, print the name, 31909type and value for simple data types, and the name and type for arrays, 31910structures and unions. If the option @code{--no-frame-filters} is 31911supplied, then Python frame filters will not be executed. 31912 31913If the @code{--skip-unavailable} option is specified, arguments that 31914are not available are not listed. Partially available arguments 31915are still displayed, however. 31916 31917Use of this command to obtain arguments in a single frame is 31918deprecated in favor of the @samp{-stack-list-variables} command. 31919 31920@subsubheading @value{GDBN} Command 31921 31922@value{GDBN} does not have an equivalent command. @code{gdbtk} has a 31923@samp{gdb_get_args} command which partially overlaps with the 31924functionality of @samp{-stack-list-arguments}. 31925 31926@subsubheading Example 31927 31928@smallexample 31929(gdb) 31930-stack-list-frames 31931^done, 31932stack=[ 31933frame=@{level="0",addr="0x00010734",func="callee4", 31934file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31935fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}, 31936frame=@{level="1",addr="0x0001076c",func="callee3", 31937file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31938fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}, 31939frame=@{level="2",addr="0x0001078c",func="callee2", 31940file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31941fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@}, 31942frame=@{level="3",addr="0x000107b4",func="callee1", 31943file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31944fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@}, 31945frame=@{level="4",addr="0x000107e0",func="main", 31946file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 31947fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}] 31948(gdb) 31949-stack-list-arguments 0 31950^done, 31951stack-args=[ 31952frame=@{level="0",args=[]@}, 31953frame=@{level="1",args=[name="strarg"]@}, 31954frame=@{level="2",args=[name="intarg",name="strarg"]@}, 31955frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@}, 31956frame=@{level="4",args=[]@}] 31957(gdb) 31958-stack-list-arguments 1 31959^done, 31960stack-args=[ 31961frame=@{level="0",args=[]@}, 31962frame=@{level="1", 31963 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 31964frame=@{level="2",args=[ 31965@{name="intarg",value="2"@}, 31966@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 31967@{frame=@{level="3",args=[ 31968@{name="intarg",value="2"@}, 31969@{name="strarg",value="0x11940 \"A string argument.\""@}, 31970@{name="fltarg",value="3.5"@}]@}, 31971frame=@{level="4",args=[]@}] 31972(gdb) 31973-stack-list-arguments 0 2 2 31974^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}] 31975(gdb) 31976-stack-list-arguments 1 2 2 31977^done,stack-args=[frame=@{level="2", 31978args=[@{name="intarg",value="2"@}, 31979@{name="strarg",value="0x11940 \"A string argument.\""@}]@}] 31980(gdb) 31981@end smallexample 31982 31983@c @subheading -stack-list-exception-handlers 31984 31985 31986@anchor{-stack-list-frames} 31987@subheading The @code{-stack-list-frames} Command 31988@findex -stack-list-frames 31989 31990@subsubheading Synopsis 31991 31992@smallexample 31993 -stack-list-frames [ --no-frame-filters @var{low-frame} @var{high-frame} ] 31994@end smallexample 31995 31996List the frames currently on the stack. For each frame it displays the 31997following info: 31998 31999@table @samp 32000@item @var{level} 32001The frame number, 0 being the topmost frame, i.e., the innermost function. 32002@item @var{addr} 32003The @code{$pc} value for that frame. 32004@item @var{func} 32005Function name. 32006@item @var{file} 32007File name of the source file where the function lives. 32008@item @var{fullname} 32009The full file name of the source file where the function lives. 32010@item @var{line} 32011Line number corresponding to the @code{$pc}. 32012@item @var{from} 32013The shared library where this function is defined. This is only given 32014if the frame's function is not known. 32015@end table 32016 32017If invoked without arguments, this command prints a backtrace for the 32018whole stack. If given two integer arguments, it shows the frames whose 32019levels are between the two arguments (inclusive). If the two arguments 32020are equal, it shows the single frame at the corresponding level. It is 32021an error if @var{low-frame} is larger than the actual number of 32022frames. On the other hand, @var{high-frame} may be larger than the 32023actual number of frames, in which case only existing frames will be 32024returned. If the option @code{--no-frame-filters} is supplied, then 32025Python frame filters will not be executed. 32026 32027@subsubheading @value{GDBN} Command 32028 32029The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}. 32030 32031@subsubheading Example 32032 32033Full stack backtrace: 32034 32035@smallexample 32036(gdb) 32037-stack-list-frames 32038^done,stack= 32039[frame=@{level="0",addr="0x0001076c",func="foo", 32040 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@}, 32041frame=@{level="1",addr="0x000107a4",func="foo", 32042 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32043frame=@{level="2",addr="0x000107a4",func="foo", 32044 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32045frame=@{level="3",addr="0x000107a4",func="foo", 32046 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32047frame=@{level="4",addr="0x000107a4",func="foo", 32048 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32049frame=@{level="5",addr="0x000107a4",func="foo", 32050 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32051frame=@{level="6",addr="0x000107a4",func="foo", 32052 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32053frame=@{level="7",addr="0x000107a4",func="foo", 32054 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32055frame=@{level="8",addr="0x000107a4",func="foo", 32056 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32057frame=@{level="9",addr="0x000107a4",func="foo", 32058 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32059frame=@{level="10",addr="0x000107a4",func="foo", 32060 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32061frame=@{level="11",addr="0x00010738",func="main", 32062 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}] 32063(gdb) 32064@end smallexample 32065 32066Show frames between @var{low_frame} and @var{high_frame}: 32067 32068@smallexample 32069(gdb) 32070-stack-list-frames 3 5 32071^done,stack= 32072[frame=@{level="3",addr="0x000107a4",func="foo", 32073 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32074frame=@{level="4",addr="0x000107a4",func="foo", 32075 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 32076frame=@{level="5",addr="0x000107a4",func="foo", 32077 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}] 32078(gdb) 32079@end smallexample 32080 32081Show a single frame: 32082 32083@smallexample 32084(gdb) 32085-stack-list-frames 3 3 32086^done,stack= 32087[frame=@{level="3",addr="0x000107a4",func="foo", 32088 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}] 32089(gdb) 32090@end smallexample 32091 32092 32093@subheading The @code{-stack-list-locals} Command 32094@findex -stack-list-locals 32095@anchor{-stack-list-locals} 32096 32097@subsubheading Synopsis 32098 32099@smallexample 32100 -stack-list-locals [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 32101@end smallexample 32102 32103Display the local variable names for the selected frame. If 32104@var{print-values} is 0 or @code{--no-values}, print only the names of 32105the variables; if it is 1 or @code{--all-values}, print also their 32106values; and if it is 2 or @code{--simple-values}, print the name, 32107type and value for simple data types, and the name and type for arrays, 32108structures and unions. In this last case, a frontend can immediately 32109display the value of simple data types and create variable objects for 32110other data types when the user wishes to explore their values in 32111more detail. If the option @code{--no-frame-filters} is supplied, then 32112Python frame filters will not be executed. 32113 32114If the @code{--skip-unavailable} option is specified, local variables 32115that are not available are not listed. Partially available local 32116variables are still displayed, however. 32117 32118This command is deprecated in favor of the 32119@samp{-stack-list-variables} command. 32120 32121@subsubheading @value{GDBN} Command 32122 32123@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}. 32124 32125@subsubheading Example 32126 32127@smallexample 32128(gdb) 32129-stack-list-locals 0 32130^done,locals=[name="A",name="B",name="C"] 32131(gdb) 32132-stack-list-locals --all-values 32133^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@}, 32134 @{name="C",value="@{1, 2, 3@}"@}] 32135-stack-list-locals --simple-values 32136^done,locals=[@{name="A",type="int",value="1"@}, 32137 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}] 32138(gdb) 32139@end smallexample 32140 32141@anchor{-stack-list-variables} 32142@subheading The @code{-stack-list-variables} Command 32143@findex -stack-list-variables 32144 32145@subsubheading Synopsis 32146 32147@smallexample 32148 -stack-list-variables [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 32149@end smallexample 32150 32151Display the names of local variables and function arguments for the selected frame. If 32152@var{print-values} is 0 or @code{--no-values}, print only the names of 32153the variables; if it is 1 or @code{--all-values}, print also their 32154values; and if it is 2 or @code{--simple-values}, print the name, 32155type and value for simple data types, and the name and type for arrays, 32156structures and unions. If the option @code{--no-frame-filters} is 32157supplied, then Python frame filters will not be executed. 32158 32159If the @code{--skip-unavailable} option is specified, local variables 32160and arguments that are not available are not listed. Partially 32161available arguments and local variables are still displayed, however. 32162 32163@subsubheading Example 32164 32165@smallexample 32166(gdb) 32167-stack-list-variables --thread 1 --frame 0 --all-values 32168^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}] 32169(gdb) 32170@end smallexample 32171 32172 32173@subheading The @code{-stack-select-frame} Command 32174@findex -stack-select-frame 32175 32176@subsubheading Synopsis 32177 32178@smallexample 32179 -stack-select-frame @var{framenum} 32180@end smallexample 32181 32182Change the selected frame. Select a different frame @var{framenum} on 32183the stack. 32184 32185This command in deprecated in favor of passing the @samp{--frame} 32186option to every command. 32187 32188@subsubheading @value{GDBN} Command 32189 32190The corresponding @value{GDBN} commands are @samp{frame}, @samp{up}, 32191@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}. 32192 32193@subsubheading Example 32194 32195@smallexample 32196(gdb) 32197-stack-select-frame 2 32198^done 32199(gdb) 32200@end smallexample 32201 32202@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32203@node GDB/MI Variable Objects 32204@section @sc{gdb/mi} Variable Objects 32205 32206@ignore 32207 32208@subheading Motivation for Variable Objects in @sc{gdb/mi} 32209 32210For the implementation of a variable debugger window (locals, watched 32211expressions, etc.), we are proposing the adaptation of the existing code 32212used by @code{Insight}. 32213 32214The two main reasons for that are: 32215 32216@enumerate 1 32217@item 32218It has been proven in practice (it is already on its second generation). 32219 32220@item 32221It will shorten development time (needless to say how important it is 32222now). 32223@end enumerate 32224 32225The original interface was designed to be used by Tcl code, so it was 32226slightly changed so it could be used through @sc{gdb/mi}. This section 32227describes the @sc{gdb/mi} operations that will be available and gives some 32228hints about their use. 32229 32230@emph{Note}: In addition to the set of operations described here, we 32231expect the @sc{gui} implementation of a variable window to require, at 32232least, the following operations: 32233 32234@itemize @bullet 32235@item @code{-gdb-show} @code{output-radix} 32236@item @code{-stack-list-arguments} 32237@item @code{-stack-list-locals} 32238@item @code{-stack-select-frame} 32239@end itemize 32240 32241@end ignore 32242 32243@subheading Introduction to Variable Objects 32244 32245@cindex variable objects in @sc{gdb/mi} 32246 32247Variable objects are "object-oriented" MI interface for examining and 32248changing values of expressions. Unlike some other MI interfaces that 32249work with expressions, variable objects are specifically designed for 32250simple and efficient presentation in the frontend. A variable object 32251is identified by string name. When a variable object is created, the 32252frontend specifies the expression for that variable object. The 32253expression can be a simple variable, or it can be an arbitrary complex 32254expression, and can even involve CPU registers. After creating a 32255variable object, the frontend can invoke other variable object 32256operations---for example to obtain or change the value of a variable 32257object, or to change display format. 32258 32259Variable objects have hierarchical tree structure. Any variable object 32260that corresponds to a composite type, such as structure in C, has 32261a number of child variable objects, for example corresponding to each 32262element of a structure. A child variable object can itself have 32263children, recursively. Recursion ends when we reach 32264leaf variable objects, which always have built-in types. Child variable 32265objects are created only by explicit request, so if a frontend 32266is not interested in the children of a particular variable object, no 32267child will be created. 32268 32269For a leaf variable object it is possible to obtain its value as a 32270string, or set the value from a string. String value can be also 32271obtained for a non-leaf variable object, but it's generally a string 32272that only indicates the type of the object, and does not list its 32273contents. Assignment to a non-leaf variable object is not allowed. 32274 32275A frontend does not need to read the values of all variable objects each time 32276the program stops. Instead, MI provides an update command that lists all 32277variable objects whose values has changed since the last update 32278operation. This considerably reduces the amount of data that must 32279be transferred to the frontend. As noted above, children variable 32280objects are created on demand, and only leaf variable objects have a 32281real value. As result, gdb will read target memory only for leaf 32282variables that frontend has created. 32283 32284The automatic update is not always desirable. For example, a frontend 32285might want to keep a value of some expression for future reference, 32286and never update it. For another example, fetching memory is 32287relatively slow for embedded targets, so a frontend might want 32288to disable automatic update for the variables that are either not 32289visible on the screen, or ``closed''. This is possible using so 32290called ``frozen variable objects''. Such variable objects are never 32291implicitly updated. 32292 32293Variable objects can be either @dfn{fixed} or @dfn{floating}. For the 32294fixed variable object, the expression is parsed when the variable 32295object is created, including associating identifiers to specific 32296variables. The meaning of expression never changes. For a floating 32297variable object the values of variables whose names appear in the 32298expressions are re-evaluated every time in the context of the current 32299frame. Consider this example: 32300 32301@smallexample 32302void do_work(...) 32303@{ 32304 struct work_state state; 32305 32306 if (...) 32307 do_work(...); 32308@} 32309@end smallexample 32310 32311If a fixed variable object for the @code{state} variable is created in 32312this function, and we enter the recursive call, the variable 32313object will report the value of @code{state} in the top-level 32314@code{do_work} invocation. On the other hand, a floating variable 32315object will report the value of @code{state} in the current frame. 32316 32317If an expression specified when creating a fixed variable object 32318refers to a local variable, the variable object becomes bound to the 32319thread and frame in which the variable object is created. When such 32320variable object is updated, @value{GDBN} makes sure that the 32321thread/frame combination the variable object is bound to still exists, 32322and re-evaluates the variable object in context of that thread/frame. 32323 32324The following is the complete set of @sc{gdb/mi} operations defined to 32325access this functionality: 32326 32327@multitable @columnfractions .4 .6 32328@item @strong{Operation} 32329@tab @strong{Description} 32330 32331@item @code{-enable-pretty-printing} 32332@tab enable Python-based pretty-printing 32333@item @code{-var-create} 32334@tab create a variable object 32335@item @code{-var-delete} 32336@tab delete the variable object and/or its children 32337@item @code{-var-set-format} 32338@tab set the display format of this variable 32339@item @code{-var-show-format} 32340@tab show the display format of this variable 32341@item @code{-var-info-num-children} 32342@tab tells how many children this object has 32343@item @code{-var-list-children} 32344@tab return a list of the object's children 32345@item @code{-var-info-type} 32346@tab show the type of this variable object 32347@item @code{-var-info-expression} 32348@tab print parent-relative expression that this variable object represents 32349@item @code{-var-info-path-expression} 32350@tab print full expression that this variable object represents 32351@item @code{-var-show-attributes} 32352@tab is this variable editable? does it exist here? 32353@item @code{-var-evaluate-expression} 32354@tab get the value of this variable 32355@item @code{-var-assign} 32356@tab set the value of this variable 32357@item @code{-var-update} 32358@tab update the variable and its children 32359@item @code{-var-set-frozen} 32360@tab set frozeness attribute 32361@item @code{-var-set-update-range} 32362@tab set range of children to display on update 32363@end multitable 32364 32365In the next subsection we describe each operation in detail and suggest 32366how it can be used. 32367 32368@subheading Description And Use of Operations on Variable Objects 32369 32370@subheading The @code{-enable-pretty-printing} Command 32371@findex -enable-pretty-printing 32372 32373@smallexample 32374-enable-pretty-printing 32375@end smallexample 32376 32377@value{GDBN} allows Python-based visualizers to affect the output of the 32378MI variable object commands. However, because there was no way to 32379implement this in a fully backward-compatible way, a front end must 32380request that this functionality be enabled. 32381 32382Once enabled, this feature cannot be disabled. 32383 32384Note that if Python support has not been compiled into @value{GDBN}, 32385this command will still succeed (and do nothing). 32386 32387This feature is currently (as of @value{GDBN} 7.0) experimental, and 32388may work differently in future versions of @value{GDBN}. 32389 32390@subheading The @code{-var-create} Command 32391@findex -var-create 32392 32393@subsubheading Synopsis 32394 32395@smallexample 32396 -var-create @{@var{name} | "-"@} 32397 @{@var{frame-addr} | "*" | "@@"@} @var{expression} 32398@end smallexample 32399 32400This operation creates a variable object, which allows the monitoring of 32401a variable, the result of an expression, a memory cell or a CPU 32402register. 32403 32404The @var{name} parameter is the string by which the object can be 32405referenced. It must be unique. If @samp{-} is specified, the varobj 32406system will generate a string ``varNNNNNN'' automatically. It will be 32407unique provided that one does not specify @var{name} of that format. 32408The command fails if a duplicate name is found. 32409 32410The frame under which the expression should be evaluated can be 32411specified by @var{frame-addr}. A @samp{*} indicates that the current 32412frame should be used. A @samp{@@} indicates that a floating variable 32413object must be created. 32414 32415@var{expression} is any expression valid on the current language set (must not 32416begin with a @samp{*}), or one of the following: 32417 32418@itemize @bullet 32419@item 32420@samp{*@var{addr}}, where @var{addr} is the address of a memory cell 32421 32422@item 32423@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD) 32424 32425@item 32426@samp{$@var{regname}} --- a CPU register name 32427@end itemize 32428 32429@cindex dynamic varobj 32430A varobj's contents may be provided by a Python-based pretty-printer. In this 32431case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs 32432have slightly different semantics in some cases. If the 32433@code{-enable-pretty-printing} command is not sent, then @value{GDBN} 32434will never create a dynamic varobj. This ensures backward 32435compatibility for existing clients. 32436 32437@subsubheading Result 32438 32439This operation returns attributes of the newly-created varobj. These 32440are: 32441 32442@table @samp 32443@item name 32444The name of the varobj. 32445 32446@item numchild 32447The number of children of the varobj. This number is not necessarily 32448reliable for a dynamic varobj. Instead, you must examine the 32449@samp{has_more} attribute. 32450 32451@item value 32452The varobj's scalar value. For a varobj whose type is some sort of 32453aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value 32454will not be interesting. 32455 32456@item type 32457The varobj's type. This is a string representation of the type, as 32458would be printed by the @value{GDBN} CLI. If @samp{print object} 32459(@pxref{Print Settings, set print object}) is set to @code{on}, the 32460@emph{actual} (derived) type of the object is shown rather than the 32461@emph{declared} one. 32462 32463@item thread-id 32464If a variable object is bound to a specific thread, then this is the 32465thread's identifier. 32466 32467@item has_more 32468For a dynamic varobj, this indicates whether there appear to be any 32469children available. For a non-dynamic varobj, this will be 0. 32470 32471@item dynamic 32472This attribute will be present and have the value @samp{1} if the 32473varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 32474then this attribute will not be present. 32475 32476@item displayhint 32477A dynamic varobj can supply a display hint to the front end. The 32478value comes directly from the Python pretty-printer object's 32479@code{display_hint} method. @xref{Pretty Printing API}. 32480@end table 32481 32482Typical output will look like this: 32483 32484@smallexample 32485 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}", 32486 has_more="@var{has_more}" 32487@end smallexample 32488 32489 32490@subheading The @code{-var-delete} Command 32491@findex -var-delete 32492 32493@subsubheading Synopsis 32494 32495@smallexample 32496 -var-delete [ -c ] @var{name} 32497@end smallexample 32498 32499Deletes a previously created variable object and all of its children. 32500With the @samp{-c} option, just deletes the children. 32501 32502Returns an error if the object @var{name} is not found. 32503 32504 32505@subheading The @code{-var-set-format} Command 32506@findex -var-set-format 32507 32508@subsubheading Synopsis 32509 32510@smallexample 32511 -var-set-format @var{name} @var{format-spec} 32512@end smallexample 32513 32514Sets the output format for the value of the object @var{name} to be 32515@var{format-spec}. 32516 32517@anchor{-var-set-format} 32518The syntax for the @var{format-spec} is as follows: 32519 32520@smallexample 32521 @var{format-spec} @expansion{} 32522 @{binary | decimal | hexadecimal | octal | natural@} 32523@end smallexample 32524 32525The natural format is the default format choosen automatically 32526based on the variable type (like decimal for an @code{int}, hex 32527for pointers, etc.). 32528 32529For a variable with children, the format is set only on the 32530variable itself, and the children are not affected. 32531 32532@subheading The @code{-var-show-format} Command 32533@findex -var-show-format 32534 32535@subsubheading Synopsis 32536 32537@smallexample 32538 -var-show-format @var{name} 32539@end smallexample 32540 32541Returns the format used to display the value of the object @var{name}. 32542 32543@smallexample 32544 @var{format} @expansion{} 32545 @var{format-spec} 32546@end smallexample 32547 32548 32549@subheading The @code{-var-info-num-children} Command 32550@findex -var-info-num-children 32551 32552@subsubheading Synopsis 32553 32554@smallexample 32555 -var-info-num-children @var{name} 32556@end smallexample 32557 32558Returns the number of children of a variable object @var{name}: 32559 32560@smallexample 32561 numchild=@var{n} 32562@end smallexample 32563 32564Note that this number is not completely reliable for a dynamic varobj. 32565It will return the current number of children, but more children may 32566be available. 32567 32568 32569@subheading The @code{-var-list-children} Command 32570@findex -var-list-children 32571 32572@subsubheading Synopsis 32573 32574@smallexample 32575 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}] 32576@end smallexample 32577@anchor{-var-list-children} 32578 32579Return a list of the children of the specified variable object and 32580create variable objects for them, if they do not already exist. With 32581a single argument or if @var{print-values} has a value of 0 or 32582@code{--no-values}, print only the names of the variables; if 32583@var{print-values} is 1 or @code{--all-values}, also print their 32584values; and if it is 2 or @code{--simple-values} print the name and 32585value for simple data types and just the name for arrays, structures 32586and unions. 32587 32588@var{from} and @var{to}, if specified, indicate the range of children 32589to report. If @var{from} or @var{to} is less than zero, the range is 32590reset and all children will be reported. Otherwise, children starting 32591at @var{from} (zero-based) and up to and excluding @var{to} will be 32592reported. 32593 32594If a child range is requested, it will only affect the current call to 32595@code{-var-list-children}, but not future calls to @code{-var-update}. 32596For this, you must instead use @code{-var-set-update-range}. The 32597intent of this approach is to enable a front end to implement any 32598update approach it likes; for example, scrolling a view may cause the 32599front end to request more children with @code{-var-list-children}, and 32600then the front end could call @code{-var-set-update-range} with a 32601different range to ensure that future updates are restricted to just 32602the visible items. 32603 32604For each child the following results are returned: 32605 32606@table @var 32607 32608@item name 32609Name of the variable object created for this child. 32610 32611@item exp 32612The expression to be shown to the user by the front end to designate this child. 32613For example this may be the name of a structure member. 32614 32615For a dynamic varobj, this value cannot be used to form an 32616expression. There is no way to do this at all with a dynamic varobj. 32617 32618For C/C@t{++} structures there are several pseudo children returned to 32619designate access qualifiers. For these pseudo children @var{exp} is 32620@samp{public}, @samp{private}, or @samp{protected}. In this case the 32621type and value are not present. 32622 32623A dynamic varobj will not report the access qualifying 32624pseudo-children, regardless of the language. This information is not 32625available at all with a dynamic varobj. 32626 32627@item numchild 32628Number of children this child has. For a dynamic varobj, this will be 326290. 32630 32631@item type 32632The type of the child. If @samp{print object} 32633(@pxref{Print Settings, set print object}) is set to @code{on}, the 32634@emph{actual} (derived) type of the object is shown rather than the 32635@emph{declared} one. 32636 32637@item value 32638If values were requested, this is the value. 32639 32640@item thread-id 32641If this variable object is associated with a thread, this is the thread id. 32642Otherwise this result is not present. 32643 32644@item frozen 32645If the variable object is frozen, this variable will be present with a value of 1. 32646 32647@item displayhint 32648A dynamic varobj can supply a display hint to the front end. The 32649value comes directly from the Python pretty-printer object's 32650@code{display_hint} method. @xref{Pretty Printing API}. 32651 32652@item dynamic 32653This attribute will be present and have the value @samp{1} if the 32654varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 32655then this attribute will not be present. 32656 32657@end table 32658 32659The result may have its own attributes: 32660 32661@table @samp 32662@item displayhint 32663A dynamic varobj can supply a display hint to the front end. The 32664value comes directly from the Python pretty-printer object's 32665@code{display_hint} method. @xref{Pretty Printing API}. 32666 32667@item has_more 32668This is an integer attribute which is nonzero if there are children 32669remaining after the end of the selected range. 32670@end table 32671 32672@subsubheading Example 32673 32674@smallexample 32675(gdb) 32676 -var-list-children n 32677 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 32678 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}] 32679(gdb) 32680 -var-list-children --all-values n 32681 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 32682 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}] 32683@end smallexample 32684 32685 32686@subheading The @code{-var-info-type} Command 32687@findex -var-info-type 32688 32689@subsubheading Synopsis 32690 32691@smallexample 32692 -var-info-type @var{name} 32693@end smallexample 32694 32695Returns the type of the specified variable @var{name}. The type is 32696returned as a string in the same format as it is output by the 32697@value{GDBN} CLI: 32698 32699@smallexample 32700 type=@var{typename} 32701@end smallexample 32702 32703 32704@subheading The @code{-var-info-expression} Command 32705@findex -var-info-expression 32706 32707@subsubheading Synopsis 32708 32709@smallexample 32710 -var-info-expression @var{name} 32711@end smallexample 32712 32713Returns a string that is suitable for presenting this 32714variable object in user interface. The string is generally 32715not valid expression in the current language, and cannot be evaluated. 32716 32717For example, if @code{a} is an array, and variable object 32718@code{A} was created for @code{a}, then we'll get this output: 32719 32720@smallexample 32721(gdb) -var-info-expression A.1 32722^done,lang="C",exp="1" 32723@end smallexample 32724 32725@noindent 32726Here, the value of @code{lang} is the language name, which can be 32727found in @ref{Supported Languages}. 32728 32729Note that the output of the @code{-var-list-children} command also 32730includes those expressions, so the @code{-var-info-expression} command 32731is of limited use. 32732 32733@subheading The @code{-var-info-path-expression} Command 32734@findex -var-info-path-expression 32735 32736@subsubheading Synopsis 32737 32738@smallexample 32739 -var-info-path-expression @var{name} 32740@end smallexample 32741 32742Returns an expression that can be evaluated in the current 32743context and will yield the same value that a variable object has. 32744Compare this with the @code{-var-info-expression} command, which 32745result can be used only for UI presentation. Typical use of 32746the @code{-var-info-path-expression} command is creating a 32747watchpoint from a variable object. 32748 32749This command is currently not valid for children of a dynamic varobj, 32750and will give an error when invoked on one. 32751 32752For example, suppose @code{C} is a C@t{++} class, derived from class 32753@code{Base}, and that the @code{Base} class has a member called 32754@code{m_size}. Assume a variable @code{c} is has the type of 32755@code{C} and a variable object @code{C} was created for variable 32756@code{c}. Then, we'll get this output: 32757@smallexample 32758(gdb) -var-info-path-expression C.Base.public.m_size 32759^done,path_expr=((Base)c).m_size) 32760@end smallexample 32761 32762@subheading The @code{-var-show-attributes} Command 32763@findex -var-show-attributes 32764 32765@subsubheading Synopsis 32766 32767@smallexample 32768 -var-show-attributes @var{name} 32769@end smallexample 32770 32771List attributes of the specified variable object @var{name}: 32772 32773@smallexample 32774 status=@var{attr} [ ( ,@var{attr} )* ] 32775@end smallexample 32776 32777@noindent 32778where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}. 32779 32780@subheading The @code{-var-evaluate-expression} Command 32781@findex -var-evaluate-expression 32782 32783@subsubheading Synopsis 32784 32785@smallexample 32786 -var-evaluate-expression [-f @var{format-spec}] @var{name} 32787@end smallexample 32788 32789Evaluates the expression that is represented by the specified variable 32790object and returns its value as a string. The format of the string 32791can be specified with the @samp{-f} option. The possible values of 32792this option are the same as for @code{-var-set-format} 32793(@pxref{-var-set-format}). If the @samp{-f} option is not specified, 32794the current display format will be used. The current display format 32795can be changed using the @code{-var-set-format} command. 32796 32797@smallexample 32798 value=@var{value} 32799@end smallexample 32800 32801Note that one must invoke @code{-var-list-children} for a variable 32802before the value of a child variable can be evaluated. 32803 32804@subheading The @code{-var-assign} Command 32805@findex -var-assign 32806 32807@subsubheading Synopsis 32808 32809@smallexample 32810 -var-assign @var{name} @var{expression} 32811@end smallexample 32812 32813Assigns the value of @var{expression} to the variable object specified 32814by @var{name}. The object must be @samp{editable}. If the variable's 32815value is altered by the assign, the variable will show up in any 32816subsequent @code{-var-update} list. 32817 32818@subsubheading Example 32819 32820@smallexample 32821(gdb) 32822-var-assign var1 3 32823^done,value="3" 32824(gdb) 32825-var-update * 32826^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}] 32827(gdb) 32828@end smallexample 32829 32830@subheading The @code{-var-update} Command 32831@findex -var-update 32832 32833@subsubheading Synopsis 32834 32835@smallexample 32836 -var-update [@var{print-values}] @{@var{name} | "*"@} 32837@end smallexample 32838 32839Reevaluate the expressions corresponding to the variable object 32840@var{name} and all its direct and indirect children, and return the 32841list of variable objects whose values have changed; @var{name} must 32842be a root variable object. Here, ``changed'' means that the result of 32843@code{-var-evaluate-expression} before and after the 32844@code{-var-update} is different. If @samp{*} is used as the variable 32845object names, all existing variable objects are updated, except 32846for frozen ones (@pxref{-var-set-frozen}). The option 32847@var{print-values} determines whether both names and values, or just 32848names are printed. The possible values of this option are the same 32849as for @code{-var-list-children} (@pxref{-var-list-children}). It is 32850recommended to use the @samp{--all-values} option, to reduce the 32851number of MI commands needed on each program stop. 32852 32853With the @samp{*} parameter, if a variable object is bound to a 32854currently running thread, it will not be updated, without any 32855diagnostic. 32856 32857If @code{-var-set-update-range} was previously used on a varobj, then 32858only the selected range of children will be reported. 32859 32860@code{-var-update} reports all the changed varobjs in a tuple named 32861@samp{changelist}. 32862 32863Each item in the change list is itself a tuple holding: 32864 32865@table @samp 32866@item name 32867The name of the varobj. 32868 32869@item value 32870If values were requested for this update, then this field will be 32871present and will hold the value of the varobj. 32872 32873@item in_scope 32874@anchor{-var-update} 32875This field is a string which may take one of three values: 32876 32877@table @code 32878@item "true" 32879The variable object's current value is valid. 32880 32881@item "false" 32882The variable object does not currently hold a valid value but it may 32883hold one in the future if its associated expression comes back into 32884scope. 32885 32886@item "invalid" 32887The variable object no longer holds a valid value. 32888This can occur when the executable file being debugged has changed, 32889either through recompilation or by using the @value{GDBN} @code{file} 32890command. The front end should normally choose to delete these variable 32891objects. 32892@end table 32893 32894In the future new values may be added to this list so the front should 32895be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}. 32896 32897@item type_changed 32898This is only present if the varobj is still valid. If the type 32899changed, then this will be the string @samp{true}; otherwise it will 32900be @samp{false}. 32901 32902When a varobj's type changes, its children are also likely to have 32903become incorrect. Therefore, the varobj's children are automatically 32904deleted when this attribute is @samp{true}. Also, the varobj's update 32905range, when set using the @code{-var-set-update-range} command, is 32906unset. 32907 32908@item new_type 32909If the varobj's type changed, then this field will be present and will 32910hold the new type. 32911 32912@item new_num_children 32913For a dynamic varobj, if the number of children changed, or if the 32914type changed, this will be the new number of children. 32915 32916The @samp{numchild} field in other varobj responses is generally not 32917valid for a dynamic varobj -- it will show the number of children that 32918@value{GDBN} knows about, but because dynamic varobjs lazily 32919instantiate their children, this will not reflect the number of 32920children which may be available. 32921 32922The @samp{new_num_children} attribute only reports changes to the 32923number of children known by @value{GDBN}. This is the only way to 32924detect whether an update has removed children (which necessarily can 32925only happen at the end of the update range). 32926 32927@item displayhint 32928The display hint, if any. 32929 32930@item has_more 32931This is an integer value, which will be 1 if there are more children 32932available outside the varobj's update range. 32933 32934@item dynamic 32935This attribute will be present and have the value @samp{1} if the 32936varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 32937then this attribute will not be present. 32938 32939@item new_children 32940If new children were added to a dynamic varobj within the selected 32941update range (as set by @code{-var-set-update-range}), then they will 32942be listed in this attribute. 32943@end table 32944 32945@subsubheading Example 32946 32947@smallexample 32948(gdb) 32949-var-assign var1 3 32950^done,value="3" 32951(gdb) 32952-var-update --all-values var1 32953^done,changelist=[@{name="var1",value="3",in_scope="true", 32954type_changed="false"@}] 32955(gdb) 32956@end smallexample 32957 32958@subheading The @code{-var-set-frozen} Command 32959@findex -var-set-frozen 32960@anchor{-var-set-frozen} 32961 32962@subsubheading Synopsis 32963 32964@smallexample 32965 -var-set-frozen @var{name} @var{flag} 32966@end smallexample 32967 32968Set the frozenness flag on the variable object @var{name}. The 32969@var{flag} parameter should be either @samp{1} to make the variable 32970frozen or @samp{0} to make it unfrozen. If a variable object is 32971frozen, then neither itself, nor any of its children, are 32972implicitly updated by @code{-var-update} of 32973a parent variable or by @code{-var-update *}. Only 32974@code{-var-update} of the variable itself will update its value and 32975values of its children. After a variable object is unfrozen, it is 32976implicitly updated by all subsequent @code{-var-update} operations. 32977Unfreezing a variable does not update it, only subsequent 32978@code{-var-update} does. 32979 32980@subsubheading Example 32981 32982@smallexample 32983(gdb) 32984-var-set-frozen V 1 32985^done 32986(gdb) 32987@end smallexample 32988 32989@subheading The @code{-var-set-update-range} command 32990@findex -var-set-update-range 32991@anchor{-var-set-update-range} 32992 32993@subsubheading Synopsis 32994 32995@smallexample 32996 -var-set-update-range @var{name} @var{from} @var{to} 32997@end smallexample 32998 32999Set the range of children to be returned by future invocations of 33000@code{-var-update}. 33001 33002@var{from} and @var{to} indicate the range of children to report. If 33003@var{from} or @var{to} is less than zero, the range is reset and all 33004children will be reported. Otherwise, children starting at @var{from} 33005(zero-based) and up to and excluding @var{to} will be reported. 33006 33007@subsubheading Example 33008 33009@smallexample 33010(gdb) 33011-var-set-update-range V 1 2 33012^done 33013@end smallexample 33014 33015@subheading The @code{-var-set-visualizer} command 33016@findex -var-set-visualizer 33017@anchor{-var-set-visualizer} 33018 33019@subsubheading Synopsis 33020 33021@smallexample 33022 -var-set-visualizer @var{name} @var{visualizer} 33023@end smallexample 33024 33025Set a visualizer for the variable object @var{name}. 33026 33027@var{visualizer} is the visualizer to use. The special value 33028@samp{None} means to disable any visualizer in use. 33029 33030If not @samp{None}, @var{visualizer} must be a Python expression. 33031This expression must evaluate to a callable object which accepts a 33032single argument. @value{GDBN} will call this object with the value of 33033the varobj @var{name} as an argument (this is done so that the same 33034Python pretty-printing code can be used for both the CLI and MI). 33035When called, this object must return an object which conforms to the 33036pretty-printing interface (@pxref{Pretty Printing API}). 33037 33038The pre-defined function @code{gdb.default_visualizer} may be used to 33039select a visualizer by following the built-in process 33040(@pxref{Selecting Pretty-Printers}). This is done automatically when 33041a varobj is created, and so ordinarily is not needed. 33042 33043This feature is only available if Python support is enabled. The MI 33044command @code{-list-features} (@pxref{GDB/MI Support Commands}) 33045can be used to check this. 33046 33047@subsubheading Example 33048 33049Resetting the visualizer: 33050 33051@smallexample 33052(gdb) 33053-var-set-visualizer V None 33054^done 33055@end smallexample 33056 33057Reselecting the default (type-based) visualizer: 33058 33059@smallexample 33060(gdb) 33061-var-set-visualizer V gdb.default_visualizer 33062^done 33063@end smallexample 33064 33065Suppose @code{SomeClass} is a visualizer class. A lambda expression 33066can be used to instantiate this class for a varobj: 33067 33068@smallexample 33069(gdb) 33070-var-set-visualizer V "lambda val: SomeClass()" 33071^done 33072@end smallexample 33073 33074@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33075@node GDB/MI Data Manipulation 33076@section @sc{gdb/mi} Data Manipulation 33077 33078@cindex data manipulation, in @sc{gdb/mi} 33079@cindex @sc{gdb/mi}, data manipulation 33080This section describes the @sc{gdb/mi} commands that manipulate data: 33081examine memory and registers, evaluate expressions, etc. 33082 33083@c REMOVED FROM THE INTERFACE. 33084@c @subheading -data-assign 33085@c Change the value of a program variable. Plenty of side effects. 33086@c @subsubheading GDB Command 33087@c set variable 33088@c @subsubheading Example 33089@c N.A. 33090 33091@subheading The @code{-data-disassemble} Command 33092@findex -data-disassemble 33093 33094@subsubheading Synopsis 33095 33096@smallexample 33097 -data-disassemble 33098 [ -s @var{start-addr} -e @var{end-addr} ] 33099 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ] 33100 -- @var{mode} 33101@end smallexample 33102 33103@noindent 33104Where: 33105 33106@table @samp 33107@item @var{start-addr} 33108is the beginning address (or @code{$pc}) 33109@item @var{end-addr} 33110is the end address 33111@item @var{filename} 33112is the name of the file to disassemble 33113@item @var{linenum} 33114is the line number to disassemble around 33115@item @var{lines} 33116is the number of disassembly lines to be produced. If it is -1, 33117the whole function will be disassembled, in case no @var{end-addr} is 33118specified. If @var{end-addr} is specified as a non-zero value, and 33119@var{lines} is lower than the number of disassembly lines between 33120@var{start-addr} and @var{end-addr}, only @var{lines} lines are 33121displayed; if @var{lines} is higher than the number of lines between 33122@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr} 33123are displayed. 33124@item @var{mode} 33125is either 0 (meaning only disassembly), 1 (meaning mixed source and 33126disassembly), 2 (meaning disassembly with raw opcodes), or 3 (meaning 33127mixed source and disassembly with raw opcodes). 33128@end table 33129 33130@subsubheading Result 33131 33132The result of the @code{-data-disassemble} command will be a list named 33133@samp{asm_insns}, the contents of this list depend on the @var{mode} 33134used with the @code{-data-disassemble} command. 33135 33136For modes 0 and 2 the @samp{asm_insns} list contains tuples with the 33137following fields: 33138 33139@table @code 33140@item address 33141The address at which this instruction was disassembled. 33142 33143@item func-name 33144The name of the function this instruction is within. 33145 33146@item offset 33147The decimal offset in bytes from the start of @samp{func-name}. 33148 33149@item inst 33150The text disassembly for this @samp{address}. 33151 33152@item opcodes 33153This field is only present for mode 2. This contains the raw opcode 33154bytes for the @samp{inst} field. 33155 33156@end table 33157 33158For modes 1 and 3 the @samp{asm_insns} list contains tuples named 33159@samp{src_and_asm_line}, each of which has the following fields: 33160 33161@table @code 33162@item line 33163The line number within @samp{file}. 33164 33165@item file 33166The file name from the compilation unit. This might be an absolute 33167file name or a relative file name depending on the compile command 33168used. 33169 33170@item fullname 33171Absolute file name of @samp{file}. It is converted to a canonical form 33172using the source file search path 33173(@pxref{Source Path, ,Specifying Source Directories}) 33174and after resolving all the symbolic links. 33175 33176If the source file is not found this field will contain the path as 33177present in the debug information. 33178 33179@item line_asm_insn 33180This is a list of tuples containing the disassembly for @samp{line} in 33181@samp{file}. The fields of each tuple are the same as for 33182@code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address}, 33183@samp{func-name}, @samp{offset}, @samp{inst}, and optionally 33184@samp{opcodes}. 33185 33186@end table 33187 33188Note that whatever included in the @samp{inst} field, is not 33189manipulated directly by @sc{gdb/mi}, i.e., it is not possible to 33190adjust its format. 33191 33192@subsubheading @value{GDBN} Command 33193 33194The corresponding @value{GDBN} command is @samp{disassemble}. 33195 33196@subsubheading Example 33197 33198Disassemble from the current value of @code{$pc} to @code{$pc + 20}: 33199 33200@smallexample 33201(gdb) 33202-data-disassemble -s $pc -e "$pc + 20" -- 0 33203^done, 33204asm_insns=[ 33205@{address="0x000107c0",func-name="main",offset="4", 33206inst="mov 2, %o0"@}, 33207@{address="0x000107c4",func-name="main",offset="8", 33208inst="sethi %hi(0x11800), %o2"@}, 33209@{address="0x000107c8",func-name="main",offset="12", 33210inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@}, 33211@{address="0x000107cc",func-name="main",offset="16", 33212inst="sethi %hi(0x11800), %o2"@}, 33213@{address="0x000107d0",func-name="main",offset="20", 33214inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}] 33215(gdb) 33216@end smallexample 33217 33218Disassemble the whole @code{main} function. Line 32 is part of 33219@code{main}. 33220 33221@smallexample 33222-data-disassemble -f basics.c -l 32 -- 0 33223^done,asm_insns=[ 33224@{address="0x000107bc",func-name="main",offset="0", 33225inst="save %sp, -112, %sp"@}, 33226@{address="0x000107c0",func-name="main",offset="4", 33227inst="mov 2, %o0"@}, 33228@{address="0x000107c4",func-name="main",offset="8", 33229inst="sethi %hi(0x11800), %o2"@}, 33230[@dots{}] 33231@{address="0x0001081c",func-name="main",offset="96",inst="ret "@}, 33232@{address="0x00010820",func-name="main",offset="100",inst="restore "@}] 33233(gdb) 33234@end smallexample 33235 33236Disassemble 3 instructions from the start of @code{main}: 33237 33238@smallexample 33239(gdb) 33240-data-disassemble -f basics.c -l 32 -n 3 -- 0 33241^done,asm_insns=[ 33242@{address="0x000107bc",func-name="main",offset="0", 33243inst="save %sp, -112, %sp"@}, 33244@{address="0x000107c0",func-name="main",offset="4", 33245inst="mov 2, %o0"@}, 33246@{address="0x000107c4",func-name="main",offset="8", 33247inst="sethi %hi(0x11800), %o2"@}] 33248(gdb) 33249@end smallexample 33250 33251Disassemble 3 instructions from the start of @code{main} in mixed mode: 33252 33253@smallexample 33254(gdb) 33255-data-disassemble -f basics.c -l 32 -n 3 -- 1 33256^done,asm_insns=[ 33257src_and_asm_line=@{line="31", 33258file="../../../src/gdb/testsuite/gdb.mi/basics.c", 33259fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 33260line_asm_insn=[@{address="0x000107bc", 33261func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@}, 33262src_and_asm_line=@{line="32", 33263file="../../../src/gdb/testsuite/gdb.mi/basics.c", 33264fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 33265line_asm_insn=[@{address="0x000107c0", 33266func-name="main",offset="4",inst="mov 2, %o0"@}, 33267@{address="0x000107c4",func-name="main",offset="8", 33268inst="sethi %hi(0x11800), %o2"@}]@}] 33269(gdb) 33270@end smallexample 33271 33272 33273@subheading The @code{-data-evaluate-expression} Command 33274@findex -data-evaluate-expression 33275 33276@subsubheading Synopsis 33277 33278@smallexample 33279 -data-evaluate-expression @var{expr} 33280@end smallexample 33281 33282Evaluate @var{expr} as an expression. The expression could contain an 33283inferior function call. The function call will execute synchronously. 33284If the expression contains spaces, it must be enclosed in double quotes. 33285 33286@subsubheading @value{GDBN} Command 33287 33288The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and 33289@samp{call}. In @code{gdbtk} only, there's a corresponding 33290@samp{gdb_eval} command. 33291 33292@subsubheading Example 33293 33294In the following example, the numbers that precede the commands are the 33295@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi} 33296Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its 33297output. 33298 33299@smallexample 33300211-data-evaluate-expression A 33301211^done,value="1" 33302(gdb) 33303311-data-evaluate-expression &A 33304311^done,value="0xefffeb7c" 33305(gdb) 33306411-data-evaluate-expression A+3 33307411^done,value="4" 33308(gdb) 33309511-data-evaluate-expression "A + 3" 33310511^done,value="4" 33311(gdb) 33312@end smallexample 33313 33314 33315@subheading The @code{-data-list-changed-registers} Command 33316@findex -data-list-changed-registers 33317 33318@subsubheading Synopsis 33319 33320@smallexample 33321 -data-list-changed-registers 33322@end smallexample 33323 33324Display a list of the registers that have changed. 33325 33326@subsubheading @value{GDBN} Command 33327 33328@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk} 33329has the corresponding command @samp{gdb_changed_register_list}. 33330 33331@subsubheading Example 33332 33333On a PPC MBX board: 33334 33335@smallexample 33336(gdb) 33337-exec-continue 33338^running 33339 33340(gdb) 33341*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{ 33342func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c", 33343line="5"@} 33344(gdb) 33345-data-list-changed-registers 33346^done,changed-registers=["0","1","2","4","5","6","7","8","9", 33347"10","11","13","14","15","16","17","18","19","20","21","22","23", 33348"24","25","26","27","28","30","31","64","65","66","67","69"] 33349(gdb) 33350@end smallexample 33351 33352 33353@subheading The @code{-data-list-register-names} Command 33354@findex -data-list-register-names 33355 33356@subsubheading Synopsis 33357 33358@smallexample 33359 -data-list-register-names [ ( @var{regno} )+ ] 33360@end smallexample 33361 33362Show a list of register names for the current target. If no arguments 33363are given, it shows a list of the names of all the registers. If 33364integer numbers are given as arguments, it will print a list of the 33365names of the registers corresponding to the arguments. To ensure 33366consistency between a register name and its number, the output list may 33367include empty register names. 33368 33369@subsubheading @value{GDBN} Command 33370 33371@value{GDBN} does not have a command which corresponds to 33372@samp{-data-list-register-names}. In @code{gdbtk} there is a 33373corresponding command @samp{gdb_regnames}. 33374 33375@subsubheading Example 33376 33377For the PPC MBX board: 33378@smallexample 33379(gdb) 33380-data-list-register-names 33381^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7", 33382"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18", 33383"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29", 33384"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9", 33385"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20", 33386"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31", 33387"", "pc","ps","cr","lr","ctr","xer"] 33388(gdb) 33389-data-list-register-names 1 2 3 33390^done,register-names=["r1","r2","r3"] 33391(gdb) 33392@end smallexample 33393 33394@subheading The @code{-data-list-register-values} Command 33395@findex -data-list-register-values 33396 33397@subsubheading Synopsis 33398 33399@smallexample 33400 -data-list-register-values 33401 [ @code{--skip-unavailable} ] @var{fmt} [ ( @var{regno} )*] 33402@end smallexample 33403 33404Display the registers' contents. @var{fmt} is the format according to 33405which the registers' contents are to be returned, followed by an optional 33406list of numbers specifying the registers to display. A missing list of 33407numbers indicates that the contents of all the registers must be 33408returned. The @code{--skip-unavailable} option indicates that only 33409the available registers are to be returned. 33410 33411Allowed formats for @var{fmt} are: 33412 33413@table @code 33414@item x 33415Hexadecimal 33416@item o 33417Octal 33418@item t 33419Binary 33420@item d 33421Decimal 33422@item r 33423Raw 33424@item N 33425Natural 33426@end table 33427 33428@subsubheading @value{GDBN} Command 33429 33430The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info 33431all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}. 33432 33433@subsubheading Example 33434 33435For a PPC MBX board (note: line breaks are for readability only, they 33436don't appear in the actual output): 33437 33438@smallexample 33439(gdb) 33440-data-list-register-values r 64 65 33441^done,register-values=[@{number="64",value="0xfe00a300"@}, 33442@{number="65",value="0x00029002"@}] 33443(gdb) 33444-data-list-register-values x 33445^done,register-values=[@{number="0",value="0xfe0043c8"@}, 33446@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@}, 33447@{number="3",value="0x0"@},@{number="4",value="0xa"@}, 33448@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@}, 33449@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@}, 33450@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@}, 33451@{number="11",value="0x1"@},@{number="12",value="0x0"@}, 33452@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@}, 33453@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@}, 33454@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@}, 33455@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@}, 33456@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@}, 33457@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@}, 33458@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@}, 33459@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@}, 33460@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@}, 33461@{number="31",value="0x0"@},@{number="32",value="0x0"@}, 33462@{number="33",value="0x0"@},@{number="34",value="0x0"@}, 33463@{number="35",value="0x0"@},@{number="36",value="0x0"@}, 33464@{number="37",value="0x0"@},@{number="38",value="0x0"@}, 33465@{number="39",value="0x0"@},@{number="40",value="0x0"@}, 33466@{number="41",value="0x0"@},@{number="42",value="0x0"@}, 33467@{number="43",value="0x0"@},@{number="44",value="0x0"@}, 33468@{number="45",value="0x0"@},@{number="46",value="0x0"@}, 33469@{number="47",value="0x0"@},@{number="48",value="0x0"@}, 33470@{number="49",value="0x0"@},@{number="50",value="0x0"@}, 33471@{number="51",value="0x0"@},@{number="52",value="0x0"@}, 33472@{number="53",value="0x0"@},@{number="54",value="0x0"@}, 33473@{number="55",value="0x0"@},@{number="56",value="0x0"@}, 33474@{number="57",value="0x0"@},@{number="58",value="0x0"@}, 33475@{number="59",value="0x0"@},@{number="60",value="0x0"@}, 33476@{number="61",value="0x0"@},@{number="62",value="0x0"@}, 33477@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@}, 33478@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@}, 33479@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@}, 33480@{number="69",value="0x20002b03"@}] 33481(gdb) 33482@end smallexample 33483 33484 33485@subheading The @code{-data-read-memory} Command 33486@findex -data-read-memory 33487 33488This command is deprecated, use @code{-data-read-memory-bytes} instead. 33489 33490@subsubheading Synopsis 33491 33492@smallexample 33493 -data-read-memory [ -o @var{byte-offset} ] 33494 @var{address} @var{word-format} @var{word-size} 33495 @var{nr-rows} @var{nr-cols} [ @var{aschar} ] 33496@end smallexample 33497 33498@noindent 33499where: 33500 33501@table @samp 33502@item @var{address} 33503An expression specifying the address of the first memory word to be 33504read. Complex expressions containing embedded white space should be 33505quoted using the C convention. 33506 33507@item @var{word-format} 33508The format to be used to print the memory words. The notation is the 33509same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats, 33510,Output Formats}). 33511 33512@item @var{word-size} 33513The size of each memory word in bytes. 33514 33515@item @var{nr-rows} 33516The number of rows in the output table. 33517 33518@item @var{nr-cols} 33519The number of columns in the output table. 33520 33521@item @var{aschar} 33522If present, indicates that each row should include an @sc{ascii} dump. The 33523value of @var{aschar} is used as a padding character when a byte is not a 33524member of the printable @sc{ascii} character set (printable @sc{ascii} 33525characters are those whose code is between 32 and 126, inclusively). 33526 33527@item @var{byte-offset} 33528An offset to add to the @var{address} before fetching memory. 33529@end table 33530 33531This command displays memory contents as a table of @var{nr-rows} by 33532@var{nr-cols} words, each word being @var{word-size} bytes. In total, 33533@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read 33534(returned as @samp{total-bytes}). Should less than the requested number 33535of bytes be returned by the target, the missing words are identified 33536using @samp{N/A}. The number of bytes read from the target is returned 33537in @samp{nr-bytes} and the starting address used to read memory in 33538@samp{addr}. 33539 33540The address of the next/previous row or page is available in 33541@samp{next-row} and @samp{prev-row}, @samp{next-page} and 33542@samp{prev-page}. 33543 33544@subsubheading @value{GDBN} Command 33545 33546The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has 33547@samp{gdb_get_mem} memory read command. 33548 33549@subsubheading Example 33550 33551Read six bytes of memory starting at @code{bytes+6} but then offset by 33552@code{-6} bytes. Format as three rows of two columns. One byte per 33553word. Display each word in hex. 33554 33555@smallexample 33556(gdb) 335579-data-read-memory -o -6 -- bytes+6 x 1 3 2 335589^done,addr="0x00001390",nr-bytes="6",total-bytes="6", 33559next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396", 33560prev-page="0x0000138a",memory=[ 33561@{addr="0x00001390",data=["0x00","0x01"]@}, 33562@{addr="0x00001392",data=["0x02","0x03"]@}, 33563@{addr="0x00001394",data=["0x04","0x05"]@}] 33564(gdb) 33565@end smallexample 33566 33567Read two bytes of memory starting at address @code{shorts + 64} and 33568display as a single word formatted in decimal. 33569 33570@smallexample 33571(gdb) 335725-data-read-memory shorts+64 d 2 1 1 335735^done,addr="0x00001510",nr-bytes="2",total-bytes="2", 33574next-row="0x00001512",prev-row="0x0000150e", 33575next-page="0x00001512",prev-page="0x0000150e",memory=[ 33576@{addr="0x00001510",data=["128"]@}] 33577(gdb) 33578@end smallexample 33579 33580Read thirty two bytes of memory starting at @code{bytes+16} and format 33581as eight rows of four columns. Include a string encoding with @samp{x} 33582used as the non-printable character. 33583 33584@smallexample 33585(gdb) 335864-data-read-memory bytes+16 x 1 8 4 x 335874^done,addr="0x000013a0",nr-bytes="32",total-bytes="32", 33588next-row="0x000013c0",prev-row="0x0000139c", 33589next-page="0x000013c0",prev-page="0x00001380",memory=[ 33590@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@}, 33591@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@}, 33592@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@}, 33593@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@}, 33594@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@}, 33595@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@}, 33596@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@}, 33597@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}] 33598(gdb) 33599@end smallexample 33600 33601@subheading The @code{-data-read-memory-bytes} Command 33602@findex -data-read-memory-bytes 33603 33604@subsubheading Synopsis 33605 33606@smallexample 33607 -data-read-memory-bytes [ -o @var{byte-offset} ] 33608 @var{address} @var{count} 33609@end smallexample 33610 33611@noindent 33612where: 33613 33614@table @samp 33615@item @var{address} 33616An expression specifying the address of the first memory word to be 33617read. Complex expressions containing embedded white space should be 33618quoted using the C convention. 33619 33620@item @var{count} 33621The number of bytes to read. This should be an integer literal. 33622 33623@item @var{byte-offset} 33624The offsets in bytes relative to @var{address} at which to start 33625reading. This should be an integer literal. This option is provided 33626so that a frontend is not required to first evaluate address and then 33627perform address arithmetics itself. 33628 33629@end table 33630 33631This command attempts to read all accessible memory regions in the 33632specified range. First, all regions marked as unreadable in the memory 33633map (if one is defined) will be skipped. @xref{Memory Region 33634Attributes}. Second, @value{GDBN} will attempt to read the remaining 33635regions. For each one, if reading full region results in an errors, 33636@value{GDBN} will try to read a subset of the region. 33637 33638In general, every single byte in the region may be readable or not, 33639and the only way to read every readable byte is to try a read at 33640every address, which is not practical. Therefore, @value{GDBN} will 33641attempt to read all accessible bytes at either beginning or the end 33642of the region, using a binary division scheme. This heuristic works 33643well for reading accross a memory map boundary. Note that if a region 33644has a readable range that is neither at the beginning or the end, 33645@value{GDBN} will not read it. 33646 33647The result record (@pxref{GDB/MI Result Records}) that is output of 33648the command includes a field named @samp{memory} whose content is a 33649list of tuples. Each tuple represent a successfully read memory block 33650and has the following fields: 33651 33652@table @code 33653@item begin 33654The start address of the memory block, as hexadecimal literal. 33655 33656@item end 33657The end address of the memory block, as hexadecimal literal. 33658 33659@item offset 33660The offset of the memory block, as hexadecimal literal, relative to 33661the start address passed to @code{-data-read-memory-bytes}. 33662 33663@item contents 33664The contents of the memory block, in hex. 33665 33666@end table 33667 33668 33669 33670@subsubheading @value{GDBN} Command 33671 33672The corresponding @value{GDBN} command is @samp{x}. 33673 33674@subsubheading Example 33675 33676@smallexample 33677(gdb) 33678-data-read-memory-bytes &a 10 33679^done,memory=[@{begin="0xbffff154",offset="0x00000000", 33680 end="0xbffff15e", 33681 contents="01000000020000000300"@}] 33682(gdb) 33683@end smallexample 33684 33685 33686@subheading The @code{-data-write-memory-bytes} Command 33687@findex -data-write-memory-bytes 33688 33689@subsubheading Synopsis 33690 33691@smallexample 33692 -data-write-memory-bytes @var{address} @var{contents} 33693 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]} 33694@end smallexample 33695 33696@noindent 33697where: 33698 33699@table @samp 33700@item @var{address} 33701An expression specifying the address of the first memory word to be 33702read. Complex expressions containing embedded white space should be 33703quoted using the C convention. 33704 33705@item @var{contents} 33706The hex-encoded bytes to write. 33707 33708@item @var{count} 33709Optional argument indicating the number of bytes to be written. If @var{count} 33710is greater than @var{contents}' length, @value{GDBN} will repeatedly 33711write @var{contents} until it fills @var{count} bytes. 33712 33713@end table 33714 33715@subsubheading @value{GDBN} Command 33716 33717There's no corresponding @value{GDBN} command. 33718 33719@subsubheading Example 33720 33721@smallexample 33722(gdb) 33723-data-write-memory-bytes &a "aabbccdd" 33724^done 33725(gdb) 33726@end smallexample 33727 33728@smallexample 33729(gdb) 33730-data-write-memory-bytes &a "aabbccdd" 16e 33731^done 33732(gdb) 33733@end smallexample 33734 33735@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33736@node GDB/MI Tracepoint Commands 33737@section @sc{gdb/mi} Tracepoint Commands 33738 33739The commands defined in this section implement MI support for 33740tracepoints. For detailed introduction, see @ref{Tracepoints}. 33741 33742@subheading The @code{-trace-find} Command 33743@findex -trace-find 33744 33745@subsubheading Synopsis 33746 33747@smallexample 33748 -trace-find @var{mode} [@var{parameters}@dots{}] 33749@end smallexample 33750 33751Find a trace frame using criteria defined by @var{mode} and 33752@var{parameters}. The following table lists permissible 33753modes and their parameters. For details of operation, see @ref{tfind}. 33754 33755@table @samp 33756 33757@item none 33758No parameters are required. Stops examining trace frames. 33759 33760@item frame-number 33761An integer is required as parameter. Selects tracepoint frame with 33762that index. 33763 33764@item tracepoint-number 33765An integer is required as parameter. Finds next 33766trace frame that corresponds to tracepoint with the specified number. 33767 33768@item pc 33769An address is required as parameter. Finds 33770next trace frame that corresponds to any tracepoint at the specified 33771address. 33772 33773@item pc-inside-range 33774Two addresses are required as parameters. Finds next trace 33775frame that corresponds to a tracepoint at an address inside the 33776specified range. Both bounds are considered to be inside the range. 33777 33778@item pc-outside-range 33779Two addresses are required as parameters. Finds 33780next trace frame that corresponds to a tracepoint at an address outside 33781the specified range. Both bounds are considered to be inside the range. 33782 33783@item line 33784Line specification is required as parameter. @xref{Specify Location}. 33785Finds next trace frame that corresponds to a tracepoint at 33786the specified location. 33787 33788@end table 33789 33790If @samp{none} was passed as @var{mode}, the response does not 33791have fields. Otherwise, the response may have the following fields: 33792 33793@table @samp 33794@item found 33795This field has either @samp{0} or @samp{1} as the value, depending 33796on whether a matching tracepoint was found. 33797 33798@item traceframe 33799The index of the found traceframe. This field is present iff 33800the @samp{found} field has value of @samp{1}. 33801 33802@item tracepoint 33803The index of the found tracepoint. This field is present iff 33804the @samp{found} field has value of @samp{1}. 33805 33806@item frame 33807The information about the frame corresponding to the found trace 33808frame. This field is present only if a trace frame was found. 33809@xref{GDB/MI Frame Information}, for description of this field. 33810 33811@end table 33812 33813@subsubheading @value{GDBN} Command 33814 33815The corresponding @value{GDBN} command is @samp{tfind}. 33816 33817@subheading -trace-define-variable 33818@findex -trace-define-variable 33819 33820@subsubheading Synopsis 33821 33822@smallexample 33823 -trace-define-variable @var{name} [ @var{value} ] 33824@end smallexample 33825 33826Create trace variable @var{name} if it does not exist. If 33827@var{value} is specified, sets the initial value of the specified 33828trace variable to that value. Note that the @var{name} should start 33829with the @samp{$} character. 33830 33831@subsubheading @value{GDBN} Command 33832 33833The corresponding @value{GDBN} command is @samp{tvariable}. 33834 33835@subheading The @code{-trace-frame-collected} Command 33836@findex -trace-frame-collected 33837 33838@subsubheading Synopsis 33839 33840@smallexample 33841 -trace-frame-collected 33842 [--var-print-values @var{var_pval}] 33843 [--comp-print-values @var{comp_pval}] 33844 [--registers-format @var{regformat}] 33845 [--memory-contents] 33846@end smallexample 33847 33848This command returns the set of collected objects, register names, 33849trace state variable names, memory ranges and computed expressions 33850that have been collected at a particular trace frame. The optional 33851parameters to the command affect the output format in different ways. 33852See the output description table below for more details. 33853 33854The reported names can be used in the normal manner to create 33855varobjs and inspect the objects themselves. The items returned by 33856this command are categorized so that it is clear which is a variable, 33857which is a register, which is a trace state variable, which is a 33858memory range and which is a computed expression. 33859 33860For instance, if the actions were 33861@smallexample 33862collect myVar, myArray[myIndex], myObj.field, myPtr->field, myCount + 2 33863collect *(int*)0xaf02bef0@@40 33864@end smallexample 33865 33866@noindent 33867the object collected in its entirety would be @code{myVar}. The 33868object @code{myArray} would be partially collected, because only the 33869element at index @code{myIndex} would be collected. The remaining 33870objects would be computed expressions. 33871 33872An example output would be: 33873 33874@smallexample 33875(gdb) 33876-trace-frame-collected 33877^done, 33878 explicit-variables=[@{name="myVar",value="1"@}], 33879 computed-expressions=[@{name="myArray[myIndex]",value="0"@}, 33880 @{name="myObj.field",value="0"@}, 33881 @{name="myPtr->field",value="1"@}, 33882 @{name="myCount + 2",value="3"@}, 33883 @{name="$tvar1 + 1",value="43970027"@}], 33884 registers=[@{number="0",value="0x7fe2c6e79ec8"@}, 33885 @{number="1",value="0x0"@}, 33886 @{number="2",value="0x4"@}, 33887 ... 33888 @{number="125",value="0x0"@}], 33889 tvars=[@{name="$tvar1",current="43970026"@}], 33890 memory=[@{address="0x0000000000602264",length="4"@}, 33891 @{address="0x0000000000615bc0",length="4"@}] 33892(gdb) 33893@end smallexample 33894 33895Where: 33896 33897@table @code 33898@item explicit-variables 33899The set of objects that have been collected in their entirety (as 33900opposed to collecting just a few elements of an array or a few struct 33901members). For each object, its name and value are printed. 33902The @code{--var-print-values} option affects how or whether the value 33903field is output. If @var{var_pval} is 0, then print only the names; 33904if it is 1, print also their values; and if it is 2, print the name, 33905type and value for simple data types, and the name and type for 33906arrays, structures and unions. 33907 33908@item computed-expressions 33909The set of computed expressions that have been collected at the 33910current trace frame. The @code{--comp-print-values} option affects 33911this set like the @code{--var-print-values} option affects the 33912@code{explicit-variables} set. See above. 33913 33914@item registers 33915The registers that have been collected at the current trace frame. 33916For each register collected, the name and current value are returned. 33917The value is formatted according to the @code{--registers-format} 33918option. See the @command{-data-list-register-values} command for a 33919list of the allowed formats. The default is @samp{x}. 33920 33921@item tvars 33922The trace state variables that have been collected at the current 33923trace frame. For each trace state variable collected, the name and 33924current value are returned. 33925 33926@item memory 33927The set of memory ranges that have been collected at the current trace 33928frame. Its content is a list of tuples. Each tuple represents a 33929collected memory range and has the following fields: 33930 33931@table @code 33932@item address 33933The start address of the memory range, as hexadecimal literal. 33934 33935@item length 33936The length of the memory range, as decimal literal. 33937 33938@item contents 33939The contents of the memory block, in hex. This field is only present 33940if the @code{--memory-contents} option is specified. 33941 33942@end table 33943 33944@end table 33945 33946@subsubheading @value{GDBN} Command 33947 33948There is no corresponding @value{GDBN} command. 33949 33950@subsubheading Example 33951 33952@subheading -trace-list-variables 33953@findex -trace-list-variables 33954 33955@subsubheading Synopsis 33956 33957@smallexample 33958 -trace-list-variables 33959@end smallexample 33960 33961Return a table of all defined trace variables. Each element of the 33962table has the following fields: 33963 33964@table @samp 33965@item name 33966The name of the trace variable. This field is always present. 33967 33968@item initial 33969The initial value. This is a 64-bit signed integer. This 33970field is always present. 33971 33972@item current 33973The value the trace variable has at the moment. This is a 64-bit 33974signed integer. This field is absent iff current value is 33975not defined, for example if the trace was never run, or is 33976presently running. 33977 33978@end table 33979 33980@subsubheading @value{GDBN} Command 33981 33982The corresponding @value{GDBN} command is @samp{tvariables}. 33983 33984@subsubheading Example 33985 33986@smallexample 33987(gdb) 33988-trace-list-variables 33989^done,trace-variables=@{nr_rows="1",nr_cols="3", 33990hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@}, 33991 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@}, 33992 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}], 33993body=[variable=@{name="$trace_timestamp",initial="0"@} 33994 variable=@{name="$foo",initial="10",current="15"@}]@} 33995(gdb) 33996@end smallexample 33997 33998@subheading -trace-save 33999@findex -trace-save 34000 34001@subsubheading Synopsis 34002 34003@smallexample 34004 -trace-save [-r ] @var{filename} 34005@end smallexample 34006 34007Saves the collected trace data to @var{filename}. Without the 34008@samp{-r} option, the data is downloaded from the target and saved 34009in a local file. With the @samp{-r} option the target is asked 34010to perform the save. 34011 34012@subsubheading @value{GDBN} Command 34013 34014The corresponding @value{GDBN} command is @samp{tsave}. 34015 34016 34017@subheading -trace-start 34018@findex -trace-start 34019 34020@subsubheading Synopsis 34021 34022@smallexample 34023 -trace-start 34024@end smallexample 34025 34026Starts a tracing experiments. The result of this command does not 34027have any fields. 34028 34029@subsubheading @value{GDBN} Command 34030 34031The corresponding @value{GDBN} command is @samp{tstart}. 34032 34033@subheading -trace-status 34034@findex -trace-status 34035 34036@subsubheading Synopsis 34037 34038@smallexample 34039 -trace-status 34040@end smallexample 34041 34042Obtains the status of a tracing experiment. The result may include 34043the following fields: 34044 34045@table @samp 34046 34047@item supported 34048May have a value of either @samp{0}, when no tracing operations are 34049supported, @samp{1}, when all tracing operations are supported, or 34050@samp{file} when examining trace file. In the latter case, examining 34051of trace frame is possible but new tracing experiement cannot be 34052started. This field is always present. 34053 34054@item running 34055May have a value of either @samp{0} or @samp{1} depending on whether 34056tracing experiement is in progress on target. This field is present 34057if @samp{supported} field is not @samp{0}. 34058 34059@item stop-reason 34060Report the reason why the tracing was stopped last time. This field 34061may be absent iff tracing was never stopped on target yet. The 34062value of @samp{request} means the tracing was stopped as result of 34063the @code{-trace-stop} command. The value of @samp{overflow} means 34064the tracing buffer is full. The value of @samp{disconnection} means 34065tracing was automatically stopped when @value{GDBN} has disconnected. 34066The value of @samp{passcount} means tracing was stopped when a 34067tracepoint was passed a maximal number of times for that tracepoint. 34068This field is present if @samp{supported} field is not @samp{0}. 34069 34070@item stopping-tracepoint 34071The number of tracepoint whose passcount as exceeded. This field is 34072present iff the @samp{stop-reason} field has the value of 34073@samp{passcount}. 34074 34075@item frames 34076@itemx frames-created 34077The @samp{frames} field is a count of the total number of trace frames 34078in the trace buffer, while @samp{frames-created} is the total created 34079during the run, including ones that were discarded, such as when a 34080circular trace buffer filled up. Both fields are optional. 34081 34082@item buffer-size 34083@itemx buffer-free 34084These fields tell the current size of the tracing buffer and the 34085remaining space. These fields are optional. 34086 34087@item circular 34088The value of the circular trace buffer flag. @code{1} means that the 34089trace buffer is circular and old trace frames will be discarded if 34090necessary to make room, @code{0} means that the trace buffer is linear 34091and may fill up. 34092 34093@item disconnected 34094The value of the disconnected tracing flag. @code{1} means that 34095tracing will continue after @value{GDBN} disconnects, @code{0} means 34096that the trace run will stop. 34097 34098@item trace-file 34099The filename of the trace file being examined. This field is 34100optional, and only present when examining a trace file. 34101 34102@end table 34103 34104@subsubheading @value{GDBN} Command 34105 34106The corresponding @value{GDBN} command is @samp{tstatus}. 34107 34108@subheading -trace-stop 34109@findex -trace-stop 34110 34111@subsubheading Synopsis 34112 34113@smallexample 34114 -trace-stop 34115@end smallexample 34116 34117Stops a tracing experiment. The result of this command has the same 34118fields as @code{-trace-status}, except that the @samp{supported} and 34119@samp{running} fields are not output. 34120 34121@subsubheading @value{GDBN} Command 34122 34123The corresponding @value{GDBN} command is @samp{tstop}. 34124 34125 34126@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34127@node GDB/MI Symbol Query 34128@section @sc{gdb/mi} Symbol Query Commands 34129 34130 34131@ignore 34132@subheading The @code{-symbol-info-address} Command 34133@findex -symbol-info-address 34134 34135@subsubheading Synopsis 34136 34137@smallexample 34138 -symbol-info-address @var{symbol} 34139@end smallexample 34140 34141Describe where @var{symbol} is stored. 34142 34143@subsubheading @value{GDBN} Command 34144 34145The corresponding @value{GDBN} command is @samp{info address}. 34146 34147@subsubheading Example 34148N.A. 34149 34150 34151@subheading The @code{-symbol-info-file} Command 34152@findex -symbol-info-file 34153 34154@subsubheading Synopsis 34155 34156@smallexample 34157 -symbol-info-file 34158@end smallexample 34159 34160Show the file for the symbol. 34161 34162@subsubheading @value{GDBN} Command 34163 34164There's no equivalent @value{GDBN} command. @code{gdbtk} has 34165@samp{gdb_find_file}. 34166 34167@subsubheading Example 34168N.A. 34169 34170 34171@subheading The @code{-symbol-info-function} Command 34172@findex -symbol-info-function 34173 34174@subsubheading Synopsis 34175 34176@smallexample 34177 -symbol-info-function 34178@end smallexample 34179 34180Show which function the symbol lives in. 34181 34182@subsubheading @value{GDBN} Command 34183 34184@samp{gdb_get_function} in @code{gdbtk}. 34185 34186@subsubheading Example 34187N.A. 34188 34189 34190@subheading The @code{-symbol-info-line} Command 34191@findex -symbol-info-line 34192 34193@subsubheading Synopsis 34194 34195@smallexample 34196 -symbol-info-line 34197@end smallexample 34198 34199Show the core addresses of the code for a source line. 34200 34201@subsubheading @value{GDBN} Command 34202 34203The corresponding @value{GDBN} command is @samp{info line}. 34204@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands. 34205 34206@subsubheading Example 34207N.A. 34208 34209 34210@subheading The @code{-symbol-info-symbol} Command 34211@findex -symbol-info-symbol 34212 34213@subsubheading Synopsis 34214 34215@smallexample 34216 -symbol-info-symbol @var{addr} 34217@end smallexample 34218 34219Describe what symbol is at location @var{addr}. 34220 34221@subsubheading @value{GDBN} Command 34222 34223The corresponding @value{GDBN} command is @samp{info symbol}. 34224 34225@subsubheading Example 34226N.A. 34227 34228 34229@subheading The @code{-symbol-list-functions} Command 34230@findex -symbol-list-functions 34231 34232@subsubheading Synopsis 34233 34234@smallexample 34235 -symbol-list-functions 34236@end smallexample 34237 34238List the functions in the executable. 34239 34240@subsubheading @value{GDBN} Command 34241 34242@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and 34243@samp{gdb_search} in @code{gdbtk}. 34244 34245@subsubheading Example 34246N.A. 34247@end ignore 34248 34249 34250@subheading The @code{-symbol-list-lines} Command 34251@findex -symbol-list-lines 34252 34253@subsubheading Synopsis 34254 34255@smallexample 34256 -symbol-list-lines @var{filename} 34257@end smallexample 34258 34259Print the list of lines that contain code and their associated program 34260addresses for the given source filename. The entries are sorted in 34261ascending PC order. 34262 34263@subsubheading @value{GDBN} Command 34264 34265There is no corresponding @value{GDBN} command. 34266 34267@subsubheading Example 34268@smallexample 34269(gdb) 34270-symbol-list-lines basics.c 34271^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}] 34272(gdb) 34273@end smallexample 34274 34275 34276@ignore 34277@subheading The @code{-symbol-list-types} Command 34278@findex -symbol-list-types 34279 34280@subsubheading Synopsis 34281 34282@smallexample 34283 -symbol-list-types 34284@end smallexample 34285 34286List all the type names. 34287 34288@subsubheading @value{GDBN} Command 34289 34290The corresponding commands are @samp{info types} in @value{GDBN}, 34291@samp{gdb_search} in @code{gdbtk}. 34292 34293@subsubheading Example 34294N.A. 34295 34296 34297@subheading The @code{-symbol-list-variables} Command 34298@findex -symbol-list-variables 34299 34300@subsubheading Synopsis 34301 34302@smallexample 34303 -symbol-list-variables 34304@end smallexample 34305 34306List all the global and static variable names. 34307 34308@subsubheading @value{GDBN} Command 34309 34310@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}. 34311 34312@subsubheading Example 34313N.A. 34314 34315 34316@subheading The @code{-symbol-locate} Command 34317@findex -symbol-locate 34318 34319@subsubheading Synopsis 34320 34321@smallexample 34322 -symbol-locate 34323@end smallexample 34324 34325@subsubheading @value{GDBN} Command 34326 34327@samp{gdb_loc} in @code{gdbtk}. 34328 34329@subsubheading Example 34330N.A. 34331 34332 34333@subheading The @code{-symbol-type} Command 34334@findex -symbol-type 34335 34336@subsubheading Synopsis 34337 34338@smallexample 34339 -symbol-type @var{variable} 34340@end smallexample 34341 34342Show type of @var{variable}. 34343 34344@subsubheading @value{GDBN} Command 34345 34346The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has 34347@samp{gdb_obj_variable}. 34348 34349@subsubheading Example 34350N.A. 34351@end ignore 34352 34353 34354@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34355@node GDB/MI File Commands 34356@section @sc{gdb/mi} File Commands 34357 34358This section describes the GDB/MI commands to specify executable file names 34359and to read in and obtain symbol table information. 34360 34361@subheading The @code{-file-exec-and-symbols} Command 34362@findex -file-exec-and-symbols 34363 34364@subsubheading Synopsis 34365 34366@smallexample 34367 -file-exec-and-symbols @var{file} 34368@end smallexample 34369 34370Specify the executable file to be debugged. This file is the one from 34371which the symbol table is also read. If no file is specified, the 34372command clears the executable and symbol information. If breakpoints 34373are set when using this command with no arguments, @value{GDBN} will produce 34374error messages. Otherwise, no output is produced, except a completion 34375notification. 34376 34377@subsubheading @value{GDBN} Command 34378 34379The corresponding @value{GDBN} command is @samp{file}. 34380 34381@subsubheading Example 34382 34383@smallexample 34384(gdb) 34385-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 34386^done 34387(gdb) 34388@end smallexample 34389 34390 34391@subheading The @code{-file-exec-file} Command 34392@findex -file-exec-file 34393 34394@subsubheading Synopsis 34395 34396@smallexample 34397 -file-exec-file @var{file} 34398@end smallexample 34399 34400Specify the executable file to be debugged. Unlike 34401@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read 34402from this file. If used without argument, @value{GDBN} clears the information 34403about the executable file. No output is produced, except a completion 34404notification. 34405 34406@subsubheading @value{GDBN} Command 34407 34408The corresponding @value{GDBN} command is @samp{exec-file}. 34409 34410@subsubheading Example 34411 34412@smallexample 34413(gdb) 34414-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 34415^done 34416(gdb) 34417@end smallexample 34418 34419 34420@ignore 34421@subheading The @code{-file-list-exec-sections} Command 34422@findex -file-list-exec-sections 34423 34424@subsubheading Synopsis 34425 34426@smallexample 34427 -file-list-exec-sections 34428@end smallexample 34429 34430List the sections of the current executable file. 34431 34432@subsubheading @value{GDBN} Command 34433 34434The @value{GDBN} command @samp{info file} shows, among the rest, the same 34435information as this command. @code{gdbtk} has a corresponding command 34436@samp{gdb_load_info}. 34437 34438@subsubheading Example 34439N.A. 34440@end ignore 34441 34442 34443@subheading The @code{-file-list-exec-source-file} Command 34444@findex -file-list-exec-source-file 34445 34446@subsubheading Synopsis 34447 34448@smallexample 34449 -file-list-exec-source-file 34450@end smallexample 34451 34452List the line number, the current source file, and the absolute path 34453to the current source file for the current executable. The macro 34454information field has a value of @samp{1} or @samp{0} depending on 34455whether or not the file includes preprocessor macro information. 34456 34457@subsubheading @value{GDBN} Command 34458 34459The @value{GDBN} equivalent is @samp{info source} 34460 34461@subsubheading Example 34462 34463@smallexample 34464(gdb) 34465123-file-list-exec-source-file 34466123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1" 34467(gdb) 34468@end smallexample 34469 34470 34471@subheading The @code{-file-list-exec-source-files} Command 34472@findex -file-list-exec-source-files 34473 34474@subsubheading Synopsis 34475 34476@smallexample 34477 -file-list-exec-source-files 34478@end smallexample 34479 34480List the source files for the current executable. 34481 34482It will always output both the filename and fullname (absolute file 34483name) of a source file. 34484 34485@subsubheading @value{GDBN} Command 34486 34487The @value{GDBN} equivalent is @samp{info sources}. 34488@code{gdbtk} has an analogous command @samp{gdb_listfiles}. 34489 34490@subsubheading Example 34491@smallexample 34492(gdb) 34493-file-list-exec-source-files 34494^done,files=[ 34495@{file=foo.c,fullname=/home/foo.c@}, 34496@{file=/home/bar.c,fullname=/home/bar.c@}, 34497@{file=gdb_could_not_find_fullpath.c@}] 34498(gdb) 34499@end smallexample 34500 34501@ignore 34502@subheading The @code{-file-list-shared-libraries} Command 34503@findex -file-list-shared-libraries 34504 34505@subsubheading Synopsis 34506 34507@smallexample 34508 -file-list-shared-libraries 34509@end smallexample 34510 34511List the shared libraries in the program. 34512 34513@subsubheading @value{GDBN} Command 34514 34515The corresponding @value{GDBN} command is @samp{info shared}. 34516 34517@subsubheading Example 34518N.A. 34519 34520 34521@subheading The @code{-file-list-symbol-files} Command 34522@findex -file-list-symbol-files 34523 34524@subsubheading Synopsis 34525 34526@smallexample 34527 -file-list-symbol-files 34528@end smallexample 34529 34530List symbol files. 34531 34532@subsubheading @value{GDBN} Command 34533 34534The corresponding @value{GDBN} command is @samp{info file} (part of it). 34535 34536@subsubheading Example 34537N.A. 34538@end ignore 34539 34540 34541@subheading The @code{-file-symbol-file} Command 34542@findex -file-symbol-file 34543 34544@subsubheading Synopsis 34545 34546@smallexample 34547 -file-symbol-file @var{file} 34548@end smallexample 34549 34550Read symbol table info from the specified @var{file} argument. When 34551used without arguments, clears @value{GDBN}'s symbol table info. No output is 34552produced, except for a completion notification. 34553 34554@subsubheading @value{GDBN} Command 34555 34556The corresponding @value{GDBN} command is @samp{symbol-file}. 34557 34558@subsubheading Example 34559 34560@smallexample 34561(gdb) 34562-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 34563^done 34564(gdb) 34565@end smallexample 34566 34567@ignore 34568@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34569@node GDB/MI Memory Overlay Commands 34570@section @sc{gdb/mi} Memory Overlay Commands 34571 34572The memory overlay commands are not implemented. 34573 34574@c @subheading -overlay-auto 34575 34576@c @subheading -overlay-list-mapping-state 34577 34578@c @subheading -overlay-list-overlays 34579 34580@c @subheading -overlay-map 34581 34582@c @subheading -overlay-off 34583 34584@c @subheading -overlay-on 34585 34586@c @subheading -overlay-unmap 34587 34588@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34589@node GDB/MI Signal Handling Commands 34590@section @sc{gdb/mi} Signal Handling Commands 34591 34592Signal handling commands are not implemented. 34593 34594@c @subheading -signal-handle 34595 34596@c @subheading -signal-list-handle-actions 34597 34598@c @subheading -signal-list-signal-types 34599@end ignore 34600 34601 34602@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34603@node GDB/MI Target Manipulation 34604@section @sc{gdb/mi} Target Manipulation Commands 34605 34606 34607@subheading The @code{-target-attach} Command 34608@findex -target-attach 34609 34610@subsubheading Synopsis 34611 34612@smallexample 34613 -target-attach @var{pid} | @var{gid} | @var{file} 34614@end smallexample 34615 34616Attach to a process @var{pid} or a file @var{file} outside of 34617@value{GDBN}, or a thread group @var{gid}. If attaching to a thread 34618group, the id previously returned by 34619@samp{-list-thread-groups --available} must be used. 34620 34621@subsubheading @value{GDBN} Command 34622 34623The corresponding @value{GDBN} command is @samp{attach}. 34624 34625@subsubheading Example 34626@smallexample 34627(gdb) 34628-target-attach 34 34629=thread-created,id="1" 34630*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@} 34631^done 34632(gdb) 34633@end smallexample 34634 34635@ignore 34636@subheading The @code{-target-compare-sections} Command 34637@findex -target-compare-sections 34638 34639@subsubheading Synopsis 34640 34641@smallexample 34642 -target-compare-sections [ @var{section} ] 34643@end smallexample 34644 34645Compare data of section @var{section} on target to the exec file. 34646Without the argument, all sections are compared. 34647 34648@subsubheading @value{GDBN} Command 34649 34650The @value{GDBN} equivalent is @samp{compare-sections}. 34651 34652@subsubheading Example 34653N.A. 34654@end ignore 34655 34656 34657@subheading The @code{-target-detach} Command 34658@findex -target-detach 34659 34660@subsubheading Synopsis 34661 34662@smallexample 34663 -target-detach [ @var{pid} | @var{gid} ] 34664@end smallexample 34665 34666Detach from the remote target which normally resumes its execution. 34667If either @var{pid} or @var{gid} is specified, detaches from either 34668the specified process, or specified thread group. There's no output. 34669 34670@subsubheading @value{GDBN} Command 34671 34672The corresponding @value{GDBN} command is @samp{detach}. 34673 34674@subsubheading Example 34675 34676@smallexample 34677(gdb) 34678-target-detach 34679^done 34680(gdb) 34681@end smallexample 34682 34683 34684@subheading The @code{-target-disconnect} Command 34685@findex -target-disconnect 34686 34687@subsubheading Synopsis 34688 34689@smallexample 34690 -target-disconnect 34691@end smallexample 34692 34693Disconnect from the remote target. There's no output and the target is 34694generally not resumed. 34695 34696@subsubheading @value{GDBN} Command 34697 34698The corresponding @value{GDBN} command is @samp{disconnect}. 34699 34700@subsubheading Example 34701 34702@smallexample 34703(gdb) 34704-target-disconnect 34705^done 34706(gdb) 34707@end smallexample 34708 34709 34710@subheading The @code{-target-download} Command 34711@findex -target-download 34712 34713@subsubheading Synopsis 34714 34715@smallexample 34716 -target-download 34717@end smallexample 34718 34719Loads the executable onto the remote target. 34720It prints out an update message every half second, which includes the fields: 34721 34722@table @samp 34723@item section 34724The name of the section. 34725@item section-sent 34726The size of what has been sent so far for that section. 34727@item section-size 34728The size of the section. 34729@item total-sent 34730The total size of what was sent so far (the current and the previous sections). 34731@item total-size 34732The size of the overall executable to download. 34733@end table 34734 34735@noindent 34736Each message is sent as status record (@pxref{GDB/MI Output Syntax, , 34737@sc{gdb/mi} Output Syntax}). 34738 34739In addition, it prints the name and size of the sections, as they are 34740downloaded. These messages include the following fields: 34741 34742@table @samp 34743@item section 34744The name of the section. 34745@item section-size 34746The size of the section. 34747@item total-size 34748The size of the overall executable to download. 34749@end table 34750 34751@noindent 34752At the end, a summary is printed. 34753 34754@subsubheading @value{GDBN} Command 34755 34756The corresponding @value{GDBN} command is @samp{load}. 34757 34758@subsubheading Example 34759 34760Note: each status message appears on a single line. Here the messages 34761have been broken down so that they can fit onto a page. 34762 34763@smallexample 34764(gdb) 34765-target-download 34766+download,@{section=".text",section-size="6668",total-size="9880"@} 34767+download,@{section=".text",section-sent="512",section-size="6668", 34768total-sent="512",total-size="9880"@} 34769+download,@{section=".text",section-sent="1024",section-size="6668", 34770total-sent="1024",total-size="9880"@} 34771+download,@{section=".text",section-sent="1536",section-size="6668", 34772total-sent="1536",total-size="9880"@} 34773+download,@{section=".text",section-sent="2048",section-size="6668", 34774total-sent="2048",total-size="9880"@} 34775+download,@{section=".text",section-sent="2560",section-size="6668", 34776total-sent="2560",total-size="9880"@} 34777+download,@{section=".text",section-sent="3072",section-size="6668", 34778total-sent="3072",total-size="9880"@} 34779+download,@{section=".text",section-sent="3584",section-size="6668", 34780total-sent="3584",total-size="9880"@} 34781+download,@{section=".text",section-sent="4096",section-size="6668", 34782total-sent="4096",total-size="9880"@} 34783+download,@{section=".text",section-sent="4608",section-size="6668", 34784total-sent="4608",total-size="9880"@} 34785+download,@{section=".text",section-sent="5120",section-size="6668", 34786total-sent="5120",total-size="9880"@} 34787+download,@{section=".text",section-sent="5632",section-size="6668", 34788total-sent="5632",total-size="9880"@} 34789+download,@{section=".text",section-sent="6144",section-size="6668", 34790total-sent="6144",total-size="9880"@} 34791+download,@{section=".text",section-sent="6656",section-size="6668", 34792total-sent="6656",total-size="9880"@} 34793+download,@{section=".init",section-size="28",total-size="9880"@} 34794+download,@{section=".fini",section-size="28",total-size="9880"@} 34795+download,@{section=".data",section-size="3156",total-size="9880"@} 34796+download,@{section=".data",section-sent="512",section-size="3156", 34797total-sent="7236",total-size="9880"@} 34798+download,@{section=".data",section-sent="1024",section-size="3156", 34799total-sent="7748",total-size="9880"@} 34800+download,@{section=".data",section-sent="1536",section-size="3156", 34801total-sent="8260",total-size="9880"@} 34802+download,@{section=".data",section-sent="2048",section-size="3156", 34803total-sent="8772",total-size="9880"@} 34804+download,@{section=".data",section-sent="2560",section-size="3156", 34805total-sent="9284",total-size="9880"@} 34806+download,@{section=".data",section-sent="3072",section-size="3156", 34807total-sent="9796",total-size="9880"@} 34808^done,address="0x10004",load-size="9880",transfer-rate="6586", 34809write-rate="429" 34810(gdb) 34811@end smallexample 34812 34813 34814@ignore 34815@subheading The @code{-target-exec-status} Command 34816@findex -target-exec-status 34817 34818@subsubheading Synopsis 34819 34820@smallexample 34821 -target-exec-status 34822@end smallexample 34823 34824Provide information on the state of the target (whether it is running or 34825not, for instance). 34826 34827@subsubheading @value{GDBN} Command 34828 34829There's no equivalent @value{GDBN} command. 34830 34831@subsubheading Example 34832N.A. 34833 34834 34835@subheading The @code{-target-list-available-targets} Command 34836@findex -target-list-available-targets 34837 34838@subsubheading Synopsis 34839 34840@smallexample 34841 -target-list-available-targets 34842@end smallexample 34843 34844List the possible targets to connect to. 34845 34846@subsubheading @value{GDBN} Command 34847 34848The corresponding @value{GDBN} command is @samp{help target}. 34849 34850@subsubheading Example 34851N.A. 34852 34853 34854@subheading The @code{-target-list-current-targets} Command 34855@findex -target-list-current-targets 34856 34857@subsubheading Synopsis 34858 34859@smallexample 34860 -target-list-current-targets 34861@end smallexample 34862 34863Describe the current target. 34864 34865@subsubheading @value{GDBN} Command 34866 34867The corresponding information is printed by @samp{info file} (among 34868other things). 34869 34870@subsubheading Example 34871N.A. 34872 34873 34874@subheading The @code{-target-list-parameters} Command 34875@findex -target-list-parameters 34876 34877@subsubheading Synopsis 34878 34879@smallexample 34880 -target-list-parameters 34881@end smallexample 34882 34883@c ???? 34884@end ignore 34885 34886@subsubheading @value{GDBN} Command 34887 34888No equivalent. 34889 34890@subsubheading Example 34891N.A. 34892 34893 34894@subheading The @code{-target-select} Command 34895@findex -target-select 34896 34897@subsubheading Synopsis 34898 34899@smallexample 34900 -target-select @var{type} @var{parameters @dots{}} 34901@end smallexample 34902 34903Connect @value{GDBN} to the remote target. This command takes two args: 34904 34905@table @samp 34906@item @var{type} 34907The type of target, for instance @samp{remote}, etc. 34908@item @var{parameters} 34909Device names, host names and the like. @xref{Target Commands, , 34910Commands for Managing Targets}, for more details. 34911@end table 34912 34913The output is a connection notification, followed by the address at 34914which the target program is, in the following form: 34915 34916@smallexample 34917^connected,addr="@var{address}",func="@var{function name}", 34918 args=[@var{arg list}] 34919@end smallexample 34920 34921@subsubheading @value{GDBN} Command 34922 34923The corresponding @value{GDBN} command is @samp{target}. 34924 34925@subsubheading Example 34926 34927@smallexample 34928(gdb) 34929-target-select remote /dev/ttya 34930^connected,addr="0xfe00a300",func="??",args=[] 34931(gdb) 34932@end smallexample 34933 34934@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34935@node GDB/MI File Transfer Commands 34936@section @sc{gdb/mi} File Transfer Commands 34937 34938 34939@subheading The @code{-target-file-put} Command 34940@findex -target-file-put 34941 34942@subsubheading Synopsis 34943 34944@smallexample 34945 -target-file-put @var{hostfile} @var{targetfile} 34946@end smallexample 34947 34948Copy file @var{hostfile} from the host system (the machine running 34949@value{GDBN}) to @var{targetfile} on the target system. 34950 34951@subsubheading @value{GDBN} Command 34952 34953The corresponding @value{GDBN} command is @samp{remote put}. 34954 34955@subsubheading Example 34956 34957@smallexample 34958(gdb) 34959-target-file-put localfile remotefile 34960^done 34961(gdb) 34962@end smallexample 34963 34964 34965@subheading The @code{-target-file-get} Command 34966@findex -target-file-get 34967 34968@subsubheading Synopsis 34969 34970@smallexample 34971 -target-file-get @var{targetfile} @var{hostfile} 34972@end smallexample 34973 34974Copy file @var{targetfile} from the target system to @var{hostfile} 34975on the host system. 34976 34977@subsubheading @value{GDBN} Command 34978 34979The corresponding @value{GDBN} command is @samp{remote get}. 34980 34981@subsubheading Example 34982 34983@smallexample 34984(gdb) 34985-target-file-get remotefile localfile 34986^done 34987(gdb) 34988@end smallexample 34989 34990 34991@subheading The @code{-target-file-delete} Command 34992@findex -target-file-delete 34993 34994@subsubheading Synopsis 34995 34996@smallexample 34997 -target-file-delete @var{targetfile} 34998@end smallexample 34999 35000Delete @var{targetfile} from the target system. 35001 35002@subsubheading @value{GDBN} Command 35003 35004The corresponding @value{GDBN} command is @samp{remote delete}. 35005 35006@subsubheading Example 35007 35008@smallexample 35009(gdb) 35010-target-file-delete remotefile 35011^done 35012(gdb) 35013@end smallexample 35014 35015 35016@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35017@node GDB/MI Ada Exceptions Commands 35018@section Ada Exceptions @sc{gdb/mi} Commands 35019 35020@subheading The @code{-info-ada-exceptions} Command 35021@findex -info-ada-exceptions 35022 35023@subsubheading Synopsis 35024 35025@smallexample 35026 -info-ada-exceptions [ @var{regexp}] 35027@end smallexample 35028 35029List all Ada exceptions defined within the program being debugged. 35030With a regular expression @var{regexp}, only those exceptions whose 35031names match @var{regexp} are listed. 35032 35033@subsubheading @value{GDBN} Command 35034 35035The corresponding @value{GDBN} command is @samp{info exceptions}. 35036 35037@subsubheading Result 35038 35039The result is a table of Ada exceptions. The following columns are 35040defined for each exception: 35041 35042@table @samp 35043@item name 35044The name of the exception. 35045 35046@item address 35047The address of the exception. 35048 35049@end table 35050 35051@subsubheading Example 35052 35053@smallexample 35054-info-ada-exceptions aint 35055^done,ada-exceptions=@{nr_rows="2",nr_cols="2", 35056hdr=[@{width="1",alignment="-1",col_name="name",colhdr="Name"@}, 35057@{width="1",alignment="-1",col_name="address",colhdr="Address"@}], 35058body=[@{name="constraint_error",address="0x0000000000613da0"@}, 35059@{name="const.aint_global_e",address="0x0000000000613b00"@}]@} 35060@end smallexample 35061 35062@subheading Catching Ada Exceptions 35063 35064The commands describing how to ask @value{GDBN} to stop when a program 35065raises an exception are described at @ref{Ada Exception GDB/MI 35066Catchpoint Commands}. 35067 35068 35069@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35070@node GDB/MI Support Commands 35071@section @sc{gdb/mi} Support Commands 35072 35073Since new commands and features get regularly added to @sc{gdb/mi}, 35074some commands are available to help front-ends query the debugger 35075about support for these capabilities. Similarly, it is also possible 35076to query @value{GDBN} about target support of certain features. 35077 35078@subheading The @code{-info-gdb-mi-command} Command 35079@cindex @code{-info-gdb-mi-command} 35080@findex -info-gdb-mi-command 35081 35082@subsubheading Synopsis 35083 35084@smallexample 35085 -info-gdb-mi-command @var{cmd_name} 35086@end smallexample 35087 35088Query support for the @sc{gdb/mi} command named @var{cmd_name}. 35089 35090Note that the dash (@code{-}) starting all @sc{gdb/mi} commands 35091is technically not part of the command name (@pxref{GDB/MI Input 35092Syntax}), and thus should be omitted in @var{cmd_name}. However, 35093for ease of use, this command also accepts the form with the leading 35094dash. 35095 35096@subsubheading @value{GDBN} Command 35097 35098There is no corresponding @value{GDBN} command. 35099 35100@subsubheading Result 35101 35102The result is a tuple. There is currently only one field: 35103 35104@table @samp 35105@item exists 35106This field is equal to @code{"true"} if the @sc{gdb/mi} command exists, 35107@code{"false"} otherwise. 35108 35109@end table 35110 35111@subsubheading Example 35112 35113Here is an example where the @sc{gdb/mi} command does not exist: 35114 35115@smallexample 35116-info-gdb-mi-command unsupported-command 35117^done,command=@{exists="false"@} 35118@end smallexample 35119 35120@noindent 35121And here is an example where the @sc{gdb/mi} command is known 35122to the debugger: 35123 35124@smallexample 35125-info-gdb-mi-command symbol-list-lines 35126^done,command=@{exists="true"@} 35127@end smallexample 35128 35129@subheading The @code{-list-features} Command 35130@findex -list-features 35131@cindex supported @sc{gdb/mi} features, list 35132 35133Returns a list of particular features of the MI protocol that 35134this version of gdb implements. A feature can be a command, 35135or a new field in an output of some command, or even an 35136important bugfix. While a frontend can sometimes detect presence 35137of a feature at runtime, it is easier to perform detection at debugger 35138startup. 35139 35140The command returns a list of strings, with each string naming an 35141available feature. Each returned string is just a name, it does not 35142have any internal structure. The list of possible feature names 35143is given below. 35144 35145Example output: 35146 35147@smallexample 35148(gdb) -list-features 35149^done,result=["feature1","feature2"] 35150@end smallexample 35151 35152The current list of features is: 35153 35154@ftable @samp 35155@item frozen-varobjs 35156Indicates support for the @code{-var-set-frozen} command, as well 35157as possible presense of the @code{frozen} field in the output 35158of @code{-varobj-create}. 35159@item pending-breakpoints 35160Indicates support for the @option{-f} option to the @code{-break-insert} 35161command. 35162@item python 35163Indicates Python scripting support, Python-based 35164pretty-printing commands, and possible presence of the 35165@samp{display_hint} field in the output of @code{-var-list-children} 35166@item thread-info 35167Indicates support for the @code{-thread-info} command. 35168@item data-read-memory-bytes 35169Indicates support for the @code{-data-read-memory-bytes} and the 35170@code{-data-write-memory-bytes} commands. 35171@item breakpoint-notifications 35172Indicates that changes to breakpoints and breakpoints created via the 35173CLI will be announced via async records. 35174@item ada-task-info 35175Indicates support for the @code{-ada-task-info} command. 35176@item language-option 35177Indicates that all @sc{gdb/mi} commands accept the @option{--language} 35178option (@pxref{Context management}). 35179@item info-gdb-mi-command 35180Indicates support for the @code{-info-gdb-mi-command} command. 35181@item undefined-command-error-code 35182Indicates support for the "undefined-command" error code in error result 35183records, produced when trying to execute an undefined @sc{gdb/mi} command 35184(@pxref{GDB/MI Result Records}). 35185@item exec-run-start-option 35186Indicates that the @code{-exec-run} command supports the @option{--start} 35187option (@pxref{GDB/MI Program Execution}). 35188@end ftable 35189 35190@subheading The @code{-list-target-features} Command 35191@findex -list-target-features 35192 35193Returns a list of particular features that are supported by the 35194target. Those features affect the permitted MI commands, but 35195unlike the features reported by the @code{-list-features} command, the 35196features depend on which target GDB is using at the moment. Whenever 35197a target can change, due to commands such as @code{-target-select}, 35198@code{-target-attach} or @code{-exec-run}, the list of target features 35199may change, and the frontend should obtain it again. 35200Example output: 35201 35202@smallexample 35203(gdb) -list-target-features 35204^done,result=["async"] 35205@end smallexample 35206 35207The current list of features is: 35208 35209@table @samp 35210@item async 35211Indicates that the target is capable of asynchronous command 35212execution, which means that @value{GDBN} will accept further commands 35213while the target is running. 35214 35215@item reverse 35216Indicates that the target is capable of reverse execution. 35217@xref{Reverse Execution}, for more information. 35218 35219@end table 35220 35221@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35222@node GDB/MI Miscellaneous Commands 35223@section Miscellaneous @sc{gdb/mi} Commands 35224 35225@c @subheading -gdb-complete 35226 35227@subheading The @code{-gdb-exit} Command 35228@findex -gdb-exit 35229 35230@subsubheading Synopsis 35231 35232@smallexample 35233 -gdb-exit 35234@end smallexample 35235 35236Exit @value{GDBN} immediately. 35237 35238@subsubheading @value{GDBN} Command 35239 35240Approximately corresponds to @samp{quit}. 35241 35242@subsubheading Example 35243 35244@smallexample 35245(gdb) 35246-gdb-exit 35247^exit 35248@end smallexample 35249 35250 35251@ignore 35252@subheading The @code{-exec-abort} Command 35253@findex -exec-abort 35254 35255@subsubheading Synopsis 35256 35257@smallexample 35258 -exec-abort 35259@end smallexample 35260 35261Kill the inferior running program. 35262 35263@subsubheading @value{GDBN} Command 35264 35265The corresponding @value{GDBN} command is @samp{kill}. 35266 35267@subsubheading Example 35268N.A. 35269@end ignore 35270 35271 35272@subheading The @code{-gdb-set} Command 35273@findex -gdb-set 35274 35275@subsubheading Synopsis 35276 35277@smallexample 35278 -gdb-set 35279@end smallexample 35280 35281Set an internal @value{GDBN} variable. 35282@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ????? 35283 35284@subsubheading @value{GDBN} Command 35285 35286The corresponding @value{GDBN} command is @samp{set}. 35287 35288@subsubheading Example 35289 35290@smallexample 35291(gdb) 35292-gdb-set $foo=3 35293^done 35294(gdb) 35295@end smallexample 35296 35297 35298@subheading The @code{-gdb-show} Command 35299@findex -gdb-show 35300 35301@subsubheading Synopsis 35302 35303@smallexample 35304 -gdb-show 35305@end smallexample 35306 35307Show the current value of a @value{GDBN} variable. 35308 35309@subsubheading @value{GDBN} Command 35310 35311The corresponding @value{GDBN} command is @samp{show}. 35312 35313@subsubheading Example 35314 35315@smallexample 35316(gdb) 35317-gdb-show annotate 35318^done,value="0" 35319(gdb) 35320@end smallexample 35321 35322@c @subheading -gdb-source 35323 35324 35325@subheading The @code{-gdb-version} Command 35326@findex -gdb-version 35327 35328@subsubheading Synopsis 35329 35330@smallexample 35331 -gdb-version 35332@end smallexample 35333 35334Show version information for @value{GDBN}. Used mostly in testing. 35335 35336@subsubheading @value{GDBN} Command 35337 35338The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by 35339default shows this information when you start an interactive session. 35340 35341@subsubheading Example 35342 35343@c This example modifies the actual output from GDB to avoid overfull 35344@c box in TeX. 35345@smallexample 35346(gdb) 35347-gdb-version 35348~GNU gdb 5.2.1 35349~Copyright 2000 Free Software Foundation, Inc. 35350~GDB is free software, covered by the GNU General Public License, and 35351~you are welcome to change it and/or distribute copies of it under 35352~ certain conditions. 35353~Type "show copying" to see the conditions. 35354~There is absolutely no warranty for GDB. Type "show warranty" for 35355~ details. 35356~This GDB was configured as 35357 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi". 35358^done 35359(gdb) 35360@end smallexample 35361 35362@subheading The @code{-list-thread-groups} Command 35363@findex -list-thread-groups 35364 35365@subheading Synopsis 35366 35367@smallexample 35368-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ] 35369@end smallexample 35370 35371Lists thread groups (@pxref{Thread groups}). When a single thread 35372group is passed as the argument, lists the children of that group. 35373When several thread group are passed, lists information about those 35374thread groups. Without any parameters, lists information about all 35375top-level thread groups. 35376 35377Normally, thread groups that are being debugged are reported. 35378With the @samp{--available} option, @value{GDBN} reports thread groups 35379available on the target. 35380 35381The output of this command may have either a @samp{threads} result or 35382a @samp{groups} result. The @samp{thread} result has a list of tuples 35383as value, with each tuple describing a thread (@pxref{GDB/MI Thread 35384Information}). The @samp{groups} result has a list of tuples as value, 35385each tuple describing a thread group. If top-level groups are 35386requested (that is, no parameter is passed), or when several groups 35387are passed, the output always has a @samp{groups} result. The format 35388of the @samp{group} result is described below. 35389 35390To reduce the number of roundtrips it's possible to list thread groups 35391together with their children, by passing the @samp{--recurse} option 35392and the recursion depth. Presently, only recursion depth of 1 is 35393permitted. If this option is present, then every reported thread group 35394will also include its children, either as @samp{group} or 35395@samp{threads} field. 35396 35397In general, any combination of option and parameters is permitted, with 35398the following caveats: 35399 35400@itemize @bullet 35401@item 35402When a single thread group is passed, the output will typically 35403be the @samp{threads} result. Because threads may not contain 35404anything, the @samp{recurse} option will be ignored. 35405 35406@item 35407When the @samp{--available} option is passed, limited information may 35408be available. In particular, the list of threads of a process might 35409be inaccessible. Further, specifying specific thread groups might 35410not give any performance advantage over listing all thread groups. 35411The frontend should assume that @samp{-list-thread-groups --available} 35412is always an expensive operation and cache the results. 35413 35414@end itemize 35415 35416The @samp{groups} result is a list of tuples, where each tuple may 35417have the following fields: 35418 35419@table @code 35420@item id 35421Identifier of the thread group. This field is always present. 35422The identifier is an opaque string; frontends should not try to 35423convert it to an integer, even though it might look like one. 35424 35425@item type 35426The type of the thread group. At present, only @samp{process} is a 35427valid type. 35428 35429@item pid 35430The target-specific process identifier. This field is only present 35431for thread groups of type @samp{process} and only if the process exists. 35432 35433@item num_children 35434The number of children this thread group has. This field may be 35435absent for an available thread group. 35436 35437@item threads 35438This field has a list of tuples as value, each tuple describing a 35439thread. It may be present if the @samp{--recurse} option is 35440specified, and it's actually possible to obtain the threads. 35441 35442@item cores 35443This field is a list of integers, each identifying a core that one 35444thread of the group is running on. This field may be absent if 35445such information is not available. 35446 35447@item executable 35448The name of the executable file that corresponds to this thread group. 35449The field is only present for thread groups of type @samp{process}, 35450and only if there is a corresponding executable file. 35451 35452@end table 35453 35454@subheading Example 35455 35456@smallexample 35457@value{GDBP} 35458-list-thread-groups 35459^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}] 35460-list-thread-groups 17 35461^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 35462 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@}, 35463@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 35464 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}], 35465 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]] 35466-list-thread-groups --available 35467^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}] 35468-list-thread-groups --available --recurse 1 35469 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 35470 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 35471 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..] 35472-list-thread-groups --available --recurse 1 17 18 35473^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 35474 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 35475 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...] 35476@end smallexample 35477 35478@subheading The @code{-info-os} Command 35479@findex -info-os 35480 35481@subsubheading Synopsis 35482 35483@smallexample 35484-info-os [ @var{type} ] 35485@end smallexample 35486 35487If no argument is supplied, the command returns a table of available 35488operating-system-specific information types. If one of these types is 35489supplied as an argument @var{type}, then the command returns a table 35490of data of that type. 35491 35492The types of information available depend on the target operating 35493system. 35494 35495@subsubheading @value{GDBN} Command 35496 35497The corresponding @value{GDBN} command is @samp{info os}. 35498 35499@subsubheading Example 35500 35501When run on a @sc{gnu}/Linux system, the output will look something 35502like this: 35503 35504@smallexample 35505@value{GDBP} 35506-info-os 35507^done,OSDataTable=@{nr_rows="9",nr_cols="3", 35508hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@}, 35509 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@}, 35510 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}], 35511body=[item=@{col0="processes",col1="Listing of all processes", 35512 col2="Processes"@}, 35513 item=@{col0="procgroups",col1="Listing of all process groups", 35514 col2="Process groups"@}, 35515 item=@{col0="threads",col1="Listing of all threads", 35516 col2="Threads"@}, 35517 item=@{col0="files",col1="Listing of all file descriptors", 35518 col2="File descriptors"@}, 35519 item=@{col0="sockets",col1="Listing of all internet-domain sockets", 35520 col2="Sockets"@}, 35521 item=@{col0="shm",col1="Listing of all shared-memory regions", 35522 col2="Shared-memory regions"@}, 35523 item=@{col0="semaphores",col1="Listing of all semaphores", 35524 col2="Semaphores"@}, 35525 item=@{col0="msg",col1="Listing of all message queues", 35526 col2="Message queues"@}, 35527 item=@{col0="modules",col1="Listing of all loaded kernel modules", 35528 col2="Kernel modules"@}]@} 35529@value{GDBP} 35530-info-os processes 35531^done,OSDataTable=@{nr_rows="190",nr_cols="4", 35532hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@}, 35533 @{width="10",alignment="-1",col_name="col1",colhdr="user"@}, 35534 @{width="10",alignment="-1",col_name="col2",colhdr="command"@}, 35535 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}], 35536body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@}, 35537 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@}, 35538 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@}, 35539 ... 35540 item=@{col0="26446",col1="stan",col2="bash",col3="0"@}, 35541 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@} 35542(gdb) 35543@end smallexample 35544 35545(Note that the MI output here includes a @code{"Title"} column that 35546does not appear in command-line @code{info os}; this column is useful 35547for MI clients that want to enumerate the types of data, such as in a 35548popup menu, but is needless clutter on the command line, and 35549@code{info os} omits it.) 35550 35551@subheading The @code{-add-inferior} Command 35552@findex -add-inferior 35553 35554@subheading Synopsis 35555 35556@smallexample 35557-add-inferior 35558@end smallexample 35559 35560Creates a new inferior (@pxref{Inferiors and Programs}). The created 35561inferior is not associated with any executable. Such association may 35562be established with the @samp{-file-exec-and-symbols} command 35563(@pxref{GDB/MI File Commands}). The command response has a single 35564field, @samp{inferior}, whose value is the identifier of the 35565thread group corresponding to the new inferior. 35566 35567@subheading Example 35568 35569@smallexample 35570@value{GDBP} 35571-add-inferior 35572^done,inferior="i3" 35573@end smallexample 35574 35575@subheading The @code{-interpreter-exec} Command 35576@findex -interpreter-exec 35577 35578@subheading Synopsis 35579 35580@smallexample 35581-interpreter-exec @var{interpreter} @var{command} 35582@end smallexample 35583@anchor{-interpreter-exec} 35584 35585Execute the specified @var{command} in the given @var{interpreter}. 35586 35587@subheading @value{GDBN} Command 35588 35589The corresponding @value{GDBN} command is @samp{interpreter-exec}. 35590 35591@subheading Example 35592 35593@smallexample 35594(gdb) 35595-interpreter-exec console "break main" 35596&"During symbol reading, couldn't parse type; debugger out of date?.\n" 35597&"During symbol reading, bad structure-type format.\n" 35598~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n" 35599^done 35600(gdb) 35601@end smallexample 35602 35603@subheading The @code{-inferior-tty-set} Command 35604@findex -inferior-tty-set 35605 35606@subheading Synopsis 35607 35608@smallexample 35609-inferior-tty-set /dev/pts/1 35610@end smallexample 35611 35612Set terminal for future runs of the program being debugged. 35613 35614@subheading @value{GDBN} Command 35615 35616The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1. 35617 35618@subheading Example 35619 35620@smallexample 35621(gdb) 35622-inferior-tty-set /dev/pts/1 35623^done 35624(gdb) 35625@end smallexample 35626 35627@subheading The @code{-inferior-tty-show} Command 35628@findex -inferior-tty-show 35629 35630@subheading Synopsis 35631 35632@smallexample 35633-inferior-tty-show 35634@end smallexample 35635 35636Show terminal for future runs of program being debugged. 35637 35638@subheading @value{GDBN} Command 35639 35640The corresponding @value{GDBN} command is @samp{show inferior-tty}. 35641 35642@subheading Example 35643 35644@smallexample 35645(gdb) 35646-inferior-tty-set /dev/pts/1 35647^done 35648(gdb) 35649-inferior-tty-show 35650^done,inferior_tty_terminal="/dev/pts/1" 35651(gdb) 35652@end smallexample 35653 35654@subheading The @code{-enable-timings} Command 35655@findex -enable-timings 35656 35657@subheading Synopsis 35658 35659@smallexample 35660-enable-timings [yes | no] 35661@end smallexample 35662 35663Toggle the printing of the wallclock, user and system times for an MI 35664command as a field in its output. This command is to help frontend 35665developers optimize the performance of their code. No argument is 35666equivalent to @samp{yes}. 35667 35668@subheading @value{GDBN} Command 35669 35670No equivalent. 35671 35672@subheading Example 35673 35674@smallexample 35675(gdb) 35676-enable-timings 35677^done 35678(gdb) 35679-break-insert main 35680^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 35681addr="0x080484ed",func="main",file="myprog.c", 35682fullname="/home/nickrob/myprog.c",line="73",thread-groups=["i1"], 35683times="0"@}, 35684time=@{wallclock="0.05185",user="0.00800",system="0.00000"@} 35685(gdb) 35686-enable-timings no 35687^done 35688(gdb) 35689-exec-run 35690^running 35691(gdb) 35692*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 35693frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@}, 35694@{name="argv",value="0xbfb60364"@}],file="myprog.c", 35695fullname="/home/nickrob/myprog.c",line="73"@} 35696(gdb) 35697@end smallexample 35698 35699@node Annotations 35700@chapter @value{GDBN} Annotations 35701 35702This chapter describes annotations in @value{GDBN}. Annotations were 35703designed to interface @value{GDBN} to graphical user interfaces or other 35704similar programs which want to interact with @value{GDBN} at a 35705relatively high level. 35706 35707The annotation mechanism has largely been superseded by @sc{gdb/mi} 35708(@pxref{GDB/MI}). 35709 35710@ignore 35711This is Edition @value{EDITION}, @value{DATE}. 35712@end ignore 35713 35714@menu 35715* Annotations Overview:: What annotations are; the general syntax. 35716* Server Prefix:: Issuing a command without affecting user state. 35717* Prompting:: Annotations marking @value{GDBN}'s need for input. 35718* Errors:: Annotations for error messages. 35719* Invalidation:: Some annotations describe things now invalid. 35720* Annotations for Running:: 35721 Whether the program is running, how it stopped, etc. 35722* Source Annotations:: Annotations describing source code. 35723@end menu 35724 35725@node Annotations Overview 35726@section What is an Annotation? 35727@cindex annotations 35728 35729Annotations start with a newline character, two @samp{control-z} 35730characters, and the name of the annotation. If there is no additional 35731information associated with this annotation, the name of the annotation 35732is followed immediately by a newline. If there is additional 35733information, the name of the annotation is followed by a space, the 35734additional information, and a newline. The additional information 35735cannot contain newline characters. 35736 35737Any output not beginning with a newline and two @samp{control-z} 35738characters denotes literal output from @value{GDBN}. Currently there is 35739no need for @value{GDBN} to output a newline followed by two 35740@samp{control-z} characters, but if there was such a need, the 35741annotations could be extended with an @samp{escape} annotation which 35742means those three characters as output. 35743 35744The annotation @var{level}, which is specified using the 35745@option{--annotate} command line option (@pxref{Mode Options}), controls 35746how much information @value{GDBN} prints together with its prompt, 35747values of expressions, source lines, and other types of output. Level 0 35748is for no annotations, level 1 is for use when @value{GDBN} is run as a 35749subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable 35750for programs that control @value{GDBN}, and level 2 annotations have 35751been made obsolete (@pxref{Limitations, , Limitations of the Annotation 35752Interface, annotate, GDB's Obsolete Annotations}). 35753 35754@table @code 35755@kindex set annotate 35756@item set annotate @var{level} 35757The @value{GDBN} command @code{set annotate} sets the level of 35758annotations to the specified @var{level}. 35759 35760@item show annotate 35761@kindex show annotate 35762Show the current annotation level. 35763@end table 35764 35765This chapter describes level 3 annotations. 35766 35767A simple example of starting up @value{GDBN} with annotations is: 35768 35769@smallexample 35770$ @kbd{gdb --annotate=3} 35771GNU gdb 6.0 35772Copyright 2003 Free Software Foundation, Inc. 35773GDB is free software, covered by the GNU General Public License, 35774and you are welcome to change it and/or distribute copies of it 35775under certain conditions. 35776Type "show copying" to see the conditions. 35777There is absolutely no warranty for GDB. Type "show warranty" 35778for details. 35779This GDB was configured as "i386-pc-linux-gnu" 35780 35781^Z^Zpre-prompt 35782(@value{GDBP}) 35783^Z^Zprompt 35784@kbd{quit} 35785 35786^Z^Zpost-prompt 35787$ 35788@end smallexample 35789 35790Here @samp{quit} is input to @value{GDBN}; the rest is output from 35791@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z} 35792denotes a @samp{control-z} character) are annotations; the rest is 35793output from @value{GDBN}. 35794 35795@node Server Prefix 35796@section The Server Prefix 35797@cindex server prefix 35798 35799If you prefix a command with @samp{server } then it will not affect 35800the command history, nor will it affect @value{GDBN}'s notion of which 35801command to repeat if @key{RET} is pressed on a line by itself. This 35802means that commands can be run behind a user's back by a front-end in 35803a transparent manner. 35804 35805The @code{server } prefix does not affect the recording of values into 35806the value history; to print a value without recording it into the 35807value history, use the @code{output} command instead of the 35808@code{print} command. 35809 35810Using this prefix also disables confirmation requests 35811(@pxref{confirmation requests}). 35812 35813@node Prompting 35814@section Annotation for @value{GDBN} Input 35815 35816@cindex annotations for prompts 35817When @value{GDBN} prompts for input, it annotates this fact so it is possible 35818to know when to send output, when the output from a given command is 35819over, etc. 35820 35821Different kinds of input each have a different @dfn{input type}. Each 35822input type has three annotations: a @code{pre-} annotation, which 35823denotes the beginning of any prompt which is being output, a plain 35824annotation, which denotes the end of the prompt, and then a @code{post-} 35825annotation which denotes the end of any echo which may (or may not) be 35826associated with the input. For example, the @code{prompt} input type 35827features the following annotations: 35828 35829@smallexample 35830^Z^Zpre-prompt 35831^Z^Zprompt 35832^Z^Zpost-prompt 35833@end smallexample 35834 35835The input types are 35836 35837@table @code 35838@findex pre-prompt annotation 35839@findex prompt annotation 35840@findex post-prompt annotation 35841@item prompt 35842When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt). 35843 35844@findex pre-commands annotation 35845@findex commands annotation 35846@findex post-commands annotation 35847@item commands 35848When @value{GDBN} prompts for a set of commands, like in the @code{commands} 35849command. The annotations are repeated for each command which is input. 35850 35851@findex pre-overload-choice annotation 35852@findex overload-choice annotation 35853@findex post-overload-choice annotation 35854@item overload-choice 35855When @value{GDBN} wants the user to select between various overloaded functions. 35856 35857@findex pre-query annotation 35858@findex query annotation 35859@findex post-query annotation 35860@item query 35861When @value{GDBN} wants the user to confirm a potentially dangerous operation. 35862 35863@findex pre-prompt-for-continue annotation 35864@findex prompt-for-continue annotation 35865@findex post-prompt-for-continue annotation 35866@item prompt-for-continue 35867When @value{GDBN} is asking the user to press return to continue. Note: Don't 35868expect this to work well; instead use @code{set height 0} to disable 35869prompting. This is because the counting of lines is buggy in the 35870presence of annotations. 35871@end table 35872 35873@node Errors 35874@section Errors 35875@cindex annotations for errors, warnings and interrupts 35876 35877@findex quit annotation 35878@smallexample 35879^Z^Zquit 35880@end smallexample 35881 35882This annotation occurs right before @value{GDBN} responds to an interrupt. 35883 35884@findex error annotation 35885@smallexample 35886^Z^Zerror 35887@end smallexample 35888 35889This annotation occurs right before @value{GDBN} responds to an error. 35890 35891Quit and error annotations indicate that any annotations which @value{GDBN} was 35892in the middle of may end abruptly. For example, if a 35893@code{value-history-begin} annotation is followed by a @code{error}, one 35894cannot expect to receive the matching @code{value-history-end}. One 35895cannot expect not to receive it either, however; an error annotation 35896does not necessarily mean that @value{GDBN} is immediately returning all the way 35897to the top level. 35898 35899@findex error-begin annotation 35900A quit or error annotation may be preceded by 35901 35902@smallexample 35903^Z^Zerror-begin 35904@end smallexample 35905 35906Any output between that and the quit or error annotation is the error 35907message. 35908 35909Warning messages are not yet annotated. 35910@c If we want to change that, need to fix warning(), type_error(), 35911@c range_error(), and possibly other places. 35912 35913@node Invalidation 35914@section Invalidation Notices 35915 35916@cindex annotations for invalidation messages 35917The following annotations say that certain pieces of state may have 35918changed. 35919 35920@table @code 35921@findex frames-invalid annotation 35922@item ^Z^Zframes-invalid 35923 35924The frames (for example, output from the @code{backtrace} command) may 35925have changed. 35926 35927@findex breakpoints-invalid annotation 35928@item ^Z^Zbreakpoints-invalid 35929 35930The breakpoints may have changed. For example, the user just added or 35931deleted a breakpoint. 35932@end table 35933 35934@node Annotations for Running 35935@section Running the Program 35936@cindex annotations for running programs 35937 35938@findex starting annotation 35939@findex stopping annotation 35940When the program starts executing due to a @value{GDBN} command such as 35941@code{step} or @code{continue}, 35942 35943@smallexample 35944^Z^Zstarting 35945@end smallexample 35946 35947is output. When the program stops, 35948 35949@smallexample 35950^Z^Zstopped 35951@end smallexample 35952 35953is output. Before the @code{stopped} annotation, a variety of 35954annotations describe how the program stopped. 35955 35956@table @code 35957@findex exited annotation 35958@item ^Z^Zexited @var{exit-status} 35959The program exited, and @var{exit-status} is the exit status (zero for 35960successful exit, otherwise nonzero). 35961 35962@findex signalled annotation 35963@findex signal-name annotation 35964@findex signal-name-end annotation 35965@findex signal-string annotation 35966@findex signal-string-end annotation 35967@item ^Z^Zsignalled 35968The program exited with a signal. After the @code{^Z^Zsignalled}, the 35969annotation continues: 35970 35971@smallexample 35972@var{intro-text} 35973^Z^Zsignal-name 35974@var{name} 35975^Z^Zsignal-name-end 35976@var{middle-text} 35977^Z^Zsignal-string 35978@var{string} 35979^Z^Zsignal-string-end 35980@var{end-text} 35981@end smallexample 35982 35983@noindent 35984where @var{name} is the name of the signal, such as @code{SIGILL} or 35985@code{SIGSEGV}, and @var{string} is the explanation of the signal, such 35986as @code{Illegal Instruction} or @code{Segmentation fault}. 35987@var{intro-text}, @var{middle-text}, and @var{end-text} are for the 35988user's benefit and have no particular format. 35989 35990@findex signal annotation 35991@item ^Z^Zsignal 35992The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is 35993just saying that the program received the signal, not that it was 35994terminated with it. 35995 35996@findex breakpoint annotation 35997@item ^Z^Zbreakpoint @var{number} 35998The program hit breakpoint number @var{number}. 35999 36000@findex watchpoint annotation 36001@item ^Z^Zwatchpoint @var{number} 36002The program hit watchpoint number @var{number}. 36003@end table 36004 36005@node Source Annotations 36006@section Displaying Source 36007@cindex annotations for source display 36008 36009@findex source annotation 36010The following annotation is used instead of displaying source code: 36011 36012@smallexample 36013^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr} 36014@end smallexample 36015 36016where @var{filename} is an absolute file name indicating which source 36017file, @var{line} is the line number within that file (where 1 is the 36018first line in the file), @var{character} is the character position 36019within the file (where 0 is the first character in the file) (for most 36020debug formats this will necessarily point to the beginning of a line), 36021@var{middle} is @samp{middle} if @var{addr} is in the middle of the 36022line, or @samp{beg} if @var{addr} is at the beginning of the line, and 36023@var{addr} is the address in the target program associated with the 36024source which is being displayed. @var{addr} is in the form @samp{0x} 36025followed by one or more lowercase hex digits (note that this does not 36026depend on the language). 36027 36028@node JIT Interface 36029@chapter JIT Compilation Interface 36030@cindex just-in-time compilation 36031@cindex JIT compilation interface 36032 36033This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation 36034interface. A JIT compiler is a program or library that generates native 36035executable code at runtime and executes it, usually in order to achieve good 36036performance while maintaining platform independence. 36037 36038Programs that use JIT compilation are normally difficult to debug because 36039portions of their code are generated at runtime, instead of being loaded from 36040object files, which is where @value{GDBN} normally finds the program's symbols 36041and debug information. In order to debug programs that use JIT compilation, 36042@value{GDBN} has an interface that allows the program to register in-memory 36043symbol files with @value{GDBN} at runtime. 36044 36045If you are using @value{GDBN} to debug a program that uses this interface, then 36046it should work transparently so long as you have not stripped the binary. If 36047you are developing a JIT compiler, then the interface is documented in the rest 36048of this chapter. At this time, the only known client of this interface is the 36049LLVM JIT. 36050 36051Broadly speaking, the JIT interface mirrors the dynamic loader interface. The 36052JIT compiler communicates with @value{GDBN} by writing data into a global 36053variable and calling a fuction at a well-known symbol. When @value{GDBN} 36054attaches, it reads a linked list of symbol files from the global variable to 36055find existing code, and puts a breakpoint in the function so that it can find 36056out about additional code. 36057 36058@menu 36059* Declarations:: Relevant C struct declarations 36060* Registering Code:: Steps to register code 36061* Unregistering Code:: Steps to unregister code 36062* Custom Debug Info:: Emit debug information in a custom format 36063@end menu 36064 36065@node Declarations 36066@section JIT Declarations 36067 36068These are the relevant struct declarations that a C program should include to 36069implement the interface: 36070 36071@smallexample 36072typedef enum 36073@{ 36074 JIT_NOACTION = 0, 36075 JIT_REGISTER_FN, 36076 JIT_UNREGISTER_FN 36077@} jit_actions_t; 36078 36079struct jit_code_entry 36080@{ 36081 struct jit_code_entry *next_entry; 36082 struct jit_code_entry *prev_entry; 36083 const char *symfile_addr; 36084 uint64_t symfile_size; 36085@}; 36086 36087struct jit_descriptor 36088@{ 36089 uint32_t version; 36090 /* This type should be jit_actions_t, but we use uint32_t 36091 to be explicit about the bitwidth. */ 36092 uint32_t action_flag; 36093 struct jit_code_entry *relevant_entry; 36094 struct jit_code_entry *first_entry; 36095@}; 36096 36097/* GDB puts a breakpoint in this function. */ 36098void __attribute__((noinline)) __jit_debug_register_code() @{ @}; 36099 36100/* Make sure to specify the version statically, because the 36101 debugger may check the version before we can set it. */ 36102struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @}; 36103@end smallexample 36104 36105If the JIT is multi-threaded, then it is important that the JIT synchronize any 36106modifications to this global data properly, which can easily be done by putting 36107a global mutex around modifications to these structures. 36108 36109@node Registering Code 36110@section Registering Code 36111 36112To register code with @value{GDBN}, the JIT should follow this protocol: 36113 36114@itemize @bullet 36115@item 36116Generate an object file in memory with symbols and other desired debug 36117information. The file must include the virtual addresses of the sections. 36118 36119@item 36120Create a code entry for the file, which gives the start and size of the symbol 36121file. 36122 36123@item 36124Add it to the linked list in the JIT descriptor. 36125 36126@item 36127Point the relevant_entry field of the descriptor at the entry. 36128 36129@item 36130Set @code{action_flag} to @code{JIT_REGISTER} and call 36131@code{__jit_debug_register_code}. 36132@end itemize 36133 36134When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the 36135@code{relevant_entry} pointer so it doesn't have to walk the list looking for 36136new code. However, the linked list must still be maintained in order to allow 36137@value{GDBN} to attach to a running process and still find the symbol files. 36138 36139@node Unregistering Code 36140@section Unregistering Code 36141 36142If code is freed, then the JIT should use the following protocol: 36143 36144@itemize @bullet 36145@item 36146Remove the code entry corresponding to the code from the linked list. 36147 36148@item 36149Point the @code{relevant_entry} field of the descriptor at the code entry. 36150 36151@item 36152Set @code{action_flag} to @code{JIT_UNREGISTER} and call 36153@code{__jit_debug_register_code}. 36154@end itemize 36155 36156If the JIT frees or recompiles code without unregistering it, then @value{GDBN} 36157and the JIT will leak the memory used for the associated symbol files. 36158 36159@node Custom Debug Info 36160@section Custom Debug Info 36161@cindex custom JIT debug info 36162@cindex JIT debug info reader 36163 36164Generating debug information in platform-native file formats (like ELF 36165or COFF) may be an overkill for JIT compilers; especially if all the 36166debug info is used for is displaying a meaningful backtrace. The 36167issue can be resolved by having the JIT writers decide on a debug info 36168format and also provide a reader that parses the debug info generated 36169by the JIT compiler. This section gives a brief overview on writing 36170such a parser. More specific details can be found in the source file 36171@file{gdb/jit-reader.in}, which is also installed as a header at 36172@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion. 36173 36174The reader is implemented as a shared object (so this functionality is 36175not available on platforms which don't allow loading shared objects at 36176runtime). Two @value{GDBN} commands, @code{jit-reader-load} and 36177@code{jit-reader-unload} are provided, to be used to load and unload 36178the readers from a preconfigured directory. Once loaded, the shared 36179object is used the parse the debug information emitted by the JIT 36180compiler. 36181 36182@menu 36183* Using JIT Debug Info Readers:: How to use supplied readers correctly 36184* Writing JIT Debug Info Readers:: Creating a debug-info reader 36185@end menu 36186 36187@node Using JIT Debug Info Readers 36188@subsection Using JIT Debug Info Readers 36189@kindex jit-reader-load 36190@kindex jit-reader-unload 36191 36192Readers can be loaded and unloaded using the @code{jit-reader-load} 36193and @code{jit-reader-unload} commands. 36194 36195@table @code 36196@item jit-reader-load @var{reader} 36197Load the JIT reader named @var{reader}. @var{reader} is a shared 36198object specified as either an absolute or a relative file name. In 36199the latter case, @value{GDBN} will try to load the reader from a 36200pre-configured directory, usually @file{@var{libdir}/gdb/} on a UNIX 36201system (here @var{libdir} is the system library directory, often 36202@file{/usr/local/lib}). 36203 36204Only one reader can be active at a time; trying to load a second 36205reader when one is already loaded will result in @value{GDBN} 36206reporting an error. A new JIT reader can be loaded by first unloading 36207the current one using @code{jit-reader-unload} and then invoking 36208@code{jit-reader-load}. 36209 36210@item jit-reader-unload 36211Unload the currently loaded JIT reader. 36212 36213@end table 36214 36215@node Writing JIT Debug Info Readers 36216@subsection Writing JIT Debug Info Readers 36217@cindex writing JIT debug info readers 36218 36219As mentioned, a reader is essentially a shared object conforming to a 36220certain ABI. This ABI is described in @file{jit-reader.h}. 36221 36222@file{jit-reader.h} defines the structures, macros and functions 36223required to write a reader. It is installed (along with 36224@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is 36225the system include directory. 36226 36227Readers need to be released under a GPL compatible license. A reader 36228can be declared as released under such a license by placing the macro 36229@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file. 36230 36231The entry point for readers is the symbol @code{gdb_init_reader}, 36232which is expected to be a function with the prototype 36233 36234@findex gdb_init_reader 36235@smallexample 36236extern struct gdb_reader_funcs *gdb_init_reader (void); 36237@end smallexample 36238 36239@cindex @code{struct gdb_reader_funcs} 36240 36241@code{struct gdb_reader_funcs} contains a set of pointers to callback 36242functions. These functions are executed to read the debug info 36243generated by the JIT compiler (@code{read}), to unwind stack frames 36244(@code{unwind}) and to create canonical frame IDs 36245(@code{get_Frame_id}). It also has a callback that is called when the 36246reader is being unloaded (@code{destroy}). The struct looks like this 36247 36248@smallexample 36249struct gdb_reader_funcs 36250@{ 36251 /* Must be set to GDB_READER_INTERFACE_VERSION. */ 36252 int reader_version; 36253 36254 /* For use by the reader. */ 36255 void *priv_data; 36256 36257 gdb_read_debug_info *read; 36258 gdb_unwind_frame *unwind; 36259 gdb_get_frame_id *get_frame_id; 36260 gdb_destroy_reader *destroy; 36261@}; 36262@end smallexample 36263 36264@cindex @code{struct gdb_symbol_callbacks} 36265@cindex @code{struct gdb_unwind_callbacks} 36266 36267The callbacks are provided with another set of callbacks by 36268@value{GDBN} to do their job. For @code{read}, these callbacks are 36269passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind} 36270and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}. 36271@code{struct gdb_symbol_callbacks} has callbacks to create new object 36272files and new symbol tables inside those object files. @code{struct 36273gdb_unwind_callbacks} has callbacks to read registers off the current 36274frame and to write out the values of the registers in the previous 36275frame. Both have a callback (@code{target_read}) to read bytes off the 36276target's address space. 36277 36278@node In-Process Agent 36279@chapter In-Process Agent 36280@cindex debugging agent 36281The traditional debugging model is conceptually low-speed, but works fine, 36282because most bugs can be reproduced in debugging-mode execution. However, 36283as multi-core or many-core processors are becoming mainstream, and 36284multi-threaded programs become more and more popular, there should be more 36285and more bugs that only manifest themselves at normal-mode execution, for 36286example, thread races, because debugger's interference with the program's 36287timing may conceal the bugs. On the other hand, in some applications, 36288it is not feasible for the debugger to interrupt the program's execution 36289long enough for the developer to learn anything helpful about its behavior. 36290If the program's correctness depends on its real-time behavior, delays 36291introduced by a debugger might cause the program to fail, even when the 36292code itself is correct. It is useful to be able to observe the program's 36293behavior without interrupting it. 36294 36295Therefore, traditional debugging model is too intrusive to reproduce 36296some bugs. In order to reduce the interference with the program, we can 36297reduce the number of operations performed by debugger. The 36298@dfn{In-Process Agent}, a shared library, is running within the same 36299process with inferior, and is able to perform some debugging operations 36300itself. As a result, debugger is only involved when necessary, and 36301performance of debugging can be improved accordingly. Note that 36302interference with program can be reduced but can't be removed completely, 36303because the in-process agent will still stop or slow down the program. 36304 36305The in-process agent can interpret and execute Agent Expressions 36306(@pxref{Agent Expressions}) during performing debugging operations. The 36307agent expressions can be used for different purposes, such as collecting 36308data in tracepoints, and condition evaluation in breakpoints. 36309 36310@anchor{Control Agent} 36311You can control whether the in-process agent is used as an aid for 36312debugging with the following commands: 36313 36314@table @code 36315@kindex set agent on 36316@item set agent on 36317Causes the in-process agent to perform some operations on behalf of the 36318debugger. Just which operations requested by the user will be done 36319by the in-process agent depends on the its capabilities. For example, 36320if you request to evaluate breakpoint conditions in the in-process agent, 36321and the in-process agent has such capability as well, then breakpoint 36322conditions will be evaluated in the in-process agent. 36323 36324@kindex set agent off 36325@item set agent off 36326Disables execution of debugging operations by the in-process agent. All 36327of the operations will be performed by @value{GDBN}. 36328 36329@kindex show agent 36330@item show agent 36331Display the current setting of execution of debugging operations by 36332the in-process agent. 36333@end table 36334 36335@menu 36336* In-Process Agent Protocol:: 36337@end menu 36338 36339@node In-Process Agent Protocol 36340@section In-Process Agent Protocol 36341@cindex in-process agent protocol 36342 36343The in-process agent is able to communicate with both @value{GDBN} and 36344GDBserver (@pxref{In-Process Agent}). This section documents the protocol 36345used for communications between @value{GDBN} or GDBserver and the IPA. 36346In general, @value{GDBN} or GDBserver sends commands 36347(@pxref{IPA Protocol Commands}) and data to in-process agent, and then 36348in-process agent replies back with the return result of the command, or 36349some other information. The data sent to in-process agent is composed 36350of primitive data types, such as 4-byte or 8-byte type, and composite 36351types, which are called objects (@pxref{IPA Protocol Objects}). 36352 36353@menu 36354* IPA Protocol Objects:: 36355* IPA Protocol Commands:: 36356@end menu 36357 36358@node IPA Protocol Objects 36359@subsection IPA Protocol Objects 36360@cindex ipa protocol objects 36361 36362The commands sent to and results received from agent may contain some 36363complex data types called @dfn{objects}. 36364 36365The in-process agent is running on the same machine with @value{GDBN} 36366or GDBserver, so it doesn't have to handle as much differences between 36367two ends as remote protocol (@pxref{Remote Protocol}) tries to handle. 36368However, there are still some differences of two ends in two processes: 36369 36370@enumerate 36371@item 36372word size. On some 64-bit machines, @value{GDBN} or GDBserver can be 36373compiled as a 64-bit executable, while in-process agent is a 32-bit one. 36374@item 36375ABI. Some machines may have multiple types of ABI, @value{GDBN} or 36376GDBserver is compiled with one, and in-process agent is compiled with 36377the other one. 36378@end enumerate 36379 36380Here are the IPA Protocol Objects: 36381 36382@enumerate 36383@item 36384agent expression object. It represents an agent expression 36385(@pxref{Agent Expressions}). 36386@anchor{agent expression object} 36387@item 36388tracepoint action object. It represents a tracepoint action 36389(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers, 36390memory, static trace data and to evaluate expression. 36391@anchor{tracepoint action object} 36392@item 36393tracepoint object. It represents a tracepoint (@pxref{Tracepoints}). 36394@anchor{tracepoint object} 36395 36396@end enumerate 36397 36398The following table describes important attributes of each IPA protocol 36399object: 36400 36401@multitable @columnfractions .30 .20 .50 36402@headitem Name @tab Size @tab Description 36403@item @emph{agent expression object} @tab @tab 36404@item length @tab 4 @tab length of bytes code 36405@item byte code @tab @var{length} @tab contents of byte code 36406@item @emph{tracepoint action for collecting memory} @tab @tab 36407@item 'M' @tab 1 @tab type of tracepoint action 36408@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the 36409address of the lowest byte to collect, otherwise @var{addr} is the offset 36410of @var{basereg} for memory collecting. 36411@item len @tab 8 @tab length of memory for collecting 36412@item basereg @tab 4 @tab the register number containing the starting 36413memory address for collecting. 36414@item @emph{tracepoint action for collecting registers} @tab @tab 36415@item 'R' @tab 1 @tab type of tracepoint action 36416@item @emph{tracepoint action for collecting static trace data} @tab @tab 36417@item 'L' @tab 1 @tab type of tracepoint action 36418@item @emph{tracepoint action for expression evaluation} @tab @tab 36419@item 'X' @tab 1 @tab type of tracepoint action 36420@item agent expression @tab length of @tab @ref{agent expression object} 36421@item @emph{tracepoint object} @tab @tab 36422@item number @tab 4 @tab number of tracepoint 36423@item address @tab 8 @tab address of tracepoint inserted on 36424@item type @tab 4 @tab type of tracepoint 36425@item enabled @tab 1 @tab enable or disable of tracepoint 36426@item step_count @tab 8 @tab step 36427@item pass_count @tab 8 @tab pass 36428@item numactions @tab 4 @tab number of tracepoint actions 36429@item hit count @tab 8 @tab hit count 36430@item trace frame usage @tab 8 @tab trace frame usage 36431@item compiled_cond @tab 8 @tab compiled condition 36432@item orig_size @tab 8 @tab orig size 36433@item condition @tab 4 if condition is NULL otherwise length of 36434@ref{agent expression object} 36435@tab zero if condition is NULL, otherwise is 36436@ref{agent expression object} 36437@item actions @tab variable 36438@tab numactions number of @ref{tracepoint action object} 36439@end multitable 36440 36441@node IPA Protocol Commands 36442@subsection IPA Protocol Commands 36443@cindex ipa protocol commands 36444 36445The spaces in each command are delimiters to ease reading this commands 36446specification. They don't exist in real commands. 36447 36448@table @samp 36449 36450@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head} 36451Installs a new fast tracepoint described by @var{tracepoint_object} 36452(@pxref{tracepoint object}). @var{gdb_jump_pad_head}, 8-byte long, is the 36453head of @dfn{jumppad}, which is used to jump to data collection routine 36454in IPA finally. 36455 36456Replies: 36457@table @samp 36458@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump} 36459@var{target_address} is address of tracepoint in the inferior. 36460@var{gdb_jump_pad_head} is updated head of jumppad. Both of 36461@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long. 36462@var{fjump} contains a sequence of instructions jump to jumppad entry. 36463@var{fjump_size}, 4-byte long, is the size of @var{fjump}. 36464@item E @var{NN} 36465for an error 36466 36467@end table 36468 36469@item close 36470Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver 36471is about to kill inferiors. 36472 36473@item qTfSTM 36474@xref{qTfSTM}. 36475@item qTsSTM 36476@xref{qTsSTM}. 36477@item qTSTMat 36478@xref{qTSTMat}. 36479@item probe_marker_at:@var{address} 36480Asks in-process agent to probe the marker at @var{address}. 36481 36482Replies: 36483@table @samp 36484@item E @var{NN} 36485for an error 36486@end table 36487@item unprobe_marker_at:@var{address} 36488Asks in-process agent to unprobe the marker at @var{address}. 36489@end table 36490 36491@node GDB Bugs 36492@chapter Reporting Bugs in @value{GDBN} 36493@cindex bugs in @value{GDBN} 36494@cindex reporting bugs in @value{GDBN} 36495 36496Your bug reports play an essential role in making @value{GDBN} reliable. 36497 36498Reporting a bug may help you by bringing a solution to your problem, or it 36499may not. But in any case the principal function of a bug report is to help 36500the entire community by making the next version of @value{GDBN} work better. Bug 36501reports are your contribution to the maintenance of @value{GDBN}. 36502 36503In order for a bug report to serve its purpose, you must include the 36504information that enables us to fix the bug. 36505 36506@menu 36507* Bug Criteria:: Have you found a bug? 36508* Bug Reporting:: How to report bugs 36509@end menu 36510 36511@node Bug Criteria 36512@section Have You Found a Bug? 36513@cindex bug criteria 36514 36515If you are not sure whether you have found a bug, here are some guidelines: 36516 36517@itemize @bullet 36518@cindex fatal signal 36519@cindex debugger crash 36520@cindex crash of debugger 36521@item 36522If the debugger gets a fatal signal, for any input whatever, that is a 36523@value{GDBN} bug. Reliable debuggers never crash. 36524 36525@cindex error on valid input 36526@item 36527If @value{GDBN} produces an error message for valid input, that is a 36528bug. (Note that if you're cross debugging, the problem may also be 36529somewhere in the connection to the target.) 36530 36531@cindex invalid input 36532@item 36533If @value{GDBN} does not produce an error message for invalid input, 36534that is a bug. However, you should note that your idea of 36535``invalid input'' might be our idea of ``an extension'' or ``support 36536for traditional practice''. 36537 36538@item 36539If you are an experienced user of debugging tools, your suggestions 36540for improvement of @value{GDBN} are welcome in any case. 36541@end itemize 36542 36543@node Bug Reporting 36544@section How to Report Bugs 36545@cindex bug reports 36546@cindex @value{GDBN} bugs, reporting 36547 36548A number of companies and individuals offer support for @sc{gnu} products. 36549If you obtained @value{GDBN} from a support organization, we recommend you 36550contact that organization first. 36551 36552You can find contact information for many support companies and 36553individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs 36554distribution. 36555@c should add a web page ref... 36556 36557@ifset BUGURL 36558@ifset BUGURL_DEFAULT 36559In any event, we also recommend that you submit bug reports for 36560@value{GDBN}. The preferred method is to submit them directly using 36561@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web 36562page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can 36563be used. 36564 36565@strong{Do not send bug reports to @samp{info-gdb}, or to 36566@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do 36567not want to receive bug reports. Those that do have arranged to receive 36568@samp{bug-gdb}. 36569 36570The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which 36571serves as a repeater. The mailing list and the newsgroup carry exactly 36572the same messages. Often people think of posting bug reports to the 36573newsgroup instead of mailing them. This appears to work, but it has one 36574problem which can be crucial: a newsgroup posting often lacks a mail 36575path back to the sender. Thus, if we need to ask for more information, 36576we may be unable to reach you. For this reason, it is better to send 36577bug reports to the mailing list. 36578@end ifset 36579@ifclear BUGURL_DEFAULT 36580In any event, we also recommend that you submit bug reports for 36581@value{GDBN} to @value{BUGURL}. 36582@end ifclear 36583@end ifset 36584 36585The fundamental principle of reporting bugs usefully is this: 36586@strong{report all the facts}. If you are not sure whether to state a 36587fact or leave it out, state it! 36588 36589Often people omit facts because they think they know what causes the 36590problem and assume that some details do not matter. Thus, you might 36591assume that the name of the variable you use in an example does not matter. 36592Well, probably it does not, but one cannot be sure. Perhaps the bug is a 36593stray memory reference which happens to fetch from the location where that 36594name is stored in memory; perhaps, if the name were different, the contents 36595of that location would fool the debugger into doing the right thing despite 36596the bug. Play it safe and give a specific, complete example. That is the 36597easiest thing for you to do, and the most helpful. 36598 36599Keep in mind that the purpose of a bug report is to enable us to fix the 36600bug. It may be that the bug has been reported previously, but neither 36601you nor we can know that unless your bug report is complete and 36602self-contained. 36603 36604Sometimes people give a few sketchy facts and ask, ``Does this ring a 36605bell?'' Those bug reports are useless, and we urge everyone to 36606@emph{refuse to respond to them} except to chide the sender to report 36607bugs properly. 36608 36609To enable us to fix the bug, you should include all these things: 36610 36611@itemize @bullet 36612@item 36613The version of @value{GDBN}. @value{GDBN} announces it if you start 36614with no arguments; you can also print it at any time using @code{show 36615version}. 36616 36617Without this, we will not know whether there is any point in looking for 36618the bug in the current version of @value{GDBN}. 36619 36620@item 36621The type of machine you are using, and the operating system name and 36622version number. 36623 36624@item 36625The details of the @value{GDBN} build-time configuration. 36626@value{GDBN} shows these details if you invoke it with the 36627@option{--configuration} command-line option, or if you type 36628@code{show configuration} at @value{GDBN}'s prompt. 36629 36630@item 36631What compiler (and its version) was used to compile @value{GDBN}---e.g.@: 36632``@value{GCC}--2.8.1''. 36633 36634@item 36635What compiler (and its version) was used to compile the program you are 36636debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP 36637C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version} 36638to get this information; for other compilers, see the documentation for 36639those compilers. 36640 36641@item 36642The command arguments you gave the compiler to compile your example and 36643observe the bug. For example, did you use @samp{-O}? To guarantee 36644you will not omit something important, list them all. A copy of the 36645Makefile (or the output from make) is sufficient. 36646 36647If we were to try to guess the arguments, we would probably guess wrong 36648and then we might not encounter the bug. 36649 36650@item 36651A complete input script, and all necessary source files, that will 36652reproduce the bug. 36653 36654@item 36655A description of what behavior you observe that you believe is 36656incorrect. For example, ``It gets a fatal signal.'' 36657 36658Of course, if the bug is that @value{GDBN} gets a fatal signal, then we 36659will certainly notice it. But if the bug is incorrect output, we might 36660not notice unless it is glaringly wrong. You might as well not give us 36661a chance to make a mistake. 36662 36663Even if the problem you experience is a fatal signal, you should still 36664say so explicitly. Suppose something strange is going on, such as, your 36665copy of @value{GDBN} is out of synch, or you have encountered a bug in 36666the C library on your system. (This has happened!) Your copy might 36667crash and ours would not. If you told us to expect a crash, then when 36668ours fails to crash, we would know that the bug was not happening for 36669us. If you had not told us to expect a crash, then we would not be able 36670to draw any conclusion from our observations. 36671 36672@pindex script 36673@cindex recording a session script 36674To collect all this information, you can use a session recording program 36675such as @command{script}, which is available on many Unix systems. 36676Just run your @value{GDBN} session inside @command{script} and then 36677include the @file{typescript} file with your bug report. 36678 36679Another way to record a @value{GDBN} session is to run @value{GDBN} 36680inside Emacs and then save the entire buffer to a file. 36681 36682@item 36683If you wish to suggest changes to the @value{GDBN} source, send us context 36684diffs. If you even discuss something in the @value{GDBN} source, refer to 36685it by context, not by line number. 36686 36687The line numbers in our development sources will not match those in your 36688sources. Your line numbers would convey no useful information to us. 36689 36690@end itemize 36691 36692Here are some things that are not necessary: 36693 36694@itemize @bullet 36695@item 36696A description of the envelope of the bug. 36697 36698Often people who encounter a bug spend a lot of time investigating 36699which changes to the input file will make the bug go away and which 36700changes will not affect it. 36701 36702This is often time consuming and not very useful, because the way we 36703will find the bug is by running a single example under the debugger 36704with breakpoints, not by pure deduction from a series of examples. 36705We recommend that you save your time for something else. 36706 36707Of course, if you can find a simpler example to report @emph{instead} 36708of the original one, that is a convenience for us. Errors in the 36709output will be easier to spot, running under the debugger will take 36710less time, and so on. 36711 36712However, simplification is not vital; if you do not want to do this, 36713report the bug anyway and send us the entire test case you used. 36714 36715@item 36716A patch for the bug. 36717 36718A patch for the bug does help us if it is a good one. But do not omit 36719the necessary information, such as the test case, on the assumption that 36720a patch is all we need. We might see problems with your patch and decide 36721to fix the problem another way, or we might not understand it at all. 36722 36723Sometimes with a program as complicated as @value{GDBN} it is very hard to 36724construct an example that will make the program follow a certain path 36725through the code. If you do not send us the example, we will not be able 36726to construct one, so we will not be able to verify that the bug is fixed. 36727 36728And if we cannot understand what bug you are trying to fix, or why your 36729patch should be an improvement, we will not install it. A test case will 36730help us to understand. 36731 36732@item 36733A guess about what the bug is or what it depends on. 36734 36735Such guesses are usually wrong. Even we cannot guess right about such 36736things without first using the debugger to find the facts. 36737@end itemize 36738 36739@c The readline documentation is distributed with the readline code 36740@c and consists of the two following files: 36741@c rluser.texi 36742@c hsuser.texi 36743@c Use -I with makeinfo to point to the appropriate directory, 36744@c environment var TEXINPUTS with TeX. 36745@ifclear SYSTEM_READLINE 36746@include rluser.texi 36747@include hsuser.texi 36748@end ifclear 36749 36750@node In Memoriam 36751@appendix In Memoriam 36752 36753The @value{GDBN} project mourns the loss of the following long-time 36754contributors: 36755 36756@table @code 36757@item Fred Fish 36758Fred was a long-standing contributor to @value{GDBN} (1991-2006), and 36759to Free Software in general. Outside of @value{GDBN}, he was known in 36760the Amiga world for his series of Fish Disks, and the GeekGadget project. 36761 36762@item Michael Snyder 36763Michael was one of the Global Maintainers of the @value{GDBN} project, 36764with contributions recorded as early as 1996, until 2011. In addition 36765to his day to day participation, he was a large driving force behind 36766adding Reverse Debugging to @value{GDBN}. 36767@end table 36768 36769Beyond their technical contributions to the project, they were also 36770enjoyable members of the Free Software Community. We will miss them. 36771 36772@node Formatting Documentation 36773@appendix Formatting Documentation 36774 36775@cindex @value{GDBN} reference card 36776@cindex reference card 36777The @value{GDBN} 4 release includes an already-formatted reference card, ready 36778for printing with PostScript or Ghostscript, in the @file{gdb} 36779subdirectory of the main source directory@footnote{In 36780@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN} 36781release.}. If you can use PostScript or Ghostscript with your printer, 36782you can print the reference card immediately with @file{refcard.ps}. 36783 36784The release also includes the source for the reference card. You 36785can format it, using @TeX{}, by typing: 36786 36787@smallexample 36788make refcard.dvi 36789@end smallexample 36790 36791The @value{GDBN} reference card is designed to print in @dfn{landscape} 36792mode on US ``letter'' size paper; 36793that is, on a sheet 11 inches wide by 8.5 inches 36794high. You will need to specify this form of printing as an option to 36795your @sc{dvi} output program. 36796 36797@cindex documentation 36798 36799All the documentation for @value{GDBN} comes as part of the machine-readable 36800distribution. The documentation is written in Texinfo format, which is 36801a documentation system that uses a single source file to produce both 36802on-line information and a printed manual. You can use one of the Info 36803formatting commands to create the on-line version of the documentation 36804and @TeX{} (or @code{texi2roff}) to typeset the printed version. 36805 36806@value{GDBN} includes an already formatted copy of the on-line Info 36807version of this manual in the @file{gdb} subdirectory. The main Info 36808file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to 36809subordinate files matching @samp{gdb.info*} in the same directory. If 36810necessary, you can print out these files, or read them with any editor; 36811but they are easier to read using the @code{info} subsystem in @sc{gnu} 36812Emacs or the standalone @code{info} program, available as part of the 36813@sc{gnu} Texinfo distribution. 36814 36815If you want to format these Info files yourself, you need one of the 36816Info formatting programs, such as @code{texinfo-format-buffer} or 36817@code{makeinfo}. 36818 36819If you have @code{makeinfo} installed, and are in the top level 36820@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of 36821version @value{GDBVN}), you can make the Info file by typing: 36822 36823@smallexample 36824cd gdb 36825make gdb.info 36826@end smallexample 36827 36828If you want to typeset and print copies of this manual, you need @TeX{}, 36829a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the 36830Texinfo definitions file. 36831 36832@TeX{} is a typesetting program; it does not print files directly, but 36833produces output files called @sc{dvi} files. To print a typeset 36834document, you need a program to print @sc{dvi} files. If your system 36835has @TeX{} installed, chances are it has such a program. The precise 36836command to use depends on your system; @kbd{lpr -d} is common; another 36837(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may 36838require a file name without any extension or a @samp{.dvi} extension. 36839 36840@TeX{} also requires a macro definitions file called 36841@file{texinfo.tex}. This file tells @TeX{} how to typeset a document 36842written in Texinfo format. On its own, @TeX{} cannot either read or 36843typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB 36844and is located in the @file{gdb-@var{version-number}/texinfo} 36845directory. 36846 36847If you have @TeX{} and a @sc{dvi} printer program installed, you can 36848typeset and print this manual. First switch to the @file{gdb} 36849subdirectory of the main source directory (for example, to 36850@file{gdb-@value{GDBVN}/gdb}) and type: 36851 36852@smallexample 36853make gdb.dvi 36854@end smallexample 36855 36856Then give @file{gdb.dvi} to your @sc{dvi} printing program. 36857 36858@node Installing GDB 36859@appendix Installing @value{GDBN} 36860@cindex installation 36861 36862@menu 36863* Requirements:: Requirements for building @value{GDBN} 36864* Running Configure:: Invoking the @value{GDBN} @file{configure} script 36865* Separate Objdir:: Compiling @value{GDBN} in another directory 36866* Config Names:: Specifying names for hosts and targets 36867* Configure Options:: Summary of options for configure 36868* System-wide configuration:: Having a system-wide init file 36869@end menu 36870 36871@node Requirements 36872@section Requirements for Building @value{GDBN} 36873@cindex building @value{GDBN}, requirements for 36874 36875Building @value{GDBN} requires various tools and packages to be available. 36876Other packages will be used only if they are found. 36877 36878@heading Tools/Packages Necessary for Building @value{GDBN} 36879@table @asis 36880@item ISO C90 compiler 36881@value{GDBN} is written in ISO C90. It should be buildable with any 36882working C90 compiler, e.g.@: GCC. 36883 36884@end table 36885 36886@heading Tools/Packages Optional for Building @value{GDBN} 36887@table @asis 36888@item Expat 36889@anchor{Expat} 36890@value{GDBN} can use the Expat XML parsing library. This library may be 36891included with your operating system distribution; if it is not, you 36892can get the latest version from @url{http://expat.sourceforge.net}. 36893The @file{configure} script will search for this library in several 36894standard locations; if it is installed in an unusual path, you can 36895use the @option{--with-libexpat-prefix} option to specify its location. 36896 36897Expat is used for: 36898 36899@itemize @bullet 36900@item 36901Remote protocol memory maps (@pxref{Memory Map Format}) 36902@item 36903Target descriptions (@pxref{Target Descriptions}) 36904@item 36905Remote shared library lists (@xref{Library List Format}, 36906or alternatively @pxref{Library List Format for SVR4 Targets}) 36907@item 36908MS-Windows shared libraries (@pxref{Shared Libraries}) 36909@item 36910Traceframe info (@pxref{Traceframe Info Format}) 36911@item 36912Branch trace (@pxref{Branch Trace Format}) 36913@end itemize 36914 36915@item zlib 36916@cindex compressed debug sections 36917@value{GDBN} will use the @samp{zlib} library, if available, to read 36918compressed debug sections. Some linkers, such as GNU gold, are capable 36919of producing binaries with compressed debug sections. If @value{GDBN} 36920is compiled with @samp{zlib}, it will be able to read the debug 36921information in such binaries. 36922 36923The @samp{zlib} library is likely included with your operating system 36924distribution; if it is not, you can get the latest version from 36925@url{http://zlib.net}. 36926 36927@item iconv 36928@value{GDBN}'s features related to character sets (@pxref{Character 36929Sets}) require a functioning @code{iconv} implementation. If you are 36930on a GNU system, then this is provided by the GNU C Library. Some 36931other systems also provide a working @code{iconv}. 36932 36933If @value{GDBN} is using the @code{iconv} program which is installed 36934in a non-standard place, you will need to tell @value{GDBN} where to find it. 36935This is done with @option{--with-iconv-bin} which specifies the 36936directory that contains the @code{iconv} program. 36937 36938On systems without @code{iconv}, you can install GNU Libiconv. If you 36939have previously installed Libiconv, you can use the 36940@option{--with-libiconv-prefix} option to configure. 36941 36942@value{GDBN}'s top-level @file{configure} and @file{Makefile} will 36943arrange to build Libiconv if a directory named @file{libiconv} appears 36944in the top-most source directory. If Libiconv is built this way, and 36945if the operating system does not provide a suitable @code{iconv} 36946implementation, then the just-built library will automatically be used 36947by @value{GDBN}. One easy way to set this up is to download GNU 36948Libiconv, unpack it, and then rename the directory holding the 36949Libiconv source code to @samp{libiconv}. 36950@end table 36951 36952@node Running Configure 36953@section Invoking the @value{GDBN} @file{configure} Script 36954@cindex configuring @value{GDBN} 36955@value{GDBN} comes with a @file{configure} script that automates the process 36956of preparing @value{GDBN} for installation; you can then use @code{make} to 36957build the @code{gdb} program. 36958@iftex 36959@c irrelevant in info file; it's as current as the code it lives with. 36960@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN}, 36961look at the @file{README} file in the sources; we may have improved the 36962installation procedures since publishing this manual.} 36963@end iftex 36964 36965The @value{GDBN} distribution includes all the source code you need for 36966@value{GDBN} in a single directory, whose name is usually composed by 36967appending the version number to @samp{gdb}. 36968 36969For example, the @value{GDBN} version @value{GDBVN} distribution is in the 36970@file{gdb-@value{GDBVN}} directory. That directory contains: 36971 36972@table @code 36973@item gdb-@value{GDBVN}/configure @r{(and supporting files)} 36974script for configuring @value{GDBN} and all its supporting libraries 36975 36976@item gdb-@value{GDBVN}/gdb 36977the source specific to @value{GDBN} itself 36978 36979@item gdb-@value{GDBVN}/bfd 36980source for the Binary File Descriptor library 36981 36982@item gdb-@value{GDBVN}/include 36983@sc{gnu} include files 36984 36985@item gdb-@value{GDBVN}/libiberty 36986source for the @samp{-liberty} free software library 36987 36988@item gdb-@value{GDBVN}/opcodes 36989source for the library of opcode tables and disassemblers 36990 36991@item gdb-@value{GDBVN}/readline 36992source for the @sc{gnu} command-line interface 36993 36994@item gdb-@value{GDBVN}/glob 36995source for the @sc{gnu} filename pattern-matching subroutine 36996 36997@item gdb-@value{GDBVN}/mmalloc 36998source for the @sc{gnu} memory-mapped malloc package 36999@end table 37000 37001The simplest way to configure and build @value{GDBN} is to run @file{configure} 37002from the @file{gdb-@var{version-number}} source directory, which in 37003this example is the @file{gdb-@value{GDBVN}} directory. 37004 37005First switch to the @file{gdb-@var{version-number}} source directory 37006if you are not already in it; then run @file{configure}. Pass the 37007identifier for the platform on which @value{GDBN} will run as an 37008argument. 37009 37010For example: 37011 37012@smallexample 37013cd gdb-@value{GDBVN} 37014./configure @var{host} 37015make 37016@end smallexample 37017 37018@noindent 37019where @var{host} is an identifier such as @samp{sun4} or 37020@samp{decstation}, that identifies the platform where @value{GDBN} will run. 37021(You can often leave off @var{host}; @file{configure} tries to guess the 37022correct value by examining your system.) 37023 37024Running @samp{configure @var{host}} and then running @code{make} builds the 37025@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty} 37026libraries, then @code{gdb} itself. The configured source files, and the 37027binaries, are left in the corresponding source directories. 37028 37029@need 750 37030@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your 37031system does not recognize this automatically when you run a different 37032shell, you may need to run @code{sh} on it explicitly: 37033 37034@smallexample 37035sh configure @var{host} 37036@end smallexample 37037 37038If you run @file{configure} from a directory that contains source 37039directories for multiple libraries or programs, such as the 37040@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, 37041@file{configure} 37042creates configuration files for every directory level underneath (unless 37043you tell it not to, with the @samp{--norecursion} option). 37044 37045You should run the @file{configure} script from the top directory in the 37046source tree, the @file{gdb-@var{version-number}} directory. If you run 37047@file{configure} from one of the subdirectories, you will configure only 37048that subdirectory. That is usually not what you want. In particular, 37049if you run the first @file{configure} from the @file{gdb} subdirectory 37050of the @file{gdb-@var{version-number}} directory, you will omit the 37051configuration of @file{bfd}, @file{readline}, and other sibling 37052directories of the @file{gdb} subdirectory. This leads to build errors 37053about missing include files such as @file{bfd/bfd.h}. 37054 37055You can install @code{@value{GDBP}} anywhere; it has no hardwired paths. 37056However, you should make sure that the shell on your path (named by 37057the @samp{SHELL} environment variable) is publicly readable. Remember 37058that @value{GDBN} uses the shell to start your program---some systems refuse to 37059let @value{GDBN} debug child processes whose programs are not readable. 37060 37061@node Separate Objdir 37062@section Compiling @value{GDBN} in Another Directory 37063 37064If you want to run @value{GDBN} versions for several host or target machines, 37065you need a different @code{gdb} compiled for each combination of 37066host and target. @file{configure} is designed to make this easy by 37067allowing you to generate each configuration in a separate subdirectory, 37068rather than in the source directory. If your @code{make} program 37069handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running 37070@code{make} in each of these directories builds the @code{gdb} 37071program specified there. 37072 37073To build @code{gdb} in a separate directory, run @file{configure} 37074with the @samp{--srcdir} option to specify where to find the source. 37075(You also need to specify a path to find @file{configure} 37076itself from your working directory. If the path to @file{configure} 37077would be the same as the argument to @samp{--srcdir}, you can leave out 37078the @samp{--srcdir} option; it is assumed.) 37079 37080For example, with version @value{GDBVN}, you can build @value{GDBN} in a 37081separate directory for a Sun 4 like this: 37082 37083@smallexample 37084@group 37085cd gdb-@value{GDBVN} 37086mkdir ../gdb-sun4 37087cd ../gdb-sun4 37088../gdb-@value{GDBVN}/configure sun4 37089make 37090@end group 37091@end smallexample 37092 37093When @file{configure} builds a configuration using a remote source 37094directory, it creates a tree for the binaries with the same structure 37095(and using the same names) as the tree under the source directory. In 37096the example, you'd find the Sun 4 library @file{libiberty.a} in the 37097directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in 37098@file{gdb-sun4/gdb}. 37099 37100Make sure that your path to the @file{configure} script has just one 37101instance of @file{gdb} in it. If your path to @file{configure} looks 37102like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only 37103one subdirectory of @value{GDBN}, not the whole package. This leads to 37104build errors about missing include files such as @file{bfd/bfd.h}. 37105 37106One popular reason to build several @value{GDBN} configurations in separate 37107directories is to configure @value{GDBN} for cross-compiling (where 37108@value{GDBN} runs on one machine---the @dfn{host}---while debugging 37109programs that run on another machine---the @dfn{target}). 37110You specify a cross-debugging target by 37111giving the @samp{--target=@var{target}} option to @file{configure}. 37112 37113When you run @code{make} to build a program or library, you must run 37114it in a configured directory---whatever directory you were in when you 37115called @file{configure} (or one of its subdirectories). 37116 37117The @code{Makefile} that @file{configure} generates in each source 37118directory also runs recursively. If you type @code{make} in a source 37119directory such as @file{gdb-@value{GDBVN}} (or in a separate configured 37120directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you 37121will build all the required libraries, and then build GDB. 37122 37123When you have multiple hosts or targets configured in separate 37124directories, you can run @code{make} on them in parallel (for example, 37125if they are NFS-mounted on each of the hosts); they will not interfere 37126with each other. 37127 37128@node Config Names 37129@section Specifying Names for Hosts and Targets 37130 37131The specifications used for hosts and targets in the @file{configure} 37132script are based on a three-part naming scheme, but some short predefined 37133aliases are also supported. The full naming scheme encodes three pieces 37134of information in the following pattern: 37135 37136@smallexample 37137@var{architecture}-@var{vendor}-@var{os} 37138@end smallexample 37139 37140For example, you can use the alias @code{sun4} as a @var{host} argument, 37141or as the value for @var{target} in a @code{--target=@var{target}} 37142option. The equivalent full name is @samp{sparc-sun-sunos4}. 37143 37144The @file{configure} script accompanying @value{GDBN} does not provide 37145any query facility to list all supported host and target names or 37146aliases. @file{configure} calls the Bourne shell script 37147@code{config.sub} to map abbreviations to full names; you can read the 37148script, if you wish, or you can use it to test your guesses on 37149abbreviations---for example: 37150 37151@smallexample 37152% sh config.sub i386-linux 37153i386-pc-linux-gnu 37154% sh config.sub alpha-linux 37155alpha-unknown-linux-gnu 37156% sh config.sub hp9k700 37157hppa1.1-hp-hpux 37158% sh config.sub sun4 37159sparc-sun-sunos4.1.1 37160% sh config.sub sun3 37161m68k-sun-sunos4.1.1 37162% sh config.sub i986v 37163Invalid configuration `i986v': machine `i986v' not recognized 37164@end smallexample 37165 37166@noindent 37167@code{config.sub} is also distributed in the @value{GDBN} source 37168directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}). 37169 37170@node Configure Options 37171@section @file{configure} Options 37172 37173Here is a summary of the @file{configure} options and arguments that 37174are most often useful for building @value{GDBN}. @file{configure} also has 37175several other options not listed here. @inforef{What Configure 37176Does,,configure.info}, for a full explanation of @file{configure}. 37177 37178@smallexample 37179configure @r{[}--help@r{]} 37180 @r{[}--prefix=@var{dir}@r{]} 37181 @r{[}--exec-prefix=@var{dir}@r{]} 37182 @r{[}--srcdir=@var{dirname}@r{]} 37183 @r{[}--norecursion@r{]} @r{[}--rm@r{]} 37184 @r{[}--target=@var{target}@r{]} 37185 @var{host} 37186@end smallexample 37187 37188@noindent 37189You may introduce options with a single @samp{-} rather than 37190@samp{--} if you prefer; but you may abbreviate option names if you use 37191@samp{--}. 37192 37193@table @code 37194@item --help 37195Display a quick summary of how to invoke @file{configure}. 37196 37197@item --prefix=@var{dir} 37198Configure the source to install programs and files under directory 37199@file{@var{dir}}. 37200 37201@item --exec-prefix=@var{dir} 37202Configure the source to install programs under directory 37203@file{@var{dir}}. 37204 37205@c avoid splitting the warning from the explanation: 37206@need 2000 37207@item --srcdir=@var{dirname} 37208@strong{Warning: using this option requires @sc{gnu} @code{make}, or another 37209@code{make} that implements the @code{VPATH} feature.}@* 37210Use this option to make configurations in directories separate from the 37211@value{GDBN} source directories. Among other things, you can use this to 37212build (or maintain) several configurations simultaneously, in separate 37213directories. @file{configure} writes configuration-specific files in 37214the current directory, but arranges for them to use the source in the 37215directory @var{dirname}. @file{configure} creates directories under 37216the working directory in parallel to the source directories below 37217@var{dirname}. 37218 37219@item --norecursion 37220Configure only the directory level where @file{configure} is executed; do not 37221propagate configuration to subdirectories. 37222 37223@item --target=@var{target} 37224Configure @value{GDBN} for cross-debugging programs running on the specified 37225@var{target}. Without this option, @value{GDBN} is configured to debug 37226programs that run on the same machine (@var{host}) as @value{GDBN} itself. 37227 37228There is no convenient way to generate a list of all available targets. 37229 37230@item @var{host} @dots{} 37231Configure @value{GDBN} to run on the specified @var{host}. 37232 37233There is no convenient way to generate a list of all available hosts. 37234@end table 37235 37236There are many other options available as well, but they are generally 37237needed for special purposes only. 37238 37239@node System-wide configuration 37240@section System-wide configuration and settings 37241@cindex system-wide init file 37242 37243@value{GDBN} can be configured to have a system-wide init file; 37244this file will be read and executed at startup (@pxref{Startup, , What 37245@value{GDBN} does during startup}). 37246 37247Here is the corresponding configure option: 37248 37249@table @code 37250@item --with-system-gdbinit=@var{file} 37251Specify that the default location of the system-wide init file is 37252@var{file}. 37253@end table 37254 37255If @value{GDBN} has been configured with the option @option{--prefix=$prefix}, 37256it may be subject to relocation. Two possible cases: 37257 37258@itemize @bullet 37259@item 37260If the default location of this init file contains @file{$prefix}, 37261it will be subject to relocation. Suppose that the configure options 37262are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit}; 37263if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system 37264init file is looked for as @file{$install/etc/gdbinit} instead of 37265@file{$prefix/etc/gdbinit}. 37266 37267@item 37268By contrast, if the default location does not contain the prefix, 37269it will not be relocated. E.g.@: if @value{GDBN} has been configured with 37270@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit}, 37271then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit}, 37272wherever @value{GDBN} is installed. 37273@end itemize 37274 37275If the configured location of the system-wide init file (as given by the 37276@option{--with-system-gdbinit} option at configure time) is in the 37277data-directory (as specified by @option{--with-gdb-datadir} at configure 37278time) or in one of its subdirectories, then @value{GDBN} will look for the 37279system-wide init file in the directory specified by the 37280@option{--data-directory} command-line option. 37281Note that the system-wide init file is only read once, during @value{GDBN} 37282initialization. If the data-directory is changed after @value{GDBN} has 37283started with the @code{set data-directory} command, the file will not be 37284reread. 37285 37286@menu 37287* System-wide Configuration Scripts:: Installed System-wide Configuration Scripts 37288@end menu 37289 37290@node System-wide Configuration Scripts 37291@subsection Installed System-wide Configuration Scripts 37292@cindex system-wide configuration scripts 37293 37294The @file{system-gdbinit} directory, located inside the data-directory 37295(as specified by @option{--with-gdb-datadir} at configure time) contains 37296a number of scripts which can be used as system-wide init files. To 37297automatically source those scripts at startup, @value{GDBN} should be 37298configured with @option{--with-system-gdbinit}. Otherwise, any user 37299should be able to source them by hand as needed. 37300 37301The following scripts are currently available: 37302@itemize @bullet 37303 37304@item @file{elinos.py} 37305@pindex elinos.py 37306@cindex ELinOS system-wide configuration script 37307This script is useful when debugging a program on an ELinOS target. 37308It takes advantage of the environment variables defined in a standard 37309ELinOS environment in order to determine the location of the system 37310shared libraries, and then sets the @samp{solib-absolute-prefix} 37311and @samp{solib-search-path} variables appropriately. 37312 37313@item @file{wrs-linux.py} 37314@pindex wrs-linux.py 37315@cindex Wind River Linux system-wide configuration script 37316This script is useful when debugging a program on a target running 37317Wind River Linux. It expects the @env{ENV_PREFIX} to be set to 37318the host-side sysroot used by the target system. 37319 37320@end itemize 37321 37322@node Maintenance Commands 37323@appendix Maintenance Commands 37324@cindex maintenance commands 37325@cindex internal commands 37326 37327In addition to commands intended for @value{GDBN} users, @value{GDBN} 37328includes a number of commands intended for @value{GDBN} developers, 37329that are not documented elsewhere in this manual. These commands are 37330provided here for reference. (For commands that turn on debugging 37331messages, see @ref{Debugging Output}.) 37332 37333@table @code 37334@kindex maint agent 37335@kindex maint agent-eval 37336@item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression} 37337@itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression} 37338Translate the given @var{expression} into remote agent bytecodes. 37339This command is useful for debugging the Agent Expression mechanism 37340(@pxref{Agent Expressions}). The @samp{agent} version produces an 37341expression useful for data collection, such as by tracepoints, while 37342@samp{maint agent-eval} produces an expression that evaluates directly 37343to a result. For instance, a collection expression for @code{globa + 37344globb} will include bytecodes to record four bytes of memory at each 37345of the addresses of @code{globa} and @code{globb}, while discarding 37346the result of the addition, while an evaluation expression will do the 37347addition and return the sum. 37348If @code{-at} is given, generate remote agent bytecode for @var{location}. 37349If not, generate remote agent bytecode for current frame PC address. 37350 37351@kindex maint agent-printf 37352@item maint agent-printf @var{format},@var{expr},... 37353Translate the given format string and list of argument expressions 37354into remote agent bytecodes and display them as a disassembled list. 37355This command is useful for debugging the agent version of dynamic 37356printf (@pxref{Dynamic Printf}). 37357 37358@kindex maint info breakpoints 37359@item @anchor{maint info breakpoints}maint info breakpoints 37360Using the same format as @samp{info breakpoints}, display both the 37361breakpoints you've set explicitly, and those @value{GDBN} is using for 37362internal purposes. Internal breakpoints are shown with negative 37363breakpoint numbers. The type column identifies what kind of breakpoint 37364is shown: 37365 37366@table @code 37367@item breakpoint 37368Normal, explicitly set breakpoint. 37369 37370@item watchpoint 37371Normal, explicitly set watchpoint. 37372 37373@item longjmp 37374Internal breakpoint, used to handle correctly stepping through 37375@code{longjmp} calls. 37376 37377@item longjmp resume 37378Internal breakpoint at the target of a @code{longjmp}. 37379 37380@item until 37381Temporary internal breakpoint used by the @value{GDBN} @code{until} command. 37382 37383@item finish 37384Temporary internal breakpoint used by the @value{GDBN} @code{finish} command. 37385 37386@item shlib events 37387Shared library events. 37388 37389@end table 37390 37391@kindex maint info bfds 37392@item maint info bfds 37393This prints information about each @code{bfd} object that is known to 37394@value{GDBN}. @xref{Top, , BFD, bfd, The Binary File Descriptor Library}. 37395 37396@kindex set displaced-stepping 37397@kindex show displaced-stepping 37398@cindex displaced stepping support 37399@cindex out-of-line single-stepping 37400@item set displaced-stepping 37401@itemx show displaced-stepping 37402Control whether or not @value{GDBN} will do @dfn{displaced stepping} 37403if the target supports it. Displaced stepping is a way to single-step 37404over breakpoints without removing them from the inferior, by executing 37405an out-of-line copy of the instruction that was originally at the 37406breakpoint location. It is also known as out-of-line single-stepping. 37407 37408@table @code 37409@item set displaced-stepping on 37410If the target architecture supports it, @value{GDBN} will use 37411displaced stepping to step over breakpoints. 37412 37413@item set displaced-stepping off 37414@value{GDBN} will not use displaced stepping to step over breakpoints, 37415even if such is supported by the target architecture. 37416 37417@cindex non-stop mode, and @samp{set displaced-stepping} 37418@item set displaced-stepping auto 37419This is the default mode. @value{GDBN} will use displaced stepping 37420only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target 37421architecture supports displaced stepping. 37422@end table 37423 37424@kindex maint check-psymtabs 37425@item maint check-psymtabs 37426Check the consistency of currently expanded psymtabs versus symtabs. 37427Use this to check, for example, whether a symbol is in one but not the other. 37428 37429@kindex maint check-symtabs 37430@item maint check-symtabs 37431Check the consistency of currently expanded symtabs. 37432 37433@kindex maint expand-symtabs 37434@item maint expand-symtabs [@var{regexp}] 37435Expand symbol tables. 37436If @var{regexp} is specified, only expand symbol tables for file 37437names matching @var{regexp}. 37438 37439@kindex maint cplus first_component 37440@item maint cplus first_component @var{name} 37441Print the first C@t{++} class/namespace component of @var{name}. 37442 37443@kindex maint cplus namespace 37444@item maint cplus namespace 37445Print the list of possible C@t{++} namespaces. 37446 37447@kindex maint demangle 37448@item maint demangle @var{name} 37449Demangle a C@t{++} or Objective-C mangled @var{name}. 37450 37451@kindex maint deprecate 37452@kindex maint undeprecate 37453@cindex deprecated commands 37454@item maint deprecate @var{command} @r{[}@var{replacement}@r{]} 37455@itemx maint undeprecate @var{command} 37456Deprecate or undeprecate the named @var{command}. Deprecated commands 37457cause @value{GDBN} to issue a warning when you use them. The optional 37458argument @var{replacement} says which newer command should be used in 37459favor of the deprecated one; if it is given, @value{GDBN} will mention 37460the replacement as part of the warning. 37461 37462@kindex maint dump-me 37463@item maint dump-me 37464@cindex @code{SIGQUIT} signal, dump core of @value{GDBN} 37465Cause a fatal signal in the debugger and force it to dump its core. 37466This is supported only on systems which support aborting a program 37467with the @code{SIGQUIT} signal. 37468 37469@kindex maint internal-error 37470@kindex maint internal-warning 37471@item maint internal-error @r{[}@var{message-text}@r{]} 37472@itemx maint internal-warning @r{[}@var{message-text}@r{]} 37473Cause @value{GDBN} to call the internal function @code{internal_error} 37474or @code{internal_warning} and hence behave as though an internal error 37475or internal warning has been detected. In addition to reporting the 37476internal problem, these functions give the user the opportunity to 37477either quit @value{GDBN} or create a core file of the current 37478@value{GDBN} session. 37479 37480These commands take an optional parameter @var{message-text} that is 37481used as the text of the error or warning message. 37482 37483Here's an example of using @code{internal-error}: 37484 37485@smallexample 37486(@value{GDBP}) @kbd{maint internal-error testing, 1, 2} 37487@dots{}/maint.c:121: internal-error: testing, 1, 2 37488A problem internal to GDB has been detected. Further 37489debugging may prove unreliable. 37490Quit this debugging session? (y or n) @kbd{n} 37491Create a core file? (y or n) @kbd{n} 37492(@value{GDBP}) 37493@end smallexample 37494 37495@cindex @value{GDBN} internal error 37496@cindex internal errors, control of @value{GDBN} behavior 37497 37498@kindex maint set internal-error 37499@kindex maint show internal-error 37500@kindex maint set internal-warning 37501@kindex maint show internal-warning 37502@item maint set internal-error @var{action} [ask|yes|no] 37503@itemx maint show internal-error @var{action} 37504@itemx maint set internal-warning @var{action} [ask|yes|no] 37505@itemx maint show internal-warning @var{action} 37506When @value{GDBN} reports an internal problem (error or warning) it 37507gives the user the opportunity to both quit @value{GDBN} and create a 37508core file of the current @value{GDBN} session. These commands let you 37509override the default behaviour for each particular @var{action}, 37510described in the table below. 37511 37512@table @samp 37513@item quit 37514You can specify that @value{GDBN} should always (yes) or never (no) 37515quit. The default is to ask the user what to do. 37516 37517@item corefile 37518You can specify that @value{GDBN} should always (yes) or never (no) 37519create a core file. The default is to ask the user what to do. 37520@end table 37521 37522@kindex maint packet 37523@item maint packet @var{text} 37524If @value{GDBN} is talking to an inferior via the serial protocol, 37525then this command sends the string @var{text} to the inferior, and 37526displays the response packet. @value{GDBN} supplies the initial 37527@samp{$} character, the terminating @samp{#} character, and the 37528checksum. 37529 37530@kindex maint print architecture 37531@item maint print architecture @r{[}@var{file}@r{]} 37532Print the entire architecture configuration. The optional argument 37533@var{file} names the file where the output goes. 37534 37535@kindex maint print c-tdesc 37536@item maint print c-tdesc 37537Print the current target description (@pxref{Target Descriptions}) as 37538a C source file. The created source file can be used in @value{GDBN} 37539when an XML parser is not available to parse the description. 37540 37541@kindex maint print dummy-frames 37542@item maint print dummy-frames 37543Prints the contents of @value{GDBN}'s internal dummy-frame stack. 37544 37545@smallexample 37546(@value{GDBP}) @kbd{b add} 37547@dots{} 37548(@value{GDBP}) @kbd{print add(2,3)} 37549Breakpoint 2, add (a=2, b=3) at @dots{} 3755058 return (a + b); 37551The program being debugged stopped while in a function called from GDB. 37552@dots{} 37553(@value{GDBP}) @kbd{maint print dummy-frames} 375540x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6 37555 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@} 37556 call_lo=0x01014000 call_hi=0x01014001 37557(@value{GDBP}) 37558@end smallexample 37559 37560Takes an optional file parameter. 37561 37562@kindex maint print registers 37563@kindex maint print raw-registers 37564@kindex maint print cooked-registers 37565@kindex maint print register-groups 37566@kindex maint print remote-registers 37567@item maint print registers @r{[}@var{file}@r{]} 37568@itemx maint print raw-registers @r{[}@var{file}@r{]} 37569@itemx maint print cooked-registers @r{[}@var{file}@r{]} 37570@itemx maint print register-groups @r{[}@var{file}@r{]} 37571@itemx maint print remote-registers @r{[}@var{file}@r{]} 37572Print @value{GDBN}'s internal register data structures. 37573 37574The command @code{maint print raw-registers} includes the contents of 37575the raw register cache; the command @code{maint print 37576cooked-registers} includes the (cooked) value of all registers, 37577including registers which aren't available on the target nor visible 37578to user; the command @code{maint print register-groups} includes the 37579groups that each register is a member of; and the command @code{maint 37580print remote-registers} includes the remote target's register numbers 37581and offsets in the `G' packets. 37582 37583These commands take an optional parameter, a file name to which to 37584write the information. 37585 37586@kindex maint print reggroups 37587@item maint print reggroups @r{[}@var{file}@r{]} 37588Print @value{GDBN}'s internal register group data structures. The 37589optional argument @var{file} tells to what file to write the 37590information. 37591 37592The register groups info looks like this: 37593 37594@smallexample 37595(@value{GDBP}) @kbd{maint print reggroups} 37596 Group Type 37597 general user 37598 float user 37599 all user 37600 vector user 37601 system user 37602 save internal 37603 restore internal 37604@end smallexample 37605 37606@kindex flushregs 37607@item flushregs 37608This command forces @value{GDBN} to flush its internal register cache. 37609 37610@kindex maint print objfiles 37611@cindex info for known object files 37612@item maint print objfiles @r{[}@var{regexp}@r{]} 37613Print a dump of all known object files. 37614If @var{regexp} is specified, only print object files whose names 37615match @var{regexp}. For each object file, this command prints its name, 37616address in memory, and all of its psymtabs and symtabs. 37617 37618@kindex maint print section-scripts 37619@cindex info for known .debug_gdb_scripts-loaded scripts 37620@item maint print section-scripts [@var{regexp}] 37621Print a dump of scripts specified in the @code{.debug_gdb_section} section. 37622If @var{regexp} is specified, only print scripts loaded by object files 37623matching @var{regexp}. 37624For each script, this command prints its name as specified in the objfile, 37625and the full path if known. 37626@xref{dotdebug_gdb_scripts section}. 37627 37628@kindex maint print statistics 37629@cindex bcache statistics 37630@item maint print statistics 37631This command prints, for each object file in the program, various data 37632about that object file followed by the byte cache (@dfn{bcache}) 37633statistics for the object file. The objfile data includes the number 37634of minimal, partial, full, and stabs symbols, the number of types 37635defined by the objfile, the number of as yet unexpanded psym tables, 37636the number of line tables and string tables, and the amount of memory 37637used by the various tables. The bcache statistics include the counts, 37638sizes, and counts of duplicates of all and unique objects, max, 37639average, and median entry size, total memory used and its overhead and 37640savings, and various measures of the hash table size and chain 37641lengths. 37642 37643@kindex maint print target-stack 37644@cindex target stack description 37645@item maint print target-stack 37646A @dfn{target} is an interface between the debugger and a particular 37647kind of file or process. Targets can be stacked in @dfn{strata}, 37648so that more than one target can potentially respond to a request. 37649In particular, memory accesses will walk down the stack of targets 37650until they find a target that is interested in handling that particular 37651address. 37652 37653This command prints a short description of each layer that was pushed on 37654the @dfn{target stack}, starting from the top layer down to the bottom one. 37655 37656@kindex maint print type 37657@cindex type chain of a data type 37658@item maint print type @var{expr} 37659Print the type chain for a type specified by @var{expr}. The argument 37660can be either a type name or a symbol. If it is a symbol, the type of 37661that symbol is described. The type chain produced by this command is 37662a recursive definition of the data type as stored in @value{GDBN}'s 37663data structures, including its flags and contained types. 37664 37665@kindex maint set dwarf2 always-disassemble 37666@kindex maint show dwarf2 always-disassemble 37667@item maint set dwarf2 always-disassemble 37668@item maint show dwarf2 always-disassemble 37669Control the behavior of @code{info address} when using DWARF debugging 37670information. 37671 37672The default is @code{off}, which means that @value{GDBN} should try to 37673describe a variable's location in an easily readable format. When 37674@code{on}, @value{GDBN} will instead display the DWARF location 37675expression in an assembly-like format. Note that some locations are 37676too complex for @value{GDBN} to describe simply; in this case you will 37677always see the disassembly form. 37678 37679Here is an example of the resulting disassembly: 37680 37681@smallexample 37682(gdb) info addr argc 37683Symbol "argc" is a complex DWARF expression: 37684 1: DW_OP_fbreg 0 37685@end smallexample 37686 37687For more information on these expressions, see 37688@uref{http://www.dwarfstd.org/, the DWARF standard}. 37689 37690@kindex maint set dwarf2 max-cache-age 37691@kindex maint show dwarf2 max-cache-age 37692@item maint set dwarf2 max-cache-age 37693@itemx maint show dwarf2 max-cache-age 37694Control the DWARF 2 compilation unit cache. 37695 37696@cindex DWARF 2 compilation units cache 37697In object files with inter-compilation-unit references, such as those 37698produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2 37699reader needs to frequently refer to previously read compilation units. 37700This setting controls how long a compilation unit will remain in the 37701cache if it is not referenced. A higher limit means that cached 37702compilation units will be stored in memory longer, and more total 37703memory will be used. Setting it to zero disables caching, which will 37704slow down @value{GDBN} startup, but reduce memory consumption. 37705 37706@kindex maint set profile 37707@kindex maint show profile 37708@cindex profiling GDB 37709@item maint set profile 37710@itemx maint show profile 37711Control profiling of @value{GDBN}. 37712 37713Profiling will be disabled until you use the @samp{maint set profile} 37714command to enable it. When you enable profiling, the system will begin 37715collecting timing and execution count data; when you disable profiling or 37716exit @value{GDBN}, the results will be written to a log file. Remember that 37717if you use profiling, @value{GDBN} will overwrite the profiling log file 37718(often called @file{gmon.out}). If you have a record of important profiling 37719data in a @file{gmon.out} file, be sure to move it to a safe location. 37720 37721Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be 37722compiled with the @samp{-pg} compiler option. 37723 37724@kindex maint set show-debug-regs 37725@kindex maint show show-debug-regs 37726@cindex hardware debug registers 37727@item maint set show-debug-regs 37728@itemx maint show show-debug-regs 37729Control whether to show variables that mirror the hardware debug 37730registers. Use @code{on} to enable, @code{off} to disable. If 37731enabled, the debug registers values are shown when @value{GDBN} inserts or 37732removes a hardware breakpoint or watchpoint, and when the inferior 37733triggers a hardware-assisted breakpoint or watchpoint. 37734 37735@kindex maint set show-all-tib 37736@kindex maint show show-all-tib 37737@item maint set show-all-tib 37738@itemx maint show show-all-tib 37739Control whether to show all non zero areas within a 1k block starting 37740at thread local base, when using the @samp{info w32 thread-information-block} 37741command. 37742 37743@kindex maint set per-command 37744@kindex maint show per-command 37745@item maint set per-command 37746@itemx maint show per-command 37747@cindex resources used by commands 37748 37749@value{GDBN} can display the resources used by each command. 37750This is useful in debugging performance problems. 37751 37752@table @code 37753@item maint set per-command space [on|off] 37754@itemx maint show per-command space 37755Enable or disable the printing of the memory used by GDB for each command. 37756If enabled, @value{GDBN} will display how much memory each command 37757took, following the command's own output. 37758This can also be requested by invoking @value{GDBN} with the 37759@option{--statistics} command-line switch (@pxref{Mode Options}). 37760 37761@item maint set per-command time [on|off] 37762@itemx maint show per-command time 37763Enable or disable the printing of the execution time of @value{GDBN} 37764for each command. 37765If enabled, @value{GDBN} will display how much time it 37766took to execute each command, following the command's own output. 37767Both CPU time and wallclock time are printed. 37768Printing both is useful when trying to determine whether the cost is 37769CPU or, e.g., disk/network latency. 37770Note that the CPU time printed is for @value{GDBN} only, it does not include 37771the execution time of the inferior because there's no mechanism currently 37772to compute how much time was spent by @value{GDBN} and how much time was 37773spent by the program been debugged. 37774This can also be requested by invoking @value{GDBN} with the 37775@option{--statistics} command-line switch (@pxref{Mode Options}). 37776 37777@item maint set per-command symtab [on|off] 37778@itemx maint show per-command symtab 37779Enable or disable the printing of basic symbol table statistics 37780for each command. 37781If enabled, @value{GDBN} will display the following information: 37782 37783@enumerate a 37784@item 37785number of symbol tables 37786@item 37787number of primary symbol tables 37788@item 37789number of blocks in the blockvector 37790@end enumerate 37791@end table 37792 37793@kindex maint space 37794@cindex memory used by commands 37795@item maint space @var{value} 37796An alias for @code{maint set per-command space}. 37797A non-zero value enables it, zero disables it. 37798 37799@kindex maint time 37800@cindex time of command execution 37801@item maint time @var{value} 37802An alias for @code{maint set per-command time}. 37803A non-zero value enables it, zero disables it. 37804 37805@kindex maint translate-address 37806@item maint translate-address @r{[}@var{section}@r{]} @var{addr} 37807Find the symbol stored at the location specified by the address 37808@var{addr} and an optional section name @var{section}. If found, 37809@value{GDBN} prints the name of the closest symbol and an offset from 37810the symbol's location to the specified address. This is similar to 37811the @code{info address} command (@pxref{Symbols}), except that this 37812command also allows to find symbols in other sections. 37813 37814If section was not specified, the section in which the symbol was found 37815is also printed. For dynamically linked executables, the name of 37816executable or shared library containing the symbol is printed as well. 37817 37818@end table 37819 37820The following command is useful for non-interactive invocations of 37821@value{GDBN}, such as in the test suite. 37822 37823@table @code 37824@item set watchdog @var{nsec} 37825@kindex set watchdog 37826@cindex watchdog timer 37827@cindex timeout for commands 37828Set the maximum number of seconds @value{GDBN} will wait for the 37829target operation to finish. If this time expires, @value{GDBN} 37830reports and error and the command is aborted. 37831 37832@item show watchdog 37833Show the current setting of the target wait timeout. 37834@end table 37835 37836@node Remote Protocol 37837@appendix @value{GDBN} Remote Serial Protocol 37838 37839@menu 37840* Overview:: 37841* Packets:: 37842* Stop Reply Packets:: 37843* General Query Packets:: 37844* Architecture-Specific Protocol Details:: 37845* Tracepoint Packets:: 37846* Host I/O Packets:: 37847* Interrupts:: 37848* Notification Packets:: 37849* Remote Non-Stop:: 37850* Packet Acknowledgment:: 37851* Examples:: 37852* File-I/O Remote Protocol Extension:: 37853* Library List Format:: 37854* Library List Format for SVR4 Targets:: 37855* Memory Map Format:: 37856* Thread List Format:: 37857* Traceframe Info Format:: 37858* Branch Trace Format:: 37859@end menu 37860 37861@node Overview 37862@section Overview 37863 37864There may be occasions when you need to know something about the 37865protocol---for example, if there is only one serial port to your target 37866machine, you might want your program to do something special if it 37867recognizes a packet meant for @value{GDBN}. 37868 37869In the examples below, @samp{->} and @samp{<-} are used to indicate 37870transmitted and received data, respectively. 37871 37872@cindex protocol, @value{GDBN} remote serial 37873@cindex serial protocol, @value{GDBN} remote 37874@cindex remote serial protocol 37875All @value{GDBN} commands and responses (other than acknowledgments 37876and notifications, see @ref{Notification Packets}) are sent as a 37877@var{packet}. A @var{packet} is introduced with the character 37878@samp{$}, the actual @var{packet-data}, and the terminating character 37879@samp{#} followed by a two-digit @var{checksum}: 37880 37881@smallexample 37882@code{$}@var{packet-data}@code{#}@var{checksum} 37883@end smallexample 37884@noindent 37885 37886@cindex checksum, for @value{GDBN} remote 37887@noindent 37888The two-digit @var{checksum} is computed as the modulo 256 sum of all 37889characters between the leading @samp{$} and the trailing @samp{#} (an 37890eight bit unsigned checksum). 37891 37892Implementors should note that prior to @value{GDBN} 5.0 the protocol 37893specification also included an optional two-digit @var{sequence-id}: 37894 37895@smallexample 37896@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum} 37897@end smallexample 37898 37899@cindex sequence-id, for @value{GDBN} remote 37900@noindent 37901That @var{sequence-id} was appended to the acknowledgment. @value{GDBN} 37902has never output @var{sequence-id}s. Stubs that handle packets added 37903since @value{GDBN} 5.0 must not accept @var{sequence-id}. 37904 37905When either the host or the target machine receives a packet, the first 37906response expected is an acknowledgment: either @samp{+} (to indicate 37907the package was received correctly) or @samp{-} (to request 37908retransmission): 37909 37910@smallexample 37911-> @code{$}@var{packet-data}@code{#}@var{checksum} 37912<- @code{+} 37913@end smallexample 37914@noindent 37915 37916The @samp{+}/@samp{-} acknowledgments can be disabled 37917once a connection is established. 37918@xref{Packet Acknowledgment}, for details. 37919 37920The host (@value{GDBN}) sends @var{command}s, and the target (the 37921debugging stub incorporated in your program) sends a @var{response}. In 37922the case of step and continue @var{command}s, the response is only sent 37923when the operation has completed, and the target has again stopped all 37924threads in all attached processes. This is the default all-stop mode 37925behavior, but the remote protocol also supports @value{GDBN}'s non-stop 37926execution mode; see @ref{Remote Non-Stop}, for details. 37927 37928@var{packet-data} consists of a sequence of characters with the 37929exception of @samp{#} and @samp{$} (see @samp{X} packet for additional 37930exceptions). 37931 37932@cindex remote protocol, field separator 37933Fields within the packet should be separated using @samp{,} @samp{;} or 37934@samp{:}. Except where otherwise noted all numbers are represented in 37935@sc{hex} with leading zeros suppressed. 37936 37937Implementors should note that prior to @value{GDBN} 5.0, the character 37938@samp{:} could not appear as the third character in a packet (as it 37939would potentially conflict with the @var{sequence-id}). 37940 37941@cindex remote protocol, binary data 37942@anchor{Binary Data} 37943Binary data in most packets is encoded either as two hexadecimal 37944digits per byte of binary data. This allowed the traditional remote 37945protocol to work over connections which were only seven-bit clean. 37946Some packets designed more recently assume an eight-bit clean 37947connection, and use a more efficient encoding to send and receive 37948binary data. 37949 37950The binary data representation uses @code{7d} (@sc{ascii} @samp{@}}) 37951as an escape character. Any escaped byte is transmitted as the escape 37952character followed by the original character XORed with @code{0x20}. 37953For example, the byte @code{0x7d} would be transmitted as the two 37954bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}), 37955@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii} 37956@samp{@}}) must always be escaped. Responses sent by the stub 37957must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it 37958is not interpreted as the start of a run-length encoded sequence 37959(described next). 37960 37961Response @var{data} can be run-length encoded to save space. 37962Run-length encoding replaces runs of identical characters with one 37963instance of the repeated character, followed by a @samp{*} and a 37964repeat count. The repeat count is itself sent encoded, to avoid 37965binary characters in @var{data}: a value of @var{n} is sent as 37966@code{@var{n}+29}. For a repeat count greater or equal to 3, this 37967produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii} 37968code 32) for a repeat count of 3. (This is because run-length 37969encoding starts to win for counts 3 or more.) Thus, for example, 37970@samp{0* } is a run-length encoding of ``0000'': the space character 37971after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 = 379723}} more times. 37973 37974The printable characters @samp{#} and @samp{$} or with a numeric value 37975greater than 126 must not be used. Runs of six repeats (@samp{#}) or 37976seven repeats (@samp{$}) can be expanded using a repeat count of only 37977five (@samp{"}). For example, @samp{00000000} can be encoded as 37978@samp{0*"00}. 37979 37980The error response returned for some packets includes a two character 37981error number. That number is not well defined. 37982 37983@cindex empty response, for unsupported packets 37984For any @var{command} not supported by the stub, an empty response 37985(@samp{$#00}) should be returned. That way it is possible to extend the 37986protocol. A newer @value{GDBN} can tell if a packet is supported based 37987on that response. 37988 37989At a minimum, a stub is required to support the @samp{g} and @samp{G} 37990commands for register access, and the @samp{m} and @samp{M} commands 37991for memory access. Stubs that only control single-threaded targets 37992can implement run control with the @samp{c} (continue), and @samp{s} 37993(step) commands. Stubs that support multi-threading targets should 37994support the @samp{vCont} command. All other commands are optional. 37995 37996@node Packets 37997@section Packets 37998 37999The following table provides a complete list of all currently defined 38000@var{command}s and their corresponding response @var{data}. 38001@xref{File-I/O Remote Protocol Extension}, for details about the File 38002I/O extension of the remote protocol. 38003 38004Each packet's description has a template showing the packet's overall 38005syntax, followed by an explanation of the packet's meaning. We 38006include spaces in some of the templates for clarity; these are not 38007part of the packet's syntax. No @value{GDBN} packet uses spaces to 38008separate its components. For example, a template like @samp{foo 38009@var{bar} @var{baz}} describes a packet beginning with the three ASCII 38010bytes @samp{foo}, followed by a @var{bar}, followed directly by a 38011@var{baz}. @value{GDBN} does not transmit a space character between the 38012@samp{foo} and the @var{bar}, or between the @var{bar} and the 38013@var{baz}. 38014 38015@cindex @var{thread-id}, in remote protocol 38016@anchor{thread-id syntax} 38017Several packets and replies include a @var{thread-id} field to identify 38018a thread. Normally these are positive numbers with a target-specific 38019interpretation, formatted as big-endian hex strings. A @var{thread-id} 38020can also be a literal @samp{-1} to indicate all threads, or @samp{0} to 38021pick any thread. 38022 38023In addition, the remote protocol supports a multiprocess feature in 38024which the @var{thread-id} syntax is extended to optionally include both 38025process and thread ID fields, as @samp{p@var{pid}.@var{tid}}. 38026The @var{pid} (process) and @var{tid} (thread) components each have the 38027format described above: a positive number with target-specific 38028interpretation formatted as a big-endian hex string, literal @samp{-1} 38029to indicate all processes or threads (respectively), or @samp{0} to 38030indicate an arbitrary process or thread. Specifying just a process, as 38031@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an 38032error to specify all processes but a specific thread, such as 38033@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used 38034for those packets and replies explicitly documented to include a process 38035ID, rather than a @var{thread-id}. 38036 38037The multiprocess @var{thread-id} syntax extensions are only used if both 38038@value{GDBN} and the stub report support for the @samp{multiprocess} 38039feature using @samp{qSupported}. @xref{multiprocess extensions}, for 38040more information. 38041 38042Note that all packet forms beginning with an upper- or lower-case 38043letter, other than those described here, are reserved for future use. 38044 38045Here are the packet descriptions. 38046 38047@table @samp 38048 38049@item ! 38050@cindex @samp{!} packet 38051@anchor{extended mode} 38052Enable extended mode. In extended mode, the remote server is made 38053persistent. The @samp{R} packet is used to restart the program being 38054debugged. 38055 38056Reply: 38057@table @samp 38058@item OK 38059The remote target both supports and has enabled extended mode. 38060@end table 38061 38062@item ? 38063@cindex @samp{?} packet 38064Indicate the reason the target halted. The reply is the same as for 38065step and continue. This packet has a special interpretation when the 38066target is in non-stop mode; see @ref{Remote Non-Stop}. 38067 38068Reply: 38069@xref{Stop Reply Packets}, for the reply specifications. 38070 38071@item A @var{arglen},@var{argnum},@var{arg},@dots{} 38072@cindex @samp{A} packet 38073Initialized @code{argv[]} array passed into program. @var{arglen} 38074specifies the number of bytes in the hex encoded byte stream 38075@var{arg}. See @code{gdbserver} for more details. 38076 38077Reply: 38078@table @samp 38079@item OK 38080The arguments were set. 38081@item E @var{NN} 38082An error occurred. 38083@end table 38084 38085@item b @var{baud} 38086@cindex @samp{b} packet 38087(Don't use this packet; its behavior is not well-defined.) 38088Change the serial line speed to @var{baud}. 38089 38090JTC: @emph{When does the transport layer state change? When it's 38091received, or after the ACK is transmitted. In either case, there are 38092problems if the command or the acknowledgment packet is dropped.} 38093 38094Stan: @emph{If people really wanted to add something like this, and get 38095it working for the first time, they ought to modify ser-unix.c to send 38096some kind of out-of-band message to a specially-setup stub and have the 38097switch happen "in between" packets, so that from remote protocol's point 38098of view, nothing actually happened.} 38099 38100@item B @var{addr},@var{mode} 38101@cindex @samp{B} packet 38102Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a 38103breakpoint at @var{addr}. 38104 38105Don't use this packet. Use the @samp{Z} and @samp{z} packets instead 38106(@pxref{insert breakpoint or watchpoint packet}). 38107 38108@cindex @samp{bc} packet 38109@anchor{bc} 38110@item bc 38111Backward continue. Execute the target system in reverse. No parameter. 38112@xref{Reverse Execution}, for more information. 38113 38114Reply: 38115@xref{Stop Reply Packets}, for the reply specifications. 38116 38117@cindex @samp{bs} packet 38118@anchor{bs} 38119@item bs 38120Backward single step. Execute one instruction in reverse. No parameter. 38121@xref{Reverse Execution}, for more information. 38122 38123Reply: 38124@xref{Stop Reply Packets}, for the reply specifications. 38125 38126@item c @r{[}@var{addr}@r{]} 38127@cindex @samp{c} packet 38128Continue. @var{addr} is address to resume. If @var{addr} is omitted, 38129resume at current address. 38130 38131This packet is deprecated for multi-threading support. @xref{vCont 38132packet}. 38133 38134Reply: 38135@xref{Stop Reply Packets}, for the reply specifications. 38136 38137@item C @var{sig}@r{[};@var{addr}@r{]} 38138@cindex @samp{C} packet 38139Continue with signal @var{sig} (hex signal number). If 38140@samp{;@var{addr}} is omitted, resume at same address. 38141 38142This packet is deprecated for multi-threading support. @xref{vCont 38143packet}. 38144 38145Reply: 38146@xref{Stop Reply Packets}, for the reply specifications. 38147 38148@item d 38149@cindex @samp{d} packet 38150Toggle debug flag. 38151 38152Don't use this packet; instead, define a general set packet 38153(@pxref{General Query Packets}). 38154 38155@item D 38156@itemx D;@var{pid} 38157@cindex @samp{D} packet 38158The first form of the packet is used to detach @value{GDBN} from the 38159remote system. It is sent to the remote target 38160before @value{GDBN} disconnects via the @code{detach} command. 38161 38162The second form, including a process ID, is used when multiprocess 38163protocol extensions are enabled (@pxref{multiprocess extensions}), to 38164detach only a specific process. The @var{pid} is specified as a 38165big-endian hex string. 38166 38167Reply: 38168@table @samp 38169@item OK 38170for success 38171@item E @var{NN} 38172for an error 38173@end table 38174 38175@item F @var{RC},@var{EE},@var{CF};@var{XX} 38176@cindex @samp{F} packet 38177A reply from @value{GDBN} to an @samp{F} packet sent by the target. 38178This is part of the File-I/O protocol extension. @xref{File-I/O 38179Remote Protocol Extension}, for the specification. 38180 38181@item g 38182@anchor{read registers packet} 38183@cindex @samp{g} packet 38184Read general registers. 38185 38186Reply: 38187@table @samp 38188@item @var{XX@dots{}} 38189Each byte of register data is described by two hex digits. The bytes 38190with the register are transmitted in target byte order. The size of 38191each register and their position within the @samp{g} packet are 38192determined by the @value{GDBN} internal gdbarch functions 38193@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The 38194specification of several standard @samp{g} packets is specified below. 38195 38196When reading registers from a trace frame (@pxref{Analyze Collected 38197Data,,Using the Collected Data}), the stub may also return a string of 38198literal @samp{x}'s in place of the register data digits, to indicate 38199that the corresponding register has not been collected, thus its value 38200is unavailable. For example, for an architecture with 4 registers of 382014 bytes each, the following reply indicates to @value{GDBN} that 38202registers 0 and 2 have not been collected, while registers 1 and 3 38203have been collected, and both have zero value: 38204 38205@smallexample 38206-> @code{g} 38207<- @code{xxxxxxxx00000000xxxxxxxx00000000} 38208@end smallexample 38209 38210@item E @var{NN} 38211for an error. 38212@end table 38213 38214@item G @var{XX@dots{}} 38215@cindex @samp{G} packet 38216Write general registers. @xref{read registers packet}, for a 38217description of the @var{XX@dots{}} data. 38218 38219Reply: 38220@table @samp 38221@item OK 38222for success 38223@item E @var{NN} 38224for an error 38225@end table 38226 38227@item H @var{op} @var{thread-id} 38228@cindex @samp{H} packet 38229Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g}, 38230@samp{G}, et.al.). @var{op} depends on the operation to be performed: 38231it should be @samp{c} for step and continue operations (note that this 38232is deprecated, supporting the @samp{vCont} command is a better 38233option), @samp{g} for other operations. The thread designator 38234@var{thread-id} has the format and interpretation described in 38235@ref{thread-id syntax}. 38236 38237Reply: 38238@table @samp 38239@item OK 38240for success 38241@item E @var{NN} 38242for an error 38243@end table 38244 38245@c FIXME: JTC: 38246@c 'H': How restrictive (or permissive) is the thread model. If a 38247@c thread is selected and stopped, are other threads allowed 38248@c to continue to execute? As I mentioned above, I think the 38249@c semantics of each command when a thread is selected must be 38250@c described. For example: 38251@c 38252@c 'g': If the stub supports threads and a specific thread is 38253@c selected, returns the register block from that thread; 38254@c otherwise returns current registers. 38255@c 38256@c 'G' If the stub supports threads and a specific thread is 38257@c selected, sets the registers of the register block of 38258@c that thread; otherwise sets current registers. 38259 38260@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]} 38261@anchor{cycle step packet} 38262@cindex @samp{i} packet 38263Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is 38264present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle 38265step starting at that address. 38266 38267@item I 38268@cindex @samp{I} packet 38269Signal, then cycle step. @xref{step with signal packet}. @xref{cycle 38270step packet}. 38271 38272@item k 38273@cindex @samp{k} packet 38274Kill request. 38275 38276FIXME: @emph{There is no description of how to operate when a specific 38277thread context has been selected (i.e.@: does 'k' kill only that 38278thread?)}. 38279 38280@item m @var{addr},@var{length} 38281@cindex @samp{m} packet 38282Read @var{length} bytes of memory starting at address @var{addr}. 38283Note that @var{addr} may not be aligned to any particular boundary. 38284 38285The stub need not use any particular size or alignment when gathering 38286data from memory for the response; even if @var{addr} is word-aligned 38287and @var{length} is a multiple of the word size, the stub is free to 38288use byte accesses, or not. For this reason, this packet may not be 38289suitable for accessing memory-mapped I/O devices. 38290@cindex alignment of remote memory accesses 38291@cindex size of remote memory accesses 38292@cindex memory, alignment and size of remote accesses 38293 38294Reply: 38295@table @samp 38296@item @var{XX@dots{}} 38297Memory contents; each byte is transmitted as a two-digit hexadecimal 38298number. The reply may contain fewer bytes than requested if the 38299server was able to read only part of the region of memory. 38300@item E @var{NN} 38301@var{NN} is errno 38302@end table 38303 38304@item M @var{addr},@var{length}:@var{XX@dots{}} 38305@cindex @samp{M} packet 38306Write @var{length} bytes of memory starting at address @var{addr}. 38307@var{XX@dots{}} is the data; each byte is transmitted as a two-digit 38308hexadecimal number. 38309 38310Reply: 38311@table @samp 38312@item OK 38313for success 38314@item E @var{NN} 38315for an error (this includes the case where only part of the data was 38316written). 38317@end table 38318 38319@item p @var{n} 38320@cindex @samp{p} packet 38321Read the value of register @var{n}; @var{n} is in hex. 38322@xref{read registers packet}, for a description of how the returned 38323register value is encoded. 38324 38325Reply: 38326@table @samp 38327@item @var{XX@dots{}} 38328the register's value 38329@item E @var{NN} 38330for an error 38331@item @w{} 38332Indicating an unrecognized @var{query}. 38333@end table 38334 38335@item P @var{n@dots{}}=@var{r@dots{}} 38336@anchor{write register packet} 38337@cindex @samp{P} packet 38338Write register @var{n@dots{}} with value @var{r@dots{}}. The register 38339number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex 38340digits for each byte in the register (target byte order). 38341 38342Reply: 38343@table @samp 38344@item OK 38345for success 38346@item E @var{NN} 38347for an error 38348@end table 38349 38350@item q @var{name} @var{params}@dots{} 38351@itemx Q @var{name} @var{params}@dots{} 38352@cindex @samp{q} packet 38353@cindex @samp{Q} packet 38354General query (@samp{q}) and set (@samp{Q}). These packets are 38355described fully in @ref{General Query Packets}. 38356 38357@item r 38358@cindex @samp{r} packet 38359Reset the entire system. 38360 38361Don't use this packet; use the @samp{R} packet instead. 38362 38363@item R @var{XX} 38364@cindex @samp{R} packet 38365Restart the program being debugged. @var{XX}, while needed, is ignored. 38366This packet is only available in extended mode (@pxref{extended mode}). 38367 38368The @samp{R} packet has no reply. 38369 38370@item s @r{[}@var{addr}@r{]} 38371@cindex @samp{s} packet 38372Single step. @var{addr} is the address at which to resume. If 38373@var{addr} is omitted, resume at same address. 38374 38375This packet is deprecated for multi-threading support. @xref{vCont 38376packet}. 38377 38378Reply: 38379@xref{Stop Reply Packets}, for the reply specifications. 38380 38381@item S @var{sig}@r{[};@var{addr}@r{]} 38382@anchor{step with signal packet} 38383@cindex @samp{S} packet 38384Step with signal. This is analogous to the @samp{C} packet, but 38385requests a single-step, rather than a normal resumption of execution. 38386 38387This packet is deprecated for multi-threading support. @xref{vCont 38388packet}. 38389 38390Reply: 38391@xref{Stop Reply Packets}, for the reply specifications. 38392 38393@item t @var{addr}:@var{PP},@var{MM} 38394@cindex @samp{t} packet 38395Search backwards starting at address @var{addr} for a match with pattern 38396@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes. 38397@var{addr} must be at least 3 digits. 38398 38399@item T @var{thread-id} 38400@cindex @samp{T} packet 38401Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}. 38402 38403Reply: 38404@table @samp 38405@item OK 38406thread is still alive 38407@item E @var{NN} 38408thread is dead 38409@end table 38410 38411@item v 38412Packets starting with @samp{v} are identified by a multi-letter name, 38413up to the first @samp{;} or @samp{?} (or the end of the packet). 38414 38415@item vAttach;@var{pid} 38416@cindex @samp{vAttach} packet 38417Attach to a new process with the specified process ID @var{pid}. 38418The process ID is a 38419hexadecimal integer identifying the process. In all-stop mode, all 38420threads in the attached process are stopped; in non-stop mode, it may be 38421attached without being stopped if that is supported by the target. 38422 38423@c In non-stop mode, on a successful vAttach, the stub should set the 38424@c current thread to a thread of the newly-attached process. After 38425@c attaching, GDB queries for the attached process's thread ID with qC. 38426@c Also note that, from a user perspective, whether or not the 38427@c target is stopped on attach in non-stop mode depends on whether you 38428@c use the foreground or background version of the attach command, not 38429@c on what vAttach does; GDB does the right thing with respect to either 38430@c stopping or restarting threads. 38431 38432This packet is only available in extended mode (@pxref{extended mode}). 38433 38434Reply: 38435@table @samp 38436@item E @var{nn} 38437for an error 38438@item @r{Any stop packet} 38439for success in all-stop mode (@pxref{Stop Reply Packets}) 38440@item OK 38441for success in non-stop mode (@pxref{Remote Non-Stop}) 38442@end table 38443 38444@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{} 38445@cindex @samp{vCont} packet 38446@anchor{vCont packet} 38447Resume the inferior, specifying different actions for each thread. 38448If an action is specified with no @var{thread-id}, then it is applied to any 38449threads that don't have a specific action specified; if no default action is 38450specified then other threads should remain stopped in all-stop mode and 38451in their current state in non-stop mode. 38452Specifying multiple 38453default actions is an error; specifying no actions is also an error. 38454Thread IDs are specified using the syntax described in @ref{thread-id syntax}. 38455 38456Currently supported actions are: 38457 38458@table @samp 38459@item c 38460Continue. 38461@item C @var{sig} 38462Continue with signal @var{sig}. The signal @var{sig} should be two hex digits. 38463@item s 38464Step. 38465@item S @var{sig} 38466Step with signal @var{sig}. The signal @var{sig} should be two hex digits. 38467@item t 38468Stop. 38469@item r @var{start},@var{end} 38470Step once, and then keep stepping as long as the thread stops at 38471addresses between @var{start} (inclusive) and @var{end} (exclusive). 38472The remote stub reports a stop reply when either the thread goes out 38473of the range or is stopped due to an unrelated reason, such as hitting 38474a breakpoint. @xref{range stepping}. 38475 38476If the range is empty (@var{start} == @var{end}), then the action 38477becomes equivalent to the @samp{s} action. In other words, 38478single-step once, and report the stop (even if the stepped instruction 38479jumps to @var{start}). 38480 38481(A stop reply may be sent at any point even if the PC is still within 38482the stepping range; for example, it is valid to implement this packet 38483in a degenerate way as a single instruction step operation.) 38484 38485@end table 38486 38487The optional argument @var{addr} normally associated with the 38488@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is 38489not supported in @samp{vCont}. 38490 38491The @samp{t} action is only relevant in non-stop mode 38492(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise. 38493A stop reply should be generated for any affected thread not already stopped. 38494When a thread is stopped by means of a @samp{t} action, 38495the corresponding stop reply should indicate that the thread has stopped with 38496signal @samp{0}, regardless of whether the target uses some other signal 38497as an implementation detail. 38498 38499The stub must support @samp{vCont} if it reports support for 38500multiprocess extensions (@pxref{multiprocess extensions}). Note that in 38501this case @samp{vCont} actions can be specified to apply to all threads 38502in a process by using the @samp{p@var{pid}.-1} form of the 38503@var{thread-id}. 38504 38505Reply: 38506@xref{Stop Reply Packets}, for the reply specifications. 38507 38508@item vCont? 38509@cindex @samp{vCont?} packet 38510Request a list of actions supported by the @samp{vCont} packet. 38511 38512Reply: 38513@table @samp 38514@item vCont@r{[};@var{action}@dots{}@r{]} 38515The @samp{vCont} packet is supported. Each @var{action} is a supported 38516command in the @samp{vCont} packet. 38517@item @w{} 38518The @samp{vCont} packet is not supported. 38519@end table 38520 38521@item vFile:@var{operation}:@var{parameter}@dots{} 38522@cindex @samp{vFile} packet 38523Perform a file operation on the target system. For details, 38524see @ref{Host I/O Packets}. 38525 38526@item vFlashErase:@var{addr},@var{length} 38527@cindex @samp{vFlashErase} packet 38528Direct the stub to erase @var{length} bytes of flash starting at 38529@var{addr}. The region may enclose any number of flash blocks, but 38530its start and end must fall on block boundaries, as indicated by the 38531flash block size appearing in the memory map (@pxref{Memory Map 38532Format}). @value{GDBN} groups flash memory programming operations 38533together, and sends a @samp{vFlashDone} request after each group; the 38534stub is allowed to delay erase operation until the @samp{vFlashDone} 38535packet is received. 38536 38537Reply: 38538@table @samp 38539@item OK 38540for success 38541@item E @var{NN} 38542for an error 38543@end table 38544 38545@item vFlashWrite:@var{addr}:@var{XX@dots{}} 38546@cindex @samp{vFlashWrite} packet 38547Direct the stub to write data to flash address @var{addr}. The data 38548is passed in binary form using the same encoding as for the @samp{X} 38549packet (@pxref{Binary Data}). The memory ranges specified by 38550@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must 38551not overlap, and must appear in order of increasing addresses 38552(although @samp{vFlashErase} packets for higher addresses may already 38553have been received; the ordering is guaranteed only between 38554@samp{vFlashWrite} packets). If a packet writes to an address that was 38555neither erased by a preceding @samp{vFlashErase} packet nor by some other 38556target-specific method, the results are unpredictable. 38557 38558 38559Reply: 38560@table @samp 38561@item OK 38562for success 38563@item E.memtype 38564for vFlashWrite addressing non-flash memory 38565@item E @var{NN} 38566for an error 38567@end table 38568 38569@item vFlashDone 38570@cindex @samp{vFlashDone} packet 38571Indicate to the stub that flash programming operation is finished. 38572The stub is permitted to delay or batch the effects of a group of 38573@samp{vFlashErase} and @samp{vFlashWrite} packets until a 38574@samp{vFlashDone} packet is received. The contents of the affected 38575regions of flash memory are unpredictable until the @samp{vFlashDone} 38576request is completed. 38577 38578@item vKill;@var{pid} 38579@cindex @samp{vKill} packet 38580Kill the process with the specified process ID. @var{pid} is a 38581hexadecimal integer identifying the process. This packet is used in 38582preference to @samp{k} when multiprocess protocol extensions are 38583supported; see @ref{multiprocess extensions}. 38584 38585Reply: 38586@table @samp 38587@item E @var{nn} 38588for an error 38589@item OK 38590for success 38591@end table 38592 38593@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{} 38594@cindex @samp{vRun} packet 38595Run the program @var{filename}, passing it each @var{argument} on its 38596command line. The file and arguments are hex-encoded strings. If 38597@var{filename} is an empty string, the stub may use a default program 38598(e.g.@: the last program run). The program is created in the stopped 38599state. 38600 38601@c FIXME: What about non-stop mode? 38602 38603This packet is only available in extended mode (@pxref{extended mode}). 38604 38605Reply: 38606@table @samp 38607@item E @var{nn} 38608for an error 38609@item @r{Any stop packet} 38610for success (@pxref{Stop Reply Packets}) 38611@end table 38612 38613@item vStopped 38614@cindex @samp{vStopped} packet 38615@xref{Notification Packets}. 38616 38617@item X @var{addr},@var{length}:@var{XX@dots{}} 38618@anchor{X packet} 38619@cindex @samp{X} packet 38620Write data to memory, where the data is transmitted in binary. 38621@var{addr} is address, @var{length} is number of bytes, 38622@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}). 38623 38624Reply: 38625@table @samp 38626@item OK 38627for success 38628@item E @var{NN} 38629for an error 38630@end table 38631 38632@item z @var{type},@var{addr},@var{kind} 38633@itemx Z @var{type},@var{addr},@var{kind} 38634@anchor{insert breakpoint or watchpoint packet} 38635@cindex @samp{z} packet 38636@cindex @samp{Z} packets 38637Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or 38638watchpoint starting at address @var{address} of kind @var{kind}. 38639 38640Each breakpoint and watchpoint packet @var{type} is documented 38641separately. 38642 38643@emph{Implementation notes: A remote target shall return an empty string 38644for an unrecognized breakpoint or watchpoint packet @var{type}. A 38645remote target shall support either both or neither of a given 38646@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To 38647avoid potential problems with duplicate packets, the operations should 38648be implemented in an idempotent way.} 38649 38650@item z0,@var{addr},@var{kind} 38651@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]} 38652@cindex @samp{z0} packet 38653@cindex @samp{Z0} packet 38654Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address 38655@var{addr} of type @var{kind}. 38656 38657A memory breakpoint is implemented by replacing the instruction at 38658@var{addr} with a software breakpoint or trap instruction. The 38659@var{kind} is target-specific and typically indicates the size of 38660the breakpoint in bytes that should be inserted. E.g., the @sc{arm} 38661and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some 38662architectures have additional meanings for @var{kind}; 38663@var{cond_list} is an optional list of conditional expressions in bytecode 38664form that should be evaluated on the target's side. These are the 38665conditions that should be taken into consideration when deciding if 38666the breakpoint trigger should be reported back to @var{GDBN}. 38667 38668The @var{cond_list} parameter is comprised of a series of expressions, 38669concatenated without separators. Each expression has the following form: 38670 38671@table @samp 38672 38673@item X @var{len},@var{expr} 38674@var{len} is the length of the bytecode expression and @var{expr} is the 38675actual conditional expression in bytecode form. 38676 38677@end table 38678 38679The optional @var{cmd_list} parameter introduces commands that may be 38680run on the target, rather than being reported back to @value{GDBN}. 38681The parameter starts with a numeric flag @var{persist}; if the flag is 38682nonzero, then the breakpoint may remain active and the commands 38683continue to be run even when @value{GDBN} disconnects from the target. 38684Following this flag is a series of expressions concatenated with no 38685separators. Each expression has the following form: 38686 38687@table @samp 38688 38689@item X @var{len},@var{expr} 38690@var{len} is the length of the bytecode expression and @var{expr} is the 38691actual conditional expression in bytecode form. 38692 38693@end table 38694 38695see @ref{Architecture-Specific Protocol Details}. 38696 38697@emph{Implementation note: It is possible for a target to copy or move 38698code that contains memory breakpoints (e.g., when implementing 38699overlays). The behavior of this packet, in the presence of such a 38700target, is not defined.} 38701 38702Reply: 38703@table @samp 38704@item OK 38705success 38706@item @w{} 38707not supported 38708@item E @var{NN} 38709for an error 38710@end table 38711 38712@item z1,@var{addr},@var{kind} 38713@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]} 38714@cindex @samp{z1} packet 38715@cindex @samp{Z1} packet 38716Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at 38717address @var{addr}. 38718 38719A hardware breakpoint is implemented using a mechanism that is not 38720dependant on being able to modify the target's memory. @var{kind} 38721and @var{cond_list} have the same meaning as in @samp{Z0} packets. 38722 38723@emph{Implementation note: A hardware breakpoint is not affected by code 38724movement.} 38725 38726Reply: 38727@table @samp 38728@item OK 38729success 38730@item @w{} 38731not supported 38732@item E @var{NN} 38733for an error 38734@end table 38735 38736@item z2,@var{addr},@var{kind} 38737@itemx Z2,@var{addr},@var{kind} 38738@cindex @samp{z2} packet 38739@cindex @samp{Z2} packet 38740Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}. 38741@var{kind} is interpreted as the number of bytes to watch. 38742 38743Reply: 38744@table @samp 38745@item OK 38746success 38747@item @w{} 38748not supported 38749@item E @var{NN} 38750for an error 38751@end table 38752 38753@item z3,@var{addr},@var{kind} 38754@itemx Z3,@var{addr},@var{kind} 38755@cindex @samp{z3} packet 38756@cindex @samp{Z3} packet 38757Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}. 38758@var{kind} is interpreted as the number of bytes to watch. 38759 38760Reply: 38761@table @samp 38762@item OK 38763success 38764@item @w{} 38765not supported 38766@item E @var{NN} 38767for an error 38768@end table 38769 38770@item z4,@var{addr},@var{kind} 38771@itemx Z4,@var{addr},@var{kind} 38772@cindex @samp{z4} packet 38773@cindex @samp{Z4} packet 38774Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}. 38775@var{kind} is interpreted as the number of bytes to watch. 38776 38777Reply: 38778@table @samp 38779@item OK 38780success 38781@item @w{} 38782not supported 38783@item E @var{NN} 38784for an error 38785@end table 38786 38787@end table 38788 38789@node Stop Reply Packets 38790@section Stop Reply Packets 38791@cindex stop reply packets 38792 38793The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont}, 38794@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can 38795receive any of the below as a reply. Except for @samp{?} 38796and @samp{vStopped}, that reply is only returned 38797when the target halts. In the below the exact meaning of @dfn{signal 38798number} is defined by the header @file{include/gdb/signals.h} in the 38799@value{GDBN} source code. 38800 38801As in the description of request packets, we include spaces in the 38802reply templates for clarity; these are not part of the reply packet's 38803syntax. No @value{GDBN} stop reply packet uses spaces to separate its 38804components. 38805 38806@table @samp 38807 38808@item S @var{AA} 38809The program received signal number @var{AA} (a two-digit hexadecimal 38810number). This is equivalent to a @samp{T} response with no 38811@var{n}:@var{r} pairs. 38812 38813@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{} 38814@cindex @samp{T} packet reply 38815The program received signal number @var{AA} (a two-digit hexadecimal 38816number). This is equivalent to an @samp{S} response, except that the 38817@samp{@var{n}:@var{r}} pairs can carry values of important registers 38818and other information directly in the stop reply packet, reducing 38819round-trip latency. Single-step and breakpoint traps are reported 38820this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows: 38821 38822@itemize @bullet 38823@item 38824If @var{n} is a hexadecimal number, it is a register number, and the 38825corresponding @var{r} gives that register's value. @var{r} is a 38826series of bytes in target byte order, with each byte given by a 38827two-digit hex number. 38828 38829@item 38830If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of 38831the stopped thread, as specified in @ref{thread-id syntax}. 38832 38833@item 38834If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of 38835the core on which the stop event was detected. 38836 38837@item 38838If @var{n} is a recognized @dfn{stop reason}, it describes a more 38839specific event that stopped the target. The currently defined stop 38840reasons are listed below. @var{aa} should be @samp{05}, the trap 38841signal. At most one stop reason should be present. 38842 38843@item 38844Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair 38845and go on to the next; this allows us to extend the protocol in the 38846future. 38847@end itemize 38848 38849The currently defined stop reasons are: 38850 38851@table @samp 38852@item watch 38853@itemx rwatch 38854@itemx awatch 38855The packet indicates a watchpoint hit, and @var{r} is the data address, in 38856hex. 38857 38858@cindex shared library events, remote reply 38859@item library 38860The packet indicates that the loaded libraries have changed. 38861@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new 38862list of loaded libraries. @var{r} is ignored. 38863 38864@cindex replay log events, remote reply 38865@item replaylog 38866The packet indicates that the target cannot continue replaying 38867logged execution events, because it has reached the end (or the 38868beginning when executing backward) of the log. The value of @var{r} 38869will be either @samp{begin} or @samp{end}. @xref{Reverse Execution}, 38870for more information. 38871@end table 38872 38873@item W @var{AA} 38874@itemx W @var{AA} ; process:@var{pid} 38875The process exited, and @var{AA} is the exit status. This is only 38876applicable to certain targets. 38877 38878The second form of the response, including the process ID of the exited 38879process, can be used only when @value{GDBN} has reported support for 38880multiprocess protocol extensions; see @ref{multiprocess extensions}. 38881The @var{pid} is formatted as a big-endian hex string. 38882 38883@item X @var{AA} 38884@itemx X @var{AA} ; process:@var{pid} 38885The process terminated with signal @var{AA}. 38886 38887The second form of the response, including the process ID of the 38888terminated process, can be used only when @value{GDBN} has reported 38889support for multiprocess protocol extensions; see @ref{multiprocess 38890extensions}. The @var{pid} is formatted as a big-endian hex string. 38891 38892@item O @var{XX}@dots{} 38893@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be 38894written as the program's console output. This can happen at any time 38895while the program is running and the debugger should continue to wait 38896for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode. 38897 38898@item F @var{call-id},@var{parameter}@dots{} 38899@var{call-id} is the identifier which says which host system call should 38900be called. This is just the name of the function. Translation into the 38901correct system call is only applicable as it's defined in @value{GDBN}. 38902@xref{File-I/O Remote Protocol Extension}, for a list of implemented 38903system calls. 38904 38905@samp{@var{parameter}@dots{}} is a list of parameters as defined for 38906this very system call. 38907 38908The target replies with this packet when it expects @value{GDBN} to 38909call a host system call on behalf of the target. @value{GDBN} replies 38910with an appropriate @samp{F} packet and keeps up waiting for the next 38911reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S} 38912or @samp{s} action is expected to be continued. @xref{File-I/O Remote 38913Protocol Extension}, for more details. 38914 38915@end table 38916 38917@node General Query Packets 38918@section General Query Packets 38919@cindex remote query requests 38920 38921Packets starting with @samp{q} are @dfn{general query packets}; 38922packets starting with @samp{Q} are @dfn{general set packets}. General 38923query and set packets are a semi-unified form for retrieving and 38924sending information to and from the stub. 38925 38926The initial letter of a query or set packet is followed by a name 38927indicating what sort of thing the packet applies to. For example, 38928@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol 38929definitions with the stub. These packet names follow some 38930conventions: 38931 38932@itemize @bullet 38933@item 38934The name must not contain commas, colons or semicolons. 38935@item 38936Most @value{GDBN} query and set packets have a leading upper case 38937letter. 38938@item 38939The names of custom vendor packets should use a company prefix, in 38940lower case, followed by a period. For example, packets designed at 38941the Acme Corporation might begin with @samp{qacme.foo} (for querying 38942foos) or @samp{Qacme.bar} (for setting bars). 38943@end itemize 38944 38945The name of a query or set packet should be separated from any 38946parameters by a @samp{:}; the parameters themselves should be 38947separated by @samp{,} or @samp{;}. Stubs must be careful to match the 38948full packet name, and check for a separator or the end of the packet, 38949in case two packet names share a common prefix. New packets should not begin 38950with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL} 38951packets predate these conventions, and have arguments without any terminator 38952for the packet name; we suspect they are in widespread use in places that 38953are difficult to upgrade. The @samp{qC} packet has no arguments, but some 38954existing stubs (e.g.@: RedBoot) are known to not check for the end of the 38955packet.}. 38956 38957Like the descriptions of the other packets, each description here 38958has a template showing the packet's overall syntax, followed by an 38959explanation of the packet's meaning. We include spaces in some of the 38960templates for clarity; these are not part of the packet's syntax. No 38961@value{GDBN} packet uses spaces to separate its components. 38962 38963Here are the currently defined query and set packets: 38964 38965@table @samp 38966 38967@item QAgent:1 38968@itemx QAgent:0 38969Turn on or off the agent as a helper to perform some debugging operations 38970delegated from @value{GDBN} (@pxref{Control Agent}). 38971 38972@item QAllow:@var{op}:@var{val}@dots{} 38973@cindex @samp{QAllow} packet 38974Specify which operations @value{GDBN} expects to request of the 38975target, as a semicolon-separated list of operation name and value 38976pairs. Possible values for @var{op} include @samp{WriteReg}, 38977@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace}, 38978@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0, 38979indicating that @value{GDBN} will not request the operation, or 1, 38980indicating that it may. (The target can then use this to set up its 38981own internals optimally, for instance if the debugger never expects to 38982insert breakpoints, it may not need to install its own trap handler.) 38983 38984@item qC 38985@cindex current thread, remote request 38986@cindex @samp{qC} packet 38987Return the current thread ID. 38988 38989Reply: 38990@table @samp 38991@item QC @var{thread-id} 38992Where @var{thread-id} is a thread ID as documented in 38993@ref{thread-id syntax}. 38994@item @r{(anything else)} 38995Any other reply implies the old thread ID. 38996@end table 38997 38998@item qCRC:@var{addr},@var{length} 38999@cindex CRC of memory block, remote request 39000@cindex @samp{qCRC} packet 39001Compute the CRC checksum of a block of memory using CRC-32 defined in 39002IEEE 802.3. The CRC is computed byte at a time, taking the most 39003significant bit of each byte first. The initial pattern code 39004@code{0xffffffff} is used to ensure leading zeros affect the CRC. 39005 39006@emph{Note:} This is the same CRC used in validating separate debug 39007files (@pxref{Separate Debug Files, , Debugging Information in Separate 39008Files}). However the algorithm is slightly different. When validating 39009separate debug files, the CRC is computed taking the @emph{least} 39010significant bit of each byte first, and the final result is inverted to 39011detect trailing zeros. 39012 39013Reply: 39014@table @samp 39015@item E @var{NN} 39016An error (such as memory fault) 39017@item C @var{crc32} 39018The specified memory region's checksum is @var{crc32}. 39019@end table 39020 39021@item QDisableRandomization:@var{value} 39022@cindex disable address space randomization, remote request 39023@cindex @samp{QDisableRandomization} packet 39024Some target operating systems will randomize the virtual address space 39025of the inferior process as a security feature, but provide a feature 39026to disable such randomization, e.g.@: to allow for a more deterministic 39027debugging experience. On such systems, this packet with a @var{value} 39028of 1 directs the target to disable address space randomization for 39029processes subsequently started via @samp{vRun} packets, while a packet 39030with a @var{value} of 0 tells the target to enable address space 39031randomization. 39032 39033This packet is only available in extended mode (@pxref{extended mode}). 39034 39035Reply: 39036@table @samp 39037@item OK 39038The request succeeded. 39039 39040@item E @var{nn} 39041An error occurred. @var{nn} are hex digits. 39042 39043@item @w{} 39044An empty reply indicates that @samp{QDisableRandomization} is not supported 39045by the stub. 39046@end table 39047 39048This packet is not probed by default; the remote stub must request it, 39049by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39050This should only be done on targets that actually support disabling 39051address space randomization. 39052 39053@item qfThreadInfo 39054@itemx qsThreadInfo 39055@cindex list active threads, remote request 39056@cindex @samp{qfThreadInfo} packet 39057@cindex @samp{qsThreadInfo} packet 39058Obtain a list of all active thread IDs from the target (OS). Since there 39059may be too many active threads to fit into one reply packet, this query 39060works iteratively: it may require more than one query/reply sequence to 39061obtain the entire list of threads. The first query of the sequence will 39062be the @samp{qfThreadInfo} query; subsequent queries in the 39063sequence will be the @samp{qsThreadInfo} query. 39064 39065NOTE: This packet replaces the @samp{qL} query (see below). 39066 39067Reply: 39068@table @samp 39069@item m @var{thread-id} 39070A single thread ID 39071@item m @var{thread-id},@var{thread-id}@dots{} 39072a comma-separated list of thread IDs 39073@item l 39074(lower case letter @samp{L}) denotes end of list. 39075@end table 39076 39077In response to each query, the target will reply with a list of one or 39078more thread IDs, separated by commas. 39079@value{GDBN} will respond to each reply with a request for more thread 39080ids (using the @samp{qs} form of the query), until the target responds 39081with @samp{l} (lower-case ell, for @dfn{last}). 39082Refer to @ref{thread-id syntax}, for the format of the @var{thread-id} 39083fields. 39084 39085@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm} 39086@cindex get thread-local storage address, remote request 39087@cindex @samp{qGetTLSAddr} packet 39088Fetch the address associated with thread local storage specified 39089by @var{thread-id}, @var{offset}, and @var{lm}. 39090 39091@var{thread-id} is the thread ID associated with the 39092thread for which to fetch the TLS address. @xref{thread-id syntax}. 39093 39094@var{offset} is the (big endian, hex encoded) offset associated with the 39095thread local variable. (This offset is obtained from the debug 39096information associated with the variable.) 39097 39098@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the 39099load module associated with the thread local storage. For example, 39100a @sc{gnu}/Linux system will pass the link map address of the shared 39101object associated with the thread local storage under consideration. 39102Other operating environments may choose to represent the load module 39103differently, so the precise meaning of this parameter will vary. 39104 39105Reply: 39106@table @samp 39107@item @var{XX}@dots{} 39108Hex encoded (big endian) bytes representing the address of the thread 39109local storage requested. 39110 39111@item E @var{nn} 39112An error occurred. @var{nn} are hex digits. 39113 39114@item @w{} 39115An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub. 39116@end table 39117 39118@item qGetTIBAddr:@var{thread-id} 39119@cindex get thread information block address 39120@cindex @samp{qGetTIBAddr} packet 39121Fetch address of the Windows OS specific Thread Information Block. 39122 39123@var{thread-id} is the thread ID associated with the thread. 39124 39125Reply: 39126@table @samp 39127@item @var{XX}@dots{} 39128Hex encoded (big endian) bytes representing the linear address of the 39129thread information block. 39130 39131@item E @var{nn} 39132An error occured. This means that either the thread was not found, or the 39133address could not be retrieved. 39134 39135@item @w{} 39136An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub. 39137@end table 39138 39139@item qL @var{startflag} @var{threadcount} @var{nextthread} 39140Obtain thread information from RTOS. Where: @var{startflag} (one hex 39141digit) is one to indicate the first query and zero to indicate a 39142subsequent query; @var{threadcount} (two hex digits) is the maximum 39143number of threads the response packet can contain; and @var{nextthread} 39144(eight hex digits), for subsequent queries (@var{startflag} is zero), is 39145returned in the response as @var{argthread}. 39146 39147Don't use this packet; use the @samp{qfThreadInfo} query instead (see above). 39148 39149Reply: 39150@table @samp 39151@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{} 39152Where: @var{count} (two hex digits) is the number of threads being 39153returned; @var{done} (one hex digit) is zero to indicate more threads 39154and one indicates no further threads; @var{argthreadid} (eight hex 39155digits) is @var{nextthread} from the request packet; @var{thread}@dots{} 39156is a sequence of thread IDs from the target. @var{threadid} (eight hex 39157digits). See @code{remote.c:parse_threadlist_response()}. 39158@end table 39159 39160@item qOffsets 39161@cindex section offsets, remote request 39162@cindex @samp{qOffsets} packet 39163Get section offsets that the target used when relocating the downloaded 39164image. 39165 39166Reply: 39167@table @samp 39168@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]} 39169Relocate the @code{Text} section by @var{xxx} from its original address. 39170Relocate the @code{Data} section by @var{yyy} from its original address. 39171If the object file format provides segment information (e.g.@: @sc{elf} 39172@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire 39173segments by the supplied offsets. 39174 39175@emph{Note: while a @code{Bss} offset may be included in the response, 39176@value{GDBN} ignores this and instead applies the @code{Data} offset 39177to the @code{Bss} section.} 39178 39179@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]} 39180Relocate the first segment of the object file, which conventionally 39181contains program code, to a starting address of @var{xxx}. If 39182@samp{DataSeg} is specified, relocate the second segment, which 39183conventionally contains modifiable data, to a starting address of 39184@var{yyy}. @value{GDBN} will report an error if the object file 39185does not contain segment information, or does not contain at least 39186as many segments as mentioned in the reply. Extra segments are 39187kept at fixed offsets relative to the last relocated segment. 39188@end table 39189 39190@item qP @var{mode} @var{thread-id} 39191@cindex thread information, remote request 39192@cindex @samp{qP} packet 39193Returns information on @var{thread-id}. Where: @var{mode} is a hex 39194encoded 32 bit mode; @var{thread-id} is a thread ID 39195(@pxref{thread-id syntax}). 39196 39197Don't use this packet; use the @samp{qThreadExtraInfo} query instead 39198(see below). 39199 39200Reply: see @code{remote.c:remote_unpack_thread_info_response()}. 39201 39202@item QNonStop:1 39203@itemx QNonStop:0 39204@cindex non-stop mode, remote request 39205@cindex @samp{QNonStop} packet 39206@anchor{QNonStop} 39207Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode. 39208@xref{Remote Non-Stop}, for more information. 39209 39210Reply: 39211@table @samp 39212@item OK 39213The request succeeded. 39214 39215@item E @var{nn} 39216An error occurred. @var{nn} are hex digits. 39217 39218@item @w{} 39219An empty reply indicates that @samp{QNonStop} is not supported by 39220the stub. 39221@end table 39222 39223This packet is not probed by default; the remote stub must request it, 39224by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39225Use of this packet is controlled by the @code{set non-stop} command; 39226@pxref{Non-Stop Mode}. 39227 39228@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 39229@cindex pass signals to inferior, remote request 39230@cindex @samp{QPassSignals} packet 39231@anchor{QPassSignals} 39232Each listed @var{signal} should be passed directly to the inferior process. 39233Signals are numbered identically to continue packets and stop replies 39234(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 39235strictly greater than the previous item. These signals do not need to stop 39236the inferior, or be reported to @value{GDBN}. All other signals should be 39237reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not 39238combine; any earlier @samp{QPassSignals} list is completely replaced by the 39239new list. This packet improves performance when using @samp{handle 39240@var{signal} nostop noprint pass}. 39241 39242Reply: 39243@table @samp 39244@item OK 39245The request succeeded. 39246 39247@item E @var{nn} 39248An error occurred. @var{nn} are hex digits. 39249 39250@item @w{} 39251An empty reply indicates that @samp{QPassSignals} is not supported by 39252the stub. 39253@end table 39254 39255Use of this packet is controlled by the @code{set remote pass-signals} 39256command (@pxref{Remote Configuration, set remote pass-signals}). 39257This packet is not probed by default; the remote stub must request it, 39258by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39259 39260@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 39261@cindex signals the inferior may see, remote request 39262@cindex @samp{QProgramSignals} packet 39263@anchor{QProgramSignals} 39264Each listed @var{signal} may be delivered to the inferior process. 39265Others should be silently discarded. 39266 39267In some cases, the remote stub may need to decide whether to deliver a 39268signal to the program or not without @value{GDBN} involvement. One 39269example of that is while detaching --- the program's threads may have 39270stopped for signals that haven't yet had a chance of being reported to 39271@value{GDBN}, and so the remote stub can use the signal list specified 39272by this packet to know whether to deliver or ignore those pending 39273signals. 39274 39275This does not influence whether to deliver a signal as requested by a 39276resumption packet (@pxref{vCont packet}). 39277 39278Signals are numbered identically to continue packets and stop replies 39279(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 39280strictly greater than the previous item. Multiple 39281@samp{QProgramSignals} packets do not combine; any earlier 39282@samp{QProgramSignals} list is completely replaced by the new list. 39283 39284Reply: 39285@table @samp 39286@item OK 39287The request succeeded. 39288 39289@item E @var{nn} 39290An error occurred. @var{nn} are hex digits. 39291 39292@item @w{} 39293An empty reply indicates that @samp{QProgramSignals} is not supported 39294by the stub. 39295@end table 39296 39297Use of this packet is controlled by the @code{set remote program-signals} 39298command (@pxref{Remote Configuration, set remote program-signals}). 39299This packet is not probed by default; the remote stub must request it, 39300by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39301 39302@item qRcmd,@var{command} 39303@cindex execute remote command, remote request 39304@cindex @samp{qRcmd} packet 39305@var{command} (hex encoded) is passed to the local interpreter for 39306execution. Invalid commands should be reported using the output 39307string. Before the final result packet, the target may also respond 39308with a number of intermediate @samp{O@var{output}} console output 39309packets. @emph{Implementors should note that providing access to a 39310stubs's interpreter may have security implications}. 39311 39312Reply: 39313@table @samp 39314@item OK 39315A command response with no output. 39316@item @var{OUTPUT} 39317A command response with the hex encoded output string @var{OUTPUT}. 39318@item E @var{NN} 39319Indicate a badly formed request. 39320@item @w{} 39321An empty reply indicates that @samp{qRcmd} is not recognized. 39322@end table 39323 39324(Note that the @code{qRcmd} packet's name is separated from the 39325command by a @samp{,}, not a @samp{:}, contrary to the naming 39326conventions above. Please don't use this packet as a model for new 39327packets.) 39328 39329@item qSearch:memory:@var{address};@var{length};@var{search-pattern} 39330@cindex searching memory, in remote debugging 39331@ifnotinfo 39332@cindex @samp{qSearch:memory} packet 39333@end ifnotinfo 39334@cindex @samp{qSearch memory} packet 39335@anchor{qSearch memory} 39336Search @var{length} bytes at @var{address} for @var{search-pattern}. 39337@var{address} and @var{length} are encoded in hex. 39338@var{search-pattern} is a sequence of bytes, hex encoded. 39339 39340Reply: 39341@table @samp 39342@item 0 39343The pattern was not found. 39344@item 1,address 39345The pattern was found at @var{address}. 39346@item E @var{NN} 39347A badly formed request or an error was encountered while searching memory. 39348@item @w{} 39349An empty reply indicates that @samp{qSearch:memory} is not recognized. 39350@end table 39351 39352@item QStartNoAckMode 39353@cindex @samp{QStartNoAckMode} packet 39354@anchor{QStartNoAckMode} 39355Request that the remote stub disable the normal @samp{+}/@samp{-} 39356protocol acknowledgments (@pxref{Packet Acknowledgment}). 39357 39358Reply: 39359@table @samp 39360@item OK 39361The stub has switched to no-acknowledgment mode. 39362@value{GDBN} acknowledges this reponse, 39363but neither the stub nor @value{GDBN} shall send or expect further 39364@samp{+}/@samp{-} acknowledgments in the current connection. 39365@item @w{} 39366An empty reply indicates that the stub does not support no-acknowledgment mode. 39367@end table 39368 39369@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]} 39370@cindex supported packets, remote query 39371@cindex features of the remote protocol 39372@cindex @samp{qSupported} packet 39373@anchor{qSupported} 39374Tell the remote stub about features supported by @value{GDBN}, and 39375query the stub for features it supports. This packet allows 39376@value{GDBN} and the remote stub to take advantage of each others' 39377features. @samp{qSupported} also consolidates multiple feature probes 39378at startup, to improve @value{GDBN} performance---a single larger 39379packet performs better than multiple smaller probe packets on 39380high-latency links. Some features may enable behavior which must not 39381be on by default, e.g.@: because it would confuse older clients or 39382stubs. Other features may describe packets which could be 39383automatically probed for, but are not. These features must be 39384reported before @value{GDBN} will use them. This ``default 39385unsupported'' behavior is not appropriate for all packets, but it 39386helps to keep the initial connection time under control with new 39387versions of @value{GDBN} which support increasing numbers of packets. 39388 39389Reply: 39390@table @samp 39391@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{} 39392The stub supports or does not support each returned @var{stubfeature}, 39393depending on the form of each @var{stubfeature} (see below for the 39394possible forms). 39395@item @w{} 39396An empty reply indicates that @samp{qSupported} is not recognized, 39397or that no features needed to be reported to @value{GDBN}. 39398@end table 39399 39400The allowed forms for each feature (either a @var{gdbfeature} in the 39401@samp{qSupported} packet, or a @var{stubfeature} in the response) 39402are: 39403 39404@table @samp 39405@item @var{name}=@var{value} 39406The remote protocol feature @var{name} is supported, and associated 39407with the specified @var{value}. The format of @var{value} depends 39408on the feature, but it must not include a semicolon. 39409@item @var{name}+ 39410The remote protocol feature @var{name} is supported, and does not 39411need an associated value. 39412@item @var{name}- 39413The remote protocol feature @var{name} is not supported. 39414@item @var{name}? 39415The remote protocol feature @var{name} may be supported, and 39416@value{GDBN} should auto-detect support in some other way when it is 39417needed. This form will not be used for @var{gdbfeature} notifications, 39418but may be used for @var{stubfeature} responses. 39419@end table 39420 39421Whenever the stub receives a @samp{qSupported} request, the 39422supplied set of @value{GDBN} features should override any previous 39423request. This allows @value{GDBN} to put the stub in a known 39424state, even if the stub had previously been communicating with 39425a different version of @value{GDBN}. 39426 39427The following values of @var{gdbfeature} (for the packet sent by @value{GDBN}) 39428are defined: 39429 39430@table @samp 39431@item multiprocess 39432This feature indicates whether @value{GDBN} supports multiprocess 39433extensions to the remote protocol. @value{GDBN} does not use such 39434extensions unless the stub also reports that it supports them by 39435including @samp{multiprocess+} in its @samp{qSupported} reply. 39436@xref{multiprocess extensions}, for details. 39437 39438@item xmlRegisters 39439This feature indicates that @value{GDBN} supports the XML target 39440description. If the stub sees @samp{xmlRegisters=} with target 39441specific strings separated by a comma, it will report register 39442description. 39443 39444@item qRelocInsn 39445This feature indicates whether @value{GDBN} supports the 39446@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate 39447instruction reply packet}). 39448@end table 39449 39450Stubs should ignore any unknown values for 39451@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported} 39452packet supports receiving packets of unlimited length (earlier 39453versions of @value{GDBN} may reject overly long responses). Additional values 39454for @var{gdbfeature} may be defined in the future to let the stub take 39455advantage of new features in @value{GDBN}, e.g.@: incompatible 39456improvements in the remote protocol---the @samp{multiprocess} feature is 39457an example of such a feature. The stub's reply should be independent 39458of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN} 39459describes all the features it supports, and then the stub replies with 39460all the features it supports. 39461 39462Similarly, @value{GDBN} will silently ignore unrecognized stub feature 39463responses, as long as each response uses one of the standard forms. 39464 39465Some features are flags. A stub which supports a flag feature 39466should respond with a @samp{+} form response. Other features 39467require values, and the stub should respond with an @samp{=} 39468form response. 39469 39470Each feature has a default value, which @value{GDBN} will use if 39471@samp{qSupported} is not available or if the feature is not mentioned 39472in the @samp{qSupported} response. The default values are fixed; a 39473stub is free to omit any feature responses that match the defaults. 39474 39475Not all features can be probed, but for those which can, the probing 39476mechanism is useful: in some cases, a stub's internal 39477architecture may not allow the protocol layer to know some information 39478about the underlying target in advance. This is especially common in 39479stubs which may be configured for multiple targets. 39480 39481These are the currently defined stub features and their properties: 39482 39483@multitable @columnfractions 0.35 0.2 0.12 0.2 39484@c NOTE: The first row should be @headitem, but we do not yet require 39485@c a new enough version of Texinfo (4.7) to use @headitem. 39486@item Feature Name 39487@tab Value Required 39488@tab Default 39489@tab Probe Allowed 39490 39491@item @samp{PacketSize} 39492@tab Yes 39493@tab @samp{-} 39494@tab No 39495 39496@item @samp{qXfer:auxv:read} 39497@tab No 39498@tab @samp{-} 39499@tab Yes 39500 39501@item @samp{qXfer:btrace:read} 39502@tab No 39503@tab @samp{-} 39504@tab Yes 39505 39506@item @samp{qXfer:features:read} 39507@tab No 39508@tab @samp{-} 39509@tab Yes 39510 39511@item @samp{qXfer:libraries:read} 39512@tab No 39513@tab @samp{-} 39514@tab Yes 39515 39516@item @samp{qXfer:libraries-svr4:read} 39517@tab No 39518@tab @samp{-} 39519@tab Yes 39520 39521@item @samp{augmented-libraries-svr4-read} 39522@tab No 39523@tab @samp{-} 39524@tab No 39525 39526@item @samp{qXfer:memory-map:read} 39527@tab No 39528@tab @samp{-} 39529@tab Yes 39530 39531@item @samp{qXfer:sdata:read} 39532@tab No 39533@tab @samp{-} 39534@tab Yes 39535 39536@item @samp{qXfer:spu:read} 39537@tab No 39538@tab @samp{-} 39539@tab Yes 39540 39541@item @samp{qXfer:spu:write} 39542@tab No 39543@tab @samp{-} 39544@tab Yes 39545 39546@item @samp{qXfer:siginfo:read} 39547@tab No 39548@tab @samp{-} 39549@tab Yes 39550 39551@item @samp{qXfer:siginfo:write} 39552@tab No 39553@tab @samp{-} 39554@tab Yes 39555 39556@item @samp{qXfer:threads:read} 39557@tab No 39558@tab @samp{-} 39559@tab Yes 39560 39561@item @samp{qXfer:traceframe-info:read} 39562@tab No 39563@tab @samp{-} 39564@tab Yes 39565 39566@item @samp{qXfer:uib:read} 39567@tab No 39568@tab @samp{-} 39569@tab Yes 39570 39571@item @samp{qXfer:fdpic:read} 39572@tab No 39573@tab @samp{-} 39574@tab Yes 39575 39576@item @samp{Qbtrace:off} 39577@tab Yes 39578@tab @samp{-} 39579@tab Yes 39580 39581@item @samp{Qbtrace:bts} 39582@tab Yes 39583@tab @samp{-} 39584@tab Yes 39585 39586@item @samp{QNonStop} 39587@tab No 39588@tab @samp{-} 39589@tab Yes 39590 39591@item @samp{QPassSignals} 39592@tab No 39593@tab @samp{-} 39594@tab Yes 39595 39596@item @samp{QStartNoAckMode} 39597@tab No 39598@tab @samp{-} 39599@tab Yes 39600 39601@item @samp{multiprocess} 39602@tab No 39603@tab @samp{-} 39604@tab No 39605 39606@item @samp{ConditionalBreakpoints} 39607@tab No 39608@tab @samp{-} 39609@tab No 39610 39611@item @samp{ConditionalTracepoints} 39612@tab No 39613@tab @samp{-} 39614@tab No 39615 39616@item @samp{ReverseContinue} 39617@tab No 39618@tab @samp{-} 39619@tab No 39620 39621@item @samp{ReverseStep} 39622@tab No 39623@tab @samp{-} 39624@tab No 39625 39626@item @samp{TracepointSource} 39627@tab No 39628@tab @samp{-} 39629@tab No 39630 39631@item @samp{QAgent} 39632@tab No 39633@tab @samp{-} 39634@tab No 39635 39636@item @samp{QAllow} 39637@tab No 39638@tab @samp{-} 39639@tab No 39640 39641@item @samp{QDisableRandomization} 39642@tab No 39643@tab @samp{-} 39644@tab No 39645 39646@item @samp{EnableDisableTracepoints} 39647@tab No 39648@tab @samp{-} 39649@tab No 39650 39651@item @samp{QTBuffer:size} 39652@tab No 39653@tab @samp{-} 39654@tab No 39655 39656@item @samp{tracenz} 39657@tab No 39658@tab @samp{-} 39659@tab No 39660 39661@item @samp{BreakpointCommands} 39662@tab No 39663@tab @samp{-} 39664@tab No 39665 39666@end multitable 39667 39668These are the currently defined stub features, in more detail: 39669 39670@table @samp 39671@cindex packet size, remote protocol 39672@item PacketSize=@var{bytes} 39673The remote stub can accept packets up to at least @var{bytes} in 39674length. @value{GDBN} will send packets up to this size for bulk 39675transfers, and will never send larger packets. This is a limit on the 39676data characters in the packet, including the frame and checksum. 39677There is no trailing NUL byte in a remote protocol packet; if the stub 39678stores packets in a NUL-terminated format, it should allow an extra 39679byte in its buffer for the NUL. If this stub feature is not supported, 39680@value{GDBN} guesses based on the size of the @samp{g} packet response. 39681 39682@item qXfer:auxv:read 39683The remote stub understands the @samp{qXfer:auxv:read} packet 39684(@pxref{qXfer auxiliary vector read}). 39685 39686@item qXfer:btrace:read 39687The remote stub understands the @samp{qXfer:btrace:read} 39688packet (@pxref{qXfer btrace read}). 39689 39690@item qXfer:features:read 39691The remote stub understands the @samp{qXfer:features:read} packet 39692(@pxref{qXfer target description read}). 39693 39694@item qXfer:libraries:read 39695The remote stub understands the @samp{qXfer:libraries:read} packet 39696(@pxref{qXfer library list read}). 39697 39698@item qXfer:libraries-svr4:read 39699The remote stub understands the @samp{qXfer:libraries-svr4:read} packet 39700(@pxref{qXfer svr4 library list read}). 39701 39702@item augmented-libraries-svr4-read 39703The remote stub understands the augmented form of the 39704@samp{qXfer:libraries-svr4:read} packet 39705(@pxref{qXfer svr4 library list read}). 39706 39707@item qXfer:memory-map:read 39708The remote stub understands the @samp{qXfer:memory-map:read} packet 39709(@pxref{qXfer memory map read}). 39710 39711@item qXfer:sdata:read 39712The remote stub understands the @samp{qXfer:sdata:read} packet 39713(@pxref{qXfer sdata read}). 39714 39715@item qXfer:spu:read 39716The remote stub understands the @samp{qXfer:spu:read} packet 39717(@pxref{qXfer spu read}). 39718 39719@item qXfer:spu:write 39720The remote stub understands the @samp{qXfer:spu:write} packet 39721(@pxref{qXfer spu write}). 39722 39723@item qXfer:siginfo:read 39724The remote stub understands the @samp{qXfer:siginfo:read} packet 39725(@pxref{qXfer siginfo read}). 39726 39727@item qXfer:siginfo:write 39728The remote stub understands the @samp{qXfer:siginfo:write} packet 39729(@pxref{qXfer siginfo write}). 39730 39731@item qXfer:threads:read 39732The remote stub understands the @samp{qXfer:threads:read} packet 39733(@pxref{qXfer threads read}). 39734 39735@item qXfer:traceframe-info:read 39736The remote stub understands the @samp{qXfer:traceframe-info:read} 39737packet (@pxref{qXfer traceframe info read}). 39738 39739@item qXfer:uib:read 39740The remote stub understands the @samp{qXfer:uib:read} 39741packet (@pxref{qXfer unwind info block}). 39742 39743@item qXfer:fdpic:read 39744The remote stub understands the @samp{qXfer:fdpic:read} 39745packet (@pxref{qXfer fdpic loadmap read}). 39746 39747@item QNonStop 39748The remote stub understands the @samp{QNonStop} packet 39749(@pxref{QNonStop}). 39750 39751@item QPassSignals 39752The remote stub understands the @samp{QPassSignals} packet 39753(@pxref{QPassSignals}). 39754 39755@item QStartNoAckMode 39756The remote stub understands the @samp{QStartNoAckMode} packet and 39757prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}. 39758 39759@item multiprocess 39760@anchor{multiprocess extensions} 39761@cindex multiprocess extensions, in remote protocol 39762The remote stub understands the multiprocess extensions to the remote 39763protocol syntax. The multiprocess extensions affect the syntax of 39764thread IDs in both packets and replies (@pxref{thread-id syntax}), and 39765add process IDs to the @samp{D} packet and @samp{W} and @samp{X} 39766replies. Note that reporting this feature indicates support for the 39767syntactic extensions only, not that the stub necessarily supports 39768debugging of more than one process at a time. The stub must not use 39769multiprocess extensions in packet replies unless @value{GDBN} has also 39770indicated it supports them in its @samp{qSupported} request. 39771 39772@item qXfer:osdata:read 39773The remote stub understands the @samp{qXfer:osdata:read} packet 39774((@pxref{qXfer osdata read}). 39775 39776@item ConditionalBreakpoints 39777The target accepts and implements evaluation of conditional expressions 39778defined for breakpoints. The target will only report breakpoint triggers 39779when such conditions are true (@pxref{Conditions, ,Break Conditions}). 39780 39781@item ConditionalTracepoints 39782The remote stub accepts and implements conditional expressions defined 39783for tracepoints (@pxref{Tracepoint Conditions}). 39784 39785@item ReverseContinue 39786The remote stub accepts and implements the reverse continue packet 39787(@pxref{bc}). 39788 39789@item ReverseStep 39790The remote stub accepts and implements the reverse step packet 39791(@pxref{bs}). 39792 39793@item TracepointSource 39794The remote stub understands the @samp{QTDPsrc} packet that supplies 39795the source form of tracepoint definitions. 39796 39797@item QAgent 39798The remote stub understands the @samp{QAgent} packet. 39799 39800@item QAllow 39801The remote stub understands the @samp{QAllow} packet. 39802 39803@item QDisableRandomization 39804The remote stub understands the @samp{QDisableRandomization} packet. 39805 39806@item StaticTracepoint 39807@cindex static tracepoints, in remote protocol 39808The remote stub supports static tracepoints. 39809 39810@item InstallInTrace 39811@anchor{install tracepoint in tracing} 39812The remote stub supports installing tracepoint in tracing. 39813 39814@item EnableDisableTracepoints 39815The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and 39816@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints 39817to be enabled and disabled while a trace experiment is running. 39818 39819@item QTBuffer:size 39820The remote stub supports the @samp{QTBuffer:size} (@pxref{QTBuffer-size}) 39821packet that allows to change the size of the trace buffer. 39822 39823@item tracenz 39824@cindex string tracing, in remote protocol 39825The remote stub supports the @samp{tracenz} bytecode for collecting strings. 39826See @ref{Bytecode Descriptions} for details about the bytecode. 39827 39828@item BreakpointCommands 39829@cindex breakpoint commands, in remote protocol 39830The remote stub supports running a breakpoint's command list itself, 39831rather than reporting the hit to @value{GDBN}. 39832 39833@item Qbtrace:off 39834The remote stub understands the @samp{Qbtrace:off} packet. 39835 39836@item Qbtrace:bts 39837The remote stub understands the @samp{Qbtrace:bts} packet. 39838 39839@end table 39840 39841@item qSymbol:: 39842@cindex symbol lookup, remote request 39843@cindex @samp{qSymbol} packet 39844Notify the target that @value{GDBN} is prepared to serve symbol lookup 39845requests. Accept requests from the target for the values of symbols. 39846 39847Reply: 39848@table @samp 39849@item OK 39850The target does not need to look up any (more) symbols. 39851@item qSymbol:@var{sym_name} 39852The target requests the value of symbol @var{sym_name} (hex encoded). 39853@value{GDBN} may provide the value by using the 39854@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described 39855below. 39856@end table 39857 39858@item qSymbol:@var{sym_value}:@var{sym_name} 39859Set the value of @var{sym_name} to @var{sym_value}. 39860 39861@var{sym_name} (hex encoded) is the name of a symbol whose value the 39862target has previously requested. 39863 39864@var{sym_value} (hex) is the value for symbol @var{sym_name}. If 39865@value{GDBN} cannot supply a value for @var{sym_name}, then this field 39866will be empty. 39867 39868Reply: 39869@table @samp 39870@item OK 39871The target does not need to look up any (more) symbols. 39872@item qSymbol:@var{sym_name} 39873The target requests the value of a new symbol @var{sym_name} (hex 39874encoded). @value{GDBN} will continue to supply the values of symbols 39875(if available), until the target ceases to request them. 39876@end table 39877 39878@item qTBuffer 39879@itemx QTBuffer 39880@itemx QTDisconnected 39881@itemx QTDP 39882@itemx QTDPsrc 39883@itemx QTDV 39884@itemx qTfP 39885@itemx qTfV 39886@itemx QTFrame 39887@itemx qTMinFTPILen 39888 39889@xref{Tracepoint Packets}. 39890 39891@item qThreadExtraInfo,@var{thread-id} 39892@cindex thread attributes info, remote request 39893@cindex @samp{qThreadExtraInfo} packet 39894Obtain a printable string description of a thread's attributes from 39895the target OS. @var{thread-id} is a thread ID; 39896see @ref{thread-id syntax}. This 39897string may contain anything that the target OS thinks is interesting 39898for @value{GDBN} to tell the user about the thread. The string is 39899displayed in @value{GDBN}'s @code{info threads} display. Some 39900examples of possible thread extra info strings are @samp{Runnable}, or 39901@samp{Blocked on Mutex}. 39902 39903Reply: 39904@table @samp 39905@item @var{XX}@dots{} 39906Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data, 39907comprising the printable string containing the extra information about 39908the thread's attributes. 39909@end table 39910 39911(Note that the @code{qThreadExtraInfo} packet's name is separated from 39912the command by a @samp{,}, not a @samp{:}, contrary to the naming 39913conventions above. Please don't use this packet as a model for new 39914packets.) 39915 39916@item QTNotes 39917@itemx qTP 39918@itemx QTSave 39919@itemx qTsP 39920@itemx qTsV 39921@itemx QTStart 39922@itemx QTStop 39923@itemx QTEnable 39924@itemx QTDisable 39925@itemx QTinit 39926@itemx QTro 39927@itemx qTStatus 39928@itemx qTV 39929@itemx qTfSTM 39930@itemx qTsSTM 39931@itemx qTSTMat 39932@xref{Tracepoint Packets}. 39933 39934@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length} 39935@cindex read special object, remote request 39936@cindex @samp{qXfer} packet 39937@anchor{qXfer read} 39938Read uninterpreted bytes from the target's special data area 39939identified by the keyword @var{object}. Request @var{length} bytes 39940starting at @var{offset} bytes into the data. The content and 39941encoding of @var{annex} is specific to @var{object}; it can supply 39942additional details about what data to access. 39943 39944Here are the specific requests of this form defined so far. All 39945@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply 39946formats, listed below. 39947 39948@table @samp 39949@item qXfer:auxv:read::@var{offset},@var{length} 39950@anchor{qXfer auxiliary vector read} 39951Access the target's @dfn{auxiliary vector}. @xref{OS Information, 39952auxiliary vector}. Note @var{annex} must be empty. 39953 39954This packet is not probed by default; the remote stub must request it, 39955by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39956 39957@item qXfer:btrace:read:@var{annex}:@var{offset},@var{length} 39958@anchor{qXfer btrace read} 39959 39960Return a description of the current branch trace. 39961@xref{Branch Trace Format}. The annex part of the generic @samp{qXfer} 39962packet may have one of the following values: 39963 39964@table @code 39965@item all 39966Returns all available branch trace. 39967 39968@item new 39969Returns all available branch trace if the branch trace changed since 39970the last read request. 39971@end table 39972 39973This packet is not probed by default; the remote stub must request it 39974by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39975 39976@item qXfer:features:read:@var{annex}:@var{offset},@var{length} 39977@anchor{qXfer target description read} 39978Access the @dfn{target description}. @xref{Target Descriptions}. The 39979annex specifies which XML document to access. The main description is 39980always loaded from the @samp{target.xml} annex. 39981 39982This packet is not probed by default; the remote stub must request it, 39983by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39984 39985@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length} 39986@anchor{qXfer library list read} 39987Access the target's list of loaded libraries. @xref{Library List Format}. 39988The annex part of the generic @samp{qXfer} packet must be empty 39989(@pxref{qXfer read}). 39990 39991Targets which maintain a list of libraries in the program's memory do 39992not need to implement this packet; it is designed for platforms where 39993the operating system manages the list of loaded libraries. 39994 39995This packet is not probed by default; the remote stub must request it, 39996by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39997 39998@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length} 39999@anchor{qXfer svr4 library list read} 40000Access the target's list of loaded libraries when the target is an SVR4 40001platform. @xref{Library List Format for SVR4 Targets}. The annex part 40002of the generic @samp{qXfer} packet must be empty unless the remote 40003stub indicated it supports the augmented form of this packet 40004by supplying an appropriate @samp{qSupported} response 40005(@pxref{qXfer read}, @ref{qSupported}). 40006 40007This packet is optional for better performance on SVR4 targets. 40008@value{GDBN} uses memory read packets to read the SVR4 library list otherwise. 40009 40010This packet is not probed by default; the remote stub must request it, 40011by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 40012 40013If the remote stub indicates it supports the augmented form of this 40014packet then the annex part of the generic @samp{qXfer} packet may 40015contain a semicolon-separated list of @samp{@var{name}=@var{value}} 40016arguments. The currently supported arguments are: 40017 40018@table @code 40019@item start=@var{address} 40020A hexadecimal number specifying the address of the @samp{struct 40021link_map} to start reading the library list from. If unset or zero 40022then the first @samp{struct link_map} in the library list will be 40023chosen as the starting point. 40024 40025@item prev=@var{address} 40026A hexadecimal number specifying the address of the @samp{struct 40027link_map} immediately preceding the @samp{struct link_map} 40028specified by the @samp{start} argument. If unset or zero then 40029the remote stub will expect that no @samp{struct link_map} 40030exists prior to the starting point. 40031 40032@end table 40033 40034Arguments that are not understood by the remote stub will be silently 40035ignored. 40036 40037@item qXfer:memory-map:read::@var{offset},@var{length} 40038@anchor{qXfer memory map read} 40039Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The 40040annex part of the generic @samp{qXfer} packet must be empty 40041(@pxref{qXfer read}). 40042 40043This packet is not probed by default; the remote stub must request it, 40044by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 40045 40046@item qXfer:sdata:read::@var{offset},@var{length} 40047@anchor{qXfer sdata read} 40048 40049Read contents of the extra collected static tracepoint marker 40050information. The annex part of the generic @samp{qXfer} packet must 40051be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint 40052Action Lists}. 40053 40054This packet is not probed by default; the remote stub must request it, 40055by supplying an appropriate @samp{qSupported} response 40056(@pxref{qSupported}). 40057 40058@item qXfer:siginfo:read::@var{offset},@var{length} 40059@anchor{qXfer siginfo read} 40060Read contents of the extra signal information on the target 40061system. The annex part of the generic @samp{qXfer} packet must be 40062empty (@pxref{qXfer read}). 40063 40064This packet is not probed by default; the remote stub must request it, 40065by supplying an appropriate @samp{qSupported} response 40066(@pxref{qSupported}). 40067 40068@item qXfer:spu:read:@var{annex}:@var{offset},@var{length} 40069@anchor{qXfer spu read} 40070Read contents of an @code{spufs} file on the target system. The 40071annex specifies which file to read; it must be of the form 40072@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID 40073in the target process, and @var{name} identifes the @code{spufs} file 40074in that context to be accessed. 40075 40076This packet is not probed by default; the remote stub must request it, 40077by supplying an appropriate @samp{qSupported} response 40078(@pxref{qSupported}). 40079 40080@item qXfer:threads:read::@var{offset},@var{length} 40081@anchor{qXfer threads read} 40082Access the list of threads on target. @xref{Thread List Format}. The 40083annex part of the generic @samp{qXfer} packet must be empty 40084(@pxref{qXfer read}). 40085 40086This packet is not probed by default; the remote stub must request it, 40087by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 40088 40089@item qXfer:traceframe-info:read::@var{offset},@var{length} 40090@anchor{qXfer traceframe info read} 40091 40092Return a description of the current traceframe's contents. 40093@xref{Traceframe Info Format}. The annex part of the generic 40094@samp{qXfer} packet must be empty (@pxref{qXfer read}). 40095 40096This packet is not probed by default; the remote stub must request it, 40097by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 40098 40099@item qXfer:uib:read:@var{pc}:@var{offset},@var{length} 40100@anchor{qXfer unwind info block} 40101 40102Return the unwind information block for @var{pc}. This packet is used 40103on OpenVMS/ia64 to ask the kernel unwind information. 40104 40105This packet is not probed by default. 40106 40107@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length} 40108@anchor{qXfer fdpic loadmap read} 40109Read contents of @code{loadmap}s on the target system. The 40110annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap}, 40111executable @code{loadmap} or interpreter @code{loadmap} to read. 40112 40113This packet is not probed by default; the remote stub must request it, 40114by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 40115 40116@item qXfer:osdata:read::@var{offset},@var{length} 40117@anchor{qXfer osdata read} 40118Access the target's @dfn{operating system information}. 40119@xref{Operating System Information}. 40120 40121@end table 40122 40123Reply: 40124@table @samp 40125@item m @var{data} 40126Data @var{data} (@pxref{Binary Data}) has been read from the 40127target. There may be more data at a higher address (although 40128it is permitted to return @samp{m} even for the last valid 40129block of data, as long as at least one byte of data was read). 40130@var{data} may have fewer bytes than the @var{length} in the 40131request. 40132 40133@item l @var{data} 40134Data @var{data} (@pxref{Binary Data}) has been read from the target. 40135There is no more data to be read. @var{data} may have fewer bytes 40136than the @var{length} in the request. 40137 40138@item l 40139The @var{offset} in the request is at the end of the data. 40140There is no more data to be read. 40141 40142@item E00 40143The request was malformed, or @var{annex} was invalid. 40144 40145@item E @var{nn} 40146The offset was invalid, or there was an error encountered reading the data. 40147@var{nn} is a hex-encoded @code{errno} value. 40148 40149@item @w{} 40150An empty reply indicates the @var{object} string was not recognized by 40151the stub, or that the object does not support reading. 40152@end table 40153 40154@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{} 40155@cindex write data into object, remote request 40156@anchor{qXfer write} 40157Write uninterpreted bytes into the target's special data area 40158identified by the keyword @var{object}, starting at @var{offset} bytes 40159into the data. @var{data}@dots{} is the binary-encoded data 40160(@pxref{Binary Data}) to be written. The content and encoding of @var{annex} 40161is specific to @var{object}; it can supply additional details about what data 40162to access. 40163 40164Here are the specific requests of this form defined so far. All 40165@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply 40166formats, listed below. 40167 40168@table @samp 40169@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{} 40170@anchor{qXfer siginfo write} 40171Write @var{data} to the extra signal information on the target system. 40172The annex part of the generic @samp{qXfer} packet must be 40173empty (@pxref{qXfer write}). 40174 40175This packet is not probed by default; the remote stub must request it, 40176by supplying an appropriate @samp{qSupported} response 40177(@pxref{qSupported}). 40178 40179@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{} 40180@anchor{qXfer spu write} 40181Write @var{data} to an @code{spufs} file on the target system. The 40182annex specifies which file to write; it must be of the form 40183@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID 40184in the target process, and @var{name} identifes the @code{spufs} file 40185in that context to be accessed. 40186 40187This packet is not probed by default; the remote stub must request it, 40188by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 40189@end table 40190 40191Reply: 40192@table @samp 40193@item @var{nn} 40194@var{nn} (hex encoded) is the number of bytes written. 40195This may be fewer bytes than supplied in the request. 40196 40197@item E00 40198The request was malformed, or @var{annex} was invalid. 40199 40200@item E @var{nn} 40201The offset was invalid, or there was an error encountered writing the data. 40202@var{nn} is a hex-encoded @code{errno} value. 40203 40204@item @w{} 40205An empty reply indicates the @var{object} string was not 40206recognized by the stub, or that the object does not support writing. 40207@end table 40208 40209@item qXfer:@var{object}:@var{operation}:@dots{} 40210Requests of this form may be added in the future. When a stub does 40211not recognize the @var{object} keyword, or its support for 40212@var{object} does not recognize the @var{operation} keyword, the stub 40213must respond with an empty packet. 40214 40215@item qAttached:@var{pid} 40216@cindex query attached, remote request 40217@cindex @samp{qAttached} packet 40218Return an indication of whether the remote server attached to an 40219existing process or created a new process. When the multiprocess 40220protocol extensions are supported (@pxref{multiprocess extensions}), 40221@var{pid} is an integer in hexadecimal format identifying the target 40222process. Otherwise, @value{GDBN} will omit the @var{pid} field and 40223the query packet will be simplified as @samp{qAttached}. 40224 40225This query is used, for example, to know whether the remote process 40226should be detached or killed when a @value{GDBN} session is ended with 40227the @code{quit} command. 40228 40229Reply: 40230@table @samp 40231@item 1 40232The remote server attached to an existing process. 40233@item 0 40234The remote server created a new process. 40235@item E @var{NN} 40236A badly formed request or an error was encountered. 40237@end table 40238 40239@item Qbtrace:bts 40240Enable branch tracing for the current thread using bts tracing. 40241 40242Reply: 40243@table @samp 40244@item OK 40245Branch tracing has been enabled. 40246@item E.errtext 40247A badly formed request or an error was encountered. 40248@end table 40249 40250@item Qbtrace:off 40251Disable branch tracing for the current thread. 40252 40253Reply: 40254@table @samp 40255@item OK 40256Branch tracing has been disabled. 40257@item E.errtext 40258A badly formed request or an error was encountered. 40259@end table 40260 40261@end table 40262 40263@node Architecture-Specific Protocol Details 40264@section Architecture-Specific Protocol Details 40265 40266This section describes how the remote protocol is applied to specific 40267target architectures. Also see @ref{Standard Target Features}, for 40268details of XML target descriptions for each architecture. 40269 40270@menu 40271* ARM-Specific Protocol Details:: 40272* MIPS-Specific Protocol Details:: 40273@end menu 40274 40275@node ARM-Specific Protocol Details 40276@subsection @acronym{ARM}-specific Protocol Details 40277 40278@menu 40279* ARM Breakpoint Kinds:: 40280@end menu 40281 40282@node ARM Breakpoint Kinds 40283@subsubsection @acronym{ARM} Breakpoint Kinds 40284@cindex breakpoint kinds, @acronym{ARM} 40285 40286These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 40287 40288@table @r 40289 40290@item 2 4029116-bit Thumb mode breakpoint. 40292 40293@item 3 4029432-bit Thumb mode (Thumb-2) breakpoint. 40295 40296@item 4 4029732-bit @acronym{ARM} mode breakpoint. 40298 40299@end table 40300 40301@node MIPS-Specific Protocol Details 40302@subsection @acronym{MIPS}-specific Protocol Details 40303 40304@menu 40305* MIPS Register packet Format:: 40306* MIPS Breakpoint Kinds:: 40307@end menu 40308 40309@node MIPS Register packet Format 40310@subsubsection @acronym{MIPS} Register Packet Format 40311@cindex register packet format, @acronym{MIPS} 40312 40313The following @code{g}/@code{G} packets have previously been defined. 40314In the below, some thirty-two bit registers are transferred as 40315sixty-four bits. Those registers should be zero/sign extended (which?) 40316to fill the space allocated. Register bytes are transferred in target 40317byte order. The two nibbles within a register byte are transferred 40318most-significant -- least-significant. 40319 40320@table @r 40321 40322@item MIPS32 40323All registers are transferred as thirty-two bit quantities in the order: 4032432 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point 40325registers; fsr; fir; fp. 40326 40327@item MIPS64 40328All registers are transferred as sixty-four bit quantities (including 40329thirty-two bit registers such as @code{sr}). The ordering is the same 40330as @code{MIPS32}. 40331 40332@end table 40333 40334@node MIPS Breakpoint Kinds 40335@subsubsection @acronym{MIPS} Breakpoint Kinds 40336@cindex breakpoint kinds, @acronym{MIPS} 40337 40338These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 40339 40340@table @r 40341 40342@item 2 4034316-bit @acronym{MIPS16} mode breakpoint. 40344 40345@item 3 4034616-bit @acronym{microMIPS} mode breakpoint. 40347 40348@item 4 4034932-bit standard @acronym{MIPS} mode breakpoint. 40350 40351@item 5 4035232-bit @acronym{microMIPS} mode breakpoint. 40353 40354@end table 40355 40356@node Tracepoint Packets 40357@section Tracepoint Packets 40358@cindex tracepoint packets 40359@cindex packets, tracepoint 40360 40361Here we describe the packets @value{GDBN} uses to implement 40362tracepoints (@pxref{Tracepoints}). 40363 40364@table @samp 40365 40366@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]} 40367@cindex @samp{QTDP} packet 40368Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena} 40369is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then 40370the tracepoint is disabled. @var{step} is the tracepoint's step 40371count, and @var{pass} is its pass count. If an @samp{F} is present, 40372then the tracepoint is to be a fast tracepoint, and the @var{flen} is 40373the number of bytes that the target should copy elsewhere to make room 40374for the tracepoint. If an @samp{X} is present, it introduces a 40375tracepoint condition, which consists of a hexadecimal length, followed 40376by a comma and hex-encoded bytes, in a manner similar to action 40377encodings as described below. If the trailing @samp{-} is present, 40378further @samp{QTDP} packets will follow to specify this tracepoint's 40379actions. 40380 40381Replies: 40382@table @samp 40383@item OK 40384The packet was understood and carried out. 40385@item qRelocInsn 40386@xref{Tracepoint Packets,,Relocate instruction reply packet}. 40387@item @w{} 40388The packet was not recognized. 40389@end table 40390 40391@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]} 40392Define actions to be taken when a tracepoint is hit. @var{n} and 40393@var{addr} must be the same as in the initial @samp{QTDP} packet for 40394this tracepoint. This packet may only be sent immediately after 40395another @samp{QTDP} packet that ended with a @samp{-}. If the 40396trailing @samp{-} is present, further @samp{QTDP} packets will follow, 40397specifying more actions for this tracepoint. 40398 40399In the series of action packets for a given tracepoint, at most one 40400can have an @samp{S} before its first @var{action}. If such a packet 40401is sent, it and the following packets define ``while-stepping'' 40402actions. Any prior packets define ordinary actions --- that is, those 40403taken when the tracepoint is first hit. If no action packet has an 40404@samp{S}, then all the packets in the series specify ordinary 40405tracepoint actions. 40406 40407The @samp{@var{action}@dots{}} portion of the packet is a series of 40408actions, concatenated without separators. Each action has one of the 40409following forms: 40410 40411@table @samp 40412 40413@item R @var{mask} 40414Collect the registers whose bits are set in @var{mask}. @var{mask} is 40415a hexadecimal number whose @var{i}'th bit is set if register number 40416@var{i} should be collected. (The least significant bit is numbered 40417zero.) Note that @var{mask} may be any number of digits long; it may 40418not fit in a 32-bit word. 40419 40420@item M @var{basereg},@var{offset},@var{len} 40421Collect @var{len} bytes of memory starting at the address in register 40422number @var{basereg}, plus @var{offset}. If @var{basereg} is 40423@samp{-1}, then the range has a fixed address: @var{offset} is the 40424address of the lowest byte to collect. The @var{basereg}, 40425@var{offset}, and @var{len} parameters are all unsigned hexadecimal 40426values (the @samp{-1} value for @var{basereg} is a special case). 40427 40428@item X @var{len},@var{expr} 40429Evaluate @var{expr}, whose length is @var{len}, and collect memory as 40430it directs. @var{expr} is an agent expression, as described in 40431@ref{Agent Expressions}. Each byte of the expression is encoded as a 40432two-digit hex number in the packet; @var{len} is the number of bytes 40433in the expression (and thus one-half the number of hex digits in the 40434packet). 40435 40436@end table 40437 40438Any number of actions may be packed together in a single @samp{QTDP} 40439packet, as long as the packet does not exceed the maximum packet 40440length (400 bytes, for many stubs). There may be only one @samp{R} 40441action per tracepoint, and it must precede any @samp{M} or @samp{X} 40442actions. Any registers referred to by @samp{M} and @samp{X} actions 40443must be collected by a preceding @samp{R} action. (The 40444``while-stepping'' actions are treated as if they were attached to a 40445separate tracepoint, as far as these restrictions are concerned.) 40446 40447Replies: 40448@table @samp 40449@item OK 40450The packet was understood and carried out. 40451@item qRelocInsn 40452@xref{Tracepoint Packets,,Relocate instruction reply packet}. 40453@item @w{} 40454The packet was not recognized. 40455@end table 40456 40457@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes} 40458@cindex @samp{QTDPsrc} packet 40459Specify a source string of tracepoint @var{n} at address @var{addr}. 40460This is useful to get accurate reproduction of the tracepoints 40461originally downloaded at the beginning of the trace run. @var{type} 40462is the name of the tracepoint part, such as @samp{cond} for the 40463tracepoint's conditional expression (see below for a list of types), while 40464@var{bytes} is the string, encoded in hexadecimal. 40465 40466@var{start} is the offset of the @var{bytes} within the overall source 40467string, while @var{slen} is the total length of the source string. 40468This is intended for handling source strings that are longer than will 40469fit in a single packet. 40470@c Add detailed example when this info is moved into a dedicated 40471@c tracepoint descriptions section. 40472 40473The available string types are @samp{at} for the location, 40474@samp{cond} for the conditional, and @samp{cmd} for an action command. 40475@value{GDBN} sends a separate packet for each command in the action 40476list, in the same order in which the commands are stored in the list. 40477 40478The target does not need to do anything with source strings except 40479report them back as part of the replies to the @samp{qTfP}/@samp{qTsP} 40480query packets. 40481 40482Although this packet is optional, and @value{GDBN} will only send it 40483if the target replies with @samp{TracepointSource} @xref{General 40484Query Packets}, it makes both disconnected tracing and trace files 40485much easier to use. Otherwise the user must be careful that the 40486tracepoints in effect while looking at trace frames are identical to 40487the ones in effect during the trace run; even a small discrepancy 40488could cause @samp{tdump} not to work, or a particular trace frame not 40489be found. 40490 40491@item QTDV:@var{n}:@var{value} 40492@cindex define trace state variable, remote request 40493@cindex @samp{QTDV} packet 40494Create a new trace state variable, number @var{n}, with an initial 40495value of @var{value}, which is a 64-bit signed integer. Both @var{n} 40496and @var{value} are encoded as hexadecimal values. @value{GDBN} has 40497the option of not using this packet for initial values of zero; the 40498target should simply create the trace state variables as they are 40499mentioned in expressions. 40500 40501@item QTFrame:@var{n} 40502@cindex @samp{QTFrame} packet 40503Select the @var{n}'th tracepoint frame from the buffer, and use the 40504register and memory contents recorded there to answer subsequent 40505request packets from @value{GDBN}. 40506 40507A successful reply from the stub indicates that the stub has found the 40508requested frame. The response is a series of parts, concatenated 40509without separators, describing the frame we selected. Each part has 40510one of the following forms: 40511 40512@table @samp 40513@item F @var{f} 40514The selected frame is number @var{n} in the trace frame buffer; 40515@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there 40516was no frame matching the criteria in the request packet. 40517 40518@item T @var{t} 40519The selected trace frame records a hit of tracepoint number @var{t}; 40520@var{t} is a hexadecimal number. 40521 40522@end table 40523 40524@item QTFrame:pc:@var{addr} 40525Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 40526currently selected frame whose PC is @var{addr}; 40527@var{addr} is a hexadecimal number. 40528 40529@item QTFrame:tdp:@var{t} 40530Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 40531currently selected frame that is a hit of tracepoint @var{t}; @var{t} 40532is a hexadecimal number. 40533 40534@item QTFrame:range:@var{start}:@var{end} 40535Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 40536currently selected frame whose PC is between @var{start} (inclusive) 40537and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal 40538numbers. 40539 40540@item QTFrame:outside:@var{start}:@var{end} 40541Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first 40542frame @emph{outside} the given range of addresses (exclusive). 40543 40544@item qTMinFTPILen 40545@cindex @samp{qTMinFTPILen} packet 40546This packet requests the minimum length of instruction at which a fast 40547tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on 40548the 32-bit x86 architecture, it is possible to use a 4-byte jump, but 40549it depends on the target system being able to create trampolines in 40550the first 64K of memory, which might or might not be possible for that 40551system. So the reply to this packet will be 4 if it is able to 40552arrange for that. 40553 40554Replies: 40555 40556@table @samp 40557@item 0 40558The minimum instruction length is currently unknown. 40559@item @var{length} 40560The minimum instruction length is @var{length}, where @var{length} is greater 40561or equal to 1. @var{length} is a hexadecimal number. A reply of 1 means 40562that a fast tracepoint may be placed on any instruction regardless of size. 40563@item E 40564An error has occurred. 40565@item @w{} 40566An empty reply indicates that the request is not supported by the stub. 40567@end table 40568 40569@item QTStart 40570@cindex @samp{QTStart} packet 40571Begin the tracepoint experiment. Begin collecting data from 40572tracepoint hits in the trace frame buffer. This packet supports the 40573@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate 40574instruction reply packet}). 40575 40576@item QTStop 40577@cindex @samp{QTStop} packet 40578End the tracepoint experiment. Stop collecting trace frames. 40579 40580@item QTEnable:@var{n}:@var{addr} 40581@anchor{QTEnable} 40582@cindex @samp{QTEnable} packet 40583Enable tracepoint @var{n} at address @var{addr} in a started tracepoint 40584experiment. If the tracepoint was previously disabled, then collection 40585of data from it will resume. 40586 40587@item QTDisable:@var{n}:@var{addr} 40588@anchor{QTDisable} 40589@cindex @samp{QTDisable} packet 40590Disable tracepoint @var{n} at address @var{addr} in a started tracepoint 40591experiment. No more data will be collected from the tracepoint unless 40592@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued. 40593 40594@item QTinit 40595@cindex @samp{QTinit} packet 40596Clear the table of tracepoints, and empty the trace frame buffer. 40597 40598@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{} 40599@cindex @samp{QTro} packet 40600Establish the given ranges of memory as ``transparent''. The stub 40601will answer requests for these ranges from memory's current contents, 40602if they were not collected as part of the tracepoint hit. 40603 40604@value{GDBN} uses this to mark read-only regions of memory, like those 40605containing program code. Since these areas never change, they should 40606still have the same contents they did when the tracepoint was hit, so 40607there's no reason for the stub to refuse to provide their contents. 40608 40609@item QTDisconnected:@var{value} 40610@cindex @samp{QTDisconnected} packet 40611Set the choice to what to do with the tracing run when @value{GDBN} 40612disconnects from the target. A @var{value} of 1 directs the target to 40613continue the tracing run, while 0 tells the target to stop tracing if 40614@value{GDBN} is no longer in the picture. 40615 40616@item qTStatus 40617@cindex @samp{qTStatus} packet 40618Ask the stub if there is a trace experiment running right now. 40619 40620The reply has the form: 40621 40622@table @samp 40623 40624@item T@var{running}@r{[};@var{field}@r{]}@dots{} 40625@var{running} is a single digit @code{1} if the trace is presently 40626running, or @code{0} if not. It is followed by semicolon-separated 40627optional fields that an agent may use to report additional status. 40628 40629@end table 40630 40631If the trace is not running, the agent may report any of several 40632explanations as one of the optional fields: 40633 40634@table @samp 40635 40636@item tnotrun:0 40637No trace has been run yet. 40638 40639@item tstop[:@var{text}]:0 40640The trace was stopped by a user-originated stop command. The optional 40641@var{text} field is a user-supplied string supplied as part of the 40642stop command (for instance, an explanation of why the trace was 40643stopped manually). It is hex-encoded. 40644 40645@item tfull:0 40646The trace stopped because the trace buffer filled up. 40647 40648@item tdisconnected:0 40649The trace stopped because @value{GDBN} disconnected from the target. 40650 40651@item tpasscount:@var{tpnum} 40652The trace stopped because tracepoint @var{tpnum} exceeded its pass count. 40653 40654@item terror:@var{text}:@var{tpnum} 40655The trace stopped because tracepoint @var{tpnum} had an error. The 40656string @var{text} is available to describe the nature of the error 40657(for instance, a divide by zero in the condition expression). 40658@var{text} is hex encoded. 40659 40660@item tunknown:0 40661The trace stopped for some other reason. 40662 40663@end table 40664 40665Additional optional fields supply statistical and other information. 40666Although not required, they are extremely useful for users monitoring 40667the progress of a trace run. If a trace has stopped, and these 40668numbers are reported, they must reflect the state of the just-stopped 40669trace. 40670 40671@table @samp 40672 40673@item tframes:@var{n} 40674The number of trace frames in the buffer. 40675 40676@item tcreated:@var{n} 40677The total number of trace frames created during the run. This may 40678be larger than the trace frame count, if the buffer is circular. 40679 40680@item tsize:@var{n} 40681The total size of the trace buffer, in bytes. 40682 40683@item tfree:@var{n} 40684The number of bytes still unused in the buffer. 40685 40686@item circular:@var{n} 40687The value of the circular trace buffer flag. @code{1} means that the 40688trace buffer is circular and old trace frames will be discarded if 40689necessary to make room, @code{0} means that the trace buffer is linear 40690and may fill up. 40691 40692@item disconn:@var{n} 40693The value of the disconnected tracing flag. @code{1} means that 40694tracing will continue after @value{GDBN} disconnects, @code{0} means 40695that the trace run will stop. 40696 40697@end table 40698 40699@item qTP:@var{tp}:@var{addr} 40700@cindex tracepoint status, remote request 40701@cindex @samp{qTP} packet 40702Ask the stub for the current state of tracepoint number @var{tp} at 40703address @var{addr}. 40704 40705Replies: 40706@table @samp 40707@item V@var{hits}:@var{usage} 40708The tracepoint has been hit @var{hits} times so far during the trace 40709run, and accounts for @var{usage} in the trace buffer. Note that 40710@code{while-stepping} steps are not counted as separate hits, but the 40711steps' space consumption is added into the usage number. 40712 40713@end table 40714 40715@item qTV:@var{var} 40716@cindex trace state variable value, remote request 40717@cindex @samp{qTV} packet 40718Ask the stub for the value of the trace state variable number @var{var}. 40719 40720Replies: 40721@table @samp 40722@item V@var{value} 40723The value of the variable is @var{value}. This will be the current 40724value of the variable if the user is examining a running target, or a 40725saved value if the variable was collected in the trace frame that the 40726user is looking at. Note that multiple requests may result in 40727different reply values, such as when requesting values while the 40728program is running. 40729 40730@item U 40731The value of the variable is unknown. This would occur, for example, 40732if the user is examining a trace frame in which the requested variable 40733was not collected. 40734@end table 40735 40736@item qTfP 40737@cindex @samp{qTfP} packet 40738@itemx qTsP 40739@cindex @samp{qTsP} packet 40740These packets request data about tracepoints that are being used by 40741the target. @value{GDBN} sends @code{qTfP} to get the first piece 40742of data, and multiple @code{qTsP} to get additional pieces. Replies 40743to these packets generally take the form of the @code{QTDP} packets 40744that define tracepoints. (FIXME add detailed syntax) 40745 40746@item qTfV 40747@cindex @samp{qTfV} packet 40748@itemx qTsV 40749@cindex @samp{qTsV} packet 40750These packets request data about trace state variables that are on the 40751target. @value{GDBN} sends @code{qTfV} to get the first vari of data, 40752and multiple @code{qTsV} to get additional variables. Replies to 40753these packets follow the syntax of the @code{QTDV} packets that define 40754trace state variables. 40755 40756@item qTfSTM 40757@itemx qTsSTM 40758@anchor{qTfSTM} 40759@anchor{qTsSTM} 40760@cindex @samp{qTfSTM} packet 40761@cindex @samp{qTsSTM} packet 40762These packets request data about static tracepoint markers that exist 40763in the target program. @value{GDBN} sends @code{qTfSTM} to get the 40764first piece of data, and multiple @code{qTsSTM} to get additional 40765pieces. Replies to these packets take the following form: 40766 40767Reply: 40768@table @samp 40769@item m @var{address}:@var{id}:@var{extra} 40770A single marker 40771@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{} 40772a comma-separated list of markers 40773@item l 40774(lower case letter @samp{L}) denotes end of list. 40775@item E @var{nn} 40776An error occurred. @var{nn} are hex digits. 40777@item @w{} 40778An empty reply indicates that the request is not supported by the 40779stub. 40780@end table 40781 40782@var{address} is encoded in hex. 40783@var{id} and @var{extra} are strings encoded in hex. 40784 40785In response to each query, the target will reply with a list of one or 40786more markers, separated by commas. @value{GDBN} will respond to each 40787reply with a request for more markers (using the @samp{qs} form of the 40788query), until the target responds with @samp{l} (lower-case ell, for 40789@dfn{last}). 40790 40791@item qTSTMat:@var{address} 40792@anchor{qTSTMat} 40793@cindex @samp{qTSTMat} packet 40794This packets requests data about static tracepoint markers in the 40795target program at @var{address}. Replies to this packet follow the 40796syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static 40797tracepoint markers. 40798 40799@item QTSave:@var{filename} 40800@cindex @samp{QTSave} packet 40801This packet directs the target to save trace data to the file name 40802@var{filename} in the target's filesystem. @var{filename} is encoded 40803as a hex string; the interpretation of the file name (relative vs 40804absolute, wild cards, etc) is up to the target. 40805 40806@item qTBuffer:@var{offset},@var{len} 40807@cindex @samp{qTBuffer} packet 40808Return up to @var{len} bytes of the current contents of trace buffer, 40809starting at @var{offset}. The trace buffer is treated as if it were 40810a contiguous collection of traceframes, as per the trace file format. 40811The reply consists as many hex-encoded bytes as the target can deliver 40812in a packet; it is not an error to return fewer than were asked for. 40813A reply consisting of just @code{l} indicates that no bytes are 40814available. 40815 40816@item QTBuffer:circular:@var{value} 40817This packet directs the target to use a circular trace buffer if 40818@var{value} is 1, or a linear buffer if the value is 0. 40819 40820@item QTBuffer:size:@var{size} 40821@anchor{QTBuffer-size} 40822@cindex @samp{QTBuffer size} packet 40823This packet directs the target to make the trace buffer be of size 40824@var{size} if possible. A value of @code{-1} tells the target to 40825use whatever size it prefers. 40826 40827@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{} 40828@cindex @samp{QTNotes} packet 40829This packet adds optional textual notes to the trace run. Allowable 40830types include @code{user}, @code{notes}, and @code{tstop}, the 40831@var{text} fields are arbitrary strings, hex-encoded. 40832 40833@end table 40834 40835@subsection Relocate instruction reply packet 40836When installing fast tracepoints in memory, the target may need to 40837relocate the instruction currently at the tracepoint address to a 40838different address in memory. For most instructions, a simple copy is 40839enough, but, for example, call instructions that implicitly push the 40840return address on the stack, and relative branches or other 40841PC-relative instructions require offset adjustment, so that the effect 40842of executing the instruction at a different address is the same as if 40843it had executed in the original location. 40844 40845In response to several of the tracepoint packets, the target may also 40846respond with a number of intermediate @samp{qRelocInsn} request 40847packets before the final result packet, to have @value{GDBN} handle 40848this relocation operation. If a packet supports this mechanism, its 40849documentation will explicitly say so. See for example the above 40850descriptions for the @samp{QTStart} and @samp{QTDP} packets. The 40851format of the request is: 40852 40853@table @samp 40854@item qRelocInsn:@var{from};@var{to} 40855 40856This requests @value{GDBN} to copy instruction at address @var{from} 40857to address @var{to}, possibly adjusted so that executing the 40858instruction at @var{to} has the same effect as executing it at 40859@var{from}. @value{GDBN} writes the adjusted instruction to target 40860memory starting at @var{to}. 40861@end table 40862 40863Replies: 40864@table @samp 40865@item qRelocInsn:@var{adjusted_size} 40866Informs the stub the relocation is complete. @var{adjusted_size} is 40867the length in bytes of resulting relocated instruction sequence. 40868@item E @var{NN} 40869A badly formed request was detected, or an error was encountered while 40870relocating the instruction. 40871@end table 40872 40873@node Host I/O Packets 40874@section Host I/O Packets 40875@cindex Host I/O, remote protocol 40876@cindex file transfer, remote protocol 40877 40878The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O 40879operations on the far side of a remote link. For example, Host I/O is 40880used to upload and download files to a remote target with its own 40881filesystem. Host I/O uses the same constant values and data structure 40882layout as the target-initiated File-I/O protocol. However, the 40883Host I/O packets are structured differently. The target-initiated 40884protocol relies on target memory to store parameters and buffers. 40885Host I/O requests are initiated by @value{GDBN}, and the 40886target's memory is not involved. @xref{File-I/O Remote Protocol 40887Extension}, for more details on the target-initiated protocol. 40888 40889The Host I/O request packets all encode a single operation along with 40890its arguments. They have this format: 40891 40892@table @samp 40893 40894@item vFile:@var{operation}: @var{parameter}@dots{} 40895@var{operation} is the name of the particular request; the target 40896should compare the entire packet name up to the second colon when checking 40897for a supported operation. The format of @var{parameter} depends on 40898the operation. Numbers are always passed in hexadecimal. Negative 40899numbers have an explicit minus sign (i.e.@: two's complement is not 40900used). Strings (e.g.@: filenames) are encoded as a series of 40901hexadecimal bytes. The last argument to a system call may be a 40902buffer of escaped binary data (@pxref{Binary Data}). 40903 40904@end table 40905 40906The valid responses to Host I/O packets are: 40907 40908@table @samp 40909 40910@item F @var{result} [, @var{errno}] [; @var{attachment}] 40911@var{result} is the integer value returned by this operation, usually 40912non-negative for success and -1 for errors. If an error has occured, 40913@var{errno} will be included in the result. @var{errno} will have a 40914value defined by the File-I/O protocol (@pxref{Errno Values}). For 40915operations which return data, @var{attachment} supplies the data as a 40916binary buffer. Binary buffers in response packets are escaped in the 40917normal way (@pxref{Binary Data}). See the individual packet 40918documentation for the interpretation of @var{result} and 40919@var{attachment}. 40920 40921@item @w{} 40922An empty response indicates that this operation is not recognized. 40923 40924@end table 40925 40926These are the supported Host I/O operations: 40927 40928@table @samp 40929@item vFile:open: @var{pathname}, @var{flags}, @var{mode} 40930Open a file at @var{pathname} and return a file descriptor for it, or 40931return -1 if an error occurs. @var{pathname} is a string, 40932@var{flags} is an integer indicating a mask of open flags 40933(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask 40934of mode bits to use if the file is created (@pxref{mode_t Values}). 40935@xref{open}, for details of the open flags and mode values. 40936 40937@item vFile:close: @var{fd} 40938Close the open file corresponding to @var{fd} and return 0, or 40939-1 if an error occurs. 40940 40941@item vFile:pread: @var{fd}, @var{count}, @var{offset} 40942Read data from the open file corresponding to @var{fd}. Up to 40943@var{count} bytes will be read from the file, starting at @var{offset} 40944relative to the start of the file. The target may read fewer bytes; 40945common reasons include packet size limits and an end-of-file 40946condition. The number of bytes read is returned. Zero should only be 40947returned for a successful read at the end of the file, or if 40948@var{count} was zero. 40949 40950The data read should be returned as a binary attachment on success. 40951If zero bytes were read, the response should include an empty binary 40952attachment (i.e.@: a trailing semicolon). The return value is the 40953number of target bytes read; the binary attachment may be longer if 40954some characters were escaped. 40955 40956@item vFile:pwrite: @var{fd}, @var{offset}, @var{data} 40957Write @var{data} (a binary buffer) to the open file corresponding 40958to @var{fd}. Start the write at @var{offset} from the start of the 40959file. Unlike many @code{write} system calls, there is no 40960separate @var{count} argument; the length of @var{data} in the 40961packet is used. @samp{vFile:write} returns the number of bytes written, 40962which may be shorter than the length of @var{data}, or -1 if an 40963error occurred. 40964 40965@item vFile:unlink: @var{pathname} 40966Delete the file at @var{pathname} on the target. Return 0, 40967or -1 if an error occurs. @var{pathname} is a string. 40968 40969@item vFile:readlink: @var{filename} 40970Read value of symbolic link @var{filename} on the target. Return 40971the number of bytes read, or -1 if an error occurs. 40972 40973The data read should be returned as a binary attachment on success. 40974If zero bytes were read, the response should include an empty binary 40975attachment (i.e.@: a trailing semicolon). The return value is the 40976number of target bytes read; the binary attachment may be longer if 40977some characters were escaped. 40978 40979@end table 40980 40981@node Interrupts 40982@section Interrupts 40983@cindex interrupts (remote protocol) 40984 40985When a program on the remote target is running, @value{GDBN} may 40986attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or 40987a @code{BREAK} followed by @code{g}, 40988control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}. 40989 40990The precise meaning of @code{BREAK} is defined by the transport 40991mechanism and may, in fact, be undefined. @value{GDBN} does not 40992currently define a @code{BREAK} mechanism for any of the network 40993interfaces except for TCP, in which case @value{GDBN} sends the 40994@code{telnet} BREAK sequence. 40995 40996@samp{Ctrl-C}, on the other hand, is defined and implemented for all 40997transport mechanisms. It is represented by sending the single byte 40998@code{0x03} without any of the usual packet overhead described in 40999the Overview section (@pxref{Overview}). When a @code{0x03} byte is 41000transmitted as part of a packet, it is considered to be packet data 41001and does @emph{not} represent an interrupt. E.g., an @samp{X} packet 41002(@pxref{X packet}), used for binary downloads, may include an unescaped 41003@code{0x03} as part of its packet. 41004 41005@code{BREAK} followed by @code{g} is also known as Magic SysRq g. 41006When Linux kernel receives this sequence from serial port, 41007it stops execution and connects to gdb. 41008 41009Stubs are not required to recognize these interrupt mechanisms and the 41010precise meaning associated with receipt of the interrupt is 41011implementation defined. If the target supports debugging of multiple 41012threads and/or processes, it should attempt to interrupt all 41013currently-executing threads and processes. 41014If the stub is successful at interrupting the 41015running program, it should send one of the stop 41016reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result 41017of successfully stopping the program in all-stop mode, and a stop reply 41018for each stopped thread in non-stop mode. 41019Interrupts received while the 41020program is stopped are discarded. 41021 41022@node Notification Packets 41023@section Notification Packets 41024@cindex notification packets 41025@cindex packets, notification 41026 41027The @value{GDBN} remote serial protocol includes @dfn{notifications}, 41028packets that require no acknowledgment. Both the GDB and the stub 41029may send notifications (although the only notifications defined at 41030present are sent by the stub). Notifications carry information 41031without incurring the round-trip latency of an acknowledgment, and so 41032are useful for low-impact communications where occasional packet loss 41033is not a problem. 41034 41035A notification packet has the form @samp{% @var{data} # 41036@var{checksum}}, where @var{data} is the content of the notification, 41037and @var{checksum} is a checksum of @var{data}, computed and formatted 41038as for ordinary @value{GDBN} packets. A notification's @var{data} 41039never contains @samp{$}, @samp{%} or @samp{#} characters. Upon 41040receiving a notification, the recipient sends no @samp{+} or @samp{-} 41041to acknowledge the notification's receipt or to report its corruption. 41042 41043Every notification's @var{data} begins with a name, which contains no 41044colon characters, followed by a colon character. 41045 41046Recipients should silently ignore corrupted notifications and 41047notifications they do not understand. Recipients should restart 41048timeout periods on receipt of a well-formed notification, whether or 41049not they understand it. 41050 41051Senders should only send the notifications described here when this 41052protocol description specifies that they are permitted. In the 41053future, we may extend the protocol to permit existing notifications in 41054new contexts; this rule helps older senders avoid confusing newer 41055recipients. 41056 41057(Older versions of @value{GDBN} ignore bytes received until they see 41058the @samp{$} byte that begins an ordinary packet, so new stubs may 41059transmit notifications without fear of confusing older clients. There 41060are no notifications defined for @value{GDBN} to send at the moment, but we 41061assume that most older stubs would ignore them, as well.) 41062 41063Each notification is comprised of three parts: 41064@table @samp 41065@item @var{name}:@var{event} 41066The notification packet is sent by the side that initiates the 41067exchange (currently, only the stub does that), with @var{event} 41068carrying the specific information about the notification. 41069@var{name} is the name of the notification. 41070@item @var{ack} 41071The acknowledge sent by the other side, usually @value{GDBN}, to 41072acknowledge the exchange and request the event. 41073@end table 41074 41075The purpose of an asynchronous notification mechanism is to report to 41076@value{GDBN} that something interesting happened in the remote stub. 41077 41078The remote stub may send notification @var{name}:@var{event} 41079at any time, but @value{GDBN} acknowledges the notification when 41080appropriate. The notification event is pending before @value{GDBN} 41081acknowledges. Only one notification at a time may be pending; if 41082additional events occur before @value{GDBN} has acknowledged the 41083previous notification, they must be queued by the stub for later 41084synchronous transmission in response to @var{ack} packets from 41085@value{GDBN}. Because the notification mechanism is unreliable, 41086the stub is permitted to resend a notification if it believes 41087@value{GDBN} may not have received it. 41088 41089Specifically, notifications may appear when @value{GDBN} is not 41090otherwise reading input from the stub, or when @value{GDBN} is 41091expecting to read a normal synchronous response or a 41092@samp{+}/@samp{-} acknowledgment to a packet it has sent. 41093Notification packets are distinct from any other communication from 41094the stub so there is no ambiguity. 41095 41096After receiving a notification, @value{GDBN} shall acknowledge it by 41097sending a @var{ack} packet as a regular, synchronous request to the 41098stub. Such acknowledgment is not required to happen immediately, as 41099@value{GDBN} is permitted to send other, unrelated packets to the 41100stub first, which the stub should process normally. 41101 41102Upon receiving a @var{ack} packet, if the stub has other queued 41103events to report to @value{GDBN}, it shall respond by sending a 41104normal @var{event}. @value{GDBN} shall then send another @var{ack} 41105packet to solicit further responses; again, it is permitted to send 41106other, unrelated packets as well which the stub should process 41107normally. 41108 41109If the stub receives a @var{ack} packet and there are no additional 41110@var{event} to report, the stub shall return an @samp{OK} response. 41111At this point, @value{GDBN} has finished processing a notification 41112and the stub has completed sending any queued events. @value{GDBN} 41113won't accept any new notifications until the final @samp{OK} is 41114received . If further notification events occur, the stub shall send 41115a new notification, @value{GDBN} shall accept the notification, and 41116the process shall be repeated. 41117 41118The process of asynchronous notification can be illustrated by the 41119following example: 41120@smallexample 41121<- @code{%%Stop:T0505:98e7ffbf;04:4ce6ffbf;08:b1b6e54c;thread:p7526.7526;core:0;} 41122@code{...} 41123-> @code{vStopped} 41124<- @code{T0505:68f37db7;04:40f37db7;08:63850408;thread:p7526.7528;core:0;} 41125-> @code{vStopped} 41126<- @code{T0505:68e3fdb6;04:40e3fdb6;08:63850408;thread:p7526.7529;core:0;} 41127-> @code{vStopped} 41128<- @code{OK} 41129@end smallexample 41130 41131The following notifications are defined: 41132@multitable @columnfractions 0.12 0.12 0.38 0.38 41133 41134@item Notification 41135@tab Ack 41136@tab Event 41137@tab Description 41138 41139@item Stop 41140@tab vStopped 41141@tab @var{reply}. The @var{reply} has the form of a stop reply, as 41142described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop}, 41143for information on how these notifications are acknowledged by 41144@value{GDBN}. 41145@tab Report an asynchronous stop event in non-stop mode. 41146 41147@end multitable 41148 41149@node Remote Non-Stop 41150@section Remote Protocol Support for Non-Stop Mode 41151 41152@value{GDBN}'s remote protocol supports non-stop debugging of 41153multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub 41154supports non-stop mode, it should report that to @value{GDBN} by including 41155@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}). 41156 41157@value{GDBN} typically sends a @samp{QNonStop} packet only when 41158establishing a new connection with the stub. Entering non-stop mode 41159does not alter the state of any currently-running threads, but targets 41160must stop all threads in any already-attached processes when entering 41161all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to 41162probe the target state after a mode change. 41163 41164In non-stop mode, when an attached process encounters an event that 41165would otherwise be reported with a stop reply, it uses the 41166asynchronous notification mechanism (@pxref{Notification Packets}) to 41167inform @value{GDBN}. In contrast to all-stop mode, where all threads 41168in all processes are stopped when a stop reply is sent, in non-stop 41169mode only the thread reporting the stop event is stopped. That is, 41170when reporting a @samp{S} or @samp{T} response to indicate completion 41171of a step operation, hitting a breakpoint, or a fault, only the 41172affected thread is stopped; any other still-running threads continue 41173to run. When reporting a @samp{W} or @samp{X} response, all running 41174threads belonging to other attached processes continue to run. 41175 41176In non-stop mode, the target shall respond to the @samp{?} packet as 41177follows. First, any incomplete stop reply notification/@samp{vStopped} 41178sequence in progress is abandoned. The target must begin a new 41179sequence reporting stop events for all stopped threads, whether or not 41180it has previously reported those events to @value{GDBN}. The first 41181stop reply is sent as a synchronous reply to the @samp{?} packet, and 41182subsequent stop replies are sent as responses to @samp{vStopped} packets 41183using the mechanism described above. The target must not send 41184asynchronous stop reply notifications until the sequence is complete. 41185If all threads are running when the target receives the @samp{?} packet, 41186or if the target is not attached to any process, it shall respond 41187@samp{OK}. 41188 41189@node Packet Acknowledgment 41190@section Packet Acknowledgment 41191 41192@cindex acknowledgment, for @value{GDBN} remote 41193@cindex packet acknowledgment, for @value{GDBN} remote 41194By default, when either the host or the target machine receives a packet, 41195the first response expected is an acknowledgment: either @samp{+} (to indicate 41196the package was received correctly) or @samp{-} (to request retransmission). 41197This mechanism allows the @value{GDBN} remote protocol to operate over 41198unreliable transport mechanisms, such as a serial line. 41199 41200In cases where the transport mechanism is itself reliable (such as a pipe or 41201TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant. 41202It may be desirable to disable them in that case to reduce communication 41203overhead, or for other reasons. This can be accomplished by means of the 41204@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}. 41205 41206When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or 41207expect @samp{+}/@samp{-} protocol acknowledgments. The packet 41208and response format still includes the normal checksum, as described in 41209@ref{Overview}, but the checksum may be ignored by the receiver. 41210 41211If the stub supports @samp{QStartNoAckMode} and prefers to operate in 41212no-acknowledgment mode, it should report that to @value{GDBN} 41213by including @samp{QStartNoAckMode+} in its response to @samp{qSupported}; 41214@pxref{qSupported}. 41215If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been 41216disabled via the @code{set remote noack-packet off} command 41217(@pxref{Remote Configuration}), 41218@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub. 41219Only then may the stub actually turn off packet acknowledgments. 41220@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK} 41221response, which can be safely ignored by the stub. 41222 41223Note that @code{set remote noack-packet} command only affects negotiation 41224between @value{GDBN} and the stub when subsequent connections are made; 41225it does not affect the protocol acknowledgment state for any current 41226connection. 41227Since @samp{+}/@samp{-} acknowledgments are enabled by default when a 41228new connection is established, 41229there is also no protocol request to re-enable the acknowledgments 41230for the current connection, once disabled. 41231 41232@node Examples 41233@section Examples 41234 41235Example sequence of a target being re-started. Notice how the restart 41236does not get any direct output: 41237 41238@smallexample 41239-> @code{R00} 41240<- @code{+} 41241@emph{target restarts} 41242-> @code{?} 41243<- @code{+} 41244<- @code{T001:1234123412341234} 41245-> @code{+} 41246@end smallexample 41247 41248Example sequence of a target being stepped by a single instruction: 41249 41250@smallexample 41251-> @code{G1445@dots{}} 41252<- @code{+} 41253-> @code{s} 41254<- @code{+} 41255@emph{time passes} 41256<- @code{T001:1234123412341234} 41257-> @code{+} 41258-> @code{g} 41259<- @code{+} 41260<- @code{1455@dots{}} 41261-> @code{+} 41262@end smallexample 41263 41264@node File-I/O Remote Protocol Extension 41265@section File-I/O Remote Protocol Extension 41266@cindex File-I/O remote protocol extension 41267 41268@menu 41269* File-I/O Overview:: 41270* Protocol Basics:: 41271* The F Request Packet:: 41272* The F Reply Packet:: 41273* The Ctrl-C Message:: 41274* Console I/O:: 41275* List of Supported Calls:: 41276* Protocol-specific Representation of Datatypes:: 41277* Constants:: 41278* File-I/O Examples:: 41279@end menu 41280 41281@node File-I/O Overview 41282@subsection File-I/O Overview 41283@cindex file-i/o overview 41284 41285The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the 41286target to use the host's file system and console I/O to perform various 41287system calls. System calls on the target system are translated into a 41288remote protocol packet to the host system, which then performs the needed 41289actions and returns a response packet to the target system. 41290This simulates file system operations even on targets that lack file systems. 41291 41292The protocol is defined to be independent of both the host and target systems. 41293It uses its own internal representation of datatypes and values. Both 41294@value{GDBN} and the target's @value{GDBN} stub are responsible for 41295translating the system-dependent value representations into the internal 41296protocol representations when data is transmitted. 41297 41298The communication is synchronous. A system call is possible only when 41299@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S} 41300or @samp{s} packets. While @value{GDBN} handles the request for a system call, 41301the target is stopped to allow deterministic access to the target's 41302memory. Therefore File-I/O is not interruptible by target signals. On 41303the other hand, it is possible to interrupt File-I/O by a user interrupt 41304(@samp{Ctrl-C}) within @value{GDBN}. 41305 41306The target's request to perform a host system call does not finish 41307the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means, 41308after finishing the system call, the target returns to continuing the 41309previous activity (continue, step). No additional continue or step 41310request from @value{GDBN} is required. 41311 41312@smallexample 41313(@value{GDBP}) continue 41314 <- target requests 'system call X' 41315 target is stopped, @value{GDBN} executes system call 41316 -> @value{GDBN} returns result 41317 ... target continues, @value{GDBN} returns to wait for the target 41318 <- target hits breakpoint and sends a Txx packet 41319@end smallexample 41320 41321The protocol only supports I/O on the console and to regular files on 41322the host file system. Character or block special devices, pipes, 41323named pipes, sockets or any other communication method on the host 41324system are not supported by this protocol. 41325 41326File I/O is not supported in non-stop mode. 41327 41328@node Protocol Basics 41329@subsection Protocol Basics 41330@cindex protocol basics, file-i/o 41331 41332The File-I/O protocol uses the @code{F} packet as the request as well 41333as reply packet. Since a File-I/O system call can only occur when 41334@value{GDBN} is waiting for a response from the continuing or stepping target, 41335the File-I/O request is a reply that @value{GDBN} has to expect as a result 41336of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet. 41337This @code{F} packet contains all information needed to allow @value{GDBN} 41338to call the appropriate host system call: 41339 41340@itemize @bullet 41341@item 41342A unique identifier for the requested system call. 41343 41344@item 41345All parameters to the system call. Pointers are given as addresses 41346in the target memory address space. Pointers to strings are given as 41347pointer/length pair. Numerical values are given as they are. 41348Numerical control flags are given in a protocol-specific representation. 41349 41350@end itemize 41351 41352At this point, @value{GDBN} has to perform the following actions. 41353 41354@itemize @bullet 41355@item 41356If the parameters include pointer values to data needed as input to a 41357system call, @value{GDBN} requests this data from the target with a 41358standard @code{m} packet request. This additional communication has to be 41359expected by the target implementation and is handled as any other @code{m} 41360packet. 41361 41362@item 41363@value{GDBN} translates all value from protocol representation to host 41364representation as needed. Datatypes are coerced into the host types. 41365 41366@item 41367@value{GDBN} calls the system call. 41368 41369@item 41370It then coerces datatypes back to protocol representation. 41371 41372@item 41373If the system call is expected to return data in buffer space specified 41374by pointer parameters to the call, the data is transmitted to the 41375target using a @code{M} or @code{X} packet. This packet has to be expected 41376by the target implementation and is handled as any other @code{M} or @code{X} 41377packet. 41378 41379@end itemize 41380 41381Eventually @value{GDBN} replies with another @code{F} packet which contains all 41382necessary information for the target to continue. This at least contains 41383 41384@itemize @bullet 41385@item 41386Return value. 41387 41388@item 41389@code{errno}, if has been changed by the system call. 41390 41391@item 41392``Ctrl-C'' flag. 41393 41394@end itemize 41395 41396After having done the needed type and value coercion, the target continues 41397the latest continue or step action. 41398 41399@node The F Request Packet 41400@subsection The @code{F} Request Packet 41401@cindex file-i/o request packet 41402@cindex @code{F} request packet 41403 41404The @code{F} request packet has the following format: 41405 41406@table @samp 41407@item F@var{call-id},@var{parameter@dots{}} 41408 41409@var{call-id} is the identifier to indicate the host system call to be called. 41410This is just the name of the function. 41411 41412@var{parameter@dots{}} are the parameters to the system call. 41413Parameters are hexadecimal integer values, either the actual values in case 41414of scalar datatypes, pointers to target buffer space in case of compound 41415datatypes and unspecified memory areas, or pointer/length pairs in case 41416of string parameters. These are appended to the @var{call-id} as a 41417comma-delimited list. All values are transmitted in ASCII 41418string representation, pointer/length pairs separated by a slash. 41419 41420@end table 41421 41422 41423 41424@node The F Reply Packet 41425@subsection The @code{F} Reply Packet 41426@cindex file-i/o reply packet 41427@cindex @code{F} reply packet 41428 41429The @code{F} reply packet has the following format: 41430 41431@table @samp 41432 41433@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment} 41434 41435@var{retcode} is the return code of the system call as hexadecimal value. 41436 41437@var{errno} is the @code{errno} set by the call, in protocol-specific 41438representation. 41439This parameter can be omitted if the call was successful. 41440 41441@var{Ctrl-C flag} is only sent if the user requested a break. In this 41442case, @var{errno} must be sent as well, even if the call was successful. 41443The @var{Ctrl-C flag} itself consists of the character @samp{C}: 41444 41445@smallexample 41446F0,0,C 41447@end smallexample 41448 41449@noindent 41450or, if the call was interrupted before the host call has been performed: 41451 41452@smallexample 41453F-1,4,C 41454@end smallexample 41455 41456@noindent 41457assuming 4 is the protocol-specific representation of @code{EINTR}. 41458 41459@end table 41460 41461 41462@node The Ctrl-C Message 41463@subsection The @samp{Ctrl-C} Message 41464@cindex ctrl-c message, in file-i/o protocol 41465 41466If the @samp{Ctrl-C} flag is set in the @value{GDBN} 41467reply packet (@pxref{The F Reply Packet}), 41468the target should behave as if it had 41469gotten a break message. The meaning for the target is ``system call 41470interrupted by @code{SIGINT}''. Consequentially, the target should actually stop 41471(as with a break message) and return to @value{GDBN} with a @code{T02} 41472packet. 41473 41474It's important for the target to know in which 41475state the system call was interrupted. There are two possible cases: 41476 41477@itemize @bullet 41478@item 41479The system call hasn't been performed on the host yet. 41480 41481@item 41482The system call on the host has been finished. 41483 41484@end itemize 41485 41486These two states can be distinguished by the target by the value of the 41487returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system 41488call hasn't been performed. This is equivalent to the @code{EINTR} handling 41489on POSIX systems. In any other case, the target may presume that the 41490system call has been finished --- successfully or not --- and should behave 41491as if the break message arrived right after the system call. 41492 41493@value{GDBN} must behave reliably. If the system call has not been called 41494yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as 41495@code{errno} in the packet. If the system call on the host has been finished 41496before the user requests a break, the full action must be finished by 41497@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary. 41498The @code{F} packet may only be sent when either nothing has happened 41499or the full action has been completed. 41500 41501@node Console I/O 41502@subsection Console I/O 41503@cindex console i/o as part of file-i/o 41504 41505By default and if not explicitly closed by the target system, the file 41506descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output 41507on the @value{GDBN} console is handled as any other file output operation 41508(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled 41509by @value{GDBN} so that after the target read request from file descriptor 415100 all following typing is buffered until either one of the following 41511conditions is met: 41512 41513@itemize @bullet 41514@item 41515The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the 41516@code{read} 41517system call is treated as finished. 41518 41519@item 41520The user presses @key{RET}. This is treated as end of input with a trailing 41521newline. 41522 41523@item 41524The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing 41525character (neither newline nor @samp{Ctrl-D}) is appended to the input. 41526 41527@end itemize 41528 41529If the user has typed more characters than fit in the buffer given to 41530the @code{read} call, the trailing characters are buffered in @value{GDBN} until 41531either another @code{read(0, @dots{})} is requested by the target, or debugging 41532is stopped at the user's request. 41533 41534 41535@node List of Supported Calls 41536@subsection List of Supported Calls 41537@cindex list of supported file-i/o calls 41538 41539@menu 41540* open:: 41541* close:: 41542* read:: 41543* write:: 41544* lseek:: 41545* rename:: 41546* unlink:: 41547* stat/fstat:: 41548* gettimeofday:: 41549* isatty:: 41550* system:: 41551@end menu 41552 41553@node open 41554@unnumberedsubsubsec open 41555@cindex open, file-i/o system call 41556 41557@table @asis 41558@item Synopsis: 41559@smallexample 41560int open(const char *pathname, int flags); 41561int open(const char *pathname, int flags, mode_t mode); 41562@end smallexample 41563 41564@item Request: 41565@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}} 41566 41567@noindent 41568@var{flags} is the bitwise @code{OR} of the following values: 41569 41570@table @code 41571@item O_CREAT 41572If the file does not exist it will be created. The host 41573rules apply as far as file ownership and time stamps 41574are concerned. 41575 41576@item O_EXCL 41577When used with @code{O_CREAT}, if the file already exists it is 41578an error and open() fails. 41579 41580@item O_TRUNC 41581If the file already exists and the open mode allows 41582writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be 41583truncated to zero length. 41584 41585@item O_APPEND 41586The file is opened in append mode. 41587 41588@item O_RDONLY 41589The file is opened for reading only. 41590 41591@item O_WRONLY 41592The file is opened for writing only. 41593 41594@item O_RDWR 41595The file is opened for reading and writing. 41596@end table 41597 41598@noindent 41599Other bits are silently ignored. 41600 41601 41602@noindent 41603@var{mode} is the bitwise @code{OR} of the following values: 41604 41605@table @code 41606@item S_IRUSR 41607User has read permission. 41608 41609@item S_IWUSR 41610User has write permission. 41611 41612@item S_IRGRP 41613Group has read permission. 41614 41615@item S_IWGRP 41616Group has write permission. 41617 41618@item S_IROTH 41619Others have read permission. 41620 41621@item S_IWOTH 41622Others have write permission. 41623@end table 41624 41625@noindent 41626Other bits are silently ignored. 41627 41628 41629@item Return value: 41630@code{open} returns the new file descriptor or -1 if an error 41631occurred. 41632 41633@item Errors: 41634 41635@table @code 41636@item EEXIST 41637@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used. 41638 41639@item EISDIR 41640@var{pathname} refers to a directory. 41641 41642@item EACCES 41643The requested access is not allowed. 41644 41645@item ENAMETOOLONG 41646@var{pathname} was too long. 41647 41648@item ENOENT 41649A directory component in @var{pathname} does not exist. 41650 41651@item ENODEV 41652@var{pathname} refers to a device, pipe, named pipe or socket. 41653 41654@item EROFS 41655@var{pathname} refers to a file on a read-only filesystem and 41656write access was requested. 41657 41658@item EFAULT 41659@var{pathname} is an invalid pointer value. 41660 41661@item ENOSPC 41662No space on device to create the file. 41663 41664@item EMFILE 41665The process already has the maximum number of files open. 41666 41667@item ENFILE 41668The limit on the total number of files open on the system 41669has been reached. 41670 41671@item EINTR 41672The call was interrupted by the user. 41673@end table 41674 41675@end table 41676 41677@node close 41678@unnumberedsubsubsec close 41679@cindex close, file-i/o system call 41680 41681@table @asis 41682@item Synopsis: 41683@smallexample 41684int close(int fd); 41685@end smallexample 41686 41687@item Request: 41688@samp{Fclose,@var{fd}} 41689 41690@item Return value: 41691@code{close} returns zero on success, or -1 if an error occurred. 41692 41693@item Errors: 41694 41695@table @code 41696@item EBADF 41697@var{fd} isn't a valid open file descriptor. 41698 41699@item EINTR 41700The call was interrupted by the user. 41701@end table 41702 41703@end table 41704 41705@node read 41706@unnumberedsubsubsec read 41707@cindex read, file-i/o system call 41708 41709@table @asis 41710@item Synopsis: 41711@smallexample 41712int read(int fd, void *buf, unsigned int count); 41713@end smallexample 41714 41715@item Request: 41716@samp{Fread,@var{fd},@var{bufptr},@var{count}} 41717 41718@item Return value: 41719On success, the number of bytes read is returned. 41720Zero indicates end of file. If count is zero, read 41721returns zero as well. On error, -1 is returned. 41722 41723@item Errors: 41724 41725@table @code 41726@item EBADF 41727@var{fd} is not a valid file descriptor or is not open for 41728reading. 41729 41730@item EFAULT 41731@var{bufptr} is an invalid pointer value. 41732 41733@item EINTR 41734The call was interrupted by the user. 41735@end table 41736 41737@end table 41738 41739@node write 41740@unnumberedsubsubsec write 41741@cindex write, file-i/o system call 41742 41743@table @asis 41744@item Synopsis: 41745@smallexample 41746int write(int fd, const void *buf, unsigned int count); 41747@end smallexample 41748 41749@item Request: 41750@samp{Fwrite,@var{fd},@var{bufptr},@var{count}} 41751 41752@item Return value: 41753On success, the number of bytes written are returned. 41754Zero indicates nothing was written. On error, -1 41755is returned. 41756 41757@item Errors: 41758 41759@table @code 41760@item EBADF 41761@var{fd} is not a valid file descriptor or is not open for 41762writing. 41763 41764@item EFAULT 41765@var{bufptr} is an invalid pointer value. 41766 41767@item EFBIG 41768An attempt was made to write a file that exceeds the 41769host-specific maximum file size allowed. 41770 41771@item ENOSPC 41772No space on device to write the data. 41773 41774@item EINTR 41775The call was interrupted by the user. 41776@end table 41777 41778@end table 41779 41780@node lseek 41781@unnumberedsubsubsec lseek 41782@cindex lseek, file-i/o system call 41783 41784@table @asis 41785@item Synopsis: 41786@smallexample 41787long lseek (int fd, long offset, int flag); 41788@end smallexample 41789 41790@item Request: 41791@samp{Flseek,@var{fd},@var{offset},@var{flag}} 41792 41793@var{flag} is one of: 41794 41795@table @code 41796@item SEEK_SET 41797The offset is set to @var{offset} bytes. 41798 41799@item SEEK_CUR 41800The offset is set to its current location plus @var{offset} 41801bytes. 41802 41803@item SEEK_END 41804The offset is set to the size of the file plus @var{offset} 41805bytes. 41806@end table 41807 41808@item Return value: 41809On success, the resulting unsigned offset in bytes from 41810the beginning of the file is returned. Otherwise, a 41811value of -1 is returned. 41812 41813@item Errors: 41814 41815@table @code 41816@item EBADF 41817@var{fd} is not a valid open file descriptor. 41818 41819@item ESPIPE 41820@var{fd} is associated with the @value{GDBN} console. 41821 41822@item EINVAL 41823@var{flag} is not a proper value. 41824 41825@item EINTR 41826The call was interrupted by the user. 41827@end table 41828 41829@end table 41830 41831@node rename 41832@unnumberedsubsubsec rename 41833@cindex rename, file-i/o system call 41834 41835@table @asis 41836@item Synopsis: 41837@smallexample 41838int rename(const char *oldpath, const char *newpath); 41839@end smallexample 41840 41841@item Request: 41842@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}} 41843 41844@item Return value: 41845On success, zero is returned. On error, -1 is returned. 41846 41847@item Errors: 41848 41849@table @code 41850@item EISDIR 41851@var{newpath} is an existing directory, but @var{oldpath} is not a 41852directory. 41853 41854@item EEXIST 41855@var{newpath} is a non-empty directory. 41856 41857@item EBUSY 41858@var{oldpath} or @var{newpath} is a directory that is in use by some 41859process. 41860 41861@item EINVAL 41862An attempt was made to make a directory a subdirectory 41863of itself. 41864 41865@item ENOTDIR 41866A component used as a directory in @var{oldpath} or new 41867path is not a directory. Or @var{oldpath} is a directory 41868and @var{newpath} exists but is not a directory. 41869 41870@item EFAULT 41871@var{oldpathptr} or @var{newpathptr} are invalid pointer values. 41872 41873@item EACCES 41874No access to the file or the path of the file. 41875 41876@item ENAMETOOLONG 41877 41878@var{oldpath} or @var{newpath} was too long. 41879 41880@item ENOENT 41881A directory component in @var{oldpath} or @var{newpath} does not exist. 41882 41883@item EROFS 41884The file is on a read-only filesystem. 41885 41886@item ENOSPC 41887The device containing the file has no room for the new 41888directory entry. 41889 41890@item EINTR 41891The call was interrupted by the user. 41892@end table 41893 41894@end table 41895 41896@node unlink 41897@unnumberedsubsubsec unlink 41898@cindex unlink, file-i/o system call 41899 41900@table @asis 41901@item Synopsis: 41902@smallexample 41903int unlink(const char *pathname); 41904@end smallexample 41905 41906@item Request: 41907@samp{Funlink,@var{pathnameptr}/@var{len}} 41908 41909@item Return value: 41910On success, zero is returned. On error, -1 is returned. 41911 41912@item Errors: 41913 41914@table @code 41915@item EACCES 41916No access to the file or the path of the file. 41917 41918@item EPERM 41919The system does not allow unlinking of directories. 41920 41921@item EBUSY 41922The file @var{pathname} cannot be unlinked because it's 41923being used by another process. 41924 41925@item EFAULT 41926@var{pathnameptr} is an invalid pointer value. 41927 41928@item ENAMETOOLONG 41929@var{pathname} was too long. 41930 41931@item ENOENT 41932A directory component in @var{pathname} does not exist. 41933 41934@item ENOTDIR 41935A component of the path is not a directory. 41936 41937@item EROFS 41938The file is on a read-only filesystem. 41939 41940@item EINTR 41941The call was interrupted by the user. 41942@end table 41943 41944@end table 41945 41946@node stat/fstat 41947@unnumberedsubsubsec stat/fstat 41948@cindex fstat, file-i/o system call 41949@cindex stat, file-i/o system call 41950 41951@table @asis 41952@item Synopsis: 41953@smallexample 41954int stat(const char *pathname, struct stat *buf); 41955int fstat(int fd, struct stat *buf); 41956@end smallexample 41957 41958@item Request: 41959@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@* 41960@samp{Ffstat,@var{fd},@var{bufptr}} 41961 41962@item Return value: 41963On success, zero is returned. On error, -1 is returned. 41964 41965@item Errors: 41966 41967@table @code 41968@item EBADF 41969@var{fd} is not a valid open file. 41970 41971@item ENOENT 41972A directory component in @var{pathname} does not exist or the 41973path is an empty string. 41974 41975@item ENOTDIR 41976A component of the path is not a directory. 41977 41978@item EFAULT 41979@var{pathnameptr} is an invalid pointer value. 41980 41981@item EACCES 41982No access to the file or the path of the file. 41983 41984@item ENAMETOOLONG 41985@var{pathname} was too long. 41986 41987@item EINTR 41988The call was interrupted by the user. 41989@end table 41990 41991@end table 41992 41993@node gettimeofday 41994@unnumberedsubsubsec gettimeofday 41995@cindex gettimeofday, file-i/o system call 41996 41997@table @asis 41998@item Synopsis: 41999@smallexample 42000int gettimeofday(struct timeval *tv, void *tz); 42001@end smallexample 42002 42003@item Request: 42004@samp{Fgettimeofday,@var{tvptr},@var{tzptr}} 42005 42006@item Return value: 42007On success, 0 is returned, -1 otherwise. 42008 42009@item Errors: 42010 42011@table @code 42012@item EINVAL 42013@var{tz} is a non-NULL pointer. 42014 42015@item EFAULT 42016@var{tvptr} and/or @var{tzptr} is an invalid pointer value. 42017@end table 42018 42019@end table 42020 42021@node isatty 42022@unnumberedsubsubsec isatty 42023@cindex isatty, file-i/o system call 42024 42025@table @asis 42026@item Synopsis: 42027@smallexample 42028int isatty(int fd); 42029@end smallexample 42030 42031@item Request: 42032@samp{Fisatty,@var{fd}} 42033 42034@item Return value: 42035Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise. 42036 42037@item Errors: 42038 42039@table @code 42040@item EINTR 42041The call was interrupted by the user. 42042@end table 42043 42044@end table 42045 42046Note that the @code{isatty} call is treated as a special case: it returns 420471 to the target if the file descriptor is attached 42048to the @value{GDBN} console, 0 otherwise. Implementing through system calls 42049would require implementing @code{ioctl} and would be more complex than 42050needed. 42051 42052 42053@node system 42054@unnumberedsubsubsec system 42055@cindex system, file-i/o system call 42056 42057@table @asis 42058@item Synopsis: 42059@smallexample 42060int system(const char *command); 42061@end smallexample 42062 42063@item Request: 42064@samp{Fsystem,@var{commandptr}/@var{len}} 42065 42066@item Return value: 42067If @var{len} is zero, the return value indicates whether a shell is 42068available. A zero return value indicates a shell is not available. 42069For non-zero @var{len}, the value returned is -1 on error and the 42070return status of the command otherwise. Only the exit status of the 42071command is returned, which is extracted from the host's @code{system} 42072return value by calling @code{WEXITSTATUS(retval)}. In case 42073@file{/bin/sh} could not be executed, 127 is returned. 42074 42075@item Errors: 42076 42077@table @code 42078@item EINTR 42079The call was interrupted by the user. 42080@end table 42081 42082@end table 42083 42084@value{GDBN} takes over the full task of calling the necessary host calls 42085to perform the @code{system} call. The return value of @code{system} on 42086the host is simplified before it's returned 42087to the target. Any termination signal information from the child process 42088is discarded, and the return value consists 42089entirely of the exit status of the called command. 42090 42091Due to security concerns, the @code{system} call is by default refused 42092by @value{GDBN}. The user has to allow this call explicitly with the 42093@code{set remote system-call-allowed 1} command. 42094 42095@table @code 42096@item set remote system-call-allowed 42097@kindex set remote system-call-allowed 42098Control whether to allow the @code{system} calls in the File I/O 42099protocol for the remote target. The default is zero (disabled). 42100 42101@item show remote system-call-allowed 42102@kindex show remote system-call-allowed 42103Show whether the @code{system} calls are allowed in the File I/O 42104protocol. 42105@end table 42106 42107@node Protocol-specific Representation of Datatypes 42108@subsection Protocol-specific Representation of Datatypes 42109@cindex protocol-specific representation of datatypes, in file-i/o protocol 42110 42111@menu 42112* Integral Datatypes:: 42113* Pointer Values:: 42114* Memory Transfer:: 42115* struct stat:: 42116* struct timeval:: 42117@end menu 42118 42119@node Integral Datatypes 42120@unnumberedsubsubsec Integral Datatypes 42121@cindex integral datatypes, in file-i/o protocol 42122 42123The integral datatypes used in the system calls are @code{int}, 42124@code{unsigned int}, @code{long}, @code{unsigned long}, 42125@code{mode_t}, and @code{time_t}. 42126 42127@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are 42128implemented as 32 bit values in this protocol. 42129 42130@code{long} and @code{unsigned long} are implemented as 64 bit types. 42131 42132@xref{Limits}, for corresponding MIN and MAX values (similar to those 42133in @file{limits.h}) to allow range checking on host and target. 42134 42135@code{time_t} datatypes are defined as seconds since the Epoch. 42136 42137All integral datatypes transferred as part of a memory read or write of a 42138structured datatype e.g.@: a @code{struct stat} have to be given in big endian 42139byte order. 42140 42141@node Pointer Values 42142@unnumberedsubsubsec Pointer Values 42143@cindex pointer values, in file-i/o protocol 42144 42145Pointers to target data are transmitted as they are. An exception 42146is made for pointers to buffers for which the length isn't 42147transmitted as part of the function call, namely strings. Strings 42148are transmitted as a pointer/length pair, both as hex values, e.g.@: 42149 42150@smallexample 42151@code{1aaf/12} 42152@end smallexample 42153 42154@noindent 42155which is a pointer to data of length 18 bytes at position 0x1aaf. 42156The length is defined as the full string length in bytes, including 42157the trailing null byte. For example, the string @code{"hello world"} 42158at address 0x123456 is transmitted as 42159 42160@smallexample 42161@code{123456/d} 42162@end smallexample 42163 42164@node Memory Transfer 42165@unnumberedsubsubsec Memory Transfer 42166@cindex memory transfer, in file-i/o protocol 42167 42168Structured data which is transferred using a memory read or write (for 42169example, a @code{struct stat}) is expected to be in a protocol-specific format 42170with all scalar multibyte datatypes being big endian. Translation to 42171this representation needs to be done both by the target before the @code{F} 42172packet is sent, and by @value{GDBN} before 42173it transfers memory to the target. Transferred pointers to structured 42174data should point to the already-coerced data at any time. 42175 42176 42177@node struct stat 42178@unnumberedsubsubsec struct stat 42179@cindex struct stat, in file-i/o protocol 42180 42181The buffer of type @code{struct stat} used by the target and @value{GDBN} 42182is defined as follows: 42183 42184@smallexample 42185struct stat @{ 42186 unsigned int st_dev; /* device */ 42187 unsigned int st_ino; /* inode */ 42188 mode_t st_mode; /* protection */ 42189 unsigned int st_nlink; /* number of hard links */ 42190 unsigned int st_uid; /* user ID of owner */ 42191 unsigned int st_gid; /* group ID of owner */ 42192 unsigned int st_rdev; /* device type (if inode device) */ 42193 unsigned long st_size; /* total size, in bytes */ 42194 unsigned long st_blksize; /* blocksize for filesystem I/O */ 42195 unsigned long st_blocks; /* number of blocks allocated */ 42196 time_t st_atime; /* time of last access */ 42197 time_t st_mtime; /* time of last modification */ 42198 time_t st_ctime; /* time of last change */ 42199@}; 42200@end smallexample 42201 42202The integral datatypes conform to the definitions given in the 42203appropriate section (see @ref{Integral Datatypes}, for details) so this 42204structure is of size 64 bytes. 42205 42206The values of several fields have a restricted meaning and/or 42207range of values. 42208 42209@table @code 42210 42211@item st_dev 42212A value of 0 represents a file, 1 the console. 42213 42214@item st_ino 42215No valid meaning for the target. Transmitted unchanged. 42216 42217@item st_mode 42218Valid mode bits are described in @ref{Constants}. Any other 42219bits have currently no meaning for the target. 42220 42221@item st_uid 42222@itemx st_gid 42223@itemx st_rdev 42224No valid meaning for the target. Transmitted unchanged. 42225 42226@item st_atime 42227@itemx st_mtime 42228@itemx st_ctime 42229These values have a host and file system dependent 42230accuracy. Especially on Windows hosts, the file system may not 42231support exact timing values. 42232@end table 42233 42234The target gets a @code{struct stat} of the above representation and is 42235responsible for coercing it to the target representation before 42236continuing. 42237 42238Note that due to size differences between the host, target, and protocol 42239representations of @code{struct stat} members, these members could eventually 42240get truncated on the target. 42241 42242@node struct timeval 42243@unnumberedsubsubsec struct timeval 42244@cindex struct timeval, in file-i/o protocol 42245 42246The buffer of type @code{struct timeval} used by the File-I/O protocol 42247is defined as follows: 42248 42249@smallexample 42250struct timeval @{ 42251 time_t tv_sec; /* second */ 42252 long tv_usec; /* microsecond */ 42253@}; 42254@end smallexample 42255 42256The integral datatypes conform to the definitions given in the 42257appropriate section (see @ref{Integral Datatypes}, for details) so this 42258structure is of size 8 bytes. 42259 42260@node Constants 42261@subsection Constants 42262@cindex constants, in file-i/o protocol 42263 42264The following values are used for the constants inside of the 42265protocol. @value{GDBN} and target are responsible for translating these 42266values before and after the call as needed. 42267 42268@menu 42269* Open Flags:: 42270* mode_t Values:: 42271* Errno Values:: 42272* Lseek Flags:: 42273* Limits:: 42274@end menu 42275 42276@node Open Flags 42277@unnumberedsubsubsec Open Flags 42278@cindex open flags, in file-i/o protocol 42279 42280All values are given in hexadecimal representation. 42281 42282@smallexample 42283 O_RDONLY 0x0 42284 O_WRONLY 0x1 42285 O_RDWR 0x2 42286 O_APPEND 0x8 42287 O_CREAT 0x200 42288 O_TRUNC 0x400 42289 O_EXCL 0x800 42290@end smallexample 42291 42292@node mode_t Values 42293@unnumberedsubsubsec mode_t Values 42294@cindex mode_t values, in file-i/o protocol 42295 42296All values are given in octal representation. 42297 42298@smallexample 42299 S_IFREG 0100000 42300 S_IFDIR 040000 42301 S_IRUSR 0400 42302 S_IWUSR 0200 42303 S_IXUSR 0100 42304 S_IRGRP 040 42305 S_IWGRP 020 42306 S_IXGRP 010 42307 S_IROTH 04 42308 S_IWOTH 02 42309 S_IXOTH 01 42310@end smallexample 42311 42312@node Errno Values 42313@unnumberedsubsubsec Errno Values 42314@cindex errno values, in file-i/o protocol 42315 42316All values are given in decimal representation. 42317 42318@smallexample 42319 EPERM 1 42320 ENOENT 2 42321 EINTR 4 42322 EBADF 9 42323 EACCES 13 42324 EFAULT 14 42325 EBUSY 16 42326 EEXIST 17 42327 ENODEV 19 42328 ENOTDIR 20 42329 EISDIR 21 42330 EINVAL 22 42331 ENFILE 23 42332 EMFILE 24 42333 EFBIG 27 42334 ENOSPC 28 42335 ESPIPE 29 42336 EROFS 30 42337 ENAMETOOLONG 91 42338 EUNKNOWN 9999 42339@end smallexample 42340 42341 @code{EUNKNOWN} is used as a fallback error value if a host system returns 42342 any error value not in the list of supported error numbers. 42343 42344@node Lseek Flags 42345@unnumberedsubsubsec Lseek Flags 42346@cindex lseek flags, in file-i/o protocol 42347 42348@smallexample 42349 SEEK_SET 0 42350 SEEK_CUR 1 42351 SEEK_END 2 42352@end smallexample 42353 42354@node Limits 42355@unnumberedsubsubsec Limits 42356@cindex limits, in file-i/o protocol 42357 42358All values are given in decimal representation. 42359 42360@smallexample 42361 INT_MIN -2147483648 42362 INT_MAX 2147483647 42363 UINT_MAX 4294967295 42364 LONG_MIN -9223372036854775808 42365 LONG_MAX 9223372036854775807 42366 ULONG_MAX 18446744073709551615 42367@end smallexample 42368 42369@node File-I/O Examples 42370@subsection File-I/O Examples 42371@cindex file-i/o examples 42372 42373Example sequence of a write call, file descriptor 3, buffer is at target 42374address 0x1234, 6 bytes should be written: 42375 42376@smallexample 42377<- @code{Fwrite,3,1234,6} 42378@emph{request memory read from target} 42379-> @code{m1234,6} 42380<- XXXXXX 42381@emph{return "6 bytes written"} 42382-> @code{F6} 42383@end smallexample 42384 42385Example sequence of a read call, file descriptor 3, buffer is at target 42386address 0x1234, 6 bytes should be read: 42387 42388@smallexample 42389<- @code{Fread,3,1234,6} 42390@emph{request memory write to target} 42391-> @code{X1234,6:XXXXXX} 42392@emph{return "6 bytes read"} 42393-> @code{F6} 42394@end smallexample 42395 42396Example sequence of a read call, call fails on the host due to invalid 42397file descriptor (@code{EBADF}): 42398 42399@smallexample 42400<- @code{Fread,3,1234,6} 42401-> @code{F-1,9} 42402@end smallexample 42403 42404Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on 42405host is called: 42406 42407@smallexample 42408<- @code{Fread,3,1234,6} 42409-> @code{F-1,4,C} 42410<- @code{T02} 42411@end smallexample 42412 42413Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on 42414host is called: 42415 42416@smallexample 42417<- @code{Fread,3,1234,6} 42418-> @code{X1234,6:XXXXXX} 42419<- @code{T02} 42420@end smallexample 42421 42422@node Library List Format 42423@section Library List Format 42424@cindex library list format, remote protocol 42425 42426On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the 42427same process as your application to manage libraries. In this case, 42428@value{GDBN} can use the loader's symbol table and normal memory 42429operations to maintain a list of shared libraries. On other 42430platforms, the operating system manages loaded libraries. 42431@value{GDBN} can not retrieve the list of currently loaded libraries 42432through memory operations, so it uses the @samp{qXfer:libraries:read} 42433packet (@pxref{qXfer library list read}) instead. The remote stub 42434queries the target's operating system and reports which libraries 42435are loaded. 42436 42437The @samp{qXfer:libraries:read} packet returns an XML document which 42438lists loaded libraries and their offsets. Each library has an 42439associated name and one or more segment or section base addresses, 42440which report where the library was loaded in memory. 42441 42442For the common case of libraries that are fully linked binaries, the 42443library should have a list of segments. If the target supports 42444dynamic linking of a relocatable object file, its library XML element 42445should instead include a list of allocated sections. The segment or 42446section bases are start addresses, not relocation offsets; they do not 42447depend on the library's link-time base addresses. 42448 42449@value{GDBN} must be linked with the Expat library to support XML 42450library lists. @xref{Expat}. 42451 42452A simple memory map, with one loaded library relocated by a single 42453offset, looks like this: 42454 42455@smallexample 42456<library-list> 42457 <library name="/lib/libc.so.6"> 42458 <segment address="0x10000000"/> 42459 </library> 42460</library-list> 42461@end smallexample 42462 42463Another simple memory map, with one loaded library with three 42464allocated sections (.text, .data, .bss), looks like this: 42465 42466@smallexample 42467<library-list> 42468 <library name="sharedlib.o"> 42469 <section address="0x10000000"/> 42470 <section address="0x20000000"/> 42471 <section address="0x30000000"/> 42472 </library> 42473</library-list> 42474@end smallexample 42475 42476The format of a library list is described by this DTD: 42477 42478@smallexample 42479<!-- library-list: Root element with versioning --> 42480<!ELEMENT library-list (library)*> 42481<!ATTLIST library-list version CDATA #FIXED "1.0"> 42482<!ELEMENT library (segment*, section*)> 42483<!ATTLIST library name CDATA #REQUIRED> 42484<!ELEMENT segment EMPTY> 42485<!ATTLIST segment address CDATA #REQUIRED> 42486<!ELEMENT section EMPTY> 42487<!ATTLIST section address CDATA #REQUIRED> 42488@end smallexample 42489 42490In addition, segments and section descriptors cannot be mixed within a 42491single library element, and you must supply at least one segment or 42492section for each library. 42493 42494@node Library List Format for SVR4 Targets 42495@section Library List Format for SVR4 Targets 42496@cindex library list format, remote protocol 42497 42498On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader 42499(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of 42500shared libraries. Still a special library list provided by this packet is 42501more efficient for the @value{GDBN} remote protocol. 42502 42503The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists 42504loaded libraries and their SVR4 linker parameters. For each library on SVR4 42505target, the following parameters are reported: 42506 42507@itemize @minus 42508@item 42509@code{name}, the absolute file name from the @code{l_name} field of 42510@code{struct link_map}. 42511@item 42512@code{lm} with address of @code{struct link_map} used for TLS 42513(Thread Local Storage) access. 42514@item 42515@code{l_addr}, the displacement as read from the field @code{l_addr} of 42516@code{struct link_map}. For prelinked libraries this is not an absolute 42517memory address. It is a displacement of absolute memory address against 42518address the file was prelinked to during the library load. 42519@item 42520@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment 42521@end itemize 42522 42523Additionally the single @code{main-lm} attribute specifies address of 42524@code{struct link_map} used for the main executable. This parameter is used 42525for TLS access and its presence is optional. 42526 42527@value{GDBN} must be linked with the Expat library to support XML 42528SVR4 library lists. @xref{Expat}. 42529 42530A simple memory map, with two loaded libraries (which do not use prelink), 42531looks like this: 42532 42533@smallexample 42534<library-list-svr4 version="1.0" main-lm="0xe4f8f8"> 42535 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000" 42536 l_ld="0xe4eefc"/> 42537 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000" 42538 l_ld="0x152350"/> 42539</library-list-svr> 42540@end smallexample 42541 42542The format of an SVR4 library list is described by this DTD: 42543 42544@smallexample 42545<!-- library-list-svr4: Root element with versioning --> 42546<!ELEMENT library-list-svr4 (library)*> 42547<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0"> 42548<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED> 42549<!ELEMENT library EMPTY> 42550<!ATTLIST library name CDATA #REQUIRED> 42551<!ATTLIST library lm CDATA #REQUIRED> 42552<!ATTLIST library l_addr CDATA #REQUIRED> 42553<!ATTLIST library l_ld CDATA #REQUIRED> 42554@end smallexample 42555 42556@node Memory Map Format 42557@section Memory Map Format 42558@cindex memory map format 42559 42560To be able to write into flash memory, @value{GDBN} needs to obtain a 42561memory map from the target. This section describes the format of the 42562memory map. 42563 42564The memory map is obtained using the @samp{qXfer:memory-map:read} 42565(@pxref{qXfer memory map read}) packet and is an XML document that 42566lists memory regions. 42567 42568@value{GDBN} must be linked with the Expat library to support XML 42569memory maps. @xref{Expat}. 42570 42571The top-level structure of the document is shown below: 42572 42573@smallexample 42574<?xml version="1.0"?> 42575<!DOCTYPE memory-map 42576 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 42577 "http://sourceware.org/gdb/gdb-memory-map.dtd"> 42578<memory-map> 42579 region... 42580</memory-map> 42581@end smallexample 42582 42583Each region can be either: 42584 42585@itemize 42586 42587@item 42588A region of RAM starting at @var{addr} and extending for @var{length} 42589bytes from there: 42590 42591@smallexample 42592<memory type="ram" start="@var{addr}" length="@var{length}"/> 42593@end smallexample 42594 42595 42596@item 42597A region of read-only memory: 42598 42599@smallexample 42600<memory type="rom" start="@var{addr}" length="@var{length}"/> 42601@end smallexample 42602 42603 42604@item 42605A region of flash memory, with erasure blocks @var{blocksize} 42606bytes in length: 42607 42608@smallexample 42609<memory type="flash" start="@var{addr}" length="@var{length}"> 42610 <property name="blocksize">@var{blocksize}</property> 42611</memory> 42612@end smallexample 42613 42614@end itemize 42615 42616Regions must not overlap. @value{GDBN} assumes that areas of memory not covered 42617by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X} 42618packets to write to addresses in such ranges. 42619 42620The formal DTD for memory map format is given below: 42621 42622@smallexample 42623<!-- ................................................... --> 42624<!-- Memory Map XML DTD ................................ --> 42625<!-- File: memory-map.dtd .............................. --> 42626<!-- .................................... .............. --> 42627<!-- memory-map.dtd --> 42628<!-- memory-map: Root element with versioning --> 42629<!ELEMENT memory-map (memory | property)> 42630<!ATTLIST memory-map version CDATA #FIXED "1.0.0"> 42631<!ELEMENT memory (property)> 42632<!-- memory: Specifies a memory region, 42633 and its type, or device. --> 42634<!ATTLIST memory type CDATA #REQUIRED 42635 start CDATA #REQUIRED 42636 length CDATA #REQUIRED 42637 device CDATA #IMPLIED> 42638<!-- property: Generic attribute tag --> 42639<!ELEMENT property (#PCDATA | property)*> 42640<!ATTLIST property name CDATA #REQUIRED> 42641@end smallexample 42642 42643@node Thread List Format 42644@section Thread List Format 42645@cindex thread list format 42646 42647To efficiently update the list of threads and their attributes, 42648@value{GDBN} issues the @samp{qXfer:threads:read} packet 42649(@pxref{qXfer threads read}) and obtains the XML document with 42650the following structure: 42651 42652@smallexample 42653<?xml version="1.0"?> 42654<threads> 42655 <thread id="id" core="0"> 42656 ... description ... 42657 </thread> 42658</threads> 42659@end smallexample 42660 42661Each @samp{thread} element must have the @samp{id} attribute that 42662identifies the thread (@pxref{thread-id syntax}). The 42663@samp{core} attribute, if present, specifies which processor core 42664the thread was last executing on. The content of the of @samp{thread} 42665element is interpreted as human-readable auxilliary information. 42666 42667@node Traceframe Info Format 42668@section Traceframe Info Format 42669@cindex traceframe info format 42670 42671To be able to know which objects in the inferior can be examined when 42672inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of 42673memory ranges, registers and trace state variables that have been 42674collected in a traceframe. 42675 42676This list is obtained using the @samp{qXfer:traceframe-info:read} 42677(@pxref{qXfer traceframe info read}) packet and is an XML document. 42678 42679@value{GDBN} must be linked with the Expat library to support XML 42680traceframe info discovery. @xref{Expat}. 42681 42682The top-level structure of the document is shown below: 42683 42684@smallexample 42685<?xml version="1.0"?> 42686<!DOCTYPE traceframe-info 42687 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 42688 "http://sourceware.org/gdb/gdb-traceframe-info.dtd"> 42689<traceframe-info> 42690 block... 42691</traceframe-info> 42692@end smallexample 42693 42694Each traceframe block can be either: 42695 42696@itemize 42697 42698@item 42699A region of collected memory starting at @var{addr} and extending for 42700@var{length} bytes from there: 42701 42702@smallexample 42703<memory start="@var{addr}" length="@var{length}"/> 42704@end smallexample 42705 42706@item 42707A block indicating trace state variable numbered @var{number} has been 42708collected: 42709 42710@smallexample 42711<tvar id="@var{number}"/> 42712@end smallexample 42713 42714@end itemize 42715 42716The formal DTD for the traceframe info format is given below: 42717 42718@smallexample 42719<!ELEMENT traceframe-info (memory | tvar)* > 42720<!ATTLIST traceframe-info version CDATA #FIXED "1.0"> 42721 42722<!ELEMENT memory EMPTY> 42723<!ATTLIST memory start CDATA #REQUIRED 42724 length CDATA #REQUIRED> 42725<!ELEMENT tvar> 42726<!ATTLIST tvar id CDATA #REQUIRED> 42727@end smallexample 42728 42729@node Branch Trace Format 42730@section Branch Trace Format 42731@cindex branch trace format 42732 42733In order to display the branch trace of an inferior thread, 42734@value{GDBN} needs to obtain the list of branches. This list is 42735represented as list of sequential code blocks that are connected via 42736branches. The code in each block has been executed sequentially. 42737 42738This list is obtained using the @samp{qXfer:btrace:read} 42739(@pxref{qXfer btrace read}) packet and is an XML document. 42740 42741@value{GDBN} must be linked with the Expat library to support XML 42742traceframe info discovery. @xref{Expat}. 42743 42744The top-level structure of the document is shown below: 42745 42746@smallexample 42747<?xml version="1.0"?> 42748<!DOCTYPE btrace 42749 PUBLIC "+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN" 42750 "http://sourceware.org/gdb/gdb-btrace.dtd"> 42751<btrace> 42752 block... 42753</btrace> 42754@end smallexample 42755 42756@itemize 42757 42758@item 42759A block of sequentially executed instructions starting at @var{begin} 42760and ending at @var{end}: 42761 42762@smallexample 42763<block begin="@var{begin}" end="@var{end}"/> 42764@end smallexample 42765 42766@end itemize 42767 42768The formal DTD for the branch trace format is given below: 42769 42770@smallexample 42771<!ELEMENT btrace (block)* > 42772<!ATTLIST btrace version CDATA #FIXED "1.0"> 42773 42774<!ELEMENT block EMPTY> 42775<!ATTLIST block begin CDATA #REQUIRED 42776 end CDATA #REQUIRED> 42777@end smallexample 42778 42779@include agentexpr.texi 42780 42781@node Target Descriptions 42782@appendix Target Descriptions 42783@cindex target descriptions 42784 42785One of the challenges of using @value{GDBN} to debug embedded systems 42786is that there are so many minor variants of each processor 42787architecture in use. It is common practice for vendors to start with 42788a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example --- 42789and then make changes to adapt it to a particular market niche. Some 42790architectures have hundreds of variants, available from dozens of 42791vendors. This leads to a number of problems: 42792 42793@itemize @bullet 42794@item 42795With so many different customized processors, it is difficult for 42796the @value{GDBN} maintainers to keep up with the changes. 42797@item 42798Since individual variants may have short lifetimes or limited 42799audiences, it may not be worthwhile to carry information about every 42800variant in the @value{GDBN} source tree. 42801@item 42802When @value{GDBN} does support the architecture of the embedded system 42803at hand, the task of finding the correct architecture name to give the 42804@command{set architecture} command can be error-prone. 42805@end itemize 42806 42807To address these problems, the @value{GDBN} remote protocol allows a 42808target system to not only identify itself to @value{GDBN}, but to 42809actually describe its own features. This lets @value{GDBN} support 42810processor variants it has never seen before --- to the extent that the 42811descriptions are accurate, and that @value{GDBN} understands them. 42812 42813@value{GDBN} must be linked with the Expat library to support XML 42814target descriptions. @xref{Expat}. 42815 42816@menu 42817* Retrieving Descriptions:: How descriptions are fetched from a target. 42818* Target Description Format:: The contents of a target description. 42819* Predefined Target Types:: Standard types available for target 42820 descriptions. 42821* Standard Target Features:: Features @value{GDBN} knows about. 42822@end menu 42823 42824@node Retrieving Descriptions 42825@section Retrieving Descriptions 42826 42827Target descriptions can be read from the target automatically, or 42828specified by the user manually. The default behavior is to read the 42829description from the target. @value{GDBN} retrieves it via the remote 42830protocol using @samp{qXfer} requests (@pxref{General Query Packets, 42831qXfer}). The @var{annex} in the @samp{qXfer} packet will be 42832@samp{target.xml}. The contents of the @samp{target.xml} annex are an 42833XML document, of the form described in @ref{Target Description 42834Format}. 42835 42836Alternatively, you can specify a file to read for the target description. 42837If a file is set, the target will not be queried. The commands to 42838specify a file are: 42839 42840@table @code 42841@cindex set tdesc filename 42842@item set tdesc filename @var{path} 42843Read the target description from @var{path}. 42844 42845@cindex unset tdesc filename 42846@item unset tdesc filename 42847Do not read the XML target description from a file. @value{GDBN} 42848will use the description supplied by the current target. 42849 42850@cindex show tdesc filename 42851@item show tdesc filename 42852Show the filename to read for a target description, if any. 42853@end table 42854 42855 42856@node Target Description Format 42857@section Target Description Format 42858@cindex target descriptions, XML format 42859 42860A target description annex is an @uref{http://www.w3.org/XML/, XML} 42861document which complies with the Document Type Definition provided in 42862the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This 42863means you can use generally available tools like @command{xmllint} to 42864check that your feature descriptions are well-formed and valid. 42865However, to help people unfamiliar with XML write descriptions for 42866their targets, we also describe the grammar here. 42867 42868Target descriptions can identify the architecture of the remote target 42869and (for some architectures) provide information about custom register 42870sets. They can also identify the OS ABI of the remote target. 42871@value{GDBN} can use this information to autoconfigure for your 42872target, or to warn you if you connect to an unsupported target. 42873 42874Here is a simple target description: 42875 42876@smallexample 42877<target version="1.0"> 42878 <architecture>i386:x86-64</architecture> 42879</target> 42880@end smallexample 42881 42882@noindent 42883This minimal description only says that the target uses 42884the x86-64 architecture. 42885 42886A target description has the following overall form, with [ ] marking 42887optional elements and @dots{} marking repeatable elements. The elements 42888are explained further below. 42889 42890@smallexample 42891<?xml version="1.0"?> 42892<!DOCTYPE target SYSTEM "gdb-target.dtd"> 42893<target version="1.0"> 42894 @r{[}@var{architecture}@r{]} 42895 @r{[}@var{osabi}@r{]} 42896 @r{[}@var{compatible}@r{]} 42897 @r{[}@var{feature}@dots{}@r{]} 42898</target> 42899@end smallexample 42900 42901@noindent 42902The description is generally insensitive to whitespace and line 42903breaks, under the usual common-sense rules. The XML version 42904declaration and document type declaration can generally be omitted 42905(@value{GDBN} does not require them), but specifying them may be 42906useful for XML validation tools. The @samp{version} attribute for 42907@samp{<target>} may also be omitted, but we recommend 42908including it; if future versions of @value{GDBN} use an incompatible 42909revision of @file{gdb-target.dtd}, they will detect and report 42910the version mismatch. 42911 42912@subsection Inclusion 42913@cindex target descriptions, inclusion 42914@cindex XInclude 42915@ifnotinfo 42916@cindex <xi:include> 42917@end ifnotinfo 42918 42919It can sometimes be valuable to split a target description up into 42920several different annexes, either for organizational purposes, or to 42921share files between different possible target descriptions. You can 42922divide a description into multiple files by replacing any element of 42923the target description with an inclusion directive of the form: 42924 42925@smallexample 42926<xi:include href="@var{document}"/> 42927@end smallexample 42928 42929@noindent 42930When @value{GDBN} encounters an element of this form, it will retrieve 42931the named XML @var{document}, and replace the inclusion directive with 42932the contents of that document. If the current description was read 42933using @samp{qXfer}, then so will be the included document; 42934@var{document} will be interpreted as the name of an annex. If the 42935current description was read from a file, @value{GDBN} will look for 42936@var{document} as a file in the same directory where it found the 42937original description. 42938 42939@subsection Architecture 42940@cindex <architecture> 42941 42942An @samp{<architecture>} element has this form: 42943 42944@smallexample 42945 <architecture>@var{arch}</architecture> 42946@end smallexample 42947 42948@var{arch} is one of the architectures from the set accepted by 42949@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 42950 42951@subsection OS ABI 42952@cindex @code{<osabi>} 42953 42954This optional field was introduced in @value{GDBN} version 7.0. 42955Previous versions of @value{GDBN} ignore it. 42956 42957An @samp{<osabi>} element has this form: 42958 42959@smallexample 42960 <osabi>@var{abi-name}</osabi> 42961@end smallexample 42962 42963@var{abi-name} is an OS ABI name from the same selection accepted by 42964@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}). 42965 42966@subsection Compatible Architecture 42967@cindex @code{<compatible>} 42968 42969This optional field was introduced in @value{GDBN} version 7.0. 42970Previous versions of @value{GDBN} ignore it. 42971 42972A @samp{<compatible>} element has this form: 42973 42974@smallexample 42975 <compatible>@var{arch}</compatible> 42976@end smallexample 42977 42978@var{arch} is one of the architectures from the set accepted by 42979@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 42980 42981A @samp{<compatible>} element is used to specify that the target 42982is able to run binaries in some other than the main target architecture 42983given by the @samp{<architecture>} element. For example, on the 42984Cell Broadband Engine, the main architecture is @code{powerpc:common} 42985or @code{powerpc:common64}, but the system is able to run binaries 42986in the @code{spu} architecture as well. The way to describe this 42987capability with @samp{<compatible>} is as follows: 42988 42989@smallexample 42990 <architecture>powerpc:common</architecture> 42991 <compatible>spu</compatible> 42992@end smallexample 42993 42994@subsection Features 42995@cindex <feature> 42996 42997Each @samp{<feature>} describes some logical portion of the target 42998system. Features are currently used to describe available CPU 42999registers and the types of their contents. A @samp{<feature>} element 43000has this form: 43001 43002@smallexample 43003<feature name="@var{name}"> 43004 @r{[}@var{type}@dots{}@r{]} 43005 @var{reg}@dots{} 43006</feature> 43007@end smallexample 43008 43009@noindent 43010Each feature's name should be unique within the description. The name 43011of a feature does not matter unless @value{GDBN} has some special 43012knowledge of the contents of that feature; if it does, the feature 43013should have its standard name. @xref{Standard Target Features}. 43014 43015@subsection Types 43016 43017Any register's value is a collection of bits which @value{GDBN} must 43018interpret. The default interpretation is a two's complement integer, 43019but other types can be requested by name in the register description. 43020Some predefined types are provided by @value{GDBN} (@pxref{Predefined 43021Target Types}), and the description can define additional composite types. 43022 43023Each type element must have an @samp{id} attribute, which gives 43024a unique (within the containing @samp{<feature>}) name to the type. 43025Types must be defined before they are used. 43026 43027@cindex <vector> 43028Some targets offer vector registers, which can be treated as arrays 43029of scalar elements. These types are written as @samp{<vector>} elements, 43030specifying the array element type, @var{type}, and the number of elements, 43031@var{count}: 43032 43033@smallexample 43034<vector id="@var{id}" type="@var{type}" count="@var{count}"/> 43035@end smallexample 43036 43037@cindex <union> 43038If a register's value is usefully viewed in multiple ways, define it 43039with a union type containing the useful representations. The 43040@samp{<union>} element contains one or more @samp{<field>} elements, 43041each of which has a @var{name} and a @var{type}: 43042 43043@smallexample 43044<union id="@var{id}"> 43045 <field name="@var{name}" type="@var{type}"/> 43046 @dots{} 43047</union> 43048@end smallexample 43049 43050@cindex <struct> 43051If a register's value is composed from several separate values, define 43052it with a structure type. There are two forms of the @samp{<struct>} 43053element; a @samp{<struct>} element must either contain only bitfields 43054or contain no bitfields. If the structure contains only bitfields, 43055its total size in bytes must be specified, each bitfield must have an 43056explicit start and end, and bitfields are automatically assigned an 43057integer type. The field's @var{start} should be less than or 43058equal to its @var{end}, and zero represents the least significant bit. 43059 43060@smallexample 43061<struct id="@var{id}" size="@var{size}"> 43062 <field name="@var{name}" start="@var{start}" end="@var{end}"/> 43063 @dots{} 43064</struct> 43065@end smallexample 43066 43067If the structure contains no bitfields, then each field has an 43068explicit type, and no implicit padding is added. 43069 43070@smallexample 43071<struct id="@var{id}"> 43072 <field name="@var{name}" type="@var{type}"/> 43073 @dots{} 43074</struct> 43075@end smallexample 43076 43077@cindex <flags> 43078If a register's value is a series of single-bit flags, define it with 43079a flags type. The @samp{<flags>} element has an explicit @var{size} 43080and contains one or more @samp{<field>} elements. Each field has a 43081@var{name}, a @var{start}, and an @var{end}. Only single-bit flags 43082are supported. 43083 43084@smallexample 43085<flags id="@var{id}" size="@var{size}"> 43086 <field name="@var{name}" start="@var{start}" end="@var{end}"/> 43087 @dots{} 43088</flags> 43089@end smallexample 43090 43091@subsection Registers 43092@cindex <reg> 43093 43094Each register is represented as an element with this form: 43095 43096@smallexample 43097<reg name="@var{name}" 43098 bitsize="@var{size}" 43099 @r{[}regnum="@var{num}"@r{]} 43100 @r{[}save-restore="@var{save-restore}"@r{]} 43101 @r{[}type="@var{type}"@r{]} 43102 @r{[}group="@var{group}"@r{]}/> 43103@end smallexample 43104 43105@noindent 43106The components are as follows: 43107 43108@table @var 43109 43110@item name 43111The register's name; it must be unique within the target description. 43112 43113@item bitsize 43114The register's size, in bits. 43115 43116@item regnum 43117The register's number. If omitted, a register's number is one greater 43118than that of the previous register (either in the current feature or in 43119a preceding feature); the first register in the target description 43120defaults to zero. This register number is used to read or write 43121the register; e.g.@: it is used in the remote @code{p} and @code{P} 43122packets, and registers appear in the @code{g} and @code{G} packets 43123in order of increasing register number. 43124 43125@item save-restore 43126Whether the register should be preserved across inferior function 43127calls; this must be either @code{yes} or @code{no}. The default is 43128@code{yes}, which is appropriate for most registers except for 43129some system control registers; this is not related to the target's 43130ABI. 43131 43132@item type 43133The type of the register. @var{type} may be a predefined type, a type 43134defined in the current feature, or one of the special types @code{int} 43135and @code{float}. @code{int} is an integer type of the correct size 43136for @var{bitsize}, and @code{float} is a floating point type (in the 43137architecture's normal floating point format) of the correct size for 43138@var{bitsize}. The default is @code{int}. 43139 43140@item group 43141The register group to which this register belongs. @var{group} must 43142be either @code{general}, @code{float}, or @code{vector}. If no 43143@var{group} is specified, @value{GDBN} will not display the register 43144in @code{info registers}. 43145 43146@end table 43147 43148@node Predefined Target Types 43149@section Predefined Target Types 43150@cindex target descriptions, predefined types 43151 43152Type definitions in the self-description can build up composite types 43153from basic building blocks, but can not define fundamental types. Instead, 43154standard identifiers are provided by @value{GDBN} for the fundamental 43155types. The currently supported types are: 43156 43157@table @code 43158 43159@item int8 43160@itemx int16 43161@itemx int32 43162@itemx int64 43163@itemx int128 43164Signed integer types holding the specified number of bits. 43165 43166@item uint8 43167@itemx uint16 43168@itemx uint32 43169@itemx uint64 43170@itemx uint128 43171Unsigned integer types holding the specified number of bits. 43172 43173@item code_ptr 43174@itemx data_ptr 43175Pointers to unspecified code and data. The program counter and 43176any dedicated return address register may be marked as code 43177pointers; printing a code pointer converts it into a symbolic 43178address. The stack pointer and any dedicated address registers 43179may be marked as data pointers. 43180 43181@item ieee_single 43182Single precision IEEE floating point. 43183 43184@item ieee_double 43185Double precision IEEE floating point. 43186 43187@item arm_fpa_ext 43188The 12-byte extended precision format used by ARM FPA registers. 43189 43190@item i387_ext 43191The 10-byte extended precision format used by x87 registers. 43192 43193@item i386_eflags 4319432bit @sc{eflags} register used by x86. 43195 43196@item i386_mxcsr 4319732bit @sc{mxcsr} register used by x86. 43198 43199@end table 43200 43201@node Standard Target Features 43202@section Standard Target Features 43203@cindex target descriptions, standard features 43204 43205A target description must contain either no registers or all the 43206target's registers. If the description contains no registers, then 43207@value{GDBN} will assume a default register layout, selected based on 43208the architecture. If the description contains any registers, the 43209default layout will not be used; the standard registers must be 43210described in the target description, in such a way that @value{GDBN} 43211can recognize them. 43212 43213This is accomplished by giving specific names to feature elements 43214which contain standard registers. @value{GDBN} will look for features 43215with those names and verify that they contain the expected registers; 43216if any known feature is missing required registers, or if any required 43217feature is missing, @value{GDBN} will reject the target 43218description. You can add additional registers to any of the 43219standard features --- @value{GDBN} will display them just as if 43220they were added to an unrecognized feature. 43221 43222This section lists the known features and their expected contents. 43223Sample XML documents for these features are included in the 43224@value{GDBN} source tree, in the directory @file{gdb/features}. 43225 43226Names recognized by @value{GDBN} should include the name of the 43227company or organization which selected the name, and the overall 43228architecture to which the feature applies; so e.g.@: the feature 43229containing ARM core registers is named @samp{org.gnu.gdb.arm.core}. 43230 43231The names of registers are not case sensitive for the purpose 43232of recognizing standard features, but @value{GDBN} will only display 43233registers using the capitalization used in the description. 43234 43235@menu 43236* AArch64 Features:: 43237* ARM Features:: 43238* i386 Features:: 43239* MIPS Features:: 43240* M68K Features:: 43241* Nios II Features:: 43242* PowerPC Features:: 43243* S/390 and System z Features:: 43244* TIC6x Features:: 43245@end menu 43246 43247 43248@node AArch64 Features 43249@subsection AArch64 Features 43250@cindex target descriptions, AArch64 features 43251 43252The @samp{org.gnu.gdb.aarch64.core} feature is required for AArch64 43253targets. It should contain registers @samp{x0} through @samp{x30}, 43254@samp{sp}, @samp{pc}, and @samp{cpsr}. 43255 43256The @samp{org.gnu.gdb.aarch64.fpu} feature is optional. If present, 43257it should contain registers @samp{v0} through @samp{v31}, @samp{fpsr}, 43258and @samp{fpcr}. 43259 43260@node ARM Features 43261@subsection ARM Features 43262@cindex target descriptions, ARM features 43263 43264The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile 43265ARM targets. 43266It should contain registers @samp{r0} through @samp{r13}, @samp{sp}, 43267@samp{lr}, @samp{pc}, and @samp{cpsr}. 43268 43269For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core} 43270feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain 43271registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc}, 43272and @samp{xpsr}. 43273 43274The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it 43275should contain registers @samp{f0} through @samp{f7} and @samp{fps}. 43276 43277The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present, 43278it should contain at least registers @samp{wR0} through @samp{wR15} and 43279@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon}, 43280@samp{wCSSF}, and @samp{wCASF} registers are optional. 43281 43282The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it 43283should contain at least registers @samp{d0} through @samp{d15}. If 43284they are present, @samp{d16} through @samp{d31} should also be included. 43285@value{GDBN} will synthesize the single-precision registers from 43286halves of the double-precision registers. 43287 43288The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not 43289need to contain registers; it instructs @value{GDBN} to display the 43290VFP double-precision registers as vectors and to synthesize the 43291quad-precision registers from pairs of double-precision registers. 43292If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also 43293be present and include 32 double-precision registers. 43294 43295@node i386 Features 43296@subsection i386 Features 43297@cindex target descriptions, i386 features 43298 43299The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64 43300targets. It should describe the following registers: 43301 43302@itemize @minus 43303@item 43304@samp{eax} through @samp{edi} plus @samp{eip} for i386 43305@item 43306@samp{rax} through @samp{r15} plus @samp{rip} for amd64 43307@item 43308@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es}, 43309@samp{fs}, @samp{gs} 43310@item 43311@samp{st0} through @samp{st7} 43312@item 43313@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff}, 43314@samp{foseg}, @samp{fooff} and @samp{fop} 43315@end itemize 43316 43317The register sets may be different, depending on the target. 43318 43319The @samp{org.gnu.gdb.i386.sse} feature is optional. It should 43320describe registers: 43321 43322@itemize @minus 43323@item 43324@samp{xmm0} through @samp{xmm7} for i386 43325@item 43326@samp{xmm0} through @samp{xmm15} for amd64 43327@item 43328@samp{mxcsr} 43329@end itemize 43330 43331The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the 43332@samp{org.gnu.gdb.i386.sse} feature. It should 43333describe the upper 128 bits of @sc{ymm} registers: 43334 43335@itemize @minus 43336@item 43337@samp{ymm0h} through @samp{ymm7h} for i386 43338@item 43339@samp{ymm0h} through @samp{ymm15h} for amd64 43340@end itemize 43341 43342The @samp{org.gnu.gdb.i386.mpx} is an optional feature representing Intel(R) 43343Memory Protection Extension (MPX). It should describe the following registers: 43344 43345@itemize @minus 43346@item 43347@samp{bnd0raw} through @samp{bnd3raw} for i386 and amd64. 43348@item 43349@samp{bndcfgu} and @samp{bndstatus} for i386 and amd64. 43350@end itemize 43351 43352The @samp{org.gnu.gdb.i386.linux} feature is optional. It should 43353describe a single register, @samp{orig_eax}. 43354 43355@node MIPS Features 43356@subsection @acronym{MIPS} Features 43357@cindex target descriptions, @acronym{MIPS} features 43358 43359The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets. 43360It should contain registers @samp{r0} through @samp{r31}, @samp{lo}, 43361@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending 43362on the target. 43363 43364The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should 43365contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause} 43366registers. They may be 32-bit or 64-bit depending on the target. 43367 43368The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though 43369it may be optional in a future version of @value{GDBN}. It should 43370contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and 43371@samp{fir}. They may be 32-bit or 64-bit depending on the target. 43372 43373The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should 43374contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through 43375@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should 43376be 32-bit and the rest may be 32-bit or 64-bit depending on the target. 43377 43378The @samp{org.gnu.gdb.mips.linux} feature is optional. It should 43379contain a single register, @samp{restart}, which is used by the 43380Linux kernel to control restartable syscalls. 43381 43382@node M68K Features 43383@subsection M68K Features 43384@cindex target descriptions, M68K features 43385 43386@table @code 43387@item @samp{org.gnu.gdb.m68k.core} 43388@itemx @samp{org.gnu.gdb.coldfire.core} 43389@itemx @samp{org.gnu.gdb.fido.core} 43390One of those features must be always present. 43391The feature that is present determines which flavor of m68k is 43392used. The feature that is present should contain registers 43393@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp}, 43394@samp{sp}, @samp{ps} and @samp{pc}. 43395 43396@item @samp{org.gnu.gdb.coldfire.fp} 43397This feature is optional. If present, it should contain registers 43398@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and 43399@samp{fpiaddr}. 43400@end table 43401 43402@node Nios II Features 43403@subsection Nios II Features 43404@cindex target descriptions, Nios II features 43405 43406The @samp{org.gnu.gdb.nios2.cpu} feature is required for Nios II 43407targets. It should contain the 32 core registers (@samp{zero}, 43408@samp{at}, @samp{r2} through @samp{r23}, @samp{et} through @samp{ra}), 43409@samp{pc}, and the 16 control registers (@samp{status} through 43410@samp{mpuacc}). 43411 43412@node PowerPC Features 43413@subsection PowerPC Features 43414@cindex target descriptions, PowerPC features 43415 43416The @samp{org.gnu.gdb.power.core} feature is required for PowerPC 43417targets. It should contain registers @samp{r0} through @samp{r31}, 43418@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and 43419@samp{xer}. They may be 32-bit or 64-bit depending on the target. 43420 43421The @samp{org.gnu.gdb.power.fpu} feature is optional. It should 43422contain registers @samp{f0} through @samp{f31} and @samp{fpscr}. 43423 43424The @samp{org.gnu.gdb.power.altivec} feature is optional. It should 43425contain registers @samp{vr0} through @samp{vr31}, @samp{vscr}, 43426and @samp{vrsave}. 43427 43428The @samp{org.gnu.gdb.power.vsx} feature is optional. It should 43429contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN} 43430will combine these registers with the floating point registers 43431(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0} 43432through @samp{vr31}) to present the 128-bit wide registers @samp{vs0} 43433through @samp{vs63}, the set of vector registers for POWER7. 43434 43435The @samp{org.gnu.gdb.power.spe} feature is optional. It should 43436contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and 43437@samp{spefscr}. SPE targets should provide 32-bit registers in 43438@samp{org.gnu.gdb.power.core} and provide the upper halves in 43439@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine 43440these to present registers @samp{ev0} through @samp{ev31} to the 43441user. 43442 43443@node S/390 and System z Features 43444@subsection S/390 and System z Features 43445@cindex target descriptions, S/390 features 43446@cindex target descriptions, System z features 43447 43448The @samp{org.gnu.gdb.s390.core} feature is required for S/390 and 43449System z targets. It should contain the PSW and the 16 general 43450registers. In particular, System z targets should provide the 64-bit 43451registers @samp{pswm}, @samp{pswa}, and @samp{r0} through @samp{r15}. 43452S/390 targets should provide the 32-bit versions of these registers. 43453A System z target that runs in 31-bit addressing mode should provide 4345432-bit versions of @samp{pswm} and @samp{pswa}, as well as the general 43455register's upper halves @samp{r0h} through @samp{r15h}, and their 43456lower halves @samp{r0l} through @samp{r15l}. 43457 43458The @samp{org.gnu.gdb.s390.fpr} feature is required. It should 43459contain the 64-bit registers @samp{f0} through @samp{f15}, and 43460@samp{fpc}. 43461 43462The @samp{org.gnu.gdb.s390.acr} feature is required. It should 43463contain the 32-bit registers @samp{acr0} through @samp{acr15}. 43464 43465The @samp{org.gnu.gdb.s390.linux} feature is optional. It should 43466contain the register @samp{orig_r2}, which is 64-bit wide on System z 43467targets and 32-bit otherwise. In addition, the feature may contain 43468the @samp{last_break} register, whose width depends on the addressing 43469mode, as well as the @samp{system_call} register, which is always 4347032-bit wide. 43471 43472The @samp{org.gnu.gdb.s390.tdb} feature is optional. It should 43473contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct}, 43474@samp{atia}, and @samp{tr0} through @samp{tr15}. 43475 43476@node TIC6x Features 43477@subsection TMS320C6x Features 43478@cindex target descriptions, TIC6x features 43479@cindex target descriptions, TMS320C6x features 43480The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x 43481targets. It should contain registers @samp{A0} through @samp{A15}, 43482registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}. 43483 43484The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should 43485contain registers @samp{A16} through @samp{A31} and @samp{B16} 43486through @samp{B31}. 43487 43488The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should 43489contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}. 43490 43491@node Operating System Information 43492@appendix Operating System Information 43493@cindex operating system information 43494 43495@menu 43496* Process list:: 43497@end menu 43498 43499Users of @value{GDBN} often wish to obtain information about the state of 43500the operating system running on the target---for example the list of 43501processes, or the list of open files. This section describes the 43502mechanism that makes it possible. This mechanism is similar to the 43503target features mechanism (@pxref{Target Descriptions}), but focuses 43504on a different aspect of target. 43505 43506Operating system information is retrived from the target via the 43507remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata 43508read}). The object name in the request should be @samp{osdata}, and 43509the @var{annex} identifies the data to be fetched. 43510 43511@node Process list 43512@appendixsection Process list 43513@cindex operating system information, process list 43514 43515When requesting the process list, the @var{annex} field in the 43516@samp{qXfer} request should be @samp{processes}. The returned data is 43517an XML document. The formal syntax of this document is defined in 43518@file{gdb/features/osdata.dtd}. 43519 43520An example document is: 43521 43522@smallexample 43523<?xml version="1.0"?> 43524<!DOCTYPE target SYSTEM "osdata.dtd"> 43525<osdata type="processes"> 43526 <item> 43527 <column name="pid">1</column> 43528 <column name="user">root</column> 43529 <column name="command">/sbin/init</column> 43530 <column name="cores">1,2,3</column> 43531 </item> 43532</osdata> 43533@end smallexample 43534 43535Each item should include a column whose name is @samp{pid}. The value 43536of that column should identify the process on the target. The 43537@samp{user} and @samp{command} columns are optional, and will be 43538displayed by @value{GDBN}. The @samp{cores} column, if present, 43539should contain a comma-separated list of cores that this process 43540is running on. Target may provide additional columns, 43541which @value{GDBN} currently ignores. 43542 43543@node Trace File Format 43544@appendix Trace File Format 43545@cindex trace file format 43546 43547The trace file comes in three parts: a header, a textual description 43548section, and a trace frame section with binary data. 43549 43550The header has the form @code{\x7fTRACE0\n}. The first byte is 43551@code{0x7f} so as to indicate that the file contains binary data, 43552while the @code{0} is a version number that may have different values 43553in the future. 43554 43555The description section consists of multiple lines of @sc{ascii} text 43556separated by newline characters (@code{0xa}). The lines may include a 43557variety of optional descriptive or context-setting information, such 43558as tracepoint definitions or register set size. @value{GDBN} will 43559ignore any line that it does not recognize. An empty line marks the end 43560of this section. 43561 43562@c FIXME add some specific types of data 43563 43564The trace frame section consists of a number of consecutive frames. 43565Each frame begins with a two-byte tracepoint number, followed by a 43566four-byte size giving the amount of data in the frame. The data in 43567the frame consists of a number of blocks, each introduced by a 43568character indicating its type (at least register, memory, and trace 43569state variable). The data in this section is raw binary, not a 43570hexadecimal or other encoding; its endianness matches the target's 43571endianness. 43572 43573@c FIXME bi-arch may require endianness/arch info in description section 43574 43575@table @code 43576@item R @var{bytes} 43577Register block. The number and ordering of bytes matches that of a 43578@code{g} packet in the remote protocol. Note that these are the 43579actual bytes, in target order and @value{GDBN} register order, not a 43580hexadecimal encoding. 43581 43582@item M @var{address} @var{length} @var{bytes}... 43583Memory block. This is a contiguous block of memory, at the 8-byte 43584address @var{address}, with a 2-byte length @var{length}, followed by 43585@var{length} bytes. 43586 43587@item V @var{number} @var{value} 43588Trace state variable block. This records the 8-byte signed value 43589@var{value} of trace state variable numbered @var{number}. 43590 43591@end table 43592 43593Future enhancements of the trace file format may include additional types 43594of blocks. 43595 43596@node Index Section Format 43597@appendix @code{.gdb_index} section format 43598@cindex .gdb_index section format 43599@cindex index section format 43600 43601This section documents the index section that is created by @code{save 43602gdb-index} (@pxref{Index Files}). The index section is 43603DWARF-specific; some knowledge of DWARF is assumed in this 43604description. 43605 43606The mapped index file format is designed to be directly 43607@code{mmap}able on any architecture. In most cases, a datum is 43608represented using a little-endian 32-bit integer value, called an 43609@code{offset_type}. Big endian machines must byte-swap the values 43610before using them. Exceptions to this rule are noted. The data is 43611laid out such that alignment is always respected. 43612 43613A mapped index consists of several areas, laid out in order. 43614 43615@enumerate 43616@item 43617The file header. This is a sequence of values, of @code{offset_type} 43618unless otherwise noted: 43619 43620@enumerate 43621@item 43622The version number, currently 8. Versions 1, 2 and 3 are obsolete. 43623Version 4 uses a different hashing function from versions 5 and 6. 43624Version 6 includes symbols for inlined functions, whereas versions 4 43625and 5 do not. Version 7 adds attributes to the CU indices in the 43626symbol table. Version 8 specifies that symbols from DWARF type units 43627(@samp{DW_TAG_type_unit}) refer to the type unit's symbol table and not the 43628compilation unit (@samp{DW_TAG_comp_unit}) using the type. 43629 43630@value{GDBN} will only read version 4, 5, or 6 indices 43631by specifying @code{set use-deprecated-index-sections on}. 43632GDB has a workaround for potentially broken version 7 indices so it is 43633currently not flagged as deprecated. 43634 43635@item 43636The offset, from the start of the file, of the CU list. 43637 43638@item 43639The offset, from the start of the file, of the types CU list. Note 43640that this area can be empty, in which case this offset will be equal 43641to the next offset. 43642 43643@item 43644The offset, from the start of the file, of the address area. 43645 43646@item 43647The offset, from the start of the file, of the symbol table. 43648 43649@item 43650The offset, from the start of the file, of the constant pool. 43651@end enumerate 43652 43653@item 43654The CU list. This is a sequence of pairs of 64-bit little-endian 43655values, sorted by the CU offset. The first element in each pair is 43656the offset of a CU in the @code{.debug_info} section. The second 43657element in each pair is the length of that CU. References to a CU 43658elsewhere in the map are done using a CU index, which is just the 436590-based index into this table. Note that if there are type CUs, then 43660conceptually CUs and type CUs form a single list for the purposes of 43661CU indices. 43662 43663@item 43664The types CU list. This is a sequence of triplets of 64-bit 43665little-endian values. In a triplet, the first value is the CU offset, 43666the second value is the type offset in the CU, and the third value is 43667the type signature. The types CU list is not sorted. 43668 43669@item 43670The address area. The address area consists of a sequence of address 43671entries. Each address entry has three elements: 43672 43673@enumerate 43674@item 43675The low address. This is a 64-bit little-endian value. 43676 43677@item 43678The high address. This is a 64-bit little-endian value. Like 43679@code{DW_AT_high_pc}, the value is one byte beyond the end. 43680 43681@item 43682The CU index. This is an @code{offset_type} value. 43683@end enumerate 43684 43685@item 43686The symbol table. This is an open-addressed hash table. The size of 43687the hash table is always a power of 2. 43688 43689Each slot in the hash table consists of a pair of @code{offset_type} 43690values. The first value is the offset of the symbol's name in the 43691constant pool. The second value is the offset of the CU vector in the 43692constant pool. 43693 43694If both values are 0, then this slot in the hash table is empty. This 43695is ok because while 0 is a valid constant pool index, it cannot be a 43696valid index for both a string and a CU vector. 43697 43698The hash value for a table entry is computed by applying an 43699iterative hash function to the symbol's name. Starting with an 43700initial value of @code{r = 0}, each (unsigned) character @samp{c} in 43701the string is incorporated into the hash using the formula depending on the 43702index version: 43703 43704@table @asis 43705@item Version 4 43706The formula is @code{r = r * 67 + c - 113}. 43707 43708@item Versions 5 to 7 43709The formula is @code{r = r * 67 + tolower (c) - 113}. 43710@end table 43711 43712The terminating @samp{\0} is not incorporated into the hash. 43713 43714The step size used in the hash table is computed via 43715@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash 43716value, and @samp{size} is the size of the hash table. The step size 43717is used to find the next candidate slot when handling a hash 43718collision. 43719 43720The names of C@t{++} symbols in the hash table are canonicalized. We 43721don't currently have a simple description of the canonicalization 43722algorithm; if you intend to create new index sections, you must read 43723the code. 43724 43725@item 43726The constant pool. This is simply a bunch of bytes. It is organized 43727so that alignment is correct: CU vectors are stored first, followed by 43728strings. 43729 43730A CU vector in the constant pool is a sequence of @code{offset_type} 43731values. The first value is the number of CU indices in the vector. 43732Each subsequent value is the index and symbol attributes of a CU in 43733the CU list. This element in the hash table is used to indicate which 43734CUs define the symbol and how the symbol is used. 43735See below for the format of each CU index+attributes entry. 43736 43737A string in the constant pool is zero-terminated. 43738@end enumerate 43739 43740Attributes were added to CU index values in @code{.gdb_index} version 7. 43741If a symbol has multiple uses within a CU then there is one 43742CU index+attributes value for each use. 43743 43744The format of each CU index+attributes entry is as follows 43745(bit 0 = LSB): 43746 43747@table @asis 43748 43749@item Bits 0-23 43750This is the index of the CU in the CU list. 43751@item Bits 24-27 43752These bits are reserved for future purposes and must be zero. 43753@item Bits 28-30 43754The kind of the symbol in the CU. 43755 43756@table @asis 43757@item 0 43758This value is reserved and should not be used. 43759By reserving zero the full @code{offset_type} value is backwards compatible 43760with previous versions of the index. 43761@item 1 43762The symbol is a type. 43763@item 2 43764The symbol is a variable or an enum value. 43765@item 3 43766The symbol is a function. 43767@item 4 43768Any other kind of symbol. 43769@item 5,6,7 43770These values are reserved. 43771@end table 43772 43773@item Bit 31 43774This bit is zero if the value is global and one if it is static. 43775 43776The determination of whether a symbol is global or static is complicated. 43777The authorative reference is the file @file{dwarf2read.c} in 43778@value{GDBN} sources. 43779 43780@end table 43781 43782This pseudo-code describes the computation of a symbol's kind and 43783global/static attributes in the index. 43784 43785@smallexample 43786is_external = get_attribute (die, DW_AT_external); 43787language = get_attribute (cu_die, DW_AT_language); 43788switch (die->tag) 43789 @{ 43790 case DW_TAG_typedef: 43791 case DW_TAG_base_type: 43792 case DW_TAG_subrange_type: 43793 kind = TYPE; 43794 is_static = 1; 43795 break; 43796 case DW_TAG_enumerator: 43797 kind = VARIABLE; 43798 is_static = (language != CPLUS && language != JAVA); 43799 break; 43800 case DW_TAG_subprogram: 43801 kind = FUNCTION; 43802 is_static = ! (is_external || language == ADA); 43803 break; 43804 case DW_TAG_constant: 43805 kind = VARIABLE; 43806 is_static = ! is_external; 43807 break; 43808 case DW_TAG_variable: 43809 kind = VARIABLE; 43810 is_static = ! is_external; 43811 break; 43812 case DW_TAG_namespace: 43813 kind = TYPE; 43814 is_static = 0; 43815 break; 43816 case DW_TAG_class_type: 43817 case DW_TAG_interface_type: 43818 case DW_TAG_structure_type: 43819 case DW_TAG_union_type: 43820 case DW_TAG_enumeration_type: 43821 kind = TYPE; 43822 is_static = (language != CPLUS && language != JAVA); 43823 break; 43824 default: 43825 assert (0); 43826 @} 43827@end smallexample 43828 43829@node Man Pages 43830@appendix Manual pages 43831@cindex Man pages 43832 43833@menu 43834* gdb man:: The GNU Debugger man page 43835* gdbserver man:: Remote Server for the GNU Debugger man page 43836* gcore man:: Generate a core file of a running program 43837* gdbinit man:: gdbinit scripts 43838@end menu 43839 43840@node gdb man 43841@heading gdb man 43842 43843@c man title gdb The GNU Debugger 43844 43845@c man begin SYNOPSIS gdb 43846gdb [@option{-help}] [@option{-nh}] [@option{-nx}] [@option{-q}] 43847[@option{-batch}] [@option{-cd=}@var{dir}] [@option{-f}] 43848[@option{-b}@w{ }@var{bps}] 43849 [@option{-tty=}@var{dev}] [@option{-s} @var{symfile}] 43850[@option{-e}@w{ }@var{prog}] [@option{-se}@w{ }@var{prog}] 43851[@option{-c}@w{ }@var{core}] [@option{-p}@w{ }@var{procID}] 43852 [@option{-x}@w{ }@var{cmds}] [@option{-d}@w{ }@var{dir}] 43853[@var{prog}|@var{prog} @var{procID}|@var{prog} @var{core}] 43854@c man end 43855 43856@c man begin DESCRIPTION gdb 43857The purpose of a debugger such as @value{GDBN} is to allow you to see what is 43858going on ``inside'' another program while it executes -- or what another 43859program was doing at the moment it crashed. 43860 43861@value{GDBN} can do four main kinds of things (plus other things in support of 43862these) to help you catch bugs in the act: 43863 43864@itemize @bullet 43865@item 43866Start your program, specifying anything that might affect its behavior. 43867 43868@item 43869Make your program stop on specified conditions. 43870 43871@item 43872Examine what has happened, when your program has stopped. 43873 43874@item 43875Change things in your program, so you can experiment with correcting the 43876effects of one bug and go on to learn about another. 43877@end itemize 43878 43879You can use @value{GDBN} to debug programs written in C, C@t{++}, Fortran and 43880Modula-2. 43881 43882@value{GDBN} is invoked with the shell command @code{gdb}. Once started, it reads 43883commands from the terminal until you tell it to exit with the @value{GDBN} 43884command @code{quit}. You can get online help from @value{GDBN} itself 43885by using the command @code{help}. 43886 43887You can run @code{gdb} with no arguments or options; but the most 43888usual way to start @value{GDBN} is with one argument or two, specifying an 43889executable program as the argument: 43890 43891@smallexample 43892gdb program 43893@end smallexample 43894 43895You can also start with both an executable program and a core file specified: 43896 43897@smallexample 43898gdb program core 43899@end smallexample 43900 43901You can, instead, specify a process ID as a second argument, if you want 43902to debug a running process: 43903 43904@smallexample 43905gdb program 1234 43906gdb -p 1234 43907@end smallexample 43908 43909@noindent 43910would attach @value{GDBN} to process @code{1234} (unless you also have a file 43911named @file{1234}; @value{GDBN} does check for a core file first). 43912With option @option{-p} you can omit the @var{program} filename. 43913 43914Here are some of the most frequently needed @value{GDBN} commands: 43915 43916@c pod2man highlights the right hand side of the @item lines. 43917@table @env 43918@item break [@var{file}:]@var{functiop} 43919Set a breakpoint at @var{function} (in @var{file}). 43920 43921@item run [@var{arglist}] 43922Start your program (with @var{arglist}, if specified). 43923 43924@item bt 43925Backtrace: display the program stack. 43926 43927@item print @var{expr} 43928Display the value of an expression. 43929 43930@item c 43931Continue running your program (after stopping, e.g. at a breakpoint). 43932 43933@item next 43934Execute next program line (after stopping); step @emph{over} any 43935function calls in the line. 43936 43937@item edit [@var{file}:]@var{function} 43938look at the program line where it is presently stopped. 43939 43940@item list [@var{file}:]@var{function} 43941type the text of the program in the vicinity of where it is presently stopped. 43942 43943@item step 43944Execute next program line (after stopping); step @emph{into} any 43945function calls in the line. 43946 43947@item help [@var{name}] 43948Show information about @value{GDBN} command @var{name}, or general information 43949about using @value{GDBN}. 43950 43951@item quit 43952Exit from @value{GDBN}. 43953@end table 43954 43955@ifset man 43956For full details on @value{GDBN}, 43957see @cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 43958by Richard M. Stallman and Roland H. Pesch. The same text is available online 43959as the @code{gdb} entry in the @code{info} program. 43960@end ifset 43961@c man end 43962 43963@c man begin OPTIONS gdb 43964Any arguments other than options specify an executable 43965file and core file (or process ID); that is, the first argument 43966encountered with no 43967associated option flag is equivalent to a @option{-se} option, and the second, 43968if any, is equivalent to a @option{-c} option if it's the name of a file. 43969Many options have 43970both long and short forms; both are shown here. The long forms are also 43971recognized if you truncate them, so long as enough of the option is 43972present to be unambiguous. (If you prefer, you can flag option 43973arguments with @option{+} rather than @option{-}, though we illustrate the 43974more usual convention.) 43975 43976All the options and command line arguments you give are processed 43977in sequential order. The order makes a difference when the @option{-x} 43978option is used. 43979 43980@table @env 43981@item -help 43982@itemx -h 43983List all options, with brief explanations. 43984 43985@item -symbols=@var{file} 43986@itemx -s @var{file} 43987Read symbol table from file @var{file}. 43988 43989@item -write 43990Enable writing into executable and core files. 43991 43992@item -exec=@var{file} 43993@itemx -e @var{file} 43994Use file @var{file} as the executable file to execute when 43995appropriate, and for examining pure data in conjunction with a core 43996dump. 43997 43998@item -se=@var{file} 43999Read symbol table from file @var{file} and use it as the executable 44000file. 44001 44002@item -core=@var{file} 44003@itemx -c @var{file} 44004Use file @var{file} as a core dump to examine. 44005 44006@item -command=@var{file} 44007@itemx -x @var{file} 44008Execute @value{GDBN} commands from file @var{file}. 44009 44010@item -ex @var{command} 44011Execute given @value{GDBN} @var{command}. 44012 44013@item -directory=@var{directory} 44014@itemx -d @var{directory} 44015Add @var{directory} to the path to search for source files. 44016 44017@item -nh 44018Do not execute commands from @file{~/.gdbinit}. 44019 44020@item -nx 44021@itemx -n 44022Do not execute commands from any @file{.gdbinit} initialization files. 44023 44024@item -quiet 44025@itemx -q 44026``Quiet''. Do not print the introductory and copyright messages. These 44027messages are also suppressed in batch mode. 44028 44029@item -batch 44030Run in batch mode. Exit with status @code{0} after processing all the command 44031files specified with @option{-x} (and @file{.gdbinit}, if not inhibited). 44032Exit with nonzero status if an error occurs in executing the @value{GDBN} 44033commands in the command files. 44034 44035Batch mode may be useful for running @value{GDBN} as a filter, for example to 44036download and run a program on another computer; in order to make this 44037more useful, the message 44038 44039@smallexample 44040Program exited normally. 44041@end smallexample 44042 44043@noindent 44044(which is ordinarily issued whenever a program running under @value{GDBN} control 44045terminates) is not issued when running in batch mode. 44046 44047@item -cd=@var{directory} 44048Run @value{GDBN} using @var{directory} as its working directory, 44049instead of the current directory. 44050 44051@item -fullname 44052@itemx -f 44053Emacs sets this option when it runs @value{GDBN} as a subprocess. It tells 44054@value{GDBN} to output the full file name and line number in a standard, 44055recognizable fashion each time a stack frame is displayed (which 44056includes each time the program stops). This recognizable format looks 44057like two @samp{\032} characters, followed by the file name, line number 44058and character position separated by colons, and a newline. The 44059Emacs-to-@value{GDBN} interface program uses the two @samp{\032} 44060characters as a signal to display the source code for the frame. 44061 44062@item -b @var{bps} 44063Set the line speed (baud rate or bits per second) of any serial 44064interface used by @value{GDBN} for remote debugging. 44065 44066@item -tty=@var{device} 44067Run using @var{device} for your program's standard input and output. 44068@end table 44069@c man end 44070 44071@c man begin SEEALSO gdb 44072@ifset man 44073The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44074If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44075documentation are properly installed at your site, the command 44076 44077@smallexample 44078info gdb 44079@end smallexample 44080 44081@noindent 44082should give you access to the complete manual. 44083 44084@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44085Richard M. Stallman and Roland H. Pesch, July 1991. 44086@end ifset 44087@c man end 44088 44089@node gdbserver man 44090@heading gdbserver man 44091 44092@c man title gdbserver Remote Server for the GNU Debugger 44093@format 44094@c man begin SYNOPSIS gdbserver 44095gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 44096 44097gdbserver --attach @var{comm} @var{pid} 44098 44099gdbserver --multi @var{comm} 44100@c man end 44101@end format 44102 44103@c man begin DESCRIPTION gdbserver 44104@command{gdbserver} is a program that allows you to run @value{GDBN} on a different machine 44105than the one which is running the program being debugged. 44106 44107@ifclear man 44108@subheading Usage (server (target) side) 44109@end ifclear 44110@ifset man 44111Usage (server (target) side): 44112@end ifset 44113 44114First, you need to have a copy of the program you want to debug put onto 44115the target system. The program can be stripped to save space if needed, as 44116@command{gdbserver} doesn't care about symbols. All symbol handling is taken care of by 44117the @value{GDBN} running on the host system. 44118 44119To use the server, you log on to the target system, and run the @command{gdbserver} 44120program. You must tell it (a) how to communicate with @value{GDBN}, (b) the name of 44121your program, and (c) its arguments. The general syntax is: 44122 44123@smallexample 44124target> gdbserver @var{comm} @var{program} [@var{args} ...] 44125@end smallexample 44126 44127For example, using a serial port, you might say: 44128 44129@smallexample 44130@ifset man 44131@c @file would wrap it as F</dev/com1>. 44132target> gdbserver /dev/com1 emacs foo.txt 44133@end ifset 44134@ifclear man 44135target> gdbserver @file{/dev/com1} emacs foo.txt 44136@end ifclear 44137@end smallexample 44138 44139This tells @command{gdbserver} to debug emacs with an argument of foo.txt, and 44140to communicate with @value{GDBN} via @file{/dev/com1}. @command{gdbserver} now 44141waits patiently for the host @value{GDBN} to communicate with it. 44142 44143To use a TCP connection, you could say: 44144 44145@smallexample 44146target> gdbserver host:2345 emacs foo.txt 44147@end smallexample 44148 44149This says pretty much the same thing as the last example, except that we are 44150going to communicate with the @code{host} @value{GDBN} via TCP. The @code{host:2345} argument means 44151that we are expecting to see a TCP connection from @code{host} to local TCP port 441522345. (Currently, the @code{host} part is ignored.) You can choose any number you 44153want for the port number as long as it does not conflict with any existing TCP 44154ports on the target system. This same port number must be used in the host 44155@value{GDBN}s @code{target remote} command, which will be described shortly. Note that if 44156you chose a port number that conflicts with another service, @command{gdbserver} will 44157print an error message and exit. 44158 44159@command{gdbserver} can also attach to running programs. 44160This is accomplished via the @option{--attach} argument. The syntax is: 44161 44162@smallexample 44163target> gdbserver --attach @var{comm} @var{pid} 44164@end smallexample 44165 44166@var{pid} is the process ID of a currently running process. It isn't 44167necessary to point @command{gdbserver} at a binary for the running process. 44168 44169To start @code{gdbserver} without supplying an initial command to run 44170or process ID to attach, use the @option{--multi} command line option. 44171In such case you should connect using @kbd{target extended-remote} to start 44172the program you want to debug. 44173 44174@smallexample 44175target> gdbserver --multi @var{comm} 44176@end smallexample 44177 44178@ifclear man 44179@subheading Usage (host side) 44180@end ifclear 44181@ifset man 44182Usage (host side): 44183@end ifset 44184 44185You need an unstripped copy of the target program on your host system, since 44186@value{GDBN} needs to examine it's symbol tables and such. Start up @value{GDBN} as you normally 44187would, with the target program as the first argument. (You may need to use the 44188@option{--baud} option if the serial line is running at anything except 9600 baud.) 44189That is @code{gdb TARGET-PROG}, or @code{gdb --baud BAUD TARGET-PROG}. After that, the only 44190new command you need to know about is @code{target remote} 44191(or @code{target extended-remote}). Its argument is either 44192a device name (usually a serial device, like @file{/dev/ttyb}), or a @code{HOST:PORT} 44193descriptor. For example: 44194 44195@smallexample 44196@ifset man 44197@c @file would wrap it as F</dev/ttyb>. 44198(gdb) target remote /dev/ttyb 44199@end ifset 44200@ifclear man 44201(gdb) target remote @file{/dev/ttyb} 44202@end ifclear 44203@end smallexample 44204 44205@noindent 44206communicates with the server via serial line @file{/dev/ttyb}, and: 44207 44208@smallexample 44209(gdb) target remote the-target:2345 44210@end smallexample 44211 44212@noindent 44213communicates via a TCP connection to port 2345 on host `the-target', where 44214you previously started up @command{gdbserver} with the same port number. Note that for 44215TCP connections, you must start up @command{gdbserver} prior to using the `target remote' 44216command, otherwise you may get an error that looks something like 44217`Connection refused'. 44218 44219@command{gdbserver} can also debug multiple inferiors at once, 44220described in 44221@ifset man 44222the @value{GDBN} manual in node @code{Inferiors and Programs} 44223-- shell command @code{info -f gdb -n 'Inferiors and Programs'}. 44224@end ifset 44225@ifclear man 44226@ref{Inferiors and Programs}. 44227@end ifclear 44228In such case use the @code{extended-remote} @value{GDBN} command variant: 44229 44230@smallexample 44231(gdb) target extended-remote the-target:2345 44232@end smallexample 44233 44234The @command{gdbserver} option @option{--multi} may or may not be used in such 44235case. 44236@c man end 44237 44238@c man begin OPTIONS gdbserver 44239There are three different modes for invoking @command{gdbserver}: 44240 44241@itemize @bullet 44242 44243@item 44244Debug a specific program specified by its program name: 44245 44246@smallexample 44247gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 44248@end smallexample 44249 44250The @var{comm} parameter specifies how should the server communicate 44251with @value{GDBN}; it is either a device name (to use a serial line), 44252a TCP port number (@code{:1234}), or @code{-} or @code{stdio} to use 44253stdin/stdout of @code{gdbserver}. Specify the name of the program to 44254debug in @var{prog}. Any remaining arguments will be passed to the 44255program verbatim. When the program exits, @value{GDBN} will close the 44256connection, and @code{gdbserver} will exit. 44257 44258@item 44259Debug a specific program by specifying the process ID of a running 44260program: 44261 44262@smallexample 44263gdbserver --attach @var{comm} @var{pid} 44264@end smallexample 44265 44266The @var{comm} parameter is as described above. Supply the process ID 44267of a running program in @var{pid}; @value{GDBN} will do everything 44268else. Like with the previous mode, when the process @var{pid} exits, 44269@value{GDBN} will close the connection, and @code{gdbserver} will exit. 44270 44271@item 44272Multi-process mode -- debug more than one program/process: 44273 44274@smallexample 44275gdbserver --multi @var{comm} 44276@end smallexample 44277 44278In this mode, @value{GDBN} can instruct @command{gdbserver} which 44279command(s) to run. Unlike the other 2 modes, @value{GDBN} will not 44280close the connection when a process being debugged exits, so you can 44281debug several processes in the same session. 44282@end itemize 44283 44284In each of the modes you may specify these options: 44285 44286@table @env 44287 44288@item --help 44289List all options, with brief explanations. 44290 44291@item --version 44292This option causes @command{gdbserver} to print its version number and exit. 44293 44294@item --attach 44295@command{gdbserver} will attach to a running program. The syntax is: 44296 44297@smallexample 44298target> gdbserver --attach @var{comm} @var{pid} 44299@end smallexample 44300 44301@var{pid} is the process ID of a currently running process. It isn't 44302necessary to point @command{gdbserver} at a binary for the running process. 44303 44304@item --multi 44305To start @code{gdbserver} without supplying an initial command to run 44306or process ID to attach, use this command line option. 44307Then you can connect using @kbd{target extended-remote} and start 44308the program you want to debug. The syntax is: 44309 44310@smallexample 44311target> gdbserver --multi @var{comm} 44312@end smallexample 44313 44314@item --debug 44315Instruct @code{gdbserver} to display extra status information about the debugging 44316process. 44317This option is intended for @code{gdbserver} development and for bug reports to 44318the developers. 44319 44320@item --remote-debug 44321Instruct @code{gdbserver} to display remote protocol debug output. 44322This option is intended for @code{gdbserver} development and for bug reports to 44323the developers. 44324 44325@item --wrapper 44326Specify a wrapper to launch programs 44327for debugging. The option should be followed by the name of the 44328wrapper, then any command-line arguments to pass to the wrapper, then 44329@kbd{--} indicating the end of the wrapper arguments. 44330 44331@item --once 44332By default, @command{gdbserver} keeps the listening TCP port open, so that 44333additional connections are possible. However, if you start @code{gdbserver} 44334with the @option{--once} option, it will stop listening for any further 44335connection attempts after connecting to the first @value{GDBN} session. 44336 44337@c --disable-packet is not documented for users. 44338 44339@c --disable-randomization and --no-disable-randomization are superseded by 44340@c QDisableRandomization. 44341 44342@end table 44343@c man end 44344 44345@c man begin SEEALSO gdbserver 44346@ifset man 44347The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44348If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44349documentation are properly installed at your site, the command 44350 44351@smallexample 44352info gdb 44353@end smallexample 44354 44355should give you access to the complete manual. 44356 44357@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44358Richard M. Stallman and Roland H. Pesch, July 1991. 44359@end ifset 44360@c man end 44361 44362@node gcore man 44363@heading gcore 44364 44365@c man title gcore Generate a core file of a running program 44366 44367@format 44368@c man begin SYNOPSIS gcore 44369gcore [-o @var{filename}] @var{pid} 44370@c man end 44371@end format 44372 44373@c man begin DESCRIPTION gcore 44374Generate a core dump of a running program with process ID @var{pid}. 44375Produced file is equivalent to a kernel produced core file as if the process 44376crashed (and if @kbd{ulimit -c} were used to set up an appropriate core dump 44377limit). Unlike after a crash, after @command{gcore} the program remains 44378running without any change. 44379@c man end 44380 44381@c man begin OPTIONS gcore 44382@table @env 44383@item -o @var{filename} 44384The optional argument 44385@var{filename} specifies the file name where to put the core dump. 44386If not specified, the file name defaults to @file{core.@var{pid}}, 44387where @var{pid} is the running program process ID. 44388@end table 44389@c man end 44390 44391@c man begin SEEALSO gcore 44392@ifset man 44393The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44394If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44395documentation are properly installed at your site, the command 44396 44397@smallexample 44398info gdb 44399@end smallexample 44400 44401@noindent 44402should give you access to the complete manual. 44403 44404@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44405Richard M. Stallman and Roland H. Pesch, July 1991. 44406@end ifset 44407@c man end 44408 44409@node gdbinit man 44410@heading gdbinit 44411 44412@c man title gdbinit GDB initialization scripts 44413 44414@format 44415@c man begin SYNOPSIS gdbinit 44416@ifset SYSTEM_GDBINIT 44417@value{SYSTEM_GDBINIT} 44418@end ifset 44419 44420~/.gdbinit 44421 44422./.gdbinit 44423@c man end 44424@end format 44425 44426@c man begin DESCRIPTION gdbinit 44427These files contain @value{GDBN} commands to automatically execute during 44428@value{GDBN} startup. The lines of contents are canned sequences of commands, 44429described in 44430@ifset man 44431the @value{GDBN} manual in node @code{Sequences} 44432-- shell command @code{info -f gdb -n Sequences}. 44433@end ifset 44434@ifclear man 44435@ref{Sequences}. 44436@end ifclear 44437 44438Please read more in 44439@ifset man 44440the @value{GDBN} manual in node @code{Startup} 44441-- shell command @code{info -f gdb -n Startup}. 44442@end ifset 44443@ifclear man 44444@ref{Startup}. 44445@end ifclear 44446 44447@table @env 44448@ifset SYSTEM_GDBINIT 44449@item @value{SYSTEM_GDBINIT} 44450@end ifset 44451@ifclear SYSTEM_GDBINIT 44452@item (not enabled with @code{--with-system-gdbinit} during compilation) 44453@end ifclear 44454System-wide initialization file. It is executed unless user specified 44455@value{GDBN} option @code{-nx} or @code{-n}. 44456See more in 44457@ifset man 44458the @value{GDBN} manual in node @code{System-wide configuration} 44459-- shell command @code{info -f gdb -n 'System-wide configuration'}. 44460@end ifset 44461@ifclear man 44462@ref{System-wide configuration}. 44463@end ifclear 44464 44465@item ~/.gdbinit 44466User initialization file. It is executed unless user specified 44467@value{GDBN} options @code{-nx}, @code{-n} or @code{-nh}. 44468 44469@item ./.gdbinit 44470Initialization file for current directory. It may need to be enabled with 44471@value{GDBN} security command @code{set auto-load local-gdbinit}. 44472See more in 44473@ifset man 44474the @value{GDBN} manual in node @code{Init File in the Current Directory} 44475-- shell command @code{info -f gdb -n 'Init File in the Current Directory'}. 44476@end ifset 44477@ifclear man 44478@ref{Init File in the Current Directory}. 44479@end ifclear 44480@end table 44481@c man end 44482 44483@c man begin SEEALSO gdbinit 44484@ifset man 44485gdb(1), @code{info -f gdb -n Startup} 44486 44487The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44488If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44489documentation are properly installed at your site, the command 44490 44491@smallexample 44492info gdb 44493@end smallexample 44494 44495should give you access to the complete manual. 44496 44497@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44498Richard M. Stallman and Roland H. Pesch, July 1991. 44499@end ifset 44500@c man end 44501 44502@include gpl.texi 44503 44504@node GNU Free Documentation License 44505@appendix GNU Free Documentation License 44506@include fdl.texi 44507 44508@node Concept Index 44509@unnumbered Concept Index 44510 44511@printindex cp 44512 44513@node Command and Variable Index 44514@unnumbered Command, Variable, and Function Index 44515 44516@printindex fn 44517 44518@tex 44519% I think something like @@colophon should be in texinfo. In the 44520% meantime: 44521\long\def\colophon{\hbox to0pt{}\vfill 44522\centerline{The body of this manual is set in} 44523\centerline{\fontname\tenrm,} 44524\centerline{with headings in {\bf\fontname\tenbf}} 44525\centerline{and examples in {\tt\fontname\tentt}.} 44526\centerline{{\it\fontname\tenit\/},} 44527\centerline{{\bf\fontname\tenbf}, and} 44528\centerline{{\sl\fontname\tensl\/}} 44529\centerline{are used for emphasis.}\vfill} 44530\page\colophon 44531% Blame: doc@@cygnus.com, 1991. 44532@end tex 44533 44534@bye 44535