1\input texinfo @c -*-texinfo-*- 2@c Copyright (C) 1988-2015 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-2015 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-2015 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(or @code{-q}/@code{--quiet}): 890 891@smallexample 892@value{GDBP} --silent 893@end smallexample 894 895@noindent 896You can further control how @value{GDBN} starts up by using command-line 897options. @value{GDBN} itself can remind you of the options available. 898 899@noindent 900Type 901 902@smallexample 903@value{GDBP} -help 904@end smallexample 905 906@noindent 907to display all available options and briefly describe their use 908(@samp{@value{GDBP} -h} is a shorter equivalent). 909 910All options and command line arguments you give are processed 911in sequential order. The order makes a difference when the 912@samp{-x} option is used. 913 914 915@menu 916* File Options:: Choosing files 917* Mode Options:: Choosing modes 918* Startup:: What @value{GDBN} does during startup 919@end menu 920 921@node File Options 922@subsection Choosing Files 923 924When @value{GDBN} starts, it reads any arguments other than options as 925specifying an executable file and core file (or process ID). This is 926the same as if the arguments were specified by the @samp{-se} and 927@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the 928first argument that does not have an associated option flag as 929equivalent to the @samp{-se} option followed by that argument; and the 930second argument that does not have an associated option flag, if any, as 931equivalent to the @samp{-c}/@samp{-p} option followed by that argument.) 932If the second argument begins with a decimal digit, @value{GDBN} will 933first attempt to attach to it as a process, and if that fails, attempt 934to open it as a corefile. If you have a corefile whose name begins with 935a digit, you can prevent @value{GDBN} from treating it as a pid by 936prefixing it with @file{./}, e.g.@: @file{./12345}. 937 938If @value{GDBN} has not been configured to included core file support, 939such as for most embedded targets, then it will complain about a second 940argument and ignore it. 941 942Many options have both long and short forms; both are shown in the 943following list. @value{GDBN} also recognizes the long forms if you truncate 944them, so long as enough of the option is present to be unambiguous. 945(If you prefer, you can flag option arguments with @samp{--} rather 946than @samp{-}, though we illustrate the more usual convention.) 947 948@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This 949@c way, both those who look for -foo and --foo in the index, will find 950@c it. 951 952@table @code 953@item -symbols @var{file} 954@itemx -s @var{file} 955@cindex @code{--symbols} 956@cindex @code{-s} 957Read symbol table from file @var{file}. 958 959@item -exec @var{file} 960@itemx -e @var{file} 961@cindex @code{--exec} 962@cindex @code{-e} 963Use file @var{file} as the executable file to execute when appropriate, 964and for examining pure data in conjunction with a core dump. 965 966@item -se @var{file} 967@cindex @code{--se} 968Read symbol table from file @var{file} and use it as the executable 969file. 970 971@item -core @var{file} 972@itemx -c @var{file} 973@cindex @code{--core} 974@cindex @code{-c} 975Use file @var{file} as a core dump to examine. 976 977@item -pid @var{number} 978@itemx -p @var{number} 979@cindex @code{--pid} 980@cindex @code{-p} 981Connect to process ID @var{number}, as with the @code{attach} command. 982 983@item -command @var{file} 984@itemx -x @var{file} 985@cindex @code{--command} 986@cindex @code{-x} 987Execute commands from file @var{file}. The contents of this file is 988evaluated exactly as the @code{source} command would. 989@xref{Command Files,, Command files}. 990 991@item -eval-command @var{command} 992@itemx -ex @var{command} 993@cindex @code{--eval-command} 994@cindex @code{-ex} 995Execute a single @value{GDBN} command. 996 997This option may be used multiple times to call multiple commands. It may 998also be interleaved with @samp{-command} as required. 999 1000@smallexample 1001@value{GDBP} -ex 'target sim' -ex 'load' \ 1002 -x setbreakpoints -ex 'run' a.out 1003@end smallexample 1004 1005@item -init-command @var{file} 1006@itemx -ix @var{file} 1007@cindex @code{--init-command} 1008@cindex @code{-ix} 1009Execute commands from file @var{file} before loading the inferior (but 1010after loading gdbinit files). 1011@xref{Startup}. 1012 1013@item -init-eval-command @var{command} 1014@itemx -iex @var{command} 1015@cindex @code{--init-eval-command} 1016@cindex @code{-iex} 1017Execute a single @value{GDBN} command before loading the inferior (but 1018after loading gdbinit files). 1019@xref{Startup}. 1020 1021@item -directory @var{directory} 1022@itemx -d @var{directory} 1023@cindex @code{--directory} 1024@cindex @code{-d} 1025Add @var{directory} to the path to search for source and script files. 1026 1027@item -r 1028@itemx -readnow 1029@cindex @code{--readnow} 1030@cindex @code{-r} 1031Read each symbol file's entire symbol table immediately, rather than 1032the default, which is to read it incrementally as it is needed. 1033This makes startup slower, but makes future operations faster. 1034 1035@end table 1036 1037@node Mode Options 1038@subsection Choosing Modes 1039 1040You can run @value{GDBN} in various alternative modes---for example, in 1041batch mode or quiet mode. 1042 1043@table @code 1044@anchor{-nx} 1045@item -nx 1046@itemx -n 1047@cindex @code{--nx} 1048@cindex @code{-n} 1049Do not execute commands found in any initialization file. 1050There are three init files, loaded in the following order: 1051 1052@table @code 1053@item @file{system.gdbinit} 1054This is the system-wide init file. 1055Its location is specified with the @code{--with-system-gdbinit} 1056configure option (@pxref{System-wide configuration}). 1057It is loaded first when @value{GDBN} starts, before command line options 1058have been processed. 1059@item @file{~/.gdbinit} 1060This is the init file in your home directory. 1061It is loaded next, after @file{system.gdbinit}, and before 1062command options have been processed. 1063@item @file{./.gdbinit} 1064This is the init file in the current directory. 1065It is loaded last, after command line options other than @code{-x} and 1066@code{-ex} have been processed. Command line options @code{-x} and 1067@code{-ex} are processed last, after @file{./.gdbinit} has been loaded. 1068@end table 1069 1070For further documentation on startup processing, @xref{Startup}. 1071For documentation on how to write command files, 1072@xref{Command Files,,Command Files}. 1073 1074@anchor{-nh} 1075@item -nh 1076@cindex @code{--nh} 1077Do not execute commands found in @file{~/.gdbinit}, the init file 1078in your home directory. 1079@xref{Startup}. 1080 1081@item -quiet 1082@itemx -silent 1083@itemx -q 1084@cindex @code{--quiet} 1085@cindex @code{--silent} 1086@cindex @code{-q} 1087``Quiet''. Do not print the introductory and copyright messages. These 1088messages are also suppressed in batch mode. 1089 1090@item -batch 1091@cindex @code{--batch} 1092Run in batch mode. Exit with status @code{0} after processing all the 1093command files specified with @samp{-x} (and all commands from 1094initialization files, if not inhibited with @samp{-n}). Exit with 1095nonzero status if an error occurs in executing the @value{GDBN} commands 1096in the command files. Batch mode also disables pagination, sets unlimited 1097terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm 1098off} were in effect (@pxref{Messages/Warnings}). 1099 1100Batch mode may be useful for running @value{GDBN} as a filter, for 1101example to download and run a program on another computer; in order to 1102make this more useful, the message 1103 1104@smallexample 1105Program exited normally. 1106@end smallexample 1107 1108@noindent 1109(which is ordinarily issued whenever a program running under 1110@value{GDBN} control terminates) is not issued when running in batch 1111mode. 1112 1113@item -batch-silent 1114@cindex @code{--batch-silent} 1115Run in batch mode exactly like @samp{-batch}, but totally silently. All 1116@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is 1117unaffected). This is much quieter than @samp{-silent} and would be useless 1118for an interactive session. 1119 1120This is particularly useful when using targets that give @samp{Loading section} 1121messages, for example. 1122 1123Note that targets that give their output via @value{GDBN}, as opposed to 1124writing directly to @code{stdout}, will also be made silent. 1125 1126@item -return-child-result 1127@cindex @code{--return-child-result} 1128The return code from @value{GDBN} will be the return code from the child 1129process (the process being debugged), with the following exceptions: 1130 1131@itemize @bullet 1132@item 1133@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an 1134internal error. In this case the exit code is the same as it would have been 1135without @samp{-return-child-result}. 1136@item 1137The user quits with an explicit value. E.g., @samp{quit 1}. 1138@item 1139The child process never runs, or is not allowed to terminate, in which case 1140the exit code will be -1. 1141@end itemize 1142 1143This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent}, 1144when @value{GDBN} is being used as a remote program loader or simulator 1145interface. 1146 1147@item -nowindows 1148@itemx -nw 1149@cindex @code{--nowindows} 1150@cindex @code{-nw} 1151``No windows''. If @value{GDBN} comes with a graphical user interface 1152(GUI) built in, then this option tells @value{GDBN} to only use the command-line 1153interface. If no GUI is available, this option has no effect. 1154 1155@item -windows 1156@itemx -w 1157@cindex @code{--windows} 1158@cindex @code{-w} 1159If @value{GDBN} includes a GUI, then this option requires it to be 1160used if possible. 1161 1162@item -cd @var{directory} 1163@cindex @code{--cd} 1164Run @value{GDBN} using @var{directory} as its working directory, 1165instead of the current directory. 1166 1167@item -data-directory @var{directory} 1168@itemx -D @var{directory} 1169@cindex @code{--data-directory} 1170@cindex @code{-D} 1171Run @value{GDBN} using @var{directory} as its data directory. 1172The data directory is where @value{GDBN} searches for its 1173auxiliary files. @xref{Data Files}. 1174 1175@item -fullname 1176@itemx -f 1177@cindex @code{--fullname} 1178@cindex @code{-f} 1179@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a 1180subprocess. It tells @value{GDBN} to output the full file name and line 1181number in a standard, recognizable fashion each time a stack frame is 1182displayed (which includes each time your program stops). This 1183recognizable format looks like two @samp{\032} characters, followed by 1184the file name, line number and character position separated by colons, 1185and a newline. The Emacs-to-@value{GDBN} interface program uses the two 1186@samp{\032} characters as a signal to display the source code for the 1187frame. 1188 1189@item -annotate @var{level} 1190@cindex @code{--annotate} 1191This option sets the @dfn{annotation level} inside @value{GDBN}. Its 1192effect is identical to using @samp{set annotate @var{level}} 1193(@pxref{Annotations}). The annotation @var{level} controls how much 1194information @value{GDBN} prints together with its prompt, values of 1195expressions, source lines, and other types of output. Level 0 is the 1196normal, level 1 is for use when @value{GDBN} is run as a subprocess of 1197@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs 1198that control @value{GDBN}, and level 2 has been deprecated. 1199 1200The annotation mechanism has largely been superseded by @sc{gdb/mi} 1201(@pxref{GDB/MI}). 1202 1203@item --args 1204@cindex @code{--args} 1205Change interpretation of command line so that arguments following the 1206executable file are passed as command line arguments to the inferior. 1207This option stops option processing. 1208 1209@item -baud @var{bps} 1210@itemx -b @var{bps} 1211@cindex @code{--baud} 1212@cindex @code{-b} 1213Set the line speed (baud rate or bits per second) of any serial 1214interface used by @value{GDBN} for remote debugging. 1215 1216@item -l @var{timeout} 1217@cindex @code{-l} 1218Set the timeout (in seconds) of any communication used by @value{GDBN} 1219for remote debugging. 1220 1221@item -tty @var{device} 1222@itemx -t @var{device} 1223@cindex @code{--tty} 1224@cindex @code{-t} 1225Run using @var{device} for your program's standard input and output. 1226@c FIXME: kingdon thinks there is more to -tty. Investigate. 1227 1228@c resolve the situation of these eventually 1229@item -tui 1230@cindex @code{--tui} 1231Activate the @dfn{Text User Interface} when starting. The Text User 1232Interface manages several text windows on the terminal, showing 1233source, assembly, registers and @value{GDBN} command outputs 1234(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this 1235option if you run @value{GDBN} from Emacs (@pxref{Emacs, , 1236Using @value{GDBN} under @sc{gnu} Emacs}). 1237 1238@c @item -xdb 1239@c @cindex @code{--xdb} 1240@c Run in XDB compatibility mode, allowing the use of certain XDB commands. 1241@c For information, see the file @file{xdb_trans.html}, which is usually 1242@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX 1243@c systems. 1244 1245@item -interpreter @var{interp} 1246@cindex @code{--interpreter} 1247Use the interpreter @var{interp} for interface with the controlling 1248program or device. This option is meant to be set by programs which 1249communicate with @value{GDBN} using it as a back end. 1250@xref{Interpreters, , Command Interpreters}. 1251 1252@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes 1253@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, , 1254The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The 1255previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and 1256selected with @samp{--interpreter=mi1}, is deprecated. Earlier 1257@sc{gdb/mi} interfaces are no longer supported. 1258 1259@item -write 1260@cindex @code{--write} 1261Open the executable and core files for both reading and writing. This 1262is equivalent to the @samp{set write on} command inside @value{GDBN} 1263(@pxref{Patching}). 1264 1265@item -statistics 1266@cindex @code{--statistics} 1267This option causes @value{GDBN} to print statistics about time and 1268memory usage after it completes each command and returns to the prompt. 1269 1270@item -version 1271@cindex @code{--version} 1272This option causes @value{GDBN} to print its version number and 1273no-warranty blurb, and exit. 1274 1275@item -configuration 1276@cindex @code{--configuration} 1277This option causes @value{GDBN} to print details about its build-time 1278configuration parameters, and then exit. These details can be 1279important when reporting @value{GDBN} bugs (@pxref{GDB Bugs}). 1280 1281@end table 1282 1283@node Startup 1284@subsection What @value{GDBN} Does During Startup 1285@cindex @value{GDBN} startup 1286 1287Here's the description of what @value{GDBN} does during session startup: 1288 1289@enumerate 1290@item 1291Sets up the command interpreter as specified by the command line 1292(@pxref{Mode Options, interpreter}). 1293 1294@item 1295@cindex init file 1296Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was 1297used when building @value{GDBN}; @pxref{System-wide configuration, 1298 ,System-wide configuration and settings}) and executes all the commands in 1299that file. 1300 1301@anchor{Home Directory Init File} 1302@item 1303Reads the init file (if any) in your home directory@footnote{On 1304DOS/Windows systems, the home directory is the one pointed to by the 1305@code{HOME} environment variable.} and executes all the commands in 1306that file. 1307 1308@anchor{Option -init-eval-command} 1309@item 1310Executes commands and command files specified by the @samp{-iex} and 1311@samp{-ix} options in their specified order. Usually you should use the 1312@samp{-ex} and @samp{-x} options instead, but this way you can apply 1313settings before @value{GDBN} init files get executed and before inferior 1314gets loaded. 1315 1316@item 1317Processes command line options and operands. 1318 1319@anchor{Init File in the Current Directory during Startup} 1320@item 1321Reads and executes the commands from init file (if any) in the current 1322working directory as long as @samp{set auto-load local-gdbinit} is set to 1323@samp{on} (@pxref{Init File in the Current Directory}). 1324This is only done if the current directory is 1325different from your home directory. Thus, you can have more than one 1326init file, one generic in your home directory, and another, specific 1327to the program you are debugging, in the directory where you invoke 1328@value{GDBN}. 1329 1330@item 1331If the command line specified a program to debug, or a process to 1332attach to, or a core file, @value{GDBN} loads any auto-loaded 1333scripts provided for the program or for its loaded shared libraries. 1334@xref{Auto-loading}. 1335 1336If you wish to disable the auto-loading during startup, 1337you must do something like the following: 1338 1339@smallexample 1340$ gdb -iex "set auto-load python-scripts off" myprogram 1341@end smallexample 1342 1343Option @samp{-ex} does not work because the auto-loading is then turned 1344off too late. 1345 1346@item 1347Executes commands and command files specified by the @samp{-ex} and 1348@samp{-x} options in their specified order. @xref{Command Files}, for 1349more details about @value{GDBN} command files. 1350 1351@item 1352Reads the command history recorded in the @dfn{history file}. 1353@xref{Command History}, for more details about the command history and the 1354files where @value{GDBN} records it. 1355@end enumerate 1356 1357Init files use the same syntax as @dfn{command files} (@pxref{Command 1358Files}) and are processed by @value{GDBN} in the same way. The init 1359file in your home directory can set options (such as @samp{set 1360complaints}) that affect subsequent processing of command line options 1361and operands. Init files are not executed if you use the @samp{-nx} 1362option (@pxref{Mode Options, ,Choosing Modes}). 1363 1364To display the list of init files loaded by gdb at startup, you 1365can use @kbd{gdb --help}. 1366 1367@cindex init file name 1368@cindex @file{.gdbinit} 1369@cindex @file{gdb.ini} 1370The @value{GDBN} init files are normally called @file{.gdbinit}. 1371The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to 1372the limitations of file names imposed by DOS filesystems. The Windows 1373port of @value{GDBN} uses the standard name, but if it finds a 1374@file{gdb.ini} file in your home directory, it warns you about that 1375and suggests to rename the file to the standard name. 1376 1377 1378@node Quitting GDB 1379@section Quitting @value{GDBN} 1380@cindex exiting @value{GDBN} 1381@cindex leaving @value{GDBN} 1382 1383@table @code 1384@kindex quit @r{[}@var{expression}@r{]} 1385@kindex q @r{(@code{quit})} 1386@item quit @r{[}@var{expression}@r{]} 1387@itemx q 1388To exit @value{GDBN}, use the @code{quit} command (abbreviated 1389@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you 1390do not supply @var{expression}, @value{GDBN} will terminate normally; 1391otherwise it will terminate using the result of @var{expression} as the 1392error code. 1393@end table 1394 1395@cindex interrupt 1396An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather 1397terminates the action of any @value{GDBN} command that is in progress and 1398returns to @value{GDBN} command level. It is safe to type the interrupt 1399character at any time because @value{GDBN} does not allow it to take effect 1400until a time when it is safe. 1401 1402If you have been using @value{GDBN} to control an attached process or 1403device, you can release it with the @code{detach} command 1404(@pxref{Attach, ,Debugging an Already-running Process}). 1405 1406@node Shell Commands 1407@section Shell Commands 1408 1409If you need to execute occasional shell commands during your 1410debugging session, there is no need to leave or suspend @value{GDBN}; you can 1411just use the @code{shell} command. 1412 1413@table @code 1414@kindex shell 1415@kindex ! 1416@cindex shell escape 1417@item shell @var{command-string} 1418@itemx !@var{command-string} 1419Invoke a standard shell to execute @var{command-string}. 1420Note that no space is needed between @code{!} and @var{command-string}. 1421If it exists, the environment variable @code{SHELL} determines which 1422shell to run. Otherwise @value{GDBN} uses the default shell 1423(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.). 1424@end table 1425 1426The utility @code{make} is often needed in development environments. 1427You do not have to use the @code{shell} command for this purpose in 1428@value{GDBN}: 1429 1430@table @code 1431@kindex make 1432@cindex calling make 1433@item make @var{make-args} 1434Execute the @code{make} program with the specified 1435arguments. This is equivalent to @samp{shell make @var{make-args}}. 1436@end table 1437 1438@node Logging Output 1439@section Logging Output 1440@cindex logging @value{GDBN} output 1441@cindex save @value{GDBN} output to a file 1442 1443You may want to save the output of @value{GDBN} commands to a file. 1444There are several commands to control @value{GDBN}'s logging. 1445 1446@table @code 1447@kindex set logging 1448@item set logging on 1449Enable logging. 1450@item set logging off 1451Disable logging. 1452@cindex logging file name 1453@item set logging file @var{file} 1454Change the name of the current logfile. The default logfile is @file{gdb.txt}. 1455@item set logging overwrite [on|off] 1456By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if 1457you want @code{set logging on} to overwrite the logfile instead. 1458@item set logging redirect [on|off] 1459By default, @value{GDBN} output will go to both the terminal and the logfile. 1460Set @code{redirect} if you want output to go only to the log file. 1461@kindex show logging 1462@item show logging 1463Show the current values of the logging settings. 1464@end table 1465 1466@node Commands 1467@chapter @value{GDBN} Commands 1468 1469You can abbreviate a @value{GDBN} command to the first few letters of the command 1470name, if that abbreviation is unambiguous; and you can repeat certain 1471@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB} 1472key to get @value{GDBN} to fill out the rest of a word in a command (or to 1473show you the alternatives available, if there is more than one possibility). 1474 1475@menu 1476* Command Syntax:: How to give commands to @value{GDBN} 1477* Completion:: Command completion 1478* Help:: How to ask @value{GDBN} for help 1479@end menu 1480 1481@node Command Syntax 1482@section Command Syntax 1483 1484A @value{GDBN} command is a single line of input. There is no limit on 1485how long it can be. It starts with a command name, which is followed by 1486arguments whose meaning depends on the command name. For example, the 1487command @code{step} accepts an argument which is the number of times to 1488step, as in @samp{step 5}. You can also use the @code{step} command 1489with no arguments. Some commands do not allow any arguments. 1490 1491@cindex abbreviation 1492@value{GDBN} command names may always be truncated if that abbreviation is 1493unambiguous. Other possible command abbreviations are listed in the 1494documentation for individual commands. In some cases, even ambiguous 1495abbreviations are allowed; for example, @code{s} is specially defined as 1496equivalent to @code{step} even though there are other commands whose 1497names start with @code{s}. You can test abbreviations by using them as 1498arguments to the @code{help} command. 1499 1500@cindex repeating commands 1501@kindex RET @r{(repeat last command)} 1502A blank line as input to @value{GDBN} (typing just @key{RET}) means to 1503repeat the previous command. Certain commands (for example, @code{run}) 1504will not repeat this way; these are commands whose unintentional 1505repetition might cause trouble and which you are unlikely to want to 1506repeat. User-defined commands can disable this feature; see 1507@ref{Define, dont-repeat}. 1508 1509The @code{list} and @code{x} commands, when you repeat them with 1510@key{RET}, construct new arguments rather than repeating 1511exactly as typed. This permits easy scanning of source or memory. 1512 1513@value{GDBN} can also use @key{RET} in another way: to partition lengthy 1514output, in a way similar to the common utility @code{more} 1515(@pxref{Screen Size,,Screen Size}). Since it is easy to press one 1516@key{RET} too many in this situation, @value{GDBN} disables command 1517repetition after any command that generates this sort of display. 1518 1519@kindex # @r{(a comment)} 1520@cindex comment 1521Any text from a @kbd{#} to the end of the line is a comment; it does 1522nothing. This is useful mainly in command files (@pxref{Command 1523Files,,Command Files}). 1524 1525@cindex repeating command sequences 1526@kindex Ctrl-o @r{(operate-and-get-next)} 1527The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of 1528commands. This command accepts the current line, like @key{RET}, and 1529then fetches the next line relative to the current line from the history 1530for editing. 1531 1532@node Completion 1533@section Command Completion 1534 1535@cindex completion 1536@cindex word completion 1537@value{GDBN} can fill in the rest of a word in a command for you, if there is 1538only one possibility; it can also show you what the valid possibilities 1539are for the next word in a command, at any time. This works for @value{GDBN} 1540commands, @value{GDBN} subcommands, and the names of symbols in your program. 1541 1542Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest 1543of a word. If there is only one possibility, @value{GDBN} fills in the 1544word, and waits for you to finish the command (or press @key{RET} to 1545enter it). For example, if you type 1546 1547@c FIXME "@key" does not distinguish its argument sufficiently to permit 1548@c complete accuracy in these examples; space introduced for clarity. 1549@c If texinfo enhancements make it unnecessary, it would be nice to 1550@c replace " @key" by "@key" in the following... 1551@smallexample 1552(@value{GDBP}) info bre @key{TAB} 1553@end smallexample 1554 1555@noindent 1556@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is 1557the only @code{info} subcommand beginning with @samp{bre}: 1558 1559@smallexample 1560(@value{GDBP}) info breakpoints 1561@end smallexample 1562 1563@noindent 1564You can either press @key{RET} at this point, to run the @code{info 1565breakpoints} command, or backspace and enter something else, if 1566@samp{breakpoints} does not look like the command you expected. (If you 1567were sure you wanted @code{info breakpoints} in the first place, you 1568might as well just type @key{RET} immediately after @samp{info bre}, 1569to exploit command abbreviations rather than command completion). 1570 1571If there is more than one possibility for the next word when you press 1572@key{TAB}, @value{GDBN} sounds a bell. You can either supply more 1573characters and try again, or just press @key{TAB} a second time; 1574@value{GDBN} displays all the possible completions for that word. For 1575example, you might want to set a breakpoint on a subroutine whose name 1576begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN} 1577just sounds the bell. Typing @key{TAB} again displays all the 1578function names in your program that begin with those characters, for 1579example: 1580 1581@smallexample 1582(@value{GDBP}) b make_ @key{TAB} 1583@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see: 1584make_a_section_from_file make_environ 1585make_abs_section make_function_type 1586make_blockvector make_pointer_type 1587make_cleanup make_reference_type 1588make_command make_symbol_completion_list 1589(@value{GDBP}) b make_ 1590@end smallexample 1591 1592@noindent 1593After displaying the available possibilities, @value{GDBN} copies your 1594partial input (@samp{b make_} in the example) so you can finish the 1595command. 1596 1597If you just want to see the list of alternatives in the first place, you 1598can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?} 1599means @kbd{@key{META} ?}. You can type this either by holding down a 1600key designated as the @key{META} shift on your keyboard (if there is 1601one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}. 1602 1603@cindex quotes in commands 1604@cindex completion of quoted strings 1605Sometimes the string you need, while logically a ``word'', may contain 1606parentheses or other characters that @value{GDBN} normally excludes from 1607its notion of a word. To permit word completion to work in this 1608situation, you may enclose words in @code{'} (single quote marks) in 1609@value{GDBN} commands. 1610 1611The most likely situation where you might need this is in typing the 1612name of a C@t{++} function. This is because C@t{++} allows function 1613overloading (multiple definitions of the same function, distinguished 1614by argument type). For example, when you want to set a breakpoint you 1615may need to distinguish whether you mean the version of @code{name} 1616that takes an @code{int} parameter, @code{name(int)}, or the version 1617that takes a @code{float} parameter, @code{name(float)}. To use the 1618word-completion facilities in this situation, type a single quote 1619@code{'} at the beginning of the function name. This alerts 1620@value{GDBN} that it may need to consider more information than usual 1621when you press @key{TAB} or @kbd{M-?} to request word completion: 1622 1623@smallexample 1624(@value{GDBP}) b 'bubble( @kbd{M-?} 1625bubble(double,double) bubble(int,int) 1626(@value{GDBP}) b 'bubble( 1627@end smallexample 1628 1629In some cases, @value{GDBN} can tell that completing a name requires using 1630quotes. When this happens, @value{GDBN} inserts the quote for you (while 1631completing as much as it can) if you do not type the quote in the first 1632place: 1633 1634@smallexample 1635(@value{GDBP}) b bub @key{TAB} 1636@exdent @value{GDBN} alters your input line to the following, and rings a bell: 1637(@value{GDBP}) b 'bubble( 1638@end smallexample 1639 1640@noindent 1641In general, @value{GDBN} can tell that a quote is needed (and inserts it) if 1642you have not yet started typing the argument list when you ask for 1643completion on an overloaded symbol. 1644 1645For more information about overloaded functions, see @ref{C Plus Plus 1646Expressions, ,C@t{++} Expressions}. You can use the command @code{set 1647overload-resolution off} to disable overload resolution; 1648see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}. 1649 1650@cindex completion of structure field names 1651@cindex structure field name completion 1652@cindex completion of union field names 1653@cindex union field name completion 1654When completing in an expression which looks up a field in a 1655structure, @value{GDBN} also tries@footnote{The completer can be 1656confused by certain kinds of invalid expressions. Also, it only 1657examines the static type of the expression, not the dynamic type.} to 1658limit completions to the field names available in the type of the 1659left-hand-side: 1660 1661@smallexample 1662(@value{GDBP}) p gdb_stdout.@kbd{M-?} 1663magic to_fputs to_rewind 1664to_data to_isatty to_write 1665to_delete to_put to_write_async_safe 1666to_flush to_read 1667@end smallexample 1668 1669@noindent 1670This is because the @code{gdb_stdout} is a variable of the type 1671@code{struct ui_file} that is defined in @value{GDBN} sources as 1672follows: 1673 1674@smallexample 1675struct ui_file 1676@{ 1677 int *magic; 1678 ui_file_flush_ftype *to_flush; 1679 ui_file_write_ftype *to_write; 1680 ui_file_write_async_safe_ftype *to_write_async_safe; 1681 ui_file_fputs_ftype *to_fputs; 1682 ui_file_read_ftype *to_read; 1683 ui_file_delete_ftype *to_delete; 1684 ui_file_isatty_ftype *to_isatty; 1685 ui_file_rewind_ftype *to_rewind; 1686 ui_file_put_ftype *to_put; 1687 void *to_data; 1688@} 1689@end smallexample 1690 1691 1692@node Help 1693@section Getting Help 1694@cindex online documentation 1695@kindex help 1696 1697You can always ask @value{GDBN} itself for information on its commands, 1698using the command @code{help}. 1699 1700@table @code 1701@kindex h @r{(@code{help})} 1702@item help 1703@itemx h 1704You can use @code{help} (abbreviated @code{h}) with no arguments to 1705display a short list of named classes of commands: 1706 1707@smallexample 1708(@value{GDBP}) help 1709List of classes of commands: 1710 1711aliases -- Aliases of other commands 1712breakpoints -- Making program stop at certain points 1713data -- Examining data 1714files -- Specifying and examining files 1715internals -- Maintenance commands 1716obscure -- Obscure features 1717running -- Running the program 1718stack -- Examining the stack 1719status -- Status inquiries 1720support -- Support facilities 1721tracepoints -- Tracing of program execution without 1722 stopping the program 1723user-defined -- User-defined commands 1724 1725Type "help" followed by a class name for a list of 1726commands in that class. 1727Type "help" followed by command name for full 1728documentation. 1729Command name abbreviations are allowed if unambiguous. 1730(@value{GDBP}) 1731@end smallexample 1732@c the above line break eliminates huge line overfull... 1733 1734@item help @var{class} 1735Using one of the general help classes as an argument, you can get a 1736list of the individual commands in that class. For example, here is the 1737help display for the class @code{status}: 1738 1739@smallexample 1740(@value{GDBP}) help status 1741Status inquiries. 1742 1743List of commands: 1744 1745@c Line break in "show" line falsifies real output, but needed 1746@c to fit in smallbook page size. 1747info -- Generic command for showing things 1748 about the program being debugged 1749show -- Generic command for showing things 1750 about the debugger 1751 1752Type "help" followed by command name for full 1753documentation. 1754Command name abbreviations are allowed if unambiguous. 1755(@value{GDBP}) 1756@end smallexample 1757 1758@item help @var{command} 1759With a command name as @code{help} argument, @value{GDBN} displays a 1760short paragraph on how to use that command. 1761 1762@kindex apropos 1763@item apropos @var{args} 1764The @code{apropos} command searches through all of the @value{GDBN} 1765commands, and their documentation, for the regular expression specified in 1766@var{args}. It prints out all matches found. For example: 1767 1768@smallexample 1769apropos alias 1770@end smallexample 1771 1772@noindent 1773results in: 1774 1775@smallexample 1776@c @group 1777alias -- Define a new command that is an alias of an existing command 1778aliases -- Aliases of other commands 1779d -- Delete some breakpoints or auto-display expressions 1780del -- Delete some breakpoints or auto-display expressions 1781delete -- Delete some breakpoints or auto-display expressions 1782@c @end group 1783@end smallexample 1784 1785@kindex complete 1786@item complete @var{args} 1787The @code{complete @var{args}} command lists all the possible completions 1788for the beginning of a command. Use @var{args} to specify the beginning of the 1789command you want completed. For example: 1790 1791@smallexample 1792complete i 1793@end smallexample 1794 1795@noindent results in: 1796 1797@smallexample 1798@group 1799if 1800ignore 1801info 1802inspect 1803@end group 1804@end smallexample 1805 1806@noindent This is intended for use by @sc{gnu} Emacs. 1807@end table 1808 1809In addition to @code{help}, you can use the @value{GDBN} commands @code{info} 1810and @code{show} to inquire about the state of your program, or the state 1811of @value{GDBN} itself. Each command supports many topics of inquiry; this 1812manual introduces each of them in the appropriate context. The listings 1813under @code{info} and under @code{show} in the Command, Variable, and 1814Function Index point to all the sub-commands. @xref{Command and Variable 1815Index}. 1816 1817@c @group 1818@table @code 1819@kindex info 1820@kindex i @r{(@code{info})} 1821@item info 1822This command (abbreviated @code{i}) is for describing the state of your 1823program. For example, you can show the arguments passed to a function 1824with @code{info args}, list the registers currently in use with @code{info 1825registers}, or list the breakpoints you have set with @code{info breakpoints}. 1826You can get a complete list of the @code{info} sub-commands with 1827@w{@code{help info}}. 1828 1829@kindex set 1830@item set 1831You can assign the result of an expression to an environment variable with 1832@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with 1833@code{set prompt $}. 1834 1835@kindex show 1836@item show 1837In contrast to @code{info}, @code{show} is for describing the state of 1838@value{GDBN} itself. 1839You can change most of the things you can @code{show}, by using the 1840related command @code{set}; for example, you can control what number 1841system is used for displays with @code{set radix}, or simply inquire 1842which is currently in use with @code{show radix}. 1843 1844@kindex info set 1845To display all the settable parameters and their current 1846values, you can use @code{show} with no arguments; you may also use 1847@code{info set}. Both commands produce the same display. 1848@c FIXME: "info set" violates the rule that "info" is for state of 1849@c FIXME...program. Ck w/ GNU: "info set" to be called something else, 1850@c FIXME...or change desc of rule---eg "state of prog and debugging session"? 1851@end table 1852@c @end group 1853 1854Here are several miscellaneous @code{show} subcommands, all of which are 1855exceptional in lacking corresponding @code{set} commands: 1856 1857@table @code 1858@kindex show version 1859@cindex @value{GDBN} version number 1860@item show version 1861Show what version of @value{GDBN} is running. You should include this 1862information in @value{GDBN} bug-reports. If multiple versions of 1863@value{GDBN} are in use at your site, you may need to determine which 1864version of @value{GDBN} you are running; as @value{GDBN} evolves, new 1865commands are introduced, and old ones may wither away. Also, many 1866system vendors ship variant versions of @value{GDBN}, and there are 1867variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well. 1868The version number is the same as the one announced when you start 1869@value{GDBN}. 1870 1871@kindex show copying 1872@kindex info copying 1873@cindex display @value{GDBN} copyright 1874@item show copying 1875@itemx info copying 1876Display information about permission for copying @value{GDBN}. 1877 1878@kindex show warranty 1879@kindex info warranty 1880@item show warranty 1881@itemx info warranty 1882Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty, 1883if your version of @value{GDBN} comes with one. 1884 1885@kindex show configuration 1886@item show configuration 1887Display detailed information about the way @value{GDBN} was configured 1888when it was built. This displays the optional arguments passed to the 1889@file{configure} script and also configuration parameters detected 1890automatically by @command{configure}. When reporting a @value{GDBN} 1891bug (@pxref{GDB Bugs}), it is important to include this information in 1892your report. 1893 1894@end table 1895 1896@node Running 1897@chapter Running Programs Under @value{GDBN} 1898 1899When you run a program under @value{GDBN}, you must first generate 1900debugging information when you compile it. 1901 1902You may start @value{GDBN} with its arguments, if any, in an environment 1903of your choice. If you are doing native debugging, you may redirect 1904your program's input and output, debug an already running process, or 1905kill a child process. 1906 1907@menu 1908* Compilation:: Compiling for debugging 1909* Starting:: Starting your program 1910* Arguments:: Your program's arguments 1911* Environment:: Your program's environment 1912 1913* Working Directory:: Your program's working directory 1914* Input/Output:: Your program's input and output 1915* Attach:: Debugging an already-running process 1916* Kill Process:: Killing the child process 1917 1918* Inferiors and Programs:: Debugging multiple inferiors and programs 1919* Threads:: Debugging programs with multiple threads 1920* Forks:: Debugging forks 1921* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later 1922@end menu 1923 1924@node Compilation 1925@section Compiling for Debugging 1926 1927In order to debug a program effectively, you need to generate 1928debugging information when you compile it. This debugging information 1929is stored in the object file; it describes the data type of each 1930variable or function and the correspondence between source line numbers 1931and addresses in the executable code. 1932 1933To request debugging information, specify the @samp{-g} option when you run 1934the compiler. 1935 1936Programs that are to be shipped to your customers are compiled with 1937optimizations, using the @samp{-O} compiler option. However, some 1938compilers are unable to handle the @samp{-g} and @samp{-O} options 1939together. Using those compilers, you cannot generate optimized 1940executables containing debugging information. 1941 1942@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or 1943without @samp{-O}, making it possible to debug optimized code. We 1944recommend that you @emph{always} use @samp{-g} whenever you compile a 1945program. You may think your program is correct, but there is no sense 1946in pushing your luck. For more information, see @ref{Optimized Code}. 1947 1948Older versions of the @sc{gnu} C compiler permitted a variant option 1949@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this 1950format; if your @sc{gnu} C compiler has this option, do not use it. 1951 1952@value{GDBN} knows about preprocessor macros and can show you their 1953expansion (@pxref{Macros}). Most compilers do not include information 1954about preprocessor macros in the debugging information if you specify 1955the @option{-g} flag alone. Version 3.1 and later of @value{NGCC}, 1956the @sc{gnu} C compiler, provides macro information if you are using 1957the DWARF debugging format, and specify the option @option{-g3}. 1958 1959@xref{Debugging Options,,Options for Debugging Your Program or GCC, 1960gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more 1961information on @value{NGCC} options affecting debug information. 1962 1963You will have the best debugging experience if you use the latest 1964version of the DWARF debugging format that your compiler supports. 1965DWARF is currently the most expressive and best supported debugging 1966format in @value{GDBN}. 1967 1968@need 2000 1969@node Starting 1970@section Starting your Program 1971@cindex starting 1972@cindex running 1973 1974@table @code 1975@kindex run 1976@kindex r @r{(@code{run})} 1977@item run 1978@itemx r 1979Use the @code{run} command to start your program under @value{GDBN}. 1980You must first specify the program name with an argument to 1981@value{GDBN} (@pxref{Invocation, ,Getting In and Out of 1982@value{GDBN}}), or by using the @code{file} or @code{exec-file} 1983command (@pxref{Files, ,Commands to Specify Files}). 1984 1985@end table 1986 1987If you are running your program in an execution environment that 1988supports processes, @code{run} creates an inferior process and makes 1989that process run your program. In some environments without processes, 1990@code{run} jumps to the start of your program. Other targets, 1991like @samp{remote}, are always running. If you get an error 1992message like this one: 1993 1994@smallexample 1995The "remote" target does not support "run". 1996Try "help target" or "continue". 1997@end smallexample 1998 1999@noindent 2000then use @code{continue} to run your program. You may need @code{load} 2001first (@pxref{load}). 2002 2003The execution of a program is affected by certain information it 2004receives from its superior. @value{GDBN} provides ways to specify this 2005information, which you must do @emph{before} starting your program. (You 2006can change it after starting your program, but such changes only affect 2007your program the next time you start it.) This information may be 2008divided into four categories: 2009 2010@table @asis 2011@item The @emph{arguments.} 2012Specify the arguments to give your program as the arguments of the 2013@code{run} command. If a shell is available on your target, the shell 2014is used to pass the arguments, so that you may use normal conventions 2015(such as wildcard expansion or variable substitution) in describing 2016the arguments. 2017In Unix systems, you can control which shell is used with the 2018@code{SHELL} environment variable. If you do not define @code{SHELL}, 2019@value{GDBN} uses the default shell (@file{/bin/sh}). You can disable 2020use of any shell with the @code{set startup-with-shell} command (see 2021below for details). 2022 2023@item The @emph{environment.} 2024Your program normally inherits its environment from @value{GDBN}, but you can 2025use the @value{GDBN} commands @code{set environment} and @code{unset 2026environment} to change parts of the environment that affect 2027your program. @xref{Environment, ,Your Program's Environment}. 2028 2029@item The @emph{working directory.} 2030Your program inherits its working directory from @value{GDBN}. You can set 2031the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}. 2032@xref{Working Directory, ,Your Program's Working Directory}. 2033 2034@item The @emph{standard input and output.} 2035Your program normally uses the same device for standard input and 2036standard output as @value{GDBN} is using. You can redirect input and output 2037in the @code{run} command line, or you can use the @code{tty} command to 2038set a different device for your program. 2039@xref{Input/Output, ,Your Program's Input and Output}. 2040 2041@cindex pipes 2042@emph{Warning:} While input and output redirection work, you cannot use 2043pipes to pass the output of the program you are debugging to another 2044program; if you attempt this, @value{GDBN} is likely to wind up debugging the 2045wrong program. 2046@end table 2047 2048When you issue the @code{run} command, your program begins to execute 2049immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion 2050of how to arrange for your program to stop. Once your program has 2051stopped, you may call functions in your program, using the @code{print} 2052or @code{call} commands. @xref{Data, ,Examining Data}. 2053 2054If the modification time of your symbol file has changed since the last 2055time @value{GDBN} read its symbols, @value{GDBN} discards its symbol 2056table, and reads it again. When it does this, @value{GDBN} tries to retain 2057your current breakpoints. 2058 2059@table @code 2060@kindex start 2061@item start 2062@cindex run to main procedure 2063The name of the main procedure can vary from language to language. 2064With C or C@t{++}, the main procedure name is always @code{main}, but 2065other languages such as Ada do not require a specific name for their 2066main procedure. The debugger provides a convenient way to start the 2067execution of the program and to stop at the beginning of the main 2068procedure, depending on the language used. 2069 2070The @samp{start} command does the equivalent of setting a temporary 2071breakpoint at the beginning of the main procedure and then invoking 2072the @samp{run} command. 2073 2074@cindex elaboration phase 2075Some programs contain an @dfn{elaboration} phase where some startup code is 2076executed before the main procedure is called. This depends on the 2077languages used to write your program. In C@t{++}, for instance, 2078constructors for static and global objects are executed before 2079@code{main} is called. It is therefore possible that the debugger stops 2080before reaching the main procedure. However, the temporary breakpoint 2081will remain to halt execution. 2082 2083Specify the arguments to give to your program as arguments to the 2084@samp{start} command. These arguments will be given verbatim to the 2085underlying @samp{run} command. Note that the same arguments will be 2086reused if no argument is provided during subsequent calls to 2087@samp{start} or @samp{run}. 2088 2089It is sometimes necessary to debug the program during elaboration. In 2090these cases, using the @code{start} command would stop the execution of 2091your program too late, as the program would have already completed the 2092elaboration phase. Under these circumstances, insert breakpoints in your 2093elaboration code before running your program. 2094 2095@anchor{set exec-wrapper} 2096@kindex set exec-wrapper 2097@item set exec-wrapper @var{wrapper} 2098@itemx show exec-wrapper 2099@itemx unset exec-wrapper 2100When @samp{exec-wrapper} is set, the specified wrapper is used to 2101launch programs for debugging. @value{GDBN} starts your program 2102with a shell command of the form @kbd{exec @var{wrapper} 2103@var{program}}. Quoting is added to @var{program} and its 2104arguments, but not to @var{wrapper}, so you should add quotes if 2105appropriate for your shell. The wrapper runs until it executes 2106your program, and then @value{GDBN} takes control. 2107 2108You can use any program that eventually calls @code{execve} with 2109its arguments as a wrapper. Several standard Unix utilities do 2110this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 2111with @code{exec "$@@"} will also work. 2112 2113For example, you can use @code{env} to pass an environment variable to 2114the debugged program, without setting the variable in your shell's 2115environment: 2116 2117@smallexample 2118(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so' 2119(@value{GDBP}) run 2120@end smallexample 2121 2122This command is available when debugging locally on most targets, excluding 2123@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino. 2124 2125@kindex set startup-with-shell 2126@item set startup-with-shell 2127@itemx set startup-with-shell on 2128@itemx set startup-with-shell off 2129@itemx show set startup-with-shell 2130On Unix systems, by default, if a shell is available on your target, 2131@value{GDBN}) uses it to start your program. Arguments of the 2132@code{run} command are passed to the shell, which does variable 2133substitution, expands wildcard characters and performs redirection of 2134I/O. In some circumstances, it may be useful to disable such use of a 2135shell, for example, when debugging the shell itself or diagnosing 2136startup failures such as: 2137 2138@smallexample 2139(@value{GDBP}) run 2140Starting program: ./a.out 2141During startup program terminated with signal SIGSEGV, Segmentation fault. 2142@end smallexample 2143 2144@noindent 2145which indicates the shell or the wrapper specified with 2146@samp{exec-wrapper} crashed, not your program. Most often, this is 2147caused by something odd in your shell's non-interactive mode 2148initialization file---such as @file{.cshrc} for C-shell, 2149$@file{.zshenv} for the Z shell, or the file specified in the 2150@samp{BASH_ENV} environment variable for BASH. 2151 2152@anchor{set auto-connect-native-target} 2153@kindex set auto-connect-native-target 2154@item set auto-connect-native-target 2155@itemx set auto-connect-native-target on 2156@itemx set auto-connect-native-target off 2157@itemx show auto-connect-native-target 2158 2159By default, if not connected to any target yet (e.g., with 2160@code{target remote}), the @code{run} command starts your program as a 2161native process under @value{GDBN}, on your local machine. If you're 2162sure you don't want to debug programs on your local machine, you can 2163tell @value{GDBN} to not connect to the native target automatically 2164with the @code{set auto-connect-native-target off} command. 2165 2166If @code{on}, which is the default, and if @value{GDBN} is not 2167connected to a target already, the @code{run} command automaticaly 2168connects to the native target, if one is available. 2169 2170If @code{off}, and if @value{GDBN} is not connected to a target 2171already, the @code{run} command fails with an error: 2172 2173@smallexample 2174(@value{GDBP}) run 2175Don't know how to run. Try "help target". 2176@end smallexample 2177 2178If @value{GDBN} is already connected to a target, @value{GDBN} always 2179uses it with the @code{run} command. 2180 2181In any case, you can explicitly connect to the native target with the 2182@code{target native} command. For example, 2183 2184@smallexample 2185(@value{GDBP}) set auto-connect-native-target off 2186(@value{GDBP}) run 2187Don't know how to run. Try "help target". 2188(@value{GDBP}) target native 2189(@value{GDBP}) run 2190Starting program: ./a.out 2191[Inferior 1 (process 10421) exited normally] 2192@end smallexample 2193 2194In case you connected explicitly to the @code{native} target, 2195@value{GDBN} remains connected even if all inferiors exit, ready for 2196the next @code{run} command. Use the @code{disconnect} command to 2197disconnect. 2198 2199Examples of other commands that likewise respect the 2200@code{auto-connect-native-target} setting: @code{attach}, @code{info 2201proc}, @code{info os}. 2202 2203@kindex set disable-randomization 2204@item set disable-randomization 2205@itemx set disable-randomization on 2206This option (enabled by default in @value{GDBN}) will turn off the native 2207randomization of the virtual address space of the started program. This option 2208is useful for multiple debugging sessions to make the execution better 2209reproducible and memory addresses reusable across debugging sessions. 2210 2211This feature is implemented only on certain targets, including @sc{gnu}/Linux. 2212On @sc{gnu}/Linux you can get the same behavior using 2213 2214@smallexample 2215(@value{GDBP}) set exec-wrapper setarch `uname -m` -R 2216@end smallexample 2217 2218@item set disable-randomization off 2219Leave the behavior of the started executable unchanged. Some bugs rear their 2220ugly heads only when the program is loaded at certain addresses. If your bug 2221disappears when you run the program under @value{GDBN}, that might be because 2222@value{GDBN} by default disables the address randomization on platforms, such 2223as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set 2224disable-randomization off} to try to reproduce such elusive bugs. 2225 2226On targets where it is available, virtual address space randomization 2227protects the programs against certain kinds of security attacks. In these 2228cases the attacker needs to know the exact location of a concrete executable 2229code. Randomizing its location makes it impossible to inject jumps misusing 2230a code at its expected addresses. 2231 2232Prelinking shared libraries provides a startup performance advantage but it 2233makes addresses in these libraries predictable for privileged processes by 2234having just unprivileged access at the target system. Reading the shared 2235library binary gives enough information for assembling the malicious code 2236misusing it. Still even a prelinked shared library can get loaded at a new 2237random address just requiring the regular relocation process during the 2238startup. Shared libraries not already prelinked are always loaded at 2239a randomly chosen address. 2240 2241Position independent executables (PIE) contain position independent code 2242similar to the shared libraries and therefore such executables get loaded at 2243a randomly chosen address upon startup. PIE executables always load even 2244already prelinked shared libraries at a random address. You can build such 2245executable using @command{gcc -fPIE -pie}. 2246 2247Heap (malloc storage), stack and custom mmap areas are always placed randomly 2248(as long as the randomization is enabled). 2249 2250@item show disable-randomization 2251Show the current setting of the explicit disable of the native randomization of 2252the virtual address space of the started program. 2253 2254@end table 2255 2256@node Arguments 2257@section Your Program's Arguments 2258 2259@cindex arguments (to your program) 2260The arguments to your program can be specified by the arguments of the 2261@code{run} command. 2262They are passed to a shell, which expands wildcard characters and 2263performs redirection of I/O, and thence to your program. Your 2264@code{SHELL} environment variable (if it exists) specifies what shell 2265@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses 2266the default shell (@file{/bin/sh} on Unix). 2267 2268On non-Unix systems, the program is usually invoked directly by 2269@value{GDBN}, which emulates I/O redirection via the appropriate system 2270calls, and the wildcard characters are expanded by the startup code of 2271the program, not by the shell. 2272 2273@code{run} with no arguments uses the same arguments used by the previous 2274@code{run}, or those set by the @code{set args} command. 2275 2276@table @code 2277@kindex set args 2278@item set args 2279Specify the arguments to be used the next time your program is run. If 2280@code{set args} has no arguments, @code{run} executes your program 2281with no arguments. Once you have run your program with arguments, 2282using @code{set args} before the next @code{run} is the only way to run 2283it again without arguments. 2284 2285@kindex show args 2286@item show args 2287Show the arguments to give your program when it is started. 2288@end table 2289 2290@node Environment 2291@section Your Program's Environment 2292 2293@cindex environment (of your program) 2294The @dfn{environment} consists of a set of environment variables and 2295their values. Environment variables conventionally record such things as 2296your user name, your home directory, your terminal type, and your search 2297path for programs to run. Usually you set up environment variables with 2298the shell and they are inherited by all the other programs you run. When 2299debugging, it can be useful to try running your program with a modified 2300environment without having to start @value{GDBN} over again. 2301 2302@table @code 2303@kindex path 2304@item path @var{directory} 2305Add @var{directory} to the front of the @code{PATH} environment variable 2306(the search path for executables) that will be passed to your program. 2307The value of @code{PATH} used by @value{GDBN} does not change. 2308You may specify several directory names, separated by whitespace or by a 2309system-dependent separator character (@samp{:} on Unix, @samp{;} on 2310MS-DOS and MS-Windows). If @var{directory} is already in the path, it 2311is moved to the front, so it is searched sooner. 2312 2313You can use the string @samp{$cwd} to refer to whatever is the current 2314working directory at the time @value{GDBN} searches the path. If you 2315use @samp{.} instead, it refers to the directory where you executed the 2316@code{path} command. @value{GDBN} replaces @samp{.} in the 2317@var{directory} argument (with the current path) before adding 2318@var{directory} to the search path. 2319@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to 2320@c document that, since repeating it would be a no-op. 2321 2322@kindex show paths 2323@item show paths 2324Display the list of search paths for executables (the @code{PATH} 2325environment variable). 2326 2327@kindex show environment 2328@item show environment @r{[}@var{varname}@r{]} 2329Print the value of environment variable @var{varname} to be given to 2330your program when it starts. If you do not supply @var{varname}, 2331print the names and values of all environment variables to be given to 2332your program. You can abbreviate @code{environment} as @code{env}. 2333 2334@kindex set environment 2335@item set environment @var{varname} @r{[}=@var{value}@r{]} 2336Set environment variable @var{varname} to @var{value}. The value 2337changes for your program (and the shell @value{GDBN} uses to launch 2338it), not for @value{GDBN} itself. The @var{value} may be any string; the 2339values of environment variables are just strings, and any 2340interpretation is supplied by your program itself. The @var{value} 2341parameter is optional; if it is eliminated, the variable is set to a 2342null value. 2343@c "any string" here does not include leading, trailing 2344@c blanks. Gnu asks: does anyone care? 2345 2346For example, this command: 2347 2348@smallexample 2349set env USER = foo 2350@end smallexample 2351 2352@noindent 2353tells the debugged program, when subsequently run, that its user is named 2354@samp{foo}. (The spaces around @samp{=} are used for clarity here; they 2355are not actually required.) 2356 2357Note that on Unix systems, @value{GDBN} runs your program via a shell, 2358which also inherits the environment set with @code{set environment}. 2359If necessary, you can avoid that by using the @samp{env} program as a 2360wrapper instead of using @code{set environment}. @xref{set 2361exec-wrapper}, for an example doing just that. 2362 2363@kindex unset environment 2364@item unset environment @var{varname} 2365Remove variable @var{varname} from the environment to be passed to your 2366program. This is different from @samp{set env @var{varname} =}; 2367@code{unset environment} removes the variable from the environment, 2368rather than assigning it an empty value. 2369@end table 2370 2371@emph{Warning:} On Unix systems, @value{GDBN} runs your program using 2372the shell indicated by your @code{SHELL} environment variable if it 2373exists (or @code{/bin/sh} if not). If your @code{SHELL} variable 2374names a shell that runs an initialization file when started 2375non-interactively---such as @file{.cshrc} for C-shell, $@file{.zshenv} 2376for the Z shell, or the file specified in the @samp{BASH_ENV} 2377environment variable for BASH---any variables you set in that file 2378affect your program. You may wish to move setting of environment 2379variables to files that are only run when you sign on, such as 2380@file{.login} or @file{.profile}. 2381 2382@node Working Directory 2383@section Your Program's Working Directory 2384 2385@cindex working directory (of your program) 2386Each time you start your program with @code{run}, it inherits its 2387working directory from the current working directory of @value{GDBN}. 2388The @value{GDBN} working directory is initially whatever it inherited 2389from its parent process (typically the shell), but you can specify a new 2390working directory in @value{GDBN} with the @code{cd} command. 2391 2392The @value{GDBN} working directory also serves as a default for the commands 2393that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to 2394Specify Files}. 2395 2396@table @code 2397@kindex cd 2398@cindex change working directory 2399@item cd @r{[}@var{directory}@r{]} 2400Set the @value{GDBN} working directory to @var{directory}. If not 2401given, @var{directory} uses @file{'~'}. 2402 2403@kindex pwd 2404@item pwd 2405Print the @value{GDBN} working directory. 2406@end table 2407 2408It is generally impossible to find the current working directory of 2409the process being debugged (since a program can change its directory 2410during its run). If you work on a system where @value{GDBN} is 2411configured with the @file{/proc} support, you can use the @code{info 2412proc} command (@pxref{SVR4 Process Information}) to find out the 2413current working directory of the debuggee. 2414 2415@node Input/Output 2416@section Your Program's Input and Output 2417 2418@cindex redirection 2419@cindex i/o 2420@cindex terminal 2421By default, the program you run under @value{GDBN} does input and output to 2422the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal 2423to its own terminal modes to interact with you, but it records the terminal 2424modes your program was using and switches back to them when you continue 2425running your program. 2426 2427@table @code 2428@kindex info terminal 2429@item info terminal 2430Displays information recorded by @value{GDBN} about the terminal modes your 2431program is using. 2432@end table 2433 2434You can redirect your program's input and/or output using shell 2435redirection with the @code{run} command. For example, 2436 2437@smallexample 2438run > outfile 2439@end smallexample 2440 2441@noindent 2442starts your program, diverting its output to the file @file{outfile}. 2443 2444@kindex tty 2445@cindex controlling terminal 2446Another way to specify where your program should do input and output is 2447with the @code{tty} command. This command accepts a file name as 2448argument, and causes this file to be the default for future @code{run} 2449commands. It also resets the controlling terminal for the child 2450process, for future @code{run} commands. For example, 2451 2452@smallexample 2453tty /dev/ttyb 2454@end smallexample 2455 2456@noindent 2457directs that processes started with subsequent @code{run} commands 2458default to do input and output on the terminal @file{/dev/ttyb} and have 2459that as their controlling terminal. 2460 2461An explicit redirection in @code{run} overrides the @code{tty} command's 2462effect on the input/output device, but not its effect on the controlling 2463terminal. 2464 2465When you use the @code{tty} command or redirect input in the @code{run} 2466command, only the input @emph{for your program} is affected. The input 2467for @value{GDBN} still comes from your terminal. @code{tty} is an alias 2468for @code{set inferior-tty}. 2469 2470@cindex inferior tty 2471@cindex set inferior controlling terminal 2472You can use the @code{show inferior-tty} command to tell @value{GDBN} to 2473display the name of the terminal that will be used for future runs of your 2474program. 2475 2476@table @code 2477@item set inferior-tty /dev/ttyb 2478@kindex set inferior-tty 2479Set the tty for the program being debugged to /dev/ttyb. 2480 2481@item show inferior-tty 2482@kindex show inferior-tty 2483Show the current tty for the program being debugged. 2484@end table 2485 2486@node Attach 2487@section Debugging an Already-running Process 2488@kindex attach 2489@cindex attach 2490 2491@table @code 2492@item attach @var{process-id} 2493This command attaches to a running process---one that was started 2494outside @value{GDBN}. (@code{info files} shows your active 2495targets.) The command takes as argument a process ID. The usual way to 2496find out the @var{process-id} of a Unix process is with the @code{ps} utility, 2497or with the @samp{jobs -l} shell command. 2498 2499@code{attach} does not repeat if you press @key{RET} a second time after 2500executing the command. 2501@end table 2502 2503To use @code{attach}, your program must be running in an environment 2504which supports processes; for example, @code{attach} does not work for 2505programs on bare-board targets that lack an operating system. You must 2506also have permission to send the process a signal. 2507 2508When you use @code{attach}, the debugger finds the program running in 2509the process first by looking in the current working directory, then (if 2510the program is not found) by using the source file search path 2511(@pxref{Source Path, ,Specifying Source Directories}). You can also use 2512the @code{file} command to load the program. @xref{Files, ,Commands to 2513Specify Files}. 2514 2515The first thing @value{GDBN} does after arranging to debug the specified 2516process is to stop it. You can examine and modify an attached process 2517with all the @value{GDBN} commands that are ordinarily available when 2518you start processes with @code{run}. You can insert breakpoints; you 2519can step and continue; you can modify storage. If you would rather the 2520process continue running, you may use the @code{continue} command after 2521attaching @value{GDBN} to the process. 2522 2523@table @code 2524@kindex detach 2525@item detach 2526When you have finished debugging the attached process, you can use the 2527@code{detach} command to release it from @value{GDBN} control. Detaching 2528the process continues its execution. After the @code{detach} command, 2529that process and @value{GDBN} become completely independent once more, and you 2530are ready to @code{attach} another process or start one with @code{run}. 2531@code{detach} does not repeat if you press @key{RET} again after 2532executing the command. 2533@end table 2534 2535If you exit @value{GDBN} while you have an attached process, you detach 2536that process. If you use the @code{run} command, you kill that process. 2537By default, @value{GDBN} asks for confirmation if you try to do either of these 2538things; you can control whether or not you need to confirm by using the 2539@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and 2540Messages}). 2541 2542@node Kill Process 2543@section Killing the Child Process 2544 2545@table @code 2546@kindex kill 2547@item kill 2548Kill the child process in which your program is running under @value{GDBN}. 2549@end table 2550 2551This command is useful if you wish to debug a core dump instead of a 2552running process. @value{GDBN} ignores any core dump file while your program 2553is running. 2554 2555On some operating systems, a program cannot be executed outside @value{GDBN} 2556while you have breakpoints set on it inside @value{GDBN}. You can use the 2557@code{kill} command in this situation to permit running your program 2558outside the debugger. 2559 2560The @code{kill} command is also useful if you wish to recompile and 2561relink your program, since on many systems it is impossible to modify an 2562executable file while it is running in a process. In this case, when you 2563next type @code{run}, @value{GDBN} notices that the file has changed, and 2564reads the symbol table again (while trying to preserve your current 2565breakpoint settings). 2566 2567@node Inferiors and Programs 2568@section Debugging Multiple Inferiors and Programs 2569 2570@value{GDBN} lets you run and debug multiple programs in a single 2571session. In addition, @value{GDBN} on some systems may let you run 2572several programs simultaneously (otherwise you have to exit from one 2573before starting another). In the most general case, you can have 2574multiple threads of execution in each of multiple processes, launched 2575from multiple executables. 2576 2577@cindex inferior 2578@value{GDBN} represents the state of each program execution with an 2579object called an @dfn{inferior}. An inferior typically corresponds to 2580a process, but is more general and applies also to targets that do not 2581have processes. Inferiors may be created before a process runs, and 2582may be retained after a process exits. Inferiors have unique 2583identifiers that are different from process ids. Usually each 2584inferior will also have its own distinct address space, although some 2585embedded targets may have several inferiors running in different parts 2586of a single address space. Each inferior may in turn have multiple 2587threads running in it. 2588 2589To find out what inferiors exist at any moment, use @w{@code{info 2590inferiors}}: 2591 2592@table @code 2593@kindex info inferiors 2594@item info inferiors 2595Print a list of all inferiors currently being managed by @value{GDBN}. 2596 2597@value{GDBN} displays for each inferior (in this order): 2598 2599@enumerate 2600@item 2601the inferior number assigned by @value{GDBN} 2602 2603@item 2604the target system's inferior identifier 2605 2606@item 2607the name of the executable the inferior is running. 2608 2609@end enumerate 2610 2611@noindent 2612An asterisk @samp{*} preceding the @value{GDBN} inferior number 2613indicates the current inferior. 2614 2615For example, 2616@end table 2617@c end table here to get a little more width for example 2618 2619@smallexample 2620(@value{GDBP}) info inferiors 2621 Num Description Executable 2622 2 process 2307 hello 2623* 1 process 3401 goodbye 2624@end smallexample 2625 2626To switch focus between inferiors, use the @code{inferior} command: 2627 2628@table @code 2629@kindex inferior @var{infno} 2630@item inferior @var{infno} 2631Make inferior number @var{infno} the current inferior. The argument 2632@var{infno} is the inferior number assigned by @value{GDBN}, as shown 2633in the first field of the @samp{info inferiors} display. 2634@end table 2635 2636 2637You can get multiple executables into a debugging session via the 2638@code{add-inferior} and @w{@code{clone-inferior}} commands. On some 2639systems @value{GDBN} can add inferiors to the debug session 2640automatically by following calls to @code{fork} and @code{exec}. To 2641remove inferiors from the debugging session use the 2642@w{@code{remove-inferiors}} command. 2643 2644@table @code 2645@kindex add-inferior 2646@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ] 2647Adds @var{n} inferiors to be run using @var{executable} as the 2648executable; @var{n} defaults to 1. If no executable is specified, 2649the inferiors begins empty, with no program. You can still assign or 2650change the program assigned to the inferior at any time by using the 2651@code{file} command with the executable name as its argument. 2652 2653@kindex clone-inferior 2654@item clone-inferior [ -copies @var{n} ] [ @var{infno} ] 2655Adds @var{n} inferiors ready to execute the same program as inferior 2656@var{infno}; @var{n} defaults to 1, and @var{infno} defaults to the 2657number of the current inferior. This is a convenient command when you 2658want to run another instance of the inferior you are debugging. 2659 2660@smallexample 2661(@value{GDBP}) info inferiors 2662 Num Description Executable 2663* 1 process 29964 helloworld 2664(@value{GDBP}) clone-inferior 2665Added inferior 2. 26661 inferiors added. 2667(@value{GDBP}) info inferiors 2668 Num Description Executable 2669 2 <null> helloworld 2670* 1 process 29964 helloworld 2671@end smallexample 2672 2673You can now simply switch focus to inferior 2 and run it. 2674 2675@kindex remove-inferiors 2676@item remove-inferiors @var{infno}@dots{} 2677Removes the inferior or inferiors @var{infno}@dots{}. It is not 2678possible to remove an inferior that is running with this command. For 2679those, use the @code{kill} or @code{detach} command first. 2680 2681@end table 2682 2683To quit debugging one of the running inferiors that is not the current 2684inferior, you can either detach from it by using the @w{@code{detach 2685inferior}} command (allowing it to run independently), or kill it 2686using the @w{@code{kill inferiors}} command: 2687 2688@table @code 2689@kindex detach inferiors @var{infno}@dots{} 2690@item detach inferior @var{infno}@dots{} 2691Detach from the inferior or inferiors identified by @value{GDBN} 2692inferior number(s) @var{infno}@dots{}. Note that the inferior's entry 2693still stays on the list of inferiors shown by @code{info inferiors}, 2694but its Description will show @samp{<null>}. 2695 2696@kindex kill inferiors @var{infno}@dots{} 2697@item kill inferiors @var{infno}@dots{} 2698Kill the inferior or inferiors identified by @value{GDBN} inferior 2699number(s) @var{infno}@dots{}. Note that the inferior's entry still 2700stays on the list of inferiors shown by @code{info inferiors}, but its 2701Description will show @samp{<null>}. 2702@end table 2703 2704After the successful completion of a command such as @code{detach}, 2705@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after 2706a normal process exit, the inferior is still valid and listed with 2707@code{info inferiors}, ready to be restarted. 2708 2709 2710To be notified when inferiors are started or exit under @value{GDBN}'s 2711control use @w{@code{set print inferior-events}}: 2712 2713@table @code 2714@kindex set print inferior-events 2715@cindex print messages on inferior start and exit 2716@item set print inferior-events 2717@itemx set print inferior-events on 2718@itemx set print inferior-events off 2719The @code{set print inferior-events} command allows you to enable or 2720disable printing of messages when @value{GDBN} notices that new 2721inferiors have started or that inferiors have exited or have been 2722detached. By default, these messages will not be printed. 2723 2724@kindex show print inferior-events 2725@item show print inferior-events 2726Show whether messages will be printed when @value{GDBN} detects that 2727inferiors have started, exited or have been detached. 2728@end table 2729 2730Many commands will work the same with multiple programs as with a 2731single program: e.g., @code{print myglobal} will simply display the 2732value of @code{myglobal} in the current inferior. 2733 2734 2735Occasionaly, when debugging @value{GDBN} itself, it may be useful to 2736get more info about the relationship of inferiors, programs, address 2737spaces in a debug session. You can do that with the @w{@code{maint 2738info program-spaces}} command. 2739 2740@table @code 2741@kindex maint info program-spaces 2742@item maint info program-spaces 2743Print a list of all program spaces currently being managed by 2744@value{GDBN}. 2745 2746@value{GDBN} displays for each program space (in this order): 2747 2748@enumerate 2749@item 2750the program space number assigned by @value{GDBN} 2751 2752@item 2753the name of the executable loaded into the program space, with e.g., 2754the @code{file} command. 2755 2756@end enumerate 2757 2758@noindent 2759An asterisk @samp{*} preceding the @value{GDBN} program space number 2760indicates the current program space. 2761 2762In addition, below each program space line, @value{GDBN} prints extra 2763information that isn't suitable to display in tabular form. For 2764example, the list of inferiors bound to the program space. 2765 2766@smallexample 2767(@value{GDBP}) maint info program-spaces 2768 Id Executable 2769 2 goodbye 2770 Bound inferiors: ID 1 (process 21561) 2771* 1 hello 2772@end smallexample 2773 2774Here we can see that no inferior is running the program @code{hello}, 2775while @code{process 21561} is running the program @code{goodbye}. On 2776some targets, it is possible that multiple inferiors are bound to the 2777same program space. The most common example is that of debugging both 2778the parent and child processes of a @code{vfork} call. For example, 2779 2780@smallexample 2781(@value{GDBP}) maint info program-spaces 2782 Id Executable 2783* 1 vfork-test 2784 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045) 2785@end smallexample 2786 2787Here, both inferior 2 and inferior 1 are running in the same program 2788space as a result of inferior 1 having executed a @code{vfork} call. 2789@end table 2790 2791@node Threads 2792@section Debugging Programs with Multiple Threads 2793 2794@cindex threads of execution 2795@cindex multiple threads 2796@cindex switching threads 2797In some operating systems, such as HP-UX and Solaris, a single program 2798may have more than one @dfn{thread} of execution. The precise semantics 2799of threads differ from one operating system to another, but in general 2800the threads of a single program are akin to multiple processes---except 2801that they share one address space (that is, they can all examine and 2802modify the same variables). On the other hand, each thread has its own 2803registers and execution stack, and perhaps private memory. 2804 2805@value{GDBN} provides these facilities for debugging multi-thread 2806programs: 2807 2808@itemize @bullet 2809@item automatic notification of new threads 2810@item @samp{thread @var{threadno}}, a command to switch among threads 2811@item @samp{info threads}, a command to inquire about existing threads 2812@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}}, 2813a command to apply a command to a list of threads 2814@item thread-specific breakpoints 2815@item @samp{set print thread-events}, which controls printing of 2816messages on thread start and exit. 2817@item @samp{set libthread-db-search-path @var{path}}, which lets 2818the user specify which @code{libthread_db} to use if the default choice 2819isn't compatible with the program. 2820@end itemize 2821 2822@quotation 2823@emph{Warning:} These facilities are not yet available on every 2824@value{GDBN} configuration where the operating system supports threads. 2825If your @value{GDBN} does not support threads, these commands have no 2826effect. For example, a system without thread support shows no output 2827from @samp{info threads}, and always rejects the @code{thread} command, 2828like this: 2829 2830@smallexample 2831(@value{GDBP}) info threads 2832(@value{GDBP}) thread 1 2833Thread ID 1 not known. Use the "info threads" command to 2834see the IDs of currently known threads. 2835@end smallexample 2836@c FIXME to implementors: how hard would it be to say "sorry, this GDB 2837@c doesn't support threads"? 2838@end quotation 2839 2840@cindex focus of debugging 2841@cindex current thread 2842The @value{GDBN} thread debugging facility allows you to observe all 2843threads while your program runs---but whenever @value{GDBN} takes 2844control, one thread in particular is always the focus of debugging. 2845This thread is called the @dfn{current thread}. Debugging commands show 2846program information from the perspective of the current thread. 2847 2848@cindex @code{New} @var{systag} message 2849@cindex thread identifier (system) 2850@c FIXME-implementors!! It would be more helpful if the [New...] message 2851@c included GDB's numeric thread handle, so you could just go to that 2852@c thread without first checking `info threads'. 2853Whenever @value{GDBN} detects a new thread in your program, it displays 2854the target system's identification for the thread with a message in the 2855form @samp{[New @var{systag}]}, where @var{systag} is a thread identifier 2856whose form varies depending on the particular system. For example, on 2857@sc{gnu}/Linux, you might see 2858 2859@smallexample 2860[New Thread 0x41e02940 (LWP 25582)] 2861@end smallexample 2862 2863@noindent 2864when @value{GDBN} notices a new thread. In contrast, on an SGI system, 2865the @var{systag} is simply something like @samp{process 368}, with no 2866further qualifier. 2867 2868@c FIXME!! (1) Does the [New...] message appear even for the very first 2869@c thread of a program, or does it only appear for the 2870@c second---i.e.@: when it becomes obvious we have a multithread 2871@c program? 2872@c (2) *Is* there necessarily a first thread always? Or do some 2873@c multithread systems permit starting a program with multiple 2874@c threads ab initio? 2875 2876@cindex thread number 2877@cindex thread identifier (GDB) 2878For debugging purposes, @value{GDBN} associates its own thread 2879number---always a single integer---with each thread in your program. 2880 2881@table @code 2882@kindex info threads 2883@item info threads @r{[}@var{id}@dots{}@r{]} 2884Display a summary of all threads currently in your program. Optional 2885argument @var{id}@dots{} is one or more thread ids separated by spaces, and 2886means to print information only about the specified thread or threads. 2887@value{GDBN} displays for each thread (in this order): 2888 2889@enumerate 2890@item 2891the thread number assigned by @value{GDBN} 2892 2893@item 2894the target system's thread identifier (@var{systag}) 2895 2896@item 2897the thread's name, if one is known. A thread can either be named by 2898the user (see @code{thread name}, below), or, in some cases, by the 2899program itself. 2900 2901@item 2902the current stack frame summary for that thread 2903@end enumerate 2904 2905@noindent 2906An asterisk @samp{*} to the left of the @value{GDBN} thread number 2907indicates the current thread. 2908 2909For example, 2910@end table 2911@c end table here to get a little more width for example 2912 2913@smallexample 2914(@value{GDBP}) info threads 2915 Id Target Id Frame 2916 3 process 35 thread 27 0x34e5 in sigpause () 2917 2 process 35 thread 23 0x34e5 in sigpause () 2918* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) 2919 at threadtest.c:68 2920@end smallexample 2921 2922On Solaris, you can display more information about user threads with a 2923Solaris-specific command: 2924 2925@table @code 2926@item maint info sol-threads 2927@kindex maint info sol-threads 2928@cindex thread info (Solaris) 2929Display info on Solaris user threads. 2930@end table 2931 2932@table @code 2933@kindex thread @var{threadno} 2934@item thread @var{threadno} 2935Make thread number @var{threadno} the current thread. The command 2936argument @var{threadno} is the internal @value{GDBN} thread number, as 2937shown in the first field of the @samp{info threads} display. 2938@value{GDBN} responds by displaying the system identifier of the thread 2939you selected, and its current stack frame summary: 2940 2941@smallexample 2942(@value{GDBP}) thread 2 2943[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))] 2944#0 some_function (ignore=0x0) at example.c:8 29458 printf ("hello\n"); 2946@end smallexample 2947 2948@noindent 2949As with the @samp{[New @dots{}]} message, the form of the text after 2950@samp{Switching to} depends on your system's conventions for identifying 2951threads. 2952 2953@vindex $_thread@r{, convenience variable} 2954The debugger convenience variable @samp{$_thread} contains the number 2955of the current thread. You may find this useful in writing breakpoint 2956conditional expressions, command scripts, and so forth. See 2957@xref{Convenience Vars,, Convenience Variables}, for general 2958information on convenience variables. 2959 2960@kindex thread apply 2961@cindex apply command to several threads 2962@item thread apply [@var{threadno} | all] @var{command} 2963The @code{thread apply} command allows you to apply the named 2964@var{command} to one or more threads. Specify the numbers of the 2965threads that you want affected with the command argument 2966@var{threadno}. It can be a single thread number, one of the numbers 2967shown in the first field of the @samp{info threads} display; or it 2968could be a range of thread numbers, as in @code{2-4}. To apply a 2969command to all threads, type @kbd{thread apply all @var{command}}. 2970 2971@kindex thread name 2972@cindex name a thread 2973@item thread name [@var{name}] 2974This command assigns a name to the current thread. If no argument is 2975given, any existing user-specified name is removed. The thread name 2976appears in the @samp{info threads} display. 2977 2978On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to 2979determine the name of the thread as given by the OS. On these 2980systems, a name specified with @samp{thread name} will override the 2981system-give name, and removing the user-specified name will cause 2982@value{GDBN} to once again display the system-specified name. 2983 2984@kindex thread find 2985@cindex search for a thread 2986@item thread find [@var{regexp}] 2987Search for and display thread ids whose name or @var{systag} 2988matches the supplied regular expression. 2989 2990As well as being the complement to the @samp{thread name} command, 2991this command also allows you to identify a thread by its target 2992@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag} 2993is the LWP id. 2994 2995@smallexample 2996(@value{GDBN}) thread find 26688 2997Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)' 2998(@value{GDBN}) info thread 4 2999 Id Target Id Frame 3000 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select () 3001@end smallexample 3002 3003@kindex set print thread-events 3004@cindex print messages on thread start and exit 3005@item set print thread-events 3006@itemx set print thread-events on 3007@itemx set print thread-events off 3008The @code{set print thread-events} command allows you to enable or 3009disable printing of messages when @value{GDBN} notices that new threads have 3010started or that threads have exited. By default, these messages will 3011be printed if detection of these events is supported by the target. 3012Note that these messages cannot be disabled on all targets. 3013 3014@kindex show print thread-events 3015@item show print thread-events 3016Show whether messages will be printed when @value{GDBN} detects that threads 3017have started and exited. 3018@end table 3019 3020@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for 3021more information about how @value{GDBN} behaves when you stop and start 3022programs with multiple threads. 3023 3024@xref{Set Watchpoints,,Setting Watchpoints}, for information about 3025watchpoints in programs with multiple threads. 3026 3027@anchor{set libthread-db-search-path} 3028@table @code 3029@kindex set libthread-db-search-path 3030@cindex search path for @code{libthread_db} 3031@item set libthread-db-search-path @r{[}@var{path}@r{]} 3032If this variable is set, @var{path} is a colon-separated list of 3033directories @value{GDBN} will use to search for @code{libthread_db}. 3034If you omit @var{path}, @samp{libthread-db-search-path} will be reset to 3035its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems). 3036Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH} 3037macro. 3038 3039On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper'' 3040@code{libthread_db} library to obtain information about threads in the 3041inferior process. @value{GDBN} will use @samp{libthread-db-search-path} 3042to find @code{libthread_db}. @value{GDBN} also consults first if inferior 3043specific thread debugging library loading is enabled 3044by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}). 3045 3046A special entry @samp{$sdir} for @samp{libthread-db-search-path} 3047refers to the default system directories that are 3048normally searched for loading shared libraries. The @samp{$sdir} entry 3049is the only kind not needing to be enabled by @samp{set auto-load libthread-db} 3050(@pxref{libthread_db.so.1 file}). 3051 3052A special entry @samp{$pdir} for @samp{libthread-db-search-path} 3053refers to the directory from which @code{libpthread} 3054was loaded in the inferior process. 3055 3056For any @code{libthread_db} library @value{GDBN} finds in above directories, 3057@value{GDBN} attempts to initialize it with the current inferior process. 3058If this initialization fails (which could happen because of a version 3059mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN} 3060will unload @code{libthread_db}, and continue with the next directory. 3061If none of @code{libthread_db} libraries initialize successfully, 3062@value{GDBN} will issue a warning and thread debugging will be disabled. 3063 3064Setting @code{libthread-db-search-path} is currently implemented 3065only on some platforms. 3066 3067@kindex show libthread-db-search-path 3068@item show libthread-db-search-path 3069Display current libthread_db search path. 3070 3071@kindex set debug libthread-db 3072@kindex show debug libthread-db 3073@cindex debugging @code{libthread_db} 3074@item set debug libthread-db 3075@itemx show debug libthread-db 3076Turns on or off display of @code{libthread_db}-related events. 3077Use @code{1} to enable, @code{0} to disable. 3078@end table 3079 3080@node Forks 3081@section Debugging Forks 3082 3083@cindex fork, debugging programs which call 3084@cindex multiple processes 3085@cindex processes, multiple 3086On most systems, @value{GDBN} has no special support for debugging 3087programs which create additional processes using the @code{fork} 3088function. When a program forks, @value{GDBN} will continue to debug the 3089parent process and the child process will run unimpeded. If you have 3090set a breakpoint in any code which the child then executes, the child 3091will get a @code{SIGTRAP} signal which (unless it catches the signal) 3092will cause it to terminate. 3093 3094However, if you want to debug the child process there is a workaround 3095which isn't too painful. Put a call to @code{sleep} in the code which 3096the child process executes after the fork. It may be useful to sleep 3097only if a certain environment variable is set, or a certain file exists, 3098so that the delay need not occur when you don't want to run @value{GDBN} 3099on the child. While the child is sleeping, use the @code{ps} program to 3100get its process ID. Then tell @value{GDBN} (a new invocation of 3101@value{GDBN} if you are also debugging the parent process) to attach to 3102the child process (@pxref{Attach}). From that point on you can debug 3103the child process just like any other process which you attached to. 3104 3105On some systems, @value{GDBN} provides support for debugging programs that 3106create additional processes using the @code{fork} or @code{vfork} functions. 3107Currently, the only platforms with this feature are HP-UX (11.x and later 3108only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later). 3109 3110By default, when a program forks, @value{GDBN} will continue to debug 3111the parent process and the child process will run unimpeded. 3112 3113If you want to follow the child process instead of the parent process, 3114use the command @w{@code{set follow-fork-mode}}. 3115 3116@table @code 3117@kindex set follow-fork-mode 3118@item set follow-fork-mode @var{mode} 3119Set the debugger response to a program call of @code{fork} or 3120@code{vfork}. A call to @code{fork} or @code{vfork} creates a new 3121process. The @var{mode} argument can be: 3122 3123@table @code 3124@item parent 3125The original process is debugged after a fork. The child process runs 3126unimpeded. This is the default. 3127 3128@item child 3129The new process is debugged after a fork. The parent process runs 3130unimpeded. 3131 3132@end table 3133 3134@kindex show follow-fork-mode 3135@item show follow-fork-mode 3136Display the current debugger response to a @code{fork} or @code{vfork} call. 3137@end table 3138 3139@cindex debugging multiple processes 3140On Linux, if you want to debug both the parent and child processes, use the 3141command @w{@code{set detach-on-fork}}. 3142 3143@table @code 3144@kindex set detach-on-fork 3145@item set detach-on-fork @var{mode} 3146Tells gdb whether to detach one of the processes after a fork, or 3147retain debugger control over them both. 3148 3149@table @code 3150@item on 3151The child process (or parent process, depending on the value of 3152@code{follow-fork-mode}) will be detached and allowed to run 3153independently. This is the default. 3154 3155@item off 3156Both processes will be held under the control of @value{GDBN}. 3157One process (child or parent, depending on the value of 3158@code{follow-fork-mode}) is debugged as usual, while the other 3159is held suspended. 3160 3161@end table 3162 3163@kindex show detach-on-fork 3164@item show detach-on-fork 3165Show whether detach-on-fork mode is on/off. 3166@end table 3167 3168If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN} 3169will retain control of all forked processes (including nested forks). 3170You can list the forked processes under the control of @value{GDBN} by 3171using the @w{@code{info inferiors}} command, and switch from one fork 3172to another by using the @code{inferior} command (@pxref{Inferiors and 3173Programs, ,Debugging Multiple Inferiors and Programs}). 3174 3175To quit debugging one of the forked processes, you can either detach 3176from it by using the @w{@code{detach inferiors}} command (allowing it 3177to run independently), or kill it using the @w{@code{kill inferiors}} 3178command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors 3179and Programs}. 3180 3181If you ask to debug a child process and a @code{vfork} is followed by an 3182@code{exec}, @value{GDBN} executes the new target up to the first 3183breakpoint in the new target. If you have a breakpoint set on 3184@code{main} in your original program, the breakpoint will also be set on 3185the child process's @code{main}. 3186 3187On some systems, when a child process is spawned by @code{vfork}, you 3188cannot debug the child or parent until an @code{exec} call completes. 3189 3190If you issue a @code{run} command to @value{GDBN} after an @code{exec} 3191call executes, the new target restarts. To restart the parent 3192process, use the @code{file} command with the parent executable name 3193as its argument. By default, after an @code{exec} call executes, 3194@value{GDBN} discards the symbols of the previous executable image. 3195You can change this behaviour with the @w{@code{set follow-exec-mode}} 3196command. 3197 3198@table @code 3199@kindex set follow-exec-mode 3200@item set follow-exec-mode @var{mode} 3201 3202Set debugger response to a program call of @code{exec}. An 3203@code{exec} call replaces the program image of a process. 3204 3205@code{follow-exec-mode} can be: 3206 3207@table @code 3208@item new 3209@value{GDBN} creates a new inferior and rebinds the process to this 3210new inferior. The program the process was running before the 3211@code{exec} call can be restarted afterwards by restarting the 3212original inferior. 3213 3214For example: 3215 3216@smallexample 3217(@value{GDBP}) info inferiors 3218(gdb) info inferior 3219 Id Description Executable 3220* 1 <null> prog1 3221(@value{GDBP}) run 3222process 12020 is executing new program: prog2 3223Program exited normally. 3224(@value{GDBP}) info inferiors 3225 Id Description Executable 3226* 2 <null> prog2 3227 1 <null> prog1 3228@end smallexample 3229 3230@item same 3231@value{GDBN} keeps the process bound to the same inferior. The new 3232executable image replaces the previous executable loaded in the 3233inferior. Restarting the inferior after the @code{exec} call, with 3234e.g., the @code{run} command, restarts the executable the process was 3235running after the @code{exec} call. This is the default mode. 3236 3237For example: 3238 3239@smallexample 3240(@value{GDBP}) info inferiors 3241 Id Description Executable 3242* 1 <null> prog1 3243(@value{GDBP}) run 3244process 12020 is executing new program: prog2 3245Program exited normally. 3246(@value{GDBP}) info inferiors 3247 Id Description Executable 3248* 1 <null> prog2 3249@end smallexample 3250 3251@end table 3252@end table 3253 3254You can use the @code{catch} command to make @value{GDBN} stop whenever 3255a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set 3256Catchpoints, ,Setting Catchpoints}. 3257 3258@node Checkpoint/Restart 3259@section Setting a @emph{Bookmark} to Return to Later 3260 3261@cindex checkpoint 3262@cindex restart 3263@cindex bookmark 3264@cindex snapshot of a process 3265@cindex rewind program state 3266 3267On certain operating systems@footnote{Currently, only 3268@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a 3269program's state, called a @dfn{checkpoint}, and come back to it 3270later. 3271 3272Returning to a checkpoint effectively undoes everything that has 3273happened in the program since the @code{checkpoint} was saved. This 3274includes changes in memory, registers, and even (within some limits) 3275system state. Effectively, it is like going back in time to the 3276moment when the checkpoint was saved. 3277 3278Thus, if you're stepping thru a program and you think you're 3279getting close to the point where things go wrong, you can save 3280a checkpoint. Then, if you accidentally go too far and miss 3281the critical statement, instead of having to restart your program 3282from the beginning, you can just go back to the checkpoint and 3283start again from there. 3284 3285This can be especially useful if it takes a lot of time or 3286steps to reach the point where you think the bug occurs. 3287 3288To use the @code{checkpoint}/@code{restart} method of debugging: 3289 3290@table @code 3291@kindex checkpoint 3292@item checkpoint 3293Save a snapshot of the debugged program's current execution state. 3294The @code{checkpoint} command takes no arguments, but each checkpoint 3295is assigned a small integer id, similar to a breakpoint id. 3296 3297@kindex info checkpoints 3298@item info checkpoints 3299List the checkpoints that have been saved in the current debugging 3300session. For each checkpoint, the following information will be 3301listed: 3302 3303@table @code 3304@item Checkpoint ID 3305@item Process ID 3306@item Code Address 3307@item Source line, or label 3308@end table 3309 3310@kindex restart @var{checkpoint-id} 3311@item restart @var{checkpoint-id} 3312Restore the program state that was saved as checkpoint number 3313@var{checkpoint-id}. All program variables, registers, stack frames 3314etc.@: will be returned to the values that they had when the checkpoint 3315was saved. In essence, gdb will ``wind back the clock'' to the point 3316in time when the checkpoint was saved. 3317 3318Note that breakpoints, @value{GDBN} variables, command history etc. 3319are not affected by restoring a checkpoint. In general, a checkpoint 3320only restores things that reside in the program being debugged, not in 3321the debugger. 3322 3323@kindex delete checkpoint @var{checkpoint-id} 3324@item delete checkpoint @var{checkpoint-id} 3325Delete the previously-saved checkpoint identified by @var{checkpoint-id}. 3326 3327@end table 3328 3329Returning to a previously saved checkpoint will restore the user state 3330of the program being debugged, plus a significant subset of the system 3331(OS) state, including file pointers. It won't ``un-write'' data from 3332a file, but it will rewind the file pointer to the previous location, 3333so that the previously written data can be overwritten. For files 3334opened in read mode, the pointer will also be restored so that the 3335previously read data can be read again. 3336 3337Of course, characters that have been sent to a printer (or other 3338external device) cannot be ``snatched back'', and characters received 3339from eg.@: a serial device can be removed from internal program buffers, 3340but they cannot be ``pushed back'' into the serial pipeline, ready to 3341be received again. Similarly, the actual contents of files that have 3342been changed cannot be restored (at this time). 3343 3344However, within those constraints, you actually can ``rewind'' your 3345program to a previously saved point in time, and begin debugging it 3346again --- and you can change the course of events so as to debug a 3347different execution path this time. 3348 3349@cindex checkpoints and process id 3350Finally, there is one bit of internal program state that will be 3351different when you return to a checkpoint --- the program's process 3352id. Each checkpoint will have a unique process id (or @var{pid}), 3353and each will be different from the program's original @var{pid}. 3354If your program has saved a local copy of its process id, this could 3355potentially pose a problem. 3356 3357@subsection A Non-obvious Benefit of Using Checkpoints 3358 3359On some systems such as @sc{gnu}/Linux, address space randomization 3360is performed on new processes for security reasons. This makes it 3361difficult or impossible to set a breakpoint, or watchpoint, on an 3362absolute address if you have to restart the program, since the 3363absolute location of a symbol will change from one execution to the 3364next. 3365 3366A checkpoint, however, is an @emph{identical} copy of a process. 3367Therefore if you create a checkpoint at (eg.@:) the start of main, 3368and simply return to that checkpoint instead of restarting the 3369process, you can avoid the effects of address randomization and 3370your symbols will all stay in the same place. 3371 3372@node Stopping 3373@chapter Stopping and Continuing 3374 3375The principal purposes of using a debugger are so that you can stop your 3376program before it terminates; or so that, if your program runs into 3377trouble, you can investigate and find out why. 3378 3379Inside @value{GDBN}, your program may stop for any of several reasons, 3380such as a signal, a breakpoint, or reaching a new line after a 3381@value{GDBN} command such as @code{step}. You may then examine and 3382change variables, set new breakpoints or remove old ones, and then 3383continue execution. Usually, the messages shown by @value{GDBN} provide 3384ample explanation of the status of your program---but you can also 3385explicitly request this information at any time. 3386 3387@table @code 3388@kindex info program 3389@item info program 3390Display information about the status of your program: whether it is 3391running or not, what process it is, and why it stopped. 3392@end table 3393 3394@menu 3395* Breakpoints:: Breakpoints, watchpoints, and catchpoints 3396* Continuing and Stepping:: Resuming execution 3397* Skipping Over Functions and Files:: 3398 Skipping over functions and files 3399* Signals:: Signals 3400* Thread Stops:: Stopping and starting multi-thread programs 3401@end menu 3402 3403@node Breakpoints 3404@section Breakpoints, Watchpoints, and Catchpoints 3405 3406@cindex breakpoints 3407A @dfn{breakpoint} makes your program stop whenever a certain point in 3408the program is reached. For each breakpoint, you can add conditions to 3409control in finer detail whether your program stops. You can set 3410breakpoints with the @code{break} command and its variants (@pxref{Set 3411Breaks, ,Setting Breakpoints}), to specify the place where your program 3412should stop by line number, function name or exact address in the 3413program. 3414 3415On some systems, you can set breakpoints in shared libraries before 3416the executable is run. There is a minor limitation on HP-UX systems: 3417you must wait until the executable is run in order to set breakpoints 3418in shared library routines that are not called directly by the program 3419(for example, routines that are arguments in a @code{pthread_create} 3420call). 3421 3422@cindex watchpoints 3423@cindex data breakpoints 3424@cindex memory tracing 3425@cindex breakpoint on memory address 3426@cindex breakpoint on variable modification 3427A @dfn{watchpoint} is a special breakpoint that stops your program 3428when the value of an expression changes. The expression may be a value 3429of a variable, or it could involve values of one or more variables 3430combined by operators, such as @samp{a + b}. This is sometimes called 3431@dfn{data breakpoints}. You must use a different command to set 3432watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside 3433from that, you can manage a watchpoint like any other breakpoint: you 3434enable, disable, and delete both breakpoints and watchpoints using the 3435same commands. 3436 3437You can arrange to have values from your program displayed automatically 3438whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,, 3439Automatic Display}. 3440 3441@cindex catchpoints 3442@cindex breakpoint on events 3443A @dfn{catchpoint} is another special breakpoint that stops your program 3444when a certain kind of event occurs, such as the throwing of a C@t{++} 3445exception or the loading of a library. As with watchpoints, you use a 3446different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting 3447Catchpoints}), but aside from that, you can manage a catchpoint like any 3448other breakpoint. (To stop when your program receives a signal, use the 3449@code{handle} command; see @ref{Signals, ,Signals}.) 3450 3451@cindex breakpoint numbers 3452@cindex numbers for breakpoints 3453@value{GDBN} assigns a number to each breakpoint, watchpoint, or 3454catchpoint when you create it; these numbers are successive integers 3455starting with one. In many of the commands for controlling various 3456features of breakpoints you use the breakpoint number to say which 3457breakpoint you want to change. Each breakpoint may be @dfn{enabled} or 3458@dfn{disabled}; if disabled, it has no effect on your program until you 3459enable it again. 3460 3461@cindex breakpoint ranges 3462@cindex ranges of breakpoints 3463Some @value{GDBN} commands accept a range of breakpoints on which to 3464operate. A breakpoint range is either a single breakpoint number, like 3465@samp{5}, or two such numbers, in increasing order, separated by a 3466hyphen, like @samp{5-7}. When a breakpoint range is given to a command, 3467all breakpoints in that range are operated on. 3468 3469@menu 3470* Set Breaks:: Setting breakpoints 3471* Set Watchpoints:: Setting watchpoints 3472* Set Catchpoints:: Setting catchpoints 3473* Delete Breaks:: Deleting breakpoints 3474* Disabling:: Disabling breakpoints 3475* Conditions:: Break conditions 3476* Break Commands:: Breakpoint command lists 3477* Dynamic Printf:: Dynamic printf 3478* Save Breakpoints:: How to save breakpoints in a file 3479* Static Probe Points:: Listing static probe points 3480* Error in Breakpoints:: ``Cannot insert breakpoints'' 3481* Breakpoint-related Warnings:: ``Breakpoint address adjusted...'' 3482@end menu 3483 3484@node Set Breaks 3485@subsection Setting Breakpoints 3486 3487@c FIXME LMB what does GDB do if no code on line of breakpt? 3488@c consider in particular declaration with/without initialization. 3489@c 3490@c FIXME 2 is there stuff on this already? break at fun start, already init? 3491 3492@kindex break 3493@kindex b @r{(@code{break})} 3494@vindex $bpnum@r{, convenience variable} 3495@cindex latest breakpoint 3496Breakpoints are set with the @code{break} command (abbreviated 3497@code{b}). The debugger convenience variable @samp{$bpnum} records the 3498number of the breakpoint you've set most recently; see @ref{Convenience 3499Vars,, Convenience Variables}, for a discussion of what you can do with 3500convenience variables. 3501 3502@table @code 3503@item break @var{location} 3504Set a breakpoint at the given @var{location}, which can specify a 3505function name, a line number, or an address of an instruction. 3506(@xref{Specify Location}, for a list of all the possible ways to 3507specify a @var{location}.) The breakpoint will stop your program just 3508before it executes any of the code in the specified @var{location}. 3509 3510When using source languages that permit overloading of symbols, such as 3511C@t{++}, a function name may refer to more than one possible place to break. 3512@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of 3513that situation. 3514 3515It is also possible to insert a breakpoint that will stop the program 3516only if a specific thread (@pxref{Thread-Specific Breakpoints}) 3517or a specific task (@pxref{Ada Tasks}) hits that breakpoint. 3518 3519@item break 3520When called without any arguments, @code{break} sets a breakpoint at 3521the next instruction to be executed in the selected stack frame 3522(@pxref{Stack, ,Examining the Stack}). In any selected frame but the 3523innermost, this makes your program stop as soon as control 3524returns to that frame. This is similar to the effect of a 3525@code{finish} command in the frame inside the selected frame---except 3526that @code{finish} does not leave an active breakpoint. If you use 3527@code{break} without an argument in the innermost frame, @value{GDBN} stops 3528the next time it reaches the current location; this may be useful 3529inside loops. 3530 3531@value{GDBN} normally ignores breakpoints when it resumes execution, until at 3532least one instruction has been executed. If it did not do this, you 3533would be unable to proceed past a breakpoint without first disabling the 3534breakpoint. This rule applies whether or not the breakpoint already 3535existed when your program stopped. 3536 3537@item break @dots{} if @var{cond} 3538Set a breakpoint with condition @var{cond}; evaluate the expression 3539@var{cond} each time the breakpoint is reached, and stop only if the 3540value is nonzero---that is, if @var{cond} evaluates as true. 3541@samp{@dots{}} stands for one of the possible arguments described 3542above (or no argument) specifying where to break. @xref{Conditions, 3543,Break Conditions}, for more information on breakpoint conditions. 3544 3545@kindex tbreak 3546@item tbreak @var{args} 3547Set a breakpoint enabled only for one stop. The @var{args} are the 3548same as for the @code{break} command, and the breakpoint is set in the same 3549way, but the breakpoint is automatically deleted after the first time your 3550program stops there. @xref{Disabling, ,Disabling Breakpoints}. 3551 3552@kindex hbreak 3553@cindex hardware breakpoints 3554@item hbreak @var{args} 3555Set a hardware-assisted breakpoint. The @var{args} are the same as for the 3556@code{break} command and the breakpoint is set in the same way, but the 3557breakpoint requires hardware support and some target hardware may not 3558have this support. The main purpose of this is EPROM/ROM code 3559debugging, so you can set a breakpoint at an instruction without 3560changing the instruction. This can be used with the new trap-generation 3561provided by SPARClite DSU and most x86-based targets. These targets 3562will generate traps when a program accesses some data or instruction 3563address that is assigned to the debug registers. However the hardware 3564breakpoint registers can take a limited number of breakpoints. For 3565example, on the DSU, only two data breakpoints can be set at a time, and 3566@value{GDBN} will reject this command if more than two are used. Delete 3567or disable unused hardware breakpoints before setting new ones 3568(@pxref{Disabling, ,Disabling Breakpoints}). 3569@xref{Conditions, ,Break Conditions}. 3570For remote targets, you can restrict the number of hardware 3571breakpoints @value{GDBN} will use, see @ref{set remote 3572hardware-breakpoint-limit}. 3573 3574@kindex thbreak 3575@item thbreak @var{args} 3576Set a hardware-assisted breakpoint enabled only for one stop. The @var{args} 3577are the same as for the @code{hbreak} command and the breakpoint is set in 3578the same way. However, like the @code{tbreak} command, 3579the breakpoint is automatically deleted after the 3580first time your program stops there. Also, like the @code{hbreak} 3581command, the breakpoint requires hardware support and some target hardware 3582may not have this support. @xref{Disabling, ,Disabling Breakpoints}. 3583See also @ref{Conditions, ,Break Conditions}. 3584 3585@kindex rbreak 3586@cindex regular expression 3587@cindex breakpoints at functions matching a regexp 3588@cindex set breakpoints in many functions 3589@item rbreak @var{regex} 3590Set breakpoints on all functions matching the regular expression 3591@var{regex}. This command sets an unconditional breakpoint on all 3592matches, printing a list of all breakpoints it set. Once these 3593breakpoints are set, they are treated just like the breakpoints set with 3594the @code{break} command. You can delete them, disable them, or make 3595them conditional the same way as any other breakpoint. 3596 3597The syntax of the regular expression is the standard one used with tools 3598like @file{grep}. Note that this is different from the syntax used by 3599shells, so for instance @code{foo*} matches all functions that include 3600an @code{fo} followed by zero or more @code{o}s. There is an implicit 3601@code{.*} leading and trailing the regular expression you supply, so to 3602match only functions that begin with @code{foo}, use @code{^foo}. 3603 3604@cindex non-member C@t{++} functions, set breakpoint in 3605When debugging C@t{++} programs, @code{rbreak} is useful for setting 3606breakpoints on overloaded functions that are not members of any special 3607classes. 3608 3609@cindex set breakpoints on all functions 3610The @code{rbreak} command can be used to set breakpoints in 3611@strong{all} the functions in a program, like this: 3612 3613@smallexample 3614(@value{GDBP}) rbreak . 3615@end smallexample 3616 3617@item rbreak @var{file}:@var{regex} 3618If @code{rbreak} is called with a filename qualification, it limits 3619the search for functions matching the given regular expression to the 3620specified @var{file}. This can be used, for example, to set breakpoints on 3621every function in a given file: 3622 3623@smallexample 3624(@value{GDBP}) rbreak file.c:. 3625@end smallexample 3626 3627The colon separating the filename qualifier from the regex may 3628optionally be surrounded by spaces. 3629 3630@kindex info breakpoints 3631@cindex @code{$_} and @code{info breakpoints} 3632@item info breakpoints @r{[}@var{n}@dots{}@r{]} 3633@itemx info break @r{[}@var{n}@dots{}@r{]} 3634Print a table of all breakpoints, watchpoints, and catchpoints set and 3635not deleted. Optional argument @var{n} means print information only 3636about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)). 3637For each breakpoint, following columns are printed: 3638 3639@table @emph 3640@item Breakpoint Numbers 3641@item Type 3642Breakpoint, watchpoint, or catchpoint. 3643@item Disposition 3644Whether the breakpoint is marked to be disabled or deleted when hit. 3645@item Enabled or Disabled 3646Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints 3647that are not enabled. 3648@item Address 3649Where the breakpoint is in your program, as a memory address. For a 3650pending breakpoint whose address is not yet known, this field will 3651contain @samp{<PENDING>}. Such breakpoint won't fire until a shared 3652library that has the symbol or line referred by breakpoint is loaded. 3653See below for details. A breakpoint with several locations will 3654have @samp{<MULTIPLE>} in this field---see below for details. 3655@item What 3656Where the breakpoint is in the source for your program, as a file and 3657line number. For a pending breakpoint, the original string passed to 3658the breakpoint command will be listed as it cannot be resolved until 3659the appropriate shared library is loaded in the future. 3660@end table 3661 3662@noindent 3663If a breakpoint is conditional, there are two evaluation modes: ``host'' and 3664``target''. If mode is ``host'', breakpoint condition evaluation is done by 3665@value{GDBN} on the host's side. If it is ``target'', then the condition 3666is evaluated by the target. The @code{info break} command shows 3667the condition on the line following the affected breakpoint, together with 3668its condition evaluation mode in between parentheses. 3669 3670Breakpoint commands, if any, are listed after that. A pending breakpoint is 3671allowed to have a condition specified for it. The condition is not parsed for 3672validity until a shared library is loaded that allows the pending 3673breakpoint to resolve to a valid location. 3674 3675@noindent 3676@code{info break} with a breakpoint 3677number @var{n} as argument lists only that breakpoint. The 3678convenience variable @code{$_} and the default examining-address for 3679the @code{x} command are set to the address of the last breakpoint 3680listed (@pxref{Memory, ,Examining Memory}). 3681 3682@noindent 3683@code{info break} displays a count of the number of times the breakpoint 3684has been hit. This is especially useful in conjunction with the 3685@code{ignore} command. You can ignore a large number of breakpoint 3686hits, look at the breakpoint info to see how many times the breakpoint 3687was hit, and then run again, ignoring one less than that number. This 3688will get you quickly to the last hit of that breakpoint. 3689 3690@noindent 3691For a breakpoints with an enable count (xref) greater than 1, 3692@code{info break} also displays that count. 3693 3694@end table 3695 3696@value{GDBN} allows you to set any number of breakpoints at the same place in 3697your program. There is nothing silly or meaningless about this. When 3698the breakpoints are conditional, this is even useful 3699(@pxref{Conditions, ,Break Conditions}). 3700 3701@cindex multiple locations, breakpoints 3702@cindex breakpoints, multiple locations 3703It is possible that a breakpoint corresponds to several locations 3704in your program. Examples of this situation are: 3705 3706@itemize @bullet 3707@item 3708Multiple functions in the program may have the same name. 3709 3710@item 3711For a C@t{++} constructor, the @value{NGCC} compiler generates several 3712instances of the function body, used in different cases. 3713 3714@item 3715For a C@t{++} template function, a given line in the function can 3716correspond to any number of instantiations. 3717 3718@item 3719For an inlined function, a given source line can correspond to 3720several places where that function is inlined. 3721@end itemize 3722 3723In all those cases, @value{GDBN} will insert a breakpoint at all 3724the relevant locations. 3725 3726A breakpoint with multiple locations is displayed in the breakpoint 3727table using several rows---one header row, followed by one row for 3728each breakpoint location. The header row has @samp{<MULTIPLE>} in the 3729address column. The rows for individual locations contain the actual 3730addresses for locations, and show the functions to which those 3731locations belong. The number column for a location is of the form 3732@var{breakpoint-number}.@var{location-number}. 3733 3734For example: 3735 3736@smallexample 3737Num Type Disp Enb Address What 37381 breakpoint keep y <MULTIPLE> 3739 stop only if i==1 3740 breakpoint already hit 1 time 37411.1 y 0x080486a2 in void foo<int>() at t.cc:8 37421.2 y 0x080486ca in void foo<double>() at t.cc:8 3743@end smallexample 3744 3745Each location can be individually enabled or disabled by passing 3746@var{breakpoint-number}.@var{location-number} as argument to the 3747@code{enable} and @code{disable} commands. Note that you cannot 3748delete the individual locations from the list, you can only delete the 3749entire list of locations that belong to their parent breakpoint (with 3750the @kbd{delete @var{num}} command, where @var{num} is the number of 3751the parent breakpoint, 1 in the above example). Disabling or enabling 3752the parent breakpoint (@pxref{Disabling}) affects all of the locations 3753that belong to that breakpoint. 3754 3755@cindex pending breakpoints 3756It's quite common to have a breakpoint inside a shared library. 3757Shared libraries can be loaded and unloaded explicitly, 3758and possibly repeatedly, as the program is executed. To support 3759this use case, @value{GDBN} updates breakpoint locations whenever 3760any shared library is loaded or unloaded. Typically, you would 3761set a breakpoint in a shared library at the beginning of your 3762debugging session, when the library is not loaded, and when the 3763symbols from the library are not available. When you try to set 3764breakpoint, @value{GDBN} will ask you if you want to set 3765a so called @dfn{pending breakpoint}---breakpoint whose address 3766is not yet resolved. 3767 3768After the program is run, whenever a new shared library is loaded, 3769@value{GDBN} reevaluates all the breakpoints. When a newly loaded 3770shared library contains the symbol or line referred to by some 3771pending breakpoint, that breakpoint is resolved and becomes an 3772ordinary breakpoint. When a library is unloaded, all breakpoints 3773that refer to its symbols or source lines become pending again. 3774 3775This logic works for breakpoints with multiple locations, too. For 3776example, if you have a breakpoint in a C@t{++} template function, and 3777a newly loaded shared library has an instantiation of that template, 3778a new location is added to the list of locations for the breakpoint. 3779 3780Except for having unresolved address, pending breakpoints do not 3781differ from regular breakpoints. You can set conditions or commands, 3782enable and disable them and perform other breakpoint operations. 3783 3784@value{GDBN} provides some additional commands for controlling what 3785happens when the @samp{break} command cannot resolve breakpoint 3786address specification to an address: 3787 3788@kindex set breakpoint pending 3789@kindex show breakpoint pending 3790@table @code 3791@item set breakpoint pending auto 3792This is the default behavior. When @value{GDBN} cannot find the breakpoint 3793location, it queries you whether a pending breakpoint should be created. 3794 3795@item set breakpoint pending on 3796This indicates that an unrecognized breakpoint location should automatically 3797result in a pending breakpoint being created. 3798 3799@item set breakpoint pending off 3800This indicates that pending breakpoints are not to be created. Any 3801unrecognized breakpoint location results in an error. This setting does 3802not affect any pending breakpoints previously created. 3803 3804@item show breakpoint pending 3805Show the current behavior setting for creating pending breakpoints. 3806@end table 3807 3808The settings above only affect the @code{break} command and its 3809variants. Once breakpoint is set, it will be automatically updated 3810as shared libraries are loaded and unloaded. 3811 3812@cindex automatic hardware breakpoints 3813For some targets, @value{GDBN} can automatically decide if hardware or 3814software breakpoints should be used, depending on whether the 3815breakpoint address is read-only or read-write. This applies to 3816breakpoints set with the @code{break} command as well as to internal 3817breakpoints set by commands like @code{next} and @code{finish}. For 3818breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware 3819breakpoints. 3820 3821You can control this automatic behaviour with the following commands:: 3822 3823@kindex set breakpoint auto-hw 3824@kindex show breakpoint auto-hw 3825@table @code 3826@item set breakpoint auto-hw on 3827This is the default behavior. When @value{GDBN} sets a breakpoint, it 3828will try to use the target memory map to decide if software or hardware 3829breakpoint must be used. 3830 3831@item set breakpoint auto-hw off 3832This indicates @value{GDBN} should not automatically select breakpoint 3833type. If the target provides a memory map, @value{GDBN} will warn when 3834trying to set software breakpoint at a read-only address. 3835@end table 3836 3837@value{GDBN} normally implements breakpoints by replacing the program code 3838at the breakpoint address with a special instruction, which, when 3839executed, given control to the debugger. By default, the program 3840code is so modified only when the program is resumed. As soon as 3841the program stops, @value{GDBN} restores the original instructions. This 3842behaviour guards against leaving breakpoints inserted in the 3843target should gdb abrubptly disconnect. However, with slow remote 3844targets, inserting and removing breakpoint can reduce the performance. 3845This behavior can be controlled with the following commands:: 3846 3847@kindex set breakpoint always-inserted 3848@kindex show breakpoint always-inserted 3849@table @code 3850@item set breakpoint always-inserted off 3851All breakpoints, including newly added by the user, are inserted in 3852the target only when the target is resumed. All breakpoints are 3853removed from the target when it stops. This is the default mode. 3854 3855@item set breakpoint always-inserted on 3856Causes all breakpoints to be inserted in the target at all times. If 3857the user adds a new breakpoint, or changes an existing breakpoint, the 3858breakpoints in the target are updated immediately. A breakpoint is 3859removed from the target only when breakpoint itself is deleted. 3860@end table 3861 3862@value{GDBN} handles conditional breakpoints by evaluating these conditions 3863when a breakpoint breaks. If the condition is true, then the process being 3864debugged stops, otherwise the process is resumed. 3865 3866If the target supports evaluating conditions on its end, @value{GDBN} may 3867download the breakpoint, together with its conditions, to it. 3868 3869This feature can be controlled via the following commands: 3870 3871@kindex set breakpoint condition-evaluation 3872@kindex show breakpoint condition-evaluation 3873@table @code 3874@item set breakpoint condition-evaluation host 3875This option commands @value{GDBN} to evaluate the breakpoint 3876conditions on the host's side. Unconditional breakpoints are sent to 3877the target which in turn receives the triggers and reports them back to GDB 3878for condition evaluation. This is the standard evaluation mode. 3879 3880@item set breakpoint condition-evaluation target 3881This option commands @value{GDBN} to download breakpoint conditions 3882to the target at the moment of their insertion. The target 3883is responsible for evaluating the conditional expression and reporting 3884breakpoint stop events back to @value{GDBN} whenever the condition 3885is true. Due to limitations of target-side evaluation, some conditions 3886cannot be evaluated there, e.g., conditions that depend on local data 3887that is only known to the host. Examples include 3888conditional expressions involving convenience variables, complex types 3889that cannot be handled by the agent expression parser and expressions 3890that are too long to be sent over to the target, specially when the 3891target is a remote system. In these cases, the conditions will be 3892evaluated by @value{GDBN}. 3893 3894@item set breakpoint condition-evaluation auto 3895This is the default mode. If the target supports evaluating breakpoint 3896conditions on its end, @value{GDBN} will download breakpoint conditions to 3897the target (limitations mentioned previously apply). If the target does 3898not support breakpoint condition evaluation, then @value{GDBN} will fallback 3899to evaluating all these conditions on the host's side. 3900@end table 3901 3902 3903@cindex negative breakpoint numbers 3904@cindex internal @value{GDBN} breakpoints 3905@value{GDBN} itself sometimes sets breakpoints in your program for 3906special purposes, such as proper handling of @code{longjmp} (in C 3907programs). These internal breakpoints are assigned negative numbers, 3908starting with @code{-1}; @samp{info breakpoints} does not display them. 3909You can see these breakpoints with the @value{GDBN} maintenance command 3910@samp{maint info breakpoints} (@pxref{maint info breakpoints}). 3911 3912 3913@node Set Watchpoints 3914@subsection Setting Watchpoints 3915 3916@cindex setting watchpoints 3917You can use a watchpoint to stop execution whenever the value of an 3918expression changes, without having to predict a particular place where 3919this may happen. (This is sometimes called a @dfn{data breakpoint}.) 3920The expression may be as simple as the value of a single variable, or 3921as complex as many variables combined by operators. Examples include: 3922 3923@itemize @bullet 3924@item 3925A reference to the value of a single variable. 3926 3927@item 3928An address cast to an appropriate data type. For example, 3929@samp{*(int *)0x12345678} will watch a 4-byte region at the specified 3930address (assuming an @code{int} occupies 4 bytes). 3931 3932@item 3933An arbitrarily complex expression, such as @samp{a*b + c/d}. The 3934expression can use any operators valid in the program's native 3935language (@pxref{Languages}). 3936@end itemize 3937 3938You can set a watchpoint on an expression even if the expression can 3939not be evaluated yet. For instance, you can set a watchpoint on 3940@samp{*global_ptr} before @samp{global_ptr} is initialized. 3941@value{GDBN} will stop when your program sets @samp{global_ptr} and 3942the expression produces a valid value. If the expression becomes 3943valid in some other way than changing a variable (e.g.@: if the memory 3944pointed to by @samp{*global_ptr} becomes readable as the result of a 3945@code{malloc} call), @value{GDBN} may not stop until the next time 3946the expression changes. 3947 3948@cindex software watchpoints 3949@cindex hardware watchpoints 3950Depending on your system, watchpoints may be implemented in software or 3951hardware. @value{GDBN} does software watchpointing by single-stepping your 3952program and testing the variable's value each time, which is hundreds of 3953times slower than normal execution. (But this may still be worth it, to 3954catch errors where you have no clue what part of your program is the 3955culprit.) 3956 3957On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other 3958x86-based targets, @value{GDBN} includes support for hardware 3959watchpoints, which do not slow down the running of your program. 3960 3961@table @code 3962@kindex watch 3963@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]} 3964Set a watchpoint for an expression. @value{GDBN} will break when the 3965expression @var{expr} is written into by the program and its value 3966changes. The simplest (and the most popular) use of this command is 3967to watch the value of a single variable: 3968 3969@smallexample 3970(@value{GDBP}) watch foo 3971@end smallexample 3972 3973If the command includes a @code{@r{[}thread @var{threadnum}@r{]}} 3974argument, @value{GDBN} breaks only when the thread identified by 3975@var{threadnum} changes the value of @var{expr}. If any other threads 3976change the value of @var{expr}, @value{GDBN} will not break. Note 3977that watchpoints restricted to a single thread in this way only work 3978with Hardware Watchpoints. 3979 3980Ordinarily a watchpoint respects the scope of variables in @var{expr} 3981(see below). The @code{-location} argument tells @value{GDBN} to 3982instead watch the memory referred to by @var{expr}. In this case, 3983@value{GDBN} will evaluate @var{expr}, take the address of the result, 3984and watch the memory at that address. The type of the result is used 3985to determine the size of the watched memory. If the expression's 3986result does not have an address, then @value{GDBN} will print an 3987error. 3988 3989The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation 3990of masked watchpoints, if the current architecture supports this 3991feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC 3992Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition 3993to an address to watch. The mask specifies that some bits of an address 3994(the bits which are reset in the mask) should be ignored when matching 3995the address accessed by the inferior against the watchpoint address. 3996Thus, a masked watchpoint watches many addresses simultaneously---those 3997addresses whose unmasked bits are identical to the unmasked bits in the 3998watchpoint address. The @code{mask} argument implies @code{-location}. 3999Examples: 4000 4001@smallexample 4002(@value{GDBP}) watch foo mask 0xffff00ff 4003(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00 4004@end smallexample 4005 4006@kindex rwatch 4007@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]} 4008Set a watchpoint that will break when the value of @var{expr} is read 4009by the program. 4010 4011@kindex awatch 4012@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]} 4013Set a watchpoint that will break when @var{expr} is either read from 4014or written into by the program. 4015 4016@kindex info watchpoints @r{[}@var{n}@dots{}@r{]} 4017@item info watchpoints @r{[}@var{n}@dots{}@r{]} 4018This command prints a list of watchpoints, using the same format as 4019@code{info break} (@pxref{Set Breaks}). 4020@end table 4021 4022If you watch for a change in a numerically entered address you need to 4023dereference it, as the address itself is just a constant number which will 4024never change. @value{GDBN} refuses to create a watchpoint that watches 4025a never-changing value: 4026 4027@smallexample 4028(@value{GDBP}) watch 0x600850 4029Cannot watch constant value 0x600850. 4030(@value{GDBP}) watch *(int *) 0x600850 4031Watchpoint 1: *(int *) 6293584 4032@end smallexample 4033 4034@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware 4035watchpoints execute very quickly, and the debugger reports a change in 4036value at the exact instruction where the change occurs. If @value{GDBN} 4037cannot set a hardware watchpoint, it sets a software watchpoint, which 4038executes more slowly and reports the change in value at the next 4039@emph{statement}, not the instruction, after the change occurs. 4040 4041@cindex use only software watchpoints 4042You can force @value{GDBN} to use only software watchpoints with the 4043@kbd{set can-use-hw-watchpoints 0} command. With this variable set to 4044zero, @value{GDBN} will never try to use hardware watchpoints, even if 4045the underlying system supports them. (Note that hardware-assisted 4046watchpoints that were set @emph{before} setting 4047@code{can-use-hw-watchpoints} to zero will still use the hardware 4048mechanism of watching expression values.) 4049 4050@table @code 4051@item set can-use-hw-watchpoints 4052@kindex set can-use-hw-watchpoints 4053Set whether or not to use hardware watchpoints. 4054 4055@item show can-use-hw-watchpoints 4056@kindex show can-use-hw-watchpoints 4057Show the current mode of using hardware watchpoints. 4058@end table 4059 4060For remote targets, you can restrict the number of hardware 4061watchpoints @value{GDBN} will use, see @ref{set remote 4062hardware-breakpoint-limit}. 4063 4064When you issue the @code{watch} command, @value{GDBN} reports 4065 4066@smallexample 4067Hardware watchpoint @var{num}: @var{expr} 4068@end smallexample 4069 4070@noindent 4071if it was able to set a hardware watchpoint. 4072 4073Currently, the @code{awatch} and @code{rwatch} commands can only set 4074hardware watchpoints, because accesses to data that don't change the 4075value of the watched expression cannot be detected without examining 4076every instruction as it is being executed, and @value{GDBN} does not do 4077that currently. If @value{GDBN} finds that it is unable to set a 4078hardware breakpoint with the @code{awatch} or @code{rwatch} command, it 4079will print a message like this: 4080 4081@smallexample 4082Expression cannot be implemented with read/access watchpoint. 4083@end smallexample 4084 4085Sometimes, @value{GDBN} cannot set a hardware watchpoint because the 4086data type of the watched expression is wider than what a hardware 4087watchpoint on the target machine can handle. For example, some systems 4088can only watch regions that are up to 4 bytes wide; on such systems you 4089cannot set hardware watchpoints for an expression that yields a 4090double-precision floating-point number (which is typically 8 bytes 4091wide). As a work-around, it might be possible to break the large region 4092into a series of smaller ones and watch them with separate watchpoints. 4093 4094If you set too many hardware watchpoints, @value{GDBN} might be unable 4095to insert all of them when you resume the execution of your program. 4096Since the precise number of active watchpoints is unknown until such 4097time as the program is about to be resumed, @value{GDBN} might not be 4098able to warn you about this when you set the watchpoints, and the 4099warning will be printed only when the program is resumed: 4100 4101@smallexample 4102Hardware watchpoint @var{num}: Could not insert watchpoint 4103@end smallexample 4104 4105@noindent 4106If this happens, delete or disable some of the watchpoints. 4107 4108Watching complex expressions that reference many variables can also 4109exhaust the resources available for hardware-assisted watchpoints. 4110That's because @value{GDBN} needs to watch every variable in the 4111expression with separately allocated resources. 4112 4113If you call a function interactively using @code{print} or @code{call}, 4114any watchpoints you have set will be inactive until @value{GDBN} reaches another 4115kind of breakpoint or the call completes. 4116 4117@value{GDBN} automatically deletes watchpoints that watch local 4118(automatic) variables, or expressions that involve such variables, when 4119they go out of scope, that is, when the execution leaves the block in 4120which these variables were defined. In particular, when the program 4121being debugged terminates, @emph{all} local variables go out of scope, 4122and so only watchpoints that watch global variables remain set. If you 4123rerun the program, you will need to set all such watchpoints again. One 4124way of doing that would be to set a code breakpoint at the entry to the 4125@code{main} function and when it breaks, set all the watchpoints. 4126 4127@cindex watchpoints and threads 4128@cindex threads and watchpoints 4129In multi-threaded programs, watchpoints will detect changes to the 4130watched expression from every thread. 4131 4132@quotation 4133@emph{Warning:} In multi-threaded programs, software watchpoints 4134have only limited usefulness. If @value{GDBN} creates a software 4135watchpoint, it can only watch the value of an expression @emph{in a 4136single thread}. If you are confident that the expression can only 4137change due to the current thread's activity (and if you are also 4138confident that no other thread can become current), then you can use 4139software watchpoints as usual. However, @value{GDBN} may not notice 4140when a non-current thread's activity changes the expression. (Hardware 4141watchpoints, in contrast, watch an expression in all threads.) 4142@end quotation 4143 4144@xref{set remote hardware-watchpoint-limit}. 4145 4146@node Set Catchpoints 4147@subsection Setting Catchpoints 4148@cindex catchpoints, setting 4149@cindex exception handlers 4150@cindex event handling 4151 4152You can use @dfn{catchpoints} to cause the debugger to stop for certain 4153kinds of program events, such as C@t{++} exceptions or the loading of a 4154shared library. Use the @code{catch} command to set a catchpoint. 4155 4156@table @code 4157@kindex catch 4158@item catch @var{event} 4159Stop when @var{event} occurs. The @var{event} can be any of the following: 4160 4161@table @code 4162@item throw @r{[}@var{regexp}@r{]} 4163@itemx rethrow @r{[}@var{regexp}@r{]} 4164@itemx catch @r{[}@var{regexp}@r{]} 4165@kindex catch throw 4166@kindex catch rethrow 4167@kindex catch catch 4168@cindex stop on C@t{++} exceptions 4169The throwing, re-throwing, or catching of a C@t{++} exception. 4170 4171If @var{regexp} is given, then only exceptions whose type matches the 4172regular expression will be caught. 4173 4174@vindex $_exception@r{, convenience variable} 4175The convenience variable @code{$_exception} is available at an 4176exception-related catchpoint, on some systems. This holds the 4177exception being thrown. 4178 4179There are currently some limitations to C@t{++} exception handling in 4180@value{GDBN}: 4181 4182@itemize @bullet 4183@item 4184The support for these commands is system-dependent. Currently, only 4185systems using the @samp{gnu-v3} C@t{++} ABI (@pxref{ABI}) are 4186supported. 4187 4188@item 4189The regular expression feature and the @code{$_exception} convenience 4190variable rely on the presence of some SDT probes in @code{libstdc++}. 4191If these probes are not present, then these features cannot be used. 4192These probes were first available in the GCC 4.8 release, but whether 4193or not they are available in your GCC also depends on how it was 4194built. 4195 4196@item 4197The @code{$_exception} convenience variable is only valid at the 4198instruction at which an exception-related catchpoint is set. 4199 4200@item 4201When an exception-related catchpoint is hit, @value{GDBN} stops at a 4202location in the system library which implements runtime exception 4203support for C@t{++}, usually @code{libstdc++}. You can use @code{up} 4204(@pxref{Selection}) to get to your code. 4205 4206@item 4207If you call a function interactively, @value{GDBN} normally returns 4208control to you when the function has finished executing. If the call 4209raises an exception, however, the call may bypass the mechanism that 4210returns control to you and cause your program either to abort or to 4211simply continue running until it hits a breakpoint, catches a signal 4212that @value{GDBN} is listening for, or exits. This is the case even if 4213you set a catchpoint for the exception; catchpoints on exceptions are 4214disabled within interactive calls. @xref{Calling}, for information on 4215controlling this with @code{set unwind-on-terminating-exception}. 4216 4217@item 4218You cannot raise an exception interactively. 4219 4220@item 4221You cannot install an exception handler interactively. 4222@end itemize 4223 4224@item exception 4225@kindex catch exception 4226@cindex Ada exception catching 4227@cindex catch Ada exceptions 4228An Ada exception being raised. If an exception name is specified 4229at the end of the command (eg @code{catch exception Program_Error}), 4230the debugger will stop only when this specific exception is raised. 4231Otherwise, the debugger stops execution when any Ada exception is raised. 4232 4233When inserting an exception catchpoint on a user-defined exception whose 4234name is identical to one of the exceptions defined by the language, the 4235fully qualified name must be used as the exception name. Otherwise, 4236@value{GDBN} will assume that it should stop on the pre-defined exception 4237rather than the user-defined one. For instance, assuming an exception 4238called @code{Constraint_Error} is defined in package @code{Pck}, then 4239the command to use to catch such exceptions is @kbd{catch exception 4240Pck.Constraint_Error}. 4241 4242@item exception unhandled 4243@kindex catch exception unhandled 4244An exception that was raised but is not handled by the program. 4245 4246@item assert 4247@kindex catch assert 4248A failed Ada assertion. 4249 4250@item exec 4251@kindex catch exec 4252@cindex break on fork/exec 4253A call to @code{exec}. This is currently only available for HP-UX 4254and @sc{gnu}/Linux. 4255 4256@item syscall 4257@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{} 4258@kindex catch syscall 4259@cindex break on a system call. 4260A call to or return from a system call, a.k.a.@: @dfn{syscall}. A 4261syscall is a mechanism for application programs to request a service 4262from the operating system (OS) or one of the OS system services. 4263@value{GDBN} can catch some or all of the syscalls issued by the 4264debuggee, and show the related information for each syscall. If no 4265argument is specified, calls to and returns from all system calls 4266will be caught. 4267 4268@var{name} can be any system call name that is valid for the 4269underlying OS. Just what syscalls are valid depends on the OS. On 4270GNU and Unix systems, you can find the full list of valid syscall 4271names on @file{/usr/include/asm/unistd.h}. 4272 4273@c For MS-Windows, the syscall names and the corresponding numbers 4274@c can be found, e.g., on this URL: 4275@c http://www.metasploit.com/users/opcode/syscalls.html 4276@c but we don't support Windows syscalls yet. 4277 4278Normally, @value{GDBN} knows in advance which syscalls are valid for 4279each OS, so you can use the @value{GDBN} command-line completion 4280facilities (@pxref{Completion,, command completion}) to list the 4281available choices. 4282 4283You may also specify the system call numerically. A syscall's 4284number is the value passed to the OS's syscall dispatcher to 4285identify the requested service. When you specify the syscall by its 4286name, @value{GDBN} uses its database of syscalls to convert the name 4287into the corresponding numeric code, but using the number directly 4288may be useful if @value{GDBN}'s database does not have the complete 4289list of syscalls on your system (e.g., because @value{GDBN} lags 4290behind the OS upgrades). 4291 4292The example below illustrates how this command works if you don't provide 4293arguments to it: 4294 4295@smallexample 4296(@value{GDBP}) catch syscall 4297Catchpoint 1 (syscall) 4298(@value{GDBP}) r 4299Starting program: /tmp/catch-syscall 4300 4301Catchpoint 1 (call to syscall 'close'), \ 4302 0xffffe424 in __kernel_vsyscall () 4303(@value{GDBP}) c 4304Continuing. 4305 4306Catchpoint 1 (returned from syscall 'close'), \ 4307 0xffffe424 in __kernel_vsyscall () 4308(@value{GDBP}) 4309@end smallexample 4310 4311Here is an example of catching a system call by name: 4312 4313@smallexample 4314(@value{GDBP}) catch syscall chroot 4315Catchpoint 1 (syscall 'chroot' [61]) 4316(@value{GDBP}) r 4317Starting program: /tmp/catch-syscall 4318 4319Catchpoint 1 (call to syscall 'chroot'), \ 4320 0xffffe424 in __kernel_vsyscall () 4321(@value{GDBP}) c 4322Continuing. 4323 4324Catchpoint 1 (returned from syscall 'chroot'), \ 4325 0xffffe424 in __kernel_vsyscall () 4326(@value{GDBP}) 4327@end smallexample 4328 4329An example of specifying a system call numerically. In the case 4330below, the syscall number has a corresponding entry in the XML 4331file, so @value{GDBN} finds its name and prints it: 4332 4333@smallexample 4334(@value{GDBP}) catch syscall 252 4335Catchpoint 1 (syscall(s) 'exit_group') 4336(@value{GDBP}) r 4337Starting program: /tmp/catch-syscall 4338 4339Catchpoint 1 (call to syscall 'exit_group'), \ 4340 0xffffe424 in __kernel_vsyscall () 4341(@value{GDBP}) c 4342Continuing. 4343 4344Program exited normally. 4345(@value{GDBP}) 4346@end smallexample 4347 4348However, there can be situations when there is no corresponding name 4349in XML file for that syscall number. In this case, @value{GDBN} prints 4350a warning message saying that it was not able to find the syscall name, 4351but the catchpoint will be set anyway. See the example below: 4352 4353@smallexample 4354(@value{GDBP}) catch syscall 764 4355warning: The number '764' does not represent a known syscall. 4356Catchpoint 2 (syscall 764) 4357(@value{GDBP}) 4358@end smallexample 4359 4360If you configure @value{GDBN} using the @samp{--without-expat} option, 4361it will not be able to display syscall names. Also, if your 4362architecture does not have an XML file describing its system calls, 4363you will not be able to see the syscall names. It is important to 4364notice that these two features are used for accessing the syscall 4365name database. In either case, you will see a warning like this: 4366 4367@smallexample 4368(@value{GDBP}) catch syscall 4369warning: Could not open "syscalls/i386-linux.xml" 4370warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'. 4371GDB will not be able to display syscall names. 4372Catchpoint 1 (syscall) 4373(@value{GDBP}) 4374@end smallexample 4375 4376Of course, the file name will change depending on your architecture and system. 4377 4378Still using the example above, you can also try to catch a syscall by its 4379number. In this case, you would see something like: 4380 4381@smallexample 4382(@value{GDBP}) catch syscall 252 4383Catchpoint 1 (syscall(s) 252) 4384@end smallexample 4385 4386Again, in this case @value{GDBN} would not be able to display syscall's names. 4387 4388@item fork 4389@kindex catch fork 4390A call to @code{fork}. This is currently only available for HP-UX 4391and @sc{gnu}/Linux. 4392 4393@item vfork 4394@kindex catch vfork 4395A call to @code{vfork}. This is currently only available for HP-UX 4396and @sc{gnu}/Linux. 4397 4398@item load @r{[}regexp@r{]} 4399@itemx unload @r{[}regexp@r{]} 4400@kindex catch load 4401@kindex catch unload 4402The loading or unloading of a shared library. If @var{regexp} is 4403given, then the catchpoint will stop only if the regular expression 4404matches one of the affected libraries. 4405 4406@item signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 4407@kindex catch signal 4408The delivery of a signal. 4409 4410With no arguments, this catchpoint will catch any signal that is not 4411used internally by @value{GDBN}, specifically, all signals except 4412@samp{SIGTRAP} and @samp{SIGINT}. 4413 4414With the argument @samp{all}, all signals, including those used by 4415@value{GDBN}, will be caught. This argument cannot be used with other 4416signal names. 4417 4418Otherwise, the arguments are a list of signal names as given to 4419@code{handle} (@pxref{Signals}). Only signals specified in this list 4420will be caught. 4421 4422One reason that @code{catch signal} can be more useful than 4423@code{handle} is that you can attach commands and conditions to the 4424catchpoint. 4425 4426When a signal is caught by a catchpoint, the signal's @code{stop} and 4427@code{print} settings, as specified by @code{handle}, are ignored. 4428However, whether the signal is still delivered to the inferior depends 4429on the @code{pass} setting; this can be changed in the catchpoint's 4430commands. 4431 4432@end table 4433 4434@item tcatch @var{event} 4435@kindex tcatch 4436Set a catchpoint that is enabled only for one stop. The catchpoint is 4437automatically deleted after the first time the event is caught. 4438 4439@end table 4440 4441Use the @code{info break} command to list the current catchpoints. 4442 4443 4444@node Delete Breaks 4445@subsection Deleting Breakpoints 4446 4447@cindex clearing breakpoints, watchpoints, catchpoints 4448@cindex deleting breakpoints, watchpoints, catchpoints 4449It is often necessary to eliminate a breakpoint, watchpoint, or 4450catchpoint once it has done its job and you no longer want your program 4451to stop there. This is called @dfn{deleting} the breakpoint. A 4452breakpoint that has been deleted no longer exists; it is forgotten. 4453 4454With the @code{clear} command you can delete breakpoints according to 4455where they are in your program. With the @code{delete} command you can 4456delete individual breakpoints, watchpoints, or catchpoints by specifying 4457their breakpoint numbers. 4458 4459It is not necessary to delete a breakpoint to proceed past it. @value{GDBN} 4460automatically ignores breakpoints on the first instruction to be executed 4461when you continue execution without changing the execution address. 4462 4463@table @code 4464@kindex clear 4465@item clear 4466Delete any breakpoints at the next instruction to be executed in the 4467selected stack frame (@pxref{Selection, ,Selecting a Frame}). When 4468the innermost frame is selected, this is a good way to delete a 4469breakpoint where your program just stopped. 4470 4471@item clear @var{location} 4472Delete any breakpoints set at the specified @var{location}. 4473@xref{Specify Location}, for the various forms of @var{location}; the 4474most useful ones are listed below: 4475 4476@table @code 4477@item clear @var{function} 4478@itemx clear @var{filename}:@var{function} 4479Delete any breakpoints set at entry to the named @var{function}. 4480 4481@item clear @var{linenum} 4482@itemx clear @var{filename}:@var{linenum} 4483Delete any breakpoints set at or within the code of the specified 4484@var{linenum} of the specified @var{filename}. 4485@end table 4486 4487@cindex delete breakpoints 4488@kindex delete 4489@kindex d @r{(@code{delete})} 4490@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]} 4491Delete the breakpoints, watchpoints, or catchpoints of the breakpoint 4492ranges specified as arguments. If no argument is specified, delete all 4493breakpoints (@value{GDBN} asks confirmation, unless you have @code{set 4494confirm off}). You can abbreviate this command as @code{d}. 4495@end table 4496 4497@node Disabling 4498@subsection Disabling Breakpoints 4499 4500@cindex enable/disable a breakpoint 4501Rather than deleting a breakpoint, watchpoint, or catchpoint, you might 4502prefer to @dfn{disable} it. This makes the breakpoint inoperative as if 4503it had been deleted, but remembers the information on the breakpoint so 4504that you can @dfn{enable} it again later. 4505 4506You disable and enable breakpoints, watchpoints, and catchpoints with 4507the @code{enable} and @code{disable} commands, optionally specifying 4508one or more breakpoint numbers as arguments. Use @code{info break} to 4509print a list of all breakpoints, watchpoints, and catchpoints if you 4510do not know which numbers to use. 4511 4512Disabling and enabling a breakpoint that has multiple locations 4513affects all of its locations. 4514 4515A breakpoint, watchpoint, or catchpoint can have any of several 4516different states of enablement: 4517 4518@itemize @bullet 4519@item 4520Enabled. The breakpoint stops your program. A breakpoint set 4521with the @code{break} command starts out in this state. 4522@item 4523Disabled. The breakpoint has no effect on your program. 4524@item 4525Enabled once. The breakpoint stops your program, but then becomes 4526disabled. 4527@item 4528Enabled for a count. The breakpoint stops your program for the next 4529N times, then becomes disabled. 4530@item 4531Enabled for deletion. The breakpoint stops your program, but 4532immediately after it does so it is deleted permanently. A breakpoint 4533set with the @code{tbreak} command starts out in this state. 4534@end itemize 4535 4536You can use the following commands to enable or disable breakpoints, 4537watchpoints, and catchpoints: 4538 4539@table @code 4540@kindex disable 4541@kindex dis @r{(@code{disable})} 4542@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]} 4543Disable the specified breakpoints---or all breakpoints, if none are 4544listed. A disabled breakpoint has no effect but is not forgotten. All 4545options such as ignore-counts, conditions and commands are remembered in 4546case the breakpoint is enabled again later. You may abbreviate 4547@code{disable} as @code{dis}. 4548 4549@kindex enable 4550@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]} 4551Enable the specified breakpoints (or all defined breakpoints). They 4552become effective once again in stopping your program. 4553 4554@item enable @r{[}breakpoints@r{]} once @var{range}@dots{} 4555Enable the specified breakpoints temporarily. @value{GDBN} disables any 4556of these breakpoints immediately after stopping your program. 4557 4558@item enable @r{[}breakpoints@r{]} count @var{count} @var{range}@dots{} 4559Enable the specified breakpoints temporarily. @value{GDBN} records 4560@var{count} with each of the specified breakpoints, and decrements a 4561breakpoint's count when it is hit. When any count reaches 0, 4562@value{GDBN} disables that breakpoint. If a breakpoint has an ignore 4563count (@pxref{Conditions, ,Break Conditions}), that will be 4564decremented to 0 before @var{count} is affected. 4565 4566@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{} 4567Enable the specified breakpoints to work once, then die. @value{GDBN} 4568deletes any of these breakpoints as soon as your program stops there. 4569Breakpoints set by the @code{tbreak} command start out in this state. 4570@end table 4571 4572@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is 4573@c confusing: tbreak is also initially enabled. 4574Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks, 4575,Setting Breakpoints}), breakpoints that you set are initially enabled; 4576subsequently, they become disabled or enabled only when you use one of 4577the commands above. (The command @code{until} can set and delete a 4578breakpoint of its own, but it does not change the state of your other 4579breakpoints; see @ref{Continuing and Stepping, ,Continuing and 4580Stepping}.) 4581 4582@node Conditions 4583@subsection Break Conditions 4584@cindex conditional breakpoints 4585@cindex breakpoint conditions 4586 4587@c FIXME what is scope of break condition expr? Context where wanted? 4588@c in particular for a watchpoint? 4589The simplest sort of breakpoint breaks every time your program reaches a 4590specified place. You can also specify a @dfn{condition} for a 4591breakpoint. A condition is just a Boolean expression in your 4592programming language (@pxref{Expressions, ,Expressions}). A breakpoint with 4593a condition evaluates the expression each time your program reaches it, 4594and your program stops only if the condition is @emph{true}. 4595 4596This is the converse of using assertions for program validation; in that 4597situation, you want to stop when the assertion is violated---that is, 4598when the condition is false. In C, if you want to test an assertion expressed 4599by the condition @var{assert}, you should set the condition 4600@samp{! @var{assert}} on the appropriate breakpoint. 4601 4602Conditions are also accepted for watchpoints; you may not need them, 4603since a watchpoint is inspecting the value of an expression anyhow---but 4604it might be simpler, say, to just set a watchpoint on a variable name, 4605and specify a condition that tests whether the new value is an interesting 4606one. 4607 4608Break conditions can have side effects, and may even call functions in 4609your program. This can be useful, for example, to activate functions 4610that log program progress, or to use your own print functions to 4611format special data structures. The effects are completely predictable 4612unless there is another enabled breakpoint at the same address. (In 4613that case, @value{GDBN} might see the other breakpoint first and stop your 4614program without checking the condition of this one.) Note that 4615breakpoint commands are usually more convenient and flexible than break 4616conditions for the 4617purpose of performing side effects when a breakpoint is reached 4618(@pxref{Break Commands, ,Breakpoint Command Lists}). 4619 4620Breakpoint conditions can also be evaluated on the target's side if 4621the target supports it. Instead of evaluating the conditions locally, 4622@value{GDBN} encodes the expression into an agent expression 4623(@pxref{Agent Expressions}) suitable for execution on the target, 4624independently of @value{GDBN}. Global variables become raw memory 4625locations, locals become stack accesses, and so forth. 4626 4627In this case, @value{GDBN} will only be notified of a breakpoint trigger 4628when its condition evaluates to true. This mechanism may provide faster 4629response times depending on the performance characteristics of the target 4630since it does not need to keep @value{GDBN} informed about 4631every breakpoint trigger, even those with false conditions. 4632 4633Break conditions can be specified when a breakpoint is set, by using 4634@samp{if} in the arguments to the @code{break} command. @xref{Set 4635Breaks, ,Setting Breakpoints}. They can also be changed at any time 4636with the @code{condition} command. 4637 4638You can also use the @code{if} keyword with the @code{watch} command. 4639The @code{catch} command does not recognize the @code{if} keyword; 4640@code{condition} is the only way to impose a further condition on a 4641catchpoint. 4642 4643@table @code 4644@kindex condition 4645@item condition @var{bnum} @var{expression} 4646Specify @var{expression} as the break condition for breakpoint, 4647watchpoint, or catchpoint number @var{bnum}. After you set a condition, 4648breakpoint @var{bnum} stops your program only if the value of 4649@var{expression} is true (nonzero, in C). When you use 4650@code{condition}, @value{GDBN} checks @var{expression} immediately for 4651syntactic correctness, and to determine whether symbols in it have 4652referents in the context of your breakpoint. If @var{expression} uses 4653symbols not referenced in the context of the breakpoint, @value{GDBN} 4654prints an error message: 4655 4656@smallexample 4657No symbol "foo" in current context. 4658@end smallexample 4659 4660@noindent 4661@value{GDBN} does 4662not actually evaluate @var{expression} at the time the @code{condition} 4663command (or a command that sets a breakpoint with a condition, like 4664@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}. 4665 4666@item condition @var{bnum} 4667Remove the condition from breakpoint number @var{bnum}. It becomes 4668an ordinary unconditional breakpoint. 4669@end table 4670 4671@cindex ignore count (of breakpoint) 4672A special case of a breakpoint condition is to stop only when the 4673breakpoint has been reached a certain number of times. This is so 4674useful that there is a special way to do it, using the @dfn{ignore 4675count} of the breakpoint. Every breakpoint has an ignore count, which 4676is an integer. Most of the time, the ignore count is zero, and 4677therefore has no effect. But if your program reaches a breakpoint whose 4678ignore count is positive, then instead of stopping, it just decrements 4679the ignore count by one and continues. As a result, if the ignore count 4680value is @var{n}, the breakpoint does not stop the next @var{n} times 4681your program reaches it. 4682 4683@table @code 4684@kindex ignore 4685@item ignore @var{bnum} @var{count} 4686Set the ignore count of breakpoint number @var{bnum} to @var{count}. 4687The next @var{count} times the breakpoint is reached, your program's 4688execution does not stop; other than to decrement the ignore count, @value{GDBN} 4689takes no action. 4690 4691To make the breakpoint stop the next time it is reached, specify 4692a count of zero. 4693 4694When you use @code{continue} to resume execution of your program from a 4695breakpoint, you can specify an ignore count directly as an argument to 4696@code{continue}, rather than using @code{ignore}. @xref{Continuing and 4697Stepping,,Continuing and Stepping}. 4698 4699If a breakpoint has a positive ignore count and a condition, the 4700condition is not checked. Once the ignore count reaches zero, 4701@value{GDBN} resumes checking the condition. 4702 4703You could achieve the effect of the ignore count with a condition such 4704as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that 4705is decremented each time. @xref{Convenience Vars, ,Convenience 4706Variables}. 4707@end table 4708 4709Ignore counts apply to breakpoints, watchpoints, and catchpoints. 4710 4711 4712@node Break Commands 4713@subsection Breakpoint Command Lists 4714 4715@cindex breakpoint commands 4716You can give any breakpoint (or watchpoint or catchpoint) a series of 4717commands to execute when your program stops due to that breakpoint. For 4718example, you might want to print the values of certain expressions, or 4719enable other breakpoints. 4720 4721@table @code 4722@kindex commands 4723@kindex end@r{ (breakpoint commands)} 4724@item commands @r{[}@var{range}@dots{}@r{]} 4725@itemx @dots{} @var{command-list} @dots{} 4726@itemx end 4727Specify a list of commands for the given breakpoints. The commands 4728themselves appear on the following lines. Type a line containing just 4729@code{end} to terminate the commands. 4730 4731To remove all commands from a breakpoint, type @code{commands} and 4732follow it immediately with @code{end}; that is, give no commands. 4733 4734With no argument, @code{commands} refers to the last breakpoint, 4735watchpoint, or catchpoint set (not to the breakpoint most recently 4736encountered). If the most recent breakpoints were set with a single 4737command, then the @code{commands} will apply to all the breakpoints 4738set by that command. This applies to breakpoints set by 4739@code{rbreak}, and also applies when a single @code{break} command 4740creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous 4741Expressions}). 4742@end table 4743 4744Pressing @key{RET} as a means of repeating the last @value{GDBN} command is 4745disabled within a @var{command-list}. 4746 4747You can use breakpoint commands to start your program up again. Simply 4748use the @code{continue} command, or @code{step}, or any other command 4749that resumes execution. 4750 4751Any other commands in the command list, after a command that resumes 4752execution, are ignored. This is because any time you resume execution 4753(even with a simple @code{next} or @code{step}), you may encounter 4754another breakpoint---which could have its own command list, leading to 4755ambiguities about which list to execute. 4756 4757@kindex silent 4758If the first command you specify in a command list is @code{silent}, the 4759usual message about stopping at a breakpoint is not printed. This may 4760be desirable for breakpoints that are to print a specific message and 4761then continue. If none of the remaining commands print anything, you 4762see no sign that the breakpoint was reached. @code{silent} is 4763meaningful only at the beginning of a breakpoint command list. 4764 4765The commands @code{echo}, @code{output}, and @code{printf} allow you to 4766print precisely controlled output, and are often useful in silent 4767breakpoints. @xref{Output, ,Commands for Controlled Output}. 4768 4769For example, here is how you could use breakpoint commands to print the 4770value of @code{x} at entry to @code{foo} whenever @code{x} is positive. 4771 4772@smallexample 4773break foo if x>0 4774commands 4775silent 4776printf "x is %d\n",x 4777cont 4778end 4779@end smallexample 4780 4781One application for breakpoint commands is to compensate for one bug so 4782you can test for another. Put a breakpoint just after the erroneous line 4783of code, give it a condition to detect the case in which something 4784erroneous has been done, and give it commands to assign correct values 4785to any variables that need them. End with the @code{continue} command 4786so that your program does not stop, and start with the @code{silent} 4787command so that no output is produced. Here is an example: 4788 4789@smallexample 4790break 403 4791commands 4792silent 4793set x = y + 4 4794cont 4795end 4796@end smallexample 4797 4798@node Dynamic Printf 4799@subsection Dynamic Printf 4800 4801@cindex dynamic printf 4802@cindex dprintf 4803The dynamic printf command @code{dprintf} combines a breakpoint with 4804formatted printing of your program's data to give you the effect of 4805inserting @code{printf} calls into your program on-the-fly, without 4806having to recompile it. 4807 4808In its most basic form, the output goes to the GDB console. However, 4809you can set the variable @code{dprintf-style} for alternate handling. 4810For instance, you can ask to format the output by calling your 4811program's @code{printf} function. This has the advantage that the 4812characters go to the program's output device, so they can recorded in 4813redirects to files and so forth. 4814 4815If you are doing remote debugging with a stub or agent, you can also 4816ask to have the printf handled by the remote agent. In addition to 4817ensuring that the output goes to the remote program's device along 4818with any other output the program might produce, you can also ask that 4819the dprintf remain active even after disconnecting from the remote 4820target. Using the stub/agent is also more efficient, as it can do 4821everything without needing to communicate with @value{GDBN}. 4822 4823@table @code 4824@kindex dprintf 4825@item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}] 4826Whenever execution reaches @var{location}, print the values of one or 4827more @var{expressions} under the control of the string @var{template}. 4828To print several values, separate them with commas. 4829 4830@item set dprintf-style @var{style} 4831Set the dprintf output to be handled in one of several different 4832styles enumerated below. A change of style affects all existing 4833dynamic printfs immediately. (If you need individual control over the 4834print commands, simply define normal breakpoints with 4835explicitly-supplied command lists.) 4836 4837@item gdb 4838@kindex dprintf-style gdb 4839Handle the output using the @value{GDBN} @code{printf} command. 4840 4841@item call 4842@kindex dprintf-style call 4843Handle the output by calling a function in your program (normally 4844@code{printf}). 4845 4846@item agent 4847@kindex dprintf-style agent 4848Have the remote debugging agent (such as @code{gdbserver}) handle 4849the output itself. This style is only available for agents that 4850support running commands on the target. 4851 4852@item set dprintf-function @var{function} 4853Set the function to call if the dprintf style is @code{call}. By 4854default its value is @code{printf}. You may set it to any expression. 4855that @value{GDBN} can evaluate to a function, as per the @code{call} 4856command. 4857 4858@item set dprintf-channel @var{channel} 4859Set a ``channel'' for dprintf. If set to a non-empty value, 4860@value{GDBN} will evaluate it as an expression and pass the result as 4861a first argument to the @code{dprintf-function}, in the manner of 4862@code{fprintf} and similar functions. Otherwise, the dprintf format 4863string will be the first argument, in the manner of @code{printf}. 4864 4865As an example, if you wanted @code{dprintf} output to go to a logfile 4866that is a standard I/O stream assigned to the variable @code{mylog}, 4867you could do the following: 4868 4869@example 4870(gdb) set dprintf-style call 4871(gdb) set dprintf-function fprintf 4872(gdb) set dprintf-channel mylog 4873(gdb) dprintf 25,"at line 25, glob=%d\n",glob 4874Dprintf 1 at 0x123456: file main.c, line 25. 4875(gdb) info break 48761 dprintf keep y 0x00123456 in main at main.c:25 4877 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob) 4878 continue 4879(gdb) 4880@end example 4881 4882Note that the @code{info break} displays the dynamic printf commands 4883as normal breakpoint commands; you can thus easily see the effect of 4884the variable settings. 4885 4886@item set disconnected-dprintf on 4887@itemx set disconnected-dprintf off 4888@kindex set disconnected-dprintf 4889Choose whether @code{dprintf} commands should continue to run if 4890@value{GDBN} has disconnected from the target. This only applies 4891if the @code{dprintf-style} is @code{agent}. 4892 4893@item show disconnected-dprintf off 4894@kindex show disconnected-dprintf 4895Show the current choice for disconnected @code{dprintf}. 4896 4897@end table 4898 4899@value{GDBN} does not check the validity of function and channel, 4900relying on you to supply values that are meaningful for the contexts 4901in which they are being used. For instance, the function and channel 4902may be the values of local variables, but if that is the case, then 4903all enabled dynamic prints must be at locations within the scope of 4904those locals. If evaluation fails, @value{GDBN} will report an error. 4905 4906@node Save Breakpoints 4907@subsection How to save breakpoints to a file 4908 4909To save breakpoint definitions to a file use the @w{@code{save 4910breakpoints}} command. 4911 4912@table @code 4913@kindex save breakpoints 4914@cindex save breakpoints to a file for future sessions 4915@item save breakpoints [@var{filename}] 4916This command saves all current breakpoint definitions together with 4917their commands and ignore counts, into a file @file{@var{filename}} 4918suitable for use in a later debugging session. This includes all 4919types of breakpoints (breakpoints, watchpoints, catchpoints, 4920tracepoints). To read the saved breakpoint definitions, use the 4921@code{source} command (@pxref{Command Files}). Note that watchpoints 4922with expressions involving local variables may fail to be recreated 4923because it may not be possible to access the context where the 4924watchpoint is valid anymore. Because the saved breakpoint definitions 4925are simply a sequence of @value{GDBN} commands that recreate the 4926breakpoints, you can edit the file in your favorite editing program, 4927and remove the breakpoint definitions you're not interested in, or 4928that can no longer be recreated. 4929@end table 4930 4931@node Static Probe Points 4932@subsection Static Probe Points 4933 4934@cindex static probe point, SystemTap 4935@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands 4936for Statically Defined Tracing, and the probes are designed to have a tiny 4937runtime code and data footprint, and no dynamic relocations. They are 4938usable from assembly, C and C@t{++} languages. See 4939@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation} 4940for a good reference on how the @acronym{SDT} probes are implemented. 4941 4942Currently, @code{SystemTap} (@uref{http://sourceware.org/systemtap/}) 4943@acronym{SDT} probes are supported on ELF-compatible systems. See 4944@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps} 4945for more information on how to add @code{SystemTap} @acronym{SDT} probes 4946in your applications. 4947 4948@cindex semaphores on static probe points 4949Some probes have an associated semaphore variable; for instance, this 4950happens automatically if you defined your probe using a DTrace-style 4951@file{.d} file. If your probe has a semaphore, @value{GDBN} will 4952automatically enable it when you specify a breakpoint using the 4953@samp{-probe-stap} notation. But, if you put a breakpoint at a probe's 4954location by some other method (e.g., @code{break file:line}), then 4955@value{GDBN} will not automatically set the semaphore. 4956 4957You can examine the available static static probes using @code{info 4958probes}, with optional arguments: 4959 4960@table @code 4961@kindex info probes 4962@item info probes stap @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 4963If given, @var{provider} is a regular expression used to match against provider 4964names when selecting which probes to list. If omitted, probes by all 4965probes from all providers are listed. 4966 4967If given, @var{name} is a regular expression to match against probe names 4968when selecting which probes to list. If omitted, probe names are not 4969considered when deciding whether to display them. 4970 4971If given, @var{objfile} is a regular expression used to select which 4972object files (executable or shared libraries) to examine. If not 4973given, all object files are considered. 4974 4975@item info probes all 4976List the available static probes, from all types. 4977@end table 4978 4979@vindex $_probe_arg@r{, convenience variable} 4980A probe may specify up to twelve arguments. These are available at the 4981point at which the probe is defined---that is, when the current PC is 4982at the probe's location. The arguments are available using the 4983convenience variables (@pxref{Convenience Vars}) 4984@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. Each probe argument is 4985an integer of the appropriate size; types are not preserved. The 4986convenience variable @code{$_probe_argc} holds the number of arguments 4987at the current probe point. 4988 4989These variables are always available, but attempts to access them at 4990any location other than a probe point will cause @value{GDBN} to give 4991an error message. 4992 4993 4994@c @ifclear BARETARGET 4995@node Error in Breakpoints 4996@subsection ``Cannot insert breakpoints'' 4997 4998If you request too many active hardware-assisted breakpoints and 4999watchpoints, you will see this error message: 5000 5001@c FIXME: the precise wording of this message may change; the relevant 5002@c source change is not committed yet (Sep 3, 1999). 5003@smallexample 5004Stopped; cannot insert breakpoints. 5005You may have requested too many hardware breakpoints and watchpoints. 5006@end smallexample 5007 5008@noindent 5009This message is printed when you attempt to resume the program, since 5010only then @value{GDBN} knows exactly how many hardware breakpoints and 5011watchpoints it needs to insert. 5012 5013When this message is printed, you need to disable or remove some of the 5014hardware-assisted breakpoints and watchpoints, and then continue. 5015 5016@node Breakpoint-related Warnings 5017@subsection ``Breakpoint address adjusted...'' 5018@cindex breakpoint address adjusted 5019 5020Some processor architectures place constraints on the addresses at 5021which breakpoints may be placed. For architectures thus constrained, 5022@value{GDBN} will attempt to adjust the breakpoint's address to comply 5023with the constraints dictated by the architecture. 5024 5025One example of such an architecture is the Fujitsu FR-V. The FR-V is 5026a VLIW architecture in which a number of RISC-like instructions may be 5027bundled together for parallel execution. The FR-V architecture 5028constrains the location of a breakpoint instruction within such a 5029bundle to the instruction with the lowest address. @value{GDBN} 5030honors this constraint by adjusting a breakpoint's address to the 5031first in the bundle. 5032 5033It is not uncommon for optimized code to have bundles which contain 5034instructions from different source statements, thus it may happen that 5035a breakpoint's address will be adjusted from one source statement to 5036another. Since this adjustment may significantly alter @value{GDBN}'s 5037breakpoint related behavior from what the user expects, a warning is 5038printed when the breakpoint is first set and also when the breakpoint 5039is hit. 5040 5041A warning like the one below is printed when setting a breakpoint 5042that's been subject to address adjustment: 5043 5044@smallexample 5045warning: Breakpoint address adjusted from 0x00010414 to 0x00010410. 5046@end smallexample 5047 5048Such warnings are printed both for user settable and @value{GDBN}'s 5049internal breakpoints. If you see one of these warnings, you should 5050verify that a breakpoint set at the adjusted address will have the 5051desired affect. If not, the breakpoint in question may be removed and 5052other breakpoints may be set which will have the desired behavior. 5053E.g., it may be sufficient to place the breakpoint at a later 5054instruction. A conditional breakpoint may also be useful in some 5055cases to prevent the breakpoint from triggering too often. 5056 5057@value{GDBN} will also issue a warning when stopping at one of these 5058adjusted breakpoints: 5059 5060@smallexample 5061warning: Breakpoint 1 address previously adjusted from 0x00010414 5062to 0x00010410. 5063@end smallexample 5064 5065When this warning is encountered, it may be too late to take remedial 5066action except in cases where the breakpoint is hit earlier or more 5067frequently than expected. 5068 5069@node Continuing and Stepping 5070@section Continuing and Stepping 5071 5072@cindex stepping 5073@cindex continuing 5074@cindex resuming execution 5075@dfn{Continuing} means resuming program execution until your program 5076completes normally. In contrast, @dfn{stepping} means executing just 5077one more ``step'' of your program, where ``step'' may mean either one 5078line of source code, or one machine instruction (depending on what 5079particular command you use). Either when continuing or when stepping, 5080your program may stop even sooner, due to a breakpoint or a signal. (If 5081it stops due to a signal, you may want to use @code{handle}, or use 5082@samp{signal 0} to resume execution (@pxref{Signals, ,Signals}), 5083or you may step into the signal's handler (@pxref{stepping and signal 5084handlers}).) 5085 5086@table @code 5087@kindex continue 5088@kindex c @r{(@code{continue})} 5089@kindex fg @r{(resume foreground execution)} 5090@item continue @r{[}@var{ignore-count}@r{]} 5091@itemx c @r{[}@var{ignore-count}@r{]} 5092@itemx fg @r{[}@var{ignore-count}@r{]} 5093Resume program execution, at the address where your program last stopped; 5094any breakpoints set at that address are bypassed. The optional argument 5095@var{ignore-count} allows you to specify a further number of times to 5096ignore a breakpoint at this location; its effect is like that of 5097@code{ignore} (@pxref{Conditions, ,Break Conditions}). 5098 5099The argument @var{ignore-count} is meaningful only when your program 5100stopped due to a breakpoint. At other times, the argument to 5101@code{continue} is ignored. 5102 5103The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the 5104debugged program is deemed to be the foreground program) are provided 5105purely for convenience, and have exactly the same behavior as 5106@code{continue}. 5107@end table 5108 5109To resume execution at a different place, you can use @code{return} 5110(@pxref{Returning, ,Returning from a Function}) to go back to the 5111calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a 5112Different Address}) to go to an arbitrary location in your program. 5113 5114A typical technique for using stepping is to set a breakpoint 5115(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the 5116beginning of the function or the section of your program where a problem 5117is believed to lie, run your program until it stops at that breakpoint, 5118and then step through the suspect area, examining the variables that are 5119interesting, until you see the problem happen. 5120 5121@table @code 5122@kindex step 5123@kindex s @r{(@code{step})} 5124@item step 5125Continue running your program until control reaches a different source 5126line, then stop it and return control to @value{GDBN}. This command is 5127abbreviated @code{s}. 5128 5129@quotation 5130@c "without debugging information" is imprecise; actually "without line 5131@c numbers in the debugging information". (gcc -g1 has debugging info but 5132@c not line numbers). But it seems complex to try to make that 5133@c distinction here. 5134@emph{Warning:} If you use the @code{step} command while control is 5135within a function that was compiled without debugging information, 5136execution proceeds until control reaches a function that does have 5137debugging information. Likewise, it will not step into a function which 5138is compiled without debugging information. To step through functions 5139without debugging information, use the @code{stepi} command, described 5140below. 5141@end quotation 5142 5143The @code{step} command only stops at the first instruction of a source 5144line. This prevents the multiple stops that could otherwise occur in 5145@code{switch} statements, @code{for} loops, etc. @code{step} continues 5146to stop if a function that has debugging information is called within 5147the line. In other words, @code{step} @emph{steps inside} any functions 5148called within the line. 5149 5150Also, the @code{step} command only enters a function if there is line 5151number information for the function. Otherwise it acts like the 5152@code{next} command. This avoids problems when using @code{cc -gl} 5153on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there 5154was any debugging information about the routine. 5155 5156@item step @var{count} 5157Continue running as in @code{step}, but do so @var{count} times. If a 5158breakpoint is reached, or a signal not related to stepping occurs before 5159@var{count} steps, stepping stops right away. 5160 5161@kindex next 5162@kindex n @r{(@code{next})} 5163@item next @r{[}@var{count}@r{]} 5164Continue to the next source line in the current (innermost) stack frame. 5165This is similar to @code{step}, but function calls that appear within 5166the line of code are executed without stopping. Execution stops when 5167control reaches a different line of code at the original stack level 5168that was executing when you gave the @code{next} command. This command 5169is abbreviated @code{n}. 5170 5171An argument @var{count} is a repeat count, as for @code{step}. 5172 5173 5174@c FIX ME!! Do we delete this, or is there a way it fits in with 5175@c the following paragraph? --- Vctoria 5176@c 5177@c @code{next} within a function that lacks debugging information acts like 5178@c @code{step}, but any function calls appearing within the code of the 5179@c function are executed without stopping. 5180 5181The @code{next} command only stops at the first instruction of a 5182source line. This prevents multiple stops that could otherwise occur in 5183@code{switch} statements, @code{for} loops, etc. 5184 5185@kindex set step-mode 5186@item set step-mode 5187@cindex functions without line info, and stepping 5188@cindex stepping into functions with no line info 5189@itemx set step-mode on 5190The @code{set step-mode on} command causes the @code{step} command to 5191stop at the first instruction of a function which contains no debug line 5192information rather than stepping over it. 5193 5194This is useful in cases where you may be interested in inspecting the 5195machine instructions of a function which has no symbolic info and do not 5196want @value{GDBN} to automatically skip over this function. 5197 5198@item set step-mode off 5199Causes the @code{step} command to step over any functions which contains no 5200debug information. This is the default. 5201 5202@item show step-mode 5203Show whether @value{GDBN} will stop in or step over functions without 5204source line debug information. 5205 5206@kindex finish 5207@kindex fin @r{(@code{finish})} 5208@item finish 5209Continue running until just after function in the selected stack frame 5210returns. Print the returned value (if any). This command can be 5211abbreviated as @code{fin}. 5212 5213Contrast this with the @code{return} command (@pxref{Returning, 5214,Returning from a Function}). 5215 5216@kindex until 5217@kindex u @r{(@code{until})} 5218@cindex run until specified location 5219@item until 5220@itemx u 5221Continue running until a source line past the current line, in the 5222current stack frame, is reached. This command is used to avoid single 5223stepping through a loop more than once. It is like the @code{next} 5224command, except that when @code{until} encounters a jump, it 5225automatically continues execution until the program counter is greater 5226than the address of the jump. 5227 5228This means that when you reach the end of a loop after single stepping 5229though it, @code{until} makes your program continue execution until it 5230exits the loop. In contrast, a @code{next} command at the end of a loop 5231simply steps back to the beginning of the loop, which forces you to step 5232through the next iteration. 5233 5234@code{until} always stops your program if it attempts to exit the current 5235stack frame. 5236 5237@code{until} may produce somewhat counterintuitive results if the order 5238of machine code does not match the order of the source lines. For 5239example, in the following excerpt from a debugging session, the @code{f} 5240(@code{frame}) command shows that execution is stopped at line 5241@code{206}; yet when we use @code{until}, we get to line @code{195}: 5242 5243@smallexample 5244(@value{GDBP}) f 5245#0 main (argc=4, argv=0xf7fffae8) at m4.c:206 5246206 expand_input(); 5247(@value{GDBP}) until 5248195 for ( ; argc > 0; NEXTARG) @{ 5249@end smallexample 5250 5251This happened because, for execution efficiency, the compiler had 5252generated code for the loop closure test at the end, rather than the 5253start, of the loop---even though the test in a C @code{for}-loop is 5254written before the body of the loop. The @code{until} command appeared 5255to step back to the beginning of the loop when it advanced to this 5256expression; however, it has not really gone to an earlier 5257statement---not in terms of the actual machine code. 5258 5259@code{until} with no argument works by means of single 5260instruction stepping, and hence is slower than @code{until} with an 5261argument. 5262 5263@item until @var{location} 5264@itemx u @var{location} 5265Continue running your program until either the specified @var{location} is 5266reached, or the current stack frame returns. The location is any of 5267the forms described in @ref{Specify Location}. 5268This form of the command uses temporary breakpoints, and 5269hence is quicker than @code{until} without an argument. The specified 5270location is actually reached only if it is in the current frame. This 5271implies that @code{until} can be used to skip over recursive function 5272invocations. For instance in the code below, if the current location is 5273line @code{96}, issuing @code{until 99} will execute the program up to 5274line @code{99} in the same invocation of factorial, i.e., after the inner 5275invocations have returned. 5276 5277@smallexample 527894 int factorial (int value) 527995 @{ 528096 if (value > 1) @{ 528197 value *= factorial (value - 1); 528298 @} 528399 return (value); 5284100 @} 5285@end smallexample 5286 5287 5288@kindex advance @var{location} 5289@item advance @var{location} 5290Continue running the program up to the given @var{location}. An argument is 5291required, which should be of one of the forms described in 5292@ref{Specify Location}. 5293Execution will also stop upon exit from the current stack 5294frame. This command is similar to @code{until}, but @code{advance} will 5295not skip over recursive function calls, and the target location doesn't 5296have to be in the same frame as the current one. 5297 5298 5299@kindex stepi 5300@kindex si @r{(@code{stepi})} 5301@item stepi 5302@itemx stepi @var{arg} 5303@itemx si 5304Execute one machine instruction, then stop and return to the debugger. 5305 5306It is often useful to do @samp{display/i $pc} when stepping by machine 5307instructions. This makes @value{GDBN} automatically display the next 5308instruction to be executed, each time your program stops. @xref{Auto 5309Display,, Automatic Display}. 5310 5311An argument is a repeat count, as in @code{step}. 5312 5313@need 750 5314@kindex nexti 5315@kindex ni @r{(@code{nexti})} 5316@item nexti 5317@itemx nexti @var{arg} 5318@itemx ni 5319Execute one machine instruction, but if it is a function call, 5320proceed until the function returns. 5321 5322An argument is a repeat count, as in @code{next}. 5323 5324@end table 5325 5326@anchor{range stepping} 5327@cindex range stepping 5328@cindex target-assisted range stepping 5329By default, and if available, @value{GDBN} makes use of 5330target-assisted @dfn{range stepping}. In other words, whenever you 5331use a stepping command (e.g., @code{step}, @code{next}), @value{GDBN} 5332tells the target to step the corresponding range of instruction 5333addresses instead of issuing multiple single-steps. This speeds up 5334line stepping, particularly for remote targets. Ideally, there should 5335be no reason you would want to turn range stepping off. However, it's 5336possible that a bug in the debug info, a bug in the remote stub (for 5337remote targets), or even a bug in @value{GDBN} could make line 5338stepping behave incorrectly when target-assisted range stepping is 5339enabled. You can use the following command to turn off range stepping 5340if necessary: 5341 5342@table @code 5343@kindex set range-stepping 5344@kindex show range-stepping 5345@item set range-stepping 5346@itemx show range-stepping 5347Control whether range stepping is enabled. 5348 5349If @code{on}, and the target supports it, @value{GDBN} tells the 5350target to step a range of addresses itself, instead of issuing 5351multiple single-steps. If @code{off}, @value{GDBN} always issues 5352single-steps, even if range stepping is supported by the target. The 5353default is @code{on}. 5354 5355@end table 5356 5357@node Skipping Over Functions and Files 5358@section Skipping Over Functions and Files 5359@cindex skipping over functions and files 5360 5361The program you are debugging may contain some functions which are 5362uninteresting to debug. The @code{skip} comand lets you tell @value{GDBN} to 5363skip a function or all functions in a file when stepping. 5364 5365For example, consider the following C function: 5366 5367@smallexample 5368101 int func() 5369102 @{ 5370103 foo(boring()); 5371104 bar(boring()); 5372105 @} 5373@end smallexample 5374 5375@noindent 5376Suppose you wish to step into the functions @code{foo} and @code{bar}, but you 5377are not interested in stepping through @code{boring}. If you run @code{step} 5378at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll 5379step over both @code{foo} and @code{boring}! 5380 5381One solution is to @code{step} into @code{boring} and use the @code{finish} 5382command to immediately exit it. But this can become tedious if @code{boring} 5383is called from many places. 5384 5385A more flexible solution is to execute @kbd{skip boring}. This instructs 5386@value{GDBN} never to step into @code{boring}. Now when you execute 5387@code{step} at line 103, you'll step over @code{boring} and directly into 5388@code{foo}. 5389 5390You can also instruct @value{GDBN} to skip all functions in a file, with, for 5391example, @code{skip file boring.c}. 5392 5393@table @code 5394@kindex skip function 5395@item skip @r{[}@var{linespec}@r{]} 5396@itemx skip function @r{[}@var{linespec}@r{]} 5397After running this command, the function named by @var{linespec} or the 5398function containing the line named by @var{linespec} will be skipped over when 5399stepping. @xref{Specify Location}. 5400 5401If you do not specify @var{linespec}, the function you're currently debugging 5402will be skipped. 5403 5404(If you have a function called @code{file} that you want to skip, use 5405@kbd{skip function file}.) 5406 5407@kindex skip file 5408@item skip file @r{[}@var{filename}@r{]} 5409After running this command, any function whose source lives in @var{filename} 5410will be skipped over when stepping. 5411 5412If you do not specify @var{filename}, functions whose source lives in the file 5413you're currently debugging will be skipped. 5414@end table 5415 5416Skips can be listed, deleted, disabled, and enabled, much like breakpoints. 5417These are the commands for managing your list of skips: 5418 5419@table @code 5420@kindex info skip 5421@item info skip @r{[}@var{range}@r{]} 5422Print details about the specified skip(s). If @var{range} is not specified, 5423print a table with details about all functions and files marked for skipping. 5424@code{info skip} prints the following information about each skip: 5425 5426@table @emph 5427@item Identifier 5428A number identifying this skip. 5429@item Type 5430The type of this skip, either @samp{function} or @samp{file}. 5431@item Enabled or Disabled 5432Enabled skips are marked with @samp{y}. Disabled skips are marked with @samp{n}. 5433@item Address 5434For function skips, this column indicates the address in memory of the function 5435being skipped. If you've set a function skip on a function which has not yet 5436been loaded, this field will contain @samp{<PENDING>}. Once a shared library 5437which has the function is loaded, @code{info skip} will show the function's 5438address here. 5439@item What 5440For file skips, this field contains the filename being skipped. For functions 5441skips, this field contains the function name and its line number in the file 5442where it is defined. 5443@end table 5444 5445@kindex skip delete 5446@item skip delete @r{[}@var{range}@r{]} 5447Delete the specified skip(s). If @var{range} is not specified, delete all 5448skips. 5449 5450@kindex skip enable 5451@item skip enable @r{[}@var{range}@r{]} 5452Enable the specified skip(s). If @var{range} is not specified, enable all 5453skips. 5454 5455@kindex skip disable 5456@item skip disable @r{[}@var{range}@r{]} 5457Disable the specified skip(s). If @var{range} is not specified, disable all 5458skips. 5459 5460@end table 5461 5462@node Signals 5463@section Signals 5464@cindex signals 5465 5466A signal is an asynchronous event that can happen in a program. The 5467operating system defines the possible kinds of signals, and gives each 5468kind a name and a number. For example, in Unix @code{SIGINT} is the 5469signal a program gets when you type an interrupt character (often @kbd{Ctrl-c}); 5470@code{SIGSEGV} is the signal a program gets from referencing a place in 5471memory far away from all the areas in use; @code{SIGALRM} occurs when 5472the alarm clock timer goes off (which happens only if your program has 5473requested an alarm). 5474 5475@cindex fatal signals 5476Some signals, including @code{SIGALRM}, are a normal part of the 5477functioning of your program. Others, such as @code{SIGSEGV}, indicate 5478errors; these signals are @dfn{fatal} (they kill your program immediately) if the 5479program has not specified in advance some other way to handle the signal. 5480@code{SIGINT} does not indicate an error in your program, but it is normally 5481fatal so it can carry out the purpose of the interrupt: to kill the program. 5482 5483@value{GDBN} has the ability to detect any occurrence of a signal in your 5484program. You can tell @value{GDBN} in advance what to do for each kind of 5485signal. 5486 5487@cindex handling signals 5488Normally, @value{GDBN} is set up to let the non-erroneous signals like 5489@code{SIGALRM} be silently passed to your program 5490(so as not to interfere with their role in the program's functioning) 5491but to stop your program immediately whenever an error signal happens. 5492You can change these settings with the @code{handle} command. 5493 5494@table @code 5495@kindex info signals 5496@kindex info handle 5497@item info signals 5498@itemx info handle 5499Print a table of all the kinds of signals and how @value{GDBN} has been told to 5500handle each one. You can use this to see the signal numbers of all 5501the defined types of signals. 5502 5503@item info signals @var{sig} 5504Similar, but print information only about the specified signal number. 5505 5506@code{info handle} is an alias for @code{info signals}. 5507 5508@item catch signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 5509Set a catchpoint for the indicated signals. @xref{Set Catchpoints}, 5510for details about this command. 5511 5512@kindex handle 5513@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]} 5514Change the way @value{GDBN} handles signal @var{signal}. The @var{signal} 5515can be the number of a signal or its name (with or without the 5516@samp{SIG} at the beginning); a list of signal numbers of the form 5517@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the 5518known signals. Optional arguments @var{keywords}, described below, 5519say what change to make. 5520@end table 5521 5522@c @group 5523The keywords allowed by the @code{handle} command can be abbreviated. 5524Their full names are: 5525 5526@table @code 5527@item nostop 5528@value{GDBN} should not stop your program when this signal happens. It may 5529still print a message telling you that the signal has come in. 5530 5531@item stop 5532@value{GDBN} should stop your program when this signal happens. This implies 5533the @code{print} keyword as well. 5534 5535@item print 5536@value{GDBN} should print a message when this signal happens. 5537 5538@item noprint 5539@value{GDBN} should not mention the occurrence of the signal at all. This 5540implies the @code{nostop} keyword as well. 5541 5542@item pass 5543@itemx noignore 5544@value{GDBN} should allow your program to see this signal; your program 5545can handle the signal, or else it may terminate if the signal is fatal 5546and not handled. @code{pass} and @code{noignore} are synonyms. 5547 5548@item nopass 5549@itemx ignore 5550@value{GDBN} should not allow your program to see this signal. 5551@code{nopass} and @code{ignore} are synonyms. 5552@end table 5553@c @end group 5554 5555When a signal stops your program, the signal is not visible to the 5556program until you 5557continue. Your program sees the signal then, if @code{pass} is in 5558effect for the signal in question @emph{at that time}. In other words, 5559after @value{GDBN} reports a signal, you can use the @code{handle} 5560command with @code{pass} or @code{nopass} to control whether your 5561program sees that signal when you continue. 5562 5563The default is set to @code{nostop}, @code{noprint}, @code{pass} for 5564non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and 5565@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the 5566erroneous signals. 5567 5568You can also use the @code{signal} command to prevent your program from 5569seeing a signal, or cause it to see a signal it normally would not see, 5570or to give it any signal at any time. For example, if your program stopped 5571due to some sort of memory reference error, you might store correct 5572values into the erroneous variables and continue, hoping to see more 5573execution; but your program would probably terminate immediately as 5574a result of the fatal signal once it saw the signal. To prevent this, 5575you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your 5576Program a Signal}. 5577 5578@cindex stepping and signal handlers 5579@anchor{stepping and signal handlers} 5580 5581@value{GDBN} optimizes for stepping the mainline code. If a signal 5582that has @code{handle nostop} and @code{handle pass} set arrives while 5583a stepping command (e.g., @code{stepi}, @code{step}, @code{next}) is 5584in progress, @value{GDBN} lets the signal handler run and then resumes 5585stepping the mainline code once the signal handler returns. In other 5586words, @value{GDBN} steps over the signal handler. This prevents 5587signals that you've specified as not interesting (with @code{handle 5588nostop}) from changing the focus of debugging unexpectedly. Note that 5589the signal handler itself may still hit a breakpoint, stop for another 5590signal that has @code{handle stop} in effect, or for any other event 5591that normally results in stopping the stepping command sooner. Also 5592note that @value{GDBN} still informs you that the program received a 5593signal if @code{handle print} is set. 5594 5595@anchor{stepping into signal handlers} 5596 5597If you set @code{handle pass} for a signal, and your program sets up a 5598handler for it, then issuing a stepping command, such as @code{step} 5599or @code{stepi}, when your program is stopped due to the signal will 5600step @emph{into} the signal handler (if the target supports that). 5601 5602Likewise, if you use the @code{queue-signal} command to queue a signal 5603to be delivered to the current thread when execution of the thread 5604resumes (@pxref{Signaling, ,Giving your Program a Signal}), then a 5605stepping command will step into the signal handler. 5606 5607Here's an example, using @code{stepi} to step to the first instruction 5608of @code{SIGUSR1}'s handler: 5609 5610@smallexample 5611(@value{GDBP}) handle SIGUSR1 5612Signal Stop Print Pass to program Description 5613SIGUSR1 Yes Yes Yes User defined signal 1 5614(@value{GDBP}) c 5615Continuing. 5616 5617Program received signal SIGUSR1, User defined signal 1. 5618main () sigusr1.c:28 561928 p = 0; 5620(@value{GDBP}) si 5621sigusr1_handler () at sigusr1.c:9 56229 @{ 5623@end smallexample 5624 5625The same, but using @code{queue-signal} instead of waiting for the 5626program to receive the signal first: 5627 5628@smallexample 5629(@value{GDBP}) n 563028 p = 0; 5631(@value{GDBP}) queue-signal SIGUSR1 5632(@value{GDBP}) si 5633sigusr1_handler () at sigusr1.c:9 56349 @{ 5635(@value{GDBP}) 5636@end smallexample 5637 5638@cindex extra signal information 5639@anchor{extra signal information} 5640 5641On some targets, @value{GDBN} can inspect extra signal information 5642associated with the intercepted signal, before it is actually 5643delivered to the program being debugged. This information is exported 5644by the convenience variable @code{$_siginfo}, and consists of data 5645that is passed by the kernel to the signal handler at the time of the 5646receipt of a signal. The data type of the information itself is 5647target dependent. You can see the data type using the @code{ptype 5648$_siginfo} command. On Unix systems, it typically corresponds to the 5649standard @code{siginfo_t} type, as defined in the @file{signal.h} 5650system header. 5651 5652Here's an example, on a @sc{gnu}/Linux system, printing the stray 5653referenced address that raised a segmentation fault. 5654 5655@smallexample 5656@group 5657(@value{GDBP}) continue 5658Program received signal SIGSEGV, Segmentation fault. 56590x0000000000400766 in main () 566069 *(int *)p = 0; 5661(@value{GDBP}) ptype $_siginfo 5662type = struct @{ 5663 int si_signo; 5664 int si_errno; 5665 int si_code; 5666 union @{ 5667 int _pad[28]; 5668 struct @{...@} _kill; 5669 struct @{...@} _timer; 5670 struct @{...@} _rt; 5671 struct @{...@} _sigchld; 5672 struct @{...@} _sigfault; 5673 struct @{...@} _sigpoll; 5674 @} _sifields; 5675@} 5676(@value{GDBP}) ptype $_siginfo._sifields._sigfault 5677type = struct @{ 5678 void *si_addr; 5679@} 5680(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr 5681$1 = (void *) 0x7ffff7ff7000 5682@end group 5683@end smallexample 5684 5685Depending on target support, @code{$_siginfo} may also be writable. 5686 5687@node Thread Stops 5688@section Stopping and Starting Multi-thread Programs 5689 5690@cindex stopped threads 5691@cindex threads, stopped 5692 5693@cindex continuing threads 5694@cindex threads, continuing 5695 5696@value{GDBN} supports debugging programs with multiple threads 5697(@pxref{Threads,, Debugging Programs with Multiple Threads}). There 5698are two modes of controlling execution of your program within the 5699debugger. In the default mode, referred to as @dfn{all-stop mode}, 5700when any thread in your program stops (for example, at a breakpoint 5701or while being stepped), all other threads in the program are also stopped by 5702@value{GDBN}. On some targets, @value{GDBN} also supports 5703@dfn{non-stop mode}, in which other threads can continue to run freely while 5704you examine the stopped thread in the debugger. 5705 5706@menu 5707* All-Stop Mode:: All threads stop when GDB takes control 5708* Non-Stop Mode:: Other threads continue to execute 5709* Background Execution:: Running your program asynchronously 5710* Thread-Specific Breakpoints:: Controlling breakpoints 5711* Interrupted System Calls:: GDB may interfere with system calls 5712* Observer Mode:: GDB does not alter program behavior 5713@end menu 5714 5715@node All-Stop Mode 5716@subsection All-Stop Mode 5717 5718@cindex all-stop mode 5719 5720In all-stop mode, whenever your program stops under @value{GDBN} for any reason, 5721@emph{all} threads of execution stop, not just the current thread. This 5722allows you to examine the overall state of the program, including 5723switching between threads, without worrying that things may change 5724underfoot. 5725 5726Conversely, whenever you restart the program, @emph{all} threads start 5727executing. @emph{This is true even when single-stepping} with commands 5728like @code{step} or @code{next}. 5729 5730In particular, @value{GDBN} cannot single-step all threads in lockstep. 5731Since thread scheduling is up to your debugging target's operating 5732system (not controlled by @value{GDBN}), other threads may 5733execute more than one statement while the current thread completes a 5734single step. Moreover, in general other threads stop in the middle of a 5735statement, rather than at a clean statement boundary, when the program 5736stops. 5737 5738You might even find your program stopped in another thread after 5739continuing or even single-stepping. This happens whenever some other 5740thread runs into a breakpoint, a signal, or an exception before the 5741first thread completes whatever you requested. 5742 5743@cindex automatic thread selection 5744@cindex switching threads automatically 5745@cindex threads, automatic switching 5746Whenever @value{GDBN} stops your program, due to a breakpoint or a 5747signal, it automatically selects the thread where that breakpoint or 5748signal happened. @value{GDBN} alerts you to the context switch with a 5749message such as @samp{[Switching to Thread @var{n}]} to identify the 5750thread. 5751 5752On some OSes, you can modify @value{GDBN}'s default behavior by 5753locking the OS scheduler to allow only a single thread to run. 5754 5755@table @code 5756@item set scheduler-locking @var{mode} 5757@cindex scheduler locking mode 5758@cindex lock scheduler 5759Set the scheduler locking mode. If it is @code{off}, then there is no 5760locking and any thread may run at any time. If @code{on}, then only the 5761current thread may run when the inferior is resumed. The @code{step} 5762mode optimizes for single-stepping; it prevents other threads 5763from preempting the current thread while you are stepping, so that 5764the focus of debugging does not change unexpectedly. 5765Other threads only rarely (or never) get a chance to run 5766when you step. They are more likely to run when you @samp{next} over a 5767function call, and they are completely free to run when you use commands 5768like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another 5769thread hits a breakpoint during its timeslice, @value{GDBN} does not change 5770the current thread away from the thread that you are debugging. 5771 5772@item show scheduler-locking 5773Display the current scheduler locking mode. 5774@end table 5775 5776@cindex resume threads of multiple processes simultaneously 5777By default, when you issue one of the execution commands such as 5778@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only 5779threads of the current inferior to run. For example, if @value{GDBN} 5780is attached to two inferiors, each with two threads, the 5781@code{continue} command resumes only the two threads of the current 5782inferior. This is useful, for example, when you debug a program that 5783forks and you want to hold the parent stopped (so that, for instance, 5784it doesn't run to exit), while you debug the child. In other 5785situations, you may not be interested in inspecting the current state 5786of any of the processes @value{GDBN} is attached to, and you may want 5787to resume them all until some breakpoint is hit. In the latter case, 5788you can instruct @value{GDBN} to allow all threads of all the 5789inferiors to run with the @w{@code{set schedule-multiple}} command. 5790 5791@table @code 5792@kindex set schedule-multiple 5793@item set schedule-multiple 5794Set the mode for allowing threads of multiple processes to be resumed 5795when an execution command is issued. When @code{on}, all threads of 5796all processes are allowed to run. When @code{off}, only the threads 5797of the current process are resumed. The default is @code{off}. The 5798@code{scheduler-locking} mode takes precedence when set to @code{on}, 5799or while you are stepping and set to @code{step}. 5800 5801@item show schedule-multiple 5802Display the current mode for resuming the execution of threads of 5803multiple processes. 5804@end table 5805 5806@node Non-Stop Mode 5807@subsection Non-Stop Mode 5808 5809@cindex non-stop mode 5810 5811@c This section is really only a place-holder, and needs to be expanded 5812@c with more details. 5813 5814For some multi-threaded targets, @value{GDBN} supports an optional 5815mode of operation in which you can examine stopped program threads in 5816the debugger while other threads continue to execute freely. This 5817minimizes intrusion when debugging live systems, such as programs 5818where some threads have real-time constraints or must continue to 5819respond to external events. This is referred to as @dfn{non-stop} mode. 5820 5821In non-stop mode, when a thread stops to report a debugging event, 5822@emph{only} that thread is stopped; @value{GDBN} does not stop other 5823threads as well, in contrast to the all-stop mode behavior. Additionally, 5824execution commands such as @code{continue} and @code{step} apply by default 5825only to the current thread in non-stop mode, rather than all threads as 5826in all-stop mode. This allows you to control threads explicitly in 5827ways that are not possible in all-stop mode --- for example, stepping 5828one thread while allowing others to run freely, stepping 5829one thread while holding all others stopped, or stepping several threads 5830independently and simultaneously. 5831 5832To enter non-stop mode, use this sequence of commands before you run 5833or attach to your program: 5834 5835@smallexample 5836# If using the CLI, pagination breaks non-stop. 5837set pagination off 5838 5839# Finally, turn it on! 5840set non-stop on 5841@end smallexample 5842 5843You can use these commands to manipulate the non-stop mode setting: 5844 5845@table @code 5846@kindex set non-stop 5847@item set non-stop on 5848Enable selection of non-stop mode. 5849@item set non-stop off 5850Disable selection of non-stop mode. 5851@kindex show non-stop 5852@item show non-stop 5853Show the current non-stop enablement setting. 5854@end table 5855 5856Note these commands only reflect whether non-stop mode is enabled, 5857not whether the currently-executing program is being run in non-stop mode. 5858In particular, the @code{set non-stop} preference is only consulted when 5859@value{GDBN} starts or connects to the target program, and it is generally 5860not possible to switch modes once debugging has started. Furthermore, 5861since not all targets support non-stop mode, even when you have enabled 5862non-stop mode, @value{GDBN} may still fall back to all-stop operation by 5863default. 5864 5865In non-stop mode, all execution commands apply only to the current thread 5866by default. That is, @code{continue} only continues one thread. 5867To continue all threads, issue @code{continue -a} or @code{c -a}. 5868 5869You can use @value{GDBN}'s background execution commands 5870(@pxref{Background Execution}) to run some threads in the background 5871while you continue to examine or step others from @value{GDBN}. 5872The MI execution commands (@pxref{GDB/MI Program Execution}) are 5873always executed asynchronously in non-stop mode. 5874 5875Suspending execution is done with the @code{interrupt} command when 5876running in the background, or @kbd{Ctrl-c} during foreground execution. 5877In all-stop mode, this stops the whole process; 5878but in non-stop mode the interrupt applies only to the current thread. 5879To stop the whole program, use @code{interrupt -a}. 5880 5881Other execution commands do not currently support the @code{-a} option. 5882 5883In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make 5884that thread current, as it does in all-stop mode. This is because the 5885thread stop notifications are asynchronous with respect to @value{GDBN}'s 5886command interpreter, and it would be confusing if @value{GDBN} unexpectedly 5887changed to a different thread just as you entered a command to operate on the 5888previously current thread. 5889 5890@node Background Execution 5891@subsection Background Execution 5892 5893@cindex foreground execution 5894@cindex background execution 5895@cindex asynchronous execution 5896@cindex execution, foreground, background and asynchronous 5897 5898@value{GDBN}'s execution commands have two variants: the normal 5899foreground (synchronous) behavior, and a background 5900(asynchronous) behavior. In foreground execution, @value{GDBN} waits for 5901the program to report that some thread has stopped before prompting for 5902another command. In background execution, @value{GDBN} immediately gives 5903a command prompt so that you can issue other commands while your program runs. 5904 5905If the target doesn't support async mode, @value{GDBN} issues an error 5906message if you attempt to use the background execution commands. 5907 5908To specify background execution, add a @code{&} to the command. For example, 5909the background form of the @code{continue} command is @code{continue&}, or 5910just @code{c&}. The execution commands that accept background execution 5911are: 5912 5913@table @code 5914@kindex run& 5915@item run 5916@xref{Starting, , Starting your Program}. 5917 5918@item attach 5919@kindex attach& 5920@xref{Attach, , Debugging an Already-running Process}. 5921 5922@item step 5923@kindex step& 5924@xref{Continuing and Stepping, step}. 5925 5926@item stepi 5927@kindex stepi& 5928@xref{Continuing and Stepping, stepi}. 5929 5930@item next 5931@kindex next& 5932@xref{Continuing and Stepping, next}. 5933 5934@item nexti 5935@kindex nexti& 5936@xref{Continuing and Stepping, nexti}. 5937 5938@item continue 5939@kindex continue& 5940@xref{Continuing and Stepping, continue}. 5941 5942@item finish 5943@kindex finish& 5944@xref{Continuing and Stepping, finish}. 5945 5946@item until 5947@kindex until& 5948@xref{Continuing and Stepping, until}. 5949 5950@end table 5951 5952Background execution is especially useful in conjunction with non-stop 5953mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}. 5954However, you can also use these commands in the normal all-stop mode with 5955the restriction that you cannot issue another execution command until the 5956previous one finishes. Examples of commands that are valid in all-stop 5957mode while the program is running include @code{help} and @code{info break}. 5958 5959You can interrupt your program while it is running in the background by 5960using the @code{interrupt} command. 5961 5962@table @code 5963@kindex interrupt 5964@item interrupt 5965@itemx interrupt -a 5966 5967Suspend execution of the running program. In all-stop mode, 5968@code{interrupt} stops the whole process, but in non-stop mode, it stops 5969only the current thread. To stop the whole program in non-stop mode, 5970use @code{interrupt -a}. 5971@end table 5972 5973@node Thread-Specific Breakpoints 5974@subsection Thread-Specific Breakpoints 5975 5976When your program has multiple threads (@pxref{Threads,, Debugging 5977Programs with Multiple Threads}), you can choose whether to set 5978breakpoints on all threads, or on a particular thread. 5979 5980@table @code 5981@cindex breakpoints and threads 5982@cindex thread breakpoints 5983@kindex break @dots{} thread @var{threadno} 5984@item break @var{linespec} thread @var{threadno} 5985@itemx break @var{linespec} thread @var{threadno} if @dots{} 5986@var{linespec} specifies source lines; there are several ways of 5987writing them (@pxref{Specify Location}), but the effect is always to 5988specify some source line. 5989 5990Use the qualifier @samp{thread @var{threadno}} with a breakpoint command 5991to specify that you only want @value{GDBN} to stop the program when a 5992particular thread reaches this breakpoint. The @var{threadno} specifier 5993is one of the numeric thread identifiers assigned by @value{GDBN}, shown 5994in the first column of the @samp{info threads} display. 5995 5996If you do not specify @samp{thread @var{threadno}} when you set a 5997breakpoint, the breakpoint applies to @emph{all} threads of your 5998program. 5999 6000You can use the @code{thread} qualifier on conditional breakpoints as 6001well; in this case, place @samp{thread @var{threadno}} before or 6002after the breakpoint condition, like this: 6003 6004@smallexample 6005(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim 6006@end smallexample 6007 6008@end table 6009 6010Thread-specific breakpoints are automatically deleted when 6011@value{GDBN} detects the corresponding thread is no longer in the 6012thread list. For example: 6013 6014@smallexample 6015(@value{GDBP}) c 6016Thread-specific breakpoint 3 deleted - thread 28 no longer in the thread list. 6017@end smallexample 6018 6019There are several ways for a thread to disappear, such as a regular 6020thread exit, but also when you detach from the process with the 6021@code{detach} command (@pxref{Attach, ,Debugging an Already-running 6022Process}), or if @value{GDBN} loses the remote connection 6023(@pxref{Remote Debugging}), etc. Note that with some targets, 6024@value{GDBN} is only able to detect a thread has exited when the user 6025explictly asks for the thread list with the @code{info threads} 6026command. 6027 6028@node Interrupted System Calls 6029@subsection Interrupted System Calls 6030 6031@cindex thread breakpoints and system calls 6032@cindex system calls and thread breakpoints 6033@cindex premature return from system calls 6034There is an unfortunate side effect when using @value{GDBN} to debug 6035multi-threaded programs. If one thread stops for a 6036breakpoint, or for some other reason, and another thread is blocked in a 6037system call, then the system call may return prematurely. This is a 6038consequence of the interaction between multiple threads and the signals 6039that @value{GDBN} uses to implement breakpoints and other events that 6040stop execution. 6041 6042To handle this problem, your program should check the return value of 6043each system call and react appropriately. This is good programming 6044style anyways. 6045 6046For example, do not write code like this: 6047 6048@smallexample 6049 sleep (10); 6050@end smallexample 6051 6052The call to @code{sleep} will return early if a different thread stops 6053at a breakpoint or for some other reason. 6054 6055Instead, write this: 6056 6057@smallexample 6058 int unslept = 10; 6059 while (unslept > 0) 6060 unslept = sleep (unslept); 6061@end smallexample 6062 6063A system call is allowed to return early, so the system is still 6064conforming to its specification. But @value{GDBN} does cause your 6065multi-threaded program to behave differently than it would without 6066@value{GDBN}. 6067 6068Also, @value{GDBN} uses internal breakpoints in the thread library to 6069monitor certain events such as thread creation and thread destruction. 6070When such an event happens, a system call in another thread may return 6071prematurely, even though your program does not appear to stop. 6072 6073@node Observer Mode 6074@subsection Observer Mode 6075 6076If you want to build on non-stop mode and observe program behavior 6077without any chance of disruption by @value{GDBN}, you can set 6078variables to disable all of the debugger's attempts to modify state, 6079whether by writing memory, inserting breakpoints, etc. These operate 6080at a low level, intercepting operations from all commands. 6081 6082When all of these are set to @code{off}, then @value{GDBN} is said to 6083be @dfn{observer mode}. As a convenience, the variable 6084@code{observer} can be set to disable these, plus enable non-stop 6085mode. 6086 6087Note that @value{GDBN} will not prevent you from making nonsensical 6088combinations of these settings. For instance, if you have enabled 6089@code{may-insert-breakpoints} but disabled @code{may-write-memory}, 6090then breakpoints that work by writing trap instructions into the code 6091stream will still not be able to be placed. 6092 6093@table @code 6094 6095@kindex observer 6096@item set observer on 6097@itemx set observer off 6098When set to @code{on}, this disables all the permission variables 6099below (except for @code{insert-fast-tracepoints}), plus enables 6100non-stop debugging. Setting this to @code{off} switches back to 6101normal debugging, though remaining in non-stop mode. 6102 6103@item show observer 6104Show whether observer mode is on or off. 6105 6106@kindex may-write-registers 6107@item set may-write-registers on 6108@itemx set may-write-registers off 6109This controls whether @value{GDBN} will attempt to alter the values of 6110registers, such as with assignment expressions in @code{print}, or the 6111@code{jump} command. It defaults to @code{on}. 6112 6113@item show may-write-registers 6114Show the current permission to write registers. 6115 6116@kindex may-write-memory 6117@item set may-write-memory on 6118@itemx set may-write-memory off 6119This controls whether @value{GDBN} will attempt to alter the contents 6120of memory, such as with assignment expressions in @code{print}. It 6121defaults to @code{on}. 6122 6123@item show may-write-memory 6124Show the current permission to write memory. 6125 6126@kindex may-insert-breakpoints 6127@item set may-insert-breakpoints on 6128@itemx set may-insert-breakpoints off 6129This controls whether @value{GDBN} will attempt to insert breakpoints. 6130This affects all breakpoints, including internal breakpoints defined 6131by @value{GDBN}. It defaults to @code{on}. 6132 6133@item show may-insert-breakpoints 6134Show the current permission to insert breakpoints. 6135 6136@kindex may-insert-tracepoints 6137@item set may-insert-tracepoints on 6138@itemx set may-insert-tracepoints off 6139This controls whether @value{GDBN} will attempt to insert (regular) 6140tracepoints at the beginning of a tracing experiment. It affects only 6141non-fast tracepoints, fast tracepoints being under the control of 6142@code{may-insert-fast-tracepoints}. It defaults to @code{on}. 6143 6144@item show may-insert-tracepoints 6145Show the current permission to insert tracepoints. 6146 6147@kindex may-insert-fast-tracepoints 6148@item set may-insert-fast-tracepoints on 6149@itemx set may-insert-fast-tracepoints off 6150This controls whether @value{GDBN} will attempt to insert fast 6151tracepoints at the beginning of a tracing experiment. It affects only 6152fast tracepoints, regular (non-fast) tracepoints being under the 6153control of @code{may-insert-tracepoints}. It defaults to @code{on}. 6154 6155@item show may-insert-fast-tracepoints 6156Show the current permission to insert fast tracepoints. 6157 6158@kindex may-interrupt 6159@item set may-interrupt on 6160@itemx set may-interrupt off 6161This controls whether @value{GDBN} will attempt to interrupt or stop 6162program execution. When this variable is @code{off}, the 6163@code{interrupt} command will have no effect, nor will 6164@kbd{Ctrl-c}. It defaults to @code{on}. 6165 6166@item show may-interrupt 6167Show the current permission to interrupt or stop the program. 6168 6169@end table 6170 6171@node Reverse Execution 6172@chapter Running programs backward 6173@cindex reverse execution 6174@cindex running programs backward 6175 6176When you are debugging a program, it is not unusual to realize that 6177you have gone too far, and some event of interest has already happened. 6178If the target environment supports it, @value{GDBN} can allow you to 6179``rewind'' the program by running it backward. 6180 6181A target environment that supports reverse execution should be able 6182to ``undo'' the changes in machine state that have taken place as the 6183program was executing normally. Variables, registers etc.@: should 6184revert to their previous values. Obviously this requires a great 6185deal of sophistication on the part of the target environment; not 6186all target environments can support reverse execution. 6187 6188When a program is executed in reverse, the instructions that 6189have most recently been executed are ``un-executed'', in reverse 6190order. The program counter runs backward, following the previous 6191thread of execution in reverse. As each instruction is ``un-executed'', 6192the values of memory and/or registers that were changed by that 6193instruction are reverted to their previous states. After executing 6194a piece of source code in reverse, all side effects of that code 6195should be ``undone'', and all variables should be returned to their 6196prior values@footnote{ 6197Note that some side effects are easier to undo than others. For instance, 6198memory and registers are relatively easy, but device I/O is hard. Some 6199targets may be able undo things like device I/O, and some may not. 6200 6201The contract between @value{GDBN} and the reverse executing target 6202requires only that the target do something reasonable when 6203@value{GDBN} tells it to execute backwards, and then report the 6204results back to @value{GDBN}. Whatever the target reports back to 6205@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN} 6206assumes that the memory and registers that the target reports are in a 6207consistant state, but @value{GDBN} accepts whatever it is given. 6208}. 6209 6210If you are debugging in a target environment that supports 6211reverse execution, @value{GDBN} provides the following commands. 6212 6213@table @code 6214@kindex reverse-continue 6215@kindex rc @r{(@code{reverse-continue})} 6216@item reverse-continue @r{[}@var{ignore-count}@r{]} 6217@itemx rc @r{[}@var{ignore-count}@r{]} 6218Beginning at the point where your program last stopped, start executing 6219in reverse. Reverse execution will stop for breakpoints and synchronous 6220exceptions (signals), just like normal execution. Behavior of 6221asynchronous signals depends on the target environment. 6222 6223@kindex reverse-step 6224@kindex rs @r{(@code{step})} 6225@item reverse-step @r{[}@var{count}@r{]} 6226Run the program backward until control reaches the start of a 6227different source line; then stop it, and return control to @value{GDBN}. 6228 6229Like the @code{step} command, @code{reverse-step} will only stop 6230at the beginning of a source line. It ``un-executes'' the previously 6231executed source line. If the previous source line included calls to 6232debuggable functions, @code{reverse-step} will step (backward) into 6233the called function, stopping at the beginning of the @emph{last} 6234statement in the called function (typically a return statement). 6235 6236Also, as with the @code{step} command, if non-debuggable functions are 6237called, @code{reverse-step} will run thru them backward without stopping. 6238 6239@kindex reverse-stepi 6240@kindex rsi @r{(@code{reverse-stepi})} 6241@item reverse-stepi @r{[}@var{count}@r{]} 6242Reverse-execute one machine instruction. Note that the instruction 6243to be reverse-executed is @emph{not} the one pointed to by the program 6244counter, but the instruction executed prior to that one. For instance, 6245if the last instruction was a jump, @code{reverse-stepi} will take you 6246back from the destination of the jump to the jump instruction itself. 6247 6248@kindex reverse-next 6249@kindex rn @r{(@code{reverse-next})} 6250@item reverse-next @r{[}@var{count}@r{]} 6251Run backward to the beginning of the previous line executed in 6252the current (innermost) stack frame. If the line contains function 6253calls, they will be ``un-executed'' without stopping. Starting from 6254the first line of a function, @code{reverse-next} will take you back 6255to the caller of that function, @emph{before} the function was called, 6256just as the normal @code{next} command would take you from the last 6257line of a function back to its return to its caller 6258@footnote{Unless the code is too heavily optimized.}. 6259 6260@kindex reverse-nexti 6261@kindex rni @r{(@code{reverse-nexti})} 6262@item reverse-nexti @r{[}@var{count}@r{]} 6263Like @code{nexti}, @code{reverse-nexti} executes a single instruction 6264in reverse, except that called functions are ``un-executed'' atomically. 6265That is, if the previously executed instruction was a return from 6266another function, @code{reverse-nexti} will continue to execute 6267in reverse until the call to that function (from the current stack 6268frame) is reached. 6269 6270@kindex reverse-finish 6271@item reverse-finish 6272Just as the @code{finish} command takes you to the point where the 6273current function returns, @code{reverse-finish} takes you to the point 6274where it was called. Instead of ending up at the end of the current 6275function invocation, you end up at the beginning. 6276 6277@kindex set exec-direction 6278@item set exec-direction 6279Set the direction of target execution. 6280@item set exec-direction reverse 6281@cindex execute forward or backward in time 6282@value{GDBN} will perform all execution commands in reverse, until the 6283exec-direction mode is changed to ``forward''. Affected commands include 6284@code{step, stepi, next, nexti, continue, and finish}. The @code{return} 6285command cannot be used in reverse mode. 6286@item set exec-direction forward 6287@value{GDBN} will perform all execution commands in the normal fashion. 6288This is the default. 6289@end table 6290 6291 6292@node Process Record and Replay 6293@chapter Recording Inferior's Execution and Replaying It 6294@cindex process record and replay 6295@cindex recording inferior's execution and replaying it 6296 6297On some platforms, @value{GDBN} provides a special @dfn{process record 6298and replay} target that can record a log of the process execution, and 6299replay it later with both forward and reverse execution commands. 6300 6301@cindex replay mode 6302When this target is in use, if the execution log includes the record 6303for the next instruction, @value{GDBN} will debug in @dfn{replay 6304mode}. In the replay mode, the inferior does not really execute code 6305instructions. Instead, all the events that normally happen during 6306code execution are taken from the execution log. While code is not 6307really executed in replay mode, the values of registers (including the 6308program counter register) and the memory of the inferior are still 6309changed as they normally would. Their contents are taken from the 6310execution log. 6311 6312@cindex record mode 6313If the record for the next instruction is not in the execution log, 6314@value{GDBN} will debug in @dfn{record mode}. In this mode, the 6315inferior executes normally, and @value{GDBN} records the execution log 6316for future replay. 6317 6318The process record and replay target supports reverse execution 6319(@pxref{Reverse Execution}), even if the platform on which the 6320inferior runs does not. However, the reverse execution is limited in 6321this case by the range of the instructions recorded in the execution 6322log. In other words, reverse execution on platforms that don't 6323support it directly can only be done in the replay mode. 6324 6325When debugging in the reverse direction, @value{GDBN} will work in 6326replay mode as long as the execution log includes the record for the 6327previous instruction; otherwise, it will work in record mode, if the 6328platform supports reverse execution, or stop if not. 6329 6330For architecture environments that support process record and replay, 6331@value{GDBN} provides the following commands: 6332 6333@table @code 6334@kindex target record 6335@kindex target record-full 6336@kindex target record-btrace 6337@kindex record 6338@kindex record full 6339@kindex record btrace 6340@kindex rec 6341@kindex rec full 6342@kindex rec btrace 6343@item record @var{method} 6344This command starts the process record and replay target. The 6345recording method can be specified as parameter. Without a parameter 6346the command uses the @code{full} recording method. The following 6347recording methods are available: 6348 6349@table @code 6350@item full 6351Full record/replay recording using @value{GDBN}'s software record and 6352replay implementation. This method allows replaying and reverse 6353execution. 6354 6355@item btrace 6356Hardware-supported instruction recording. This method does not record 6357data. Further, the data is collected in a ring buffer so old data will 6358be overwritten when the buffer is full. It allows limited replay and 6359reverse execution. 6360 6361This recording method may not be available on all processors. 6362@end table 6363 6364The process record and replay target can only debug a process that is 6365already running. Therefore, you need first to start the process with 6366the @kbd{run} or @kbd{start} commands, and then start the recording 6367with the @kbd{record @var{method}} command. 6368 6369Both @code{record @var{method}} and @code{rec @var{method}} are 6370aliases of @code{target record-@var{method}}. 6371 6372@cindex displaced stepping, and process record and replay 6373Displaced stepping (@pxref{Maintenance Commands,, displaced stepping}) 6374will be automatically disabled when process record and replay target 6375is started. That's because the process record and replay target 6376doesn't support displaced stepping. 6377 6378@cindex non-stop mode, and process record and replay 6379@cindex asynchronous execution, and process record and replay 6380If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in 6381the asynchronous execution mode (@pxref{Background Execution}), not 6382all recording methods are available. The @code{full} recording method 6383does not support these two modes. 6384 6385@kindex record stop 6386@kindex rec s 6387@item record stop 6388Stop the process record and replay target. When process record and 6389replay target stops, the entire execution log will be deleted and the 6390inferior will either be terminated, or will remain in its final state. 6391 6392When you stop the process record and replay target in record mode (at 6393the end of the execution log), the inferior will be stopped at the 6394next instruction that would have been recorded. In other words, if 6395you record for a while and then stop recording, the inferior process 6396will be left in the same state as if the recording never happened. 6397 6398On the other hand, if the process record and replay target is stopped 6399while in replay mode (that is, not at the end of the execution log, 6400but at some earlier point), the inferior process will become ``live'' 6401at that earlier state, and it will then be possible to continue the 6402usual ``live'' debugging of the process from that state. 6403 6404When the inferior process exits, or @value{GDBN} detaches from it, 6405process record and replay target will automatically stop itself. 6406 6407@kindex record goto 6408@item record goto 6409Go to a specific location in the execution log. There are several 6410ways to specify the location to go to: 6411 6412@table @code 6413@item record goto begin 6414@itemx record goto start 6415Go to the beginning of the execution log. 6416 6417@item record goto end 6418Go to the end of the execution log. 6419 6420@item record goto @var{n} 6421Go to instruction number @var{n} in the execution log. 6422@end table 6423 6424@kindex record save 6425@item record save @var{filename} 6426Save the execution log to a file @file{@var{filename}}. 6427Default filename is @file{gdb_record.@var{process_id}}, where 6428@var{process_id} is the process ID of the inferior. 6429 6430This command may not be available for all recording methods. 6431 6432@kindex record restore 6433@item record restore @var{filename} 6434Restore the execution log from a file @file{@var{filename}}. 6435File must have been created with @code{record save}. 6436 6437@kindex set record full 6438@item set record full insn-number-max @var{limit} 6439@itemx set record full insn-number-max unlimited 6440Set the limit of instructions to be recorded for the @code{full} 6441recording method. Default value is 200000. 6442 6443If @var{limit} is a positive number, then @value{GDBN} will start 6444deleting instructions from the log once the number of the record 6445instructions becomes greater than @var{limit}. For every new recorded 6446instruction, @value{GDBN} will delete the earliest recorded 6447instruction to keep the number of recorded instructions at the limit. 6448(Since deleting recorded instructions loses information, @value{GDBN} 6449lets you control what happens when the limit is reached, by means of 6450the @code{stop-at-limit} option, described below.) 6451 6452If @var{limit} is @code{unlimited} or zero, @value{GDBN} will never 6453delete recorded instructions from the execution log. The number of 6454recorded instructions is limited only by the available memory. 6455 6456@kindex show record full 6457@item show record full insn-number-max 6458Show the limit of instructions to be recorded with the @code{full} 6459recording method. 6460 6461@item set record full stop-at-limit 6462Control the behavior of the @code{full} recording method when the 6463number of recorded instructions reaches the limit. If ON (the 6464default), @value{GDBN} will stop when the limit is reached for the 6465first time and ask you whether you want to stop the inferior or 6466continue running it and recording the execution log. If you decide 6467to continue recording, each new recorded instruction will cause the 6468oldest one to be deleted. 6469 6470If this option is OFF, @value{GDBN} will automatically delete the 6471oldest record to make room for each new one, without asking. 6472 6473@item show record full stop-at-limit 6474Show the current setting of @code{stop-at-limit}. 6475 6476@item set record full memory-query 6477Control the behavior when @value{GDBN} is unable to record memory 6478changes caused by an instruction for the @code{full} recording method. 6479If ON, @value{GDBN} will query whether to stop the inferior in that 6480case. 6481 6482If this option is OFF (the default), @value{GDBN} will automatically 6483ignore the effect of such instructions on memory. Later, when 6484@value{GDBN} replays this execution log, it will mark the log of this 6485instruction as not accessible, and it will not affect the replay 6486results. 6487 6488@item show record full memory-query 6489Show the current setting of @code{memory-query}. 6490 6491@kindex set record btrace 6492The @code{btrace} record target does not trace data. As a 6493convenience, when replaying, @value{GDBN} reads read-only memory off 6494the live program directly, assuming that the addresses of the 6495read-only areas don't change. This for example makes it possible to 6496disassemble code while replaying, but not to print variables. 6497In some cases, being able to inspect variables might be useful. 6498You can use the following command for that: 6499 6500@item set record btrace replay-memory-access 6501Control the behavior of the @code{btrace} recording method when 6502accessing memory during replay. If @code{read-only} (the default), 6503@value{GDBN} will only allow accesses to read-only memory. 6504If @code{read-write}, @value{GDBN} will allow accesses to read-only 6505and to read-write memory. Beware that the accessed memory corresponds 6506to the live target and not necessarily to the current replay 6507position. 6508 6509@kindex show record btrace 6510@item show record btrace replay-memory-access 6511Show the current setting of @code{replay-memory-access}. 6512 6513@kindex info record 6514@item info record 6515Show various statistics about the recording depending on the recording 6516method: 6517 6518@table @code 6519@item full 6520For the @code{full} recording method, it shows the state of process 6521record and its in-memory execution log buffer, including: 6522 6523@itemize @bullet 6524@item 6525Whether in record mode or replay mode. 6526@item 6527Lowest recorded instruction number (counting from when the current execution log started recording instructions). 6528@item 6529Highest recorded instruction number. 6530@item 6531Current instruction about to be replayed (if in replay mode). 6532@item 6533Number of instructions contained in the execution log. 6534@item 6535Maximum number of instructions that may be contained in the execution log. 6536@end itemize 6537 6538@item btrace 6539For the @code{btrace} recording method, it shows the number of 6540instructions that have been recorded and the number of blocks of 6541sequential control-flow that is formed by the recorded instructions. 6542@end table 6543 6544@kindex record delete 6545@kindex rec del 6546@item record delete 6547When record target runs in replay mode (``in the past''), delete the 6548subsequent execution log and begin to record a new execution log starting 6549from the current address. This means you will abandon the previously 6550recorded ``future'' and begin recording a new ``future''. 6551 6552@kindex record instruction-history 6553@kindex rec instruction-history 6554@item record instruction-history 6555Disassembles instructions from the recorded execution log. By 6556default, ten instructions are disassembled. This can be changed using 6557the @code{set record instruction-history-size} command. Instructions 6558are printed in execution order. There are several ways to specify 6559what part of the execution log to disassemble: 6560 6561@table @code 6562@item record instruction-history @var{insn} 6563Disassembles ten instructions starting from instruction number 6564@var{insn}. 6565 6566@item record instruction-history @var{insn}, +/-@var{n} 6567Disassembles @var{n} instructions around instruction number 6568@var{insn}. If @var{n} is preceded with @code{+}, disassembles 6569@var{n} instructions after instruction number @var{insn}. If 6570@var{n} is preceded with @code{-}, disassembles @var{n} 6571instructions before instruction number @var{insn}. 6572 6573@item record instruction-history 6574Disassembles ten more instructions after the last disassembly. 6575 6576@item record instruction-history - 6577Disassembles ten more instructions before the last disassembly. 6578 6579@item record instruction-history @var{begin} @var{end} 6580Disassembles instructions beginning with instruction number 6581@var{begin} until instruction number @var{end}. The instruction 6582number @var{end} is included. 6583@end table 6584 6585This command may not be available for all recording methods. 6586 6587@kindex set record 6588@item set record instruction-history-size @var{size} 6589@itemx set record instruction-history-size unlimited 6590Define how many instructions to disassemble in the @code{record 6591instruction-history} command. The default value is 10. 6592A @var{size} of @code{unlimited} means unlimited instructions. 6593 6594@kindex show record 6595@item show record instruction-history-size 6596Show how many instructions to disassemble in the @code{record 6597instruction-history} command. 6598 6599@kindex record function-call-history 6600@kindex rec function-call-history 6601@item record function-call-history 6602Prints the execution history at function granularity. It prints one 6603line for each sequence of instructions that belong to the same 6604function giving the name of that function, the source lines 6605for this instruction sequence (if the @code{/l} modifier is 6606specified), and the instructions numbers that form the sequence (if 6607the @code{/i} modifier is specified). The function names are indented 6608to reflect the call stack depth if the @code{/c} modifier is 6609specified. The @code{/l}, @code{/i}, and @code{/c} modifiers can be 6610given together. 6611 6612@smallexample 6613(@value{GDBP}) @b{list 1, 10} 66141 void foo (void) 66152 @{ 66163 @} 66174 66185 void bar (void) 66196 @{ 66207 ... 66218 foo (); 66229 ... 662310 @} 6624(@value{GDBP}) @b{record function-call-history /ilc} 66251 bar inst 1,4 at foo.c:6,8 66262 foo inst 5,10 at foo.c:2,3 66273 bar inst 11,13 at foo.c:9,10 6628@end smallexample 6629 6630By default, ten lines are printed. This can be changed using the 6631@code{set record function-call-history-size} command. Functions are 6632printed in execution order. There are several ways to specify what 6633to print: 6634 6635@table @code 6636@item record function-call-history @var{func} 6637Prints ten functions starting from function number @var{func}. 6638 6639@item record function-call-history @var{func}, +/-@var{n} 6640Prints @var{n} functions around function number @var{func}. If 6641@var{n} is preceded with @code{+}, prints @var{n} functions after 6642function number @var{func}. If @var{n} is preceded with @code{-}, 6643prints @var{n} functions before function number @var{func}. 6644 6645@item record function-call-history 6646Prints ten more functions after the last ten-line print. 6647 6648@item record function-call-history - 6649Prints ten more functions before the last ten-line print. 6650 6651@item record function-call-history @var{begin} @var{end} 6652Prints functions beginning with function number @var{begin} until 6653function number @var{end}. The function number @var{end} is included. 6654@end table 6655 6656This command may not be available for all recording methods. 6657 6658@item set record function-call-history-size @var{size} 6659@itemx set record function-call-history-size unlimited 6660Define how many lines to print in the 6661@code{record function-call-history} command. The default value is 10. 6662A size of @code{unlimited} means unlimited lines. 6663 6664@item show record function-call-history-size 6665Show how many lines to print in the 6666@code{record function-call-history} command. 6667@end table 6668 6669 6670@node Stack 6671@chapter Examining the Stack 6672 6673When your program has stopped, the first thing you need to know is where it 6674stopped and how it got there. 6675 6676@cindex call stack 6677Each time your program performs a function call, information about the call 6678is generated. 6679That information includes the location of the call in your program, 6680the arguments of the call, 6681and the local variables of the function being called. 6682The information is saved in a block of data called a @dfn{stack frame}. 6683The stack frames are allocated in a region of memory called the @dfn{call 6684stack}. 6685 6686When your program stops, the @value{GDBN} commands for examining the 6687stack allow you to see all of this information. 6688 6689@cindex selected frame 6690One of the stack frames is @dfn{selected} by @value{GDBN} and many 6691@value{GDBN} commands refer implicitly to the selected frame. In 6692particular, whenever you ask @value{GDBN} for the value of a variable in 6693your program, the value is found in the selected frame. There are 6694special @value{GDBN} commands to select whichever frame you are 6695interested in. @xref{Selection, ,Selecting a Frame}. 6696 6697When your program stops, @value{GDBN} automatically selects the 6698currently executing frame and describes it briefly, similar to the 6699@code{frame} command (@pxref{Frame Info, ,Information about a Frame}). 6700 6701@menu 6702* Frames:: Stack frames 6703* Backtrace:: Backtraces 6704* Frame Filter Management:: Managing frame filters 6705* Selection:: Selecting a frame 6706* Frame Info:: Information on a frame 6707 6708@end menu 6709 6710@node Frames 6711@section Stack Frames 6712 6713@cindex frame, definition 6714@cindex stack frame 6715The call stack is divided up into contiguous pieces called @dfn{stack 6716frames}, or @dfn{frames} for short; each frame is the data associated 6717with one call to one function. The frame contains the arguments given 6718to the function, the function's local variables, and the address at 6719which the function is executing. 6720 6721@cindex initial frame 6722@cindex outermost frame 6723@cindex innermost frame 6724When your program is started, the stack has only one frame, that of the 6725function @code{main}. This is called the @dfn{initial} frame or the 6726@dfn{outermost} frame. Each time a function is called, a new frame is 6727made. Each time a function returns, the frame for that function invocation 6728is eliminated. If a function is recursive, there can be many frames for 6729the same function. The frame for the function in which execution is 6730actually occurring is called the @dfn{innermost} frame. This is the most 6731recently created of all the stack frames that still exist. 6732 6733@cindex frame pointer 6734Inside your program, stack frames are identified by their addresses. A 6735stack frame consists of many bytes, each of which has its own address; each 6736kind of computer has a convention for choosing one byte whose 6737address serves as the address of the frame. Usually this address is kept 6738in a register called the @dfn{frame pointer register} 6739(@pxref{Registers, $fp}) while execution is going on in that frame. 6740 6741@cindex frame number 6742@value{GDBN} assigns numbers to all existing stack frames, starting with 6743zero for the innermost frame, one for the frame that called it, 6744and so on upward. These numbers do not really exist in your program; 6745they are assigned by @value{GDBN} to give you a way of designating stack 6746frames in @value{GDBN} commands. 6747 6748@c The -fomit-frame-pointer below perennially causes hbox overflow 6749@c underflow problems. 6750@cindex frameless execution 6751Some compilers provide a way to compile functions so that they operate 6752without stack frames. (For example, the @value{NGCC} option 6753@smallexample 6754@samp{-fomit-frame-pointer} 6755@end smallexample 6756generates functions without a frame.) 6757This is occasionally done with heavily used library functions to save 6758the frame setup time. @value{GDBN} has limited facilities for dealing 6759with these function invocations. If the innermost function invocation 6760has no stack frame, @value{GDBN} nevertheless regards it as though 6761it had a separate frame, which is numbered zero as usual, allowing 6762correct tracing of the function call chain. However, @value{GDBN} has 6763no provision for frameless functions elsewhere in the stack. 6764 6765@table @code 6766@kindex frame@r{, command} 6767@cindex current stack frame 6768@item frame @r{[}@var{framespec}@r{]} 6769The @code{frame} command allows you to move from one stack frame to another, 6770and to print the stack frame you select. The @var{framespec} may be either the 6771address of the frame or the stack frame number. Without an argument, 6772@code{frame} prints the current stack frame. 6773 6774@kindex select-frame 6775@cindex selecting frame silently 6776@item select-frame 6777The @code{select-frame} command allows you to move from one stack frame 6778to another without printing the frame. This is the silent version of 6779@code{frame}. 6780@end table 6781 6782@node Backtrace 6783@section Backtraces 6784 6785@cindex traceback 6786@cindex call stack traces 6787A backtrace is a summary of how your program got where it is. It shows one 6788line per frame, for many frames, starting with the currently executing 6789frame (frame zero), followed by its caller (frame one), and on up the 6790stack. 6791 6792@anchor{backtrace-command} 6793@table @code 6794@kindex backtrace 6795@kindex bt @r{(@code{backtrace})} 6796@item backtrace 6797@itemx bt 6798Print a backtrace of the entire stack: one line per frame for all 6799frames in the stack. 6800 6801You can stop the backtrace at any time by typing the system interrupt 6802character, normally @kbd{Ctrl-c}. 6803 6804@item backtrace @var{n} 6805@itemx bt @var{n} 6806Similar, but print only the innermost @var{n} frames. 6807 6808@item backtrace -@var{n} 6809@itemx bt -@var{n} 6810Similar, but print only the outermost @var{n} frames. 6811 6812@item backtrace full 6813@itemx bt full 6814@itemx bt full @var{n} 6815@itemx bt full -@var{n} 6816Print the values of the local variables also. As described above, 6817@var{n} specifies the number of frames to print. 6818 6819@item backtrace no-filters 6820@itemx bt no-filters 6821@itemx bt no-filters @var{n} 6822@itemx bt no-filters -@var{n} 6823@itemx bt no-filters full 6824@itemx bt no-filters full @var{n} 6825@itemx bt no-filters full -@var{n} 6826Do not run Python frame filters on this backtrace. @xref{Frame 6827Filter API}, for more information. Additionally use @ref{disable 6828frame-filter all} to turn off all frame filters. This is only 6829relevant when @value{GDBN} has been configured with @code{Python} 6830support. 6831@end table 6832 6833@kindex where 6834@kindex info stack 6835The names @code{where} and @code{info stack} (abbreviated @code{info s}) 6836are additional aliases for @code{backtrace}. 6837 6838@cindex multiple threads, backtrace 6839In a multi-threaded program, @value{GDBN} by default shows the 6840backtrace only for the current thread. To display the backtrace for 6841several or all of the threads, use the command @code{thread apply} 6842(@pxref{Threads, thread apply}). For example, if you type @kbd{thread 6843apply all backtrace}, @value{GDBN} will display the backtrace for all 6844the threads; this is handy when you debug a core dump of a 6845multi-threaded program. 6846 6847Each line in the backtrace shows the frame number and the function name. 6848The program counter value is also shown---unless you use @code{set 6849print address off}. The backtrace also shows the source file name and 6850line number, as well as the arguments to the function. The program 6851counter value is omitted if it is at the beginning of the code for that 6852line number. 6853 6854Here is an example of a backtrace. It was made with the command 6855@samp{bt 3}, so it shows the innermost three frames. 6856 6857@smallexample 6858@group 6859#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 6860 at builtin.c:993 6861#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242 6862#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08) 6863 at macro.c:71 6864(More stack frames follow...) 6865@end group 6866@end smallexample 6867 6868@noindent 6869The display for frame zero does not begin with a program counter 6870value, indicating that your program has stopped at the beginning of the 6871code for line @code{993} of @code{builtin.c}. 6872 6873@noindent 6874The value of parameter @code{data} in frame 1 has been replaced by 6875@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter 6876only if it is a scalar (integer, pointer, enumeration, etc). See command 6877@kbd{set print frame-arguments} in @ref{Print Settings} for more details 6878on how to configure the way function parameter values are printed. 6879 6880@cindex optimized out, in backtrace 6881@cindex function call arguments, optimized out 6882If your program was compiled with optimizations, some compilers will 6883optimize away arguments passed to functions if those arguments are 6884never used after the call. Such optimizations generate code that 6885passes arguments through registers, but doesn't store those arguments 6886in the stack frame. @value{GDBN} has no way of displaying such 6887arguments in stack frames other than the innermost one. Here's what 6888such a backtrace might look like: 6889 6890@smallexample 6891@group 6892#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 6893 at builtin.c:993 6894#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242 6895#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08) 6896 at macro.c:71 6897(More stack frames follow...) 6898@end group 6899@end smallexample 6900 6901@noindent 6902The values of arguments that were not saved in their stack frames are 6903shown as @samp{<optimized out>}. 6904 6905If you need to display the values of such optimized-out arguments, 6906either deduce that from other variables whose values depend on the one 6907you are interested in, or recompile without optimizations. 6908 6909@cindex backtrace beyond @code{main} function 6910@cindex program entry point 6911@cindex startup code, and backtrace 6912Most programs have a standard user entry point---a place where system 6913libraries and startup code transition into user code. For C this is 6914@code{main}@footnote{ 6915Note that embedded programs (the so-called ``free-standing'' 6916environment) are not required to have a @code{main} function as the 6917entry point. They could even have multiple entry points.}. 6918When @value{GDBN} finds the entry function in a backtrace 6919it will terminate the backtrace, to avoid tracing into highly 6920system-specific (and generally uninteresting) code. 6921 6922If you need to examine the startup code, or limit the number of levels 6923in a backtrace, you can change this behavior: 6924 6925@table @code 6926@item set backtrace past-main 6927@itemx set backtrace past-main on 6928@kindex set backtrace 6929Backtraces will continue past the user entry point. 6930 6931@item set backtrace past-main off 6932Backtraces will stop when they encounter the user entry point. This is the 6933default. 6934 6935@item show backtrace past-main 6936@kindex show backtrace 6937Display the current user entry point backtrace policy. 6938 6939@item set backtrace past-entry 6940@itemx set backtrace past-entry on 6941Backtraces will continue past the internal entry point of an application. 6942This entry point is encoded by the linker when the application is built, 6943and is likely before the user entry point @code{main} (or equivalent) is called. 6944 6945@item set backtrace past-entry off 6946Backtraces will stop when they encounter the internal entry point of an 6947application. This is the default. 6948 6949@item show backtrace past-entry 6950Display the current internal entry point backtrace policy. 6951 6952@item set backtrace limit @var{n} 6953@itemx set backtrace limit 0 6954@itemx set backtrace limit unlimited 6955@cindex backtrace limit 6956Limit the backtrace to @var{n} levels. A value of @code{unlimited} 6957or zero means unlimited levels. 6958 6959@item show backtrace limit 6960Display the current limit on backtrace levels. 6961@end table 6962 6963You can control how file names are displayed. 6964 6965@table @code 6966@item set filename-display 6967@itemx set filename-display relative 6968@cindex filename-display 6969Display file names relative to the compilation directory. This is the default. 6970 6971@item set filename-display basename 6972Display only basename of a filename. 6973 6974@item set filename-display absolute 6975Display an absolute filename. 6976 6977@item show filename-display 6978Show the current way to display filenames. 6979@end table 6980 6981@node Frame Filter Management 6982@section Management of Frame Filters. 6983@cindex managing frame filters 6984 6985Frame filters are Python based utilities to manage and decorate the 6986output of frames. @xref{Frame Filter API}, for further information. 6987 6988Managing frame filters is performed by several commands available 6989within @value{GDBN}, detailed here. 6990 6991@table @code 6992@kindex info frame-filter 6993@item info frame-filter 6994Print a list of installed frame filters from all dictionaries, showing 6995their name, priority and enabled status. 6996 6997@kindex disable frame-filter 6998@anchor{disable frame-filter all} 6999@item disable frame-filter @var{filter-dictionary} @var{filter-name} 7000Disable a frame filter in the dictionary matching 7001@var{filter-dictionary} and @var{filter-name}. The 7002@var{filter-dictionary} may be @code{all}, @code{global}, 7003@code{progspace}, or the name of the object file where the frame filter 7004dictionary resides. When @code{all} is specified, all frame filters 7005across all dictionaries are disabled. The @var{filter-name} is the name 7006of the frame filter and is used when @code{all} is not the option for 7007@var{filter-dictionary}. A disabled frame-filter is not deleted, it 7008may be enabled again later. 7009 7010@kindex enable frame-filter 7011@item enable frame-filter @var{filter-dictionary} @var{filter-name} 7012Enable a frame filter in the dictionary matching 7013@var{filter-dictionary} and @var{filter-name}. The 7014@var{filter-dictionary} may be @code{all}, @code{global}, 7015@code{progspace} or the name of the object file where the frame filter 7016dictionary resides. When @code{all} is specified, all frame filters across 7017all dictionaries are enabled. The @var{filter-name} is the name of the frame 7018filter and is used when @code{all} is not the option for 7019@var{filter-dictionary}. 7020 7021Example: 7022 7023@smallexample 7024(gdb) info frame-filter 7025 7026global frame-filters: 7027 Priority Enabled Name 7028 1000 No PrimaryFunctionFilter 7029 100 Yes Reverse 7030 7031progspace /build/test frame-filters: 7032 Priority Enabled Name 7033 100 Yes ProgspaceFilter 7034 7035objfile /build/test frame-filters: 7036 Priority Enabled Name 7037 999 Yes BuildProgra Filter 7038 7039(gdb) disable frame-filter /build/test BuildProgramFilter 7040(gdb) info frame-filter 7041 7042global frame-filters: 7043 Priority Enabled Name 7044 1000 No PrimaryFunctionFilter 7045 100 Yes Reverse 7046 7047progspace /build/test frame-filters: 7048 Priority Enabled Name 7049 100 Yes ProgspaceFilter 7050 7051objfile /build/test frame-filters: 7052 Priority Enabled Name 7053 999 No BuildProgramFilter 7054 7055(gdb) enable frame-filter global PrimaryFunctionFilter 7056(gdb) info frame-filter 7057 7058global frame-filters: 7059 Priority Enabled Name 7060 1000 Yes PrimaryFunctionFilter 7061 100 Yes Reverse 7062 7063progspace /build/test frame-filters: 7064 Priority Enabled Name 7065 100 Yes ProgspaceFilter 7066 7067objfile /build/test frame-filters: 7068 Priority Enabled Name 7069 999 No BuildProgramFilter 7070@end smallexample 7071 7072@kindex set frame-filter priority 7073@item set frame-filter priority @var{filter-dictionary} @var{filter-name} @var{priority} 7074Set the @var{priority} of a frame filter in the dictionary matching 7075@var{filter-dictionary}, and the frame filter name matching 7076@var{filter-name}. The @var{filter-dictionary} may be @code{global}, 7077@code{progspace} or the name of the object file where the frame filter 7078dictionary resides. The @var{priority} is an integer. 7079 7080@kindex show frame-filter priority 7081@item show frame-filter priority @var{filter-dictionary} @var{filter-name} 7082Show the @var{priority} of a frame filter in the dictionary matching 7083@var{filter-dictionary}, and the frame filter name matching 7084@var{filter-name}. The @var{filter-dictionary} may be @code{global}, 7085@code{progspace} or the name of the object file where the frame filter 7086dictionary resides. 7087 7088Example: 7089 7090@smallexample 7091(gdb) info frame-filter 7092 7093global frame-filters: 7094 Priority Enabled Name 7095 1000 Yes PrimaryFunctionFilter 7096 100 Yes Reverse 7097 7098progspace /build/test frame-filters: 7099 Priority Enabled Name 7100 100 Yes ProgspaceFilter 7101 7102objfile /build/test frame-filters: 7103 Priority Enabled Name 7104 999 No BuildProgramFilter 7105 7106(gdb) set frame-filter priority global Reverse 50 7107(gdb) info frame-filter 7108 7109global frame-filters: 7110 Priority Enabled Name 7111 1000 Yes PrimaryFunctionFilter 7112 50 Yes Reverse 7113 7114progspace /build/test frame-filters: 7115 Priority Enabled Name 7116 100 Yes ProgspaceFilter 7117 7118objfile /build/test frame-filters: 7119 Priority Enabled Name 7120 999 No BuildProgramFilter 7121@end smallexample 7122@end table 7123 7124@node Selection 7125@section Selecting a Frame 7126 7127Most commands for examining the stack and other data in your program work on 7128whichever stack frame is selected at the moment. Here are the commands for 7129selecting a stack frame; all of them finish by printing a brief description 7130of the stack frame just selected. 7131 7132@table @code 7133@kindex frame@r{, selecting} 7134@kindex f @r{(@code{frame})} 7135@item frame @var{n} 7136@itemx f @var{n} 7137Select frame number @var{n}. Recall that frame zero is the innermost 7138(currently executing) frame, frame one is the frame that called the 7139innermost one, and so on. The highest-numbered frame is the one for 7140@code{main}. 7141 7142@item frame @var{addr} 7143@itemx f @var{addr} 7144Select the frame at address @var{addr}. This is useful mainly if the 7145chaining of stack frames has been damaged by a bug, making it 7146impossible for @value{GDBN} to assign numbers properly to all frames. In 7147addition, this can be useful when your program has multiple stacks and 7148switches between them. 7149 7150On the SPARC architecture, @code{frame} needs two addresses to 7151select an arbitrary frame: a frame pointer and a stack pointer. 7152 7153On the @acronym{MIPS} and Alpha architecture, it needs two addresses: a stack 7154pointer and a program counter. 7155 7156On the 29k architecture, it needs three addresses: a register stack 7157pointer, a program counter, and a memory stack pointer. 7158 7159@kindex up 7160@item up @var{n} 7161Move @var{n} frames up the stack; @var{n} defaults to 1. For positive 7162numbers @var{n}, this advances toward the outermost frame, to higher 7163frame numbers, to frames that have existed longer. 7164 7165@kindex down 7166@kindex do @r{(@code{down})} 7167@item down @var{n} 7168Move @var{n} frames down the stack; @var{n} defaults to 1. For 7169positive numbers @var{n}, this advances toward the innermost frame, to 7170lower frame numbers, to frames that were created more recently. 7171You may abbreviate @code{down} as @code{do}. 7172@end table 7173 7174All of these commands end by printing two lines of output describing the 7175frame. The first line shows the frame number, the function name, the 7176arguments, and the source file and line number of execution in that 7177frame. The second line shows the text of that source line. 7178 7179@need 1000 7180For example: 7181 7182@smallexample 7183@group 7184(@value{GDBP}) up 7185#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc) 7186 at env.c:10 718710 read_input_file (argv[i]); 7188@end group 7189@end smallexample 7190 7191After such a printout, the @code{list} command with no arguments 7192prints ten lines centered on the point of execution in the frame. 7193You can also edit the program at the point of execution with your favorite 7194editing program by typing @code{edit}. 7195@xref{List, ,Printing Source Lines}, 7196for details. 7197 7198@table @code 7199@kindex down-silently 7200@kindex up-silently 7201@item up-silently @var{n} 7202@itemx down-silently @var{n} 7203These two commands are variants of @code{up} and @code{down}, 7204respectively; they differ in that they do their work silently, without 7205causing display of the new frame. They are intended primarily for use 7206in @value{GDBN} command scripts, where the output might be unnecessary and 7207distracting. 7208@end table 7209 7210@node Frame Info 7211@section Information About a Frame 7212 7213There are several other commands to print information about the selected 7214stack frame. 7215 7216@table @code 7217@item frame 7218@itemx f 7219When used without any argument, this command does not change which 7220frame is selected, but prints a brief description of the currently 7221selected stack frame. It can be abbreviated @code{f}. With an 7222argument, this command is used to select a stack frame. 7223@xref{Selection, ,Selecting a Frame}. 7224 7225@kindex info frame 7226@kindex info f @r{(@code{info frame})} 7227@item info frame 7228@itemx info f 7229This command prints a verbose description of the selected stack frame, 7230including: 7231 7232@itemize @bullet 7233@item 7234the address of the frame 7235@item 7236the address of the next frame down (called by this frame) 7237@item 7238the address of the next frame up (caller of this frame) 7239@item 7240the language in which the source code corresponding to this frame is written 7241@item 7242the address of the frame's arguments 7243@item 7244the address of the frame's local variables 7245@item 7246the program counter saved in it (the address of execution in the caller frame) 7247@item 7248which registers were saved in the frame 7249@end itemize 7250 7251@noindent The verbose description is useful when 7252something has gone wrong that has made the stack format fail to fit 7253the usual conventions. 7254 7255@item info frame @var{addr} 7256@itemx info f @var{addr} 7257Print a verbose description of the frame at address @var{addr}, without 7258selecting that frame. The selected frame remains unchanged by this 7259command. This requires the same kind of address (more than one for some 7260architectures) that you specify in the @code{frame} command. 7261@xref{Selection, ,Selecting a Frame}. 7262 7263@kindex info args 7264@item info args 7265Print the arguments of the selected frame, each on a separate line. 7266 7267@item info locals 7268@kindex info locals 7269Print the local variables of the selected frame, each on a separate 7270line. These are all variables (declared either static or automatic) 7271accessible at the point of execution of the selected frame. 7272 7273@end table 7274 7275 7276@node Source 7277@chapter Examining Source Files 7278 7279@value{GDBN} can print parts of your program's source, since the debugging 7280information recorded in the program tells @value{GDBN} what source files were 7281used to build it. When your program stops, @value{GDBN} spontaneously prints 7282the line where it stopped. Likewise, when you select a stack frame 7283(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where 7284execution in that frame has stopped. You can print other portions of 7285source files by explicit command. 7286 7287If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may 7288prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using 7289@value{GDBN} under @sc{gnu} Emacs}. 7290 7291@menu 7292* List:: Printing source lines 7293* Specify Location:: How to specify code locations 7294* Edit:: Editing source files 7295* Search:: Searching source files 7296* Source Path:: Specifying source directories 7297* Machine Code:: Source and machine code 7298@end menu 7299 7300@node List 7301@section Printing Source Lines 7302 7303@kindex list 7304@kindex l @r{(@code{list})} 7305To print lines from a source file, use the @code{list} command 7306(abbreviated @code{l}). By default, ten lines are printed. 7307There are several ways to specify what part of the file you want to 7308print; see @ref{Specify Location}, for the full list. 7309 7310Here are the forms of the @code{list} command most commonly used: 7311 7312@table @code 7313@item list @var{linenum} 7314Print lines centered around line number @var{linenum} in the 7315current source file. 7316 7317@item list @var{function} 7318Print lines centered around the beginning of function 7319@var{function}. 7320 7321@item list 7322Print more lines. If the last lines printed were printed with a 7323@code{list} command, this prints lines following the last lines 7324printed; however, if the last line printed was a solitary line printed 7325as part of displaying a stack frame (@pxref{Stack, ,Examining the 7326Stack}), this prints lines centered around that line. 7327 7328@item list - 7329Print lines just before the lines last printed. 7330@end table 7331 7332@cindex @code{list}, how many lines to display 7333By default, @value{GDBN} prints ten source lines with any of these forms of 7334the @code{list} command. You can change this using @code{set listsize}: 7335 7336@table @code 7337@kindex set listsize 7338@item set listsize @var{count} 7339@itemx set listsize unlimited 7340Make the @code{list} command display @var{count} source lines (unless 7341the @code{list} argument explicitly specifies some other number). 7342Setting @var{count} to @code{unlimited} or 0 means there's no limit. 7343 7344@kindex show listsize 7345@item show listsize 7346Display the number of lines that @code{list} prints. 7347@end table 7348 7349Repeating a @code{list} command with @key{RET} discards the argument, 7350so it is equivalent to typing just @code{list}. This is more useful 7351than listing the same lines again. An exception is made for an 7352argument of @samp{-}; that argument is preserved in repetition so that 7353each repetition moves up in the source file. 7354 7355In general, the @code{list} command expects you to supply zero, one or two 7356@dfn{linespecs}. Linespecs specify source lines; there are several ways 7357of writing them (@pxref{Specify Location}), but the effect is always 7358to specify some source line. 7359 7360Here is a complete description of the possible arguments for @code{list}: 7361 7362@table @code 7363@item list @var{linespec} 7364Print lines centered around the line specified by @var{linespec}. 7365 7366@item list @var{first},@var{last} 7367Print lines from @var{first} to @var{last}. Both arguments are 7368linespecs. When a @code{list} command has two linespecs, and the 7369source file of the second linespec is omitted, this refers to 7370the same source file as the first linespec. 7371 7372@item list ,@var{last} 7373Print lines ending with @var{last}. 7374 7375@item list @var{first}, 7376Print lines starting with @var{first}. 7377 7378@item list + 7379Print lines just after the lines last printed. 7380 7381@item list - 7382Print lines just before the lines last printed. 7383 7384@item list 7385As described in the preceding table. 7386@end table 7387 7388@node Specify Location 7389@section Specifying a Location 7390@cindex specifying location 7391@cindex linespec 7392 7393Several @value{GDBN} commands accept arguments that specify a location 7394of your program's code. Since @value{GDBN} is a source-level 7395debugger, a location usually specifies some line in the source code; 7396for that reason, locations are also known as @dfn{linespecs}. 7397 7398Here are all the different ways of specifying a code location that 7399@value{GDBN} understands: 7400 7401@table @code 7402@item @var{linenum} 7403Specifies the line number @var{linenum} of the current source file. 7404 7405@item -@var{offset} 7406@itemx +@var{offset} 7407Specifies the line @var{offset} lines before or after the @dfn{current 7408line}. For the @code{list} command, the current line is the last one 7409printed; for the breakpoint commands, this is the line at which 7410execution stopped in the currently selected @dfn{stack frame} 7411(@pxref{Frames, ,Frames}, for a description of stack frames.) When 7412used as the second of the two linespecs in a @code{list} command, 7413this specifies the line @var{offset} lines up or down from the first 7414linespec. 7415 7416@item @var{filename}:@var{linenum} 7417Specifies the line @var{linenum} in the source file @var{filename}. 7418If @var{filename} is a relative file name, then it will match any 7419source file name with the same trailing components. For example, if 7420@var{filename} is @samp{gcc/expr.c}, then it will match source file 7421name of @file{/build/trunk/gcc/expr.c}, but not 7422@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}. 7423 7424@item @var{function} 7425Specifies the line that begins the body of the function @var{function}. 7426For example, in C, this is the line with the open brace. 7427 7428@item @var{function}:@var{label} 7429Specifies the line where @var{label} appears in @var{function}. 7430 7431@item @var{filename}:@var{function} 7432Specifies the line that begins the body of the function @var{function} 7433in the file @var{filename}. You only need the file name with a 7434function name to avoid ambiguity when there are identically named 7435functions in different source files. 7436 7437@item @var{label} 7438Specifies the line at which the label named @var{label} appears. 7439@value{GDBN} searches for the label in the function corresponding to 7440the currently selected stack frame. If there is no current selected 7441stack frame (for instance, if the inferior is not running), then 7442@value{GDBN} will not search for a label. 7443 7444@item *@var{address} 7445Specifies the program address @var{address}. For line-oriented 7446commands, such as @code{list} and @code{edit}, this specifies a source 7447line that contains @var{address}. For @code{break} and other 7448breakpoint oriented commands, this can be used to set breakpoints in 7449parts of your program which do not have debugging information or 7450source files. 7451 7452Here @var{address} may be any expression valid in the current working 7453language (@pxref{Languages, working language}) that specifies a code 7454address. In addition, as a convenience, @value{GDBN} extends the 7455semantics of expressions used in locations to cover the situations 7456that frequently happen during debugging. Here are the various forms 7457of @var{address}: 7458 7459@table @code 7460@item @var{expression} 7461Any expression valid in the current working language. 7462 7463@item @var{funcaddr} 7464An address of a function or procedure derived from its name. In C, 7465C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is 7466simply the function's name @var{function} (and actually a special case 7467of a valid expression). In Pascal and Modula-2, this is 7468@code{&@var{function}}. In Ada, this is @code{@var{function}'Address} 7469(although the Pascal form also works). 7470 7471This form specifies the address of the function's first instruction, 7472before the stack frame and arguments have been set up. 7473 7474@item '@var{filename}'::@var{funcaddr} 7475Like @var{funcaddr} above, but also specifies the name of the source 7476file explicitly. This is useful if the name of the function does not 7477specify the function unambiguously, e.g., if there are several 7478functions with identical names in different source files. 7479@end table 7480 7481@cindex breakpoint at static probe point 7482@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name} 7483The @sc{gnu}/Linux tool @code{SystemTap} provides a way for 7484applications to embed static probes. @xref{Static Probe Points}, for more 7485information on finding and using static probes. This form of linespec 7486specifies the location of such a static probe. 7487 7488If @var{objfile} is given, only probes coming from that shared library 7489or executable matching @var{objfile} as a regular expression are considered. 7490If @var{provider} is given, then only probes from that provider are considered. 7491If several probes match the spec, @value{GDBN} will insert a breakpoint at 7492each one of those probes. 7493 7494@end table 7495 7496 7497@node Edit 7498@section Editing Source Files 7499@cindex editing source files 7500 7501@kindex edit 7502@kindex e @r{(@code{edit})} 7503To edit the lines in a source file, use the @code{edit} command. 7504The editing program of your choice 7505is invoked with the current line set to 7506the active line in the program. 7507Alternatively, there are several ways to specify what part of the file you 7508want to print if you want to see other parts of the program: 7509 7510@table @code 7511@item edit @var{location} 7512Edit the source file specified by @code{location}. Editing starts at 7513that @var{location}, e.g., at the specified source line of the 7514specified file. @xref{Specify Location}, for all the possible forms 7515of the @var{location} argument; here are the forms of the @code{edit} 7516command most commonly used: 7517 7518@table @code 7519@item edit @var{number} 7520Edit the current source file with @var{number} as the active line number. 7521 7522@item edit @var{function} 7523Edit the file containing @var{function} at the beginning of its definition. 7524@end table 7525 7526@end table 7527 7528@subsection Choosing your Editor 7529You can customize @value{GDBN} to use any editor you want 7530@footnote{ 7531The only restriction is that your editor (say @code{ex}), recognizes the 7532following command-line syntax: 7533@smallexample 7534ex +@var{number} file 7535@end smallexample 7536The optional numeric value +@var{number} specifies the number of the line in 7537the file where to start editing.}. 7538By default, it is @file{@value{EDITOR}}, but you can change this 7539by setting the environment variable @code{EDITOR} before using 7540@value{GDBN}. For example, to configure @value{GDBN} to use the 7541@code{vi} editor, you could use these commands with the @code{sh} shell: 7542@smallexample 7543EDITOR=/usr/bin/vi 7544export EDITOR 7545gdb @dots{} 7546@end smallexample 7547or in the @code{csh} shell, 7548@smallexample 7549setenv EDITOR /usr/bin/vi 7550gdb @dots{} 7551@end smallexample 7552 7553@node Search 7554@section Searching Source Files 7555@cindex searching source files 7556 7557There are two commands for searching through the current source file for a 7558regular expression. 7559 7560@table @code 7561@kindex search 7562@kindex forward-search 7563@kindex fo @r{(@code{forward-search})} 7564@item forward-search @var{regexp} 7565@itemx search @var{regexp} 7566The command @samp{forward-search @var{regexp}} checks each line, 7567starting with the one following the last line listed, for a match for 7568@var{regexp}. It lists the line that is found. You can use the 7569synonym @samp{search @var{regexp}} or abbreviate the command name as 7570@code{fo}. 7571 7572@kindex reverse-search 7573@item reverse-search @var{regexp} 7574The command @samp{reverse-search @var{regexp}} checks each line, starting 7575with the one before the last line listed and going backward, for a match 7576for @var{regexp}. It lists the line that is found. You can abbreviate 7577this command as @code{rev}. 7578@end table 7579 7580@node Source Path 7581@section Specifying Source Directories 7582 7583@cindex source path 7584@cindex directories for source files 7585Executable programs sometimes do not record the directories of the source 7586files from which they were compiled, just the names. Even when they do, 7587the directories could be moved between the compilation and your debugging 7588session. @value{GDBN} has a list of directories to search for source files; 7589this is called the @dfn{source path}. Each time @value{GDBN} wants a source file, 7590it tries all the directories in the list, in the order they are present 7591in the list, until it finds a file with the desired name. 7592 7593For example, suppose an executable references the file 7594@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is 7595@file{/mnt/cross}. The file is first looked up literally; if this 7596fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this 7597fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error 7598message is printed. @value{GDBN} does not look up the parts of the 7599source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}. 7600Likewise, the subdirectories of the source path are not searched: if 7601the source path is @file{/mnt/cross}, and the binary refers to 7602@file{foo.c}, @value{GDBN} would not find it under 7603@file{/mnt/cross/usr/src/foo-1.0/lib}. 7604 7605Plain file names, relative file names with leading directories, file 7606names containing dots, etc.@: are all treated as described above; for 7607instance, if the source path is @file{/mnt/cross}, and the source file 7608is recorded as @file{../lib/foo.c}, @value{GDBN} would first try 7609@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after 7610that---@file{/mnt/cross/foo.c}. 7611 7612Note that the executable search path is @emph{not} used to locate the 7613source files. 7614 7615Whenever you reset or rearrange the source path, @value{GDBN} clears out 7616any information it has cached about where source files are found and where 7617each line is in the file. 7618 7619@kindex directory 7620@kindex dir 7621When you start @value{GDBN}, its source path includes only @samp{cdir} 7622and @samp{cwd}, in that order. 7623To add other directories, use the @code{directory} command. 7624 7625The search path is used to find both program source files and @value{GDBN} 7626script files (read using the @samp{-command} option and @samp{source} command). 7627 7628In addition to the source path, @value{GDBN} provides a set of commands 7629that manage a list of source path substitution rules. A @dfn{substitution 7630rule} specifies how to rewrite source directories stored in the program's 7631debug information in case the sources were moved to a different 7632directory between compilation and debugging. A rule is made of 7633two strings, the first specifying what needs to be rewritten in 7634the path, and the second specifying how it should be rewritten. 7635In @ref{set substitute-path}, we name these two parts @var{from} and 7636@var{to} respectively. @value{GDBN} does a simple string replacement 7637of @var{from} with @var{to} at the start of the directory part of the 7638source file name, and uses that result instead of the original file 7639name to look up the sources. 7640 7641Using the previous example, suppose the @file{foo-1.0} tree has been 7642moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell 7643@value{GDBN} to replace @file{/usr/src} in all source path names with 7644@file{/mnt/cross}. The first lookup will then be 7645@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location 7646of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path 7647substitution rule, use the @code{set substitute-path} command 7648(@pxref{set substitute-path}). 7649 7650To avoid unexpected substitution results, a rule is applied only if the 7651@var{from} part of the directory name ends at a directory separator. 7652For instance, a rule substituting @file{/usr/source} into 7653@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but 7654not to @file{/usr/sourceware/foo-2.0}. And because the substitution 7655is applied only at the beginning of the directory name, this rule will 7656not be applied to @file{/root/usr/source/baz.c} either. 7657 7658In many cases, you can achieve the same result using the @code{directory} 7659command. However, @code{set substitute-path} can be more efficient in 7660the case where the sources are organized in a complex tree with multiple 7661subdirectories. With the @code{directory} command, you need to add each 7662subdirectory of your project. If you moved the entire tree while 7663preserving its internal organization, then @code{set substitute-path} 7664allows you to direct the debugger to all the sources with one single 7665command. 7666 7667@code{set substitute-path} is also more than just a shortcut command. 7668The source path is only used if the file at the original location no 7669longer exists. On the other hand, @code{set substitute-path} modifies 7670the debugger behavior to look at the rewritten location instead. So, if 7671for any reason a source file that is not relevant to your executable is 7672located at the original location, a substitution rule is the only 7673method available to point @value{GDBN} at the new location. 7674 7675@cindex @samp{--with-relocated-sources} 7676@cindex default source path substitution 7677You can configure a default source path substitution rule by 7678configuring @value{GDBN} with the 7679@samp{--with-relocated-sources=@var{dir}} option. The @var{dir} 7680should be the name of a directory under @value{GDBN}'s configured 7681prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and 7682directory names in debug information under @var{dir} will be adjusted 7683automatically if the installed @value{GDBN} is moved to a new 7684location. This is useful if @value{GDBN}, libraries or executables 7685with debug information and corresponding source code are being moved 7686together. 7687 7688@table @code 7689@item directory @var{dirname} @dots{} 7690@item dir @var{dirname} @dots{} 7691Add directory @var{dirname} to the front of the source path. Several 7692directory names may be given to this command, separated by @samp{:} 7693(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as 7694part of absolute file names) or 7695whitespace. You may specify a directory that is already in the source 7696path; this moves it forward, so @value{GDBN} searches it sooner. 7697 7698@kindex cdir 7699@kindex cwd 7700@vindex $cdir@r{, convenience variable} 7701@vindex $cwd@r{, convenience variable} 7702@cindex compilation directory 7703@cindex current directory 7704@cindex working directory 7705@cindex directory, current 7706@cindex directory, compilation 7707You can use the string @samp{$cdir} to refer to the compilation 7708directory (if one is recorded), and @samp{$cwd} to refer to the current 7709working directory. @samp{$cwd} is not the same as @samp{.}---the former 7710tracks the current working directory as it changes during your @value{GDBN} 7711session, while the latter is immediately expanded to the current 7712directory at the time you add an entry to the source path. 7713 7714@item directory 7715Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation. 7716 7717@c RET-repeat for @code{directory} is explicitly disabled, but since 7718@c repeating it would be a no-op we do not say that. (thanks to RMS) 7719 7720@item set directories @var{path-list} 7721@kindex set directories 7722Set the source path to @var{path-list}. 7723@samp{$cdir:$cwd} are added if missing. 7724 7725@item show directories 7726@kindex show directories 7727Print the source path: show which directories it contains. 7728 7729@anchor{set substitute-path} 7730@item set substitute-path @var{from} @var{to} 7731@kindex set substitute-path 7732Define a source path substitution rule, and add it at the end of the 7733current list of existing substitution rules. If a rule with the same 7734@var{from} was already defined, then the old rule is also deleted. 7735 7736For example, if the file @file{/foo/bar/baz.c} was moved to 7737@file{/mnt/cross/baz.c}, then the command 7738 7739@smallexample 7740(@value{GDBP}) set substitute-path /usr/src /mnt/cross 7741@end smallexample 7742 7743@noindent 7744will tell @value{GDBN} to replace @samp{/usr/src} with 7745@samp{/mnt/cross}, which will allow @value{GDBN} to find the file 7746@file{baz.c} even though it was moved. 7747 7748In the case when more than one substitution rule have been defined, 7749the rules are evaluated one by one in the order where they have been 7750defined. The first one matching, if any, is selected to perform 7751the substitution. 7752 7753For instance, if we had entered the following commands: 7754 7755@smallexample 7756(@value{GDBP}) set substitute-path /usr/src/include /mnt/include 7757(@value{GDBP}) set substitute-path /usr/src /mnt/src 7758@end smallexample 7759 7760@noindent 7761@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into 7762@file{/mnt/include/defs.h} by using the first rule. However, it would 7763use the second rule to rewrite @file{/usr/src/lib/foo.c} into 7764@file{/mnt/src/lib/foo.c}. 7765 7766 7767@item unset substitute-path [path] 7768@kindex unset substitute-path 7769If a path is specified, search the current list of substitution rules 7770for a rule that would rewrite that path. Delete that rule if found. 7771A warning is emitted by the debugger if no rule could be found. 7772 7773If no path is specified, then all substitution rules are deleted. 7774 7775@item show substitute-path [path] 7776@kindex show substitute-path 7777If a path is specified, then print the source path substitution rule 7778which would rewrite that path, if any. 7779 7780If no path is specified, then print all existing source path substitution 7781rules. 7782 7783@end table 7784 7785If your source path is cluttered with directories that are no longer of 7786interest, @value{GDBN} may sometimes cause confusion by finding the wrong 7787versions of source. You can correct the situation as follows: 7788 7789@enumerate 7790@item 7791Use @code{directory} with no argument to reset the source path to its default value. 7792 7793@item 7794Use @code{directory} with suitable arguments to reinstall the 7795directories you want in the source path. You can add all the 7796directories in one command. 7797@end enumerate 7798 7799@node Machine Code 7800@section Source and Machine Code 7801@cindex source line and its code address 7802 7803You can use the command @code{info line} to map source lines to program 7804addresses (and vice versa), and the command @code{disassemble} to display 7805a range of addresses as machine instructions. You can use the command 7806@code{set disassemble-next-line} to set whether to disassemble next 7807source line when execution stops. When run under @sc{gnu} Emacs 7808mode, the @code{info line} command causes the arrow to point to the 7809line specified. Also, @code{info line} prints addresses in symbolic form as 7810well as hex. 7811 7812@table @code 7813@kindex info line 7814@item info line @var{linespec} 7815Print the starting and ending addresses of the compiled code for 7816source line @var{linespec}. You can specify source lines in any of 7817the ways documented in @ref{Specify Location}. 7818@end table 7819 7820For example, we can use @code{info line} to discover the location of 7821the object code for the first line of function 7822@code{m4_changequote}: 7823 7824@c FIXME: I think this example should also show the addresses in 7825@c symbolic form, as they usually would be displayed. 7826@smallexample 7827(@value{GDBP}) info line m4_changequote 7828Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350. 7829@end smallexample 7830 7831@noindent 7832@cindex code address and its source line 7833We can also inquire (using @code{*@var{addr}} as the form for 7834@var{linespec}) what source line covers a particular address: 7835@smallexample 7836(@value{GDBP}) info line *0x63ff 7837Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404. 7838@end smallexample 7839 7840@cindex @code{$_} and @code{info line} 7841@cindex @code{x} command, default address 7842@kindex x@r{(examine), and} info line 7843After @code{info line}, the default address for the @code{x} command 7844is changed to the starting address of the line, so that @samp{x/i} is 7845sufficient to begin examining the machine code (@pxref{Memory, 7846,Examining Memory}). Also, this address is saved as the value of the 7847convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience 7848Variables}). 7849 7850@table @code 7851@kindex disassemble 7852@cindex assembly instructions 7853@cindex instructions, assembly 7854@cindex machine instructions 7855@cindex listing machine instructions 7856@item disassemble 7857@itemx disassemble /m 7858@itemx disassemble /r 7859This specialized command dumps a range of memory as machine 7860instructions. It can also print mixed source+disassembly by specifying 7861the @code{/m} modifier and print the raw instructions in hex as well as 7862in symbolic form by specifying the @code{/r}. 7863The default memory range is the function surrounding the 7864program counter of the selected frame. A single argument to this 7865command is a program counter value; @value{GDBN} dumps the function 7866surrounding this value. When two arguments are given, they should 7867be separated by a comma, possibly surrounded by whitespace. The 7868arguments specify a range of addresses to dump, in one of two forms: 7869 7870@table @code 7871@item @var{start},@var{end} 7872the addresses from @var{start} (inclusive) to @var{end} (exclusive) 7873@item @var{start},+@var{length} 7874the addresses from @var{start} (inclusive) to 7875@code{@var{start}+@var{length}} (exclusive). 7876@end table 7877 7878@noindent 7879When 2 arguments are specified, the name of the function is also 7880printed (since there could be several functions in the given range). 7881 7882The argument(s) can be any expression yielding a numeric value, such as 7883@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}. 7884 7885If the range of memory being disassembled contains current program counter, 7886the instruction at that location is shown with a @code{=>} marker. 7887@end table 7888 7889The following example shows the disassembly of a range of addresses of 7890HP PA-RISC 2.0 code: 7891 7892@smallexample 7893(@value{GDBP}) disas 0x32c4, 0x32e4 7894Dump of assembler code from 0x32c4 to 0x32e4: 7895 0x32c4 <main+204>: addil 0,dp 7896 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26 7897 0x32cc <main+212>: ldil 0x3000,r31 7898 0x32d0 <main+216>: ble 0x3f8(sr4,r31) 7899 0x32d4 <main+220>: ldo 0(r31),rp 7900 0x32d8 <main+224>: addil -0x800,dp 7901 0x32dc <main+228>: ldo 0x588(r1),r26 7902 0x32e0 <main+232>: ldil 0x3000,r31 7903End of assembler dump. 7904@end smallexample 7905 7906Here is an example showing mixed source+assembly for Intel x86, when the 7907program is stopped just after function prologue: 7908 7909@smallexample 7910(@value{GDBP}) disas /m main 7911Dump of assembler code for function main: 79125 @{ 7913 0x08048330 <+0>: push %ebp 7914 0x08048331 <+1>: mov %esp,%ebp 7915 0x08048333 <+3>: sub $0x8,%esp 7916 0x08048336 <+6>: and $0xfffffff0,%esp 7917 0x08048339 <+9>: sub $0x10,%esp 7918 79196 printf ("Hello.\n"); 7920=> 0x0804833c <+12>: movl $0x8048440,(%esp) 7921 0x08048343 <+19>: call 0x8048284 <puts@@plt> 7922 79237 return 0; 79248 @} 7925 0x08048348 <+24>: mov $0x0,%eax 7926 0x0804834d <+29>: leave 7927 0x0804834e <+30>: ret 7928 7929End of assembler dump. 7930@end smallexample 7931 7932Here is another example showing raw instructions in hex for AMD x86-64, 7933 7934@smallexample 7935(gdb) disas /r 0x400281,+10 7936Dump of assembler code from 0x400281 to 0x40028b: 7937 0x0000000000400281: 38 36 cmp %dh,(%rsi) 7938 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax 7939 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx) 7940 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al 7941End of assembler dump. 7942@end smallexample 7943 7944Addresses cannot be specified as a linespec (@pxref{Specify Location}). 7945So, for example, if you want to disassemble function @code{bar} 7946in file @file{foo.c}, you must type @samp{disassemble 'foo.c'::bar} 7947and not @samp{disassemble foo.c:bar}. 7948 7949Some architectures have more than one commonly-used set of instruction 7950mnemonics or other syntax. 7951 7952For programs that were dynamically linked and use shared libraries, 7953instructions that call functions or branch to locations in the shared 7954libraries might show a seemingly bogus location---it's actually a 7955location of the relocation table. On some architectures, @value{GDBN} 7956might be able to resolve these to actual function names. 7957 7958@table @code 7959@kindex set disassembly-flavor 7960@cindex Intel disassembly flavor 7961@cindex AT&T disassembly flavor 7962@item set disassembly-flavor @var{instruction-set} 7963Select the instruction set to use when disassembling the 7964program via the @code{disassemble} or @code{x/i} commands. 7965 7966Currently this command is only defined for the Intel x86 family. You 7967can set @var{instruction-set} to either @code{intel} or @code{att}. 7968The default is @code{att}, the AT&T flavor used by default by Unix 7969assemblers for x86-based targets. 7970 7971@kindex show disassembly-flavor 7972@item show disassembly-flavor 7973Show the current setting of the disassembly flavor. 7974@end table 7975 7976@table @code 7977@kindex set disassemble-next-line 7978@kindex show disassemble-next-line 7979@item set disassemble-next-line 7980@itemx show disassemble-next-line 7981Control whether or not @value{GDBN} will disassemble the next source 7982line or instruction when execution stops. If ON, @value{GDBN} will 7983display disassembly of the next source line when execution of the 7984program being debugged stops. This is @emph{in addition} to 7985displaying the source line itself, which @value{GDBN} always does if 7986possible. If the next source line cannot be displayed for some reason 7987(e.g., if @value{GDBN} cannot find the source file, or there's no line 7988info in the debug info), @value{GDBN} will display disassembly of the 7989next @emph{instruction} instead of showing the next source line. If 7990AUTO, @value{GDBN} will display disassembly of next instruction only 7991if the source line cannot be displayed. This setting causes 7992@value{GDBN} to display some feedback when you step through a function 7993with no line info or whose source file is unavailable. The default is 7994OFF, which means never display the disassembly of the next line or 7995instruction. 7996@end table 7997 7998 7999@node Data 8000@chapter Examining Data 8001 8002@cindex printing data 8003@cindex examining data 8004@kindex print 8005@kindex inspect 8006The usual way to examine data in your program is with the @code{print} 8007command (abbreviated @code{p}), or its synonym @code{inspect}. It 8008evaluates and prints the value of an expression of the language your 8009program is written in (@pxref{Languages, ,Using @value{GDBN} with 8010Different Languages}). It may also print the expression using a 8011Python-based pretty-printer (@pxref{Pretty Printing}). 8012 8013@table @code 8014@item print @var{expr} 8015@itemx print /@var{f} @var{expr} 8016@var{expr} is an expression (in the source language). By default the 8017value of @var{expr} is printed in a format appropriate to its data type; 8018you can choose a different format by specifying @samp{/@var{f}}, where 8019@var{f} is a letter specifying the format; see @ref{Output Formats,,Output 8020Formats}. 8021 8022@item print 8023@itemx print /@var{f} 8024@cindex reprint the last value 8025If you omit @var{expr}, @value{GDBN} displays the last value again (from the 8026@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to 8027conveniently inspect the same value in an alternative format. 8028@end table 8029 8030A more low-level way of examining data is with the @code{x} command. 8031It examines data in memory at a specified address and prints it in a 8032specified format. @xref{Memory, ,Examining Memory}. 8033 8034If you are interested in information about types, or about how the 8035fields of a struct or a class are declared, use the @code{ptype @var{exp}} 8036command rather than @code{print}. @xref{Symbols, ,Examining the Symbol 8037Table}. 8038 8039@cindex exploring hierarchical data structures 8040@kindex explore 8041Another way of examining values of expressions and type information is 8042through the Python extension command @code{explore} (available only if 8043the @value{GDBN} build is configured with @code{--with-python}). It 8044offers an interactive way to start at the highest level (or, the most 8045abstract level) of the data type of an expression (or, the data type 8046itself) and explore all the way down to leaf scalar values/fields 8047embedded in the higher level data types. 8048 8049@table @code 8050@item explore @var{arg} 8051@var{arg} is either an expression (in the source language), or a type 8052visible in the current context of the program being debugged. 8053@end table 8054 8055The working of the @code{explore} command can be illustrated with an 8056example. If a data type @code{struct ComplexStruct} is defined in your 8057C program as 8058 8059@smallexample 8060struct SimpleStruct 8061@{ 8062 int i; 8063 double d; 8064@}; 8065 8066struct ComplexStruct 8067@{ 8068 struct SimpleStruct *ss_p; 8069 int arr[10]; 8070@}; 8071@end smallexample 8072 8073@noindent 8074followed by variable declarations as 8075 8076@smallexample 8077struct SimpleStruct ss = @{ 10, 1.11 @}; 8078struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @}; 8079@end smallexample 8080 8081@noindent 8082then, the value of the variable @code{cs} can be explored using the 8083@code{explore} command as follows. 8084 8085@smallexample 8086(gdb) explore cs 8087The value of `cs' is a struct/class of type `struct ComplexStruct' with 8088the following fields: 8089 8090 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'> 8091 arr = <Enter 1 to explore this field of type `int [10]'> 8092 8093Enter the field number of choice: 8094@end smallexample 8095 8096@noindent 8097Since the fields of @code{cs} are not scalar values, you are being 8098prompted to chose the field you want to explore. Let's say you choose 8099the field @code{ss_p} by entering @code{0}. Then, since this field is a 8100pointer, you will be asked if it is pointing to a single value. From 8101the declaration of @code{cs} above, it is indeed pointing to a single 8102value, hence you enter @code{y}. If you enter @code{n}, then you will 8103be asked if it were pointing to an array of values, in which case this 8104field will be explored as if it were an array. 8105 8106@smallexample 8107`cs.ss_p' is a pointer to a value of type `struct SimpleStruct' 8108Continue exploring it as a pointer to a single value [y/n]: y 8109The value of `*(cs.ss_p)' is a struct/class of type `struct 8110SimpleStruct' with the following fields: 8111 8112 i = 10 .. (Value of type `int') 8113 d = 1.1100000000000001 .. (Value of type `double') 8114 8115Press enter to return to parent value: 8116@end smallexample 8117 8118@noindent 8119If the field @code{arr} of @code{cs} was chosen for exploration by 8120entering @code{1} earlier, then since it is as array, you will be 8121prompted to enter the index of the element in the array that you want 8122to explore. 8123 8124@smallexample 8125`cs.arr' is an array of `int'. 8126Enter the index of the element you want to explore in `cs.arr': 5 8127 8128`(cs.arr)[5]' is a scalar value of type `int'. 8129 8130(cs.arr)[5] = 4 8131 8132Press enter to return to parent value: 8133@end smallexample 8134 8135In general, at any stage of exploration, you can go deeper towards the 8136leaf values by responding to the prompts appropriately, or hit the 8137return key to return to the enclosing data structure (the @i{higher} 8138level data structure). 8139 8140Similar to exploring values, you can use the @code{explore} command to 8141explore types. Instead of specifying a value (which is typically a 8142variable name or an expression valid in the current context of the 8143program being debugged), you specify a type name. If you consider the 8144same example as above, your can explore the type 8145@code{struct ComplexStruct} by passing the argument 8146@code{struct ComplexStruct} to the @code{explore} command. 8147 8148@smallexample 8149(gdb) explore struct ComplexStruct 8150@end smallexample 8151 8152@noindent 8153By responding to the prompts appropriately in the subsequent interactive 8154session, you can explore the type @code{struct ComplexStruct} in a 8155manner similar to how the value @code{cs} was explored in the above 8156example. 8157 8158The @code{explore} command also has two sub-commands, 8159@code{explore value} and @code{explore type}. The former sub-command is 8160a way to explicitly specify that value exploration of the argument is 8161being invoked, while the latter is a way to explicitly specify that type 8162exploration of the argument is being invoked. 8163 8164@table @code 8165@item explore value @var{expr} 8166@cindex explore value 8167This sub-command of @code{explore} explores the value of the 8168expression @var{expr} (if @var{expr} is an expression valid in the 8169current context of the program being debugged). The behavior of this 8170command is identical to that of the behavior of the @code{explore} 8171command being passed the argument @var{expr}. 8172 8173@item explore type @var{arg} 8174@cindex explore type 8175This sub-command of @code{explore} explores the type of @var{arg} (if 8176@var{arg} is a type visible in the current context of program being 8177debugged), or the type of the value/expression @var{arg} (if @var{arg} 8178is an expression valid in the current context of the program being 8179debugged). If @var{arg} is a type, then the behavior of this command is 8180identical to that of the @code{explore} command being passed the 8181argument @var{arg}. If @var{arg} is an expression, then the behavior of 8182this command will be identical to that of the @code{explore} command 8183being passed the type of @var{arg} as the argument. 8184@end table 8185 8186@menu 8187* Expressions:: Expressions 8188* Ambiguous Expressions:: Ambiguous Expressions 8189* Variables:: Program variables 8190* Arrays:: Artificial arrays 8191* Output Formats:: Output formats 8192* Memory:: Examining memory 8193* Auto Display:: Automatic display 8194* Print Settings:: Print settings 8195* Pretty Printing:: Python pretty printing 8196* Value History:: Value history 8197* Convenience Vars:: Convenience variables 8198* Convenience Funs:: Convenience functions 8199* Registers:: Registers 8200* Floating Point Hardware:: Floating point hardware 8201* Vector Unit:: Vector Unit 8202* OS Information:: Auxiliary data provided by operating system 8203* Memory Region Attributes:: Memory region attributes 8204* Dump/Restore Files:: Copy between memory and a file 8205* Core File Generation:: Cause a program dump its core 8206* Character Sets:: Debugging programs that use a different 8207 character set than GDB does 8208* Caching Target Data:: Data caching for targets 8209* Searching Memory:: Searching memory for a sequence of bytes 8210@end menu 8211 8212@node Expressions 8213@section Expressions 8214 8215@cindex expressions 8216@code{print} and many other @value{GDBN} commands accept an expression and 8217compute its value. Any kind of constant, variable or operator defined 8218by the programming language you are using is valid in an expression in 8219@value{GDBN}. This includes conditional expressions, function calls, 8220casts, and string constants. It also includes preprocessor macros, if 8221you compiled your program to include this information; see 8222@ref{Compilation}. 8223 8224@cindex arrays in expressions 8225@value{GDBN} supports array constants in expressions input by 8226the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example, 8227you can use the command @code{print @{1, 2, 3@}} to create an array 8228of three integers. If you pass an array to a function or assign it 8229to a program variable, @value{GDBN} copies the array to memory that 8230is @code{malloc}ed in the target program. 8231 8232Because C is so widespread, most of the expressions shown in examples in 8233this manual are in C. @xref{Languages, , Using @value{GDBN} with Different 8234Languages}, for information on how to use expressions in other 8235languages. 8236 8237In this section, we discuss operators that you can use in @value{GDBN} 8238expressions regardless of your programming language. 8239 8240@cindex casts, in expressions 8241Casts are supported in all languages, not just in C, because it is so 8242useful to cast a number into a pointer in order to examine a structure 8243at that address in memory. 8244@c FIXME: casts supported---Mod2 true? 8245 8246@value{GDBN} supports these operators, in addition to those common 8247to programming languages: 8248 8249@table @code 8250@item @@ 8251@samp{@@} is a binary operator for treating parts of memory as arrays. 8252@xref{Arrays, ,Artificial Arrays}, for more information. 8253 8254@item :: 8255@samp{::} allows you to specify a variable in terms of the file or 8256function where it is defined. @xref{Variables, ,Program Variables}. 8257 8258@cindex @{@var{type}@} 8259@cindex type casting memory 8260@cindex memory, viewing as typed object 8261@cindex casts, to view memory 8262@item @{@var{type}@} @var{addr} 8263Refers to an object of type @var{type} stored at address @var{addr} in 8264memory. The address @var{addr} may be any expression whose value is 8265an integer or pointer (but parentheses are required around binary 8266operators, just as in a cast). This construct is allowed regardless 8267of what kind of data is normally supposed to reside at @var{addr}. 8268@end table 8269 8270@node Ambiguous Expressions 8271@section Ambiguous Expressions 8272@cindex ambiguous expressions 8273 8274Expressions can sometimes contain some ambiguous elements. For instance, 8275some programming languages (notably Ada, C@t{++} and Objective-C) permit 8276a single function name to be defined several times, for application in 8277different contexts. This is called @dfn{overloading}. Another example 8278involving Ada is generics. A @dfn{generic package} is similar to C@t{++} 8279templates and is typically instantiated several times, resulting in 8280the same function name being defined in different contexts. 8281 8282In some cases and depending on the language, it is possible to adjust 8283the expression to remove the ambiguity. For instance in C@t{++}, you 8284can specify the signature of the function you want to break on, as in 8285@kbd{break @var{function}(@var{types})}. In Ada, using the fully 8286qualified name of your function often makes the expression unambiguous 8287as well. 8288 8289When an ambiguity that needs to be resolved is detected, the debugger 8290has the capability to display a menu of numbered choices for each 8291possibility, and then waits for the selection with the prompt @samp{>}. 8292The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}} 8293aborts the current command. If the command in which the expression was 8294used allows more than one choice to be selected, the next option in the 8295menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible 8296choices. 8297 8298For example, the following session excerpt shows an attempt to set a 8299breakpoint at the overloaded symbol @code{String::after}. 8300We choose three particular definitions of that function name: 8301 8302@c FIXME! This is likely to change to show arg type lists, at least 8303@smallexample 8304@group 8305(@value{GDBP}) b String::after 8306[0] cancel 8307[1] all 8308[2] file:String.cc; line number:867 8309[3] file:String.cc; line number:860 8310[4] file:String.cc; line number:875 8311[5] file:String.cc; line number:853 8312[6] file:String.cc; line number:846 8313[7] file:String.cc; line number:735 8314> 2 4 6 8315Breakpoint 1 at 0xb26c: file String.cc, line 867. 8316Breakpoint 2 at 0xb344: file String.cc, line 875. 8317Breakpoint 3 at 0xafcc: file String.cc, line 846. 8318Multiple breakpoints were set. 8319Use the "delete" command to delete unwanted 8320 breakpoints. 8321(@value{GDBP}) 8322@end group 8323@end smallexample 8324 8325@table @code 8326@kindex set multiple-symbols 8327@item set multiple-symbols @var{mode} 8328@cindex multiple-symbols menu 8329 8330This option allows you to adjust the debugger behavior when an expression 8331is ambiguous. 8332 8333By default, @var{mode} is set to @code{all}. If the command with which 8334the expression is used allows more than one choice, then @value{GDBN} 8335automatically selects all possible choices. For instance, inserting 8336a breakpoint on a function using an ambiguous name results in a breakpoint 8337inserted on each possible match. However, if a unique choice must be made, 8338then @value{GDBN} uses the menu to help you disambiguate the expression. 8339For instance, printing the address of an overloaded function will result 8340in the use of the menu. 8341 8342When @var{mode} is set to @code{ask}, the debugger always uses the menu 8343when an ambiguity is detected. 8344 8345Finally, when @var{mode} is set to @code{cancel}, the debugger reports 8346an error due to the ambiguity and the command is aborted. 8347 8348@kindex show multiple-symbols 8349@item show multiple-symbols 8350Show the current value of the @code{multiple-symbols} setting. 8351@end table 8352 8353@node Variables 8354@section Program Variables 8355 8356The most common kind of expression to use is the name of a variable 8357in your program. 8358 8359Variables in expressions are understood in the selected stack frame 8360(@pxref{Selection, ,Selecting a Frame}); they must be either: 8361 8362@itemize @bullet 8363@item 8364global (or file-static) 8365@end itemize 8366 8367@noindent or 8368 8369@itemize @bullet 8370@item 8371visible according to the scope rules of the 8372programming language from the point of execution in that frame 8373@end itemize 8374 8375@noindent This means that in the function 8376 8377@smallexample 8378foo (a) 8379 int a; 8380@{ 8381 bar (a); 8382 @{ 8383 int b = test (); 8384 bar (b); 8385 @} 8386@} 8387@end smallexample 8388 8389@noindent 8390you can examine and use the variable @code{a} whenever your program is 8391executing within the function @code{foo}, but you can only use or 8392examine the variable @code{b} while your program is executing inside 8393the block where @code{b} is declared. 8394 8395@cindex variable name conflict 8396There is an exception: you can refer to a variable or function whose 8397scope is a single source file even if the current execution point is not 8398in this file. But it is possible to have more than one such variable or 8399function with the same name (in different source files). If that 8400happens, referring to that name has unpredictable effects. If you wish, 8401you can specify a static variable in a particular function or file by 8402using the colon-colon (@code{::}) notation: 8403 8404@cindex colon-colon, context for variables/functions 8405@ifnotinfo 8406@c info cannot cope with a :: index entry, but why deprive hard copy readers? 8407@cindex @code{::}, context for variables/functions 8408@end ifnotinfo 8409@smallexample 8410@var{file}::@var{variable} 8411@var{function}::@var{variable} 8412@end smallexample 8413 8414@noindent 8415Here @var{file} or @var{function} is the name of the context for the 8416static @var{variable}. In the case of file names, you can use quotes to 8417make sure @value{GDBN} parses the file name as a single word---for example, 8418to print a global value of @code{x} defined in @file{f2.c}: 8419 8420@smallexample 8421(@value{GDBP}) p 'f2.c'::x 8422@end smallexample 8423 8424The @code{::} notation is normally used for referring to 8425static variables, since you typically disambiguate uses of local variables 8426in functions by selecting the appropriate frame and using the 8427simple name of the variable. However, you may also use this notation 8428to refer to local variables in frames enclosing the selected frame: 8429 8430@smallexample 8431void 8432foo (int a) 8433@{ 8434 if (a < 10) 8435 bar (a); 8436 else 8437 process (a); /* Stop here */ 8438@} 8439 8440int 8441bar (int a) 8442@{ 8443 foo (a + 5); 8444@} 8445@end smallexample 8446 8447@noindent 8448For example, if there is a breakpoint at the commented line, 8449here is what you might see 8450when the program stops after executing the call @code{bar(0)}: 8451 8452@smallexample 8453(@value{GDBP}) p a 8454$1 = 10 8455(@value{GDBP}) p bar::a 8456$2 = 5 8457(@value{GDBP}) up 2 8458#2 0x080483d0 in foo (a=5) at foobar.c:12 8459(@value{GDBP}) p a 8460$3 = 5 8461(@value{GDBP}) p bar::a 8462$4 = 0 8463@end smallexample 8464 8465@cindex C@t{++} scope resolution 8466These uses of @samp{::} are very rarely in conflict with the very 8467similar use of the same notation in C@t{++}. When they are in 8468conflict, the C@t{++} meaning takes precedence; however, this can be 8469overridden by quoting the file or function name with single quotes. 8470 8471For example, suppose the program is stopped in a method of a class 8472that has a field named @code{includefile}, and there is also an 8473include file named @file{includefile} that defines a variable, 8474@code{some_global}. 8475 8476@smallexample 8477(@value{GDBP}) p includefile 8478$1 = 23 8479(@value{GDBP}) p includefile::some_global 8480A syntax error in expression, near `'. 8481(@value{GDBP}) p 'includefile'::some_global 8482$2 = 27 8483@end smallexample 8484 8485@cindex wrong values 8486@cindex variable values, wrong 8487@cindex function entry/exit, wrong values of variables 8488@cindex optimized code, wrong values of variables 8489@quotation 8490@emph{Warning:} Occasionally, a local variable may appear to have the 8491wrong value at certain points in a function---just after entry to a new 8492scope, and just before exit. 8493@end quotation 8494You may see this problem when you are stepping by machine instructions. 8495This is because, on most machines, it takes more than one instruction to 8496set up a stack frame (including local variable definitions); if you are 8497stepping by machine instructions, variables may appear to have the wrong 8498values until the stack frame is completely built. On exit, it usually 8499also takes more than one machine instruction to destroy a stack frame; 8500after you begin stepping through that group of instructions, local 8501variable definitions may be gone. 8502 8503This may also happen when the compiler does significant optimizations. 8504To be sure of always seeing accurate values, turn off all optimization 8505when compiling. 8506 8507@cindex ``No symbol "foo" in current context'' 8508Another possible effect of compiler optimizations is to optimize 8509unused variables out of existence, or assign variables to registers (as 8510opposed to memory addresses). Depending on the support for such cases 8511offered by the debug info format used by the compiler, @value{GDBN} 8512might not be able to display values for such local variables. If that 8513happens, @value{GDBN} will print a message like this: 8514 8515@smallexample 8516No symbol "foo" in current context. 8517@end smallexample 8518 8519To solve such problems, either recompile without optimizations, or use a 8520different debug info format, if the compiler supports several such 8521formats. @xref{Compilation}, for more information on choosing compiler 8522options. @xref{C, ,C and C@t{++}}, for more information about debug 8523info formats that are best suited to C@t{++} programs. 8524 8525If you ask to print an object whose contents are unknown to 8526@value{GDBN}, e.g., because its data type is not completely specified 8527by the debug information, @value{GDBN} will say @samp{<incomplete 8528type>}. @xref{Symbols, incomplete type}, for more about this. 8529 8530If you append @kbd{@@entry} string to a function parameter name you get its 8531value at the time the function got called. If the value is not available an 8532error message is printed. Entry values are available only with some compilers. 8533Entry values are normally also printed at the function parameter list according 8534to @ref{set print entry-values}. 8535 8536@smallexample 8537Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29 853829 i++; 8539(gdb) next 854030 e (i); 8541(gdb) print i 8542$1 = 31 8543(gdb) print i@@entry 8544$2 = 30 8545@end smallexample 8546 8547Strings are identified as arrays of @code{char} values without specified 8548signedness. Arrays of either @code{signed char} or @code{unsigned char} get 8549printed as arrays of 1 byte sized integers. @code{-fsigned-char} or 8550@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN} 8551defines literal string type @code{"char"} as @code{char} without a sign. 8552For program code 8553 8554@smallexample 8555char var0[] = "A"; 8556signed char var1[] = "A"; 8557@end smallexample 8558 8559You get during debugging 8560@smallexample 8561(gdb) print var0 8562$1 = "A" 8563(gdb) print var1 8564$2 = @{65 'A', 0 '\0'@} 8565@end smallexample 8566 8567@node Arrays 8568@section Artificial Arrays 8569 8570@cindex artificial array 8571@cindex arrays 8572@kindex @@@r{, referencing memory as an array} 8573It is often useful to print out several successive objects of the 8574same type in memory; a section of an array, or an array of 8575dynamically determined size for which only a pointer exists in the 8576program. 8577 8578You can do this by referring to a contiguous span of memory as an 8579@dfn{artificial array}, using the binary operator @samp{@@}. The left 8580operand of @samp{@@} should be the first element of the desired array 8581and be an individual object. The right operand should be the desired length 8582of the array. The result is an array value whose elements are all of 8583the type of the left argument. The first element is actually the left 8584argument; the second element comes from bytes of memory immediately 8585following those that hold the first element, and so on. Here is an 8586example. If a program says 8587 8588@smallexample 8589int *array = (int *) malloc (len * sizeof (int)); 8590@end smallexample 8591 8592@noindent 8593you can print the contents of @code{array} with 8594 8595@smallexample 8596p *array@@len 8597@end smallexample 8598 8599The left operand of @samp{@@} must reside in memory. Array values made 8600with @samp{@@} in this way behave just like other arrays in terms of 8601subscripting, and are coerced to pointers when used in expressions. 8602Artificial arrays most often appear in expressions via the value history 8603(@pxref{Value History, ,Value History}), after printing one out. 8604 8605Another way to create an artificial array is to use a cast. 8606This re-interprets a value as if it were an array. 8607The value need not be in memory: 8608@smallexample 8609(@value{GDBP}) p/x (short[2])0x12345678 8610$1 = @{0x1234, 0x5678@} 8611@end smallexample 8612 8613As a convenience, if you leave the array length out (as in 8614@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill 8615the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}: 8616@smallexample 8617(@value{GDBP}) p/x (short[])0x12345678 8618$2 = @{0x1234, 0x5678@} 8619@end smallexample 8620 8621Sometimes the artificial array mechanism is not quite enough; in 8622moderately complex data structures, the elements of interest may not 8623actually be adjacent---for example, if you are interested in the values 8624of pointers in an array. One useful work-around in this situation is 8625to use a convenience variable (@pxref{Convenience Vars, ,Convenience 8626Variables}) as a counter in an expression that prints the first 8627interesting value, and then repeat that expression via @key{RET}. For 8628instance, suppose you have an array @code{dtab} of pointers to 8629structures, and you are interested in the values of a field @code{fv} 8630in each structure. Here is an example of what you might type: 8631 8632@smallexample 8633set $i = 0 8634p dtab[$i++]->fv 8635@key{RET} 8636@key{RET} 8637@dots{} 8638@end smallexample 8639 8640@node Output Formats 8641@section Output Formats 8642 8643@cindex formatted output 8644@cindex output formats 8645By default, @value{GDBN} prints a value according to its data type. Sometimes 8646this is not what you want. For example, you might want to print a number 8647in hex, or a pointer in decimal. Or you might want to view data in memory 8648at a certain address as a character string or as an instruction. To do 8649these things, specify an @dfn{output format} when you print a value. 8650 8651The simplest use of output formats is to say how to print a value 8652already computed. This is done by starting the arguments of the 8653@code{print} command with a slash and a format letter. The format 8654letters supported are: 8655 8656@table @code 8657@item x 8658Regard the bits of the value as an integer, and print the integer in 8659hexadecimal. 8660 8661@item d 8662Print as integer in signed decimal. 8663 8664@item u 8665Print as integer in unsigned decimal. 8666 8667@item o 8668Print as integer in octal. 8669 8670@item t 8671Print as integer in binary. The letter @samp{t} stands for ``two''. 8672@footnote{@samp{b} cannot be used because these format letters are also 8673used with the @code{x} command, where @samp{b} stands for ``byte''; 8674see @ref{Memory,,Examining Memory}.} 8675 8676@item a 8677@cindex unknown address, locating 8678@cindex locate address 8679Print as an address, both absolute in hexadecimal and as an offset from 8680the nearest preceding symbol. You can use this format used to discover 8681where (in what function) an unknown address is located: 8682 8683@smallexample 8684(@value{GDBP}) p/a 0x54320 8685$3 = 0x54320 <_initialize_vx+396> 8686@end smallexample 8687 8688@noindent 8689The command @code{info symbol 0x54320} yields similar results. 8690@xref{Symbols, info symbol}. 8691 8692@item c 8693Regard as an integer and print it as a character constant. This 8694prints both the numerical value and its character representation. The 8695character representation is replaced with the octal escape @samp{\nnn} 8696for characters outside the 7-bit @sc{ascii} range. 8697 8698Without this format, @value{GDBN} displays @code{char}, 8699@w{@code{unsigned char}}, and @w{@code{signed char}} data as character 8700constants. Single-byte members of vectors are displayed as integer 8701data. 8702 8703@item f 8704Regard the bits of the value as a floating point number and print 8705using typical floating point syntax. 8706 8707@item s 8708@cindex printing strings 8709@cindex printing byte arrays 8710Regard as a string, if possible. With this format, pointers to single-byte 8711data are displayed as null-terminated strings and arrays of single-byte data 8712are displayed as fixed-length strings. Other values are displayed in their 8713natural types. 8714 8715Without this format, @value{GDBN} displays pointers to and arrays of 8716@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as 8717strings. Single-byte members of a vector are displayed as an integer 8718array. 8719 8720@item z 8721Like @samp{x} formatting, the value is treated as an integer and 8722printed as hexadecimal, but leading zeros are printed to pad the value 8723to the size of the integer type. 8724 8725@item r 8726@cindex raw printing 8727Print using the @samp{raw} formatting. By default, @value{GDBN} will 8728use a Python-based pretty-printer, if one is available (@pxref{Pretty 8729Printing}). This typically results in a higher-level display of the 8730value's contents. The @samp{r} format bypasses any Python 8731pretty-printer which might exist. 8732@end table 8733 8734For example, to print the program counter in hex (@pxref{Registers}), type 8735 8736@smallexample 8737p/x $pc 8738@end smallexample 8739 8740@noindent 8741Note that no space is required before the slash; this is because command 8742names in @value{GDBN} cannot contain a slash. 8743 8744To reprint the last value in the value history with a different format, 8745you can use the @code{print} command with just a format and no 8746expression. For example, @samp{p/x} reprints the last value in hex. 8747 8748@node Memory 8749@section Examining Memory 8750 8751You can use the command @code{x} (for ``examine'') to examine memory in 8752any of several formats, independently of your program's data types. 8753 8754@cindex examining memory 8755@table @code 8756@kindex x @r{(examine memory)} 8757@item x/@var{nfu} @var{addr} 8758@itemx x @var{addr} 8759@itemx x 8760Use the @code{x} command to examine memory. 8761@end table 8762 8763@var{n}, @var{f}, and @var{u} are all optional parameters that specify how 8764much memory to display and how to format it; @var{addr} is an 8765expression giving the address where you want to start displaying memory. 8766If you use defaults for @var{nfu}, you need not type the slash @samp{/}. 8767Several commands set convenient defaults for @var{addr}. 8768 8769@table @r 8770@item @var{n}, the repeat count 8771The repeat count is a decimal integer; the default is 1. It specifies 8772how much memory (counting by units @var{u}) to display. 8773@c This really is **decimal**; unaffected by 'set radix' as of GDB 8774@c 4.1.2. 8775 8776@item @var{f}, the display format 8777The display format is one of the formats used by @code{print} 8778(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c}, 8779@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions). 8780The default is @samp{x} (hexadecimal) initially. The default changes 8781each time you use either @code{x} or @code{print}. 8782 8783@item @var{u}, the unit size 8784The unit size is any of 8785 8786@table @code 8787@item b 8788Bytes. 8789@item h 8790Halfwords (two bytes). 8791@item w 8792Words (four bytes). This is the initial default. 8793@item g 8794Giant words (eight bytes). 8795@end table 8796 8797Each time you specify a unit size with @code{x}, that size becomes the 8798default unit the next time you use @code{x}. For the @samp{i} format, 8799the unit size is ignored and is normally not written. For the @samp{s} format, 8800the unit size defaults to @samp{b}, unless it is explicitly given. 8801Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display 880232-bit strings. The next use of @kbd{x /s} will again display 8-bit strings. 8803Note that the results depend on the programming language of the 8804current compilation unit. If the language is C, the @samp{s} 8805modifier will use the UTF-16 encoding while @samp{w} will use 8806UTF-32. The encoding is set by the programming language and cannot 8807be altered. 8808 8809@item @var{addr}, starting display address 8810@var{addr} is the address where you want @value{GDBN} to begin displaying 8811memory. The expression need not have a pointer value (though it may); 8812it is always interpreted as an integer address of a byte of memory. 8813@xref{Expressions, ,Expressions}, for more information on expressions. The default for 8814@var{addr} is usually just after the last address examined---but several 8815other commands also set the default address: @code{info breakpoints} (to 8816the address of the last breakpoint listed), @code{info line} (to the 8817starting address of a line), and @code{print} (if you use it to display 8818a value from memory). 8819@end table 8820 8821For example, @samp{x/3uh 0x54320} is a request to display three halfwords 8822(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}), 8823starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four 8824words (@samp{w}) of memory above the stack pointer (here, @samp{$sp}; 8825@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}). 8826 8827Since the letters indicating unit sizes are all distinct from the 8828letters specifying output formats, you do not have to remember whether 8829unit size or format comes first; either order works. The output 8830specifications @samp{4xw} and @samp{4wx} mean exactly the same thing. 8831(However, the count @var{n} must come first; @samp{wx4} does not work.) 8832 8833Even though the unit size @var{u} is ignored for the formats @samp{s} 8834and @samp{i}, you might still want to use a count @var{n}; for example, 8835@samp{3i} specifies that you want to see three machine instructions, 8836including any operands. For convenience, especially when used with 8837the @code{display} command, the @samp{i} format also prints branch delay 8838slot instructions, if any, beyond the count specified, which immediately 8839follow the last instruction that is within the count. The command 8840@code{disassemble} gives an alternative way of inspecting machine 8841instructions; see @ref{Machine Code,,Source and Machine Code}. 8842 8843All the defaults for the arguments to @code{x} are designed to make it 8844easy to continue scanning memory with minimal specifications each time 8845you use @code{x}. For example, after you have inspected three machine 8846instructions with @samp{x/3i @var{addr}}, you can inspect the next seven 8847with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command, 8848the repeat count @var{n} is used again; the other arguments default as 8849for successive uses of @code{x}. 8850 8851When examining machine instructions, the instruction at current program 8852counter is shown with a @code{=>} marker. For example: 8853 8854@smallexample 8855(@value{GDBP}) x/5i $pc-6 8856 0x804837f <main+11>: mov %esp,%ebp 8857 0x8048381 <main+13>: push %ecx 8858 0x8048382 <main+14>: sub $0x4,%esp 8859=> 0x8048385 <main+17>: movl $0x8048460,(%esp) 8860 0x804838c <main+24>: call 0x80482d4 <puts@@plt> 8861@end smallexample 8862 8863@cindex @code{$_}, @code{$__}, and value history 8864The addresses and contents printed by the @code{x} command are not saved 8865in the value history because there is often too much of them and they 8866would get in the way. Instead, @value{GDBN} makes these values available for 8867subsequent use in expressions as values of the convenience variables 8868@code{$_} and @code{$__}. After an @code{x} command, the last address 8869examined is available for use in expressions in the convenience variable 8870@code{$_}. The contents of that address, as examined, are available in 8871the convenience variable @code{$__}. 8872 8873If the @code{x} command has a repeat count, the address and contents saved 8874are from the last memory unit printed; this is not the same as the last 8875address printed if several units were printed on the last line of output. 8876 8877@cindex remote memory comparison 8878@cindex target memory comparison 8879@cindex verify remote memory image 8880@cindex verify target memory image 8881When you are debugging a program running on a remote target machine 8882(@pxref{Remote Debugging}), you may wish to verify the program's image 8883in the remote machine's memory against the executable file you 8884downloaded to the target. Or, on any target, you may want to check 8885whether the program has corrupted its own read-only sections. The 8886@code{compare-sections} command is provided for such situations. 8887 8888@table @code 8889@kindex compare-sections 8890@item compare-sections @r{[}@var{section-name}@r{|}@code{-r}@r{]} 8891Compare the data of a loadable section @var{section-name} in the 8892executable file of the program being debugged with the same section in 8893the target machine's memory, and report any mismatches. With no 8894arguments, compares all loadable sections. With an argument of 8895@code{-r}, compares all loadable read-only sections. 8896 8897Note: for remote targets, this command can be accelerated if the 8898target supports computing the CRC checksum of a block of memory 8899(@pxref{qCRC packet}). 8900@end table 8901 8902@node Auto Display 8903@section Automatic Display 8904@cindex automatic display 8905@cindex display of expressions 8906 8907If you find that you want to print the value of an expression frequently 8908(to see how it changes), you might want to add it to the @dfn{automatic 8909display list} so that @value{GDBN} prints its value each time your program stops. 8910Each expression added to the list is given a number to identify it; 8911to remove an expression from the list, you specify that number. 8912The automatic display looks like this: 8913 8914@smallexample 89152: foo = 38 89163: bar[5] = (struct hack *) 0x3804 8917@end smallexample 8918 8919@noindent 8920This display shows item numbers, expressions and their current values. As with 8921displays you request manually using @code{x} or @code{print}, you can 8922specify the output format you prefer; in fact, @code{display} decides 8923whether to use @code{print} or @code{x} depending your format 8924specification---it uses @code{x} if you specify either the @samp{i} 8925or @samp{s} format, or a unit size; otherwise it uses @code{print}. 8926 8927@table @code 8928@kindex display 8929@item display @var{expr} 8930Add the expression @var{expr} to the list of expressions to display 8931each time your program stops. @xref{Expressions, ,Expressions}. 8932 8933@code{display} does not repeat if you press @key{RET} again after using it. 8934 8935@item display/@var{fmt} @var{expr} 8936For @var{fmt} specifying only a display format and not a size or 8937count, add the expression @var{expr} to the auto-display list but 8938arrange to display it each time in the specified format @var{fmt}. 8939@xref{Output Formats,,Output Formats}. 8940 8941@item display/@var{fmt} @var{addr} 8942For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a 8943number of units, add the expression @var{addr} as a memory address to 8944be examined each time your program stops. Examining means in effect 8945doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}. 8946@end table 8947 8948For example, @samp{display/i $pc} can be helpful, to see the machine 8949instruction about to be executed each time execution stops (@samp{$pc} 8950is a common name for the program counter; @pxref{Registers, ,Registers}). 8951 8952@table @code 8953@kindex delete display 8954@kindex undisplay 8955@item undisplay @var{dnums}@dots{} 8956@itemx delete display @var{dnums}@dots{} 8957Remove items from the list of expressions to display. Specify the 8958numbers of the displays that you want affected with the command 8959argument @var{dnums}. It can be a single display number, one of the 8960numbers shown in the first field of the @samp{info display} display; 8961or it could be a range of display numbers, as in @code{2-4}. 8962 8963@code{undisplay} does not repeat if you press @key{RET} after using it. 8964(Otherwise you would just get the error @samp{No display number @dots{}}.) 8965 8966@kindex disable display 8967@item disable display @var{dnums}@dots{} 8968Disable the display of item numbers @var{dnums}. A disabled display 8969item is not printed automatically, but is not forgotten. It may be 8970enabled again later. Specify the numbers of the displays that you 8971want affected with the command argument @var{dnums}. It can be a 8972single display number, one of the numbers shown in the first field of 8973the @samp{info display} display; or it could be a range of display 8974numbers, as in @code{2-4}. 8975 8976@kindex enable display 8977@item enable display @var{dnums}@dots{} 8978Enable display of item numbers @var{dnums}. It becomes effective once 8979again in auto display of its expression, until you specify otherwise. 8980Specify the numbers of the displays that you want affected with the 8981command argument @var{dnums}. It can be a single display number, one 8982of the numbers shown in the first field of the @samp{info display} 8983display; or it could be a range of display numbers, as in @code{2-4}. 8984 8985@item display 8986Display the current values of the expressions on the list, just as is 8987done when your program stops. 8988 8989@kindex info display 8990@item info display 8991Print the list of expressions previously set up to display 8992automatically, each one with its item number, but without showing the 8993values. This includes disabled expressions, which are marked as such. 8994It also includes expressions which would not be displayed right now 8995because they refer to automatic variables not currently available. 8996@end table 8997 8998@cindex display disabled out of scope 8999If a display expression refers to local variables, then it does not make 9000sense outside the lexical context for which it was set up. Such an 9001expression is disabled when execution enters a context where one of its 9002variables is not defined. For example, if you give the command 9003@code{display last_char} while inside a function with an argument 9004@code{last_char}, @value{GDBN} displays this argument while your program 9005continues to stop inside that function. When it stops elsewhere---where 9006there is no variable @code{last_char}---the display is disabled 9007automatically. The next time your program stops where @code{last_char} 9008is meaningful, you can enable the display expression once again. 9009 9010@node Print Settings 9011@section Print Settings 9012 9013@cindex format options 9014@cindex print settings 9015@value{GDBN} provides the following ways to control how arrays, structures, 9016and symbols are printed. 9017 9018@noindent 9019These settings are useful for debugging programs in any language: 9020 9021@table @code 9022@kindex set print 9023@item set print address 9024@itemx set print address on 9025@cindex print/don't print memory addresses 9026@value{GDBN} prints memory addresses showing the location of stack 9027traces, structure values, pointer values, breakpoints, and so forth, 9028even when it also displays the contents of those addresses. The default 9029is @code{on}. For example, this is what a stack frame display looks like with 9030@code{set print address on}: 9031 9032@smallexample 9033@group 9034(@value{GDBP}) f 9035#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") 9036 at input.c:530 9037530 if (lquote != def_lquote) 9038@end group 9039@end smallexample 9040 9041@item set print address off 9042Do not print addresses when displaying their contents. For example, 9043this is the same stack frame displayed with @code{set print address off}: 9044 9045@smallexample 9046@group 9047(@value{GDBP}) set print addr off 9048(@value{GDBP}) f 9049#0 set_quotes (lq="<<", rq=">>") at input.c:530 9050530 if (lquote != def_lquote) 9051@end group 9052@end smallexample 9053 9054You can use @samp{set print address off} to eliminate all machine 9055dependent displays from the @value{GDBN} interface. For example, with 9056@code{print address off}, you should get the same text for backtraces on 9057all machines---whether or not they involve pointer arguments. 9058 9059@kindex show print 9060@item show print address 9061Show whether or not addresses are to be printed. 9062@end table 9063 9064When @value{GDBN} prints a symbolic address, it normally prints the 9065closest earlier symbol plus an offset. If that symbol does not uniquely 9066identify the address (for example, it is a name whose scope is a single 9067source file), you may need to clarify. One way to do this is with 9068@code{info line}, for example @samp{info line *0x4537}. Alternately, 9069you can set @value{GDBN} to print the source file and line number when 9070it prints a symbolic address: 9071 9072@table @code 9073@item set print symbol-filename on 9074@cindex source file and line of a symbol 9075@cindex symbol, source file and line 9076Tell @value{GDBN} to print the source file name and line number of a 9077symbol in the symbolic form of an address. 9078 9079@item set print symbol-filename off 9080Do not print source file name and line number of a symbol. This is the 9081default. 9082 9083@item show print symbol-filename 9084Show whether or not @value{GDBN} will print the source file name and 9085line number of a symbol in the symbolic form of an address. 9086@end table 9087 9088Another situation where it is helpful to show symbol filenames and line 9089numbers is when disassembling code; @value{GDBN} shows you the line 9090number and source file that corresponds to each instruction. 9091 9092Also, you may wish to see the symbolic form only if the address being 9093printed is reasonably close to the closest earlier symbol: 9094 9095@table @code 9096@item set print max-symbolic-offset @var{max-offset} 9097@itemx set print max-symbolic-offset unlimited 9098@cindex maximum value for offset of closest symbol 9099Tell @value{GDBN} to only display the symbolic form of an address if the 9100offset between the closest earlier symbol and the address is less than 9101@var{max-offset}. The default is @code{unlimited}, which tells @value{GDBN} 9102to always print the symbolic form of an address if any symbol precedes 9103it. Zero is equivalent to @code{unlimited}. 9104 9105@item show print max-symbolic-offset 9106Ask how large the maximum offset is that @value{GDBN} prints in a 9107symbolic address. 9108@end table 9109 9110@cindex wild pointer, interpreting 9111@cindex pointer, finding referent 9112If you have a pointer and you are not sure where it points, try 9113@samp{set print symbol-filename on}. Then you can determine the name 9114and source file location of the variable where it points, using 9115@samp{p/a @var{pointer}}. This interprets the address in symbolic form. 9116For example, here @value{GDBN} shows that a variable @code{ptt} points 9117at another variable @code{t}, defined in @file{hi2.c}: 9118 9119@smallexample 9120(@value{GDBP}) set print symbol-filename on 9121(@value{GDBP}) p/a ptt 9122$4 = 0xe008 <t in hi2.c> 9123@end smallexample 9124 9125@quotation 9126@emph{Warning:} For pointers that point to a local variable, @samp{p/a} 9127does not show the symbol name and filename of the referent, even with 9128the appropriate @code{set print} options turned on. 9129@end quotation 9130 9131You can also enable @samp{/a}-like formatting all the time using 9132@samp{set print symbol on}: 9133 9134@table @code 9135@item set print symbol on 9136Tell @value{GDBN} to print the symbol corresponding to an address, if 9137one exists. 9138 9139@item set print symbol off 9140Tell @value{GDBN} not to print the symbol corresponding to an 9141address. In this mode, @value{GDBN} will still print the symbol 9142corresponding to pointers to functions. This is the default. 9143 9144@item show print symbol 9145Show whether @value{GDBN} will display the symbol corresponding to an 9146address. 9147@end table 9148 9149Other settings control how different kinds of objects are printed: 9150 9151@table @code 9152@item set print array 9153@itemx set print array on 9154@cindex pretty print arrays 9155Pretty print arrays. This format is more convenient to read, 9156but uses more space. The default is off. 9157 9158@item set print array off 9159Return to compressed format for arrays. 9160 9161@item show print array 9162Show whether compressed or pretty format is selected for displaying 9163arrays. 9164 9165@cindex print array indexes 9166@item set print array-indexes 9167@itemx set print array-indexes on 9168Print the index of each element when displaying arrays. May be more 9169convenient to locate a given element in the array or quickly find the 9170index of a given element in that printed array. The default is off. 9171 9172@item set print array-indexes off 9173Stop printing element indexes when displaying arrays. 9174 9175@item show print array-indexes 9176Show whether the index of each element is printed when displaying 9177arrays. 9178 9179@item set print elements @var{number-of-elements} 9180@itemx set print elements unlimited 9181@cindex number of array elements to print 9182@cindex limit on number of printed array elements 9183Set a limit on how many elements of an array @value{GDBN} will print. 9184If @value{GDBN} is printing a large array, it stops printing after it has 9185printed the number of elements set by the @code{set print elements} command. 9186This limit also applies to the display of strings. 9187When @value{GDBN} starts, this limit is set to 200. 9188Setting @var{number-of-elements} to @code{unlimited} or zero means 9189that the number of elements to print is unlimited. 9190 9191@item show print elements 9192Display the number of elements of a large array that @value{GDBN} will print. 9193If the number is 0, then the printing is unlimited. 9194 9195@item set print frame-arguments @var{value} 9196@kindex set print frame-arguments 9197@cindex printing frame argument values 9198@cindex print all frame argument values 9199@cindex print frame argument values for scalars only 9200@cindex do not print frame argument values 9201This command allows to control how the values of arguments are printed 9202when the debugger prints a frame (@pxref{Frames}). The possible 9203values are: 9204 9205@table @code 9206@item all 9207The values of all arguments are printed. 9208 9209@item scalars 9210Print the value of an argument only if it is a scalar. The value of more 9211complex arguments such as arrays, structures, unions, etc, is replaced 9212by @code{@dots{}}. This is the default. Here is an example where 9213only scalar arguments are shown: 9214 9215@smallexample 9216#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green) 9217 at frame-args.c:23 9218@end smallexample 9219 9220@item none 9221None of the argument values are printed. Instead, the value of each argument 9222is replaced by @code{@dots{}}. In this case, the example above now becomes: 9223 9224@smallexample 9225#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{}) 9226 at frame-args.c:23 9227@end smallexample 9228@end table 9229 9230By default, only scalar arguments are printed. This command can be used 9231to configure the debugger to print the value of all arguments, regardless 9232of their type. However, it is often advantageous to not print the value 9233of more complex parameters. For instance, it reduces the amount of 9234information printed in each frame, making the backtrace more readable. 9235Also, it improves performance when displaying Ada frames, because 9236the computation of large arguments can sometimes be CPU-intensive, 9237especially in large applications. Setting @code{print frame-arguments} 9238to @code{scalars} (the default) or @code{none} avoids this computation, 9239thus speeding up the display of each Ada frame. 9240 9241@item show print frame-arguments 9242Show how the value of arguments should be displayed when printing a frame. 9243 9244@item set print raw frame-arguments on 9245Print frame arguments in raw, non pretty-printed, form. 9246 9247@item set print raw frame-arguments off 9248Print frame arguments in pretty-printed form, if there is a pretty-printer 9249for the value (@pxref{Pretty Printing}), 9250otherwise print the value in raw form. 9251This is the default. 9252 9253@item show print raw frame-arguments 9254Show whether to print frame arguments in raw form. 9255 9256@anchor{set print entry-values} 9257@item set print entry-values @var{value} 9258@kindex set print entry-values 9259Set printing of frame argument values at function entry. In some cases 9260@value{GDBN} can determine the value of function argument which was passed by 9261the function caller, even if the value was modified inside the called function 9262and therefore is different. With optimized code, the current value could be 9263unavailable, but the entry value may still be known. 9264 9265The default value is @code{default} (see below for its description). Older 9266@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting 9267this feature will behave in the @code{default} setting the same way as with the 9268@code{no} setting. 9269 9270This functionality is currently supported only by DWARF 2 debugging format and 9271the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With 9272@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 9273this information. 9274 9275The @var{value} parameter can be one of the following: 9276 9277@table @code 9278@item no 9279Print only actual parameter values, never print values from function entry 9280point. 9281@smallexample 9282#0 equal (val=5) 9283#0 different (val=6) 9284#0 lost (val=<optimized out>) 9285#0 born (val=10) 9286#0 invalid (val=<optimized out>) 9287@end smallexample 9288 9289@item only 9290Print only parameter values from function entry point. The actual parameter 9291values are never printed. 9292@smallexample 9293#0 equal (val@@entry=5) 9294#0 different (val@@entry=5) 9295#0 lost (val@@entry=5) 9296#0 born (val@@entry=<optimized out>) 9297#0 invalid (val@@entry=<optimized out>) 9298@end smallexample 9299 9300@item preferred 9301Print only parameter values from function entry point. If value from function 9302entry point is not known while the actual value is known, print the actual 9303value for such parameter. 9304@smallexample 9305#0 equal (val@@entry=5) 9306#0 different (val@@entry=5) 9307#0 lost (val@@entry=5) 9308#0 born (val=10) 9309#0 invalid (val@@entry=<optimized out>) 9310@end smallexample 9311 9312@item if-needed 9313Print actual parameter values. If actual parameter value is not known while 9314value from function entry point is known, print the entry point value for such 9315parameter. 9316@smallexample 9317#0 equal (val=5) 9318#0 different (val=6) 9319#0 lost (val@@entry=5) 9320#0 born (val=10) 9321#0 invalid (val=<optimized out>) 9322@end smallexample 9323 9324@item both 9325Always print both the actual parameter value and its value from function entry 9326point, even if values of one or both are not available due to compiler 9327optimizations. 9328@smallexample 9329#0 equal (val=5, val@@entry=5) 9330#0 different (val=6, val@@entry=5) 9331#0 lost (val=<optimized out>, val@@entry=5) 9332#0 born (val=10, val@@entry=<optimized out>) 9333#0 invalid (val=<optimized out>, val@@entry=<optimized out>) 9334@end smallexample 9335 9336@item compact 9337Print the actual parameter value if it is known and also its value from 9338function entry point if it is known. If neither is known, print for the actual 9339value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both 9340values are known and identical, print the shortened 9341@code{param=param@@entry=VALUE} notation. 9342@smallexample 9343#0 equal (val=val@@entry=5) 9344#0 different (val=6, val@@entry=5) 9345#0 lost (val@@entry=5) 9346#0 born (val=10) 9347#0 invalid (val=<optimized out>) 9348@end smallexample 9349 9350@item default 9351Always print the actual parameter value. Print also its value from function 9352entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and 9353if both values are known and identical, print the shortened 9354@code{param=param@@entry=VALUE} notation. 9355@smallexample 9356#0 equal (val=val@@entry=5) 9357#0 different (val=6, val@@entry=5) 9358#0 lost (val=<optimized out>, val@@entry=5) 9359#0 born (val=10) 9360#0 invalid (val=<optimized out>) 9361@end smallexample 9362@end table 9363 9364For analysis messages on possible failures of frame argument values at function 9365entry resolution see @ref{set debug entry-values}. 9366 9367@item show print entry-values 9368Show the method being used for printing of frame argument values at function 9369entry. 9370 9371@item set print repeats @var{number-of-repeats} 9372@itemx set print repeats unlimited 9373@cindex repeated array elements 9374Set the threshold for suppressing display of repeated array 9375elements. When the number of consecutive identical elements of an 9376array exceeds the threshold, @value{GDBN} prints the string 9377@code{"<repeats @var{n} times>"}, where @var{n} is the number of 9378identical repetitions, instead of displaying the identical elements 9379themselves. Setting the threshold to @code{unlimited} or zero will 9380cause all elements to be individually printed. The default threshold 9381is 10. 9382 9383@item show print repeats 9384Display the current threshold for printing repeated identical 9385elements. 9386 9387@item set print null-stop 9388@cindex @sc{null} elements in arrays 9389Cause @value{GDBN} to stop printing the characters of an array when the first 9390@sc{null} is encountered. This is useful when large arrays actually 9391contain only short strings. 9392The default is off. 9393 9394@item show print null-stop 9395Show whether @value{GDBN} stops printing an array on the first 9396@sc{null} character. 9397 9398@item set print pretty on 9399@cindex print structures in indented form 9400@cindex indentation in structure display 9401Cause @value{GDBN} to print structures in an indented format with one member 9402per line, like this: 9403 9404@smallexample 9405@group 9406$1 = @{ 9407 next = 0x0, 9408 flags = @{ 9409 sweet = 1, 9410 sour = 1 9411 @}, 9412 meat = 0x54 "Pork" 9413@} 9414@end group 9415@end smallexample 9416 9417@item set print pretty off 9418Cause @value{GDBN} to print structures in a compact format, like this: 9419 9420@smallexample 9421@group 9422$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \ 9423meat = 0x54 "Pork"@} 9424@end group 9425@end smallexample 9426 9427@noindent 9428This is the default format. 9429 9430@item show print pretty 9431Show which format @value{GDBN} is using to print structures. 9432 9433@item set print sevenbit-strings on 9434@cindex eight-bit characters in strings 9435@cindex octal escapes in strings 9436Print using only seven-bit characters; if this option is set, 9437@value{GDBN} displays any eight-bit characters (in strings or 9438character values) using the notation @code{\}@var{nnn}. This setting is 9439best if you are working in English (@sc{ascii}) and you use the 9440high-order bit of characters as a marker or ``meta'' bit. 9441 9442@item set print sevenbit-strings off 9443Print full eight-bit characters. This allows the use of more 9444international character sets, and is the default. 9445 9446@item show print sevenbit-strings 9447Show whether or not @value{GDBN} is printing only seven-bit characters. 9448 9449@item set print union on 9450@cindex unions in structures, printing 9451Tell @value{GDBN} to print unions which are contained in structures 9452and other unions. This is the default setting. 9453 9454@item set print union off 9455Tell @value{GDBN} not to print unions which are contained in 9456structures and other unions. @value{GDBN} will print @code{"@{...@}"} 9457instead. 9458 9459@item show print union 9460Ask @value{GDBN} whether or not it will print unions which are contained in 9461structures and other unions. 9462 9463For example, given the declarations 9464 9465@smallexample 9466typedef enum @{Tree, Bug@} Species; 9467typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms; 9468typedef enum @{Caterpillar, Cocoon, Butterfly@} 9469 Bug_forms; 9470 9471struct thing @{ 9472 Species it; 9473 union @{ 9474 Tree_forms tree; 9475 Bug_forms bug; 9476 @} form; 9477@}; 9478 9479struct thing foo = @{Tree, @{Acorn@}@}; 9480@end smallexample 9481 9482@noindent 9483with @code{set print union on} in effect @samp{p foo} would print 9484 9485@smallexample 9486$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@} 9487@end smallexample 9488 9489@noindent 9490and with @code{set print union off} in effect it would print 9491 9492@smallexample 9493$1 = @{it = Tree, form = @{...@}@} 9494@end smallexample 9495 9496@noindent 9497@code{set print union} affects programs written in C-like languages 9498and in Pascal. 9499@end table 9500 9501@need 1000 9502@noindent 9503These settings are of interest when debugging C@t{++} programs: 9504 9505@table @code 9506@cindex demangling C@t{++} names 9507@item set print demangle 9508@itemx set print demangle on 9509Print C@t{++} names in their source form rather than in the encoded 9510(``mangled'') form passed to the assembler and linker for type-safe 9511linkage. The default is on. 9512 9513@item show print demangle 9514Show whether C@t{++} names are printed in mangled or demangled form. 9515 9516@item set print asm-demangle 9517@itemx set print asm-demangle on 9518Print C@t{++} names in their source form rather than their mangled form, even 9519in assembler code printouts such as instruction disassemblies. 9520The default is off. 9521 9522@item show print asm-demangle 9523Show whether C@t{++} names in assembly listings are printed in mangled 9524or demangled form. 9525 9526@cindex C@t{++} symbol decoding style 9527@cindex symbol decoding style, C@t{++} 9528@kindex set demangle-style 9529@item set demangle-style @var{style} 9530Choose among several encoding schemes used by different compilers to 9531represent C@t{++} names. The choices for @var{style} are currently: 9532 9533@table @code 9534@item auto 9535Allow @value{GDBN} to choose a decoding style by inspecting your program. 9536This is the default. 9537 9538@item gnu 9539Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm. 9540 9541@item hp 9542Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm. 9543 9544@item lucid 9545Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm. 9546 9547@item arm 9548Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}. 9549@strong{Warning:} this setting alone is not sufficient to allow 9550debugging @code{cfront}-generated executables. @value{GDBN} would 9551require further enhancement to permit that. 9552 9553@end table 9554If you omit @var{style}, you will see a list of possible formats. 9555 9556@item show demangle-style 9557Display the encoding style currently in use for decoding C@t{++} symbols. 9558 9559@item set print object 9560@itemx set print object on 9561@cindex derived type of an object, printing 9562@cindex display derived types 9563When displaying a pointer to an object, identify the @emph{actual} 9564(derived) type of the object rather than the @emph{declared} type, using 9565the virtual function table. Note that the virtual function table is 9566required---this feature can only work for objects that have run-time 9567type identification; a single virtual method in the object's declared 9568type is sufficient. Note that this setting is also taken into account when 9569working with variable objects via MI (@pxref{GDB/MI}). 9570 9571@item set print object off 9572Display only the declared type of objects, without reference to the 9573virtual function table. This is the default setting. 9574 9575@item show print object 9576Show whether actual, or declared, object types are displayed. 9577 9578@item set print static-members 9579@itemx set print static-members on 9580@cindex static members of C@t{++} objects 9581Print static members when displaying a C@t{++} object. The default is on. 9582 9583@item set print static-members off 9584Do not print static members when displaying a C@t{++} object. 9585 9586@item show print static-members 9587Show whether C@t{++} static members are printed or not. 9588 9589@item set print pascal_static-members 9590@itemx set print pascal_static-members on 9591@cindex static members of Pascal objects 9592@cindex Pascal objects, static members display 9593Print static members when displaying a Pascal object. The default is on. 9594 9595@item set print pascal_static-members off 9596Do not print static members when displaying a Pascal object. 9597 9598@item show print pascal_static-members 9599Show whether Pascal static members are printed or not. 9600 9601@c These don't work with HP ANSI C++ yet. 9602@item set print vtbl 9603@itemx set print vtbl on 9604@cindex pretty print C@t{++} virtual function tables 9605@cindex virtual functions (C@t{++}) display 9606@cindex VTBL display 9607Pretty print C@t{++} virtual function tables. The default is off. 9608(The @code{vtbl} commands do not work on programs compiled with the HP 9609ANSI C@t{++} compiler (@code{aCC}).) 9610 9611@item set print vtbl off 9612Do not pretty print C@t{++} virtual function tables. 9613 9614@item show print vtbl 9615Show whether C@t{++} virtual function tables are pretty printed, or not. 9616@end table 9617 9618@node Pretty Printing 9619@section Pretty Printing 9620 9621@value{GDBN} provides a mechanism to allow pretty-printing of values using 9622Python code. It greatly simplifies the display of complex objects. This 9623mechanism works for both MI and the CLI. 9624 9625@menu 9626* Pretty-Printer Introduction:: Introduction to pretty-printers 9627* Pretty-Printer Example:: An example pretty-printer 9628* Pretty-Printer Commands:: Pretty-printer commands 9629@end menu 9630 9631@node Pretty-Printer Introduction 9632@subsection Pretty-Printer Introduction 9633 9634When @value{GDBN} prints a value, it first sees if there is a pretty-printer 9635registered for the value. If there is then @value{GDBN} invokes the 9636pretty-printer to print the value. Otherwise the value is printed normally. 9637 9638Pretty-printers are normally named. This makes them easy to manage. 9639The @samp{info pretty-printer} command will list all the installed 9640pretty-printers with their names. 9641If a pretty-printer can handle multiple data types, then its 9642@dfn{subprinters} are the printers for the individual data types. 9643Each such subprinter has its own name. 9644The format of the name is @var{printer-name};@var{subprinter-name}. 9645 9646Pretty-printers are installed by @dfn{registering} them with @value{GDBN}. 9647Typically they are automatically loaded and registered when the corresponding 9648debug information is loaded, thus making them available without having to 9649do anything special. 9650 9651There are three places where a pretty-printer can be registered. 9652 9653@itemize @bullet 9654@item 9655Pretty-printers registered globally are available when debugging 9656all inferiors. 9657 9658@item 9659Pretty-printers registered with a program space are available only 9660when debugging that program. 9661@xref{Progspaces In Python}, for more details on program spaces in Python. 9662 9663@item 9664Pretty-printers registered with an objfile are loaded and unloaded 9665with the corresponding objfile (e.g., shared library). 9666@xref{Objfiles In Python}, for more details on objfiles in Python. 9667@end itemize 9668 9669@xref{Selecting Pretty-Printers}, for further information on how 9670pretty-printers are selected, 9671 9672@xref{Writing a Pretty-Printer}, for implementing pretty printers 9673for new types. 9674 9675@node Pretty-Printer Example 9676@subsection Pretty-Printer Example 9677 9678Here is how a C@t{++} @code{std::string} looks without a pretty-printer: 9679 9680@smallexample 9681(@value{GDBP}) print s 9682$1 = @{ 9683 static npos = 4294967295, 9684 _M_dataplus = @{ 9685 <std::allocator<char>> = @{ 9686 <__gnu_cxx::new_allocator<char>> = @{ 9687 <No data fields>@}, <No data fields> 9688 @}, 9689 members of std::basic_string<char, std::char_traits<char>, 9690 std::allocator<char> >::_Alloc_hider: 9691 _M_p = 0x804a014 "abcd" 9692 @} 9693@} 9694@end smallexample 9695 9696With a pretty-printer for @code{std::string} only the contents are printed: 9697 9698@smallexample 9699(@value{GDBP}) print s 9700$2 = "abcd" 9701@end smallexample 9702 9703@node Pretty-Printer Commands 9704@subsection Pretty-Printer Commands 9705@cindex pretty-printer commands 9706 9707@table @code 9708@kindex info pretty-printer 9709@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]] 9710Print the list of installed pretty-printers. 9711This includes disabled pretty-printers, which are marked as such. 9712 9713@var{object-regexp} is a regular expression matching the objects 9714whose pretty-printers to list. 9715Objects can be @code{global}, the program space's file 9716(@pxref{Progspaces In Python}), 9717and the object files within that program space (@pxref{Objfiles In Python}). 9718@xref{Selecting Pretty-Printers}, for details on how @value{GDBN} 9719looks up a printer from these three objects. 9720 9721@var{name-regexp} is a regular expression matching the name of the printers 9722to list. 9723 9724@kindex disable pretty-printer 9725@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 9726Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 9727A disabled pretty-printer is not forgotten, it may be enabled again later. 9728 9729@kindex enable pretty-printer 9730@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 9731Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 9732@end table 9733 9734Example: 9735 9736Suppose we have three pretty-printers installed: one from library1.so 9737named @code{foo} that prints objects of type @code{foo}, and 9738another from library2.so named @code{bar} that prints two types of objects, 9739@code{bar1} and @code{bar2}. 9740 9741@smallexample 9742(gdb) info pretty-printer 9743library1.so: 9744 foo 9745library2.so: 9746 bar 9747 bar1 9748 bar2 9749(gdb) info pretty-printer library2 9750library2.so: 9751 bar 9752 bar1 9753 bar2 9754(gdb) disable pretty-printer library1 97551 printer disabled 97562 of 3 printers enabled 9757(gdb) info pretty-printer 9758library1.so: 9759 foo [disabled] 9760library2.so: 9761 bar 9762 bar1 9763 bar2 9764(gdb) disable pretty-printer library2 bar:bar1 97651 printer disabled 97661 of 3 printers enabled 9767(gdb) info pretty-printer library2 9768library1.so: 9769 foo [disabled] 9770library2.so: 9771 bar 9772 bar1 [disabled] 9773 bar2 9774(gdb) disable pretty-printer library2 bar 97751 printer disabled 97760 of 3 printers enabled 9777(gdb) info pretty-printer library2 9778library1.so: 9779 foo [disabled] 9780library2.so: 9781 bar [disabled] 9782 bar1 [disabled] 9783 bar2 9784@end smallexample 9785 9786Note that for @code{bar} the entire printer can be disabled, 9787as can each individual subprinter. 9788 9789@node Value History 9790@section Value History 9791 9792@cindex value history 9793@cindex history of values printed by @value{GDBN} 9794Values printed by the @code{print} command are saved in the @value{GDBN} 9795@dfn{value history}. This allows you to refer to them in other expressions. 9796Values are kept until the symbol table is re-read or discarded 9797(for example with the @code{file} or @code{symbol-file} commands). 9798When the symbol table changes, the value history is discarded, 9799since the values may contain pointers back to the types defined in the 9800symbol table. 9801 9802@cindex @code{$} 9803@cindex @code{$$} 9804@cindex history number 9805The values printed are given @dfn{history numbers} by which you can 9806refer to them. These are successive integers starting with one. 9807@code{print} shows you the history number assigned to a value by 9808printing @samp{$@var{num} = } before the value; here @var{num} is the 9809history number. 9810 9811To refer to any previous value, use @samp{$} followed by the value's 9812history number. The way @code{print} labels its output is designed to 9813remind you of this. Just @code{$} refers to the most recent value in 9814the history, and @code{$$} refers to the value before that. 9815@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2} 9816is the value just prior to @code{$$}, @code{$$1} is equivalent to 9817@code{$$}, and @code{$$0} is equivalent to @code{$}. 9818 9819For example, suppose you have just printed a pointer to a structure and 9820want to see the contents of the structure. It suffices to type 9821 9822@smallexample 9823p *$ 9824@end smallexample 9825 9826If you have a chain of structures where the component @code{next} points 9827to the next one, you can print the contents of the next one with this: 9828 9829@smallexample 9830p *$.next 9831@end smallexample 9832 9833@noindent 9834You can print successive links in the chain by repeating this 9835command---which you can do by just typing @key{RET}. 9836 9837Note that the history records values, not expressions. If the value of 9838@code{x} is 4 and you type these commands: 9839 9840@smallexample 9841print x 9842set x=5 9843@end smallexample 9844 9845@noindent 9846then the value recorded in the value history by the @code{print} command 9847remains 4 even though the value of @code{x} has changed. 9848 9849@table @code 9850@kindex show values 9851@item show values 9852Print the last ten values in the value history, with their item numbers. 9853This is like @samp{p@ $$9} repeated ten times, except that @code{show 9854values} does not change the history. 9855 9856@item show values @var{n} 9857Print ten history values centered on history item number @var{n}. 9858 9859@item show values + 9860Print ten history values just after the values last printed. If no more 9861values are available, @code{show values +} produces no display. 9862@end table 9863 9864Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the 9865same effect as @samp{show values +}. 9866 9867@node Convenience Vars 9868@section Convenience Variables 9869 9870@cindex convenience variables 9871@cindex user-defined variables 9872@value{GDBN} provides @dfn{convenience variables} that you can use within 9873@value{GDBN} to hold on to a value and refer to it later. These variables 9874exist entirely within @value{GDBN}; they are not part of your program, and 9875setting a convenience variable has no direct effect on further execution 9876of your program. That is why you can use them freely. 9877 9878Convenience variables are prefixed with @samp{$}. Any name preceded by 9879@samp{$} can be used for a convenience variable, unless it is one of 9880the predefined machine-specific register names (@pxref{Registers, ,Registers}). 9881(Value history references, in contrast, are @emph{numbers} preceded 9882by @samp{$}. @xref{Value History, ,Value History}.) 9883 9884You can save a value in a convenience variable with an assignment 9885expression, just as you would set a variable in your program. 9886For example: 9887 9888@smallexample 9889set $foo = *object_ptr 9890@end smallexample 9891 9892@noindent 9893would save in @code{$foo} the value contained in the object pointed to by 9894@code{object_ptr}. 9895 9896Using a convenience variable for the first time creates it, but its 9897value is @code{void} until you assign a new value. You can alter the 9898value with another assignment at any time. 9899 9900Convenience variables have no fixed types. You can assign a convenience 9901variable any type of value, including structures and arrays, even if 9902that variable already has a value of a different type. The convenience 9903variable, when used as an expression, has the type of its current value. 9904 9905@table @code 9906@kindex show convenience 9907@cindex show all user variables and functions 9908@item show convenience 9909Print a list of convenience variables used so far, and their values, 9910as well as a list of the convenience functions. 9911Abbreviated @code{show conv}. 9912 9913@kindex init-if-undefined 9914@cindex convenience variables, initializing 9915@item init-if-undefined $@var{variable} = @var{expression} 9916Set a convenience variable if it has not already been set. This is useful 9917for user-defined commands that keep some state. It is similar, in concept, 9918to using local static variables with initializers in C (except that 9919convenience variables are global). It can also be used to allow users to 9920override default values used in a command script. 9921 9922If the variable is already defined then the expression is not evaluated so 9923any side-effects do not occur. 9924@end table 9925 9926One of the ways to use a convenience variable is as a counter to be 9927incremented or a pointer to be advanced. For example, to print 9928a field from successive elements of an array of structures: 9929 9930@smallexample 9931set $i = 0 9932print bar[$i++]->contents 9933@end smallexample 9934 9935@noindent 9936Repeat that command by typing @key{RET}. 9937 9938Some convenience variables are created automatically by @value{GDBN} and given 9939values likely to be useful. 9940 9941@table @code 9942@vindex $_@r{, convenience variable} 9943@item $_ 9944The variable @code{$_} is automatically set by the @code{x} command to 9945the last address examined (@pxref{Memory, ,Examining Memory}). Other 9946commands which provide a default address for @code{x} to examine also 9947set @code{$_} to that address; these commands include @code{info line} 9948and @code{info breakpoint}. The type of @code{$_} is @code{void *} 9949except when set by the @code{x} command, in which case it is a pointer 9950to the type of @code{$__}. 9951 9952@vindex $__@r{, convenience variable} 9953@item $__ 9954The variable @code{$__} is automatically set by the @code{x} command 9955to the value found in the last address examined. Its type is chosen 9956to match the format in which the data was printed. 9957 9958@item $_exitcode 9959@vindex $_exitcode@r{, convenience variable} 9960When the program being debugged terminates normally, @value{GDBN} 9961automatically sets this variable to the exit code of the program, and 9962resets @code{$_exitsignal} to @code{void}. 9963 9964@item $_exitsignal 9965@vindex $_exitsignal@r{, convenience variable} 9966When the program being debugged dies due to an uncaught signal, 9967@value{GDBN} automatically sets this variable to that signal's number, 9968and resets @code{$_exitcode} to @code{void}. 9969 9970To distinguish between whether the program being debugged has exited 9971(i.e., @code{$_exitcode} is not @code{void}) or signalled (i.e., 9972@code{$_exitsignal} is not @code{void}), the convenience function 9973@code{$_isvoid} can be used (@pxref{Convenience Funs,, Convenience 9974Functions}). For example, considering the following source code: 9975 9976@smallexample 9977#include <signal.h> 9978 9979int 9980main (int argc, char *argv[]) 9981@{ 9982 raise (SIGALRM); 9983 return 0; 9984@} 9985@end smallexample 9986 9987A valid way of telling whether the program being debugged has exited 9988or signalled would be: 9989 9990@smallexample 9991(@value{GDBP}) define has_exited_or_signalled 9992Type commands for definition of ``has_exited_or_signalled''. 9993End with a line saying just ``end''. 9994>if $_isvoid ($_exitsignal) 9995 >echo The program has exited\n 9996 >else 9997 >echo The program has signalled\n 9998 >end 9999>end 10000(@value{GDBP}) run 10001Starting program: 10002 10003Program terminated with signal SIGALRM, Alarm clock. 10004The program no longer exists. 10005(@value{GDBP}) has_exited_or_signalled 10006The program has signalled 10007@end smallexample 10008 10009As can be seen, @value{GDBN} correctly informs that the program being 10010debugged has signalled, since it calls @code{raise} and raises a 10011@code{SIGALRM} signal. If the program being debugged had not called 10012@code{raise}, then @value{GDBN} would report a normal exit: 10013 10014@smallexample 10015(@value{GDBP}) has_exited_or_signalled 10016The program has exited 10017@end smallexample 10018 10019@item $_exception 10020The variable @code{$_exception} is set to the exception object being 10021thrown at an exception-related catchpoint. @xref{Set Catchpoints}. 10022 10023@item $_probe_argc 10024@itemx $_probe_arg0@dots{}$_probe_arg11 10025Arguments to a static probe. @xref{Static Probe Points}. 10026 10027@item $_sdata 10028@vindex $_sdata@r{, inspect, convenience variable} 10029The variable @code{$_sdata} contains extra collected static tracepoint 10030data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that 10031@code{$_sdata} could be empty, if not inspecting a trace buffer, or 10032if extra static tracepoint data has not been collected. 10033 10034@item $_siginfo 10035@vindex $_siginfo@r{, convenience variable} 10036The variable @code{$_siginfo} contains extra signal information 10037(@pxref{extra signal information}). Note that @code{$_siginfo} 10038could be empty, if the application has not yet received any signals. 10039For example, it will be empty before you execute the @code{run} command. 10040 10041@item $_tlb 10042@vindex $_tlb@r{, convenience variable} 10043The variable @code{$_tlb} is automatically set when debugging 10044applications running on MS-Windows in native mode or connected to 10045gdbserver that supports the @code{qGetTIBAddr} request. 10046@xref{General Query Packets}. 10047This variable contains the address of the thread information block. 10048 10049@end table 10050 10051On HP-UX systems, if you refer to a function or variable name that 10052begins with a dollar sign, @value{GDBN} searches for a user or system 10053name first, before it searches for a convenience variable. 10054 10055@node Convenience Funs 10056@section Convenience Functions 10057 10058@cindex convenience functions 10059@value{GDBN} also supplies some @dfn{convenience functions}. These 10060have a syntax similar to convenience variables. A convenience 10061function can be used in an expression just like an ordinary function; 10062however, a convenience function is implemented internally to 10063@value{GDBN}. 10064 10065These functions do not require @value{GDBN} to be configured with 10066@code{Python} support, which means that they are always available. 10067 10068@table @code 10069 10070@item $_isvoid (@var{expr}) 10071@findex $_isvoid@r{, convenience function} 10072Return one if the expression @var{expr} is @code{void}. Otherwise it 10073returns zero. 10074 10075A @code{void} expression is an expression where the type of the result 10076is @code{void}. For example, you can examine a convenience variable 10077(see @ref{Convenience Vars,, Convenience Variables}) to check whether 10078it is @code{void}: 10079 10080@smallexample 10081(@value{GDBP}) print $_exitcode 10082$1 = void 10083(@value{GDBP}) print $_isvoid ($_exitcode) 10084$2 = 1 10085(@value{GDBP}) run 10086Starting program: ./a.out 10087[Inferior 1 (process 29572) exited normally] 10088(@value{GDBP}) print $_exitcode 10089$3 = 0 10090(@value{GDBP}) print $_isvoid ($_exitcode) 10091$4 = 0 10092@end smallexample 10093 10094In the example above, we used @code{$_isvoid} to check whether 10095@code{$_exitcode} is @code{void} before and after the execution of the 10096program being debugged. Before the execution there is no exit code to 10097be examined, therefore @code{$_exitcode} is @code{void}. After the 10098execution the program being debugged returned zero, therefore 10099@code{$_exitcode} is zero, which means that it is not @code{void} 10100anymore. 10101 10102The @code{void} expression can also be a call of a function from the 10103program being debugged. For example, given the following function: 10104 10105@smallexample 10106void 10107foo (void) 10108@{ 10109@} 10110@end smallexample 10111 10112The result of calling it inside @value{GDBN} is @code{void}: 10113 10114@smallexample 10115(@value{GDBP}) print foo () 10116$1 = void 10117(@value{GDBP}) print $_isvoid (foo ()) 10118$2 = 1 10119(@value{GDBP}) set $v = foo () 10120(@value{GDBP}) print $v 10121$3 = void 10122(@value{GDBP}) print $_isvoid ($v) 10123$4 = 1 10124@end smallexample 10125 10126@end table 10127 10128These functions require @value{GDBN} to be configured with 10129@code{Python} support. 10130 10131@table @code 10132 10133@item $_memeq(@var{buf1}, @var{buf2}, @var{length}) 10134@findex $_memeq@r{, convenience function} 10135Returns one if the @var{length} bytes at the addresses given by 10136@var{buf1} and @var{buf2} are equal. 10137Otherwise it returns zero. 10138 10139@item $_regex(@var{str}, @var{regex}) 10140@findex $_regex@r{, convenience function} 10141Returns one if the string @var{str} matches the regular expression 10142@var{regex}. Otherwise it returns zero. 10143The syntax of the regular expression is that specified by @code{Python}'s 10144regular expression support. 10145 10146@item $_streq(@var{str1}, @var{str2}) 10147@findex $_streq@r{, convenience function} 10148Returns one if the strings @var{str1} and @var{str2} are equal. 10149Otherwise it returns zero. 10150 10151@item $_strlen(@var{str}) 10152@findex $_strlen@r{, convenience function} 10153Returns the length of string @var{str}. 10154 10155@item $_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]}) 10156@findex $_caller_is@r{, convenience function} 10157Returns one if the calling function's name is equal to @var{name}. 10158Otherwise it returns zero. 10159 10160If the optional argument @var{number_of_frames} is provided, 10161it is the number of frames up in the stack to look. 10162The default is 1. 10163 10164Example: 10165 10166@smallexample 10167(gdb) backtrace 10168#0 bottom_func () 10169 at testsuite/gdb.python/py-caller-is.c:21 10170#1 0x00000000004005a0 in middle_func () 10171 at testsuite/gdb.python/py-caller-is.c:27 10172#2 0x00000000004005ab in top_func () 10173 at testsuite/gdb.python/py-caller-is.c:33 10174#3 0x00000000004005b6 in main () 10175 at testsuite/gdb.python/py-caller-is.c:39 10176(gdb) print $_caller_is ("middle_func") 10177$1 = 1 10178(gdb) print $_caller_is ("top_func", 2) 10179$1 = 1 10180@end smallexample 10181 10182@item $_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]}) 10183@findex $_caller_matches@r{, convenience function} 10184Returns one if the calling function's name matches the regular expression 10185@var{regexp}. Otherwise it returns zero. 10186 10187If the optional argument @var{number_of_frames} is provided, 10188it is the number of frames up in the stack to look. 10189The default is 1. 10190 10191@item $_any_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]}) 10192@findex $_any_caller_is@r{, convenience function} 10193Returns one if any calling function's name is equal to @var{name}. 10194Otherwise it returns zero. 10195 10196If the optional argument @var{number_of_frames} is provided, 10197it is the number of frames up in the stack to look. 10198The default is 1. 10199 10200This function differs from @code{$_caller_is} in that this function 10201checks all stack frames from the immediate caller to the frame specified 10202by @var{number_of_frames}, whereas @code{$_caller_is} only checks the 10203frame specified by @var{number_of_frames}. 10204 10205@item $_any_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]}) 10206@findex $_any_caller_matches@r{, convenience function} 10207Returns one if any calling function's name matches the regular expression 10208@var{regexp}. Otherwise it returns zero. 10209 10210If the optional argument @var{number_of_frames} is provided, 10211it is the number of frames up in the stack to look. 10212The default is 1. 10213 10214This function differs from @code{$_caller_matches} in that this function 10215checks all stack frames from the immediate caller to the frame specified 10216by @var{number_of_frames}, whereas @code{$_caller_matches} only checks the 10217frame specified by @var{number_of_frames}. 10218 10219@end table 10220 10221@value{GDBN} provides the ability to list and get help on 10222convenience functions. 10223 10224@table @code 10225@item help function 10226@kindex help function 10227@cindex show all convenience functions 10228Print a list of all convenience functions. 10229@end table 10230 10231@node Registers 10232@section Registers 10233 10234@cindex registers 10235You can refer to machine register contents, in expressions, as variables 10236with names starting with @samp{$}. The names of registers are different 10237for each machine; use @code{info registers} to see the names used on 10238your machine. 10239 10240@table @code 10241@kindex info registers 10242@item info registers 10243Print the names and values of all registers except floating-point 10244and vector registers (in the selected stack frame). 10245 10246@kindex info all-registers 10247@cindex floating point registers 10248@item info all-registers 10249Print the names and values of all registers, including floating-point 10250and vector registers (in the selected stack frame). 10251 10252@item info registers @var{regname} @dots{} 10253Print the @dfn{relativized} value of each specified register @var{regname}. 10254As discussed in detail below, register values are normally relative to 10255the selected stack frame. The @var{regname} may be any register name valid on 10256the machine you are using, with or without the initial @samp{$}. 10257@end table 10258 10259@anchor{standard registers} 10260@cindex stack pointer register 10261@cindex program counter register 10262@cindex process status register 10263@cindex frame pointer register 10264@cindex standard registers 10265@value{GDBN} has four ``standard'' register names that are available (in 10266expressions) on most machines---whenever they do not conflict with an 10267architecture's canonical mnemonics for registers. The register names 10268@code{$pc} and @code{$sp} are used for the program counter register and 10269the stack pointer. @code{$fp} is used for a register that contains a 10270pointer to the current stack frame, and @code{$ps} is used for a 10271register that contains the processor status. For example, 10272you could print the program counter in hex with 10273 10274@smallexample 10275p/x $pc 10276@end smallexample 10277 10278@noindent 10279or print the instruction to be executed next with 10280 10281@smallexample 10282x/i $pc 10283@end smallexample 10284 10285@noindent 10286or add four to the stack pointer@footnote{This is a way of removing 10287one word from the stack, on machines where stacks grow downward in 10288memory (most machines, nowadays). This assumes that the innermost 10289stack frame is selected; setting @code{$sp} is not allowed when other 10290stack frames are selected. To pop entire frames off the stack, 10291regardless of machine architecture, use @code{return}; 10292see @ref{Returning, ,Returning from a Function}.} with 10293 10294@smallexample 10295set $sp += 4 10296@end smallexample 10297 10298Whenever possible, these four standard register names are available on 10299your machine even though the machine has different canonical mnemonics, 10300so long as there is no conflict. The @code{info registers} command 10301shows the canonical names. For example, on the SPARC, @code{info 10302registers} displays the processor status register as @code{$psr} but you 10303can also refer to it as @code{$ps}; and on x86-based machines @code{$ps} 10304is an alias for the @sc{eflags} register. 10305 10306@value{GDBN} always considers the contents of an ordinary register as an 10307integer when the register is examined in this way. Some machines have 10308special registers which can hold nothing but floating point; these 10309registers are considered to have floating point values. There is no way 10310to refer to the contents of an ordinary register as floating point value 10311(although you can @emph{print} it as a floating point value with 10312@samp{print/f $@var{regname}}). 10313 10314Some registers have distinct ``raw'' and ``virtual'' data formats. This 10315means that the data format in which the register contents are saved by 10316the operating system is not the same one that your program normally 10317sees. For example, the registers of the 68881 floating point 10318coprocessor are always saved in ``extended'' (raw) format, but all C 10319programs expect to work with ``double'' (virtual) format. In such 10320cases, @value{GDBN} normally works with the virtual format only (the format 10321that makes sense for your program), but the @code{info registers} command 10322prints the data in both formats. 10323 10324@cindex SSE registers (x86) 10325@cindex MMX registers (x86) 10326Some machines have special registers whose contents can be interpreted 10327in several different ways. For example, modern x86-based machines 10328have SSE and MMX registers that can hold several values packed 10329together in several different formats. @value{GDBN} refers to such 10330registers in @code{struct} notation: 10331 10332@smallexample 10333(@value{GDBP}) print $xmm1 10334$1 = @{ 10335 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@}, 10336 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@}, 10337 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000", 10338 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@}, 10339 v4_int32 = @{0, 20657912, 11, 13@}, 10340 v2_int64 = @{88725056443645952, 55834574859@}, 10341 uint128 = 0x0000000d0000000b013b36f800000000 10342@} 10343@end smallexample 10344 10345@noindent 10346To set values of such registers, you need to tell @value{GDBN} which 10347view of the register you wish to change, as if you were assigning 10348value to a @code{struct} member: 10349 10350@smallexample 10351 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF 10352@end smallexample 10353 10354Normally, register values are relative to the selected stack frame 10355(@pxref{Selection, ,Selecting a Frame}). This means that you get the 10356value that the register would contain if all stack frames farther in 10357were exited and their saved registers restored. In order to see the 10358true contents of hardware registers, you must select the innermost 10359frame (with @samp{frame 0}). 10360 10361@cindex caller-saved registers 10362@cindex call-clobbered registers 10363@cindex volatile registers 10364@cindex <not saved> values 10365Usually ABIs reserve some registers as not needed to be saved by the 10366callee (a.k.a.: ``caller-saved'', ``call-clobbered'' or ``volatile'' 10367registers). It may therefore not be possible for @value{GDBN} to know 10368the value a register had before the call (in other words, in the outer 10369frame), if the register value has since been changed by the callee. 10370@value{GDBN} tries to deduce where the inner frame saved 10371(``callee-saved'') registers, from the debug info, unwind info, or the 10372machine code generated by your compiler. If some register is not 10373saved, and @value{GDBN} knows the register is ``caller-saved'' (via 10374its own knowledge of the ABI, or because the debug/unwind info 10375explicitly says the register's value is undefined), @value{GDBN} 10376displays @w{@samp{<not saved>}} as the register's value. With targets 10377that @value{GDBN} has no knowledge of the register saving convention, 10378if a register was not saved by the callee, then its value and location 10379in the outer frame are assumed to be the same of the inner frame. 10380This is usually harmless, because if the register is call-clobbered, 10381the caller either does not care what is in the register after the 10382call, or has code to restore the value that it does care about. Note, 10383however, that if you change such a register in the outer frame, you 10384may also be affecting the inner frame. Also, the more ``outer'' the 10385frame is you're looking at, the more likely a call-clobbered 10386register's value is to be wrong, in the sense that it doesn't actually 10387represent the value the register had just before the call. 10388 10389@node Floating Point Hardware 10390@section Floating Point Hardware 10391@cindex floating point 10392 10393Depending on the configuration, @value{GDBN} may be able to give 10394you more information about the status of the floating point hardware. 10395 10396@table @code 10397@kindex info float 10398@item info float 10399Display hardware-dependent information about the floating 10400point unit. The exact contents and layout vary depending on the 10401floating point chip. Currently, @samp{info float} is supported on 10402the ARM and x86 machines. 10403@end table 10404 10405@node Vector Unit 10406@section Vector Unit 10407@cindex vector unit 10408 10409Depending on the configuration, @value{GDBN} may be able to give you 10410more information about the status of the vector unit. 10411 10412@table @code 10413@kindex info vector 10414@item info vector 10415Display information about the vector unit. The exact contents and 10416layout vary depending on the hardware. 10417@end table 10418 10419@node OS Information 10420@section Operating System Auxiliary Information 10421@cindex OS information 10422 10423@value{GDBN} provides interfaces to useful OS facilities that can help 10424you debug your program. 10425 10426@cindex auxiliary vector 10427@cindex vector, auxiliary 10428Some operating systems supply an @dfn{auxiliary vector} to programs at 10429startup. This is akin to the arguments and environment that you 10430specify for a program, but contains a system-dependent variety of 10431binary values that tell system libraries important details about the 10432hardware, operating system, and process. Each value's purpose is 10433identified by an integer tag; the meanings are well-known but system-specific. 10434Depending on the configuration and operating system facilities, 10435@value{GDBN} may be able to show you this information. For remote 10436targets, this functionality may further depend on the remote stub's 10437support of the @samp{qXfer:auxv:read} packet, see 10438@ref{qXfer auxiliary vector read}. 10439 10440@table @code 10441@kindex info auxv 10442@item info auxv 10443Display the auxiliary vector of the inferior, which can be either a 10444live process or a core dump file. @value{GDBN} prints each tag value 10445numerically, and also shows names and text descriptions for recognized 10446tags. Some values in the vector are numbers, some bit masks, and some 10447pointers to strings or other data. @value{GDBN} displays each value in the 10448most appropriate form for a recognized tag, and in hexadecimal for 10449an unrecognized tag. 10450@end table 10451 10452On some targets, @value{GDBN} can access operating system-specific 10453information and show it to you. The types of information available 10454will differ depending on the type of operating system running on the 10455target. The mechanism used to fetch the data is described in 10456@ref{Operating System Information}. For remote targets, this 10457functionality depends on the remote stub's support of the 10458@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}. 10459 10460@table @code 10461@kindex info os 10462@item info os @var{infotype} 10463 10464Display OS information of the requested type. 10465 10466On @sc{gnu}/Linux, the following values of @var{infotype} are valid: 10467 10468@anchor{linux info os infotypes} 10469@table @code 10470@kindex info os processes 10471@item processes 10472Display the list of processes on the target. For each process, 10473@value{GDBN} prints the process identifier, the name of the user, the 10474command corresponding to the process, and the list of processor cores 10475that the process is currently running on. (To understand what these 10476properties mean, for this and the following info types, please consult 10477the general @sc{gnu}/Linux documentation.) 10478 10479@kindex info os procgroups 10480@item procgroups 10481Display the list of process groups on the target. For each process, 10482@value{GDBN} prints the identifier of the process group that it belongs 10483to, the command corresponding to the process group leader, the process 10484identifier, and the command line of the process. The list is sorted 10485first by the process group identifier, then by the process identifier, 10486so that processes belonging to the same process group are grouped together 10487and the process group leader is listed first. 10488 10489@kindex info os threads 10490@item threads 10491Display the list of threads running on the target. For each thread, 10492@value{GDBN} prints the identifier of the process that the thread 10493belongs to, the command of the process, the thread identifier, and the 10494processor core that it is currently running on. The main thread of a 10495process is not listed. 10496 10497@kindex info os files 10498@item files 10499Display the list of open file descriptors on the target. For each 10500file descriptor, @value{GDBN} prints the identifier of the process 10501owning the descriptor, the command of the owning process, the value 10502of the descriptor, and the target of the descriptor. 10503 10504@kindex info os sockets 10505@item sockets 10506Display the list of Internet-domain sockets on the target. For each 10507socket, @value{GDBN} prints the address and port of the local and 10508remote endpoints, the current state of the connection, the creator of 10509the socket, the IP address family of the socket, and the type of the 10510connection. 10511 10512@kindex info os shm 10513@item shm 10514Display the list of all System V shared-memory regions on the target. 10515For each shared-memory region, @value{GDBN} prints the region key, 10516the shared-memory identifier, the access permissions, the size of the 10517region, the process that created the region, the process that last 10518attached to or detached from the region, the current number of live 10519attaches to the region, and the times at which the region was last 10520attached to, detach from, and changed. 10521 10522@kindex info os semaphores 10523@item semaphores 10524Display the list of all System V semaphore sets on the target. For each 10525semaphore set, @value{GDBN} prints the semaphore set key, the semaphore 10526set identifier, the access permissions, the number of semaphores in the 10527set, the user and group of the owner and creator of the semaphore set, 10528and the times at which the semaphore set was operated upon and changed. 10529 10530@kindex info os msg 10531@item msg 10532Display the list of all System V message queues on the target. For each 10533message queue, @value{GDBN} prints the message queue key, the message 10534queue identifier, the access permissions, the current number of bytes 10535on the queue, the current number of messages on the queue, the processes 10536that last sent and received a message on the queue, the user and group 10537of the owner and creator of the message queue, the times at which a 10538message was last sent and received on the queue, and the time at which 10539the message queue was last changed. 10540 10541@kindex info os modules 10542@item modules 10543Display the list of all loaded kernel modules on the target. For each 10544module, @value{GDBN} prints the module name, the size of the module in 10545bytes, the number of times the module is used, the dependencies of the 10546module, the status of the module, and the address of the loaded module 10547in memory. 10548@end table 10549 10550@item info os 10551If @var{infotype} is omitted, then list the possible values for 10552@var{infotype} and the kind of OS information available for each 10553@var{infotype}. If the target does not return a list of possible 10554types, this command will report an error. 10555@end table 10556 10557@node Memory Region Attributes 10558@section Memory Region Attributes 10559@cindex memory region attributes 10560 10561@dfn{Memory region attributes} allow you to describe special handling 10562required by regions of your target's memory. @value{GDBN} uses 10563attributes to determine whether to allow certain types of memory 10564accesses; whether to use specific width accesses; and whether to cache 10565target memory. By default the description of memory regions is 10566fetched from the target (if the current target supports this), but the 10567user can override the fetched regions. 10568 10569Defined memory regions can be individually enabled and disabled. When a 10570memory region is disabled, @value{GDBN} uses the default attributes when 10571accessing memory in that region. Similarly, if no memory regions have 10572been defined, @value{GDBN} uses the default attributes when accessing 10573all memory. 10574 10575When a memory region is defined, it is given a number to identify it; 10576to enable, disable, or remove a memory region, you specify that number. 10577 10578@table @code 10579@kindex mem 10580@item mem @var{lower} @var{upper} @var{attributes}@dots{} 10581Define a memory region bounded by @var{lower} and @var{upper} with 10582attributes @var{attributes}@dots{}, and add it to the list of regions 10583monitored by @value{GDBN}. Note that @var{upper} == 0 is a special 10584case: it is treated as the target's maximum memory address. 10585(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.) 10586 10587@item mem auto 10588Discard any user changes to the memory regions and use target-supplied 10589regions, if available, or no regions if the target does not support. 10590 10591@kindex delete mem 10592@item delete mem @var{nums}@dots{} 10593Remove memory regions @var{nums}@dots{} from the list of regions 10594monitored by @value{GDBN}. 10595 10596@kindex disable mem 10597@item disable mem @var{nums}@dots{} 10598Disable monitoring of memory regions @var{nums}@dots{}. 10599A disabled memory region is not forgotten. 10600It may be enabled again later. 10601 10602@kindex enable mem 10603@item enable mem @var{nums}@dots{} 10604Enable monitoring of memory regions @var{nums}@dots{}. 10605 10606@kindex info mem 10607@item info mem 10608Print a table of all defined memory regions, with the following columns 10609for each region: 10610 10611@table @emph 10612@item Memory Region Number 10613@item Enabled or Disabled. 10614Enabled memory regions are marked with @samp{y}. 10615Disabled memory regions are marked with @samp{n}. 10616 10617@item Lo Address 10618The address defining the inclusive lower bound of the memory region. 10619 10620@item Hi Address 10621The address defining the exclusive upper bound of the memory region. 10622 10623@item Attributes 10624The list of attributes set for this memory region. 10625@end table 10626@end table 10627 10628 10629@subsection Attributes 10630 10631@subsubsection Memory Access Mode 10632The access mode attributes set whether @value{GDBN} may make read or 10633write accesses to a memory region. 10634 10635While these attributes prevent @value{GDBN} from performing invalid 10636memory accesses, they do nothing to prevent the target system, I/O DMA, 10637etc.@: from accessing memory. 10638 10639@table @code 10640@item ro 10641Memory is read only. 10642@item wo 10643Memory is write only. 10644@item rw 10645Memory is read/write. This is the default. 10646@end table 10647 10648@subsubsection Memory Access Size 10649The access size attribute tells @value{GDBN} to use specific sized 10650accesses in the memory region. Often memory mapped device registers 10651require specific sized accesses. If no access size attribute is 10652specified, @value{GDBN} may use accesses of any size. 10653 10654@table @code 10655@item 8 10656Use 8 bit memory accesses. 10657@item 16 10658Use 16 bit memory accesses. 10659@item 32 10660Use 32 bit memory accesses. 10661@item 64 10662Use 64 bit memory accesses. 10663@end table 10664 10665@c @subsubsection Hardware/Software Breakpoints 10666@c The hardware/software breakpoint attributes set whether @value{GDBN} 10667@c will use hardware or software breakpoints for the internal breakpoints 10668@c used by the step, next, finish, until, etc. commands. 10669@c 10670@c @table @code 10671@c @item hwbreak 10672@c Always use hardware breakpoints 10673@c @item swbreak (default) 10674@c @end table 10675 10676@subsubsection Data Cache 10677The data cache attributes set whether @value{GDBN} will cache target 10678memory. While this generally improves performance by reducing debug 10679protocol overhead, it can lead to incorrect results because @value{GDBN} 10680does not know about volatile variables or memory mapped device 10681registers. 10682 10683@table @code 10684@item cache 10685Enable @value{GDBN} to cache target memory. 10686@item nocache 10687Disable @value{GDBN} from caching target memory. This is the default. 10688@end table 10689 10690@subsection Memory Access Checking 10691@value{GDBN} can be instructed to refuse accesses to memory that is 10692not explicitly described. This can be useful if accessing such 10693regions has undesired effects for a specific target, or to provide 10694better error checking. The following commands control this behaviour. 10695 10696@table @code 10697@kindex set mem inaccessible-by-default 10698@item set mem inaccessible-by-default [on|off] 10699If @code{on} is specified, make @value{GDBN} treat memory not 10700explicitly described by the memory ranges as non-existent and refuse accesses 10701to such memory. The checks are only performed if there's at least one 10702memory range defined. If @code{off} is specified, make @value{GDBN} 10703treat the memory not explicitly described by the memory ranges as RAM. 10704The default value is @code{on}. 10705@kindex show mem inaccessible-by-default 10706@item show mem inaccessible-by-default 10707Show the current handling of accesses to unknown memory. 10708@end table 10709 10710 10711@c @subsubsection Memory Write Verification 10712@c The memory write verification attributes set whether @value{GDBN} 10713@c will re-reads data after each write to verify the write was successful. 10714@c 10715@c @table @code 10716@c @item verify 10717@c @item noverify (default) 10718@c @end table 10719 10720@node Dump/Restore Files 10721@section Copy Between Memory and a File 10722@cindex dump/restore files 10723@cindex append data to a file 10724@cindex dump data to a file 10725@cindex restore data from a file 10726 10727You can use the commands @code{dump}, @code{append}, and 10728@code{restore} to copy data between target memory and a file. The 10729@code{dump} and @code{append} commands write data to a file, and the 10730@code{restore} command reads data from a file back into the inferior's 10731memory. Files may be in binary, Motorola S-record, Intel hex, or 10732Tektronix Hex format; however, @value{GDBN} can only append to binary 10733files. 10734 10735@table @code 10736 10737@kindex dump 10738@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 10739@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr} 10740Dump the contents of memory from @var{start_addr} to @var{end_addr}, 10741or the value of @var{expr}, to @var{filename} in the given format. 10742 10743The @var{format} parameter may be any one of: 10744@table @code 10745@item binary 10746Raw binary form. 10747@item ihex 10748Intel hex format. 10749@item srec 10750Motorola S-record format. 10751@item tekhex 10752Tektronix Hex format. 10753@end table 10754 10755@value{GDBN} uses the same definitions of these formats as the 10756@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If 10757@var{format} is omitted, @value{GDBN} dumps the data in raw binary 10758form. 10759 10760@kindex append 10761@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 10762@itemx append @r{[}binary@r{]} value @var{filename} @var{expr} 10763Append the contents of memory from @var{start_addr} to @var{end_addr}, 10764or the value of @var{expr}, to the file @var{filename}, in raw binary form. 10765(@value{GDBN} can only append data to files in raw binary form.) 10766 10767@kindex restore 10768@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end} 10769Restore the contents of file @var{filename} into memory. The 10770@code{restore} command can automatically recognize any known @sc{bfd} 10771file format, except for raw binary. To restore a raw binary file you 10772must specify the optional keyword @code{binary} after the filename. 10773 10774If @var{bias} is non-zero, its value will be added to the addresses 10775contained in the file. Binary files always start at address zero, so 10776they will be restored at address @var{bias}. Other bfd files have 10777a built-in location; they will be restored at offset @var{bias} 10778from that location. 10779 10780If @var{start} and/or @var{end} are non-zero, then only data between 10781file offset @var{start} and file offset @var{end} will be restored. 10782These offsets are relative to the addresses in the file, before 10783the @var{bias} argument is applied. 10784 10785@end table 10786 10787@node Core File Generation 10788@section How to Produce a Core File from Your Program 10789@cindex dump core from inferior 10790 10791A @dfn{core file} or @dfn{core dump} is a file that records the memory 10792image of a running process and its process status (register values 10793etc.). Its primary use is post-mortem debugging of a program that 10794crashed while it ran outside a debugger. A program that crashes 10795automatically produces a core file, unless this feature is disabled by 10796the user. @xref{Files}, for information on invoking @value{GDBN} in 10797the post-mortem debugging mode. 10798 10799Occasionally, you may wish to produce a core file of the program you 10800are debugging in order to preserve a snapshot of its state. 10801@value{GDBN} has a special command for that. 10802 10803@table @code 10804@kindex gcore 10805@kindex generate-core-file 10806@item generate-core-file [@var{file}] 10807@itemx gcore [@var{file}] 10808Produce a core dump of the inferior process. The optional argument 10809@var{file} specifies the file name where to put the core dump. If not 10810specified, the file name defaults to @file{core.@var{pid}}, where 10811@var{pid} is the inferior process ID. 10812 10813Note that this command is implemented only for some systems (as of 10814this writing, @sc{gnu}/Linux, FreeBSD, Solaris, and S390). 10815@end table 10816 10817@node Character Sets 10818@section Character Sets 10819@cindex character sets 10820@cindex charset 10821@cindex translating between character sets 10822@cindex host character set 10823@cindex target character set 10824 10825If the program you are debugging uses a different character set to 10826represent characters and strings than the one @value{GDBN} uses itself, 10827@value{GDBN} can automatically translate between the character sets for 10828you. The character set @value{GDBN} uses we call the @dfn{host 10829character set}; the one the inferior program uses we call the 10830@dfn{target character set}. 10831 10832For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which 10833uses the ISO Latin 1 character set, but you are using @value{GDBN}'s 10834remote protocol (@pxref{Remote Debugging}) to debug a program 10835running on an IBM mainframe, which uses the @sc{ebcdic} character set, 10836then the host character set is Latin-1, and the target character set is 10837@sc{ebcdic}. If you give @value{GDBN} the command @code{set 10838target-charset EBCDIC-US}, then @value{GDBN} translates between 10839@sc{ebcdic} and Latin 1 as you print character or string values, or use 10840character and string literals in expressions. 10841 10842@value{GDBN} has no way to automatically recognize which character set 10843the inferior program uses; you must tell it, using the @code{set 10844target-charset} command, described below. 10845 10846Here are the commands for controlling @value{GDBN}'s character set 10847support: 10848 10849@table @code 10850@item set target-charset @var{charset} 10851@kindex set target-charset 10852Set the current target character set to @var{charset}. To display the 10853list of supported target character sets, type 10854@kbd{@w{set target-charset @key{TAB}@key{TAB}}}. 10855 10856@item set host-charset @var{charset} 10857@kindex set host-charset 10858Set the current host character set to @var{charset}. 10859 10860By default, @value{GDBN} uses a host character set appropriate to the 10861system it is running on; you can override that default using the 10862@code{set host-charset} command. On some systems, @value{GDBN} cannot 10863automatically determine the appropriate host character set. In this 10864case, @value{GDBN} uses @samp{UTF-8}. 10865 10866@value{GDBN} can only use certain character sets as its host character 10867set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}}, 10868@value{GDBN} will list the host character sets it supports. 10869 10870@item set charset @var{charset} 10871@kindex set charset 10872Set the current host and target character sets to @var{charset}. As 10873above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}}, 10874@value{GDBN} will list the names of the character sets that can be used 10875for both host and target. 10876 10877@item show charset 10878@kindex show charset 10879Show the names of the current host and target character sets. 10880 10881@item show host-charset 10882@kindex show host-charset 10883Show the name of the current host character set. 10884 10885@item show target-charset 10886@kindex show target-charset 10887Show the name of the current target character set. 10888 10889@item set target-wide-charset @var{charset} 10890@kindex set target-wide-charset 10891Set the current target's wide character set to @var{charset}. This is 10892the character set used by the target's @code{wchar_t} type. To 10893display the list of supported wide character sets, type 10894@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}. 10895 10896@item show target-wide-charset 10897@kindex show target-wide-charset 10898Show the name of the current target's wide character set. 10899@end table 10900 10901Here is an example of @value{GDBN}'s character set support in action. 10902Assume that the following source code has been placed in the file 10903@file{charset-test.c}: 10904 10905@smallexample 10906#include <stdio.h> 10907 10908char ascii_hello[] 10909 = @{72, 101, 108, 108, 111, 44, 32, 119, 10910 111, 114, 108, 100, 33, 10, 0@}; 10911char ibm1047_hello[] 10912 = @{200, 133, 147, 147, 150, 107, 64, 166, 10913 150, 153, 147, 132, 90, 37, 0@}; 10914 10915main () 10916@{ 10917 printf ("Hello, world!\n"); 10918@} 10919@end smallexample 10920 10921In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays 10922containing the string @samp{Hello, world!} followed by a newline, 10923encoded in the @sc{ascii} and @sc{ibm1047} character sets. 10924 10925We compile the program, and invoke the debugger on it: 10926 10927@smallexample 10928$ gcc -g charset-test.c -o charset-test 10929$ gdb -nw charset-test 10930GNU gdb 2001-12-19-cvs 10931Copyright 2001 Free Software Foundation, Inc. 10932@dots{} 10933(@value{GDBP}) 10934@end smallexample 10935 10936We can use the @code{show charset} command to see what character sets 10937@value{GDBN} is currently using to interpret and display characters and 10938strings: 10939 10940@smallexample 10941(@value{GDBP}) show charset 10942The current host and target character set is `ISO-8859-1'. 10943(@value{GDBP}) 10944@end smallexample 10945 10946For the sake of printing this manual, let's use @sc{ascii} as our 10947initial character set: 10948@smallexample 10949(@value{GDBP}) set charset ASCII 10950(@value{GDBP}) show charset 10951The current host and target character set is `ASCII'. 10952(@value{GDBP}) 10953@end smallexample 10954 10955Let's assume that @sc{ascii} is indeed the correct character set for our 10956host system --- in other words, let's assume that if @value{GDBN} prints 10957characters using the @sc{ascii} character set, our terminal will display 10958them properly. Since our current target character set is also 10959@sc{ascii}, the contents of @code{ascii_hello} print legibly: 10960 10961@smallexample 10962(@value{GDBP}) print ascii_hello 10963$1 = 0x401698 "Hello, world!\n" 10964(@value{GDBP}) print ascii_hello[0] 10965$2 = 72 'H' 10966(@value{GDBP}) 10967@end smallexample 10968 10969@value{GDBN} uses the target character set for character and string 10970literals you use in expressions: 10971 10972@smallexample 10973(@value{GDBP}) print '+' 10974$3 = 43 '+' 10975(@value{GDBP}) 10976@end smallexample 10977 10978The @sc{ascii} character set uses the number 43 to encode the @samp{+} 10979character. 10980 10981@value{GDBN} relies on the user to tell it which character set the 10982target program uses. If we print @code{ibm1047_hello} while our target 10983character set is still @sc{ascii}, we get jibberish: 10984 10985@smallexample 10986(@value{GDBP}) print ibm1047_hello 10987$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%" 10988(@value{GDBP}) print ibm1047_hello[0] 10989$5 = 200 '\310' 10990(@value{GDBP}) 10991@end smallexample 10992 10993If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB}, 10994@value{GDBN} tells us the character sets it supports: 10995 10996@smallexample 10997(@value{GDBP}) set target-charset 10998ASCII EBCDIC-US IBM1047 ISO-8859-1 10999(@value{GDBP}) set target-charset 11000@end smallexample 11001 11002We can select @sc{ibm1047} as our target character set, and examine the 11003program's strings again. Now the @sc{ascii} string is wrong, but 11004@value{GDBN} translates the contents of @code{ibm1047_hello} from the 11005target character set, @sc{ibm1047}, to the host character set, 11006@sc{ascii}, and they display correctly: 11007 11008@smallexample 11009(@value{GDBP}) set target-charset IBM1047 11010(@value{GDBP}) show charset 11011The current host character set is `ASCII'. 11012The current target character set is `IBM1047'. 11013(@value{GDBP}) print ascii_hello 11014$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012" 11015(@value{GDBP}) print ascii_hello[0] 11016$7 = 72 '\110' 11017(@value{GDBP}) print ibm1047_hello 11018$8 = 0x4016a8 "Hello, world!\n" 11019(@value{GDBP}) print ibm1047_hello[0] 11020$9 = 200 'H' 11021(@value{GDBP}) 11022@end smallexample 11023 11024As above, @value{GDBN} uses the target character set for character and 11025string literals you use in expressions: 11026 11027@smallexample 11028(@value{GDBP}) print '+' 11029$10 = 78 '+' 11030(@value{GDBP}) 11031@end smallexample 11032 11033The @sc{ibm1047} character set uses the number 78 to encode the @samp{+} 11034character. 11035 11036@node Caching Target Data 11037@section Caching Data of Targets 11038@cindex caching data of targets 11039 11040@value{GDBN} caches data exchanged between the debugger and a target. 11041Each cache is associated with the address space of the inferior. 11042@xref{Inferiors and Programs}, about inferior and address space. 11043Such caching generally improves performance in remote debugging 11044(@pxref{Remote Debugging}), because it reduces the overhead of the 11045remote protocol by bundling memory reads and writes into large chunks. 11046Unfortunately, simply caching everything would lead to incorrect results, 11047since @value{GDBN} does not necessarily know anything about volatile 11048values, memory-mapped I/O addresses, etc. Furthermore, in non-stop mode 11049(@pxref{Non-Stop Mode}) memory can be changed @emph{while} a gdb command 11050is executing. 11051Therefore, by default, @value{GDBN} only caches data 11052known to be on the stack@footnote{In non-stop mode, it is moderately 11053rare for a running thread to modify the stack of a stopped thread 11054in a way that would interfere with a backtrace, and caching of 11055stack reads provides a significant speed up of remote backtraces.} or 11056in the code segment. 11057Other regions of memory can be explicitly marked as 11058cacheable; @pxref{Memory Region Attributes}. 11059 11060@table @code 11061@kindex set remotecache 11062@item set remotecache on 11063@itemx set remotecache off 11064This option no longer does anything; it exists for compatibility 11065with old scripts. 11066 11067@kindex show remotecache 11068@item show remotecache 11069Show the current state of the obsolete remotecache flag. 11070 11071@kindex set stack-cache 11072@item set stack-cache on 11073@itemx set stack-cache off 11074Enable or disable caching of stack accesses. When @code{on}, use 11075caching. By default, this option is @code{on}. 11076 11077@kindex show stack-cache 11078@item show stack-cache 11079Show the current state of data caching for memory accesses. 11080 11081@kindex set code-cache 11082@item set code-cache on 11083@itemx set code-cache off 11084Enable or disable caching of code segment accesses. When @code{on}, 11085use caching. By default, this option is @code{on}. This improves 11086performance of disassembly in remote debugging. 11087 11088@kindex show code-cache 11089@item show code-cache 11090Show the current state of target memory cache for code segment 11091accesses. 11092 11093@kindex info dcache 11094@item info dcache @r{[}line@r{]} 11095Print the information about the performance of data cache of the 11096current inferior's address space. The information displayed 11097includes the dcache width and depth, and for each cache line, its 11098number, address, and how many times it was referenced. This 11099command is useful for debugging the data cache operation. 11100 11101If a line number is specified, the contents of that line will be 11102printed in hex. 11103 11104@item set dcache size @var{size} 11105@cindex dcache size 11106@kindex set dcache size 11107Set maximum number of entries in dcache (dcache depth above). 11108 11109@item set dcache line-size @var{line-size} 11110@cindex dcache line-size 11111@kindex set dcache line-size 11112Set number of bytes each dcache entry caches (dcache width above). 11113Must be a power of 2. 11114 11115@item show dcache size 11116@kindex show dcache size 11117Show maximum number of dcache entries. @xref{Caching Target Data, info dcache}. 11118 11119@item show dcache line-size 11120@kindex show dcache line-size 11121Show default size of dcache lines. 11122 11123@end table 11124 11125@node Searching Memory 11126@section Search Memory 11127@cindex searching memory 11128 11129Memory can be searched for a particular sequence of bytes with the 11130@code{find} command. 11131 11132@table @code 11133@kindex find 11134@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 11135@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 11136Search memory for the sequence of bytes specified by @var{val1}, @var{val2}, 11137etc. The search begins at address @var{start_addr} and continues for either 11138@var{len} bytes or through to @var{end_addr} inclusive. 11139@end table 11140 11141@var{s} and @var{n} are optional parameters. 11142They may be specified in either order, apart or together. 11143 11144@table @r 11145@item @var{s}, search query size 11146The size of each search query value. 11147 11148@table @code 11149@item b 11150bytes 11151@item h 11152halfwords (two bytes) 11153@item w 11154words (four bytes) 11155@item g 11156giant words (eight bytes) 11157@end table 11158 11159All values are interpreted in the current language. 11160This means, for example, that if the current source language is C/C@t{++} 11161then searching for the string ``hello'' includes the trailing '\0'. 11162 11163If the value size is not specified, it is taken from the 11164value's type in the current language. 11165This is useful when one wants to specify the search 11166pattern as a mixture of types. 11167Note that this means, for example, that in the case of C-like languages 11168a search for an untyped 0x42 will search for @samp{(int) 0x42} 11169which is typically four bytes. 11170 11171@item @var{n}, maximum number of finds 11172The maximum number of matches to print. The default is to print all finds. 11173@end table 11174 11175You can use strings as search values. Quote them with double-quotes 11176 (@code{"}). 11177The string value is copied into the search pattern byte by byte, 11178regardless of the endianness of the target and the size specification. 11179 11180The address of each match found is printed as well as a count of the 11181number of matches found. 11182 11183The address of the last value found is stored in convenience variable 11184@samp{$_}. 11185A count of the number of matches is stored in @samp{$numfound}. 11186 11187For example, if stopped at the @code{printf} in this function: 11188 11189@smallexample 11190void 11191hello () 11192@{ 11193 static char hello[] = "hello-hello"; 11194 static struct @{ char c; short s; int i; @} 11195 __attribute__ ((packed)) mixed 11196 = @{ 'c', 0x1234, 0x87654321 @}; 11197 printf ("%s\n", hello); 11198@} 11199@end smallexample 11200 11201@noindent 11202you get during debugging: 11203 11204@smallexample 11205(gdb) find &hello[0], +sizeof(hello), "hello" 112060x804956d <hello.1620+6> 112071 pattern found 11208(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o' 112090x8049567 <hello.1620> 112100x804956d <hello.1620+6> 112112 patterns found 11212(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l' 112130x8049567 <hello.1620> 112141 pattern found 11215(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321 112160x8049560 <mixed.1625> 112171 pattern found 11218(gdb) print $numfound 11219$1 = 1 11220(gdb) print $_ 11221$2 = (void *) 0x8049560 11222@end smallexample 11223 11224@node Optimized Code 11225@chapter Debugging Optimized Code 11226@cindex optimized code, debugging 11227@cindex debugging optimized code 11228 11229Almost all compilers support optimization. With optimization 11230disabled, the compiler generates assembly code that corresponds 11231directly to your source code, in a simplistic way. As the compiler 11232applies more powerful optimizations, the generated assembly code 11233diverges from your original source code. With help from debugging 11234information generated by the compiler, @value{GDBN} can map from 11235the running program back to constructs from your original source. 11236 11237@value{GDBN} is more accurate with optimization disabled. If you 11238can recompile without optimization, it is easier to follow the 11239progress of your program during debugging. But, there are many cases 11240where you may need to debug an optimized version. 11241 11242When you debug a program compiled with @samp{-g -O}, remember that the 11243optimizer has rearranged your code; the debugger shows you what is 11244really there. Do not be too surprised when the execution path does not 11245exactly match your source file! An extreme example: if you define a 11246variable, but never use it, @value{GDBN} never sees that 11247variable---because the compiler optimizes it out of existence. 11248 11249Some things do not work as well with @samp{-g -O} as with just 11250@samp{-g}, particularly on machines with instruction scheduling. If in 11251doubt, recompile with @samp{-g} alone, and if this fixes the problem, 11252please report it to us as a bug (including a test case!). 11253@xref{Variables}, for more information about debugging optimized code. 11254 11255@menu 11256* Inline Functions:: How @value{GDBN} presents inlining 11257* Tail Call Frames:: @value{GDBN} analysis of jumps to functions 11258@end menu 11259 11260@node Inline Functions 11261@section Inline Functions 11262@cindex inline functions, debugging 11263 11264@dfn{Inlining} is an optimization that inserts a copy of the function 11265body directly at each call site, instead of jumping to a shared 11266routine. @value{GDBN} displays inlined functions just like 11267non-inlined functions. They appear in backtraces. You can view their 11268arguments and local variables, step into them with @code{step}, skip 11269them with @code{next}, and escape from them with @code{finish}. 11270You can check whether a function was inlined by using the 11271@code{info frame} command. 11272 11273For @value{GDBN} to support inlined functions, the compiler must 11274record information about inlining in the debug information --- 11275@value{NGCC} using the @sc{dwarf 2} format does this, and several 11276other compilers do also. @value{GDBN} only supports inlined functions 11277when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1 11278do not emit two required attributes (@samp{DW_AT_call_file} and 11279@samp{DW_AT_call_line}); @value{GDBN} does not display inlined 11280function calls with earlier versions of @value{NGCC}. It instead 11281displays the arguments and local variables of inlined functions as 11282local variables in the caller. 11283 11284The body of an inlined function is directly included at its call site; 11285unlike a non-inlined function, there are no instructions devoted to 11286the call. @value{GDBN} still pretends that the call site and the 11287start of the inlined function are different instructions. Stepping to 11288the call site shows the call site, and then stepping again shows 11289the first line of the inlined function, even though no additional 11290instructions are executed. 11291 11292This makes source-level debugging much clearer; you can see both the 11293context of the call and then the effect of the call. Only stepping by 11294a single instruction using @code{stepi} or @code{nexti} does not do 11295this; single instruction steps always show the inlined body. 11296 11297There are some ways that @value{GDBN} does not pretend that inlined 11298function calls are the same as normal calls: 11299 11300@itemize @bullet 11301@item 11302Setting breakpoints at the call site of an inlined function may not 11303work, because the call site does not contain any code. @value{GDBN} 11304may incorrectly move the breakpoint to the next line of the enclosing 11305function, after the call. This limitation will be removed in a future 11306version of @value{GDBN}; until then, set a breakpoint on an earlier line 11307or inside the inlined function instead. 11308 11309@item 11310@value{GDBN} cannot locate the return value of inlined calls after 11311using the @code{finish} command. This is a limitation of compiler-generated 11312debugging information; after @code{finish}, you can step to the next line 11313and print a variable where your program stored the return value. 11314 11315@end itemize 11316 11317@node Tail Call Frames 11318@section Tail Call Frames 11319@cindex tail call frames, debugging 11320 11321Function @code{B} can call function @code{C} in its very last statement. In 11322unoptimized compilation the call of @code{C} is immediately followed by return 11323instruction at the end of @code{B} code. Optimizing compiler may replace the 11324call and return in function @code{B} into one jump to function @code{C} 11325instead. Such use of a jump instruction is called @dfn{tail call}. 11326 11327During execution of function @code{C}, there will be no indication in the 11328function call stack frames that it was tail-called from @code{B}. If function 11329@code{A} regularly calls function @code{B} which tail-calls function @code{C}, 11330then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in 11331some cases @value{GDBN} can determine that @code{C} was tail-called from 11332@code{B}, and it will then create fictitious call frame for that, with the 11333return address set up as if @code{B} called @code{C} normally. 11334 11335This functionality is currently supported only by DWARF 2 debugging format and 11336the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With 11337@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 11338this information. 11339 11340@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame 11341kind by text @code{tail call frame} such as in this sample @value{GDBN} output: 11342 11343@smallexample 11344(gdb) x/i $pc - 2 11345 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)> 11346(gdb) info frame 11347Stack level 1, frame at 0x7fffffffda30: 11348 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5 11349 tail call frame, caller of frame at 0x7fffffffda30 11350 source language c++. 11351 Arglist at unknown address. 11352 Locals at unknown address, Previous frame's sp is 0x7fffffffda30 11353@end smallexample 11354 11355The detection of all the possible code path executions can find them ambiguous. 11356There is no execution history stored (possible @ref{Reverse Execution} is never 11357used for this purpose) and the last known caller could have reached the known 11358callee by multiple different jump sequences. In such case @value{GDBN} still 11359tries to show at least all the unambiguous top tail callers and all the 11360unambiguous bottom tail calees, if any. 11361 11362@table @code 11363@anchor{set debug entry-values} 11364@item set debug entry-values 11365@kindex set debug entry-values 11366When set to on, enables printing of analysis messages for both frame argument 11367values at function entry and tail calls. It will show all the possible valid 11368tail calls code paths it has considered. It will also print the intersection 11369of them with the final unambiguous (possibly partial or even empty) code path 11370result. 11371 11372@item show debug entry-values 11373@kindex show debug entry-values 11374Show the current state of analysis messages printing for both frame argument 11375values at function entry and tail calls. 11376@end table 11377 11378The analysis messages for tail calls can for example show why the virtual tail 11379call frame for function @code{c} has not been recognized (due to the indirect 11380reference by variable @code{x}): 11381 11382@smallexample 11383static void __attribute__((noinline, noclone)) c (void); 11384void (*x) (void) = c; 11385static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 11386static void __attribute__((noinline, noclone)) c (void) @{ a (); @} 11387int main (void) @{ x (); return 0; @} 11388 11389Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find 11390DW_TAG_GNU_call_site 0x40039a in main 11391a () at t.c:3 113923 static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 11393(gdb) bt 11394#0 a () at t.c:3 11395#1 0x000000000040039a in main () at t.c:5 11396@end smallexample 11397 11398Another possibility is an ambiguous virtual tail call frames resolution: 11399 11400@smallexample 11401int i; 11402static void __attribute__((noinline, noclone)) f (void) @{ i++; @} 11403static void __attribute__((noinline, noclone)) e (void) @{ f (); @} 11404static void __attribute__((noinline, noclone)) d (void) @{ f (); @} 11405static void __attribute__((noinline, noclone)) c (void) @{ d (); @} 11406static void __attribute__((noinline, noclone)) b (void) 11407@{ if (i) c (); else e (); @} 11408static void __attribute__((noinline, noclone)) a (void) @{ b (); @} 11409int main (void) @{ a (); return 0; @} 11410 11411tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d) 11412tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e) 11413tailcall: reduced: 0x4004d2(a) | 11414(gdb) bt 11415#0 f () at t.c:2 11416#1 0x00000000004004d2 in a () at t.c:8 11417#2 0x0000000000400395 in main () at t.c:9 11418@end smallexample 11419 11420@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f} 11421@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f} 11422 11423@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK. 11424@ifset HAVE_MAKEINFO_CLICK 11425@set ARROW @click{} 11426@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}} 11427@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}} 11428@end ifset 11429@ifclear HAVE_MAKEINFO_CLICK 11430@set ARROW -> 11431@set CALLSEQ1B @value{CALLSEQ1A} 11432@set CALLSEQ2B @value{CALLSEQ2A} 11433@end ifclear 11434 11435Frames #0 and #2 are real, #1 is a virtual tail call frame. 11436The code can have possible execution paths @value{CALLSEQ1B} or 11437@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state. 11438 11439@code{initial:} state shows some random possible calling sequence @value{GDBN} 11440has found. It then finds another possible calling sequcen - that one is 11441prefixed by @code{compare:}. The non-ambiguous intersection of these two is 11442printed as the @code{reduced:} calling sequence. That one could have many 11443futher @code{compare:} and @code{reduced:} statements as long as there remain 11444any non-ambiguous sequence entries. 11445 11446For the frame of function @code{b} in both cases there are different possible 11447@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is 11448also ambigous. The only non-ambiguous frame is the one for function @code{a}, 11449therefore this one is displayed to the user while the ambiguous frames are 11450omitted. 11451 11452There can be also reasons why printing of frame argument values at function 11453entry may fail: 11454 11455@smallexample 11456int v; 11457static void __attribute__((noinline, noclone)) c (int i) @{ v++; @} 11458static void __attribute__((noinline, noclone)) a (int i); 11459static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @} 11460static void __attribute__((noinline, noclone)) a (int i) 11461@{ if (i) b (i - 1); else c (0); @} 11462int main (void) @{ a (5); return 0; @} 11463 11464(gdb) bt 11465#0 c (i=i@@entry=0) at t.c:2 11466#1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found 11467function "a" at 0x400420 can call itself via tail calls 11468i=<optimized out>) at t.c:6 11469#2 0x000000000040036e in main () at t.c:7 11470@end smallexample 11471 11472@value{GDBN} cannot find out from the inferior state if and how many times did 11473function @code{a} call itself (via function @code{b}) as these calls would be 11474tail calls. Such tail calls would modify thue @code{i} variable, therefore 11475@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN} 11476prints @code{<optimized out>} instead. 11477 11478@node Macros 11479@chapter C Preprocessor Macros 11480 11481Some languages, such as C and C@t{++}, provide a way to define and invoke 11482``preprocessor macros'' which expand into strings of tokens. 11483@value{GDBN} can evaluate expressions containing macro invocations, show 11484the result of macro expansion, and show a macro's definition, including 11485where it was defined. 11486 11487You may need to compile your program specially to provide @value{GDBN} 11488with information about preprocessor macros. Most compilers do not 11489include macros in their debugging information, even when you compile 11490with the @option{-g} flag. @xref{Compilation}. 11491 11492A program may define a macro at one point, remove that definition later, 11493and then provide a different definition after that. Thus, at different 11494points in the program, a macro may have different definitions, or have 11495no definition at all. If there is a current stack frame, @value{GDBN} 11496uses the macros in scope at that frame's source code line. Otherwise, 11497@value{GDBN} uses the macros in scope at the current listing location; 11498see @ref{List}. 11499 11500Whenever @value{GDBN} evaluates an expression, it always expands any 11501macro invocations present in the expression. @value{GDBN} also provides 11502the following commands for working with macros explicitly. 11503 11504@table @code 11505 11506@kindex macro expand 11507@cindex macro expansion, showing the results of preprocessor 11508@cindex preprocessor macro expansion, showing the results of 11509@cindex expanding preprocessor macros 11510@item macro expand @var{expression} 11511@itemx macro exp @var{expression} 11512Show the results of expanding all preprocessor macro invocations in 11513@var{expression}. Since @value{GDBN} simply expands macros, but does 11514not parse the result, @var{expression} need not be a valid expression; 11515it can be any string of tokens. 11516 11517@kindex macro exp1 11518@item macro expand-once @var{expression} 11519@itemx macro exp1 @var{expression} 11520@cindex expand macro once 11521@i{(This command is not yet implemented.)} Show the results of 11522expanding those preprocessor macro invocations that appear explicitly in 11523@var{expression}. Macro invocations appearing in that expansion are 11524left unchanged. This command allows you to see the effect of a 11525particular macro more clearly, without being confused by further 11526expansions. Since @value{GDBN} simply expands macros, but does not 11527parse the result, @var{expression} need not be a valid expression; it 11528can be any string of tokens. 11529 11530@kindex info macro 11531@cindex macro definition, showing 11532@cindex definition of a macro, showing 11533@cindex macros, from debug info 11534@item info macro [-a|-all] [--] @var{macro} 11535Show the current definition or all definitions of the named @var{macro}, 11536and describe the source location or compiler command-line where that 11537definition was established. The optional double dash is to signify the end of 11538argument processing and the beginning of @var{macro} for non C-like macros where 11539the macro may begin with a hyphen. 11540 11541@kindex info macros 11542@item info macros @var{linespec} 11543Show all macro definitions that are in effect at the location specified 11544by @var{linespec}, and describe the source location or compiler 11545command-line where those definitions were established. 11546 11547@kindex macro define 11548@cindex user-defined macros 11549@cindex defining macros interactively 11550@cindex macros, user-defined 11551@item macro define @var{macro} @var{replacement-list} 11552@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list} 11553Introduce a definition for a preprocessor macro named @var{macro}, 11554invocations of which are replaced by the tokens given in 11555@var{replacement-list}. The first form of this command defines an 11556``object-like'' macro, which takes no arguments; the second form 11557defines a ``function-like'' macro, which takes the arguments given in 11558@var{arglist}. 11559 11560A definition introduced by this command is in scope in every 11561expression evaluated in @value{GDBN}, until it is removed with the 11562@code{macro undef} command, described below. The definition overrides 11563all definitions for @var{macro} present in the program being debugged, 11564as well as any previous user-supplied definition. 11565 11566@kindex macro undef 11567@item macro undef @var{macro} 11568Remove any user-supplied definition for the macro named @var{macro}. 11569This command only affects definitions provided with the @code{macro 11570define} command, described above; it cannot remove definitions present 11571in the program being debugged. 11572 11573@kindex macro list 11574@item macro list 11575List all the macros defined using the @code{macro define} command. 11576@end table 11577 11578@cindex macros, example of debugging with 11579Here is a transcript showing the above commands in action. First, we 11580show our source files: 11581 11582@smallexample 11583$ cat sample.c 11584#include <stdio.h> 11585#include "sample.h" 11586 11587#define M 42 11588#define ADD(x) (M + x) 11589 11590main () 11591@{ 11592#define N 28 11593 printf ("Hello, world!\n"); 11594#undef N 11595 printf ("We're so creative.\n"); 11596#define N 1729 11597 printf ("Goodbye, world!\n"); 11598@} 11599$ cat sample.h 11600#define Q < 11601$ 11602@end smallexample 11603 11604Now, we compile the program using the @sc{gnu} C compiler, 11605@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the 11606minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3} 11607and @option{-gdwarf-4}; we recommend always choosing the most recent 11608version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler 11609includes information about preprocessor macros in the debugging 11610information. 11611 11612@smallexample 11613$ gcc -gdwarf-2 -g3 sample.c -o sample 11614$ 11615@end smallexample 11616 11617Now, we start @value{GDBN} on our sample program: 11618 11619@smallexample 11620$ gdb -nw sample 11621GNU gdb 2002-05-06-cvs 11622Copyright 2002 Free Software Foundation, Inc. 11623GDB is free software, @dots{} 11624(@value{GDBP}) 11625@end smallexample 11626 11627We can expand macros and examine their definitions, even when the 11628program is not running. @value{GDBN} uses the current listing position 11629to decide which macro definitions are in scope: 11630 11631@smallexample 11632(@value{GDBP}) list main 116333 116344 #define M 42 116355 #define ADD(x) (M + x) 116366 116377 main () 116388 @{ 116399 #define N 28 1164010 printf ("Hello, world!\n"); 1164111 #undef N 1164212 printf ("We're so creative.\n"); 11643(@value{GDBP}) info macro ADD 11644Defined at /home/jimb/gdb/macros/play/sample.c:5 11645#define ADD(x) (M + x) 11646(@value{GDBP}) info macro Q 11647Defined at /home/jimb/gdb/macros/play/sample.h:1 11648 included at /home/jimb/gdb/macros/play/sample.c:2 11649#define Q < 11650(@value{GDBP}) macro expand ADD(1) 11651expands to: (42 + 1) 11652(@value{GDBP}) macro expand-once ADD(1) 11653expands to: once (M + 1) 11654(@value{GDBP}) 11655@end smallexample 11656 11657In the example above, note that @code{macro expand-once} expands only 11658the macro invocation explicit in the original text --- the invocation of 11659@code{ADD} --- but does not expand the invocation of the macro @code{M}, 11660which was introduced by @code{ADD}. 11661 11662Once the program is running, @value{GDBN} uses the macro definitions in 11663force at the source line of the current stack frame: 11664 11665@smallexample 11666(@value{GDBP}) break main 11667Breakpoint 1 at 0x8048370: file sample.c, line 10. 11668(@value{GDBP}) run 11669Starting program: /home/jimb/gdb/macros/play/sample 11670 11671Breakpoint 1, main () at sample.c:10 1167210 printf ("Hello, world!\n"); 11673(@value{GDBP}) 11674@end smallexample 11675 11676At line 10, the definition of the macro @code{N} at line 9 is in force: 11677 11678@smallexample 11679(@value{GDBP}) info macro N 11680Defined at /home/jimb/gdb/macros/play/sample.c:9 11681#define N 28 11682(@value{GDBP}) macro expand N Q M 11683expands to: 28 < 42 11684(@value{GDBP}) print N Q M 11685$1 = 1 11686(@value{GDBP}) 11687@end smallexample 11688 11689As we step over directives that remove @code{N}'s definition, and then 11690give it a new definition, @value{GDBN} finds the definition (or lack 11691thereof) in force at each point: 11692 11693@smallexample 11694(@value{GDBP}) next 11695Hello, world! 1169612 printf ("We're so creative.\n"); 11697(@value{GDBP}) info macro N 11698The symbol `N' has no definition as a C/C++ preprocessor macro 11699at /home/jimb/gdb/macros/play/sample.c:12 11700(@value{GDBP}) next 11701We're so creative. 1170214 printf ("Goodbye, world!\n"); 11703(@value{GDBP}) info macro N 11704Defined at /home/jimb/gdb/macros/play/sample.c:13 11705#define N 1729 11706(@value{GDBP}) macro expand N Q M 11707expands to: 1729 < 42 11708(@value{GDBP}) print N Q M 11709$2 = 0 11710(@value{GDBP}) 11711@end smallexample 11712 11713In addition to source files, macros can be defined on the compilation command 11714line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in 11715such a way, @value{GDBN} displays the location of their definition as line zero 11716of the source file submitted to the compiler. 11717 11718@smallexample 11719(@value{GDBP}) info macro __STDC__ 11720Defined at /home/jimb/gdb/macros/play/sample.c:0 11721-D__STDC__=1 11722(@value{GDBP}) 11723@end smallexample 11724 11725 11726@node Tracepoints 11727@chapter Tracepoints 11728@c This chapter is based on the documentation written by Michael 11729@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni. 11730 11731@cindex tracepoints 11732In some applications, it is not feasible for the debugger to interrupt 11733the program's execution long enough for the developer to learn 11734anything helpful about its behavior. If the program's correctness 11735depends on its real-time behavior, delays introduced by a debugger 11736might cause the program to change its behavior drastically, or perhaps 11737fail, even when the code itself is correct. It is useful to be able 11738to observe the program's behavior without interrupting it. 11739 11740Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can 11741specify locations in the program, called @dfn{tracepoints}, and 11742arbitrary expressions to evaluate when those tracepoints are reached. 11743Later, using the @code{tfind} command, you can examine the values 11744those expressions had when the program hit the tracepoints. The 11745expressions may also denote objects in memory---structures or arrays, 11746for example---whose values @value{GDBN} should record; while visiting 11747a particular tracepoint, you may inspect those objects as if they were 11748in memory at that moment. However, because @value{GDBN} records these 11749values without interacting with you, it can do so quickly and 11750unobtrusively, hopefully not disturbing the program's behavior. 11751 11752The tracepoint facility is currently available only for remote 11753targets. @xref{Targets}. In addition, your remote target must know 11754how to collect trace data. This functionality is implemented in the 11755remote stub; however, none of the stubs distributed with @value{GDBN} 11756support tracepoints as of this writing. The format of the remote 11757packets used to implement tracepoints are described in @ref{Tracepoint 11758Packets}. 11759 11760It is also possible to get trace data from a file, in a manner reminiscent 11761of corefiles; you specify the filename, and use @code{tfind} to search 11762through the file. @xref{Trace Files}, for more details. 11763 11764This chapter describes the tracepoint commands and features. 11765 11766@menu 11767* Set Tracepoints:: 11768* Analyze Collected Data:: 11769* Tracepoint Variables:: 11770* Trace Files:: 11771@end menu 11772 11773@node Set Tracepoints 11774@section Commands to Set Tracepoints 11775 11776Before running such a @dfn{trace experiment}, an arbitrary number of 11777tracepoints can be set. A tracepoint is actually a special type of 11778breakpoint (@pxref{Set Breaks}), so you can manipulate it using 11779standard breakpoint commands. For instance, as with breakpoints, 11780tracepoint numbers are successive integers starting from one, and many 11781of the commands associated with tracepoints take the tracepoint number 11782as their argument, to identify which tracepoint to work on. 11783 11784For each tracepoint, you can specify, in advance, some arbitrary set 11785of data that you want the target to collect in the trace buffer when 11786it hits that tracepoint. The collected data can include registers, 11787local variables, or global data. Later, you can use @value{GDBN} 11788commands to examine the values these data had at the time the 11789tracepoint was hit. 11790 11791Tracepoints do not support every breakpoint feature. Ignore counts on 11792tracepoints have no effect, and tracepoints cannot run @value{GDBN} 11793commands when they are hit. Tracepoints may not be thread-specific 11794either. 11795 11796@cindex fast tracepoints 11797Some targets may support @dfn{fast tracepoints}, which are inserted in 11798a different way (such as with a jump instead of a trap), that is 11799faster but possibly restricted in where they may be installed. 11800 11801@cindex static tracepoints 11802@cindex markers, static tracepoints 11803@cindex probing markers, static tracepoints 11804Regular and fast tracepoints are dynamic tracing facilities, meaning 11805that they can be used to insert tracepoints at (almost) any location 11806in the target. Some targets may also support controlling @dfn{static 11807tracepoints} from @value{GDBN}. With static tracing, a set of 11808instrumentation points, also known as @dfn{markers}, are embedded in 11809the target program, and can be activated or deactivated by name or 11810address. These are usually placed at locations which facilitate 11811investigating what the target is actually doing. @value{GDBN}'s 11812support for static tracing includes being able to list instrumentation 11813points, and attach them with @value{GDBN} defined high level 11814tracepoints that expose the whole range of convenience of 11815@value{GDBN}'s tracepoints support. Namely, support for collecting 11816registers values and values of global or local (to the instrumentation 11817point) variables; tracepoint conditions and trace state variables. 11818The act of installing a @value{GDBN} static tracepoint on an 11819instrumentation point, or marker, is referred to as @dfn{probing} a 11820static tracepoint marker. 11821 11822@code{gdbserver} supports tracepoints on some target systems. 11823@xref{Server,,Tracepoints support in @code{gdbserver}}. 11824 11825This section describes commands to set tracepoints and associated 11826conditions and actions. 11827 11828@menu 11829* Create and Delete Tracepoints:: 11830* Enable and Disable Tracepoints:: 11831* Tracepoint Passcounts:: 11832* Tracepoint Conditions:: 11833* Trace State Variables:: 11834* Tracepoint Actions:: 11835* Listing Tracepoints:: 11836* Listing Static Tracepoint Markers:: 11837* Starting and Stopping Trace Experiments:: 11838* Tracepoint Restrictions:: 11839@end menu 11840 11841@node Create and Delete Tracepoints 11842@subsection Create and Delete Tracepoints 11843 11844@table @code 11845@cindex set tracepoint 11846@kindex trace 11847@item trace @var{location} 11848The @code{trace} command is very similar to the @code{break} command. 11849Its argument @var{location} can be a source line, a function name, or 11850an address in the target program. @xref{Specify Location}. The 11851@code{trace} command defines a tracepoint, which is a point in the 11852target program where the debugger will briefly stop, collect some 11853data, and then allow the program to continue. Setting a tracepoint or 11854changing its actions takes effect immediately if the remote stub 11855supports the @samp{InstallInTrace} feature (@pxref{install tracepoint 11856in tracing}). 11857If remote stub doesn't support the @samp{InstallInTrace} feature, all 11858these changes don't take effect until the next @code{tstart} 11859command, and once a trace experiment is running, further changes will 11860not have any effect until the next trace experiment starts. In addition, 11861@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose 11862address is not yet resolved. (This is similar to pending breakpoints.) 11863Pending tracepoints are not downloaded to the target and not installed 11864until they are resolved. The resolution of pending tracepoints requires 11865@value{GDBN} support---when debugging with the remote target, and 11866@value{GDBN} disconnects from the remote stub (@pxref{disconnected 11867tracing}), pending tracepoints can not be resolved (and downloaded to 11868the remote stub) while @value{GDBN} is disconnected. 11869 11870Here are some examples of using the @code{trace} command: 11871 11872@smallexample 11873(@value{GDBP}) @b{trace foo.c:121} // a source file and line number 11874 11875(@value{GDBP}) @b{trace +2} // 2 lines forward 11876 11877(@value{GDBP}) @b{trace my_function} // first source line of function 11878 11879(@value{GDBP}) @b{trace *my_function} // EXACT start address of function 11880 11881(@value{GDBP}) @b{trace *0x2117c4} // an address 11882@end smallexample 11883 11884@noindent 11885You can abbreviate @code{trace} as @code{tr}. 11886 11887@item trace @var{location} if @var{cond} 11888Set a tracepoint with condition @var{cond}; evaluate the expression 11889@var{cond} each time the tracepoint is reached, and collect data only 11890if the value is nonzero---that is, if @var{cond} evaluates as true. 11891@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more 11892information on tracepoint conditions. 11893 11894@item ftrace @var{location} [ if @var{cond} ] 11895@cindex set fast tracepoint 11896@cindex fast tracepoints, setting 11897@kindex ftrace 11898The @code{ftrace} command sets a fast tracepoint. For targets that 11899support them, fast tracepoints will use a more efficient but possibly 11900less general technique to trigger data collection, such as a jump 11901instruction instead of a trap, or some sort of hardware support. It 11902may not be possible to create a fast tracepoint at the desired 11903location, in which case the command will exit with an explanatory 11904message. 11905 11906@value{GDBN} handles arguments to @code{ftrace} exactly as for 11907@code{trace}. 11908 11909On 32-bit x86-architecture systems, fast tracepoints normally need to 11910be placed at an instruction that is 5 bytes or longer, but can be 11911placed at 4-byte instructions if the low 64K of memory of the target 11912program is available to install trampolines. Some Unix-type systems, 11913such as @sc{gnu}/Linux, exclude low addresses from the program's 11914address space; but for instance with the Linux kernel it is possible 11915to let @value{GDBN} use this area by doing a @command{sysctl} command 11916to set the @code{mmap_min_addr} kernel parameter, as in 11917 11918@example 11919sudo sysctl -w vm.mmap_min_addr=32768 11920@end example 11921 11922@noindent 11923which sets the low address to 32K, which leaves plenty of room for 11924trampolines. The minimum address should be set to a page boundary. 11925 11926@item strace @var{location} [ if @var{cond} ] 11927@cindex set static tracepoint 11928@cindex static tracepoints, setting 11929@cindex probe static tracepoint marker 11930@kindex strace 11931The @code{strace} command sets a static tracepoint. For targets that 11932support it, setting a static tracepoint probes a static 11933instrumentation point, or marker, found at @var{location}. It may not 11934be possible to set a static tracepoint at the desired location, in 11935which case the command will exit with an explanatory message. 11936 11937@value{GDBN} handles arguments to @code{strace} exactly as for 11938@code{trace}, with the addition that the user can also specify 11939@code{-m @var{marker}} as @var{location}. This probes the marker 11940identified by the @var{marker} string identifier. This identifier 11941depends on the static tracepoint backend library your program is 11942using. You can find all the marker identifiers in the @samp{ID} field 11943of the @code{info static-tracepoint-markers} command output. 11944@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint 11945Markers}. For example, in the following small program using the UST 11946tracing engine: 11947 11948@smallexample 11949main () 11950@{ 11951 trace_mark(ust, bar33, "str %s", "FOOBAZ"); 11952@} 11953@end smallexample 11954 11955@noindent 11956the marker id is composed of joining the first two arguments to the 11957@code{trace_mark} call with a slash, which translates to: 11958 11959@smallexample 11960(@value{GDBP}) info static-tracepoint-markers 11961Cnt Enb ID Address What 119621 n ust/bar33 0x0000000000400ddc in main at stexample.c:22 11963 Data: "str %s" 11964[etc...] 11965@end smallexample 11966 11967@noindent 11968so you may probe the marker above with: 11969 11970@smallexample 11971(@value{GDBP}) strace -m ust/bar33 11972@end smallexample 11973 11974Static tracepoints accept an extra collect action --- @code{collect 11975$_sdata}. This collects arbitrary user data passed in the probe point 11976call to the tracing library. In the UST example above, you'll see 11977that the third argument to @code{trace_mark} is a printf-like format 11978string. The user data is then the result of running that formating 11979string against the following arguments. Note that @code{info 11980static-tracepoint-markers} command output lists that format string in 11981the @samp{Data:} field. 11982 11983You can inspect this data when analyzing the trace buffer, by printing 11984the $_sdata variable like any other variable available to 11985@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}. 11986 11987@vindex $tpnum 11988@cindex last tracepoint number 11989@cindex recent tracepoint number 11990@cindex tracepoint number 11991The convenience variable @code{$tpnum} records the tracepoint number 11992of the most recently set tracepoint. 11993 11994@kindex delete tracepoint 11995@cindex tracepoint deletion 11996@item delete tracepoint @r{[}@var{num}@r{]} 11997Permanently delete one or more tracepoints. With no argument, the 11998default is to delete all tracepoints. Note that the regular 11999@code{delete} command can remove tracepoints also. 12000 12001Examples: 12002 12003@smallexample 12004(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints 12005 12006(@value{GDBP}) @b{delete trace} // remove all tracepoints 12007@end smallexample 12008 12009@noindent 12010You can abbreviate this command as @code{del tr}. 12011@end table 12012 12013@node Enable and Disable Tracepoints 12014@subsection Enable and Disable Tracepoints 12015 12016These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}. 12017 12018@table @code 12019@kindex disable tracepoint 12020@item disable tracepoint @r{[}@var{num}@r{]} 12021Disable tracepoint @var{num}, or all tracepoints if no argument 12022@var{num} is given. A disabled tracepoint will have no effect during 12023a trace experiment, but it is not forgotten. You can re-enable 12024a disabled tracepoint using the @code{enable tracepoint} command. 12025If the command is issued during a trace experiment and the debug target 12026has support for disabling tracepoints during a trace experiment, then the 12027change will be effective immediately. Otherwise, it will be applied to the 12028next trace experiment. 12029 12030@kindex enable tracepoint 12031@item enable tracepoint @r{[}@var{num}@r{]} 12032Enable tracepoint @var{num}, or all tracepoints. If this command is 12033issued during a trace experiment and the debug target supports enabling 12034tracepoints during a trace experiment, then the enabled tracepoints will 12035become effective immediately. Otherwise, they will become effective the 12036next time a trace experiment is run. 12037@end table 12038 12039@node Tracepoint Passcounts 12040@subsection Tracepoint Passcounts 12041 12042@table @code 12043@kindex passcount 12044@cindex tracepoint pass count 12045@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]} 12046Set the @dfn{passcount} of a tracepoint. The passcount is a way to 12047automatically stop a trace experiment. If a tracepoint's passcount is 12048@var{n}, then the trace experiment will be automatically stopped on 12049the @var{n}'th time that tracepoint is hit. If the tracepoint number 12050@var{num} is not specified, the @code{passcount} command sets the 12051passcount of the most recently defined tracepoint. If no passcount is 12052given, the trace experiment will run until stopped explicitly by the 12053user. 12054 12055Examples: 12056 12057@smallexample 12058(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of 12059@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2} 12060 12061(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the 12062@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.} 12063(@value{GDBP}) @b{trace foo} 12064(@value{GDBP}) @b{pass 3} 12065(@value{GDBP}) @b{trace bar} 12066(@value{GDBP}) @b{pass 2} 12067(@value{GDBP}) @b{trace baz} 12068(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been 12069@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has} 12070@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times} 12071@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.} 12072@end smallexample 12073@end table 12074 12075@node Tracepoint Conditions 12076@subsection Tracepoint Conditions 12077@cindex conditional tracepoints 12078@cindex tracepoint conditions 12079 12080The simplest sort of tracepoint collects data every time your program 12081reaches a specified place. You can also specify a @dfn{condition} for 12082a tracepoint. A condition is just a Boolean expression in your 12083programming language (@pxref{Expressions, ,Expressions}). A 12084tracepoint with a condition evaluates the expression each time your 12085program reaches it, and data collection happens only if the condition 12086is true. 12087 12088Tracepoint conditions can be specified when a tracepoint is set, by 12089using @samp{if} in the arguments to the @code{trace} command. 12090@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can 12091also be set or changed at any time with the @code{condition} command, 12092just as with breakpoints. 12093 12094Unlike breakpoint conditions, @value{GDBN} does not actually evaluate 12095the conditional expression itself. Instead, @value{GDBN} encodes the 12096expression into an agent expression (@pxref{Agent Expressions}) 12097suitable for execution on the target, independently of @value{GDBN}. 12098Global variables become raw memory locations, locals become stack 12099accesses, and so forth. 12100 12101For instance, suppose you have a function that is usually called 12102frequently, but should not be called after an error has occurred. You 12103could use the following tracepoint command to collect data about calls 12104of that function that happen while the error code is propagating 12105through the program; an unconditional tracepoint could end up 12106collecting thousands of useless trace frames that you would have to 12107search through. 12108 12109@smallexample 12110(@value{GDBP}) @kbd{trace normal_operation if errcode > 0} 12111@end smallexample 12112 12113@node Trace State Variables 12114@subsection Trace State Variables 12115@cindex trace state variables 12116 12117A @dfn{trace state variable} is a special type of variable that is 12118created and managed by target-side code. The syntax is the same as 12119that for GDB's convenience variables (a string prefixed with ``$''), 12120but they are stored on the target. They must be created explicitly, 12121using a @code{tvariable} command. They are always 64-bit signed 12122integers. 12123 12124Trace state variables are remembered by @value{GDBN}, and downloaded 12125to the target along with tracepoint information when the trace 12126experiment starts. There are no intrinsic limits on the number of 12127trace state variables, beyond memory limitations of the target. 12128 12129@cindex convenience variables, and trace state variables 12130Although trace state variables are managed by the target, you can use 12131them in print commands and expressions as if they were convenience 12132variables; @value{GDBN} will get the current value from the target 12133while the trace experiment is running. Trace state variables share 12134the same namespace as other ``$'' variables, which means that you 12135cannot have trace state variables with names like @code{$23} or 12136@code{$pc}, nor can you have a trace state variable and a convenience 12137variable with the same name. 12138 12139@table @code 12140 12141@item tvariable $@var{name} [ = @var{expression} ] 12142@kindex tvariable 12143The @code{tvariable} command creates a new trace state variable named 12144@code{$@var{name}}, and optionally gives it an initial value of 12145@var{expression}. The @var{expression} is evaluated when this command is 12146entered; the result will be converted to an integer if possible, 12147otherwise @value{GDBN} will report an error. A subsequent 12148@code{tvariable} command specifying the same name does not create a 12149variable, but instead assigns the supplied initial value to the 12150existing variable of that name, overwriting any previous initial 12151value. The default initial value is 0. 12152 12153@item info tvariables 12154@kindex info tvariables 12155List all the trace state variables along with their initial values. 12156Their current values may also be displayed, if the trace experiment is 12157currently running. 12158 12159@item delete tvariable @r{[} $@var{name} @dots{} @r{]} 12160@kindex delete tvariable 12161Delete the given trace state variables, or all of them if no arguments 12162are specified. 12163 12164@end table 12165 12166@node Tracepoint Actions 12167@subsection Tracepoint Action Lists 12168 12169@table @code 12170@kindex actions 12171@cindex tracepoint actions 12172@item actions @r{[}@var{num}@r{]} 12173This command will prompt for a list of actions to be taken when the 12174tracepoint is hit. If the tracepoint number @var{num} is not 12175specified, this command sets the actions for the one that was most 12176recently defined (so that you can define a tracepoint and then say 12177@code{actions} without bothering about its number). You specify the 12178actions themselves on the following lines, one action at a time, and 12179terminate the actions list with a line containing just @code{end}. So 12180far, the only defined actions are @code{collect}, @code{teval}, and 12181@code{while-stepping}. 12182 12183@code{actions} is actually equivalent to @code{commands} (@pxref{Break 12184Commands, ,Breakpoint Command Lists}), except that only the defined 12185actions are allowed; any other @value{GDBN} command is rejected. 12186 12187@cindex remove actions from a tracepoint 12188To remove all actions from a tracepoint, type @samp{actions @var{num}} 12189and follow it immediately with @samp{end}. 12190 12191@smallexample 12192(@value{GDBP}) @b{collect @var{data}} // collect some data 12193 12194(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data 12195 12196(@value{GDBP}) @b{end} // signals the end of actions. 12197@end smallexample 12198 12199In the following example, the action list begins with @code{collect} 12200commands indicating the things to be collected when the tracepoint is 12201hit. Then, in order to single-step and collect additional data 12202following the tracepoint, a @code{while-stepping} command is used, 12203followed by the list of things to be collected after each step in a 12204sequence of single steps. The @code{while-stepping} command is 12205terminated by its own separate @code{end} command. Lastly, the action 12206list is terminated by an @code{end} command. 12207 12208@smallexample 12209(@value{GDBP}) @b{trace foo} 12210(@value{GDBP}) @b{actions} 12211Enter actions for tracepoint 1, one per line: 12212> collect bar,baz 12213> collect $regs 12214> while-stepping 12 12215 > collect $pc, arr[i] 12216 > end 12217end 12218@end smallexample 12219 12220@kindex collect @r{(tracepoints)} 12221@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{} 12222Collect values of the given expressions when the tracepoint is hit. 12223This command accepts a comma-separated list of any valid expressions. 12224In addition to global, static, or local variables, the following 12225special arguments are supported: 12226 12227@table @code 12228@item $regs 12229Collect all registers. 12230 12231@item $args 12232Collect all function arguments. 12233 12234@item $locals 12235Collect all local variables. 12236 12237@item $_ret 12238Collect the return address. This is helpful if you want to see more 12239of a backtrace. 12240 12241@item $_probe_argc 12242Collects the number of arguments from the static probe at which the 12243tracepoint is located. 12244@xref{Static Probe Points}. 12245 12246@item $_probe_arg@var{n} 12247@var{n} is an integer between 0 and 11. Collects the @var{n}th argument 12248from the static probe at which the tracepoint is located. 12249@xref{Static Probe Points}. 12250 12251@item $_sdata 12252@vindex $_sdata@r{, collect} 12253Collect static tracepoint marker specific data. Only available for 12254static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action 12255Lists}. On the UST static tracepoints library backend, an 12256instrumentation point resembles a @code{printf} function call. The 12257tracing library is able to collect user specified data formatted to a 12258character string using the format provided by the programmer that 12259instrumented the program. Other backends have similar mechanisms. 12260Here's an example of a UST marker call: 12261 12262@smallexample 12263 const char master_name[] = "$your_name"; 12264 trace_mark(channel1, marker1, "hello %s", master_name) 12265@end smallexample 12266 12267In this case, collecting @code{$_sdata} collects the string 12268@samp{hello $yourname}. When analyzing the trace buffer, you can 12269inspect @samp{$_sdata} like any other variable available to 12270@value{GDBN}. 12271@end table 12272 12273You can give several consecutive @code{collect} commands, each one 12274with a single argument, or one @code{collect} command with several 12275arguments separated by commas; the effect is the same. 12276 12277The optional @var{mods} changes the usual handling of the arguments. 12278@code{s} requests that pointers to chars be handled as strings, in 12279particular collecting the contents of the memory being pointed at, up 12280to the first zero. The upper bound is by default the value of the 12281@code{print elements} variable; if @code{s} is followed by a decimal 12282number, that is the upper bound instead. So for instance 12283@samp{collect/s25 mystr} collects as many as 25 characters at 12284@samp{mystr}. 12285 12286The command @code{info scope} (@pxref{Symbols, info scope}) is 12287particularly useful for figuring out what data to collect. 12288 12289@kindex teval @r{(tracepoints)} 12290@item teval @var{expr1}, @var{expr2}, @dots{} 12291Evaluate the given expressions when the tracepoint is hit. This 12292command accepts a comma-separated list of expressions. The results 12293are discarded, so this is mainly useful for assigning values to trace 12294state variables (@pxref{Trace State Variables}) without adding those 12295values to the trace buffer, as would be the case if the @code{collect} 12296action were used. 12297 12298@kindex while-stepping @r{(tracepoints)} 12299@item while-stepping @var{n} 12300Perform @var{n} single-step instruction traces after the tracepoint, 12301collecting new data after each step. The @code{while-stepping} 12302command is followed by the list of what to collect while stepping 12303(followed by its own @code{end} command): 12304 12305@smallexample 12306> while-stepping 12 12307 > collect $regs, myglobal 12308 > end 12309> 12310@end smallexample 12311 12312@noindent 12313Note that @code{$pc} is not automatically collected by 12314@code{while-stepping}; you need to explicitly collect that register if 12315you need it. You may abbreviate @code{while-stepping} as @code{ws} or 12316@code{stepping}. 12317 12318@item set default-collect @var{expr1}, @var{expr2}, @dots{} 12319@kindex set default-collect 12320@cindex default collection action 12321This variable is a list of expressions to collect at each tracepoint 12322hit. It is effectively an additional @code{collect} action prepended 12323to every tracepoint action list. The expressions are parsed 12324individually for each tracepoint, so for instance a variable named 12325@code{xyz} may be interpreted as a global for one tracepoint, and a 12326local for another, as appropriate to the tracepoint's location. 12327 12328@item show default-collect 12329@kindex show default-collect 12330Show the list of expressions that are collected by default at each 12331tracepoint hit. 12332 12333@end table 12334 12335@node Listing Tracepoints 12336@subsection Listing Tracepoints 12337 12338@table @code 12339@kindex info tracepoints @r{[}@var{n}@dots{}@r{]} 12340@kindex info tp @r{[}@var{n}@dots{}@r{]} 12341@cindex information about tracepoints 12342@item info tracepoints @r{[}@var{num}@dots{}@r{]} 12343Display information about the tracepoint @var{num}. If you don't 12344specify a tracepoint number, displays information about all the 12345tracepoints defined so far. The format is similar to that used for 12346@code{info breakpoints}; in fact, @code{info tracepoints} is the same 12347command, simply restricting itself to tracepoints. 12348 12349A tracepoint's listing may include additional information specific to 12350tracing: 12351 12352@itemize @bullet 12353@item 12354its passcount as given by the @code{passcount @var{n}} command 12355 12356@item 12357the state about installed on target of each location 12358@end itemize 12359 12360@smallexample 12361(@value{GDBP}) @b{info trace} 12362Num Type Disp Enb Address What 123631 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7 12364 while-stepping 20 12365 collect globfoo, $regs 12366 end 12367 collect globfoo2 12368 end 12369 pass count 1200 123702 tracepoint keep y <MULTIPLE> 12371 collect $eip 123722.1 y 0x0804859c in func4 at change-loc.h:35 12373 installed on target 123742.2 y 0xb7ffc480 in func4 at change-loc.h:35 12375 installed on target 123762.3 y <PENDING> set_tracepoint 123773 tracepoint keep y 0x080485b1 in foo at change-loc.c:29 12378 not installed on target 12379(@value{GDBP}) 12380@end smallexample 12381 12382@noindent 12383This command can be abbreviated @code{info tp}. 12384@end table 12385 12386@node Listing Static Tracepoint Markers 12387@subsection Listing Static Tracepoint Markers 12388 12389@table @code 12390@kindex info static-tracepoint-markers 12391@cindex information about static tracepoint markers 12392@item info static-tracepoint-markers 12393Display information about all static tracepoint markers defined in the 12394program. 12395 12396For each marker, the following columns are printed: 12397 12398@table @emph 12399@item Count 12400An incrementing counter, output to help readability. This is not a 12401stable identifier. 12402@item ID 12403The marker ID, as reported by the target. 12404@item Enabled or Disabled 12405Probed markers are tagged with @samp{y}. @samp{n} identifies marks 12406that are not enabled. 12407@item Address 12408Where the marker is in your program, as a memory address. 12409@item What 12410Where the marker is in the source for your program, as a file and line 12411number. If the debug information included in the program does not 12412allow @value{GDBN} to locate the source of the marker, this column 12413will be left blank. 12414@end table 12415 12416@noindent 12417In addition, the following information may be printed for each marker: 12418 12419@table @emph 12420@item Data 12421User data passed to the tracing library by the marker call. In the 12422UST backend, this is the format string passed as argument to the 12423marker call. 12424@item Static tracepoints probing the marker 12425The list of static tracepoints attached to the marker. 12426@end table 12427 12428@smallexample 12429(@value{GDBP}) info static-tracepoint-markers 12430Cnt ID Enb Address What 124311 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25 12432 Data: number1 %d number2 %d 12433 Probed by static tracepoints: #2 124342 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24 12435 Data: str %s 12436(@value{GDBP}) 12437@end smallexample 12438@end table 12439 12440@node Starting and Stopping Trace Experiments 12441@subsection Starting and Stopping Trace Experiments 12442 12443@table @code 12444@kindex tstart [ @var{notes} ] 12445@cindex start a new trace experiment 12446@cindex collected data discarded 12447@item tstart 12448This command starts the trace experiment, and begins collecting data. 12449It has the side effect of discarding all the data collected in the 12450trace buffer during the previous trace experiment. If any arguments 12451are supplied, they are taken as a note and stored with the trace 12452experiment's state. The notes may be arbitrary text, and are 12453especially useful with disconnected tracing in a multi-user context; 12454the notes can explain what the trace is doing, supply user contact 12455information, and so forth. 12456 12457@kindex tstop [ @var{notes} ] 12458@cindex stop a running trace experiment 12459@item tstop 12460This command stops the trace experiment. If any arguments are 12461supplied, they are recorded with the experiment as a note. This is 12462useful if you are stopping a trace started by someone else, for 12463instance if the trace is interfering with the system's behavior and 12464needs to be stopped quickly. 12465 12466@strong{Note}: a trace experiment and data collection may stop 12467automatically if any tracepoint's passcount is reached 12468(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full. 12469 12470@kindex tstatus 12471@cindex status of trace data collection 12472@cindex trace experiment, status of 12473@item tstatus 12474This command displays the status of the current trace data 12475collection. 12476@end table 12477 12478Here is an example of the commands we described so far: 12479 12480@smallexample 12481(@value{GDBP}) @b{trace gdb_c_test} 12482(@value{GDBP}) @b{actions} 12483Enter actions for tracepoint #1, one per line. 12484> collect $regs,$locals,$args 12485> while-stepping 11 12486 > collect $regs 12487 > end 12488> end 12489(@value{GDBP}) @b{tstart} 12490 [time passes @dots{}] 12491(@value{GDBP}) @b{tstop} 12492@end smallexample 12493 12494@anchor{disconnected tracing} 12495@cindex disconnected tracing 12496You can choose to continue running the trace experiment even if 12497@value{GDBN} disconnects from the target, voluntarily or 12498involuntarily. For commands such as @code{detach}, the debugger will 12499ask what you want to do with the trace. But for unexpected 12500terminations (@value{GDBN} crash, network outage), it would be 12501unfortunate to lose hard-won trace data, so the variable 12502@code{disconnected-tracing} lets you decide whether the trace should 12503continue running without @value{GDBN}. 12504 12505@table @code 12506@item set disconnected-tracing on 12507@itemx set disconnected-tracing off 12508@kindex set disconnected-tracing 12509Choose whether a tracing run should continue to run if @value{GDBN} 12510has disconnected from the target. Note that @code{detach} or 12511@code{quit} will ask you directly what to do about a running trace no 12512matter what this variable's setting, so the variable is mainly useful 12513for handling unexpected situations, such as loss of the network. 12514 12515@item show disconnected-tracing 12516@kindex show disconnected-tracing 12517Show the current choice for disconnected tracing. 12518 12519@end table 12520 12521When you reconnect to the target, the trace experiment may or may not 12522still be running; it might have filled the trace buffer in the 12523meantime, or stopped for one of the other reasons. If it is running, 12524it will continue after reconnection. 12525 12526Upon reconnection, the target will upload information about the 12527tracepoints in effect. @value{GDBN} will then compare that 12528information to the set of tracepoints currently defined, and attempt 12529to match them up, allowing for the possibility that the numbers may 12530have changed due to creation and deletion in the meantime. If one of 12531the target's tracepoints does not match any in @value{GDBN}, the 12532debugger will create a new tracepoint, so that you have a number with 12533which to specify that tracepoint. This matching-up process is 12534necessarily heuristic, and it may result in useless tracepoints being 12535created; you may simply delete them if they are of no use. 12536 12537@cindex circular trace buffer 12538If your target agent supports a @dfn{circular trace buffer}, then you 12539can run a trace experiment indefinitely without filling the trace 12540buffer; when space runs out, the agent deletes already-collected trace 12541frames, oldest first, until there is enough room to continue 12542collecting. This is especially useful if your tracepoints are being 12543hit too often, and your trace gets terminated prematurely because the 12544buffer is full. To ask for a circular trace buffer, simply set 12545@samp{circular-trace-buffer} to on. You can set this at any time, 12546including during tracing; if the agent can do it, it will change 12547buffer handling on the fly, otherwise it will not take effect until 12548the next run. 12549 12550@table @code 12551@item set circular-trace-buffer on 12552@itemx set circular-trace-buffer off 12553@kindex set circular-trace-buffer 12554Choose whether a tracing run should use a linear or circular buffer 12555for trace data. A linear buffer will not lose any trace data, but may 12556fill up prematurely, while a circular buffer will discard old trace 12557data, but it will have always room for the latest tracepoint hits. 12558 12559@item show circular-trace-buffer 12560@kindex show circular-trace-buffer 12561Show the current choice for the trace buffer. Note that this may not 12562match the agent's current buffer handling, nor is it guaranteed to 12563match the setting that might have been in effect during a past run, 12564for instance if you are looking at frames from a trace file. 12565 12566@end table 12567 12568@table @code 12569@item set trace-buffer-size @var{n} 12570@itemx set trace-buffer-size unlimited 12571@kindex set trace-buffer-size 12572Request that the target use a trace buffer of @var{n} bytes. Not all 12573targets will honor the request; they may have a compiled-in size for 12574the trace buffer, or some other limitation. Set to a value of 12575@code{unlimited} or @code{-1} to let the target use whatever size it 12576likes. This is also the default. 12577 12578@item show trace-buffer-size 12579@kindex show trace-buffer-size 12580Show the current requested size for the trace buffer. Note that this 12581will only match the actual size if the target supports size-setting, 12582and was able to handle the requested size. For instance, if the 12583target can only change buffer size between runs, this variable will 12584not reflect the change until the next run starts. Use @code{tstatus} 12585to get a report of the actual buffer size. 12586@end table 12587 12588@table @code 12589@item set trace-user @var{text} 12590@kindex set trace-user 12591 12592@item show trace-user 12593@kindex show trace-user 12594 12595@item set trace-notes @var{text} 12596@kindex set trace-notes 12597Set the trace run's notes. 12598 12599@item show trace-notes 12600@kindex show trace-notes 12601Show the trace run's notes. 12602 12603@item set trace-stop-notes @var{text} 12604@kindex set trace-stop-notes 12605Set the trace run's stop notes. The handling of the note is as for 12606@code{tstop} arguments; the set command is convenient way to fix a 12607stop note that is mistaken or incomplete. 12608 12609@item show trace-stop-notes 12610@kindex show trace-stop-notes 12611Show the trace run's stop notes. 12612 12613@end table 12614 12615@node Tracepoint Restrictions 12616@subsection Tracepoint Restrictions 12617 12618@cindex tracepoint restrictions 12619There are a number of restrictions on the use of tracepoints. As 12620described above, tracepoint data gathering occurs on the target 12621without interaction from @value{GDBN}. Thus the full capabilities of 12622the debugger are not available during data gathering, and then at data 12623examination time, you will be limited by only having what was 12624collected. The following items describe some common problems, but it 12625is not exhaustive, and you may run into additional difficulties not 12626mentioned here. 12627 12628@itemize @bullet 12629 12630@item 12631Tracepoint expressions are intended to gather objects (lvalues). Thus 12632the full flexibility of GDB's expression evaluator is not available. 12633You cannot call functions, cast objects to aggregate types, access 12634convenience variables or modify values (except by assignment to trace 12635state variables). Some language features may implicitly call 12636functions (for instance Objective-C fields with accessors), and therefore 12637cannot be collected either. 12638 12639@item 12640Collection of local variables, either individually or in bulk with 12641@code{$locals} or @code{$args}, during @code{while-stepping} may 12642behave erratically. The stepping action may enter a new scope (for 12643instance by stepping into a function), or the location of the variable 12644may change (for instance it is loaded into a register). The 12645tracepoint data recorded uses the location information for the 12646variables that is correct for the tracepoint location. When the 12647tracepoint is created, it is not possible, in general, to determine 12648where the steps of a @code{while-stepping} sequence will advance the 12649program---particularly if a conditional branch is stepped. 12650 12651@item 12652Collection of an incompletely-initialized or partially-destroyed object 12653may result in something that @value{GDBN} cannot display, or displays 12654in a misleading way. 12655 12656@item 12657When @value{GDBN} displays a pointer to character it automatically 12658dereferences the pointer to also display characters of the string 12659being pointed to. However, collecting the pointer during tracing does 12660not automatically collect the string. You need to explicitly 12661dereference the pointer and provide size information if you want to 12662collect not only the pointer, but the memory pointed to. For example, 12663@code{*ptr@@50} can be used to collect the 50 element array pointed to 12664by @code{ptr}. 12665 12666@item 12667It is not possible to collect a complete stack backtrace at a 12668tracepoint. Instead, you may collect the registers and a few hundred 12669bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300} 12670(adjust to use the name of the actual stack pointer register on your 12671target architecture, and the amount of stack you wish to capture). 12672Then the @code{backtrace} command will show a partial backtrace when 12673using a trace frame. The number of stack frames that can be examined 12674depends on the sizes of the frames in the collected stack. Note that 12675if you ask for a block so large that it goes past the bottom of the 12676stack, the target agent may report an error trying to read from an 12677invalid address. 12678 12679@item 12680If you do not collect registers at a tracepoint, @value{GDBN} can 12681infer that the value of @code{$pc} must be the same as the address of 12682the tracepoint and use that when you are looking at a trace frame 12683for that tracepoint. However, this cannot work if the tracepoint has 12684multiple locations (for instance if it was set in a function that was 12685inlined), or if it has a @code{while-stepping} loop. In those cases 12686@value{GDBN} will warn you that it can't infer @code{$pc}, and default 12687it to zero. 12688 12689@end itemize 12690 12691@node Analyze Collected Data 12692@section Using the Collected Data 12693 12694After the tracepoint experiment ends, you use @value{GDBN} commands 12695for examining the trace data. The basic idea is that each tracepoint 12696collects a trace @dfn{snapshot} every time it is hit and another 12697snapshot every time it single-steps. All these snapshots are 12698consecutively numbered from zero and go into a buffer, and you can 12699examine them later. The way you examine them is to @dfn{focus} on a 12700specific trace snapshot. When the remote stub is focused on a trace 12701snapshot, it will respond to all @value{GDBN} requests for memory and 12702registers by reading from the buffer which belongs to that snapshot, 12703rather than from @emph{real} memory or registers of the program being 12704debugged. This means that @strong{all} @value{GDBN} commands 12705(@code{print}, @code{info registers}, @code{backtrace}, etc.) will 12706behave as if we were currently debugging the program state as it was 12707when the tracepoint occurred. Any requests for data that are not in 12708the buffer will fail. 12709 12710@menu 12711* tfind:: How to select a trace snapshot 12712* tdump:: How to display all data for a snapshot 12713* save tracepoints:: How to save tracepoints for a future run 12714@end menu 12715 12716@node tfind 12717@subsection @code{tfind @var{n}} 12718 12719@kindex tfind 12720@cindex select trace snapshot 12721@cindex find trace snapshot 12722The basic command for selecting a trace snapshot from the buffer is 12723@code{tfind @var{n}}, which finds trace snapshot number @var{n}, 12724counting from zero. If no argument @var{n} is given, the next 12725snapshot is selected. 12726 12727Here are the various forms of using the @code{tfind} command. 12728 12729@table @code 12730@item tfind start 12731Find the first snapshot in the buffer. This is a synonym for 12732@code{tfind 0} (since 0 is the number of the first snapshot). 12733 12734@item tfind none 12735Stop debugging trace snapshots, resume @emph{live} debugging. 12736 12737@item tfind end 12738Same as @samp{tfind none}. 12739 12740@item tfind 12741No argument means find the next trace snapshot. 12742 12743@item tfind - 12744Find the previous trace snapshot before the current one. This permits 12745retracing earlier steps. 12746 12747@item tfind tracepoint @var{num} 12748Find the next snapshot associated with tracepoint @var{num}. Search 12749proceeds forward from the last examined trace snapshot. If no 12750argument @var{num} is given, it means find the next snapshot collected 12751for the same tracepoint as the current snapshot. 12752 12753@item tfind pc @var{addr} 12754Find the next snapshot associated with the value @var{addr} of the 12755program counter. Search proceeds forward from the last examined trace 12756snapshot. If no argument @var{addr} is given, it means find the next 12757snapshot with the same value of PC as the current snapshot. 12758 12759@item tfind outside @var{addr1}, @var{addr2} 12760Find the next snapshot whose PC is outside the given range of 12761addresses (exclusive). 12762 12763@item tfind range @var{addr1}, @var{addr2} 12764Find the next snapshot whose PC is between @var{addr1} and 12765@var{addr2} (inclusive). 12766 12767@item tfind line @r{[}@var{file}:@r{]}@var{n} 12768Find the next snapshot associated with the source line @var{n}. If 12769the optional argument @var{file} is given, refer to line @var{n} in 12770that source file. Search proceeds forward from the last examined 12771trace snapshot. If no argument @var{n} is given, it means find the 12772next line other than the one currently being examined; thus saying 12773@code{tfind line} repeatedly can appear to have the same effect as 12774stepping from line to line in a @emph{live} debugging session. 12775@end table 12776 12777The default arguments for the @code{tfind} commands are specifically 12778designed to make it easy to scan through the trace buffer. For 12779instance, @code{tfind} with no argument selects the next trace 12780snapshot, and @code{tfind -} with no argument selects the previous 12781trace snapshot. So, by giving one @code{tfind} command, and then 12782simply hitting @key{RET} repeatedly you can examine all the trace 12783snapshots in order. Or, by saying @code{tfind -} and then hitting 12784@key{RET} repeatedly you can examine the snapshots in reverse order. 12785The @code{tfind line} command with no argument selects the snapshot 12786for the next source line executed. The @code{tfind pc} command with 12787no argument selects the next snapshot with the same program counter 12788(PC) as the current frame. The @code{tfind tracepoint} command with 12789no argument selects the next trace snapshot collected by the same 12790tracepoint as the current one. 12791 12792In addition to letting you scan through the trace buffer manually, 12793these commands make it easy to construct @value{GDBN} scripts that 12794scan through the trace buffer and print out whatever collected data 12795you are interested in. Thus, if we want to examine the PC, FP, and SP 12796registers from each trace frame in the buffer, we can say this: 12797 12798@smallexample 12799(@value{GDBP}) @b{tfind start} 12800(@value{GDBP}) @b{while ($trace_frame != -1)} 12801> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \ 12802 $trace_frame, $pc, $sp, $fp 12803> tfind 12804> end 12805 12806Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44 12807Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44 12808Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44 12809Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44 12810Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44 12811Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44 12812Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44 12813Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44 12814Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44 12815Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44 12816Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14 12817@end smallexample 12818 12819Or, if we want to examine the variable @code{X} at each source line in 12820the buffer: 12821 12822@smallexample 12823(@value{GDBP}) @b{tfind start} 12824(@value{GDBP}) @b{while ($trace_frame != -1)} 12825> printf "Frame %d, X == %d\n", $trace_frame, X 12826> tfind line 12827> end 12828 12829Frame 0, X = 1 12830Frame 7, X = 2 12831Frame 13, X = 255 12832@end smallexample 12833 12834@node tdump 12835@subsection @code{tdump} 12836@kindex tdump 12837@cindex dump all data collected at tracepoint 12838@cindex tracepoint data, display 12839 12840This command takes no arguments. It prints all the data collected at 12841the current trace snapshot. 12842 12843@smallexample 12844(@value{GDBP}) @b{trace 444} 12845(@value{GDBP}) @b{actions} 12846Enter actions for tracepoint #2, one per line: 12847> collect $regs, $locals, $args, gdb_long_test 12848> end 12849 12850(@value{GDBP}) @b{tstart} 12851 12852(@value{GDBP}) @b{tfind line 444} 12853#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66) 12854at gdb_test.c:444 12855444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", ) 12856 12857(@value{GDBP}) @b{tdump} 12858Data collected at tracepoint 2, trace frame 1: 12859d0 0xc4aa0085 -995491707 12860d1 0x18 24 12861d2 0x80 128 12862d3 0x33 51 12863d4 0x71aea3d 119204413 12864d5 0x22 34 12865d6 0xe0 224 12866d7 0x380035 3670069 12867a0 0x19e24a 1696330 12868a1 0x3000668 50333288 12869a2 0x100 256 12870a3 0x322000 3284992 12871a4 0x3000698 50333336 12872a5 0x1ad3cc 1758156 12873fp 0x30bf3c 0x30bf3c 12874sp 0x30bf34 0x30bf34 12875ps 0x0 0 12876pc 0x20b2c8 0x20b2c8 12877fpcontrol 0x0 0 12878fpstatus 0x0 0 12879fpiaddr 0x0 0 12880p = 0x20e5b4 "gdb-test" 12881p1 = (void *) 0x11 12882p2 = (void *) 0x22 12883p3 = (void *) 0x33 12884p4 = (void *) 0x44 12885p5 = (void *) 0x55 12886p6 = (void *) 0x66 12887gdb_long_test = 17 '\021' 12888 12889(@value{GDBP}) 12890@end smallexample 12891 12892@code{tdump} works by scanning the tracepoint's current collection 12893actions and printing the value of each expression listed. So 12894@code{tdump} can fail, if after a run, you change the tracepoint's 12895actions to mention variables that were not collected during the run. 12896 12897Also, for tracepoints with @code{while-stepping} loops, @code{tdump} 12898uses the collected value of @code{$pc} to distinguish between trace 12899frames that were collected at the tracepoint hit, and frames that were 12900collected while stepping. This allows it to correctly choose whether 12901to display the basic list of collections, or the collections from the 12902body of the while-stepping loop. However, if @code{$pc} was not collected, 12903then @code{tdump} will always attempt to dump using the basic collection 12904list, and may fail if a while-stepping frame does not include all the 12905same data that is collected at the tracepoint hit. 12906@c This is getting pretty arcane, example would be good. 12907 12908@node save tracepoints 12909@subsection @code{save tracepoints @var{filename}} 12910@kindex save tracepoints 12911@kindex save-tracepoints 12912@cindex save tracepoints for future sessions 12913 12914This command saves all current tracepoint definitions together with 12915their actions and passcounts, into a file @file{@var{filename}} 12916suitable for use in a later debugging session. To read the saved 12917tracepoint definitions, use the @code{source} command (@pxref{Command 12918Files}). The @w{@code{save-tracepoints}} command is a deprecated 12919alias for @w{@code{save tracepoints}} 12920 12921@node Tracepoint Variables 12922@section Convenience Variables for Tracepoints 12923@cindex tracepoint variables 12924@cindex convenience variables for tracepoints 12925 12926@table @code 12927@vindex $trace_frame 12928@item (int) $trace_frame 12929The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no 12930snapshot is selected. 12931 12932@vindex $tracepoint 12933@item (int) $tracepoint 12934The tracepoint for the current trace snapshot. 12935 12936@vindex $trace_line 12937@item (int) $trace_line 12938The line number for the current trace snapshot. 12939 12940@vindex $trace_file 12941@item (char []) $trace_file 12942The source file for the current trace snapshot. 12943 12944@vindex $trace_func 12945@item (char []) $trace_func 12946The name of the function containing @code{$tracepoint}. 12947@end table 12948 12949Note: @code{$trace_file} is not suitable for use in @code{printf}, 12950use @code{output} instead. 12951 12952Here's a simple example of using these convenience variables for 12953stepping through all the trace snapshots and printing some of their 12954data. Note that these are not the same as trace state variables, 12955which are managed by the target. 12956 12957@smallexample 12958(@value{GDBP}) @b{tfind start} 12959 12960(@value{GDBP}) @b{while $trace_frame != -1} 12961> output $trace_file 12962> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint 12963> tfind 12964> end 12965@end smallexample 12966 12967@node Trace Files 12968@section Using Trace Files 12969@cindex trace files 12970 12971In some situations, the target running a trace experiment may no 12972longer be available; perhaps it crashed, or the hardware was needed 12973for a different activity. To handle these cases, you can arrange to 12974dump the trace data into a file, and later use that file as a source 12975of trace data, via the @code{target tfile} command. 12976 12977@table @code 12978 12979@kindex tsave 12980@item tsave [ -r ] @var{filename} 12981@itemx tsave [-ctf] @var{dirname} 12982Save the trace data to @var{filename}. By default, this command 12983assumes that @var{filename} refers to the host filesystem, so if 12984necessary @value{GDBN} will copy raw trace data up from the target and 12985then save it. If the target supports it, you can also supply the 12986optional argument @code{-r} (``remote'') to direct the target to save 12987the data directly into @var{filename} in its own filesystem, which may be 12988more efficient if the trace buffer is very large. (Note, however, that 12989@code{target tfile} can only read from files accessible to the host.) 12990By default, this command will save trace frame in tfile format. 12991You can supply the optional argument @code{-ctf} to save date in CTF 12992format. The @dfn{Common Trace Format} (CTF) is proposed as a trace format 12993that can be shared by multiple debugging and tracing tools. Please go to 12994@indicateurl{http://www.efficios.com/ctf} to get more information. 12995 12996@kindex target tfile 12997@kindex tfile 12998@kindex target ctf 12999@kindex ctf 13000@item target tfile @var{filename} 13001@itemx target ctf @var{dirname} 13002Use the file named @var{filename} or directory named @var{dirname} as 13003a source of trace data. Commands that examine data work as they do with 13004a live target, but it is not possible to run any new trace experiments. 13005@code{tstatus} will report the state of the trace run at the moment 13006the data was saved, as well as the current trace frame you are examining. 13007Both @var{filename} and @var{dirname} must be on a filesystem accessible to 13008the host. 13009 13010@smallexample 13011(@value{GDBP}) target ctf ctf.ctf 13012(@value{GDBP}) tfind 13013Found trace frame 0, tracepoint 2 1301439 ++a; /* set tracepoint 1 here */ 13015(@value{GDBP}) tdump 13016Data collected at tracepoint 2, trace frame 0: 13017i = 0 13018a = 0 13019b = 1 '\001' 13020c = @{"123", "456", "789", "123", "456", "789"@} 13021d = @{@{@{a = 1, b = 2@}, @{a = 3, b = 4@}@}, @{@{a = 5, b = 6@}, @{a = 7, b = 8@}@}@} 13022(@value{GDBP}) p b 13023$1 = 1 13024@end smallexample 13025 13026@end table 13027 13028@node Overlays 13029@chapter Debugging Programs That Use Overlays 13030@cindex overlays 13031 13032If your program is too large to fit completely in your target system's 13033memory, you can sometimes use @dfn{overlays} to work around this 13034problem. @value{GDBN} provides some support for debugging programs that 13035use overlays. 13036 13037@menu 13038* How Overlays Work:: A general explanation of overlays. 13039* Overlay Commands:: Managing overlays in @value{GDBN}. 13040* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are 13041 mapped by asking the inferior. 13042* Overlay Sample Program:: A sample program using overlays. 13043@end menu 13044 13045@node How Overlays Work 13046@section How Overlays Work 13047@cindex mapped overlays 13048@cindex unmapped overlays 13049@cindex load address, overlay's 13050@cindex mapped address 13051@cindex overlay area 13052 13053Suppose you have a computer whose instruction address space is only 64 13054kilobytes long, but which has much more memory which can be accessed by 13055other means: special instructions, segment registers, or memory 13056management hardware, for example. Suppose further that you want to 13057adapt a program which is larger than 64 kilobytes to run on this system. 13058 13059One solution is to identify modules of your program which are relatively 13060independent, and need not call each other directly; call these modules 13061@dfn{overlays}. Separate the overlays from the main program, and place 13062their machine code in the larger memory. Place your main program in 13063instruction memory, but leave at least enough space there to hold the 13064largest overlay as well. 13065 13066Now, to call a function located in an overlay, you must first copy that 13067overlay's machine code from the large memory into the space set aside 13068for it in the instruction memory, and then jump to its entry point 13069there. 13070 13071@c NB: In the below the mapped area's size is greater or equal to the 13072@c size of all overlays. This is intentional to remind the developer 13073@c that overlays don't necessarily need to be the same size. 13074 13075@smallexample 13076@group 13077 Data Instruction Larger 13078Address Space Address Space Address Space 13079+-----------+ +-----------+ +-----------+ 13080| | | | | | 13081+-----------+ +-----------+ +-----------+<-- overlay 1 13082| program | | main | .----| overlay 1 | load address 13083| variables | | program | | +-----------+ 13084| and heap | | | | | | 13085+-----------+ | | | +-----------+<-- overlay 2 13086| | +-----------+ | | | load address 13087+-----------+ | | | .-| overlay 2 | 13088 | | | | | | 13089 mapped --->+-----------+ | | +-----------+ 13090 address | | | | | | 13091 | overlay | <-' | | | 13092 | area | <---' +-----------+<-- overlay 3 13093 | | <---. | | load address 13094 +-----------+ `--| overlay 3 | 13095 | | | | 13096 +-----------+ | | 13097 +-----------+ 13098 | | 13099 +-----------+ 13100 13101 @anchor{A code overlay}A code overlay 13102@end group 13103@end smallexample 13104 13105The diagram (@pxref{A code overlay}) shows a system with separate data 13106and instruction address spaces. To map an overlay, the program copies 13107its code from the larger address space to the instruction address space. 13108Since the overlays shown here all use the same mapped address, only one 13109may be mapped at a time. For a system with a single address space for 13110data and instructions, the diagram would be similar, except that the 13111program variables and heap would share an address space with the main 13112program and the overlay area. 13113 13114An overlay loaded into instruction memory and ready for use is called a 13115@dfn{mapped} overlay; its @dfn{mapped address} is its address in the 13116instruction memory. An overlay not present (or only partially present) 13117in instruction memory is called @dfn{unmapped}; its @dfn{load address} 13118is its address in the larger memory. The mapped address is also called 13119the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also 13120called the @dfn{load memory address}, or @dfn{LMA}. 13121 13122Unfortunately, overlays are not a completely transparent way to adapt a 13123program to limited instruction memory. They introduce a new set of 13124global constraints you must keep in mind as you design your program: 13125 13126@itemize @bullet 13127 13128@item 13129Before calling or returning to a function in an overlay, your program 13130must make sure that overlay is actually mapped. Otherwise, the call or 13131return will transfer control to the right address, but in the wrong 13132overlay, and your program will probably crash. 13133 13134@item 13135If the process of mapping an overlay is expensive on your system, you 13136will need to choose your overlays carefully to minimize their effect on 13137your program's performance. 13138 13139@item 13140The executable file you load onto your system must contain each 13141overlay's instructions, appearing at the overlay's load address, not its 13142mapped address. However, each overlay's instructions must be relocated 13143and its symbols defined as if the overlay were at its mapped address. 13144You can use GNU linker scripts to specify different load and relocation 13145addresses for pieces of your program; see @ref{Overlay Description,,, 13146ld.info, Using ld: the GNU linker}. 13147 13148@item 13149The procedure for loading executable files onto your system must be able 13150to load their contents into the larger address space as well as the 13151instruction and data spaces. 13152 13153@end itemize 13154 13155The overlay system described above is rather simple, and could be 13156improved in many ways: 13157 13158@itemize @bullet 13159 13160@item 13161If your system has suitable bank switch registers or memory management 13162hardware, you could use those facilities to make an overlay's load area 13163contents simply appear at their mapped address in instruction space. 13164This would probably be faster than copying the overlay to its mapped 13165area in the usual way. 13166 13167@item 13168If your overlays are small enough, you could set aside more than one 13169overlay area, and have more than one overlay mapped at a time. 13170 13171@item 13172You can use overlays to manage data, as well as instructions. In 13173general, data overlays are even less transparent to your design than 13174code overlays: whereas code overlays only require care when you call or 13175return to functions, data overlays require care every time you access 13176the data. Also, if you change the contents of a data overlay, you 13177must copy its contents back out to its load address before you can copy a 13178different data overlay into the same mapped area. 13179 13180@end itemize 13181 13182 13183@node Overlay Commands 13184@section Overlay Commands 13185 13186To use @value{GDBN}'s overlay support, each overlay in your program must 13187correspond to a separate section of the executable file. The section's 13188virtual memory address and load memory address must be the overlay's 13189mapped and load addresses. Identifying overlays with sections allows 13190@value{GDBN} to determine the appropriate address of a function or 13191variable, depending on whether the overlay is mapped or not. 13192 13193@value{GDBN}'s overlay commands all start with the word @code{overlay}; 13194you can abbreviate this as @code{ov} or @code{ovly}. The commands are: 13195 13196@table @code 13197@item overlay off 13198@kindex overlay 13199Disable @value{GDBN}'s overlay support. When overlay support is 13200disabled, @value{GDBN} assumes that all functions and variables are 13201always present at their mapped addresses. By default, @value{GDBN}'s 13202overlay support is disabled. 13203 13204@item overlay manual 13205@cindex manual overlay debugging 13206Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN} 13207relies on you to tell it which overlays are mapped, and which are not, 13208using the @code{overlay map-overlay} and @code{overlay unmap-overlay} 13209commands described below. 13210 13211@item overlay map-overlay @var{overlay} 13212@itemx overlay map @var{overlay} 13213@cindex map an overlay 13214Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must 13215be the name of the object file section containing the overlay. When an 13216overlay is mapped, @value{GDBN} assumes it can find the overlay's 13217functions and variables at their mapped addresses. @value{GDBN} assumes 13218that any other overlays whose mapped ranges overlap that of 13219@var{overlay} are now unmapped. 13220 13221@item overlay unmap-overlay @var{overlay} 13222@itemx overlay unmap @var{overlay} 13223@cindex unmap an overlay 13224Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay} 13225must be the name of the object file section containing the overlay. 13226When an overlay is unmapped, @value{GDBN} assumes it can find the 13227overlay's functions and variables at their load addresses. 13228 13229@item overlay auto 13230Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN} 13231consults a data structure the overlay manager maintains in the inferior 13232to see which overlays are mapped. For details, see @ref{Automatic 13233Overlay Debugging}. 13234 13235@item overlay load-target 13236@itemx overlay load 13237@cindex reloading the overlay table 13238Re-read the overlay table from the inferior. Normally, @value{GDBN} 13239re-reads the table @value{GDBN} automatically each time the inferior 13240stops, so this command should only be necessary if you have changed the 13241overlay mapping yourself using @value{GDBN}. This command is only 13242useful when using automatic overlay debugging. 13243 13244@item overlay list-overlays 13245@itemx overlay list 13246@cindex listing mapped overlays 13247Display a list of the overlays currently mapped, along with their mapped 13248addresses, load addresses, and sizes. 13249 13250@end table 13251 13252Normally, when @value{GDBN} prints a code address, it includes the name 13253of the function the address falls in: 13254 13255@smallexample 13256(@value{GDBP}) print main 13257$3 = @{int ()@} 0x11a0 <main> 13258@end smallexample 13259@noindent 13260When overlay debugging is enabled, @value{GDBN} recognizes code in 13261unmapped overlays, and prints the names of unmapped functions with 13262asterisks around them. For example, if @code{foo} is a function in an 13263unmapped overlay, @value{GDBN} prints it this way: 13264 13265@smallexample 13266(@value{GDBP}) overlay list 13267No sections are mapped. 13268(@value{GDBP}) print foo 13269$5 = @{int (int)@} 0x100000 <*foo*> 13270@end smallexample 13271@noindent 13272When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's 13273name normally: 13274 13275@smallexample 13276(@value{GDBP}) overlay list 13277Section .ov.foo.text, loaded at 0x100000 - 0x100034, 13278 mapped at 0x1016 - 0x104a 13279(@value{GDBP}) print foo 13280$6 = @{int (int)@} 0x1016 <foo> 13281@end smallexample 13282 13283When overlay debugging is enabled, @value{GDBN} can find the correct 13284address for functions and variables in an overlay, whether or not the 13285overlay is mapped. This allows most @value{GDBN} commands, like 13286@code{break} and @code{disassemble}, to work normally, even on unmapped 13287code. However, @value{GDBN}'s breakpoint support has some limitations: 13288 13289@itemize @bullet 13290@item 13291@cindex breakpoints in overlays 13292@cindex overlays, setting breakpoints in 13293You can set breakpoints in functions in unmapped overlays, as long as 13294@value{GDBN} can write to the overlay at its load address. 13295@item 13296@value{GDBN} can not set hardware or simulator-based breakpoints in 13297unmapped overlays. However, if you set a breakpoint at the end of your 13298overlay manager (and tell @value{GDBN} which overlays are now mapped, if 13299you are using manual overlay management), @value{GDBN} will re-set its 13300breakpoints properly. 13301@end itemize 13302 13303 13304@node Automatic Overlay Debugging 13305@section Automatic Overlay Debugging 13306@cindex automatic overlay debugging 13307 13308@value{GDBN} can automatically track which overlays are mapped and which 13309are not, given some simple co-operation from the overlay manager in the 13310inferior. If you enable automatic overlay debugging with the 13311@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN} 13312looks in the inferior's memory for certain variables describing the 13313current state of the overlays. 13314 13315Here are the variables your overlay manager must define to support 13316@value{GDBN}'s automatic overlay debugging: 13317 13318@table @asis 13319 13320@item @code{_ovly_table}: 13321This variable must be an array of the following structures: 13322 13323@smallexample 13324struct 13325@{ 13326 /* The overlay's mapped address. */ 13327 unsigned long vma; 13328 13329 /* The size of the overlay, in bytes. */ 13330 unsigned long size; 13331 13332 /* The overlay's load address. */ 13333 unsigned long lma; 13334 13335 /* Non-zero if the overlay is currently mapped; 13336 zero otherwise. */ 13337 unsigned long mapped; 13338@} 13339@end smallexample 13340 13341@item @code{_novlys}: 13342This variable must be a four-byte signed integer, holding the total 13343number of elements in @code{_ovly_table}. 13344 13345@end table 13346 13347To decide whether a particular overlay is mapped or not, @value{GDBN} 13348looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and 13349@code{lma} members equal the VMA and LMA of the overlay's section in the 13350executable file. When @value{GDBN} finds a matching entry, it consults 13351the entry's @code{mapped} member to determine whether the overlay is 13352currently mapped. 13353 13354In addition, your overlay manager may define a function called 13355@code{_ovly_debug_event}. If this function is defined, @value{GDBN} 13356will silently set a breakpoint there. If the overlay manager then 13357calls this function whenever it has changed the overlay table, this 13358will enable @value{GDBN} to accurately keep track of which overlays 13359are in program memory, and update any breakpoints that may be set 13360in overlays. This will allow breakpoints to work even if the 13361overlays are kept in ROM or other non-writable memory while they 13362are not being executed. 13363 13364@node Overlay Sample Program 13365@section Overlay Sample Program 13366@cindex overlay example program 13367 13368When linking a program which uses overlays, you must place the overlays 13369at their load addresses, while relocating them to run at their mapped 13370addresses. To do this, you must write a linker script (@pxref{Overlay 13371Description,,, ld.info, Using ld: the GNU linker}). Unfortunately, 13372since linker scripts are specific to a particular host system, target 13373architecture, and target memory layout, this manual cannot provide 13374portable sample code demonstrating @value{GDBN}'s overlay support. 13375 13376However, the @value{GDBN} source distribution does contain an overlaid 13377program, with linker scripts for a few systems, as part of its test 13378suite. The program consists of the following files from 13379@file{gdb/testsuite/gdb.base}: 13380 13381@table @file 13382@item overlays.c 13383The main program file. 13384@item ovlymgr.c 13385A simple overlay manager, used by @file{overlays.c}. 13386@item foo.c 13387@itemx bar.c 13388@itemx baz.c 13389@itemx grbx.c 13390Overlay modules, loaded and used by @file{overlays.c}. 13391@item d10v.ld 13392@itemx m32r.ld 13393Linker scripts for linking the test program on the @code{d10v-elf} 13394and @code{m32r-elf} targets. 13395@end table 13396 13397You can build the test program using the @code{d10v-elf} GCC 13398cross-compiler like this: 13399 13400@smallexample 13401$ d10v-elf-gcc -g -c overlays.c 13402$ d10v-elf-gcc -g -c ovlymgr.c 13403$ d10v-elf-gcc -g -c foo.c 13404$ d10v-elf-gcc -g -c bar.c 13405$ d10v-elf-gcc -g -c baz.c 13406$ d10v-elf-gcc -g -c grbx.c 13407$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \ 13408 baz.o grbx.o -Wl,-Td10v.ld -o overlays 13409@end smallexample 13410 13411The build process is identical for any other architecture, except that 13412you must substitute the appropriate compiler and linker script for the 13413target system for @code{d10v-elf-gcc} and @code{d10v.ld}. 13414 13415 13416@node Languages 13417@chapter Using @value{GDBN} with Different Languages 13418@cindex languages 13419 13420Although programming languages generally have common aspects, they are 13421rarely expressed in the same manner. For instance, in ANSI C, 13422dereferencing a pointer @code{p} is accomplished by @code{*p}, but in 13423Modula-2, it is accomplished by @code{p^}. Values can also be 13424represented (and displayed) differently. Hex numbers in C appear as 13425@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}. 13426 13427@cindex working language 13428Language-specific information is built into @value{GDBN} for some languages, 13429allowing you to express operations like the above in your program's 13430native language, and allowing @value{GDBN} to output values in a manner 13431consistent with the syntax of your program's native language. The 13432language you use to build expressions is called the @dfn{working 13433language}. 13434 13435@menu 13436* Setting:: Switching between source languages 13437* Show:: Displaying the language 13438* Checks:: Type and range checks 13439* Supported Languages:: Supported languages 13440* Unsupported Languages:: Unsupported languages 13441@end menu 13442 13443@node Setting 13444@section Switching Between Source Languages 13445 13446There are two ways to control the working language---either have @value{GDBN} 13447set it automatically, or select it manually yourself. You can use the 13448@code{set language} command for either purpose. On startup, @value{GDBN} 13449defaults to setting the language automatically. The working language is 13450used to determine how expressions you type are interpreted, how values 13451are printed, etc. 13452 13453In addition to the working language, every source file that 13454@value{GDBN} knows about has its own working language. For some object 13455file formats, the compiler might indicate which language a particular 13456source file is in. However, most of the time @value{GDBN} infers the 13457language from the name of the file. The language of a source file 13458controls whether C@t{++} names are demangled---this way @code{backtrace} can 13459show each frame appropriately for its own language. There is no way to 13460set the language of a source file from within @value{GDBN}, but you can 13461set the language associated with a filename extension. @xref{Show, , 13462Displaying the Language}. 13463 13464This is most commonly a problem when you use a program, such 13465as @code{cfront} or @code{f2c}, that generates C but is written in 13466another language. In that case, make the 13467program use @code{#line} directives in its C output; that way 13468@value{GDBN} will know the correct language of the source code of the original 13469program, and will display that source code, not the generated C code. 13470 13471@menu 13472* Filenames:: Filename extensions and languages. 13473* Manually:: Setting the working language manually 13474* Automatically:: Having @value{GDBN} infer the source language 13475@end menu 13476 13477@node Filenames 13478@subsection List of Filename Extensions and Languages 13479 13480If a source file name ends in one of the following extensions, then 13481@value{GDBN} infers that its language is the one indicated. 13482 13483@table @file 13484@item .ada 13485@itemx .ads 13486@itemx .adb 13487@itemx .a 13488Ada source file. 13489 13490@item .c 13491C source file 13492 13493@item .C 13494@itemx .cc 13495@itemx .cp 13496@itemx .cpp 13497@itemx .cxx 13498@itemx .c++ 13499C@t{++} source file 13500 13501@item .d 13502D source file 13503 13504@item .m 13505Objective-C source file 13506 13507@item .f 13508@itemx .F 13509Fortran source file 13510 13511@item .mod 13512Modula-2 source file 13513 13514@item .s 13515@itemx .S 13516Assembler source file. This actually behaves almost like C, but 13517@value{GDBN} does not skip over function prologues when stepping. 13518@end table 13519 13520In addition, you may set the language associated with a filename 13521extension. @xref{Show, , Displaying the Language}. 13522 13523@node Manually 13524@subsection Setting the Working Language 13525 13526If you allow @value{GDBN} to set the language automatically, 13527expressions are interpreted the same way in your debugging session and 13528your program. 13529 13530@kindex set language 13531If you wish, you may set the language manually. To do this, issue the 13532command @samp{set language @var{lang}}, where @var{lang} is the name of 13533a language, such as 13534@code{c} or @code{modula-2}. 13535For a list of the supported languages, type @samp{set language}. 13536 13537Setting the language manually prevents @value{GDBN} from updating the working 13538language automatically. This can lead to confusion if you try 13539to debug a program when the working language is not the same as the 13540source language, when an expression is acceptable to both 13541languages---but means different things. For instance, if the current 13542source file were written in C, and @value{GDBN} was parsing Modula-2, a 13543command such as: 13544 13545@smallexample 13546print a = b + c 13547@end smallexample 13548 13549@noindent 13550might not have the effect you intended. In C, this means to add 13551@code{b} and @code{c} and place the result in @code{a}. The result 13552printed would be the value of @code{a}. In Modula-2, this means to compare 13553@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value. 13554 13555@node Automatically 13556@subsection Having @value{GDBN} Infer the Source Language 13557 13558To have @value{GDBN} set the working language automatically, use 13559@samp{set language local} or @samp{set language auto}. @value{GDBN} 13560then infers the working language. That is, when your program stops in a 13561frame (usually by encountering a breakpoint), @value{GDBN} sets the 13562working language to the language recorded for the function in that 13563frame. If the language for a frame is unknown (that is, if the function 13564or block corresponding to the frame was defined in a source file that 13565does not have a recognized extension), the current working language is 13566not changed, and @value{GDBN} issues a warning. 13567 13568This may not seem necessary for most programs, which are written 13569entirely in one source language. However, program modules and libraries 13570written in one source language can be used by a main program written in 13571a different source language. Using @samp{set language auto} in this 13572case frees you from having to set the working language manually. 13573 13574@node Show 13575@section Displaying the Language 13576 13577The following commands help you find out which language is the 13578working language, and also what language source files were written in. 13579 13580@table @code 13581@item show language 13582@anchor{show language} 13583@kindex show language 13584Display the current working language. This is the 13585language you can use with commands such as @code{print} to 13586build and compute expressions that may involve variables in your program. 13587 13588@item info frame 13589@kindex info frame@r{, show the source language} 13590Display the source language for this frame. This language becomes the 13591working language if you use an identifier from this frame. 13592@xref{Frame Info, ,Information about a Frame}, to identify the other 13593information listed here. 13594 13595@item info source 13596@kindex info source@r{, show the source language} 13597Display the source language of this source file. 13598@xref{Symbols, ,Examining the Symbol Table}, to identify the other 13599information listed here. 13600@end table 13601 13602In unusual circumstances, you may have source files with extensions 13603not in the standard list. You can then set the extension associated 13604with a language explicitly: 13605 13606@table @code 13607@item set extension-language @var{ext} @var{language} 13608@kindex set extension-language 13609Tell @value{GDBN} that source files with extension @var{ext} are to be 13610assumed as written in the source language @var{language}. 13611 13612@item info extensions 13613@kindex info extensions 13614List all the filename extensions and the associated languages. 13615@end table 13616 13617@node Checks 13618@section Type and Range Checking 13619 13620Some languages are designed to guard you against making seemingly common 13621errors through a series of compile- and run-time checks. These include 13622checking the type of arguments to functions and operators and making 13623sure mathematical overflows are caught at run time. Checks such as 13624these help to ensure a program's correctness once it has been compiled 13625by eliminating type mismatches and providing active checks for range 13626errors when your program is running. 13627 13628By default @value{GDBN} checks for these errors according to the 13629rules of the current source language. Although @value{GDBN} does not check 13630the statements in your program, it can check expressions entered directly 13631into @value{GDBN} for evaluation via the @code{print} command, for example. 13632 13633@menu 13634* Type Checking:: An overview of type checking 13635* Range Checking:: An overview of range checking 13636@end menu 13637 13638@cindex type checking 13639@cindex checks, type 13640@node Type Checking 13641@subsection An Overview of Type Checking 13642 13643Some languages, such as C and C@t{++}, are strongly typed, meaning that the 13644arguments to operators and functions have to be of the correct type, 13645otherwise an error occurs. These checks prevent type mismatch 13646errors from ever causing any run-time problems. For example, 13647 13648@smallexample 13649int klass::my_method(char *b) @{ return b ? 1 : 2; @} 13650 13651(@value{GDBP}) print obj.my_method (0) 13652$1 = 2 13653@exdent but 13654(@value{GDBP}) print obj.my_method (0x1234) 13655Cannot resolve method klass::my_method to any overloaded instance 13656@end smallexample 13657 13658The second example fails because in C@t{++} the integer constant 13659@samp{0x1234} is not type-compatible with the pointer parameter type. 13660 13661For the expressions you use in @value{GDBN} commands, you can tell 13662@value{GDBN} to not enforce strict type checking or 13663to treat any mismatches as errors and abandon the expression; 13664When type checking is disabled, @value{GDBN} successfully evaluates 13665expressions like the second example above. 13666 13667Even if type checking is off, there may be other reasons 13668related to type that prevent @value{GDBN} from evaluating an expression. 13669For instance, @value{GDBN} does not know how to add an @code{int} and 13670a @code{struct foo}. These particular type errors have nothing to do 13671with the language in use and usually arise from expressions which make 13672little sense to evaluate anyway. 13673 13674@value{GDBN} provides some additional commands for controlling type checking: 13675 13676@kindex set check type 13677@kindex show check type 13678@table @code 13679@item set check type on 13680@itemx set check type off 13681Set strict type checking on or off. If any type mismatches occur in 13682evaluating an expression while type checking is on, @value{GDBN} prints a 13683message and aborts evaluation of the expression. 13684 13685@item show check type 13686Show the current setting of type checking and whether @value{GDBN} 13687is enforcing strict type checking rules. 13688@end table 13689 13690@cindex range checking 13691@cindex checks, range 13692@node Range Checking 13693@subsection An Overview of Range Checking 13694 13695In some languages (such as Modula-2), it is an error to exceed the 13696bounds of a type; this is enforced with run-time checks. Such range 13697checking is meant to ensure program correctness by making sure 13698computations do not overflow, or indices on an array element access do 13699not exceed the bounds of the array. 13700 13701For expressions you use in @value{GDBN} commands, you can tell 13702@value{GDBN} to treat range errors in one of three ways: ignore them, 13703always treat them as errors and abandon the expression, or issue 13704warnings but evaluate the expression anyway. 13705 13706A range error can result from numerical overflow, from exceeding an 13707array index bound, or when you type a constant that is not a member 13708of any type. Some languages, however, do not treat overflows as an 13709error. In many implementations of C, mathematical overflow causes the 13710result to ``wrap around'' to lower values---for example, if @var{m} is 13711the largest integer value, and @var{s} is the smallest, then 13712 13713@smallexample 13714@var{m} + 1 @result{} @var{s} 13715@end smallexample 13716 13717This, too, is specific to individual languages, and in some cases 13718specific to individual compilers or machines. @xref{Supported Languages, , 13719Supported Languages}, for further details on specific languages. 13720 13721@value{GDBN} provides some additional commands for controlling the range checker: 13722 13723@kindex set check range 13724@kindex show check range 13725@table @code 13726@item set check range auto 13727Set range checking on or off based on the current working language. 13728@xref{Supported Languages, ,Supported Languages}, for the default settings for 13729each language. 13730 13731@item set check range on 13732@itemx set check range off 13733Set range checking on or off, overriding the default setting for the 13734current working language. A warning is issued if the setting does not 13735match the language default. If a range error occurs and range checking is on, 13736then a message is printed and evaluation of the expression is aborted. 13737 13738@item set check range warn 13739Output messages when the @value{GDBN} range checker detects a range error, 13740but attempt to evaluate the expression anyway. Evaluating the 13741expression may still be impossible for other reasons, such as accessing 13742memory that the process does not own (a typical example from many Unix 13743systems). 13744 13745@item show range 13746Show the current setting of the range checker, and whether or not it is 13747being set automatically by @value{GDBN}. 13748@end table 13749 13750@node Supported Languages 13751@section Supported Languages 13752 13753@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, Java, 13754OpenCL C, Pascal, assembly, Modula-2, and Ada. 13755@c This is false ... 13756Some @value{GDBN} features may be used in expressions regardless of the 13757language you use: the @value{GDBN} @code{@@} and @code{::} operators, 13758and the @samp{@{type@}addr} construct (@pxref{Expressions, 13759,Expressions}) can be used with the constructs of any supported 13760language. 13761 13762The following sections detail to what degree each source language is 13763supported by @value{GDBN}. These sections are not meant to be language 13764tutorials or references, but serve only as a reference guide to what the 13765@value{GDBN} expression parser accepts, and what input and output 13766formats should look like for different languages. There are many good 13767books written on each of these languages; please look to these for a 13768language reference or tutorial. 13769 13770@menu 13771* C:: C and C@t{++} 13772* D:: D 13773* Go:: Go 13774* Objective-C:: Objective-C 13775* OpenCL C:: OpenCL C 13776* Fortran:: Fortran 13777* Pascal:: Pascal 13778* Modula-2:: Modula-2 13779* Ada:: Ada 13780@end menu 13781 13782@node C 13783@subsection C and C@t{++} 13784 13785@cindex C and C@t{++} 13786@cindex expressions in C or C@t{++} 13787 13788Since C and C@t{++} are so closely related, many features of @value{GDBN} apply 13789to both languages. Whenever this is the case, we discuss those languages 13790together. 13791 13792@cindex C@t{++} 13793@cindex @code{g++}, @sc{gnu} C@t{++} compiler 13794@cindex @sc{gnu} C@t{++} 13795The C@t{++} debugging facilities are jointly implemented by the C@t{++} 13796compiler and @value{GDBN}. Therefore, to debug your C@t{++} code 13797effectively, you must compile your C@t{++} programs with a supported 13798C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++} 13799compiler (@code{aCC}). 13800 13801@menu 13802* C Operators:: C and C@t{++} operators 13803* C Constants:: C and C@t{++} constants 13804* C Plus Plus Expressions:: C@t{++} expressions 13805* C Defaults:: Default settings for C and C@t{++} 13806* C Checks:: C and C@t{++} type and range checks 13807* Debugging C:: @value{GDBN} and C 13808* Debugging C Plus Plus:: @value{GDBN} features for C@t{++} 13809* Decimal Floating Point:: Numbers in Decimal Floating Point format 13810@end menu 13811 13812@node C Operators 13813@subsubsection C and C@t{++} Operators 13814 13815@cindex C and C@t{++} operators 13816 13817Operators must be defined on values of specific types. For instance, 13818@code{+} is defined on numbers, but not on structures. Operators are 13819often defined on groups of types. 13820 13821For the purposes of C and C@t{++}, the following definitions hold: 13822 13823@itemize @bullet 13824 13825@item 13826@emph{Integral types} include @code{int} with any of its storage-class 13827specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}. 13828 13829@item 13830@emph{Floating-point types} include @code{float}, @code{double}, and 13831@code{long double} (if supported by the target platform). 13832 13833@item 13834@emph{Pointer types} include all types defined as @code{(@var{type} *)}. 13835 13836@item 13837@emph{Scalar types} include all of the above. 13838 13839@end itemize 13840 13841@noindent 13842The following operators are supported. They are listed here 13843in order of increasing precedence: 13844 13845@table @code 13846@item , 13847The comma or sequencing operator. Expressions in a comma-separated list 13848are evaluated from left to right, with the result of the entire 13849expression being the last expression evaluated. 13850 13851@item = 13852Assignment. The value of an assignment expression is the value 13853assigned. Defined on scalar types. 13854 13855@item @var{op}= 13856Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}}, 13857and translated to @w{@code{@var{a} = @var{a op b}}}. 13858@w{@code{@var{op}=}} and @code{=} have the same precedence. The operator 13859@var{op} is any one of the operators @code{|}, @code{^}, @code{&}, 13860@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}. 13861 13862@item ?: 13863The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought 13864of as: if @var{a} then @var{b} else @var{c}. The argument @var{a} 13865should be of an integral type. 13866 13867@item || 13868Logical @sc{or}. Defined on integral types. 13869 13870@item && 13871Logical @sc{and}. Defined on integral types. 13872 13873@item | 13874Bitwise @sc{or}. Defined on integral types. 13875 13876@item ^ 13877Bitwise exclusive-@sc{or}. Defined on integral types. 13878 13879@item & 13880Bitwise @sc{and}. Defined on integral types. 13881 13882@item ==@r{, }!= 13883Equality and inequality. Defined on scalar types. The value of these 13884expressions is 0 for false and non-zero for true. 13885 13886@item <@r{, }>@r{, }<=@r{, }>= 13887Less than, greater than, less than or equal, greater than or equal. 13888Defined on scalar types. The value of these expressions is 0 for false 13889and non-zero for true. 13890 13891@item <<@r{, }>> 13892left shift, and right shift. Defined on integral types. 13893 13894@item @@ 13895The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 13896 13897@item +@r{, }- 13898Addition and subtraction. Defined on integral types, floating-point types and 13899pointer types. 13900 13901@item *@r{, }/@r{, }% 13902Multiplication, division, and modulus. Multiplication and division are 13903defined on integral and floating-point types. Modulus is defined on 13904integral types. 13905 13906@item ++@r{, }-- 13907Increment and decrement. When appearing before a variable, the 13908operation is performed before the variable is used in an expression; 13909when appearing after it, the variable's value is used before the 13910operation takes place. 13911 13912@item * 13913Pointer dereferencing. Defined on pointer types. Same precedence as 13914@code{++}. 13915 13916@item & 13917Address operator. Defined on variables. Same precedence as @code{++}. 13918 13919For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is 13920allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})} 13921to examine the address 13922where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is 13923stored. 13924 13925@item - 13926Negative. Defined on integral and floating-point types. Same 13927precedence as @code{++}. 13928 13929@item ! 13930Logical negation. Defined on integral types. Same precedence as 13931@code{++}. 13932 13933@item ~ 13934Bitwise complement operator. Defined on integral types. Same precedence as 13935@code{++}. 13936 13937 13938@item .@r{, }-> 13939Structure member, and pointer-to-structure member. For convenience, 13940@value{GDBN} regards the two as equivalent, choosing whether to dereference a 13941pointer based on the stored type information. 13942Defined on @code{struct} and @code{union} data. 13943 13944@item .*@r{, }->* 13945Dereferences of pointers to members. 13946 13947@item [] 13948Array indexing. @code{@var{a}[@var{i}]} is defined as 13949@code{*(@var{a}+@var{i})}. Same precedence as @code{->}. 13950 13951@item () 13952Function parameter list. Same precedence as @code{->}. 13953 13954@item :: 13955C@t{++} scope resolution operator. Defined on @code{struct}, @code{union}, 13956and @code{class} types. 13957 13958@item :: 13959Doubled colons also represent the @value{GDBN} scope operator 13960(@pxref{Expressions, ,Expressions}). Same precedence as @code{::}, 13961above. 13962@end table 13963 13964If an operator is redefined in the user code, @value{GDBN} usually 13965attempts to invoke the redefined version instead of using the operator's 13966predefined meaning. 13967 13968@node C Constants 13969@subsubsection C and C@t{++} Constants 13970 13971@cindex C and C@t{++} constants 13972 13973@value{GDBN} allows you to express the constants of C and C@t{++} in the 13974following ways: 13975 13976@itemize @bullet 13977@item 13978Integer constants are a sequence of digits. Octal constants are 13979specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants 13980by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter 13981@samp{l}, specifying that the constant should be treated as a 13982@code{long} value. 13983 13984@item 13985Floating point constants are a sequence of digits, followed by a decimal 13986point, followed by a sequence of digits, and optionally followed by an 13987exponent. An exponent is of the form: 13988@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another 13989sequence of digits. The @samp{+} is optional for positive exponents. 13990A floating-point constant may also end with a letter @samp{f} or 13991@samp{F}, specifying that the constant should be treated as being of 13992the @code{float} (as opposed to the default @code{double}) type; or with 13993a letter @samp{l} or @samp{L}, which specifies a @code{long double} 13994constant. 13995 13996@item 13997Enumerated constants consist of enumerated identifiers, or their 13998integral equivalents. 13999 14000@item 14001Character constants are a single character surrounded by single quotes 14002(@code{'}), or a number---the ordinal value of the corresponding character 14003(usually its @sc{ascii} value). Within quotes, the single character may 14004be represented by a letter or by @dfn{escape sequences}, which are of 14005the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation 14006of the character's ordinal value; or of the form @samp{\@var{x}}, where 14007@samp{@var{x}} is a predefined special character---for example, 14008@samp{\n} for newline. 14009 14010Wide character constants can be written by prefixing a character 14011constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide 14012form of @samp{x}. The target wide character set is used when 14013computing the value of this constant (@pxref{Character Sets}). 14014 14015@item 14016String constants are a sequence of character constants surrounded by 14017double quotes (@code{"}). Any valid character constant (as described 14018above) may appear. Double quotes within the string must be preceded by 14019a backslash, so for instance @samp{"a\"b'c"} is a string of five 14020characters. 14021 14022Wide string constants can be written by prefixing a string constant 14023with @samp{L}, as in C. The target wide character set is used when 14024computing the value of this constant (@pxref{Character Sets}). 14025 14026@item 14027Pointer constants are an integral value. You can also write pointers 14028to constants using the C operator @samp{&}. 14029 14030@item 14031Array constants are comma-separated lists surrounded by braces @samp{@{} 14032and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of 14033integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array, 14034and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers. 14035@end itemize 14036 14037@node C Plus Plus Expressions 14038@subsubsection C@t{++} Expressions 14039 14040@cindex expressions in C@t{++} 14041@value{GDBN} expression handling can interpret most C@t{++} expressions. 14042 14043@cindex debugging C@t{++} programs 14044@cindex C@t{++} compilers 14045@cindex debug formats and C@t{++} 14046@cindex @value{NGCC} and C@t{++} 14047@quotation 14048@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use 14049the proper compiler and the proper debug format. Currently, 14050@value{GDBN} works best when debugging C@t{++} code that is compiled 14051with the most recent version of @value{NGCC} possible. The DWARF 14052debugging format is preferred; @value{NGCC} defaults to this on most 14053popular platforms. Other compilers and/or debug formats are likely to 14054work badly or not at all when using @value{GDBN} to debug C@t{++} 14055code. @xref{Compilation}. 14056@end quotation 14057 14058@enumerate 14059 14060@cindex member functions 14061@item 14062Member function calls are allowed; you can use expressions like 14063 14064@smallexample 14065count = aml->GetOriginal(x, y) 14066@end smallexample 14067 14068@vindex this@r{, inside C@t{++} member functions} 14069@cindex namespace in C@t{++} 14070@item 14071While a member function is active (in the selected stack frame), your 14072expressions have the same namespace available as the member function; 14073that is, @value{GDBN} allows implicit references to the class instance 14074pointer @code{this} following the same rules as C@t{++}. @code{using} 14075declarations in the current scope are also respected by @value{GDBN}. 14076 14077@cindex call overloaded functions 14078@cindex overloaded functions, calling 14079@cindex type conversions in C@t{++} 14080@item 14081You can call overloaded functions; @value{GDBN} resolves the function 14082call to the right definition, with some restrictions. @value{GDBN} does not 14083perform overload resolution involving user-defined type conversions, 14084calls to constructors, or instantiations of templates that do not exist 14085in the program. It also cannot handle ellipsis argument lists or 14086default arguments. 14087 14088It does perform integral conversions and promotions, floating-point 14089promotions, arithmetic conversions, pointer conversions, conversions of 14090class objects to base classes, and standard conversions such as those of 14091functions or arrays to pointers; it requires an exact match on the 14092number of function arguments. 14093 14094Overload resolution is always performed, unless you have specified 14095@code{set overload-resolution off}. @xref{Debugging C Plus Plus, 14096,@value{GDBN} Features for C@t{++}}. 14097 14098You must specify @code{set overload-resolution off} in order to use an 14099explicit function signature to call an overloaded function, as in 14100@smallexample 14101p 'foo(char,int)'('x', 13) 14102@end smallexample 14103 14104The @value{GDBN} command-completion facility can simplify this; 14105see @ref{Completion, ,Command Completion}. 14106 14107@cindex reference declarations 14108@item 14109@value{GDBN} understands variables declared as C@t{++} references; you can use 14110them in expressions just as you do in C@t{++} source---they are automatically 14111dereferenced. 14112 14113In the parameter list shown when @value{GDBN} displays a frame, the values of 14114reference variables are not displayed (unlike other variables); this 14115avoids clutter, since references are often used for large structures. 14116The @emph{address} of a reference variable is always shown, unless 14117you have specified @samp{set print address off}. 14118 14119@item 14120@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your 14121expressions can use it just as expressions in your program do. Since 14122one scope may be defined in another, you can use @code{::} repeatedly if 14123necessary, for example in an expression like 14124@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows 14125resolving name scope by reference to source files, in both C and C@t{++} 14126debugging (@pxref{Variables, ,Program Variables}). 14127 14128@item 14129@value{GDBN} performs argument-dependent lookup, following the C@t{++} 14130specification. 14131@end enumerate 14132 14133@node C Defaults 14134@subsubsection C and C@t{++} Defaults 14135 14136@cindex C and C@t{++} defaults 14137 14138If you allow @value{GDBN} to set range checking automatically, it 14139defaults to @code{off} whenever the working language changes to 14140C or C@t{++}. This happens regardless of whether you or @value{GDBN} 14141selects the working language. 14142 14143If you allow @value{GDBN} to set the language automatically, it 14144recognizes source files whose names end with @file{.c}, @file{.C}, or 14145@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of 14146these files, it sets the working language to C or C@t{++}. 14147@xref{Automatically, ,Having @value{GDBN} Infer the Source Language}, 14148for further details. 14149 14150@node C Checks 14151@subsubsection C and C@t{++} Type and Range Checks 14152 14153@cindex C and C@t{++} checks 14154 14155By default, when @value{GDBN} parses C or C@t{++} expressions, strict type 14156checking is used. However, if you turn type checking off, @value{GDBN} 14157will allow certain non-standard conversions, such as promoting integer 14158constants to pointers. 14159 14160Range checking, if turned on, is done on mathematical operations. Array 14161indices are not checked, since they are often used to index a pointer 14162that is not itself an array. 14163 14164@node Debugging C 14165@subsubsection @value{GDBN} and C 14166 14167The @code{set print union} and @code{show print union} commands apply to 14168the @code{union} type. When set to @samp{on}, any @code{union} that is 14169inside a @code{struct} or @code{class} is also printed. Otherwise, it 14170appears as @samp{@{...@}}. 14171 14172The @code{@@} operator aids in the debugging of dynamic arrays, formed 14173with pointers and a memory allocation function. @xref{Expressions, 14174,Expressions}. 14175 14176@node Debugging C Plus Plus 14177@subsubsection @value{GDBN} Features for C@t{++} 14178 14179@cindex commands for C@t{++} 14180 14181Some @value{GDBN} commands are particularly useful with C@t{++}, and some are 14182designed specifically for use with C@t{++}. Here is a summary: 14183 14184@table @code 14185@cindex break in overloaded functions 14186@item @r{breakpoint menus} 14187When you want a breakpoint in a function whose name is overloaded, 14188@value{GDBN} has the capability to display a menu of possible breakpoint 14189locations to help you specify which function definition you want. 14190@xref{Ambiguous Expressions,,Ambiguous Expressions}. 14191 14192@cindex overloading in C@t{++} 14193@item rbreak @var{regex} 14194Setting breakpoints using regular expressions is helpful for setting 14195breakpoints on overloaded functions that are not members of any special 14196classes. 14197@xref{Set Breaks, ,Setting Breakpoints}. 14198 14199@cindex C@t{++} exception handling 14200@item catch throw 14201@itemx catch rethrow 14202@itemx catch catch 14203Debug C@t{++} exception handling using these commands. @xref{Set 14204Catchpoints, , Setting Catchpoints}. 14205 14206@cindex inheritance 14207@item ptype @var{typename} 14208Print inheritance relationships as well as other information for type 14209@var{typename}. 14210@xref{Symbols, ,Examining the Symbol Table}. 14211 14212@item info vtbl @var{expression}. 14213The @code{info vtbl} command can be used to display the virtual 14214method tables of the object computed by @var{expression}. This shows 14215one entry per virtual table; there may be multiple virtual tables when 14216multiple inheritance is in use. 14217 14218@cindex C@t{++} demangling 14219@item demangle @var{name} 14220Demangle @var{name}. 14221@xref{Symbols}, for a more complete description of the @code{demangle} command. 14222 14223@cindex C@t{++} symbol display 14224@item set print demangle 14225@itemx show print demangle 14226@itemx set print asm-demangle 14227@itemx show print asm-demangle 14228Control whether C@t{++} symbols display in their source form, both when 14229displaying code as C@t{++} source and when displaying disassemblies. 14230@xref{Print Settings, ,Print Settings}. 14231 14232@item set print object 14233@itemx show print object 14234Choose whether to print derived (actual) or declared types of objects. 14235@xref{Print Settings, ,Print Settings}. 14236 14237@item set print vtbl 14238@itemx show print vtbl 14239Control the format for printing virtual function tables. 14240@xref{Print Settings, ,Print Settings}. 14241(The @code{vtbl} commands do not work on programs compiled with the HP 14242ANSI C@t{++} compiler (@code{aCC}).) 14243 14244@kindex set overload-resolution 14245@cindex overloaded functions, overload resolution 14246@item set overload-resolution on 14247Enable overload resolution for C@t{++} expression evaluation. The default 14248is on. For overloaded functions, @value{GDBN} evaluates the arguments 14249and searches for a function whose signature matches the argument types, 14250using the standard C@t{++} conversion rules (see @ref{C Plus Plus 14251Expressions, ,C@t{++} Expressions}, for details). 14252If it cannot find a match, it emits a message. 14253 14254@item set overload-resolution off 14255Disable overload resolution for C@t{++} expression evaluation. For 14256overloaded functions that are not class member functions, @value{GDBN} 14257chooses the first function of the specified name that it finds in the 14258symbol table, whether or not its arguments are of the correct type. For 14259overloaded functions that are class member functions, @value{GDBN} 14260searches for a function whose signature @emph{exactly} matches the 14261argument types. 14262 14263@kindex show overload-resolution 14264@item show overload-resolution 14265Show the current setting of overload resolution. 14266 14267@item @r{Overloaded symbol names} 14268You can specify a particular definition of an overloaded symbol, using 14269the same notation that is used to declare such symbols in C@t{++}: type 14270@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can 14271also use the @value{GDBN} command-line word completion facilities to list the 14272available choices, or to finish the type list for you. 14273@xref{Completion,, Command Completion}, for details on how to do this. 14274@end table 14275 14276@node Decimal Floating Point 14277@subsubsection Decimal Floating Point format 14278@cindex decimal floating point format 14279 14280@value{GDBN} can examine, set and perform computations with numbers in 14281decimal floating point format, which in the C language correspond to the 14282@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as 14283specified by the extension to support decimal floating-point arithmetic. 14284 14285There are two encodings in use, depending on the architecture: BID (Binary 14286Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for 14287PowerPC and S/390. @value{GDBN} will use the appropriate encoding for the 14288configured target. 14289 14290Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN} 14291to manipulate decimal floating point numbers, it is not possible to convert 14292(using a cast, for example) integers wider than 32-bit to decimal float. 14293 14294In addition, in order to imitate @value{GDBN}'s behaviour with binary floating 14295point computations, error checking in decimal float operations ignores 14296underflow, overflow and divide by zero exceptions. 14297 14298In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers 14299to inspect @code{_Decimal128} values stored in floating point registers. 14300See @ref{PowerPC,,PowerPC} for more details. 14301 14302@node D 14303@subsection D 14304 14305@cindex D 14306@value{GDBN} can be used to debug programs written in D and compiled with 14307GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D 14308specific feature --- dynamic arrays. 14309 14310@node Go 14311@subsection Go 14312 14313@cindex Go (programming language) 14314@value{GDBN} can be used to debug programs written in Go and compiled with 14315@file{gccgo} or @file{6g} compilers. 14316 14317Here is a summary of the Go-specific features and restrictions: 14318 14319@table @code 14320@cindex current Go package 14321@item The current Go package 14322The name of the current package does not need to be specified when 14323specifying global variables and functions. 14324 14325For example, given the program: 14326 14327@example 14328package main 14329var myglob = "Shall we?" 14330func main () @{ 14331 // ... 14332@} 14333@end example 14334 14335When stopped inside @code{main} either of these work: 14336 14337@example 14338(gdb) p myglob 14339(gdb) p main.myglob 14340@end example 14341 14342@cindex builtin Go types 14343@item Builtin Go types 14344The @code{string} type is recognized by @value{GDBN} and is printed 14345as a string. 14346 14347@cindex builtin Go functions 14348@item Builtin Go functions 14349The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof} 14350function and handles it internally. 14351 14352@cindex restrictions on Go expressions 14353@item Restrictions on Go expressions 14354All Go operators are supported except @code{&^}. 14355The Go @code{_} ``blank identifier'' is not supported. 14356Automatic dereferencing of pointers is not supported. 14357@end table 14358 14359@node Objective-C 14360@subsection Objective-C 14361 14362@cindex Objective-C 14363This section provides information about some commands and command 14364options that are useful for debugging Objective-C code. See also 14365@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a 14366few more commands specific to Objective-C support. 14367 14368@menu 14369* Method Names in Commands:: 14370* The Print Command with Objective-C:: 14371@end menu 14372 14373@node Method Names in Commands 14374@subsubsection Method Names in Commands 14375 14376The following commands have been extended to accept Objective-C method 14377names as line specifications: 14378 14379@kindex clear@r{, and Objective-C} 14380@kindex break@r{, and Objective-C} 14381@kindex info line@r{, and Objective-C} 14382@kindex jump@r{, and Objective-C} 14383@kindex list@r{, and Objective-C} 14384@itemize 14385@item @code{clear} 14386@item @code{break} 14387@item @code{info line} 14388@item @code{jump} 14389@item @code{list} 14390@end itemize 14391 14392A fully qualified Objective-C method name is specified as 14393 14394@smallexample 14395-[@var{Class} @var{methodName}] 14396@end smallexample 14397 14398where the minus sign is used to indicate an instance method and a 14399plus sign (not shown) is used to indicate a class method. The class 14400name @var{Class} and method name @var{methodName} are enclosed in 14401brackets, similar to the way messages are specified in Objective-C 14402source code. For example, to set a breakpoint at the @code{create} 14403instance method of class @code{Fruit} in the program currently being 14404debugged, enter: 14405 14406@smallexample 14407break -[Fruit create] 14408@end smallexample 14409 14410To list ten program lines around the @code{initialize} class method, 14411enter: 14412 14413@smallexample 14414list +[NSText initialize] 14415@end smallexample 14416 14417In the current version of @value{GDBN}, the plus or minus sign is 14418required. In future versions of @value{GDBN}, the plus or minus 14419sign will be optional, but you can use it to narrow the search. It 14420is also possible to specify just a method name: 14421 14422@smallexample 14423break create 14424@end smallexample 14425 14426You must specify the complete method name, including any colons. If 14427your program's source files contain more than one @code{create} method, 14428you'll be presented with a numbered list of classes that implement that 14429method. Indicate your choice by number, or type @samp{0} to exit if 14430none apply. 14431 14432As another example, to clear a breakpoint established at the 14433@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter: 14434 14435@smallexample 14436clear -[NSWindow makeKeyAndOrderFront:] 14437@end smallexample 14438 14439@node The Print Command with Objective-C 14440@subsubsection The Print Command With Objective-C 14441@cindex Objective-C, print objects 14442@kindex print-object 14443@kindex po @r{(@code{print-object})} 14444 14445The print command has also been extended to accept methods. For example: 14446 14447@smallexample 14448print -[@var{object} hash] 14449@end smallexample 14450 14451@cindex print an Objective-C object description 14452@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects 14453@noindent 14454will tell @value{GDBN} to send the @code{hash} message to @var{object} 14455and print the result. Also, an additional command has been added, 14456@code{print-object} or @code{po} for short, which is meant to print 14457the description of an object. However, this command may only work 14458with certain Objective-C libraries that have a particular hook 14459function, @code{_NSPrintForDebugger}, defined. 14460 14461@node OpenCL C 14462@subsection OpenCL C 14463 14464@cindex OpenCL C 14465This section provides information about @value{GDBN}s OpenCL C support. 14466 14467@menu 14468* OpenCL C Datatypes:: 14469* OpenCL C Expressions:: 14470* OpenCL C Operators:: 14471@end menu 14472 14473@node OpenCL C Datatypes 14474@subsubsection OpenCL C Datatypes 14475 14476@cindex OpenCL C Datatypes 14477@value{GDBN} supports the builtin scalar and vector datatypes specified 14478by OpenCL 1.1. In addition the half- and double-precision floating point 14479data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL 14480extensions are also known to @value{GDBN}. 14481 14482@node OpenCL C Expressions 14483@subsubsection OpenCL C Expressions 14484 14485@cindex OpenCL C Expressions 14486@value{GDBN} supports accesses to vector components including the access as 14487lvalue where possible. Since OpenCL C is based on C99 most C expressions 14488supported by @value{GDBN} can be used as well. 14489 14490@node OpenCL C Operators 14491@subsubsection OpenCL C Operators 14492 14493@cindex OpenCL C Operators 14494@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and 14495vector data types. 14496 14497@node Fortran 14498@subsection Fortran 14499@cindex Fortran-specific support in @value{GDBN} 14500 14501@value{GDBN} can be used to debug programs written in Fortran, but it 14502currently supports only the features of Fortran 77 language. 14503 14504@cindex trailing underscore, in Fortran symbols 14505Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers 14506among them) append an underscore to the names of variables and 14507functions. When you debug programs compiled by those compilers, you 14508will need to refer to variables and functions with a trailing 14509underscore. 14510 14511@menu 14512* Fortran Operators:: Fortran operators and expressions 14513* Fortran Defaults:: Default settings for Fortran 14514* Special Fortran Commands:: Special @value{GDBN} commands for Fortran 14515@end menu 14516 14517@node Fortran Operators 14518@subsubsection Fortran Operators and Expressions 14519 14520@cindex Fortran operators and expressions 14521 14522Operators must be defined on values of specific types. For instance, 14523@code{+} is defined on numbers, but not on characters or other non- 14524arithmetic types. Operators are often defined on groups of types. 14525 14526@table @code 14527@item ** 14528The exponentiation operator. It raises the first operand to the power 14529of the second one. 14530 14531@item : 14532The range operator. Normally used in the form of array(low:high) to 14533represent a section of array. 14534 14535@item % 14536The access component operator. Normally used to access elements in derived 14537types. Also suitable for unions. As unions aren't part of regular Fortran, 14538this can only happen when accessing a register that uses a gdbarch-defined 14539union type. 14540@end table 14541 14542@node Fortran Defaults 14543@subsubsection Fortran Defaults 14544 14545@cindex Fortran Defaults 14546 14547Fortran symbols are usually case-insensitive, so @value{GDBN} by 14548default uses case-insensitive matches for Fortran symbols. You can 14549change that with the @samp{set case-insensitive} command, see 14550@ref{Symbols}, for the details. 14551 14552@node Special Fortran Commands 14553@subsubsection Special Fortran Commands 14554 14555@cindex Special Fortran commands 14556 14557@value{GDBN} has some commands to support Fortran-specific features, 14558such as displaying common blocks. 14559 14560@table @code 14561@cindex @code{COMMON} blocks, Fortran 14562@kindex info common 14563@item info common @r{[}@var{common-name}@r{]} 14564This command prints the values contained in the Fortran @code{COMMON} 14565block whose name is @var{common-name}. With no argument, the names of 14566all @code{COMMON} blocks visible at the current program location are 14567printed. 14568@end table 14569 14570@node Pascal 14571@subsection Pascal 14572 14573@cindex Pascal support in @value{GDBN}, limitations 14574Debugging Pascal programs which use sets, subranges, file variables, or 14575nested functions does not currently work. @value{GDBN} does not support 14576entering expressions, printing values, or similar features using Pascal 14577syntax. 14578 14579The Pascal-specific command @code{set print pascal_static-members} 14580controls whether static members of Pascal objects are displayed. 14581@xref{Print Settings, pascal_static-members}. 14582 14583@node Modula-2 14584@subsection Modula-2 14585 14586@cindex Modula-2, @value{GDBN} support 14587 14588The extensions made to @value{GDBN} to support Modula-2 only support 14589output from the @sc{gnu} Modula-2 compiler (which is currently being 14590developed). Other Modula-2 compilers are not currently supported, and 14591attempting to debug executables produced by them is most likely 14592to give an error as @value{GDBN} reads in the executable's symbol 14593table. 14594 14595@cindex expressions in Modula-2 14596@menu 14597* M2 Operators:: Built-in operators 14598* Built-In Func/Proc:: Built-in functions and procedures 14599* M2 Constants:: Modula-2 constants 14600* M2 Types:: Modula-2 types 14601* M2 Defaults:: Default settings for Modula-2 14602* Deviations:: Deviations from standard Modula-2 14603* M2 Checks:: Modula-2 type and range checks 14604* M2 Scope:: The scope operators @code{::} and @code{.} 14605* GDB/M2:: @value{GDBN} and Modula-2 14606@end menu 14607 14608@node M2 Operators 14609@subsubsection Operators 14610@cindex Modula-2 operators 14611 14612Operators must be defined on values of specific types. For instance, 14613@code{+} is defined on numbers, but not on structures. Operators are 14614often defined on groups of types. For the purposes of Modula-2, the 14615following definitions hold: 14616 14617@itemize @bullet 14618 14619@item 14620@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and 14621their subranges. 14622 14623@item 14624@emph{Character types} consist of @code{CHAR} and its subranges. 14625 14626@item 14627@emph{Floating-point types} consist of @code{REAL}. 14628 14629@item 14630@emph{Pointer types} consist of anything declared as @code{POINTER TO 14631@var{type}}. 14632 14633@item 14634@emph{Scalar types} consist of all of the above. 14635 14636@item 14637@emph{Set types} consist of @code{SET} and @code{BITSET} types. 14638 14639@item 14640@emph{Boolean types} consist of @code{BOOLEAN}. 14641@end itemize 14642 14643@noindent 14644The following operators are supported, and appear in order of 14645increasing precedence: 14646 14647@table @code 14648@item , 14649Function argument or array index separator. 14650 14651@item := 14652Assignment. The value of @var{var} @code{:=} @var{value} is 14653@var{value}. 14654 14655@item <@r{, }> 14656Less than, greater than on integral, floating-point, or enumerated 14657types. 14658 14659@item <=@r{, }>= 14660Less than or equal to, greater than or equal to 14661on integral, floating-point and enumerated types, or set inclusion on 14662set types. Same precedence as @code{<}. 14663 14664@item =@r{, }<>@r{, }# 14665Equality and two ways of expressing inequality, valid on scalar types. 14666Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is 14667available for inequality, since @code{#} conflicts with the script 14668comment character. 14669 14670@item IN 14671Set membership. Defined on set types and the types of their members. 14672Same precedence as @code{<}. 14673 14674@item OR 14675Boolean disjunction. Defined on boolean types. 14676 14677@item AND@r{, }& 14678Boolean conjunction. Defined on boolean types. 14679 14680@item @@ 14681The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 14682 14683@item +@r{, }- 14684Addition and subtraction on integral and floating-point types, or union 14685and difference on set types. 14686 14687@item * 14688Multiplication on integral and floating-point types, or set intersection 14689on set types. 14690 14691@item / 14692Division on floating-point types, or symmetric set difference on set 14693types. Same precedence as @code{*}. 14694 14695@item DIV@r{, }MOD 14696Integer division and remainder. Defined on integral types. Same 14697precedence as @code{*}. 14698 14699@item - 14700Negative. Defined on @code{INTEGER} and @code{REAL} data. 14701 14702@item ^ 14703Pointer dereferencing. Defined on pointer types. 14704 14705@item NOT 14706Boolean negation. Defined on boolean types. Same precedence as 14707@code{^}. 14708 14709@item . 14710@code{RECORD} field selector. Defined on @code{RECORD} data. Same 14711precedence as @code{^}. 14712 14713@item [] 14714Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}. 14715 14716@item () 14717Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence 14718as @code{^}. 14719 14720@item ::@r{, }. 14721@value{GDBN} and Modula-2 scope operators. 14722@end table 14723 14724@quotation 14725@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN} 14726treats the use of the operator @code{IN}, or the use of operators 14727@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#}, 14728@code{<=}, and @code{>=} on sets as an error. 14729@end quotation 14730 14731 14732@node Built-In Func/Proc 14733@subsubsection Built-in Functions and Procedures 14734@cindex Modula-2 built-ins 14735 14736Modula-2 also makes available several built-in procedures and functions. 14737In describing these, the following metavariables are used: 14738 14739@table @var 14740 14741@item a 14742represents an @code{ARRAY} variable. 14743 14744@item c 14745represents a @code{CHAR} constant or variable. 14746 14747@item i 14748represents a variable or constant of integral type. 14749 14750@item m 14751represents an identifier that belongs to a set. Generally used in the 14752same function with the metavariable @var{s}. The type of @var{s} should 14753be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}). 14754 14755@item n 14756represents a variable or constant of integral or floating-point type. 14757 14758@item r 14759represents a variable or constant of floating-point type. 14760 14761@item t 14762represents a type. 14763 14764@item v 14765represents a variable. 14766 14767@item x 14768represents a variable or constant of one of many types. See the 14769explanation of the function for details. 14770@end table 14771 14772All Modula-2 built-in procedures also return a result, described below. 14773 14774@table @code 14775@item ABS(@var{n}) 14776Returns the absolute value of @var{n}. 14777 14778@item CAP(@var{c}) 14779If @var{c} is a lower case letter, it returns its upper case 14780equivalent, otherwise it returns its argument. 14781 14782@item CHR(@var{i}) 14783Returns the character whose ordinal value is @var{i}. 14784 14785@item DEC(@var{v}) 14786Decrements the value in the variable @var{v} by one. Returns the new value. 14787 14788@item DEC(@var{v},@var{i}) 14789Decrements the value in the variable @var{v} by @var{i}. Returns the 14790new value. 14791 14792@item EXCL(@var{m},@var{s}) 14793Removes the element @var{m} from the set @var{s}. Returns the new 14794set. 14795 14796@item FLOAT(@var{i}) 14797Returns the floating point equivalent of the integer @var{i}. 14798 14799@item HIGH(@var{a}) 14800Returns the index of the last member of @var{a}. 14801 14802@item INC(@var{v}) 14803Increments the value in the variable @var{v} by one. Returns the new value. 14804 14805@item INC(@var{v},@var{i}) 14806Increments the value in the variable @var{v} by @var{i}. Returns the 14807new value. 14808 14809@item INCL(@var{m},@var{s}) 14810Adds the element @var{m} to the set @var{s} if it is not already 14811there. Returns the new set. 14812 14813@item MAX(@var{t}) 14814Returns the maximum value of the type @var{t}. 14815 14816@item MIN(@var{t}) 14817Returns the minimum value of the type @var{t}. 14818 14819@item ODD(@var{i}) 14820Returns boolean TRUE if @var{i} is an odd number. 14821 14822@item ORD(@var{x}) 14823Returns the ordinal value of its argument. For example, the ordinal 14824value of a character is its @sc{ascii} value (on machines supporting 14825the @sc{ascii} character set). The argument @var{x} must be of an 14826ordered type, which include integral, character and enumerated types. 14827 14828@item SIZE(@var{x}) 14829Returns the size of its argument. The argument @var{x} can be a 14830variable or a type. 14831 14832@item TRUNC(@var{r}) 14833Returns the integral part of @var{r}. 14834 14835@item TSIZE(@var{x}) 14836Returns the size of its argument. The argument @var{x} can be a 14837variable or a type. 14838 14839@item VAL(@var{t},@var{i}) 14840Returns the member of the type @var{t} whose ordinal value is @var{i}. 14841@end table 14842 14843@quotation 14844@emph{Warning:} Sets and their operations are not yet supported, so 14845@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as 14846an error. 14847@end quotation 14848 14849@cindex Modula-2 constants 14850@node M2 Constants 14851@subsubsection Constants 14852 14853@value{GDBN} allows you to express the constants of Modula-2 in the following 14854ways: 14855 14856@itemize @bullet 14857 14858@item 14859Integer constants are simply a sequence of digits. When used in an 14860expression, a constant is interpreted to be type-compatible with the 14861rest of the expression. Hexadecimal integers are specified by a 14862trailing @samp{H}, and octal integers by a trailing @samp{B}. 14863 14864@item 14865Floating point constants appear as a sequence of digits, followed by a 14866decimal point and another sequence of digits. An optional exponent can 14867then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where 14868@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the 14869digits of the floating point constant must be valid decimal (base 10) 14870digits. 14871 14872@item 14873Character constants consist of a single character enclosed by a pair of 14874like quotes, either single (@code{'}) or double (@code{"}). They may 14875also be expressed by their ordinal value (their @sc{ascii} value, usually) 14876followed by a @samp{C}. 14877 14878@item 14879String constants consist of a sequence of characters enclosed by a 14880pair of like quotes, either single (@code{'}) or double (@code{"}). 14881Escape sequences in the style of C are also allowed. @xref{C 14882Constants, ,C and C@t{++} Constants}, for a brief explanation of escape 14883sequences. 14884 14885@item 14886Enumerated constants consist of an enumerated identifier. 14887 14888@item 14889Boolean constants consist of the identifiers @code{TRUE} and 14890@code{FALSE}. 14891 14892@item 14893Pointer constants consist of integral values only. 14894 14895@item 14896Set constants are not yet supported. 14897@end itemize 14898 14899@node M2 Types 14900@subsubsection Modula-2 Types 14901@cindex Modula-2 types 14902 14903Currently @value{GDBN} can print the following data types in Modula-2 14904syntax: array types, record types, set types, pointer types, procedure 14905types, enumerated types, subrange types and base types. You can also 14906print the contents of variables declared using these type. 14907This section gives a number of simple source code examples together with 14908sample @value{GDBN} sessions. 14909 14910The first example contains the following section of code: 14911 14912@smallexample 14913VAR 14914 s: SET OF CHAR ; 14915 r: [20..40] ; 14916@end smallexample 14917 14918@noindent 14919and you can request @value{GDBN} to interrogate the type and value of 14920@code{r} and @code{s}. 14921 14922@smallexample 14923(@value{GDBP}) print s 14924@{'A'..'C', 'Z'@} 14925(@value{GDBP}) ptype s 14926SET OF CHAR 14927(@value{GDBP}) print r 1492821 14929(@value{GDBP}) ptype r 14930[20..40] 14931@end smallexample 14932 14933@noindent 14934Likewise if your source code declares @code{s} as: 14935 14936@smallexample 14937VAR 14938 s: SET ['A'..'Z'] ; 14939@end smallexample 14940 14941@noindent 14942then you may query the type of @code{s} by: 14943 14944@smallexample 14945(@value{GDBP}) ptype s 14946type = SET ['A'..'Z'] 14947@end smallexample 14948 14949@noindent 14950Note that at present you cannot interactively manipulate set 14951expressions using the debugger. 14952 14953The following example shows how you might declare an array in Modula-2 14954and how you can interact with @value{GDBN} to print its type and contents: 14955 14956@smallexample 14957VAR 14958 s: ARRAY [-10..10] OF CHAR ; 14959@end smallexample 14960 14961@smallexample 14962(@value{GDBP}) ptype s 14963ARRAY [-10..10] OF CHAR 14964@end smallexample 14965 14966Note that the array handling is not yet complete and although the type 14967is printed correctly, expression handling still assumes that all 14968arrays have a lower bound of zero and not @code{-10} as in the example 14969above. 14970 14971Here are some more type related Modula-2 examples: 14972 14973@smallexample 14974TYPE 14975 colour = (blue, red, yellow, green) ; 14976 t = [blue..yellow] ; 14977VAR 14978 s: t ; 14979BEGIN 14980 s := blue ; 14981@end smallexample 14982 14983@noindent 14984The @value{GDBN} interaction shows how you can query the data type 14985and value of a variable. 14986 14987@smallexample 14988(@value{GDBP}) print s 14989$1 = blue 14990(@value{GDBP}) ptype t 14991type = [blue..yellow] 14992@end smallexample 14993 14994@noindent 14995In this example a Modula-2 array is declared and its contents 14996displayed. Observe that the contents are written in the same way as 14997their @code{C} counterparts. 14998 14999@smallexample 15000VAR 15001 s: ARRAY [1..5] OF CARDINAL ; 15002BEGIN 15003 s[1] := 1 ; 15004@end smallexample 15005 15006@smallexample 15007(@value{GDBP}) print s 15008$1 = @{1, 0, 0, 0, 0@} 15009(@value{GDBP}) ptype s 15010type = ARRAY [1..5] OF CARDINAL 15011@end smallexample 15012 15013The Modula-2 language interface to @value{GDBN} also understands 15014pointer types as shown in this example: 15015 15016@smallexample 15017VAR 15018 s: POINTER TO ARRAY [1..5] OF CARDINAL ; 15019BEGIN 15020 NEW(s) ; 15021 s^[1] := 1 ; 15022@end smallexample 15023 15024@noindent 15025and you can request that @value{GDBN} describes the type of @code{s}. 15026 15027@smallexample 15028(@value{GDBP}) ptype s 15029type = POINTER TO ARRAY [1..5] OF CARDINAL 15030@end smallexample 15031 15032@value{GDBN} handles compound types as we can see in this example. 15033Here we combine array types, record types, pointer types and subrange 15034types: 15035 15036@smallexample 15037TYPE 15038 foo = RECORD 15039 f1: CARDINAL ; 15040 f2: CHAR ; 15041 f3: myarray ; 15042 END ; 15043 15044 myarray = ARRAY myrange OF CARDINAL ; 15045 myrange = [-2..2] ; 15046VAR 15047 s: POINTER TO ARRAY myrange OF foo ; 15048@end smallexample 15049 15050@noindent 15051and you can ask @value{GDBN} to describe the type of @code{s} as shown 15052below. 15053 15054@smallexample 15055(@value{GDBP}) ptype s 15056type = POINTER TO ARRAY [-2..2] OF foo = RECORD 15057 f1 : CARDINAL; 15058 f2 : CHAR; 15059 f3 : ARRAY [-2..2] OF CARDINAL; 15060END 15061@end smallexample 15062 15063@node M2 Defaults 15064@subsubsection Modula-2 Defaults 15065@cindex Modula-2 defaults 15066 15067If type and range checking are set automatically by @value{GDBN}, they 15068both default to @code{on} whenever the working language changes to 15069Modula-2. This happens regardless of whether you or @value{GDBN} 15070selected the working language. 15071 15072If you allow @value{GDBN} to set the language automatically, then entering 15073code compiled from a file whose name ends with @file{.mod} sets the 15074working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} 15075Infer the Source Language}, for further details. 15076 15077@node Deviations 15078@subsubsection Deviations from Standard Modula-2 15079@cindex Modula-2, deviations from 15080 15081A few changes have been made to make Modula-2 programs easier to debug. 15082This is done primarily via loosening its type strictness: 15083 15084@itemize @bullet 15085@item 15086Unlike in standard Modula-2, pointer constants can be formed by 15087integers. This allows you to modify pointer variables during 15088debugging. (In standard Modula-2, the actual address contained in a 15089pointer variable is hidden from you; it can only be modified 15090through direct assignment to another pointer variable or expression that 15091returned a pointer.) 15092 15093@item 15094C escape sequences can be used in strings and characters to represent 15095non-printable characters. @value{GDBN} prints out strings with these 15096escape sequences embedded. Single non-printable characters are 15097printed using the @samp{CHR(@var{nnn})} format. 15098 15099@item 15100The assignment operator (@code{:=}) returns the value of its right-hand 15101argument. 15102 15103@item 15104All built-in procedures both modify @emph{and} return their argument. 15105@end itemize 15106 15107@node M2 Checks 15108@subsubsection Modula-2 Type and Range Checks 15109@cindex Modula-2 checks 15110 15111@quotation 15112@emph{Warning:} in this release, @value{GDBN} does not yet perform type or 15113range checking. 15114@end quotation 15115@c FIXME remove warning when type/range checks added 15116 15117@value{GDBN} considers two Modula-2 variables type equivalent if: 15118 15119@itemize @bullet 15120@item 15121They are of types that have been declared equivalent via a @code{TYPE 15122@var{t1} = @var{t2}} statement 15123 15124@item 15125They have been declared on the same line. (Note: This is true of the 15126@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.) 15127@end itemize 15128 15129As long as type checking is enabled, any attempt to combine variables 15130whose types are not equivalent is an error. 15131 15132Range checking is done on all mathematical operations, assignment, array 15133index bounds, and all built-in functions and procedures. 15134 15135@node M2 Scope 15136@subsubsection The Scope Operators @code{::} and @code{.} 15137@cindex scope 15138@cindex @code{.}, Modula-2 scope operator 15139@cindex colon, doubled as scope operator 15140@ifinfo 15141@vindex colon-colon@r{, in Modula-2} 15142@c Info cannot handle :: but TeX can. 15143@end ifinfo 15144@ifnotinfo 15145@vindex ::@r{, in Modula-2} 15146@end ifnotinfo 15147 15148There are a few subtle differences between the Modula-2 scope operator 15149(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have 15150similar syntax: 15151 15152@smallexample 15153 15154@var{module} . @var{id} 15155@var{scope} :: @var{id} 15156@end smallexample 15157 15158@noindent 15159where @var{scope} is the name of a module or a procedure, 15160@var{module} the name of a module, and @var{id} is any declared 15161identifier within your program, except another module. 15162 15163Using the @code{::} operator makes @value{GDBN} search the scope 15164specified by @var{scope} for the identifier @var{id}. If it is not 15165found in the specified scope, then @value{GDBN} searches all scopes 15166enclosing the one specified by @var{scope}. 15167 15168Using the @code{.} operator makes @value{GDBN} search the current scope for 15169the identifier specified by @var{id} that was imported from the 15170definition module specified by @var{module}. With this operator, it is 15171an error if the identifier @var{id} was not imported from definition 15172module @var{module}, or if @var{id} is not an identifier in 15173@var{module}. 15174 15175@node GDB/M2 15176@subsubsection @value{GDBN} and Modula-2 15177 15178Some @value{GDBN} commands have little use when debugging Modula-2 programs. 15179Five subcommands of @code{set print} and @code{show print} apply 15180specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle}, 15181@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four 15182apply to C@t{++}, and the last to the C @code{union} type, which has no direct 15183analogue in Modula-2. 15184 15185The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available 15186with any language, is not useful with Modula-2. Its 15187intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be 15188created in Modula-2 as they can in C or C@t{++}. However, because an 15189address can be specified by an integral constant, the construct 15190@samp{@{@var{type}@}@var{adrexp}} is still useful. 15191 15192@cindex @code{#} in Modula-2 15193In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is 15194interpreted as the beginning of a comment. Use @code{<>} instead. 15195 15196@node Ada 15197@subsection Ada 15198@cindex Ada 15199 15200The extensions made to @value{GDBN} for Ada only support 15201output from the @sc{gnu} Ada (GNAT) compiler. 15202Other Ada compilers are not currently supported, and 15203attempting to debug executables produced by them is most likely 15204to be difficult. 15205 15206 15207@cindex expressions in Ada 15208@menu 15209* Ada Mode Intro:: General remarks on the Ada syntax 15210 and semantics supported by Ada mode 15211 in @value{GDBN}. 15212* Omissions from Ada:: Restrictions on the Ada expression syntax. 15213* Additions to Ada:: Extensions of the Ada expression syntax. 15214* Stopping Before Main Program:: Debugging the program during elaboration. 15215* Ada Exceptions:: Ada Exceptions 15216* Ada Tasks:: Listing and setting breakpoints in tasks. 15217* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files 15218* Ravenscar Profile:: Tasking Support when using the Ravenscar 15219 Profile 15220* Ada Glitches:: Known peculiarities of Ada mode. 15221@end menu 15222 15223@node Ada Mode Intro 15224@subsubsection Introduction 15225@cindex Ada mode, general 15226 15227The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression 15228syntax, with some extensions. 15229The philosophy behind the design of this subset is 15230 15231@itemize @bullet 15232@item 15233That @value{GDBN} should provide basic literals and access to operations for 15234arithmetic, dereferencing, field selection, indexing, and subprogram calls, 15235leaving more sophisticated computations to subprograms written into the 15236program (which therefore may be called from @value{GDBN}). 15237 15238@item 15239That type safety and strict adherence to Ada language restrictions 15240are not particularly important to the @value{GDBN} user. 15241 15242@item 15243That brevity is important to the @value{GDBN} user. 15244@end itemize 15245 15246Thus, for brevity, the debugger acts as if all names declared in 15247user-written packages are directly visible, even if they are not visible 15248according to Ada rules, thus making it unnecessary to fully qualify most 15249names with their packages, regardless of context. Where this causes 15250ambiguity, @value{GDBN} asks the user's intent. 15251 15252The debugger will start in Ada mode if it detects an Ada main program. 15253As for other languages, it will enter Ada mode when stopped in a program that 15254was translated from an Ada source file. 15255 15256While in Ada mode, you may use `@t{--}' for comments. This is useful 15257mostly for documenting command files. The standard @value{GDBN} comment 15258(@samp{#}) still works at the beginning of a line in Ada mode, but not in the 15259middle (to allow based literals). 15260 15261The debugger supports limited overloading. Given a subprogram call in which 15262the function symbol has multiple definitions, it will use the number of 15263actual parameters and some information about their types to attempt to narrow 15264the set of definitions. It also makes very limited use of context, preferring 15265procedures to functions in the context of the @code{call} command, and 15266functions to procedures elsewhere. 15267 15268@node Omissions from Ada 15269@subsubsection Omissions from Ada 15270@cindex Ada, omissions from 15271 15272Here are the notable omissions from the subset: 15273 15274@itemize @bullet 15275@item 15276Only a subset of the attributes are supported: 15277 15278@itemize @minus 15279@item 15280@t{'First}, @t{'Last}, and @t{'Length} 15281 on array objects (not on types and subtypes). 15282 15283@item 15284@t{'Min} and @t{'Max}. 15285 15286@item 15287@t{'Pos} and @t{'Val}. 15288 15289@item 15290@t{'Tag}. 15291 15292@item 15293@t{'Range} on array objects (not subtypes), but only as the right 15294operand of the membership (@code{in}) operator. 15295 15296@item 15297@t{'Access}, @t{'Unchecked_Access}, and 15298@t{'Unrestricted_Access} (a GNAT extension). 15299 15300@item 15301@t{'Address}. 15302@end itemize 15303 15304@item 15305The names in 15306@code{Characters.Latin_1} are not available and 15307concatenation is not implemented. Thus, escape characters in strings are 15308not currently available. 15309 15310@item 15311Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise 15312equality of representations. They will generally work correctly 15313for strings and arrays whose elements have integer or enumeration types. 15314They may not work correctly for arrays whose element 15315types have user-defined equality, for arrays of real values 15316(in particular, IEEE-conformant floating point, because of negative 15317zeroes and NaNs), and for arrays whose elements contain unused bits with 15318indeterminate values. 15319 15320@item 15321The other component-by-component array operations (@code{and}, @code{or}, 15322@code{xor}, @code{not}, and relational tests other than equality) 15323are not implemented. 15324 15325@item 15326@cindex array aggregates (Ada) 15327@cindex record aggregates (Ada) 15328@cindex aggregates (Ada) 15329There is limited support for array and record aggregates. They are 15330permitted only on the right sides of assignments, as in these examples: 15331 15332@smallexample 15333(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6) 15334(@value{GDBP}) set An_Array := (1, others => 0) 15335(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6) 15336(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9)) 15337(@value{GDBP}) set A_Record := (1, "Peter", True); 15338(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True) 15339@end smallexample 15340 15341Changing a 15342discriminant's value by assigning an aggregate has an 15343undefined effect if that discriminant is used within the record. 15344However, you can first modify discriminants by directly assigning to 15345them (which normally would not be allowed in Ada), and then performing an 15346aggregate assignment. For example, given a variable @code{A_Rec} 15347declared to have a type such as: 15348 15349@smallexample 15350type Rec (Len : Small_Integer := 0) is record 15351 Id : Integer; 15352 Vals : IntArray (1 .. Len); 15353end record; 15354@end smallexample 15355 15356you can assign a value with a different size of @code{Vals} with two 15357assignments: 15358 15359@smallexample 15360(@value{GDBP}) set A_Rec.Len := 4 15361(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4)) 15362@end smallexample 15363 15364As this example also illustrates, @value{GDBN} is very loose about the usual 15365rules concerning aggregates. You may leave out some of the 15366components of an array or record aggregate (such as the @code{Len} 15367component in the assignment to @code{A_Rec} above); they will retain their 15368original values upon assignment. You may freely use dynamic values as 15369indices in component associations. You may even use overlapping or 15370redundant component associations, although which component values are 15371assigned in such cases is not defined. 15372 15373@item 15374Calls to dispatching subprograms are not implemented. 15375 15376@item 15377The overloading algorithm is much more limited (i.e., less selective) 15378than that of real Ada. It makes only limited use of the context in 15379which a subexpression appears to resolve its meaning, and it is much 15380looser in its rules for allowing type matches. As a result, some 15381function calls will be ambiguous, and the user will be asked to choose 15382the proper resolution. 15383 15384@item 15385The @code{new} operator is not implemented. 15386 15387@item 15388Entry calls are not implemented. 15389 15390@item 15391Aside from printing, arithmetic operations on the native VAX floating-point 15392formats are not supported. 15393 15394@item 15395It is not possible to slice a packed array. 15396 15397@item 15398The names @code{True} and @code{False}, when not part of a qualified name, 15399are interpreted as if implicitly prefixed by @code{Standard}, regardless of 15400context. 15401Should your program 15402redefine these names in a package or procedure (at best a dubious practice), 15403you will have to use fully qualified names to access their new definitions. 15404@end itemize 15405 15406@node Additions to Ada 15407@subsubsection Additions to Ada 15408@cindex Ada, deviations from 15409 15410As it does for other languages, @value{GDBN} makes certain generic 15411extensions to Ada (@pxref{Expressions}): 15412 15413@itemize @bullet 15414@item 15415If the expression @var{E} is a variable residing in memory (typically 15416a local variable or array element) and @var{N} is a positive integer, 15417then @code{@var{E}@@@var{N}} displays the values of @var{E} and the 15418@var{N}-1 adjacent variables following it in memory as an array. In 15419Ada, this operator is generally not necessary, since its prime use is 15420in displaying parts of an array, and slicing will usually do this in 15421Ada. However, there are occasional uses when debugging programs in 15422which certain debugging information has been optimized away. 15423 15424@item 15425@code{@var{B}::@var{var}} means ``the variable named @var{var} that 15426appears in function or file @var{B}.'' When @var{B} is a file name, 15427you must typically surround it in single quotes. 15428 15429@item 15430The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type 15431@var{type} that appears at address @var{addr}.'' 15432 15433@item 15434A name starting with @samp{$} is a convenience variable 15435(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}). 15436@end itemize 15437 15438In addition, @value{GDBN} provides a few other shortcuts and outright 15439additions specific to Ada: 15440 15441@itemize @bullet 15442@item 15443The assignment statement is allowed as an expression, returning 15444its right-hand operand as its value. Thus, you may enter 15445 15446@smallexample 15447(@value{GDBP}) set x := y + 3 15448(@value{GDBP}) print A(tmp := y + 1) 15449@end smallexample 15450 15451@item 15452The semicolon is allowed as an ``operator,'' returning as its value 15453the value of its right-hand operand. 15454This allows, for example, 15455complex conditional breaks: 15456 15457@smallexample 15458(@value{GDBP}) break f 15459(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100) 15460@end smallexample 15461 15462@item 15463Rather than use catenation and symbolic character names to introduce special 15464characters into strings, one may instead use a special bracket notation, 15465which is also used to print strings. A sequence of characters of the form 15466@samp{["@var{XX}"]} within a string or character literal denotes the 15467(single) character whose numeric encoding is @var{XX} in hexadecimal. The 15468sequence of characters @samp{["""]} also denotes a single quotation mark 15469in strings. For example, 15470@smallexample 15471 "One line.["0a"]Next line.["0a"]" 15472@end smallexample 15473@noindent 15474contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF}) 15475after each period. 15476 15477@item 15478The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and 15479@t{'Max} is optional (and is ignored in any case). For example, it is valid 15480to write 15481 15482@smallexample 15483(@value{GDBP}) print 'max(x, y) 15484@end smallexample 15485 15486@item 15487When printing arrays, @value{GDBN} uses positional notation when the 15488array has a lower bound of 1, and uses a modified named notation otherwise. 15489For example, a one-dimensional array of three integers with a lower bound 15490of 3 might print as 15491 15492@smallexample 15493(3 => 10, 17, 1) 15494@end smallexample 15495 15496@noindent 15497That is, in contrast to valid Ada, only the first component has a @code{=>} 15498clause. 15499 15500@item 15501You may abbreviate attributes in expressions with any unique, 15502multi-character subsequence of 15503their names (an exact match gets preference). 15504For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh} 15505in place of @t{a'length}. 15506 15507@item 15508@cindex quoting Ada internal identifiers 15509Since Ada is case-insensitive, the debugger normally maps identifiers you type 15510to lower case. The GNAT compiler uses upper-case characters for 15511some of its internal identifiers, which are normally of no interest to users. 15512For the rare occasions when you actually have to look at them, 15513enclose them in angle brackets to avoid the lower-case mapping. 15514For example, 15515@smallexample 15516(@value{GDBP}) print <JMPBUF_SAVE>[0] 15517@end smallexample 15518 15519@item 15520Printing an object of class-wide type or dereferencing an 15521access-to-class-wide value will display all the components of the object's 15522specific type (as indicated by its run-time tag). Likewise, component 15523selection on such a value will operate on the specific type of the 15524object. 15525 15526@end itemize 15527 15528@node Stopping Before Main Program 15529@subsubsection Stopping at the Very Beginning 15530 15531@cindex breakpointing Ada elaboration code 15532It is sometimes necessary to debug the program during elaboration, and 15533before reaching the main procedure. 15534As defined in the Ada Reference 15535Manual, the elaboration code is invoked from a procedure called 15536@code{adainit}. To run your program up to the beginning of 15537elaboration, simply use the following two commands: 15538@code{tbreak adainit} and @code{run}. 15539 15540@node Ada Exceptions 15541@subsubsection Ada Exceptions 15542 15543A command is provided to list all Ada exceptions: 15544 15545@table @code 15546@kindex info exceptions 15547@item info exceptions 15548@itemx info exceptions @var{regexp} 15549The @code{info exceptions} command allows you to list all Ada exceptions 15550defined within the program being debugged, as well as their addresses. 15551With a regular expression, @var{regexp}, as argument, only those exceptions 15552whose names match @var{regexp} are listed. 15553@end table 15554 15555Below is a small example, showing how the command can be used, first 15556without argument, and next with a regular expression passed as an 15557argument. 15558 15559@smallexample 15560(@value{GDBP}) info exceptions 15561All defined Ada exceptions: 15562constraint_error: 0x613da0 15563program_error: 0x613d20 15564storage_error: 0x613ce0 15565tasking_error: 0x613ca0 15566const.aint_global_e: 0x613b00 15567(@value{GDBP}) info exceptions const.aint 15568All Ada exceptions matching regular expression "const.aint": 15569constraint_error: 0x613da0 15570const.aint_global_e: 0x613b00 15571@end smallexample 15572 15573It is also possible to ask @value{GDBN} to stop your program's execution 15574when an exception is raised. For more details, see @ref{Set Catchpoints}. 15575 15576@node Ada Tasks 15577@subsubsection Extensions for Ada Tasks 15578@cindex Ada, tasking 15579 15580Support for Ada tasks is analogous to that for threads (@pxref{Threads}). 15581@value{GDBN} provides the following task-related commands: 15582 15583@table @code 15584@kindex info tasks 15585@item info tasks 15586This command shows a list of current Ada tasks, as in the following example: 15587 15588 15589@smallexample 15590@iftex 15591@leftskip=0.5cm 15592@end iftex 15593(@value{GDBP}) info tasks 15594 ID TID P-ID Pri State Name 15595 1 8088000 0 15 Child Activation Wait main_task 15596 2 80a4000 1 15 Accept Statement b 15597 3 809a800 1 15 Child Activation Wait a 15598* 4 80ae800 3 15 Runnable c 15599 15600@end smallexample 15601 15602@noindent 15603In this listing, the asterisk before the last task indicates it to be the 15604task currently being inspected. 15605 15606@table @asis 15607@item ID 15608Represents @value{GDBN}'s internal task number. 15609 15610@item TID 15611The Ada task ID. 15612 15613@item P-ID 15614The parent's task ID (@value{GDBN}'s internal task number). 15615 15616@item Pri 15617The base priority of the task. 15618 15619@item State 15620Current state of the task. 15621 15622@table @code 15623@item Unactivated 15624The task has been created but has not been activated. It cannot be 15625executing. 15626 15627@item Runnable 15628The task is not blocked for any reason known to Ada. (It may be waiting 15629for a mutex, though.) It is conceptually "executing" in normal mode. 15630 15631@item Terminated 15632The task is terminated, in the sense of ARM 9.3 (5). Any dependents 15633that were waiting on terminate alternatives have been awakened and have 15634terminated themselves. 15635 15636@item Child Activation Wait 15637The task is waiting for created tasks to complete activation. 15638 15639@item Accept Statement 15640The task is waiting on an accept or selective wait statement. 15641 15642@item Waiting on entry call 15643The task is waiting on an entry call. 15644 15645@item Async Select Wait 15646The task is waiting to start the abortable part of an asynchronous 15647select statement. 15648 15649@item Delay Sleep 15650The task is waiting on a select statement with only a delay 15651alternative open. 15652 15653@item Child Termination Wait 15654The task is sleeping having completed a master within itself, and is 15655waiting for the tasks dependent on that master to become terminated or 15656waiting on a terminate Phase. 15657 15658@item Wait Child in Term Alt 15659The task is sleeping waiting for tasks on terminate alternatives to 15660finish terminating. 15661 15662@item Accepting RV with @var{taskno} 15663The task is accepting a rendez-vous with the task @var{taskno}. 15664@end table 15665 15666@item Name 15667Name of the task in the program. 15668 15669@end table 15670 15671@kindex info task @var{taskno} 15672@item info task @var{taskno} 15673This command shows detailled informations on the specified task, as in 15674the following example: 15675@smallexample 15676@iftex 15677@leftskip=0.5cm 15678@end iftex 15679(@value{GDBP}) info tasks 15680 ID TID P-ID Pri State Name 15681 1 8077880 0 15 Child Activation Wait main_task 15682* 2 807c468 1 15 Runnable task_1 15683(@value{GDBP}) info task 2 15684Ada Task: 0x807c468 15685Name: task_1 15686Thread: 0x807f378 15687Parent: 1 (main_task) 15688Base Priority: 15 15689State: Runnable 15690@end smallexample 15691 15692@item task 15693@kindex task@r{ (Ada)} 15694@cindex current Ada task ID 15695This command prints the ID of the current task. 15696 15697@smallexample 15698@iftex 15699@leftskip=0.5cm 15700@end iftex 15701(@value{GDBP}) info tasks 15702 ID TID P-ID Pri State Name 15703 1 8077870 0 15 Child Activation Wait main_task 15704* 2 807c458 1 15 Runnable t 15705(@value{GDBP}) task 15706[Current task is 2] 15707@end smallexample 15708 15709@item task @var{taskno} 15710@cindex Ada task switching 15711This command is like the @code{thread @var{threadno}} 15712command (@pxref{Threads}). It switches the context of debugging 15713from the current task to the given task. 15714 15715@smallexample 15716@iftex 15717@leftskip=0.5cm 15718@end iftex 15719(@value{GDBP}) info tasks 15720 ID TID P-ID Pri State Name 15721 1 8077870 0 15 Child Activation Wait main_task 15722* 2 807c458 1 15 Runnable t 15723(@value{GDBP}) task 1 15724[Switching to task 1] 15725#0 0x8067726 in pthread_cond_wait () 15726(@value{GDBP}) bt 15727#0 0x8067726 in pthread_cond_wait () 15728#1 0x8056714 in system.os_interface.pthread_cond_wait () 15729#2 0x805cb63 in system.task_primitives.operations.sleep () 15730#3 0x806153e in system.tasking.stages.activate_tasks () 15731#4 0x804aacc in un () at un.adb:5 15732@end smallexample 15733 15734@item break @var{linespec} task @var{taskno} 15735@itemx break @var{linespec} task @var{taskno} if @dots{} 15736@cindex breakpoints and tasks, in Ada 15737@cindex task breakpoints, in Ada 15738@kindex break @dots{} task @var{taskno}@r{ (Ada)} 15739These commands are like the @code{break @dots{} thread @dots{}} 15740command (@pxref{Thread Stops}). The 15741@var{linespec} argument specifies source lines, as described 15742in @ref{Specify Location}. 15743 15744Use the qualifier @samp{task @var{taskno}} with a breakpoint command 15745to specify that you only want @value{GDBN} to stop the program when a 15746particular Ada task reaches this breakpoint. The @var{taskno} is one of the 15747numeric task identifiers assigned by @value{GDBN}, shown in the first 15748column of the @samp{info tasks} display. 15749 15750If you do not specify @samp{task @var{taskno}} when you set a 15751breakpoint, the breakpoint applies to @emph{all} tasks of your 15752program. 15753 15754You can use the @code{task} qualifier on conditional breakpoints as 15755well; in this case, place @samp{task @var{taskno}} before the 15756breakpoint condition (before the @code{if}). 15757 15758For example, 15759 15760@smallexample 15761@iftex 15762@leftskip=0.5cm 15763@end iftex 15764(@value{GDBP}) info tasks 15765 ID TID P-ID Pri State Name 15766 1 140022020 0 15 Child Activation Wait main_task 15767 2 140045060 1 15 Accept/Select Wait t2 15768 3 140044840 1 15 Runnable t1 15769* 4 140056040 1 15 Runnable t3 15770(@value{GDBP}) b 15 task 2 15771Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15. 15772(@value{GDBP}) cont 15773Continuing. 15774task # 1 running 15775task # 2 running 15776 15777Breakpoint 5, test_task_debug () at test_task_debug.adb:15 1577815 flush; 15779(@value{GDBP}) info tasks 15780 ID TID P-ID Pri State Name 15781 1 140022020 0 15 Child Activation Wait main_task 15782* 2 140045060 1 15 Runnable t2 15783 3 140044840 1 15 Runnable t1 15784 4 140056040 1 15 Delay Sleep t3 15785@end smallexample 15786@end table 15787 15788@node Ada Tasks and Core Files 15789@subsubsection Tasking Support when Debugging Core Files 15790@cindex Ada tasking and core file debugging 15791 15792When inspecting a core file, as opposed to debugging a live program, 15793tasking support may be limited or even unavailable, depending on 15794the platform being used. 15795For instance, on x86-linux, the list of tasks is available, but task 15796switching is not supported. 15797 15798On certain platforms, the debugger needs to perform some 15799memory writes in order to provide Ada tasking support. When inspecting 15800a core file, this means that the core file must be opened with read-write 15801privileges, using the command @samp{"set write on"} (@pxref{Patching}). 15802Under these circumstances, you should make a backup copy of the core 15803file before inspecting it with @value{GDBN}. 15804 15805@node Ravenscar Profile 15806@subsubsection Tasking Support when using the Ravenscar Profile 15807@cindex Ravenscar Profile 15808 15809The @dfn{Ravenscar Profile} is a subset of the Ada tasking features, 15810specifically designed for systems with safety-critical real-time 15811requirements. 15812 15813@table @code 15814@kindex set ravenscar task-switching on 15815@cindex task switching with program using Ravenscar Profile 15816@item set ravenscar task-switching on 15817Allows task switching when debugging a program that uses the Ravenscar 15818Profile. This is the default. 15819 15820@kindex set ravenscar task-switching off 15821@item set ravenscar task-switching off 15822Turn off task switching when debugging a program that uses the Ravenscar 15823Profile. This is mostly intended to disable the code that adds support 15824for the Ravenscar Profile, in case a bug in either @value{GDBN} or in 15825the Ravenscar runtime is preventing @value{GDBN} from working properly. 15826To be effective, this command should be run before the program is started. 15827 15828@kindex show ravenscar task-switching 15829@item show ravenscar task-switching 15830Show whether it is possible to switch from task to task in a program 15831using the Ravenscar Profile. 15832 15833@end table 15834 15835@node Ada Glitches 15836@subsubsection Known Peculiarities of Ada Mode 15837@cindex Ada, problems 15838 15839Besides the omissions listed previously (@pxref{Omissions from Ada}), 15840we know of several problems with and limitations of Ada mode in 15841@value{GDBN}, 15842some of which will be fixed with planned future releases of the debugger 15843and the GNU Ada compiler. 15844 15845@itemize @bullet 15846@item 15847Static constants that the compiler chooses not to materialize as objects in 15848storage are invisible to the debugger. 15849 15850@item 15851Named parameter associations in function argument lists are ignored (the 15852argument lists are treated as positional). 15853 15854@item 15855Many useful library packages are currently invisible to the debugger. 15856 15857@item 15858Fixed-point arithmetic, conversions, input, and output is carried out using 15859floating-point arithmetic, and may give results that only approximate those on 15860the host machine. 15861 15862@item 15863The GNAT compiler never generates the prefix @code{Standard} for any of 15864the standard symbols defined by the Ada language. @value{GDBN} knows about 15865this: it will strip the prefix from names when you use it, and will never 15866look for a name you have so qualified among local symbols, nor match against 15867symbols in other packages or subprograms. If you have 15868defined entities anywhere in your program other than parameters and 15869local variables whose simple names match names in @code{Standard}, 15870GNAT's lack of qualification here can cause confusion. When this happens, 15871you can usually resolve the confusion 15872by qualifying the problematic names with package 15873@code{Standard} explicitly. 15874@end itemize 15875 15876Older versions of the compiler sometimes generate erroneous debugging 15877information, resulting in the debugger incorrectly printing the value 15878of affected entities. In some cases, the debugger is able to work 15879around an issue automatically. In other cases, the debugger is able 15880to work around the issue, but the work-around has to be specifically 15881enabled. 15882 15883@kindex set ada trust-PAD-over-XVS 15884@kindex show ada trust-PAD-over-XVS 15885@table @code 15886 15887@item set ada trust-PAD-over-XVS on 15888Configure GDB to strictly follow the GNAT encoding when computing the 15889value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS} 15890types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for 15891a complete description of the encoding used by the GNAT compiler). 15892This is the default. 15893 15894@item set ada trust-PAD-over-XVS off 15895This is related to the encoding using by the GNAT compiler. If @value{GDBN} 15896sometimes prints the wrong value for certain entities, changing @code{ada 15897trust-PAD-over-XVS} to @code{off} activates a work-around which may fix 15898the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to 15899@code{off}, but this incurs a slight performance penalty, so it is 15900recommended to leave this setting to @code{on} unless necessary. 15901 15902@end table 15903 15904@cindex GNAT descriptive types 15905@cindex GNAT encoding 15906Internally, the debugger also relies on the compiler following a number 15907of conventions known as the @samp{GNAT Encoding}, all documented in 15908@file{gcc/ada/exp_dbug.ads} in the GCC sources. This encoding describes 15909how the debugging information should be generated for certain types. 15910In particular, this convention makes use of @dfn{descriptive types}, 15911which are artificial types generated purely to help the debugger. 15912 15913These encodings were defined at a time when the debugging information 15914format used was not powerful enough to describe some of the more complex 15915types available in Ada. Since DWARF allows us to express nearly all 15916Ada features, the long-term goal is to slowly replace these descriptive 15917types by their pure DWARF equivalent. To facilitate that transition, 15918a new maintenance option is available to force the debugger to ignore 15919those descriptive types. It allows the user to quickly evaluate how 15920well @value{GDBN} works without them. 15921 15922@table @code 15923 15924@kindex maint ada set ignore-descriptive-types 15925@item maintenance ada set ignore-descriptive-types [on|off] 15926Control whether the debugger should ignore descriptive types. 15927The default is not to ignore descriptives types (@code{off}). 15928 15929@kindex maint ada show ignore-descriptive-types 15930@item maintenance ada show ignore-descriptive-types 15931Show if descriptive types are ignored by @value{GDBN}. 15932 15933@end table 15934 15935@node Unsupported Languages 15936@section Unsupported Languages 15937 15938@cindex unsupported languages 15939@cindex minimal language 15940In addition to the other fully-supported programming languages, 15941@value{GDBN} also provides a pseudo-language, called @code{minimal}. 15942It does not represent a real programming language, but provides a set 15943of capabilities close to what the C or assembly languages provide. 15944This should allow most simple operations to be performed while debugging 15945an application that uses a language currently not supported by @value{GDBN}. 15946 15947If the language is set to @code{auto}, @value{GDBN} will automatically 15948select this language if the current frame corresponds to an unsupported 15949language. 15950 15951@node Symbols 15952@chapter Examining the Symbol Table 15953 15954The commands described in this chapter allow you to inquire about the 15955symbols (names of variables, functions and types) defined in your 15956program. This information is inherent in the text of your program and 15957does not change as your program executes. @value{GDBN} finds it in your 15958program's symbol table, in the file indicated when you started @value{GDBN} 15959(@pxref{File Options, ,Choosing Files}), or by one of the 15960file-management commands (@pxref{Files, ,Commands to Specify Files}). 15961 15962@cindex symbol names 15963@cindex names of symbols 15964@cindex quoting names 15965Occasionally, you may need to refer to symbols that contain unusual 15966characters, which @value{GDBN} ordinarily treats as word delimiters. The 15967most frequent case is in referring to static variables in other 15968source files (@pxref{Variables,,Program Variables}). File names 15969are recorded in object files as debugging symbols, but @value{GDBN} would 15970ordinarily parse a typical file name, like @file{foo.c}, as the three words 15971@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize 15972@samp{foo.c} as a single symbol, enclose it in single quotes; for example, 15973 15974@smallexample 15975p 'foo.c'::x 15976@end smallexample 15977 15978@noindent 15979looks up the value of @code{x} in the scope of the file @file{foo.c}. 15980 15981@table @code 15982@cindex case-insensitive symbol names 15983@cindex case sensitivity in symbol names 15984@kindex set case-sensitive 15985@item set case-sensitive on 15986@itemx set case-sensitive off 15987@itemx set case-sensitive auto 15988Normally, when @value{GDBN} looks up symbols, it matches their names 15989with case sensitivity determined by the current source language. 15990Occasionally, you may wish to control that. The command @code{set 15991case-sensitive} lets you do that by specifying @code{on} for 15992case-sensitive matches or @code{off} for case-insensitive ones. If 15993you specify @code{auto}, case sensitivity is reset to the default 15994suitable for the source language. The default is case-sensitive 15995matches for all languages except for Fortran, for which the default is 15996case-insensitive matches. 15997 15998@kindex show case-sensitive 15999@item show case-sensitive 16000This command shows the current setting of case sensitivity for symbols 16001lookups. 16002 16003@kindex set print type methods 16004@item set print type methods 16005@itemx set print type methods on 16006@itemx set print type methods off 16007Normally, when @value{GDBN} prints a class, it displays any methods 16008declared in that class. You can control this behavior either by 16009passing the appropriate flag to @code{ptype}, or using @command{set 16010print type methods}. Specifying @code{on} will cause @value{GDBN} to 16011display the methods; this is the default. Specifying @code{off} will 16012cause @value{GDBN} to omit the methods. 16013 16014@kindex show print type methods 16015@item show print type methods 16016This command shows the current setting of method display when printing 16017classes. 16018 16019@kindex set print type typedefs 16020@item set print type typedefs 16021@itemx set print type typedefs on 16022@itemx set print type typedefs off 16023 16024Normally, when @value{GDBN} prints a class, it displays any typedefs 16025defined in that class. You can control this behavior either by 16026passing the appropriate flag to @code{ptype}, or using @command{set 16027print type typedefs}. Specifying @code{on} will cause @value{GDBN} to 16028display the typedef definitions; this is the default. Specifying 16029@code{off} will cause @value{GDBN} to omit the typedef definitions. 16030Note that this controls whether the typedef definition itself is 16031printed, not whether typedef names are substituted when printing other 16032types. 16033 16034@kindex show print type typedefs 16035@item show print type typedefs 16036This command shows the current setting of typedef display when 16037printing classes. 16038 16039@kindex info address 16040@cindex address of a symbol 16041@item info address @var{symbol} 16042Describe where the data for @var{symbol} is stored. For a register 16043variable, this says which register it is kept in. For a non-register 16044local variable, this prints the stack-frame offset at which the variable 16045is always stored. 16046 16047Note the contrast with @samp{print &@var{symbol}}, which does not work 16048at all for a register variable, and for a stack local variable prints 16049the exact address of the current instantiation of the variable. 16050 16051@kindex info symbol 16052@cindex symbol from address 16053@cindex closest symbol and offset for an address 16054@item info symbol @var{addr} 16055Print the name of a symbol which is stored at the address @var{addr}. 16056If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the 16057nearest symbol and an offset from it: 16058 16059@smallexample 16060(@value{GDBP}) info symbol 0x54320 16061_initialize_vx + 396 in section .text 16062@end smallexample 16063 16064@noindent 16065This is the opposite of the @code{info address} command. You can use 16066it to find out the name of a variable or a function given its address. 16067 16068For dynamically linked executables, the name of executable or shared 16069library containing the symbol is also printed: 16070 16071@smallexample 16072(@value{GDBP}) info symbol 0x400225 16073_start + 5 in section .text of /tmp/a.out 16074(@value{GDBP}) info symbol 0x2aaaac2811cf 16075__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6 16076@end smallexample 16077 16078@kindex demangle 16079@cindex demangle 16080@item demangle @r{[}-l @var{language}@r{]} @r{[}@var{--}@r{]} @var{name} 16081Demangle @var{name}. 16082If @var{language} is provided it is the name of the language to demangle 16083@var{name} in. Otherwise @var{name} is demangled in the current language. 16084 16085The @samp{--} option specifies the end of options, 16086and is useful when @var{name} begins with a dash. 16087 16088The parameter @code{demangle-style} specifies how to interpret the kind 16089of mangling used. @xref{Print Settings}. 16090 16091@kindex whatis 16092@item whatis[/@var{flags}] [@var{arg}] 16093Print the data type of @var{arg}, which can be either an expression 16094or a name of a data type. With no argument, print the data type of 16095@code{$}, the last value in the value history. 16096 16097If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it 16098is not actually evaluated, and any side-effecting operations (such as 16099assignments or function calls) inside it do not take place. 16100 16101If @var{arg} is a variable or an expression, @code{whatis} prints its 16102literal type as it is used in the source code. If the type was 16103defined using a @code{typedef}, @code{whatis} will @emph{not} print 16104the data type underlying the @code{typedef}. If the type of the 16105variable or the expression is a compound data type, such as 16106@code{struct} or @code{class}, @code{whatis} never prints their 16107fields or methods. It just prints the @code{struct}/@code{class} 16108name (a.k.a.@: its @dfn{tag}). If you want to see the members of 16109such a compound data type, use @code{ptype}. 16110 16111If @var{arg} is a type name that was defined using @code{typedef}, 16112@code{whatis} @dfn{unrolls} only one level of that @code{typedef}. 16113Unrolling means that @code{whatis} will show the underlying type used 16114in the @code{typedef} declaration of @var{arg}. However, if that 16115underlying type is also a @code{typedef}, @code{whatis} will not 16116unroll it. 16117 16118For C code, the type names may also have the form @samp{class 16119@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union 16120@var{union-tag}} or @samp{enum @var{enum-tag}}. 16121 16122@var{flags} can be used to modify how the type is displayed. 16123Available flags are: 16124 16125@table @code 16126@item r 16127Display in ``raw'' form. Normally, @value{GDBN} substitutes template 16128parameters and typedefs defined in a class when printing the class' 16129members. The @code{/r} flag disables this. 16130 16131@item m 16132Do not print methods defined in the class. 16133 16134@item M 16135Print methods defined in the class. This is the default, but the flag 16136exists in case you change the default with @command{set print type methods}. 16137 16138@item t 16139Do not print typedefs defined in the class. Note that this controls 16140whether the typedef definition itself is printed, not whether typedef 16141names are substituted when printing other types. 16142 16143@item T 16144Print typedefs defined in the class. This is the default, but the flag 16145exists in case you change the default with @command{set print type typedefs}. 16146@end table 16147 16148@kindex ptype 16149@item ptype[/@var{flags}] [@var{arg}] 16150@code{ptype} accepts the same arguments as @code{whatis}, but prints a 16151detailed description of the type, instead of just the name of the type. 16152@xref{Expressions, ,Expressions}. 16153 16154Contrary to @code{whatis}, @code{ptype} always unrolls any 16155@code{typedef}s in its argument declaration, whether the argument is 16156a variable, expression, or a data type. This means that @code{ptype} 16157of a variable or an expression will not print literally its type as 16158present in the source code---use @code{whatis} for that. @code{typedef}s at 16159the pointer or reference targets are also unrolled. Only @code{typedef}s of 16160fields, methods and inner @code{class typedef}s of @code{struct}s, 16161@code{class}es and @code{union}s are not unrolled even with @code{ptype}. 16162 16163For example, for this variable declaration: 16164 16165@smallexample 16166typedef double real_t; 16167struct complex @{ real_t real; double imag; @}; 16168typedef struct complex complex_t; 16169complex_t var; 16170real_t *real_pointer_var; 16171@end smallexample 16172 16173@noindent 16174the two commands give this output: 16175 16176@smallexample 16177@group 16178(@value{GDBP}) whatis var 16179type = complex_t 16180(@value{GDBP}) ptype var 16181type = struct complex @{ 16182 real_t real; 16183 double imag; 16184@} 16185(@value{GDBP}) whatis complex_t 16186type = struct complex 16187(@value{GDBP}) whatis struct complex 16188type = struct complex 16189(@value{GDBP}) ptype struct complex 16190type = struct complex @{ 16191 real_t real; 16192 double imag; 16193@} 16194(@value{GDBP}) whatis real_pointer_var 16195type = real_t * 16196(@value{GDBP}) ptype real_pointer_var 16197type = double * 16198@end group 16199@end smallexample 16200 16201@noindent 16202As with @code{whatis}, using @code{ptype} without an argument refers to 16203the type of @code{$}, the last value in the value history. 16204 16205@cindex incomplete type 16206Sometimes, programs use opaque data types or incomplete specifications 16207of complex data structure. If the debug information included in the 16208program does not allow @value{GDBN} to display a full declaration of 16209the data type, it will say @samp{<incomplete type>}. For example, 16210given these declarations: 16211 16212@smallexample 16213 struct foo; 16214 struct foo *fooptr; 16215@end smallexample 16216 16217@noindent 16218but no definition for @code{struct foo} itself, @value{GDBN} will say: 16219 16220@smallexample 16221 (@value{GDBP}) ptype foo 16222 $1 = <incomplete type> 16223@end smallexample 16224 16225@noindent 16226``Incomplete type'' is C terminology for data types that are not 16227completely specified. 16228 16229@kindex info types 16230@item info types @var{regexp} 16231@itemx info types 16232Print a brief description of all types whose names match the regular 16233expression @var{regexp} (or all types in your program, if you supply 16234no argument). Each complete typename is matched as though it were a 16235complete line; thus, @samp{i type value} gives information on all 16236types in your program whose names include the string @code{value}, but 16237@samp{i type ^value$} gives information only on types whose complete 16238name is @code{value}. 16239 16240This command differs from @code{ptype} in two ways: first, like 16241@code{whatis}, it does not print a detailed description; second, it 16242lists all source files where a type is defined. 16243 16244@kindex info type-printers 16245@item info type-printers 16246Versions of @value{GDBN} that ship with Python scripting enabled may 16247have ``type printers'' available. When using @command{ptype} or 16248@command{whatis}, these printers are consulted when the name of a type 16249is needed. @xref{Type Printing API}, for more information on writing 16250type printers. 16251 16252@code{info type-printers} displays all the available type printers. 16253 16254@kindex enable type-printer 16255@kindex disable type-printer 16256@item enable type-printer @var{name}@dots{} 16257@item disable type-printer @var{name}@dots{} 16258These commands can be used to enable or disable type printers. 16259 16260@kindex info scope 16261@cindex local variables 16262@item info scope @var{location} 16263List all the variables local to a particular scope. This command 16264accepts a @var{location} argument---a function name, a source line, or 16265an address preceded by a @samp{*}, and prints all the variables local 16266to the scope defined by that location. (@xref{Specify Location}, for 16267details about supported forms of @var{location}.) For example: 16268 16269@smallexample 16270(@value{GDBP}) @b{info scope command_line_handler} 16271Scope for command_line_handler: 16272Symbol rl is an argument at stack/frame offset 8, length 4. 16273Symbol linebuffer is in static storage at address 0x150a18, length 4. 16274Symbol linelength is in static storage at address 0x150a1c, length 4. 16275Symbol p is a local variable in register $esi, length 4. 16276Symbol p1 is a local variable in register $ebx, length 4. 16277Symbol nline is a local variable in register $edx, length 4. 16278Symbol repeat is a local variable at frame offset -8, length 4. 16279@end smallexample 16280 16281@noindent 16282This command is especially useful for determining what data to collect 16283during a @dfn{trace experiment}, see @ref{Tracepoint Actions, 16284collect}. 16285 16286@kindex info source 16287@item info source 16288Show information about the current source file---that is, the source file for 16289the function containing the current point of execution: 16290@itemize @bullet 16291@item 16292the name of the source file, and the directory containing it, 16293@item 16294the directory it was compiled in, 16295@item 16296its length, in lines, 16297@item 16298which programming language it is written in, 16299@item 16300whether the executable includes debugging information for that file, and 16301if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and 16302@item 16303whether the debugging information includes information about 16304preprocessor macros. 16305@end itemize 16306 16307 16308@kindex info sources 16309@item info sources 16310Print the names of all source files in your program for which there is 16311debugging information, organized into two lists: files whose symbols 16312have already been read, and files whose symbols will be read when needed. 16313 16314@kindex info functions 16315@item info functions 16316Print the names and data types of all defined functions. 16317 16318@item info functions @var{regexp} 16319Print the names and data types of all defined functions 16320whose names contain a match for regular expression @var{regexp}. 16321Thus, @samp{info fun step} finds all functions whose names 16322include @code{step}; @samp{info fun ^step} finds those whose names 16323start with @code{step}. If a function name contains characters 16324that conflict with the regular expression language (e.g.@: 16325@samp{operator*()}), they may be quoted with a backslash. 16326 16327@kindex info variables 16328@item info variables 16329Print the names and data types of all variables that are defined 16330outside of functions (i.e.@: excluding local variables). 16331 16332@item info variables @var{regexp} 16333Print the names and data types of all variables (except for local 16334variables) whose names contain a match for regular expression 16335@var{regexp}. 16336 16337@kindex info classes 16338@cindex Objective-C, classes and selectors 16339@item info classes 16340@itemx info classes @var{regexp} 16341Display all Objective-C classes in your program, or 16342(with the @var{regexp} argument) all those matching a particular regular 16343expression. 16344 16345@kindex info selectors 16346@item info selectors 16347@itemx info selectors @var{regexp} 16348Display all Objective-C selectors in your program, or 16349(with the @var{regexp} argument) all those matching a particular regular 16350expression. 16351 16352@ignore 16353This was never implemented. 16354@kindex info methods 16355@item info methods 16356@itemx info methods @var{regexp} 16357The @code{info methods} command permits the user to examine all defined 16358methods within C@t{++} program, or (with the @var{regexp} argument) a 16359specific set of methods found in the various C@t{++} classes. Many 16360C@t{++} classes provide a large number of methods. Thus, the output 16361from the @code{ptype} command can be overwhelming and hard to use. The 16362@code{info-methods} command filters the methods, printing only those 16363which match the regular-expression @var{regexp}. 16364@end ignore 16365 16366@cindex opaque data types 16367@kindex set opaque-type-resolution 16368@item set opaque-type-resolution on 16369Tell @value{GDBN} to resolve opaque types. An opaque type is a type 16370declared as a pointer to a @code{struct}, @code{class}, or 16371@code{union}---for example, @code{struct MyType *}---that is used in one 16372source file although the full declaration of @code{struct MyType} is in 16373another source file. The default is on. 16374 16375A change in the setting of this subcommand will not take effect until 16376the next time symbols for a file are loaded. 16377 16378@item set opaque-type-resolution off 16379Tell @value{GDBN} not to resolve opaque types. In this case, the type 16380is printed as follows: 16381@smallexample 16382@{<no data fields>@} 16383@end smallexample 16384 16385@kindex show opaque-type-resolution 16386@item show opaque-type-resolution 16387Show whether opaque types are resolved or not. 16388 16389@kindex set print symbol-loading 16390@cindex print messages when symbols are loaded 16391@item set print symbol-loading 16392@itemx set print symbol-loading full 16393@itemx set print symbol-loading brief 16394@itemx set print symbol-loading off 16395The @code{set print symbol-loading} command allows you to control the 16396printing of messages when @value{GDBN} loads symbol information. 16397By default a message is printed for the executable and one for each 16398shared library, and normally this is what you want. However, when 16399debugging apps with large numbers of shared libraries these messages 16400can be annoying. 16401When set to @code{brief} a message is printed for each executable, 16402and when @value{GDBN} loads a collection of shared libraries at once 16403it will only print one message regardless of the number of shared 16404libraries. When set to @code{off} no messages are printed. 16405 16406@kindex show print symbol-loading 16407@item show print symbol-loading 16408Show whether messages will be printed when a @value{GDBN} command 16409entered from the keyboard causes symbol information to be loaded. 16410 16411@kindex maint print symbols 16412@cindex symbol dump 16413@kindex maint print psymbols 16414@cindex partial symbol dump 16415@kindex maint print msymbols 16416@cindex minimal symbol dump 16417@item maint print symbols @var{filename} 16418@itemx maint print psymbols @var{filename} 16419@itemx maint print msymbols @var{filename} 16420Write a dump of debugging symbol data into the file @var{filename}. 16421These commands are used to debug the @value{GDBN} symbol-reading code. Only 16422symbols with debugging data are included. If you use @samp{maint print 16423symbols}, @value{GDBN} includes all the symbols for which it has already 16424collected full details: that is, @var{filename} reflects symbols for 16425only those files whose symbols @value{GDBN} has read. You can use the 16426command @code{info sources} to find out which files these are. If you 16427use @samp{maint print psymbols} instead, the dump shows information about 16428symbols that @value{GDBN} only knows partially---that is, symbols defined in 16429files that @value{GDBN} has skimmed, but not yet read completely. Finally, 16430@samp{maint print msymbols} dumps just the minimal symbol information 16431required for each object file from which @value{GDBN} has read some symbols. 16432@xref{Files, ,Commands to Specify Files}, for a discussion of how 16433@value{GDBN} reads symbols (in the description of @code{symbol-file}). 16434 16435@kindex maint info symtabs 16436@kindex maint info psymtabs 16437@cindex listing @value{GDBN}'s internal symbol tables 16438@cindex symbol tables, listing @value{GDBN}'s internal 16439@cindex full symbol tables, listing @value{GDBN}'s internal 16440@cindex partial symbol tables, listing @value{GDBN}'s internal 16441@item maint info symtabs @r{[} @var{regexp} @r{]} 16442@itemx maint info psymtabs @r{[} @var{regexp} @r{]} 16443 16444List the @code{struct symtab} or @code{struct partial_symtab} 16445structures whose names match @var{regexp}. If @var{regexp} is not 16446given, list them all. The output includes expressions which you can 16447copy into a @value{GDBN} debugging this one to examine a particular 16448structure in more detail. For example: 16449 16450@smallexample 16451(@value{GDBP}) maint info psymtabs dwarf2read 16452@{ objfile /home/gnu/build/gdb/gdb 16453 ((struct objfile *) 0x82e69d0) 16454 @{ psymtab /home/gnu/src/gdb/dwarf2read.c 16455 ((struct partial_symtab *) 0x8474b10) 16456 readin no 16457 fullname (null) 16458 text addresses 0x814d3c8 -- 0x8158074 16459 globals (* (struct partial_symbol **) 0x8507a08 @@ 9) 16460 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882) 16461 dependencies (none) 16462 @} 16463@} 16464(@value{GDBP}) maint info symtabs 16465(@value{GDBP}) 16466@end smallexample 16467@noindent 16468We see that there is one partial symbol table whose filename contains 16469the string @samp{dwarf2read}, belonging to the @samp{gdb} executable; 16470and we see that @value{GDBN} has not read in any symtabs yet at all. 16471If we set a breakpoint on a function, that will cause @value{GDBN} to 16472read the symtab for the compilation unit containing that function: 16473 16474@smallexample 16475(@value{GDBP}) break dwarf2_psymtab_to_symtab 16476Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c, 16477line 1574. 16478(@value{GDBP}) maint info symtabs 16479@{ objfile /home/gnu/build/gdb/gdb 16480 ((struct objfile *) 0x82e69d0) 16481 @{ symtab /home/gnu/src/gdb/dwarf2read.c 16482 ((struct symtab *) 0x86c1f38) 16483 dirname (null) 16484 fullname (null) 16485 blockvector ((struct blockvector *) 0x86c1bd0) (primary) 16486 linetable ((struct linetable *) 0x8370fa0) 16487 debugformat DWARF 2 16488 @} 16489@} 16490(@value{GDBP}) 16491@end smallexample 16492@end table 16493 16494 16495@node Altering 16496@chapter Altering Execution 16497 16498Once you think you have found an error in your program, you might want to 16499find out for certain whether correcting the apparent error would lead to 16500correct results in the rest of the run. You can find the answer by 16501experiment, using the @value{GDBN} features for altering execution of the 16502program. 16503 16504For example, you can store new values into variables or memory 16505locations, give your program a signal, restart it at a different 16506address, or even return prematurely from a function. 16507 16508@menu 16509* Assignment:: Assignment to variables 16510* Jumping:: Continuing at a different address 16511* Signaling:: Giving your program a signal 16512* Returning:: Returning from a function 16513* Calling:: Calling your program's functions 16514* Patching:: Patching your program 16515* Compiling and Injecting Code:: Compiling and injecting code in @value{GDBN} 16516@end menu 16517 16518@node Assignment 16519@section Assignment to Variables 16520 16521@cindex assignment 16522@cindex setting variables 16523To alter the value of a variable, evaluate an assignment expression. 16524@xref{Expressions, ,Expressions}. For example, 16525 16526@smallexample 16527print x=4 16528@end smallexample 16529 16530@noindent 16531stores the value 4 into the variable @code{x}, and then prints the 16532value of the assignment expression (which is 4). 16533@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more 16534information on operators in supported languages. 16535 16536@kindex set variable 16537@cindex variables, setting 16538If you are not interested in seeing the value of the assignment, use the 16539@code{set} command instead of the @code{print} command. @code{set} is 16540really the same as @code{print} except that the expression's value is 16541not printed and is not put in the value history (@pxref{Value History, 16542,Value History}). The expression is evaluated only for its effects. 16543 16544If the beginning of the argument string of the @code{set} command 16545appears identical to a @code{set} subcommand, use the @code{set 16546variable} command instead of just @code{set}. This command is identical 16547to @code{set} except for its lack of subcommands. For example, if your 16548program has a variable @code{width}, you get an error if you try to set 16549a new value with just @samp{set width=13}, because @value{GDBN} has the 16550command @code{set width}: 16551 16552@smallexample 16553(@value{GDBP}) whatis width 16554type = double 16555(@value{GDBP}) p width 16556$4 = 13 16557(@value{GDBP}) set width=47 16558Invalid syntax in expression. 16559@end smallexample 16560 16561@noindent 16562The invalid expression, of course, is @samp{=47}. In 16563order to actually set the program's variable @code{width}, use 16564 16565@smallexample 16566(@value{GDBP}) set var width=47 16567@end smallexample 16568 16569Because the @code{set} command has many subcommands that can conflict 16570with the names of program variables, it is a good idea to use the 16571@code{set variable} command instead of just @code{set}. For example, if 16572your program has a variable @code{g}, you run into problems if you try 16573to set a new value with just @samp{set g=4}, because @value{GDBN} has 16574the command @code{set gnutarget}, abbreviated @code{set g}: 16575 16576@smallexample 16577@group 16578(@value{GDBP}) whatis g 16579type = double 16580(@value{GDBP}) p g 16581$1 = 1 16582(@value{GDBP}) set g=4 16583(@value{GDBP}) p g 16584$2 = 1 16585(@value{GDBP}) r 16586The program being debugged has been started already. 16587Start it from the beginning? (y or n) y 16588Starting program: /home/smith/cc_progs/a.out 16589"/home/smith/cc_progs/a.out": can't open to read symbols: 16590 Invalid bfd target. 16591(@value{GDBP}) show g 16592The current BFD target is "=4". 16593@end group 16594@end smallexample 16595 16596@noindent 16597The program variable @code{g} did not change, and you silently set the 16598@code{gnutarget} to an invalid value. In order to set the variable 16599@code{g}, use 16600 16601@smallexample 16602(@value{GDBP}) set var g=4 16603@end smallexample 16604 16605@value{GDBN} allows more implicit conversions in assignments than C; you can 16606freely store an integer value into a pointer variable or vice versa, 16607and you can convert any structure to any other structure that is the 16608same length or shorter. 16609@comment FIXME: how do structs align/pad in these conversions? 16610@comment /doc@cygnus.com 18dec1990 16611 16612To store values into arbitrary places in memory, use the @samp{@{@dots{}@}} 16613construct to generate a value of specified type at a specified address 16614(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers 16615to memory location @code{0x83040} as an integer (which implies a certain size 16616and representation in memory), and 16617 16618@smallexample 16619set @{int@}0x83040 = 4 16620@end smallexample 16621 16622@noindent 16623stores the value 4 into that memory location. 16624 16625@node Jumping 16626@section Continuing at a Different Address 16627 16628Ordinarily, when you continue your program, you do so at the place where 16629it stopped, with the @code{continue} command. You can instead continue at 16630an address of your own choosing, with the following commands: 16631 16632@table @code 16633@kindex jump 16634@kindex j @r{(@code{jump})} 16635@item jump @var{linespec} 16636@itemx j @var{linespec} 16637@itemx jump @var{location} 16638@itemx j @var{location} 16639Resume execution at line @var{linespec} or at address given by 16640@var{location}. Execution stops again immediately if there is a 16641breakpoint there. @xref{Specify Location}, for a description of the 16642different forms of @var{linespec} and @var{location}. It is common 16643practice to use the @code{tbreak} command in conjunction with 16644@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}. 16645 16646The @code{jump} command does not change the current stack frame, or 16647the stack pointer, or the contents of any memory location or any 16648register other than the program counter. If line @var{linespec} is in 16649a different function from the one currently executing, the results may 16650be bizarre if the two functions expect different patterns of arguments or 16651of local variables. For this reason, the @code{jump} command requests 16652confirmation if the specified line is not in the function currently 16653executing. However, even bizarre results are predictable if you are 16654well acquainted with the machine-language code of your program. 16655@end table 16656 16657@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt. 16658On many systems, you can get much the same effect as the @code{jump} 16659command by storing a new value into the register @code{$pc}. The 16660difference is that this does not start your program running; it only 16661changes the address of where it @emph{will} run when you continue. For 16662example, 16663 16664@smallexample 16665set $pc = 0x485 16666@end smallexample 16667 16668@noindent 16669makes the next @code{continue} command or stepping command execute at 16670address @code{0x485}, rather than at the address where your program stopped. 16671@xref{Continuing and Stepping, ,Continuing and Stepping}. 16672 16673The most common occasion to use the @code{jump} command is to back 16674up---perhaps with more breakpoints set---over a portion of a program 16675that has already executed, in order to examine its execution in more 16676detail. 16677 16678@c @group 16679@node Signaling 16680@section Giving your Program a Signal 16681@cindex deliver a signal to a program 16682 16683@table @code 16684@kindex signal 16685@item signal @var{signal} 16686Resume execution where your program is stopped, but immediately give it the 16687signal @var{signal}. The @var{signal} can be the name or the number of a 16688signal. For example, on many systems @code{signal 2} and @code{signal 16689SIGINT} are both ways of sending an interrupt signal. 16690 16691Alternatively, if @var{signal} is zero, continue execution without 16692giving a signal. This is useful when your program stopped on account of 16693a signal and would ordinarily see the signal when resumed with the 16694@code{continue} command; @samp{signal 0} causes it to resume without a 16695signal. 16696 16697@emph{Note:} When resuming a multi-threaded program, @var{signal} is 16698delivered to the currently selected thread, not the thread that last 16699reported a stop. This includes the situation where a thread was 16700stopped due to a signal. So if you want to continue execution 16701suppressing the signal that stopped a thread, you should select that 16702same thread before issuing the @samp{signal 0} command. If you issue 16703the @samp{signal 0} command with another thread as the selected one, 16704@value{GDBN} detects that and asks for confirmation. 16705 16706Invoking the @code{signal} command is not the same as invoking the 16707@code{kill} utility from the shell. Sending a signal with @code{kill} 16708causes @value{GDBN} to decide what to do with the signal depending on 16709the signal handling tables (@pxref{Signals}). The @code{signal} command 16710passes the signal directly to your program. 16711 16712@code{signal} does not repeat when you press @key{RET} a second time 16713after executing the command. 16714 16715@kindex queue-signal 16716@item queue-signal @var{signal} 16717Queue @var{signal} to be delivered immediately to the current thread 16718when execution of the thread resumes. The @var{signal} can be the name or 16719the number of a signal. For example, on many systems @code{signal 2} and 16720@code{signal SIGINT} are both ways of sending an interrupt signal. 16721The handling of the signal must be set to pass the signal to the program, 16722otherwise @value{GDBN} will report an error. 16723You can control the handling of signals from @value{GDBN} with the 16724@code{handle} command (@pxref{Signals}). 16725 16726Alternatively, if @var{signal} is zero, any currently queued signal 16727for the current thread is discarded and when execution resumes no signal 16728will be delivered. This is useful when your program stopped on account 16729of a signal and would ordinarily see the signal when resumed with the 16730@code{continue} command. 16731 16732This command differs from the @code{signal} command in that the signal 16733is just queued, execution is not resumed. And @code{queue-signal} cannot 16734be used to pass a signal whose handling state has been set to @code{nopass} 16735(@pxref{Signals}). 16736@end table 16737@c @end group 16738 16739@xref{stepping into signal handlers}, for information on how stepping 16740commands behave when the thread has a signal queued. 16741 16742@node Returning 16743@section Returning from a Function 16744 16745@table @code 16746@cindex returning from a function 16747@kindex return 16748@item return 16749@itemx return @var{expression} 16750You can cancel execution of a function call with the @code{return} 16751command. If you give an 16752@var{expression} argument, its value is used as the function's return 16753value. 16754@end table 16755 16756When you use @code{return}, @value{GDBN} discards the selected stack frame 16757(and all frames within it). You can think of this as making the 16758discarded frame return prematurely. If you wish to specify a value to 16759be returned, give that value as the argument to @code{return}. 16760 16761This pops the selected stack frame (@pxref{Selection, ,Selecting a 16762Frame}), and any other frames inside of it, leaving its caller as the 16763innermost remaining frame. That frame becomes selected. The 16764specified value is stored in the registers used for returning values 16765of functions. 16766 16767The @code{return} command does not resume execution; it leaves the 16768program stopped in the state that would exist if the function had just 16769returned. In contrast, the @code{finish} command (@pxref{Continuing 16770and Stepping, ,Continuing and Stepping}) resumes execution until the 16771selected stack frame returns naturally. 16772 16773@value{GDBN} needs to know how the @var{expression} argument should be set for 16774the inferior. The concrete registers assignment depends on the OS ABI and the 16775type being returned by the selected stack frame. For example it is common for 16776OS ABI to return floating point values in FPU registers while integer values in 16777CPU registers. Still some ABIs return even floating point values in CPU 16778registers. Larger integer widths (such as @code{long long int}) also have 16779specific placement rules. @value{GDBN} already knows the OS ABI from its 16780current target so it needs to find out also the type being returned to make the 16781assignment into the right register(s). 16782 16783Normally, the selected stack frame has debug info. @value{GDBN} will always 16784use the debug info instead of the implicit type of @var{expression} when the 16785debug info is available. For example, if you type @kbd{return -1}, and the 16786function in the current stack frame is declared to return a @code{long long 16787int}, @value{GDBN} transparently converts the implicit @code{int} value of -1 16788into a @code{long long int}: 16789 16790@smallexample 16791Breakpoint 1, func () at gdb.base/return-nodebug.c:29 1679229 return 31; 16793(@value{GDBP}) return -1 16794Make func return now? (y or n) y 16795#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43 1679643 printf ("result=%lld\n", func ()); 16797(@value{GDBP}) 16798@end smallexample 16799 16800However, if the selected stack frame does not have a debug info, e.g., if the 16801function was compiled without debug info, @value{GDBN} has to find out the type 16802to return from user. Specifying a different type by mistake may set the value 16803in different inferior registers than the caller code expects. For example, 16804typing @kbd{return -1} with its implicit type @code{int} would set only a part 16805of a @code{long long int} result for a debug info less function (on 32-bit 16806architectures). Therefore the user is required to specify the return type by 16807an appropriate cast explicitly: 16808 16809@smallexample 16810Breakpoint 2, 0x0040050b in func () 16811(@value{GDBP}) return -1 16812Return value type not available for selected stack frame. 16813Please use an explicit cast of the value to return. 16814(@value{GDBP}) return (long long int) -1 16815Make selected stack frame return now? (y or n) y 16816#0 0x00400526 in main () 16817(@value{GDBP}) 16818@end smallexample 16819 16820@node Calling 16821@section Calling Program Functions 16822 16823@table @code 16824@cindex calling functions 16825@cindex inferior functions, calling 16826@item print @var{expr} 16827Evaluate the expression @var{expr} and display the resulting value. 16828The expression may include calls to functions in the program being 16829debugged. 16830 16831@kindex call 16832@item call @var{expr} 16833Evaluate the expression @var{expr} without displaying @code{void} 16834returned values. 16835 16836You can use this variant of the @code{print} command if you want to 16837execute a function from your program that does not return anything 16838(a.k.a.@: @dfn{a void function}), but without cluttering the output 16839with @code{void} returned values that @value{GDBN} will otherwise 16840print. If the result is not void, it is printed and saved in the 16841value history. 16842@end table 16843 16844It is possible for the function you call via the @code{print} or 16845@code{call} command to generate a signal (e.g., if there's a bug in 16846the function, or if you passed it incorrect arguments). What happens 16847in that case is controlled by the @code{set unwindonsignal} command. 16848 16849Similarly, with a C@t{++} program it is possible for the function you 16850call via the @code{print} or @code{call} command to generate an 16851exception that is not handled due to the constraints of the dummy 16852frame. In this case, any exception that is raised in the frame, but has 16853an out-of-frame exception handler will not be found. GDB builds a 16854dummy-frame for the inferior function call, and the unwinder cannot 16855seek for exception handlers outside of this dummy-frame. What happens 16856in that case is controlled by the 16857@code{set unwind-on-terminating-exception} command. 16858 16859@table @code 16860@item set unwindonsignal 16861@kindex set unwindonsignal 16862@cindex unwind stack in called functions 16863@cindex call dummy stack unwinding 16864Set unwinding of the stack if a signal is received while in a function 16865that @value{GDBN} called in the program being debugged. If set to on, 16866@value{GDBN} unwinds the stack it created for the call and restores 16867the context to what it was before the call. If set to off (the 16868default), @value{GDBN} stops in the frame where the signal was 16869received. 16870 16871@item show unwindonsignal 16872@kindex show unwindonsignal 16873Show the current setting of stack unwinding in the functions called by 16874@value{GDBN}. 16875 16876@item set unwind-on-terminating-exception 16877@kindex set unwind-on-terminating-exception 16878@cindex unwind stack in called functions with unhandled exceptions 16879@cindex call dummy stack unwinding on unhandled exception. 16880Set unwinding of the stack if a C@t{++} exception is raised, but left 16881unhandled while in a function that @value{GDBN} called in the program being 16882debugged. If set to on (the default), @value{GDBN} unwinds the stack 16883it created for the call and restores the context to what it was before 16884the call. If set to off, @value{GDBN} the exception is delivered to 16885the default C@t{++} exception handler and the inferior terminated. 16886 16887@item show unwind-on-terminating-exception 16888@kindex show unwind-on-terminating-exception 16889Show the current setting of stack unwinding in the functions called by 16890@value{GDBN}. 16891 16892@end table 16893 16894@cindex weak alias functions 16895Sometimes, a function you wish to call is actually a @dfn{weak alias} 16896for another function. In such case, @value{GDBN} might not pick up 16897the type information, including the types of the function arguments, 16898which causes @value{GDBN} to call the inferior function incorrectly. 16899As a result, the called function will function erroneously and may 16900even crash. A solution to that is to use the name of the aliased 16901function instead. 16902 16903@node Patching 16904@section Patching Programs 16905 16906@cindex patching binaries 16907@cindex writing into executables 16908@cindex writing into corefiles 16909 16910By default, @value{GDBN} opens the file containing your program's 16911executable code (or the corefile) read-only. This prevents accidental 16912alterations to machine code; but it also prevents you from intentionally 16913patching your program's binary. 16914 16915If you'd like to be able to patch the binary, you can specify that 16916explicitly with the @code{set write} command. For example, you might 16917want to turn on internal debugging flags, or even to make emergency 16918repairs. 16919 16920@table @code 16921@kindex set write 16922@item set write on 16923@itemx set write off 16924If you specify @samp{set write on}, @value{GDBN} opens executable and 16925core files for both reading and writing; if you specify @kbd{set write 16926off} (the default), @value{GDBN} opens them read-only. 16927 16928If you have already loaded a file, you must load it again (using the 16929@code{exec-file} or @code{core-file} command) after changing @code{set 16930write}, for your new setting to take effect. 16931 16932@item show write 16933@kindex show write 16934Display whether executable files and core files are opened for writing 16935as well as reading. 16936@end table 16937 16938@node Compiling and Injecting Code 16939@section Compiling and injecting code in @value{GDBN} 16940@cindex injecting code 16941@cindex writing into executables 16942@cindex compiling code 16943 16944@value{GDBN} supports on-demand compilation and code injection into 16945programs running under @value{GDBN}. GCC 5.0 or higher built with 16946@file{libcc1.so} must be installed for this functionality to be enabled. 16947This functionality is implemented with the following commands. 16948 16949@table @code 16950@kindex compile code 16951@item compile code @var{source-code} 16952@itemx compile code -raw @var{--} @var{source-code} 16953Compile @var{source-code} with the compiler language found as the current 16954language in @value{GDBN} (@pxref{Languages}). If compilation and 16955injection is not supported with the current language specified in 16956@value{GDBN}, or the compiler does not support this feature, an error 16957message will be printed. If @var{source-code} compiles and links 16958successfully, @value{GDBN} will load the object-code emitted, 16959and execute it within the context of the currently selected inferior. 16960It is important to note that the compiled code is executed immediately. 16961After execution, the compiled code is removed from @value{GDBN} and any 16962new types or variables you have defined will be deleted. 16963 16964The command allows you to specify @var{source-code} in two ways. 16965The simplest method is to provide a single line of code to the command. 16966E.g.: 16967 16968@smallexample 16969compile code printf ("hello world\n"); 16970@end smallexample 16971 16972If you specify options on the command line as well as source code, they 16973may conflict. The @samp{--} delimiter can be used to separate options 16974from actual source code. E.g.: 16975 16976@smallexample 16977compile code -r -- printf ("hello world\n"); 16978@end smallexample 16979 16980Alternatively you can enter source code as multiple lines of text. To 16981enter this mode, invoke the @samp{compile code} command without any text 16982following the command. This will start the multiple-line editor and 16983allow you to type as many lines of source code as required. When you 16984have completed typing, enter @samp{end} on its own line to exit the 16985editor. 16986 16987@smallexample 16988compile code 16989>printf ("hello\n"); 16990>printf ("world\n"); 16991>end 16992@end smallexample 16993 16994Specifying @samp{-raw}, prohibits @value{GDBN} from wrapping the 16995provided @var{source-code} in a callable scope. In this case, you must 16996specify the entry point of the code by defining a function named 16997@code{_gdb_expr_}. The @samp{-raw} code cannot access variables of the 16998inferior. Using @samp{-raw} option may be needed for example when 16999@var{source-code} requires @samp{#include} lines which may conflict with 17000inferior symbols otherwise. 17001 17002@kindex compile file 17003@item compile file @var{filename} 17004@itemx compile file -raw @var{filename} 17005Like @code{compile code}, but take the source code from @var{filename}. 17006 17007@smallexample 17008compile file /home/user/example.c 17009@end smallexample 17010@end table 17011 17012@subsection Caveats when using the @code{compile} command 17013 17014There are a few caveats to keep in mind when using the @code{compile} 17015command. As the caveats are different per language, the table below 17016highlights specific issues on a per language basis. 17017 17018@table @asis 17019@item C code examples and caveats 17020When the language in @value{GDBN} is set to @samp{C}, the compiler will 17021attempt to compile the source code with a @samp{C} compiler. The source 17022code provided to the @code{compile} command will have much the same 17023access to variables and types as it normally would if it were part of 17024the program currently being debugged in @value{GDBN}. 17025 17026Below is a sample program that forms the basis of the examples that 17027follow. This program has been compiled and loaded into @value{GDBN}, 17028much like any other normal debugging session. 17029 17030@smallexample 17031void function1 (void) 17032@{ 17033 int i = 42; 17034 printf ("function 1\n"); 17035@} 17036 17037void function2 (void) 17038@{ 17039 int j = 12; 17040 function1 (); 17041@} 17042 17043int main(void) 17044@{ 17045 int k = 6; 17046 int *p; 17047 function2 (); 17048 return 0; 17049@} 17050@end smallexample 17051 17052For the purposes of the examples in this section, the program above has 17053been compiled, loaded into @value{GDBN}, stopped at the function 17054@code{main}, and @value{GDBN} is awaiting input from the user. 17055 17056To access variables and types for any program in @value{GDBN}, the 17057program must be compiled and packaged with debug information. The 17058@code{compile} command is not an exception to this rule. Without debug 17059information, you can still use the @code{compile} command, but you will 17060be very limited in what variables and types you can access. 17061 17062So with that in mind, the example above has been compiled with debug 17063information enabled. The @code{compile} command will have access to 17064all variables and types (except those that may have been optimized 17065out). Currently, as @value{GDBN} has stopped the program in the 17066@code{main} function, the @code{compile} command would have access to 17067the variable @code{k}. You could invoke the @code{compile} command 17068and type some source code to set the value of @code{k}. You can also 17069read it, or do anything with that variable you would normally do in 17070@code{C}. Be aware that changes to inferior variables in the 17071@code{compile} command are persistent. In the following example: 17072 17073@smallexample 17074compile code k = 3; 17075@end smallexample 17076 17077@noindent 17078the variable @code{k} is now 3. It will retain that value until 17079something else in the example program changes it, or another 17080@code{compile} command changes it. 17081 17082Normal scope and access rules apply to source code compiled and 17083injected by the @code{compile} command. In the example, the variables 17084@code{j} and @code{k} are not accessible yet, because the program is 17085currently stopped in the @code{main} function, where these variables 17086are not in scope. Therefore, the following command 17087 17088@smallexample 17089compile code j = 3; 17090@end smallexample 17091 17092@noindent 17093will result in a compilation error message. 17094 17095Once the program is continued, execution will bring these variables in 17096scope, and they will become accessible; then the code you specify via 17097the @code{compile} command will be able to access them. 17098 17099You can create variables and types with the @code{compile} command as 17100part of your source code. Variables and types that are created as part 17101of the @code{compile} command are not visible to the rest of the program for 17102the duration of its run. This example is valid: 17103 17104@smallexample 17105compile code int ff = 5; printf ("ff is %d\n", ff); 17106@end smallexample 17107 17108However, if you were to type the following into @value{GDBN} after that 17109command has completed: 17110 17111@smallexample 17112compile code printf ("ff is %d\n'', ff); 17113@end smallexample 17114 17115@noindent 17116a compiler error would be raised as the variable @code{ff} no longer 17117exists. Object code generated and injected by the @code{compile} 17118command is removed when its execution ends. Caution is advised 17119when assigning to program variables values of variables created by the 17120code submitted to the @code{compile} command. This example is valid: 17121 17122@smallexample 17123compile code int ff = 5; k = ff; 17124@end smallexample 17125 17126The value of the variable @code{ff} is assigned to @code{k}. The variable 17127@code{k} does not require the existence of @code{ff} to maintain the value 17128it has been assigned. However, pointers require particular care in 17129assignment. If the source code compiled with the @code{compile} command 17130changed the address of a pointer in the example program, perhaps to a 17131variable created in the @code{compile} command, that pointer would point 17132to an invalid location when the command exits. The following example 17133would likely cause issues with your debugged program: 17134 17135@smallexample 17136compile code int ff = 5; p = &ff; 17137@end smallexample 17138 17139In this example, @code{p} would point to @code{ff} when the 17140@code{compile} command is executing the source code provided to it. 17141However, as variables in the (example) program persist with their 17142assigned values, the variable @code{p} would point to an invalid 17143location when the command exists. A general rule should be followed 17144in that you should either assign @code{NULL} to any assigned pointers, 17145or restore a valid location to the pointer before the command exits. 17146 17147Similar caution must be exercised with any structs, unions, and typedefs 17148defined in @code{compile} command. Types defined in the @code{compile} 17149command will no longer be available in the next @code{compile} command. 17150Therefore, if you cast a variable to a type defined in the 17151@code{compile} command, care must be taken to ensure that any future 17152need to resolve the type can be achieved. 17153 17154@smallexample 17155(gdb) compile code static struct a @{ int a; @} v = @{ 42 @}; argv = &v; 17156(gdb) compile code printf ("%d\n", ((struct a *) argv)->a); 17157gdb command line:1:36: error: dereferencing pointer to incomplete type ‘struct a’ 17158Compilation failed. 17159(gdb) compile code struct a @{ int a; @}; printf ("%d\n", ((struct a *) argv)->a); 1716042 17161@end smallexample 17162 17163Variables that have been optimized away by the compiler are not 17164accessible to the code submitted to the @code{compile} command. 17165Access to those variables will generate a compiler error which @value{GDBN} 17166will print to the console. 17167@end table 17168 17169@node GDB Files 17170@chapter @value{GDBN} Files 17171 17172@value{GDBN} needs to know the file name of the program to be debugged, 17173both in order to read its symbol table and in order to start your 17174program. To debug a core dump of a previous run, you must also tell 17175@value{GDBN} the name of the core dump file. 17176 17177@menu 17178* Files:: Commands to specify files 17179* Separate Debug Files:: Debugging information in separate files 17180* MiniDebugInfo:: Debugging information in a special section 17181* Index Files:: Index files speed up GDB 17182* Symbol Errors:: Errors reading symbol files 17183* Data Files:: GDB data files 17184@end menu 17185 17186@node Files 17187@section Commands to Specify Files 17188 17189@cindex symbol table 17190@cindex core dump file 17191 17192You may want to specify executable and core dump file names. The usual 17193way to do this is at start-up time, using the arguments to 17194@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and 17195Out of @value{GDBN}}). 17196 17197Occasionally it is necessary to change to a different file during a 17198@value{GDBN} session. Or you may run @value{GDBN} and forget to 17199specify a file you want to use. Or you are debugging a remote target 17200via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver} 17201Program}). In these situations the @value{GDBN} commands to specify 17202new files are useful. 17203 17204@table @code 17205@cindex executable file 17206@kindex file 17207@item file @var{filename} 17208Use @var{filename} as the program to be debugged. It is read for its 17209symbols and for the contents of pure memory. It is also the program 17210executed when you use the @code{run} command. If you do not specify a 17211directory and the file is not found in the @value{GDBN} working directory, 17212@value{GDBN} uses the environment variable @code{PATH} as a list of 17213directories to search, just as the shell does when looking for a program 17214to run. You can change the value of this variable, for both @value{GDBN} 17215and your program, using the @code{path} command. 17216 17217@cindex unlinked object files 17218@cindex patching object files 17219You can load unlinked object @file{.o} files into @value{GDBN} using 17220the @code{file} command. You will not be able to ``run'' an object 17221file, but you can disassemble functions and inspect variables. Also, 17222if the underlying BFD functionality supports it, you could use 17223@kbd{gdb -write} to patch object files using this technique. Note 17224that @value{GDBN} can neither interpret nor modify relocations in this 17225case, so branches and some initialized variables will appear to go to 17226the wrong place. But this feature is still handy from time to time. 17227 17228@item file 17229@code{file} with no argument makes @value{GDBN} discard any information it 17230has on both executable file and the symbol table. 17231 17232@kindex exec-file 17233@item exec-file @r{[} @var{filename} @r{]} 17234Specify that the program to be run (but not the symbol table) is found 17235in @var{filename}. @value{GDBN} searches the environment variable @code{PATH} 17236if necessary to locate your program. Omitting @var{filename} means to 17237discard information on the executable file. 17238 17239@kindex symbol-file 17240@item symbol-file @r{[} @var{filename} @r{]} 17241Read symbol table information from file @var{filename}. @code{PATH} is 17242searched when necessary. Use the @code{file} command to get both symbol 17243table and program to run from the same file. 17244 17245@code{symbol-file} with no argument clears out @value{GDBN} information on your 17246program's symbol table. 17247 17248The @code{symbol-file} command causes @value{GDBN} to forget the contents of 17249some breakpoints and auto-display expressions. This is because they may 17250contain pointers to the internal data recording symbols and data types, 17251which are part of the old symbol table data being discarded inside 17252@value{GDBN}. 17253 17254@code{symbol-file} does not repeat if you press @key{RET} again after 17255executing it once. 17256 17257When @value{GDBN} is configured for a particular environment, it 17258understands debugging information in whatever format is the standard 17259generated for that environment; you may use either a @sc{gnu} compiler, or 17260other compilers that adhere to the local conventions. 17261Best results are usually obtained from @sc{gnu} compilers; for example, 17262using @code{@value{NGCC}} you can generate debugging information for 17263optimized code. 17264 17265For most kinds of object files, with the exception of old SVR3 systems 17266using COFF, the @code{symbol-file} command does not normally read the 17267symbol table in full right away. Instead, it scans the symbol table 17268quickly to find which source files and which symbols are present. The 17269details are read later, one source file at a time, as they are needed. 17270 17271The purpose of this two-stage reading strategy is to make @value{GDBN} 17272start up faster. For the most part, it is invisible except for 17273occasional pauses while the symbol table details for a particular source 17274file are being read. (The @code{set verbose} command can turn these 17275pauses into messages if desired. @xref{Messages/Warnings, ,Optional 17276Warnings and Messages}.) 17277 17278We have not implemented the two-stage strategy for COFF yet. When the 17279symbol table is stored in COFF format, @code{symbol-file} reads the 17280symbol table data in full right away. Note that ``stabs-in-COFF'' 17281still does the two-stage strategy, since the debug info is actually 17282in stabs format. 17283 17284@kindex readnow 17285@cindex reading symbols immediately 17286@cindex symbols, reading immediately 17287@item symbol-file @r{[} -readnow @r{]} @var{filename} 17288@itemx file @r{[} -readnow @r{]} @var{filename} 17289You can override the @value{GDBN} two-stage strategy for reading symbol 17290tables by using the @samp{-readnow} option with any of the commands that 17291load symbol table information, if you want to be sure @value{GDBN} has the 17292entire symbol table available. 17293 17294@c FIXME: for now no mention of directories, since this seems to be in 17295@c flux. 13mar1992 status is that in theory GDB would look either in 17296@c current dir or in same dir as myprog; but issues like competing 17297@c GDB's, or clutter in system dirs, mean that in practice right now 17298@c only current dir is used. FFish says maybe a special GDB hierarchy 17299@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol 17300@c files. 17301 17302@kindex core-file 17303@item core-file @r{[}@var{filename}@r{]} 17304@itemx core 17305Specify the whereabouts of a core dump file to be used as the ``contents 17306of memory''. Traditionally, core files contain only some parts of the 17307address space of the process that generated them; @value{GDBN} can access the 17308executable file itself for other parts. 17309 17310@code{core-file} with no argument specifies that no core file is 17311to be used. 17312 17313Note that the core file is ignored when your program is actually running 17314under @value{GDBN}. So, if you have been running your program and you 17315wish to debug a core file instead, you must kill the subprocess in which 17316the program is running. To do this, use the @code{kill} command 17317(@pxref{Kill Process, ,Killing the Child Process}). 17318 17319@kindex add-symbol-file 17320@cindex dynamic linking 17321@item add-symbol-file @var{filename} @var{address} 17322@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} 17323@itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{} 17324The @code{add-symbol-file} command reads additional symbol table 17325information from the file @var{filename}. You would use this command 17326when @var{filename} has been dynamically loaded (by some other means) 17327into the program that is running. The @var{address} should give the memory 17328address at which the file has been loaded; @value{GDBN} cannot figure 17329this out for itself. You can additionally specify an arbitrary number 17330of @samp{-s @var{section} @var{address}} pairs, to give an explicit 17331section name and base address for that section. You can specify any 17332@var{address} as an expression. 17333 17334The symbol table of the file @var{filename} is added to the symbol table 17335originally read with the @code{symbol-file} command. You can use the 17336@code{add-symbol-file} command any number of times; the new symbol data 17337thus read is kept in addition to the old. 17338 17339Changes can be reverted using the command @code{remove-symbol-file}. 17340 17341@cindex relocatable object files, reading symbols from 17342@cindex object files, relocatable, reading symbols from 17343@cindex reading symbols from relocatable object files 17344@cindex symbols, reading from relocatable object files 17345@cindex @file{.o} files, reading symbols from 17346Although @var{filename} is typically a shared library file, an 17347executable file, or some other object file which has been fully 17348relocated for loading into a process, you can also load symbolic 17349information from relocatable @file{.o} files, as long as: 17350 17351@itemize @bullet 17352@item 17353the file's symbolic information refers only to linker symbols defined in 17354that file, not to symbols defined by other object files, 17355@item 17356every section the file's symbolic information refers to has actually 17357been loaded into the inferior, as it appears in the file, and 17358@item 17359you can determine the address at which every section was loaded, and 17360provide these to the @code{add-symbol-file} command. 17361@end itemize 17362 17363@noindent 17364Some embedded operating systems, like Sun Chorus and VxWorks, can load 17365relocatable files into an already running program; such systems 17366typically make the requirements above easy to meet. However, it's 17367important to recognize that many native systems use complex link 17368procedures (@code{.linkonce} section factoring and C@t{++} constructor table 17369assembly, for example) that make the requirements difficult to meet. In 17370general, one cannot assume that using @code{add-symbol-file} to read a 17371relocatable object file's symbolic information will have the same effect 17372as linking the relocatable object file into the program in the normal 17373way. 17374 17375@code{add-symbol-file} does not repeat if you press @key{RET} after using it. 17376 17377@kindex remove-symbol-file 17378@item remove-symbol-file @var{filename} 17379@item remove-symbol-file -a @var{address} 17380Remove a symbol file added via the @code{add-symbol-file} command. The 17381file to remove can be identified by its @var{filename} or by an @var{address} 17382that lies within the boundaries of this symbol file in memory. Example: 17383 17384@smallexample 17385(gdb) add-symbol-file /home/user/gdb/mylib.so 0x7ffff7ff9480 17386add symbol table from file "/home/user/gdb/mylib.so" at 17387 .text_addr = 0x7ffff7ff9480 17388(y or n) y 17389Reading symbols from /home/user/gdb/mylib.so...done. 17390(gdb) remove-symbol-file -a 0x7ffff7ff9480 17391Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y 17392(gdb) 17393@end smallexample 17394 17395 17396@code{remove-symbol-file} does not repeat if you press @key{RET} after using it. 17397 17398@kindex add-symbol-file-from-memory 17399@cindex @code{syscall DSO} 17400@cindex load symbols from memory 17401@item add-symbol-file-from-memory @var{address} 17402Load symbols from the given @var{address} in a dynamically loaded 17403object file whose image is mapped directly into the inferior's memory. 17404For example, the Linux kernel maps a @code{syscall DSO} into each 17405process's address space; this DSO provides kernel-specific code for 17406some system calls. The argument can be any expression whose 17407evaluation yields the address of the file's shared object file header. 17408For this command to work, you must have used @code{symbol-file} or 17409@code{exec-file} commands in advance. 17410 17411@kindex section 17412@item section @var{section} @var{addr} 17413The @code{section} command changes the base address of the named 17414@var{section} of the exec file to @var{addr}. This can be used if the 17415exec file does not contain section addresses, (such as in the 17416@code{a.out} format), or when the addresses specified in the file 17417itself are wrong. Each section must be changed separately. The 17418@code{info files} command, described below, lists all the sections and 17419their addresses. 17420 17421@kindex info files 17422@kindex info target 17423@item info files 17424@itemx info target 17425@code{info files} and @code{info target} are synonymous; both print the 17426current target (@pxref{Targets, ,Specifying a Debugging Target}), 17427including the names of the executable and core dump files currently in 17428use by @value{GDBN}, and the files from which symbols were loaded. The 17429command @code{help target} lists all possible targets rather than 17430current ones. 17431 17432@kindex maint info sections 17433@item maint info sections 17434Another command that can give you extra information about program sections 17435is @code{maint info sections}. In addition to the section information 17436displayed by @code{info files}, this command displays the flags and file 17437offset of each section in the executable and core dump files. In addition, 17438@code{maint info sections} provides the following command options (which 17439may be arbitrarily combined): 17440 17441@table @code 17442@item ALLOBJ 17443Display sections for all loaded object files, including shared libraries. 17444@item @var{sections} 17445Display info only for named @var{sections}. 17446@item @var{section-flags} 17447Display info only for sections for which @var{section-flags} are true. 17448The section flags that @value{GDBN} currently knows about are: 17449@table @code 17450@item ALLOC 17451Section will have space allocated in the process when loaded. 17452Set for all sections except those containing debug information. 17453@item LOAD 17454Section will be loaded from the file into the child process memory. 17455Set for pre-initialized code and data, clear for @code{.bss} sections. 17456@item RELOC 17457Section needs to be relocated before loading. 17458@item READONLY 17459Section cannot be modified by the child process. 17460@item CODE 17461Section contains executable code only. 17462@item DATA 17463Section contains data only (no executable code). 17464@item ROM 17465Section will reside in ROM. 17466@item CONSTRUCTOR 17467Section contains data for constructor/destructor lists. 17468@item HAS_CONTENTS 17469Section is not empty. 17470@item NEVER_LOAD 17471An instruction to the linker to not output the section. 17472@item COFF_SHARED_LIBRARY 17473A notification to the linker that the section contains 17474COFF shared library information. 17475@item IS_COMMON 17476Section contains common symbols. 17477@end table 17478@end table 17479@kindex set trust-readonly-sections 17480@cindex read-only sections 17481@item set trust-readonly-sections on 17482Tell @value{GDBN} that readonly sections in your object file 17483really are read-only (i.e.@: that their contents will not change). 17484In that case, @value{GDBN} can fetch values from these sections 17485out of the object file, rather than from the target program. 17486For some targets (notably embedded ones), this can be a significant 17487enhancement to debugging performance. 17488 17489The default is off. 17490 17491@item set trust-readonly-sections off 17492Tell @value{GDBN} not to trust readonly sections. This means that 17493the contents of the section might change while the program is running, 17494and must therefore be fetched from the target when needed. 17495 17496@item show trust-readonly-sections 17497Show the current setting of trusting readonly sections. 17498@end table 17499 17500All file-specifying commands allow both absolute and relative file names 17501as arguments. @value{GDBN} always converts the file name to an absolute file 17502name and remembers it that way. 17503 17504@cindex shared libraries 17505@anchor{Shared Libraries} 17506@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix, 17507and IBM RS/6000 AIX shared libraries. 17508 17509On MS-Windows @value{GDBN} must be linked with the Expat library to support 17510shared libraries. @xref{Expat}. 17511 17512@value{GDBN} automatically loads symbol definitions from shared libraries 17513when you use the @code{run} command, or when you examine a core file. 17514(Before you issue the @code{run} command, @value{GDBN} does not understand 17515references to a function in a shared library, however---unless you are 17516debugging a core file). 17517 17518On HP-UX, if the program loads a library explicitly, @value{GDBN} 17519automatically loads the symbols at the time of the @code{shl_load} call. 17520 17521@c FIXME: some @value{GDBN} release may permit some refs to undef 17522@c FIXME...symbols---eg in a break cmd---assuming they are from a shared 17523@c FIXME...lib; check this from time to time when updating manual 17524 17525There are times, however, when you may wish to not automatically load 17526symbol definitions from shared libraries, such as when they are 17527particularly large or there are many of them. 17528 17529To control the automatic loading of shared library symbols, use the 17530commands: 17531 17532@table @code 17533@kindex set auto-solib-add 17534@item set auto-solib-add @var{mode} 17535If @var{mode} is @code{on}, symbols from all shared object libraries 17536will be loaded automatically when the inferior begins execution, you 17537attach to an independently started inferior, or when the dynamic linker 17538informs @value{GDBN} that a new library has been loaded. If @var{mode} 17539is @code{off}, symbols must be loaded manually, using the 17540@code{sharedlibrary} command. The default value is @code{on}. 17541 17542@cindex memory used for symbol tables 17543If your program uses lots of shared libraries with debug info that 17544takes large amounts of memory, you can decrease the @value{GDBN} 17545memory footprint by preventing it from automatically loading the 17546symbols from shared libraries. To that end, type @kbd{set 17547auto-solib-add off} before running the inferior, then load each 17548library whose debug symbols you do need with @kbd{sharedlibrary 17549@var{regexp}}, where @var{regexp} is a regular expression that matches 17550the libraries whose symbols you want to be loaded. 17551 17552@kindex show auto-solib-add 17553@item show auto-solib-add 17554Display the current autoloading mode. 17555@end table 17556 17557@cindex load shared library 17558To explicitly load shared library symbols, use the @code{sharedlibrary} 17559command: 17560 17561@table @code 17562@kindex info sharedlibrary 17563@kindex info share 17564@item info share @var{regex} 17565@itemx info sharedlibrary @var{regex} 17566Print the names of the shared libraries which are currently loaded 17567that match @var{regex}. If @var{regex} is omitted then print 17568all shared libraries that are loaded. 17569 17570@kindex sharedlibrary 17571@kindex share 17572@item sharedlibrary @var{regex} 17573@itemx share @var{regex} 17574Load shared object library symbols for files matching a 17575Unix regular expression. 17576As with files loaded automatically, it only loads shared libraries 17577required by your program for a core file or after typing @code{run}. If 17578@var{regex} is omitted all shared libraries required by your program are 17579loaded. 17580 17581@item nosharedlibrary 17582@kindex nosharedlibrary 17583@cindex unload symbols from shared libraries 17584Unload all shared object library symbols. This discards all symbols 17585that have been loaded from all shared libraries. Symbols from shared 17586libraries that were loaded by explicit user requests are not 17587discarded. 17588@end table 17589 17590Sometimes you may wish that @value{GDBN} stops and gives you control 17591when any of shared library events happen. The best way to do this is 17592to use @code{catch load} and @code{catch unload} (@pxref{Set 17593Catchpoints}). 17594 17595@value{GDBN} also supports the the @code{set stop-on-solib-events} 17596command for this. This command exists for historical reasons. It is 17597less useful than setting a catchpoint, because it does not allow for 17598conditions or commands as a catchpoint does. 17599 17600@table @code 17601@item set stop-on-solib-events 17602@kindex set stop-on-solib-events 17603This command controls whether @value{GDBN} should give you control 17604when the dynamic linker notifies it about some shared library event. 17605The most common event of interest is loading or unloading of a new 17606shared library. 17607 17608@item show stop-on-solib-events 17609@kindex show stop-on-solib-events 17610Show whether @value{GDBN} stops and gives you control when shared 17611library events happen. 17612@end table 17613 17614Shared libraries are also supported in many cross or remote debugging 17615configurations. @value{GDBN} needs to have access to the target's libraries; 17616this can be accomplished either by providing copies of the libraries 17617on the host system, or by asking @value{GDBN} to automatically retrieve the 17618libraries from the target. If copies of the target libraries are 17619provided, they need to be the same as the target libraries, although the 17620copies on the target can be stripped as long as the copies on the host are 17621not. 17622 17623@cindex where to look for shared libraries 17624For remote debugging, you need to tell @value{GDBN} where the target 17625libraries are, so that it can load the correct copies---otherwise, it 17626may try to load the host's libraries. @value{GDBN} has two variables 17627to specify the search directories for target libraries. 17628 17629@table @code 17630@cindex prefix for shared library file names 17631@cindex system root, alternate 17632@kindex set solib-absolute-prefix 17633@kindex set sysroot 17634@item set sysroot @var{path} 17635Use @var{path} as the system root for the program being debugged. Any 17636absolute shared library paths will be prefixed with @var{path}; many 17637runtime loaders store the absolute paths to the shared library in the 17638target program's memory. If you use @code{set sysroot} to find shared 17639libraries, they need to be laid out in the same way that they are on 17640the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy 17641under @var{path}. 17642 17643If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will 17644retrieve the target libraries from the remote system. This is only 17645supported when using a remote target that supports the @code{remote get} 17646command (@pxref{File Transfer,,Sending files to a remote system}). 17647The part of @var{path} following the initial @file{remote:} 17648(if present) is used as system root prefix on the remote file system. 17649@footnote{If you want to specify a local system root using a directory 17650that happens to be named @file{remote:}, you need to use some equivalent 17651variant of the name like @file{./remote:}.} 17652 17653For targets with an MS-DOS based filesystem, such as MS-Windows and 17654SymbianOS, @value{GDBN} tries prefixing a few variants of the target 17655absolute file name with @var{path}. But first, on Unix hosts, 17656@value{GDBN} converts all backslash directory separators into forward 17657slashes, because the backslash is not a directory separator on Unix: 17658 17659@smallexample 17660 c:\foo\bar.dll @result{} c:/foo/bar.dll 17661@end smallexample 17662 17663Then, @value{GDBN} attempts prefixing the target file name with 17664@var{path}, and looks for the resulting file name in the host file 17665system: 17666 17667@smallexample 17668 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll 17669@end smallexample 17670 17671If that does not find the shared library, @value{GDBN} tries removing 17672the @samp{:} character from the drive spec, both for convenience, and, 17673for the case of the host file system not supporting file names with 17674colons: 17675 17676@smallexample 17677 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll 17678@end smallexample 17679 17680This makes it possible to have a system root that mirrors a target 17681with more than one drive. E.g., you may want to setup your local 17682copies of the target system shared libraries like so (note @samp{c} vs 17683@samp{z}): 17684 17685@smallexample 17686 @file{/path/to/sysroot/c/sys/bin/foo.dll} 17687 @file{/path/to/sysroot/c/sys/bin/bar.dll} 17688 @file{/path/to/sysroot/z/sys/bin/bar.dll} 17689@end smallexample 17690 17691@noindent 17692and point the system root at @file{/path/to/sysroot}, so that 17693@value{GDBN} can find the correct copies of both 17694@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}. 17695 17696If that still does not find the shared library, @value{GDBN} tries 17697removing the whole drive spec from the target file name: 17698 17699@smallexample 17700 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll 17701@end smallexample 17702 17703This last lookup makes it possible to not care about the drive name, 17704if you don't want or need to. 17705 17706The @code{set solib-absolute-prefix} command is an alias for @code{set 17707sysroot}. 17708 17709@cindex default system root 17710@cindex @samp{--with-sysroot} 17711You can set the default system root by using the configure-time 17712@samp{--with-sysroot} option. If the system root is inside 17713@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 17714@samp{--exec-prefix}), then the default system root will be updated 17715automatically if the installed @value{GDBN} is moved to a new 17716location. 17717 17718@kindex show sysroot 17719@item show sysroot 17720Display the current shared library prefix. 17721 17722@kindex set solib-search-path 17723@item set solib-search-path @var{path} 17724If this variable is set, @var{path} is a colon-separated list of 17725directories to search for shared libraries. @samp{solib-search-path} 17726is used after @samp{sysroot} fails to locate the library, or if the 17727path to the library is relative instead of absolute. If you want to 17728use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set 17729@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from 17730finding your host's libraries. @samp{sysroot} is preferred; setting 17731it to a nonexistent directory may interfere with automatic loading 17732of shared library symbols. 17733 17734@kindex show solib-search-path 17735@item show solib-search-path 17736Display the current shared library search path. 17737 17738@cindex DOS file-name semantics of file names. 17739@kindex set target-file-system-kind (unix|dos-based|auto) 17740@kindex show target-file-system-kind 17741@item set target-file-system-kind @var{kind} 17742Set assumed file system kind for target reported file names. 17743 17744Shared library file names as reported by the target system may not 17745make sense as is on the system @value{GDBN} is running on. For 17746example, when remote debugging a target that has MS-DOS based file 17747system semantics, from a Unix host, the target may be reporting to 17748@value{GDBN} a list of loaded shared libraries with file names such as 17749@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of 17750drive letters, so the @samp{c:\} prefix is not normally understood as 17751indicating an absolute file name, and neither is the backslash 17752normally considered a directory separator character. In that case, 17753the native file system would interpret this whole absolute file name 17754as a relative file name with no directory components. This would make 17755it impossible to point @value{GDBN} at a copy of the remote target's 17756shared libraries on the host using @code{set sysroot}, and impractical 17757with @code{set solib-search-path}. Setting 17758@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN} 17759to interpret such file names similarly to how the target would, and to 17760map them to file names valid on @value{GDBN}'s native file system 17761semantics. The value of @var{kind} can be @code{"auto"}, in addition 17762to one of the supported file system kinds. In that case, @value{GDBN} 17763tries to determine the appropriate file system variant based on the 17764current target's operating system (@pxref{ABI, ,Configuring the 17765Current ABI}). The supported file system settings are: 17766 17767@table @code 17768@item unix 17769Instruct @value{GDBN} to assume the target file system is of Unix 17770kind. Only file names starting the forward slash (@samp{/}) character 17771are considered absolute, and the directory separator character is also 17772the forward slash. 17773 17774@item dos-based 17775Instruct @value{GDBN} to assume the target file system is DOS based. 17776File names starting with either a forward slash, or a drive letter 17777followed by a colon (e.g., @samp{c:}), are considered absolute, and 17778both the slash (@samp{/}) and the backslash (@samp{\\}) characters are 17779considered directory separators. 17780 17781@item auto 17782Instruct @value{GDBN} to use the file system kind associated with the 17783target operating system (@pxref{ABI, ,Configuring the Current ABI}). 17784This is the default. 17785@end table 17786@end table 17787 17788@cindex file name canonicalization 17789@cindex base name differences 17790When processing file names provided by the user, @value{GDBN} 17791frequently needs to compare them to the file names recorded in the 17792program's debug info. Normally, @value{GDBN} compares just the 17793@dfn{base names} of the files as strings, which is reasonably fast 17794even for very large programs. (The base name of a file is the last 17795portion of its name, after stripping all the leading directories.) 17796This shortcut in comparison is based upon the assumption that files 17797cannot have more than one base name. This is usually true, but 17798references to files that use symlinks or similar filesystem 17799facilities violate that assumption. If your program records files 17800using such facilities, or if you provide file names to @value{GDBN} 17801using symlinks etc., you can set @code{basenames-may-differ} to 17802@code{true} to instruct @value{GDBN} to completely canonicalize each 17803pair of file names it needs to compare. This will make file-name 17804comparisons accurate, but at a price of a significant slowdown. 17805 17806@table @code 17807@item set basenames-may-differ 17808@kindex set basenames-may-differ 17809Set whether a source file may have multiple base names. 17810 17811@item show basenames-may-differ 17812@kindex show basenames-may-differ 17813Show whether a source file may have multiple base names. 17814@end table 17815 17816@node Separate Debug Files 17817@section Debugging Information in Separate Files 17818@cindex separate debugging information files 17819@cindex debugging information in separate files 17820@cindex @file{.debug} subdirectories 17821@cindex debugging information directory, global 17822@cindex global debugging information directories 17823@cindex build ID, and separate debugging files 17824@cindex @file{.build-id} directory 17825 17826@value{GDBN} allows you to put a program's debugging information in a 17827file separate from the executable itself, in a way that allows 17828@value{GDBN} to find and load the debugging information automatically. 17829Since debugging information can be very large---sometimes larger 17830than the executable code itself---some systems distribute debugging 17831information for their executables in separate files, which users can 17832install only when they need to debug a problem. 17833 17834@value{GDBN} supports two ways of specifying the separate debug info 17835file: 17836 17837@itemize @bullet 17838@item 17839The executable contains a @dfn{debug link} that specifies the name of 17840the separate debug info file. The separate debug file's name is 17841usually @file{@var{executable}.debug}, where @var{executable} is the 17842name of the corresponding executable file without leading directories 17843(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the 17844debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC) 17845checksum for the debug file, which @value{GDBN} uses to validate that 17846the executable and the debug file came from the same build. 17847 17848@item 17849The executable contains a @dfn{build ID}, a unique bit string that is 17850also present in the corresponding debug info file. (This is supported 17851only on some operating systems, notably those which use the ELF format 17852for binary files and the @sc{gnu} Binutils.) For more details about 17853this feature, see the description of the @option{--build-id} 17854command-line option in @ref{Options, , Command Line Options, ld.info, 17855The GNU Linker}. The debug info file's name is not specified 17856explicitly by the build ID, but can be computed from the build ID, see 17857below. 17858@end itemize 17859 17860Depending on the way the debug info file is specified, @value{GDBN} 17861uses two different methods of looking for the debug file: 17862 17863@itemize @bullet 17864@item 17865For the ``debug link'' method, @value{GDBN} looks up the named file in 17866the directory of the executable file, then in a subdirectory of that 17867directory named @file{.debug}, and finally under each one of the global debug 17868directories, in a subdirectory whose name is identical to the leading 17869directories of the executable's absolute file name. 17870 17871@item 17872For the ``build ID'' method, @value{GDBN} looks in the 17873@file{.build-id} subdirectory of each one of the global debug directories for 17874a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the 17875first 2 hex characters of the build ID bit string, and @var{nnnnnnnn} 17876are the rest of the bit string. (Real build ID strings are 32 or more 17877hex characters, not 10.) 17878@end itemize 17879 17880So, for example, suppose you ask @value{GDBN} to debug 17881@file{/usr/bin/ls}, which has a debug link that specifies the 17882file @file{ls.debug}, and a build ID whose value in hex is 17883@code{abcdef1234}. If the list of the global debug directories includes 17884@file{/usr/lib/debug}, then @value{GDBN} will look for the following 17885debug information files, in the indicated order: 17886 17887@itemize @minus 17888@item 17889@file{/usr/lib/debug/.build-id/ab/cdef1234.debug} 17890@item 17891@file{/usr/bin/ls.debug} 17892@item 17893@file{/usr/bin/.debug/ls.debug} 17894@item 17895@file{/usr/lib/debug/usr/bin/ls.debug}. 17896@end itemize 17897 17898@anchor{debug-file-directory} 17899Global debugging info directories default to what is set by @value{GDBN} 17900configure option @option{--with-separate-debug-dir}. During @value{GDBN} run 17901you can also set the global debugging info directories, and view the list 17902@value{GDBN} is currently using. 17903 17904@table @code 17905 17906@kindex set debug-file-directory 17907@item set debug-file-directory @var{directories} 17908Set the directories which @value{GDBN} searches for separate debugging 17909information files to @var{directory}. Multiple path components can be set 17910concatenating them by a path separator. 17911 17912@kindex show debug-file-directory 17913@item show debug-file-directory 17914Show the directories @value{GDBN} searches for separate debugging 17915information files. 17916 17917@end table 17918 17919@cindex @code{.gnu_debuglink} sections 17920@cindex debug link sections 17921A debug link is a special section of the executable file named 17922@code{.gnu_debuglink}. The section must contain: 17923 17924@itemize 17925@item 17926A filename, with any leading directory components removed, followed by 17927a zero byte, 17928@item 17929zero to three bytes of padding, as needed to reach the next four-byte 17930boundary within the section, and 17931@item 17932a four-byte CRC checksum, stored in the same endianness used for the 17933executable file itself. The checksum is computed on the debugging 17934information file's full contents by the function given below, passing 17935zero as the @var{crc} argument. 17936@end itemize 17937 17938Any executable file format can carry a debug link, as long as it can 17939contain a section named @code{.gnu_debuglink} with the contents 17940described above. 17941 17942@cindex @code{.note.gnu.build-id} sections 17943@cindex build ID sections 17944The build ID is a special section in the executable file (and in other 17945ELF binary files that @value{GDBN} may consider). This section is 17946often named @code{.note.gnu.build-id}, but that name is not mandatory. 17947It contains unique identification for the built files---the ID remains 17948the same across multiple builds of the same build tree. The default 17949algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the 17950content for the build ID string. The same section with an identical 17951value is present in the original built binary with symbols, in its 17952stripped variant, and in the separate debugging information file. 17953 17954The debugging information file itself should be an ordinary 17955executable, containing a full set of linker symbols, sections, and 17956debugging information. The sections of the debugging information file 17957should have the same names, addresses, and sizes as the original file, 17958but they need not contain any data---much like a @code{.bss} section 17959in an ordinary executable. 17960 17961The @sc{gnu} binary utilities (Binutils) package includes the 17962@samp{objcopy} utility that can produce 17963the separated executable / debugging information file pairs using the 17964following commands: 17965 17966@smallexample 17967@kbd{objcopy --only-keep-debug foo foo.debug} 17968@kbd{strip -g foo} 17969@end smallexample 17970 17971@noindent 17972These commands remove the debugging 17973information from the executable file @file{foo} and place it in the file 17974@file{foo.debug}. You can use the first, second or both methods to link the 17975two files: 17976 17977@itemize @bullet 17978@item 17979The debug link method needs the following additional command to also leave 17980behind a debug link in @file{foo}: 17981 17982@smallexample 17983@kbd{objcopy --add-gnu-debuglink=foo.debug foo} 17984@end smallexample 17985 17986Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains 17987a version of the @code{strip} command such that the command @kbd{strip foo -f 17988foo.debug} has the same functionality as the two @code{objcopy} commands and 17989the @code{ln -s} command above, together. 17990 17991@item 17992Build ID gets embedded into the main executable using @code{ld --build-id} or 17993the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus 17994compatibility fixes for debug files separation are present in @sc{gnu} binary 17995utilities (Binutils) package since version 2.18. 17996@end itemize 17997 17998@noindent 17999 18000@cindex CRC algorithm definition 18001The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in 18002IEEE 802.3 using the polynomial: 18003 18004@c TexInfo requires naked braces for multi-digit exponents for Tex 18005@c output, but this causes HTML output to barf. HTML has to be set using 18006@c raw commands. So we end up having to specify this equation in 2 18007@c different ways! 18008@ifhtml 18009@display 18010@html 18011 <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> 18012 + <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 18013@end html 18014@end display 18015@end ifhtml 18016@ifnothtml 18017@display 18018 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}} 18019 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1} 18020@end display 18021@end ifnothtml 18022 18023The function is computed byte at a time, taking the least 18024significant bit of each byte first. The initial pattern 18025@code{0xffffffff} is used, to ensure leading zeros affect the CRC and 18026the final result is inverted to ensure trailing zeros also affect the 18027CRC. 18028 18029@emph{Note:} This is the same CRC polynomial as used in handling the 18030@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{qCRC packet}). 18031However in the case of the Remote Serial Protocol, the CRC is computed 18032@emph{most} significant bit first, and the result is not inverted, so 18033trailing zeros have no effect on the CRC value. 18034 18035To complete the description, we show below the code of the function 18036which produces the CRC used in @code{.gnu_debuglink}. Inverting the 18037initially supplied @code{crc} argument means that an initial call to 18038this function passing in zero will start computing the CRC using 18039@code{0xffffffff}. 18040 18041@kindex gnu_debuglink_crc32 18042@smallexample 18043unsigned long 18044gnu_debuglink_crc32 (unsigned long crc, 18045 unsigned char *buf, size_t len) 18046@{ 18047 static const unsigned long crc32_table[256] = 18048 @{ 18049 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 18050 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 18051 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 18052 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 18053 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 18054 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 18055 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 18056 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 18057 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 18058 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 18059 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 18060 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 18061 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 18062 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 18063 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 18064 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 18065 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 18066 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 18067 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 18068 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 18069 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 18070 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 18071 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 18072 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 18073 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 18074 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 18075 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 18076 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 18077 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 18078 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 18079 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 18080 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 18081 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 18082 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 18083 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 18084 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 18085 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 18086 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 18087 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 18088 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 18089 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 18090 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 18091 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 18092 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 18093 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 18094 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 18095 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 18096 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 18097 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 18098 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 18099 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 18100 0x2d02ef8d 18101 @}; 18102 unsigned char *end; 18103 18104 crc = ~crc & 0xffffffff; 18105 for (end = buf + len; buf < end; ++buf) 18106 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); 18107 return ~crc & 0xffffffff; 18108@} 18109@end smallexample 18110 18111@noindent 18112This computation does not apply to the ``build ID'' method. 18113 18114@node MiniDebugInfo 18115@section Debugging information in a special section 18116@cindex separate debug sections 18117@cindex @samp{.gnu_debugdata} section 18118 18119Some systems ship pre-built executables and libraries that have a 18120special @samp{.gnu_debugdata} section. This feature is called 18121@dfn{MiniDebugInfo}. This section holds an LZMA-compressed object and 18122is used to supply extra symbols for backtraces. 18123 18124The intent of this section is to provide extra minimal debugging 18125information for use in simple backtraces. It is not intended to be a 18126replacement for full separate debugging information (@pxref{Separate 18127Debug Files}). The example below shows the intended use; however, 18128@value{GDBN} does not currently put restrictions on what sort of 18129debugging information might be included in the section. 18130 18131@value{GDBN} has support for this extension. If the section exists, 18132then it is used provided that no other source of debugging information 18133can be found, and that @value{GDBN} was configured with LZMA support. 18134 18135This section can be easily created using @command{objcopy} and other 18136standard utilities: 18137 18138@smallexample 18139# Extract the dynamic symbols from the main binary, there is no need 18140# to also have these in the normal symbol table. 18141nm -D @var{binary} --format=posix --defined-only \ 18142 | awk '@{ print $1 @}' | sort > dynsyms 18143 18144# Extract all the text (i.e. function) symbols from the debuginfo. 18145# (Note that we actually also accept "D" symbols, for the benefit 18146# of platforms like PowerPC64 that use function descriptors.) 18147nm @var{binary} --format=posix --defined-only \ 18148 | awk '@{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 @}' \ 18149 | sort > funcsyms 18150 18151# Keep all the function symbols not already in the dynamic symbol 18152# table. 18153comm -13 dynsyms funcsyms > keep_symbols 18154 18155# Separate full debug info into debug binary. 18156objcopy --only-keep-debug @var{binary} debug 18157 18158# Copy the full debuginfo, keeping only a minimal set of symbols and 18159# removing some unnecessary sections. 18160objcopy -S --remove-section .gdb_index --remove-section .comment \ 18161 --keep-symbols=keep_symbols debug mini_debuginfo 18162 18163# Drop the full debug info from the original binary. 18164strip --strip-all -R .comment @var{binary} 18165 18166# Inject the compressed data into the .gnu_debugdata section of the 18167# original binary. 18168xz mini_debuginfo 18169objcopy --add-section .gnu_debugdata=mini_debuginfo.xz @var{binary} 18170@end smallexample 18171 18172@node Index Files 18173@section Index Files Speed Up @value{GDBN} 18174@cindex index files 18175@cindex @samp{.gdb_index} section 18176 18177When @value{GDBN} finds a symbol file, it scans the symbols in the 18178file in order to construct an internal symbol table. This lets most 18179@value{GDBN} operations work quickly---at the cost of a delay early 18180on. For large programs, this delay can be quite lengthy, so 18181@value{GDBN} provides a way to build an index, which speeds up 18182startup. 18183 18184The index is stored as a section in the symbol file. @value{GDBN} can 18185write the index to a file, then you can put it into the symbol file 18186using @command{objcopy}. 18187 18188To create an index file, use the @code{save gdb-index} command: 18189 18190@table @code 18191@item save gdb-index @var{directory} 18192@kindex save gdb-index 18193Create an index file for each symbol file currently known by 18194@value{GDBN}. Each file is named after its corresponding symbol file, 18195with @samp{.gdb-index} appended, and is written into the given 18196@var{directory}. 18197@end table 18198 18199Once you have created an index file you can merge it into your symbol 18200file, here named @file{symfile}, using @command{objcopy}: 18201 18202@smallexample 18203$ objcopy --add-section .gdb_index=symfile.gdb-index \ 18204 --set-section-flags .gdb_index=readonly symfile symfile 18205@end smallexample 18206 18207@value{GDBN} will normally ignore older versions of @file{.gdb_index} 18208sections that have been deprecated. Usually they are deprecated because 18209they are missing a new feature or have performance issues. 18210To tell @value{GDBN} to use a deprecated index section anyway 18211specify @code{set use-deprecated-index-sections on}. 18212The default is @code{off}. 18213This can speed up startup, but may result in some functionality being lost. 18214@xref{Index Section Format}. 18215 18216@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on} 18217must be done before gdb reads the file. The following will not work: 18218 18219@smallexample 18220$ gdb -ex "set use-deprecated-index-sections on" <program> 18221@end smallexample 18222 18223Instead you must do, for example, 18224 18225@smallexample 18226$ gdb -iex "set use-deprecated-index-sections on" <program> 18227@end smallexample 18228 18229There are currently some limitation on indices. They only work when 18230for DWARF debugging information, not stabs. And, they do not 18231currently work for programs using Ada. 18232 18233@node Symbol Errors 18234@section Errors Reading Symbol Files 18235 18236While reading a symbol file, @value{GDBN} occasionally encounters problems, 18237such as symbol types it does not recognize, or known bugs in compiler 18238output. By default, @value{GDBN} does not notify you of such problems, since 18239they are relatively common and primarily of interest to people 18240debugging compilers. If you are interested in seeing information 18241about ill-constructed symbol tables, you can either ask @value{GDBN} to print 18242only one message about each such type of problem, no matter how many 18243times the problem occurs; or you can ask @value{GDBN} to print more messages, 18244to see how many times the problems occur, with the @code{set 18245complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and 18246Messages}). 18247 18248The messages currently printed, and their meanings, include: 18249 18250@table @code 18251@item inner block not inside outer block in @var{symbol} 18252 18253The symbol information shows where symbol scopes begin and end 18254(such as at the start of a function or a block of statements). This 18255error indicates that an inner scope block is not fully contained 18256in its outer scope blocks. 18257 18258@value{GDBN} circumvents the problem by treating the inner block as if it had 18259the same scope as the outer block. In the error message, @var{symbol} 18260may be shown as ``@code{(don't know)}'' if the outer block is not a 18261function. 18262 18263@item block at @var{address} out of order 18264 18265The symbol information for symbol scope blocks should occur in 18266order of increasing addresses. This error indicates that it does not 18267do so. 18268 18269@value{GDBN} does not circumvent this problem, and has trouble 18270locating symbols in the source file whose symbols it is reading. (You 18271can often determine what source file is affected by specifying 18272@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and 18273Messages}.) 18274 18275@item bad block start address patched 18276 18277The symbol information for a symbol scope block has a start address 18278smaller than the address of the preceding source line. This is known 18279to occur in the SunOS 4.1.1 (and earlier) C compiler. 18280 18281@value{GDBN} circumvents the problem by treating the symbol scope block as 18282starting on the previous source line. 18283 18284@item bad string table offset in symbol @var{n} 18285 18286@cindex foo 18287Symbol number @var{n} contains a pointer into the string table which is 18288larger than the size of the string table. 18289 18290@value{GDBN} circumvents the problem by considering the symbol to have the 18291name @code{foo}, which may cause other problems if many symbols end up 18292with this name. 18293 18294@item unknown symbol type @code{0x@var{nn}} 18295 18296The symbol information contains new data types that @value{GDBN} does 18297not yet know how to read. @code{0x@var{nn}} is the symbol type of the 18298uncomprehended information, in hexadecimal. 18299 18300@value{GDBN} circumvents the error by ignoring this symbol information. 18301This usually allows you to debug your program, though certain symbols 18302are not accessible. If you encounter such a problem and feel like 18303debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint 18304on @code{complain}, then go up to the function @code{read_dbx_symtab} 18305and examine @code{*bufp} to see the symbol. 18306 18307@item stub type has NULL name 18308 18309@value{GDBN} could not find the full definition for a struct or class. 18310 18311@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{} 18312The symbol information for a C@t{++} member function is missing some 18313information that recent versions of the compiler should have output for 18314it. 18315 18316@item info mismatch between compiler and debugger 18317 18318@value{GDBN} could not parse a type specification output by the compiler. 18319 18320@end table 18321 18322@node Data Files 18323@section GDB Data Files 18324 18325@cindex prefix for data files 18326@value{GDBN} will sometimes read an auxiliary data file. These files 18327are kept in a directory known as the @dfn{data directory}. 18328 18329You can set the data directory's name, and view the name @value{GDBN} 18330is currently using. 18331 18332@table @code 18333@kindex set data-directory 18334@item set data-directory @var{directory} 18335Set the directory which @value{GDBN} searches for auxiliary data files 18336to @var{directory}. 18337 18338@kindex show data-directory 18339@item show data-directory 18340Show the directory @value{GDBN} searches for auxiliary data files. 18341@end table 18342 18343@cindex default data directory 18344@cindex @samp{--with-gdb-datadir} 18345You can set the default data directory by using the configure-time 18346@samp{--with-gdb-datadir} option. If the data directory is inside 18347@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 18348@samp{--exec-prefix}), then the default data directory will be updated 18349automatically if the installed @value{GDBN} is moved to a new 18350location. 18351 18352The data directory may also be specified with the 18353@code{--data-directory} command line option. 18354@xref{Mode Options}. 18355 18356@node Targets 18357@chapter Specifying a Debugging Target 18358 18359@cindex debugging target 18360A @dfn{target} is the execution environment occupied by your program. 18361 18362Often, @value{GDBN} runs in the same host environment as your program; 18363in that case, the debugging target is specified as a side effect when 18364you use the @code{file} or @code{core} commands. When you need more 18365flexibility---for example, running @value{GDBN} on a physically separate 18366host, or controlling a standalone system over a serial port or a 18367realtime system over a TCP/IP connection---you can use the @code{target} 18368command to specify one of the target types configured for @value{GDBN} 18369(@pxref{Target Commands, ,Commands for Managing Targets}). 18370 18371@cindex target architecture 18372It is possible to build @value{GDBN} for several different @dfn{target 18373architectures}. When @value{GDBN} is built like that, you can choose 18374one of the available architectures with the @kbd{set architecture} 18375command. 18376 18377@table @code 18378@kindex set architecture 18379@kindex show architecture 18380@item set architecture @var{arch} 18381This command sets the current target architecture to @var{arch}. The 18382value of @var{arch} can be @code{"auto"}, in addition to one of the 18383supported architectures. 18384 18385@item show architecture 18386Show the current target architecture. 18387 18388@item set processor 18389@itemx processor 18390@kindex set processor 18391@kindex show processor 18392These are alias commands for, respectively, @code{set architecture} 18393and @code{show architecture}. 18394@end table 18395 18396@menu 18397* Active Targets:: Active targets 18398* Target Commands:: Commands for managing targets 18399* Byte Order:: Choosing target byte order 18400@end menu 18401 18402@node Active Targets 18403@section Active Targets 18404 18405@cindex stacking targets 18406@cindex active targets 18407@cindex multiple targets 18408 18409There are multiple classes of targets such as: processes, executable files or 18410recording sessions. Core files belong to the process class, making core file 18411and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently 18412on multiple active targets, one in each class. This allows you to (for 18413example) start a process and inspect its activity, while still having access to 18414the executable file after the process finishes. Or if you start process 18415recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are 18416presented a virtual layer of the recording target, while the process target 18417remains stopped at the chronologically last point of the process execution. 18418 18419Use the @code{core-file} and @code{exec-file} commands to select a new core 18420file or executable target (@pxref{Files, ,Commands to Specify Files}). To 18421specify as a target a process that is already running, use the @code{attach} 18422command (@pxref{Attach, ,Debugging an Already-running Process}). 18423 18424@node Target Commands 18425@section Commands for Managing Targets 18426 18427@table @code 18428@item target @var{type} @var{parameters} 18429Connects the @value{GDBN} host environment to a target machine or 18430process. A target is typically a protocol for talking to debugging 18431facilities. You use the argument @var{type} to specify the type or 18432protocol of the target machine. 18433 18434Further @var{parameters} are interpreted by the target protocol, but 18435typically include things like device names or host names to connect 18436with, process numbers, and baud rates. 18437 18438The @code{target} command does not repeat if you press @key{RET} again 18439after executing the command. 18440 18441@kindex help target 18442@item help target 18443Displays the names of all targets available. To display targets 18444currently selected, use either @code{info target} or @code{info files} 18445(@pxref{Files, ,Commands to Specify Files}). 18446 18447@item help target @var{name} 18448Describe a particular target, including any parameters necessary to 18449select it. 18450 18451@kindex set gnutarget 18452@item set gnutarget @var{args} 18453@value{GDBN} uses its own library BFD to read your files. @value{GDBN} 18454knows whether it is reading an @dfn{executable}, 18455a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format 18456with the @code{set gnutarget} command. Unlike most @code{target} commands, 18457with @code{gnutarget} the @code{target} refers to a program, not a machine. 18458 18459@quotation 18460@emph{Warning:} To specify a file format with @code{set gnutarget}, 18461you must know the actual BFD name. 18462@end quotation 18463 18464@noindent 18465@xref{Files, , Commands to Specify Files}. 18466 18467@kindex show gnutarget 18468@item show gnutarget 18469Use the @code{show gnutarget} command to display what file format 18470@code{gnutarget} is set to read. If you have not set @code{gnutarget}, 18471@value{GDBN} will determine the file format for each file automatically, 18472and @code{show gnutarget} displays @samp{The current BFD target is "auto"}. 18473@end table 18474 18475@cindex common targets 18476Here are some common targets (available, or not, depending on the GDB 18477configuration): 18478 18479@table @code 18480@kindex target 18481@item target exec @var{program} 18482@cindex executable file target 18483An executable file. @samp{target exec @var{program}} is the same as 18484@samp{exec-file @var{program}}. 18485 18486@item target core @var{filename} 18487@cindex core dump file target 18488A core dump file. @samp{target core @var{filename}} is the same as 18489@samp{core-file @var{filename}}. 18490 18491@item target remote @var{medium} 18492@cindex remote target 18493A remote system connected to @value{GDBN} via a serial line or network 18494connection. This command tells @value{GDBN} to use its own remote 18495protocol over @var{medium} for debugging. @xref{Remote Debugging}. 18496 18497For example, if you have a board connected to @file{/dev/ttya} on the 18498machine running @value{GDBN}, you could say: 18499 18500@smallexample 18501target remote /dev/ttya 18502@end smallexample 18503 18504@code{target remote} supports the @code{load} command. This is only 18505useful if you have some other way of getting the stub to the target 18506system, and you can put it somewhere in memory where it won't get 18507clobbered by the download. 18508 18509@item target sim @r{[}@var{simargs}@r{]} @dots{} 18510@cindex built-in simulator target 18511Builtin CPU simulator. @value{GDBN} includes simulators for most architectures. 18512In general, 18513@smallexample 18514 target sim 18515 load 18516 run 18517@end smallexample 18518@noindent 18519works; however, you cannot assume that a specific memory map, device 18520drivers, or even basic I/O is available, although some simulators do 18521provide these. For info about any processor-specific simulator details, 18522see the appropriate section in @ref{Embedded Processors, ,Embedded 18523Processors}. 18524 18525@item target native 18526@cindex native target 18527Setup for local/native process debugging. Useful to make the 18528@code{run} command spawn native processes (likewise @code{attach}, 18529etc.@:) even when @code{set auto-connect-native-target} is @code{off} 18530(@pxref{set auto-connect-native-target}). 18531 18532@end table 18533 18534Different targets are available on different configurations of @value{GDBN}; 18535your configuration may have more or fewer targets. 18536 18537Many remote targets require you to download the executable's code once 18538you've successfully established a connection. You may wish to control 18539various aspects of this process. 18540 18541@table @code 18542 18543@item set hash 18544@kindex set hash@r{, for remote monitors} 18545@cindex hash mark while downloading 18546This command controls whether a hash mark @samp{#} is displayed while 18547downloading a file to the remote monitor. If on, a hash mark is 18548displayed after each S-record is successfully downloaded to the 18549monitor. 18550 18551@item show hash 18552@kindex show hash@r{, for remote monitors} 18553Show the current status of displaying the hash mark. 18554 18555@item set debug monitor 18556@kindex set debug monitor 18557@cindex display remote monitor communications 18558Enable or disable display of communications messages between 18559@value{GDBN} and the remote monitor. 18560 18561@item show debug monitor 18562@kindex show debug monitor 18563Show the current status of displaying communications between 18564@value{GDBN} and the remote monitor. 18565@end table 18566 18567@table @code 18568 18569@kindex load @var{filename} 18570@item load @var{filename} 18571@anchor{load} 18572Depending on what remote debugging facilities are configured into 18573@value{GDBN}, the @code{load} command may be available. Where it exists, it 18574is meant to make @var{filename} (an executable) available for debugging 18575on the remote system---by downloading, or dynamic linking, for example. 18576@code{load} also records the @var{filename} symbol table in @value{GDBN}, like 18577the @code{add-symbol-file} command. 18578 18579If your @value{GDBN} does not have a @code{load} command, attempting to 18580execute it gets the error message ``@code{You can't do that when your 18581target is @dots{}}'' 18582 18583The file is loaded at whatever address is specified in the executable. 18584For some object file formats, you can specify the load address when you 18585link the program; for other formats, like a.out, the object file format 18586specifies a fixed address. 18587@c FIXME! This would be a good place for an xref to the GNU linker doc. 18588 18589Depending on the remote side capabilities, @value{GDBN} may be able to 18590load programs into flash memory. 18591 18592@code{load} does not repeat if you press @key{RET} again after using it. 18593@end table 18594 18595@node Byte Order 18596@section Choosing Target Byte Order 18597 18598@cindex choosing target byte order 18599@cindex target byte order 18600 18601Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH, 18602offer the ability to run either big-endian or little-endian byte 18603orders. Usually the executable or symbol will include a bit to 18604designate the endian-ness, and you will not need to worry about 18605which to use. However, you may still find it useful to adjust 18606@value{GDBN}'s idea of processor endian-ness manually. 18607 18608@table @code 18609@kindex set endian 18610@item set endian big 18611Instruct @value{GDBN} to assume the target is big-endian. 18612 18613@item set endian little 18614Instruct @value{GDBN} to assume the target is little-endian. 18615 18616@item set endian auto 18617Instruct @value{GDBN} to use the byte order associated with the 18618executable. 18619 18620@item show endian 18621Display @value{GDBN}'s current idea of the target byte order. 18622 18623@end table 18624 18625Note that these commands merely adjust interpretation of symbolic 18626data on the host, and that they have absolutely no effect on the 18627target system. 18628 18629 18630@node Remote Debugging 18631@chapter Debugging Remote Programs 18632@cindex remote debugging 18633 18634If you are trying to debug a program running on a machine that cannot run 18635@value{GDBN} in the usual way, it is often useful to use remote debugging. 18636For example, you might use remote debugging on an operating system kernel, 18637or on a small system which does not have a general purpose operating system 18638powerful enough to run a full-featured debugger. 18639 18640Some configurations of @value{GDBN} have special serial or TCP/IP interfaces 18641to make this work with particular debugging targets. In addition, 18642@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN}, 18643but not specific to any particular target system) which you can use if you 18644write the remote stubs---the code that runs on the remote system to 18645communicate with @value{GDBN}. 18646 18647Other remote targets may be available in your 18648configuration of @value{GDBN}; use @code{help target} to list them. 18649 18650@menu 18651* Connecting:: Connecting to a remote target 18652* File Transfer:: Sending files to a remote system 18653* Server:: Using the gdbserver program 18654* Remote Configuration:: Remote configuration 18655* Remote Stub:: Implementing a remote stub 18656@end menu 18657 18658@node Connecting 18659@section Connecting to a Remote Target 18660 18661On the @value{GDBN} host machine, you will need an unstripped copy of 18662your program, since @value{GDBN} needs symbol and debugging information. 18663Start up @value{GDBN} as usual, using the name of the local copy of your 18664program as the first argument. 18665 18666@cindex @code{target remote} 18667@value{GDBN} can communicate with the target over a serial line, or 18668over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In 18669each case, @value{GDBN} uses the same protocol for debugging your 18670program; only the medium carrying the debugging packets varies. The 18671@code{target remote} command establishes a connection to the target. 18672Its arguments indicate which medium to use: 18673 18674@table @code 18675 18676@item target remote @var{serial-device} 18677@cindex serial line, @code{target remote} 18678Use @var{serial-device} to communicate with the target. For example, 18679to use a serial line connected to the device named @file{/dev/ttyb}: 18680 18681@smallexample 18682target remote /dev/ttyb 18683@end smallexample 18684 18685If you're using a serial line, you may want to give @value{GDBN} the 18686@samp{--baud} option, or use the @code{set serial baud} command 18687(@pxref{Remote Configuration, set serial baud}) before the 18688@code{target} command. 18689 18690@item target remote @code{@var{host}:@var{port}} 18691@itemx target remote @code{tcp:@var{host}:@var{port}} 18692@cindex @acronym{TCP} port, @code{target remote} 18693Debug using a @acronym{TCP} connection to @var{port} on @var{host}. 18694The @var{host} may be either a host name or a numeric @acronym{IP} 18695address; @var{port} must be a decimal number. The @var{host} could be 18696the target machine itself, if it is directly connected to the net, or 18697it might be a terminal server which in turn has a serial line to the 18698target. 18699 18700For example, to connect to port 2828 on a terminal server named 18701@code{manyfarms}: 18702 18703@smallexample 18704target remote manyfarms:2828 18705@end smallexample 18706 18707If your remote target is actually running on the same machine as your 18708debugger session (e.g.@: a simulator for your target running on the 18709same host), you can omit the hostname. For example, to connect to 18710port 1234 on your local machine: 18711 18712@smallexample 18713target remote :1234 18714@end smallexample 18715@noindent 18716 18717Note that the colon is still required here. 18718 18719@item target remote @code{udp:@var{host}:@var{port}} 18720@cindex @acronym{UDP} port, @code{target remote} 18721Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to 18722connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}: 18723 18724@smallexample 18725target remote udp:manyfarms:2828 18726@end smallexample 18727 18728When using a @acronym{UDP} connection for remote debugging, you should 18729keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP} 18730can silently drop packets on busy or unreliable networks, which will 18731cause havoc with your debugging session. 18732 18733@item target remote | @var{command} 18734@cindex pipe, @code{target remote} to 18735Run @var{command} in the background and communicate with it using a 18736pipe. The @var{command} is a shell command, to be parsed and expanded 18737by the system's command shell, @code{/bin/sh}; it should expect remote 18738protocol packets on its standard input, and send replies on its 18739standard output. You could use this to run a stand-alone simulator 18740that speaks the remote debugging protocol, to make net connections 18741using programs like @code{ssh}, or for other similar tricks. 18742 18743If @var{command} closes its standard output (perhaps by exiting), 18744@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the 18745program has already exited, this will have no effect.) 18746 18747@end table 18748 18749Once the connection has been established, you can use all the usual 18750commands to examine and change data. The remote program is already 18751running; you can use @kbd{step} and @kbd{continue}, and you do not 18752need to use @kbd{run}. 18753 18754@cindex interrupting remote programs 18755@cindex remote programs, interrupting 18756Whenever @value{GDBN} is waiting for the remote program, if you type the 18757interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the 18758program. This may or may not succeed, depending in part on the hardware 18759and the serial drivers the remote system uses. If you type the 18760interrupt character once again, @value{GDBN} displays this prompt: 18761 18762@smallexample 18763Interrupted while waiting for the program. 18764Give up (and stop debugging it)? (y or n) 18765@end smallexample 18766 18767If you type @kbd{y}, @value{GDBN} abandons the remote debugging session. 18768(If you decide you want to try again later, you can use @samp{target 18769remote} again to connect once more.) If you type @kbd{n}, @value{GDBN} 18770goes back to waiting. 18771 18772@table @code 18773@kindex detach (remote) 18774@item detach 18775When you have finished debugging the remote program, you can use the 18776@code{detach} command to release it from @value{GDBN} control. 18777Detaching from the target normally resumes its execution, but the results 18778will depend on your particular remote stub. After the @code{detach} 18779command, @value{GDBN} is free to connect to another target. 18780 18781@kindex disconnect 18782@item disconnect 18783The @code{disconnect} command behaves like @code{detach}, except that 18784the target is generally not resumed. It will wait for @value{GDBN} 18785(this instance or another one) to connect and continue debugging. After 18786the @code{disconnect} command, @value{GDBN} is again free to connect to 18787another target. 18788 18789@cindex send command to remote monitor 18790@cindex extend @value{GDBN} for remote targets 18791@cindex add new commands for external monitor 18792@kindex monitor 18793@item monitor @var{cmd} 18794This command allows you to send arbitrary commands directly to the 18795remote monitor. Since @value{GDBN} doesn't care about the commands it 18796sends like this, this command is the way to extend @value{GDBN}---you 18797can add new commands that only the external monitor will understand 18798and implement. 18799@end table 18800 18801@node File Transfer 18802@section Sending files to a remote system 18803@cindex remote target, file transfer 18804@cindex file transfer 18805@cindex sending files to remote systems 18806 18807Some remote targets offer the ability to transfer files over the same 18808connection used to communicate with @value{GDBN}. This is convenient 18809for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems 18810running @code{gdbserver} over a network interface. For other targets, 18811e.g.@: embedded devices with only a single serial port, this may be 18812the only way to upload or download files. 18813 18814Not all remote targets support these commands. 18815 18816@table @code 18817@kindex remote put 18818@item remote put @var{hostfile} @var{targetfile} 18819Copy file @var{hostfile} from the host system (the machine running 18820@value{GDBN}) to @var{targetfile} on the target system. 18821 18822@kindex remote get 18823@item remote get @var{targetfile} @var{hostfile} 18824Copy file @var{targetfile} from the target system to @var{hostfile} 18825on the host system. 18826 18827@kindex remote delete 18828@item remote delete @var{targetfile} 18829Delete @var{targetfile} from the target system. 18830 18831@end table 18832 18833@node Server 18834@section Using the @code{gdbserver} Program 18835 18836@kindex gdbserver 18837@cindex remote connection without stubs 18838@code{gdbserver} is a control program for Unix-like systems, which 18839allows you to connect your program with a remote @value{GDBN} via 18840@code{target remote}---but without linking in the usual debugging stub. 18841 18842@code{gdbserver} is not a complete replacement for the debugging stubs, 18843because it requires essentially the same operating-system facilities 18844that @value{GDBN} itself does. In fact, a system that can run 18845@code{gdbserver} to connect to a remote @value{GDBN} could also run 18846@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless, 18847because it is a much smaller program than @value{GDBN} itself. It is 18848also easier to port than all of @value{GDBN}, so you may be able to get 18849started more quickly on a new system by using @code{gdbserver}. 18850Finally, if you develop code for real-time systems, you may find that 18851the tradeoffs involved in real-time operation make it more convenient to 18852do as much development work as possible on another system, for example 18853by cross-compiling. You can use @code{gdbserver} to make a similar 18854choice for debugging. 18855 18856@value{GDBN} and @code{gdbserver} communicate via either a serial line 18857or a TCP connection, using the standard @value{GDBN} remote serial 18858protocol. 18859 18860@quotation 18861@emph{Warning:} @code{gdbserver} does not have any built-in security. 18862Do not run @code{gdbserver} connected to any public network; a 18863@value{GDBN} connection to @code{gdbserver} provides access to the 18864target system with the same privileges as the user running 18865@code{gdbserver}. 18866@end quotation 18867 18868@subsection Running @code{gdbserver} 18869@cindex arguments, to @code{gdbserver} 18870@cindex @code{gdbserver}, command-line arguments 18871 18872Run @code{gdbserver} on the target system. You need a copy of the 18873program you want to debug, including any libraries it requires. 18874@code{gdbserver} does not need your program's symbol table, so you can 18875strip the program if necessary to save space. @value{GDBN} on the host 18876system does all the symbol handling. 18877 18878To use the server, you must tell it how to communicate with @value{GDBN}; 18879the name of your program; and the arguments for your program. The usual 18880syntax is: 18881 18882@smallexample 18883target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ] 18884@end smallexample 18885 18886@var{comm} is either a device name (to use a serial line), or a TCP 18887hostname and portnumber, or @code{-} or @code{stdio} to use 18888stdin/stdout of @code{gdbserver}. 18889For example, to debug Emacs with the argument 18890@samp{foo.txt} and communicate with @value{GDBN} over the serial port 18891@file{/dev/com1}: 18892 18893@smallexample 18894target> gdbserver /dev/com1 emacs foo.txt 18895@end smallexample 18896 18897@code{gdbserver} waits passively for the host @value{GDBN} to communicate 18898with it. 18899 18900To use a TCP connection instead of a serial line: 18901 18902@smallexample 18903target> gdbserver host:2345 emacs foo.txt 18904@end smallexample 18905 18906The only difference from the previous example is the first argument, 18907specifying that you are communicating with the host @value{GDBN} via 18908TCP. The @samp{host:2345} argument means that @code{gdbserver} is to 18909expect a TCP connection from machine @samp{host} to local TCP port 2345. 18910(Currently, the @samp{host} part is ignored.) You can choose any number 18911you want for the port number as long as it does not conflict with any 18912TCP ports already in use on the target system (for example, @code{23} is 18913reserved for @code{telnet}).@footnote{If you choose a port number that 18914conflicts with another service, @code{gdbserver} prints an error message 18915and exits.} You must use the same port number with the host @value{GDBN} 18916@code{target remote} command. 18917 18918The @code{stdio} connection is useful when starting @code{gdbserver} 18919with ssh: 18920 18921@smallexample 18922(gdb) target remote | ssh -T hostname gdbserver - hello 18923@end smallexample 18924 18925The @samp{-T} option to ssh is provided because we don't need a remote pty, 18926and we don't want escape-character handling. Ssh does this by default when 18927a command is provided, the flag is provided to make it explicit. 18928You could elide it if you want to. 18929 18930Programs started with stdio-connected gdbserver have @file{/dev/null} for 18931@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for 18932display through a pipe connected to gdbserver. 18933Both @code{stdout} and @code{stderr} use the same pipe. 18934 18935@subsubsection Attaching to a Running Program 18936@cindex attach to a program, @code{gdbserver} 18937@cindex @option{--attach}, @code{gdbserver} option 18938 18939On some targets, @code{gdbserver} can also attach to running programs. 18940This is accomplished via the @code{--attach} argument. The syntax is: 18941 18942@smallexample 18943target> gdbserver --attach @var{comm} @var{pid} 18944@end smallexample 18945 18946@var{pid} is the process ID of a currently running process. It isn't necessary 18947to point @code{gdbserver} at a binary for the running process. 18948 18949@pindex pidof 18950You can debug processes by name instead of process ID if your target has the 18951@code{pidof} utility: 18952 18953@smallexample 18954target> gdbserver --attach @var{comm} `pidof @var{program}` 18955@end smallexample 18956 18957In case more than one copy of @var{program} is running, or @var{program} 18958has multiple threads, most versions of @code{pidof} support the 18959@code{-s} option to only return the first process ID. 18960 18961@subsubsection Multi-Process Mode for @code{gdbserver} 18962@cindex @code{gdbserver}, multiple processes 18963@cindex multiple processes with @code{gdbserver} 18964 18965When you connect to @code{gdbserver} using @code{target remote}, 18966@code{gdbserver} debugs the specified program only once. When the 18967program exits, or you detach from it, @value{GDBN} closes the connection 18968and @code{gdbserver} exits. 18969 18970If you connect using @kbd{target extended-remote}, @code{gdbserver} 18971enters multi-process mode. When the debugged program exits, or you 18972detach from it, @value{GDBN} stays connected to @code{gdbserver} even 18973though no program is running. The @code{run} and @code{attach} 18974commands instruct @code{gdbserver} to run or attach to a new program. 18975The @code{run} command uses @code{set remote exec-file} (@pxref{set 18976remote exec-file}) to select the program to run. Command line 18977arguments are supported, except for wildcard expansion and I/O 18978redirection (@pxref{Arguments}). 18979 18980@cindex @option{--multi}, @code{gdbserver} option 18981To start @code{gdbserver} without supplying an initial command to run 18982or process ID to attach, use the @option{--multi} command line option. 18983Then you can connect using @kbd{target extended-remote} and start 18984the program you want to debug. 18985 18986In multi-process mode @code{gdbserver} does not automatically exit unless you 18987use the option @option{--once}. You can terminate it by using 18988@code{monitor exit} (@pxref{Monitor Commands for gdbserver}). Note that the 18989conditions under which @code{gdbserver} terminates depend on how @value{GDBN} 18990connects to it (@kbd{target remote} or @kbd{target extended-remote}). The 18991@option{--multi} option to @code{gdbserver} has no influence on that. 18992 18993@subsubsection TCP port allocation lifecycle of @code{gdbserver} 18994 18995This section applies only when @code{gdbserver} is run to listen on a TCP port. 18996 18997@code{gdbserver} normally terminates after all of its debugged processes have 18998terminated in @kbd{target remote} mode. On the other hand, for @kbd{target 18999extended-remote}, @code{gdbserver} stays running even with no processes left. 19000@value{GDBN} normally terminates the spawned debugged process on its exit, 19001which normally also terminates @code{gdbserver} in the @kbd{target remote} 19002mode. Therefore, when the connection drops unexpectedly, and @value{GDBN} 19003cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver} 19004stays running even in the @kbd{target remote} mode. 19005 19006When @code{gdbserver} stays running, @value{GDBN} can connect to it again later. 19007Such reconnecting is useful for features like @ref{disconnected tracing}. For 19008completeness, at most one @value{GDBN} can be connected at a time. 19009 19010@cindex @option{--once}, @code{gdbserver} option 19011By default, @code{gdbserver} keeps the listening TCP port open, so that 19012subsequent connections are possible. However, if you start @code{gdbserver} 19013with the @option{--once} option, it will stop listening for any further 19014connection attempts after connecting to the first @value{GDBN} session. This 19015means no further connections to @code{gdbserver} will be possible after the 19016first one. It also means @code{gdbserver} will terminate after the first 19017connection with remote @value{GDBN} has closed, even for unexpectedly closed 19018connections and even in the @kbd{target extended-remote} mode. The 19019@option{--once} option allows reusing the same port number for connecting to 19020multiple instances of @code{gdbserver} running on the same host, since each 19021instance closes its port after the first connection. 19022 19023@anchor{Other Command-Line Arguments for gdbserver} 19024@subsubsection Other Command-Line Arguments for @code{gdbserver} 19025 19026@cindex @option{--debug}, @code{gdbserver} option 19027The @option{--debug} option tells @code{gdbserver} to display extra 19028status information about the debugging process. 19029@cindex @option{--remote-debug}, @code{gdbserver} option 19030The @option{--remote-debug} option tells @code{gdbserver} to display 19031remote protocol debug output. These options are intended for 19032@code{gdbserver} development and for bug reports to the developers. 19033 19034@cindex @option{--debug-format}, @code{gdbserver} option 19035The @option{--debug-format=option1[,option2,...]} option tells 19036@code{gdbserver} to include additional information in each output. 19037Possible options are: 19038 19039@table @code 19040@item none 19041Turn off all extra information in debugging output. 19042@item all 19043Turn on all extra information in debugging output. 19044@item timestamps 19045Include a timestamp in each line of debugging output. 19046@end table 19047 19048Options are processed in order. Thus, for example, if @option{none} 19049appears last then no additional information is added to debugging output. 19050 19051@cindex @option{--wrapper}, @code{gdbserver} option 19052The @option{--wrapper} option specifies a wrapper to launch programs 19053for debugging. The option should be followed by the name of the 19054wrapper, then any command-line arguments to pass to the wrapper, then 19055@kbd{--} indicating the end of the wrapper arguments. 19056 19057@code{gdbserver} runs the specified wrapper program with a combined 19058command line including the wrapper arguments, then the name of the 19059program to debug, then any arguments to the program. The wrapper 19060runs until it executes your program, and then @value{GDBN} gains control. 19061 19062You can use any program that eventually calls @code{execve} with 19063its arguments as a wrapper. Several standard Unix utilities do 19064this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 19065with @code{exec "$@@"} will also work. 19066 19067For example, you can use @code{env} to pass an environment variable to 19068the debugged program, without setting the variable in @code{gdbserver}'s 19069environment: 19070 19071@smallexample 19072$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog 19073@end smallexample 19074 19075@subsection Connecting to @code{gdbserver} 19076 19077Run @value{GDBN} on the host system. 19078 19079First make sure you have the necessary symbol files. Load symbols for 19080your application using the @code{file} command before you connect. Use 19081@code{set sysroot} to locate target libraries (unless your @value{GDBN} 19082was compiled with the correct sysroot using @code{--with-sysroot}). 19083 19084The symbol file and target libraries must exactly match the executable 19085and libraries on the target, with one exception: the files on the host 19086system should not be stripped, even if the files on the target system 19087are. Mismatched or missing files will lead to confusing results 19088during debugging. On @sc{gnu}/Linux targets, mismatched or missing 19089files may also prevent @code{gdbserver} from debugging multi-threaded 19090programs. 19091 19092Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}). 19093For TCP connections, you must start up @code{gdbserver} prior to using 19094the @code{target remote} command. Otherwise you may get an error whose 19095text depends on the host system, but which usually looks something like 19096@samp{Connection refused}. Don't use the @code{load} 19097command in @value{GDBN} when using @code{gdbserver}, since the program is 19098already on the target. 19099 19100@subsection Monitor Commands for @code{gdbserver} 19101@cindex monitor commands, for @code{gdbserver} 19102@anchor{Monitor Commands for gdbserver} 19103 19104During a @value{GDBN} session using @code{gdbserver}, you can use the 19105@code{monitor} command to send special requests to @code{gdbserver}. 19106Here are the available commands. 19107 19108@table @code 19109@item monitor help 19110List the available monitor commands. 19111 19112@item monitor set debug 0 19113@itemx monitor set debug 1 19114Disable or enable general debugging messages. 19115 19116@item monitor set remote-debug 0 19117@itemx monitor set remote-debug 1 19118Disable or enable specific debugging messages associated with the remote 19119protocol (@pxref{Remote Protocol}). 19120 19121@item monitor set debug-format option1@r{[},option2,...@r{]} 19122Specify additional text to add to debugging messages. 19123Possible options are: 19124 19125@table @code 19126@item none 19127Turn off all extra information in debugging output. 19128@item all 19129Turn on all extra information in debugging output. 19130@item timestamps 19131Include a timestamp in each line of debugging output. 19132@end table 19133 19134Options are processed in order. Thus, for example, if @option{none} 19135appears last then no additional information is added to debugging output. 19136 19137@item monitor set libthread-db-search-path [PATH] 19138@cindex gdbserver, search path for @code{libthread_db} 19139When this command is issued, @var{path} is a colon-separated list of 19140directories to search for @code{libthread_db} (@pxref{Threads,,set 19141libthread-db-search-path}). If you omit @var{path}, 19142@samp{libthread-db-search-path} will be reset to its default value. 19143 19144The special entry @samp{$pdir} for @samp{libthread-db-search-path} is 19145not supported in @code{gdbserver}. 19146 19147@item monitor exit 19148Tell gdbserver to exit immediately. This command should be followed by 19149@code{disconnect} to close the debugging session. @code{gdbserver} will 19150detach from any attached processes and kill any processes it created. 19151Use @code{monitor exit} to terminate @code{gdbserver} at the end 19152of a multi-process mode debug session. 19153 19154@end table 19155 19156@subsection Tracepoints support in @code{gdbserver} 19157@cindex tracepoints support in @code{gdbserver} 19158 19159On some targets, @code{gdbserver} supports tracepoints, fast 19160tracepoints and static tracepoints. 19161 19162For fast or static tracepoints to work, a special library called the 19163@dfn{in-process agent} (IPA), must be loaded in the inferior process. 19164This library is built and distributed as an integral part of 19165@code{gdbserver}. In addition, support for static tracepoints 19166requires building the in-process agent library with static tracepoints 19167support. At present, the UST (LTTng Userspace Tracer, 19168@url{http://lttng.org/ust}) tracing engine is supported. This support 19169is automatically available if UST development headers are found in the 19170standard include path when @code{gdbserver} is built, or if 19171@code{gdbserver} was explicitly configured using @option{--with-ust} 19172to point at such headers. You can explicitly disable the support 19173using @option{--with-ust=no}. 19174 19175There are several ways to load the in-process agent in your program: 19176 19177@table @code 19178@item Specifying it as dependency at link time 19179 19180You can link your program dynamically with the in-process agent 19181library. On most systems, this is accomplished by adding 19182@code{-linproctrace} to the link command. 19183 19184@item Using the system's preloading mechanisms 19185 19186You can force loading the in-process agent at startup time by using 19187your system's support for preloading shared libraries. Many Unixes 19188support the concept of preloading user defined libraries. In most 19189cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so} 19190in the environment. See also the description of @code{gdbserver}'s 19191@option{--wrapper} command line option. 19192 19193@item Using @value{GDBN} to force loading the agent at run time 19194 19195On some systems, you can force the inferior to load a shared library, 19196by calling a dynamic loader function in the inferior that takes care 19197of dynamically looking up and loading a shared library. On most Unix 19198systems, the function is @code{dlopen}. You'll use the @code{call} 19199command for that. For example: 19200 19201@smallexample 19202(@value{GDBP}) call dlopen ("libinproctrace.so", ...) 19203@end smallexample 19204 19205Note that on most Unix systems, for the @code{dlopen} function to be 19206available, the program needs to be linked with @code{-ldl}. 19207@end table 19208 19209On systems that have a userspace dynamic loader, like most Unix 19210systems, when you connect to @code{gdbserver} using @code{target 19211remote}, you'll find that the program is stopped at the dynamic 19212loader's entry point, and no shared library has been loaded in the 19213program's address space yet, including the in-process agent. In that 19214case, before being able to use any of the fast or static tracepoints 19215features, you need to let the loader run and load the shared 19216libraries. The simplest way to do that is to run the program to the 19217main procedure. E.g., if debugging a C or C@t{++} program, start 19218@code{gdbserver} like so: 19219 19220@smallexample 19221$ gdbserver :9999 myprogram 19222@end smallexample 19223 19224Start GDB and connect to @code{gdbserver} like so, and run to main: 19225 19226@smallexample 19227$ gdb myprogram 19228(@value{GDBP}) target remote myhost:9999 192290x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2 19230(@value{GDBP}) b main 19231(@value{GDBP}) continue 19232@end smallexample 19233 19234The in-process tracing agent library should now be loaded into the 19235process; you can confirm it with the @code{info sharedlibrary} 19236command, which will list @file{libinproctrace.so} as loaded in the 19237process. You are now ready to install fast tracepoints, list static 19238tracepoint markers, probe static tracepoints markers, and start 19239tracing. 19240 19241@node Remote Configuration 19242@section Remote Configuration 19243 19244@kindex set remote 19245@kindex show remote 19246This section documents the configuration options available when 19247debugging remote programs. For the options related to the File I/O 19248extensions of the remote protocol, see @ref{system, 19249system-call-allowed}. 19250 19251@table @code 19252@item set remoteaddresssize @var{bits} 19253@cindex address size for remote targets 19254@cindex bits in remote address 19255Set the maximum size of address in a memory packet to the specified 19256number of bits. @value{GDBN} will mask off the address bits above 19257that number, when it passes addresses to the remote target. The 19258default value is the number of bits in the target's address. 19259 19260@item show remoteaddresssize 19261Show the current value of remote address size in bits. 19262 19263@item set serial baud @var{n} 19264@cindex baud rate for remote targets 19265Set the baud rate for the remote serial I/O to @var{n} baud. The 19266value is used to set the speed of the serial port used for debugging 19267remote targets. 19268 19269@item show serial baud 19270Show the current speed of the remote connection. 19271 19272@item set remotebreak 19273@cindex interrupt remote programs 19274@cindex BREAK signal instead of Ctrl-C 19275@anchor{set remotebreak} 19276If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote 19277when you type @kbd{Ctrl-c} to interrupt the program running 19278on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C} 19279character instead. The default is off, since most remote systems 19280expect to see @samp{Ctrl-C} as the interrupt signal. 19281 19282@item show remotebreak 19283Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to 19284interrupt the remote program. 19285 19286@item set remoteflow on 19287@itemx set remoteflow off 19288@kindex set remoteflow 19289Enable or disable hardware flow control (@code{RTS}/@code{CTS}) 19290on the serial port used to communicate to the remote target. 19291 19292@item show remoteflow 19293@kindex show remoteflow 19294Show the current setting of hardware flow control. 19295 19296@item set remotelogbase @var{base} 19297Set the base (a.k.a.@: radix) of logging serial protocol 19298communications to @var{base}. Supported values of @var{base} are: 19299@code{ascii}, @code{octal}, and @code{hex}. The default is 19300@code{ascii}. 19301 19302@item show remotelogbase 19303Show the current setting of the radix for logging remote serial 19304protocol. 19305 19306@item set remotelogfile @var{file} 19307@cindex record serial communications on file 19308Record remote serial communications on the named @var{file}. The 19309default is not to record at all. 19310 19311@item show remotelogfile. 19312Show the current setting of the file name on which to record the 19313serial communications. 19314 19315@item set remotetimeout @var{num} 19316@cindex timeout for serial communications 19317@cindex remote timeout 19318Set the timeout limit to wait for the remote target to respond to 19319@var{num} seconds. The default is 2 seconds. 19320 19321@item show remotetimeout 19322Show the current number of seconds to wait for the remote target 19323responses. 19324 19325@cindex limit hardware breakpoints and watchpoints 19326@cindex remote target, limit break- and watchpoints 19327@anchor{set remote hardware-watchpoint-limit} 19328@anchor{set remote hardware-breakpoint-limit} 19329@item set remote hardware-watchpoint-limit @var{limit} 19330@itemx set remote hardware-breakpoint-limit @var{limit} 19331Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or 19332watchpoints. A limit of -1, the default, is treated as unlimited. 19333 19334@cindex limit hardware watchpoints length 19335@cindex remote target, limit watchpoints length 19336@anchor{set remote hardware-watchpoint-length-limit} 19337@item set remote hardware-watchpoint-length-limit @var{limit} 19338Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of 19339a remote hardware watchpoint. A limit of -1, the default, is treated 19340as unlimited. 19341 19342@item show remote hardware-watchpoint-length-limit 19343Show the current limit (in bytes) of the maximum length of 19344a remote hardware watchpoint. 19345 19346@item set remote exec-file @var{filename} 19347@itemx show remote exec-file 19348@anchor{set remote exec-file} 19349@cindex executable file, for remote target 19350Select the file used for @code{run} with @code{target 19351extended-remote}. This should be set to a filename valid on the 19352target system. If it is not set, the target will use a default 19353filename (e.g.@: the last program run). 19354 19355@item set remote interrupt-sequence 19356@cindex interrupt remote programs 19357@cindex select Ctrl-C, BREAK or BREAK-g 19358Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or 19359@samp{BREAK-g} as the 19360sequence to the remote target in order to interrupt the execution. 19361@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which 19362is high level of serial line for some certain time. 19363Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g. 19364It is @code{BREAK} signal followed by character @code{g}. 19365 19366@item show interrupt-sequence 19367Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g} 19368is sent by @value{GDBN} to interrupt the remote program. 19369@code{BREAK-g} is BREAK signal followed by @code{g} and 19370also known as Magic SysRq g. 19371 19372@item set remote interrupt-on-connect 19373@cindex send interrupt-sequence on start 19374Specify whether interrupt-sequence is sent to remote target when 19375@value{GDBN} connects to it. This is mostly needed when you debug 19376Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g} 19377which is known as Magic SysRq g in order to connect @value{GDBN}. 19378 19379@item show interrupt-on-connect 19380Show whether interrupt-sequence is sent 19381to remote target when @value{GDBN} connects to it. 19382 19383@kindex set tcp 19384@kindex show tcp 19385@item set tcp auto-retry on 19386@cindex auto-retry, for remote TCP target 19387Enable auto-retry for remote TCP connections. This is useful if the remote 19388debugging agent is launched in parallel with @value{GDBN}; there is a race 19389condition because the agent may not become ready to accept the connection 19390before @value{GDBN} attempts to connect. When auto-retry is 19391enabled, if the initial attempt to connect fails, @value{GDBN} reattempts 19392to establish the connection using the timeout specified by 19393@code{set tcp connect-timeout}. 19394 19395@item set tcp auto-retry off 19396Do not auto-retry failed TCP connections. 19397 19398@item show tcp auto-retry 19399Show the current auto-retry setting. 19400 19401@item set tcp connect-timeout @var{seconds} 19402@itemx set tcp connect-timeout unlimited 19403@cindex connection timeout, for remote TCP target 19404@cindex timeout, for remote target connection 19405Set the timeout for establishing a TCP connection to the remote target to 19406@var{seconds}. The timeout affects both polling to retry failed connections 19407(enabled by @code{set tcp auto-retry on}) and waiting for connections 19408that are merely slow to complete, and represents an approximate cumulative 19409value. If @var{seconds} is @code{unlimited}, there is no timeout and 19410@value{GDBN} will keep attempting to establish a connection forever, 19411unless interrupted with @kbd{Ctrl-c}. The default is 15 seconds. 19412 19413@item show tcp connect-timeout 19414Show the current connection timeout setting. 19415@end table 19416 19417@cindex remote packets, enabling and disabling 19418The @value{GDBN} remote protocol autodetects the packets supported by 19419your debugging stub. If you need to override the autodetection, you 19420can use these commands to enable or disable individual packets. Each 19421packet can be set to @samp{on} (the remote target supports this 19422packet), @samp{off} (the remote target does not support this packet), 19423or @samp{auto} (detect remote target support for this packet). They 19424all default to @samp{auto}. For more information about each packet, 19425see @ref{Remote Protocol}. 19426 19427During normal use, you should not have to use any of these commands. 19428If you do, that may be a bug in your remote debugging stub, or a bug 19429in @value{GDBN}. You may want to report the problem to the 19430@value{GDBN} developers. 19431 19432For each packet @var{name}, the command to enable or disable the 19433packet is @code{set remote @var{name}-packet}. The available settings 19434are: 19435 19436@multitable @columnfractions 0.28 0.32 0.25 19437@item Command Name 19438@tab Remote Packet 19439@tab Related Features 19440 19441@item @code{fetch-register} 19442@tab @code{p} 19443@tab @code{info registers} 19444 19445@item @code{set-register} 19446@tab @code{P} 19447@tab @code{set} 19448 19449@item @code{binary-download} 19450@tab @code{X} 19451@tab @code{load}, @code{set} 19452 19453@item @code{read-aux-vector} 19454@tab @code{qXfer:auxv:read} 19455@tab @code{info auxv} 19456 19457@item @code{symbol-lookup} 19458@tab @code{qSymbol} 19459@tab Detecting multiple threads 19460 19461@item @code{attach} 19462@tab @code{vAttach} 19463@tab @code{attach} 19464 19465@item @code{verbose-resume} 19466@tab @code{vCont} 19467@tab Stepping or resuming multiple threads 19468 19469@item @code{run} 19470@tab @code{vRun} 19471@tab @code{run} 19472 19473@item @code{software-breakpoint} 19474@tab @code{Z0} 19475@tab @code{break} 19476 19477@item @code{hardware-breakpoint} 19478@tab @code{Z1} 19479@tab @code{hbreak} 19480 19481@item @code{write-watchpoint} 19482@tab @code{Z2} 19483@tab @code{watch} 19484 19485@item @code{read-watchpoint} 19486@tab @code{Z3} 19487@tab @code{rwatch} 19488 19489@item @code{access-watchpoint} 19490@tab @code{Z4} 19491@tab @code{awatch} 19492 19493@item @code{target-features} 19494@tab @code{qXfer:features:read} 19495@tab @code{set architecture} 19496 19497@item @code{library-info} 19498@tab @code{qXfer:libraries:read} 19499@tab @code{info sharedlibrary} 19500 19501@item @code{memory-map} 19502@tab @code{qXfer:memory-map:read} 19503@tab @code{info mem} 19504 19505@item @code{read-sdata-object} 19506@tab @code{qXfer:sdata:read} 19507@tab @code{print $_sdata} 19508 19509@item @code{read-spu-object} 19510@tab @code{qXfer:spu:read} 19511@tab @code{info spu} 19512 19513@item @code{write-spu-object} 19514@tab @code{qXfer:spu:write} 19515@tab @code{info spu} 19516 19517@item @code{read-siginfo-object} 19518@tab @code{qXfer:siginfo:read} 19519@tab @code{print $_siginfo} 19520 19521@item @code{write-siginfo-object} 19522@tab @code{qXfer:siginfo:write} 19523@tab @code{set $_siginfo} 19524 19525@item @code{threads} 19526@tab @code{qXfer:threads:read} 19527@tab @code{info threads} 19528 19529@item @code{get-thread-local-@*storage-address} 19530@tab @code{qGetTLSAddr} 19531@tab Displaying @code{__thread} variables 19532 19533@item @code{get-thread-information-block-address} 19534@tab @code{qGetTIBAddr} 19535@tab Display MS-Windows Thread Information Block. 19536 19537@item @code{search-memory} 19538@tab @code{qSearch:memory} 19539@tab @code{find} 19540 19541@item @code{supported-packets} 19542@tab @code{qSupported} 19543@tab Remote communications parameters 19544 19545@item @code{pass-signals} 19546@tab @code{QPassSignals} 19547@tab @code{handle @var{signal}} 19548 19549@item @code{program-signals} 19550@tab @code{QProgramSignals} 19551@tab @code{handle @var{signal}} 19552 19553@item @code{hostio-close-packet} 19554@tab @code{vFile:close} 19555@tab @code{remote get}, @code{remote put} 19556 19557@item @code{hostio-open-packet} 19558@tab @code{vFile:open} 19559@tab @code{remote get}, @code{remote put} 19560 19561@item @code{hostio-pread-packet} 19562@tab @code{vFile:pread} 19563@tab @code{remote get}, @code{remote put} 19564 19565@item @code{hostio-pwrite-packet} 19566@tab @code{vFile:pwrite} 19567@tab @code{remote get}, @code{remote put} 19568 19569@item @code{hostio-unlink-packet} 19570@tab @code{vFile:unlink} 19571@tab @code{remote delete} 19572 19573@item @code{hostio-readlink-packet} 19574@tab @code{vFile:readlink} 19575@tab Host I/O 19576 19577@item @code{noack-packet} 19578@tab @code{QStartNoAckMode} 19579@tab Packet acknowledgment 19580 19581@item @code{osdata} 19582@tab @code{qXfer:osdata:read} 19583@tab @code{info os} 19584 19585@item @code{query-attached} 19586@tab @code{qAttached} 19587@tab Querying remote process attach state. 19588 19589@item @code{trace-buffer-size} 19590@tab @code{QTBuffer:size} 19591@tab @code{set trace-buffer-size} 19592 19593@item @code{trace-status} 19594@tab @code{qTStatus} 19595@tab @code{tstatus} 19596 19597@item @code{traceframe-info} 19598@tab @code{qXfer:traceframe-info:read} 19599@tab Traceframe info 19600 19601@item @code{install-in-trace} 19602@tab @code{InstallInTrace} 19603@tab Install tracepoint in tracing 19604 19605@item @code{disable-randomization} 19606@tab @code{QDisableRandomization} 19607@tab @code{set disable-randomization} 19608 19609@item @code{conditional-breakpoints-packet} 19610@tab @code{Z0 and Z1} 19611@tab @code{Support for target-side breakpoint condition evaluation} 19612@end multitable 19613 19614@node Remote Stub 19615@section Implementing a Remote Stub 19616 19617@cindex debugging stub, example 19618@cindex remote stub, example 19619@cindex stub example, remote debugging 19620The stub files provided with @value{GDBN} implement the target side of the 19621communication protocol, and the @value{GDBN} side is implemented in the 19622@value{GDBN} source file @file{remote.c}. Normally, you can simply allow 19623these subroutines to communicate, and ignore the details. (If you're 19624implementing your own stub file, you can still ignore the details: start 19625with one of the existing stub files. @file{sparc-stub.c} is the best 19626organized, and therefore the easiest to read.) 19627 19628@cindex remote serial debugging, overview 19629To debug a program running on another machine (the debugging 19630@dfn{target} machine), you must first arrange for all the usual 19631prerequisites for the program to run by itself. For example, for a C 19632program, you need: 19633 19634@enumerate 19635@item 19636A startup routine to set up the C runtime environment; these usually 19637have a name like @file{crt0}. The startup routine may be supplied by 19638your hardware supplier, or you may have to write your own. 19639 19640@item 19641A C subroutine library to support your program's 19642subroutine calls, notably managing input and output. 19643 19644@item 19645A way of getting your program to the other machine---for example, a 19646download program. These are often supplied by the hardware 19647manufacturer, but you may have to write your own from hardware 19648documentation. 19649@end enumerate 19650 19651The next step is to arrange for your program to use a serial port to 19652communicate with the machine where @value{GDBN} is running (the @dfn{host} 19653machine). In general terms, the scheme looks like this: 19654 19655@table @emph 19656@item On the host, 19657@value{GDBN} already understands how to use this protocol; when everything 19658else is set up, you can simply use the @samp{target remote} command 19659(@pxref{Targets,,Specifying a Debugging Target}). 19660 19661@item On the target, 19662you must link with your program a few special-purpose subroutines that 19663implement the @value{GDBN} remote serial protocol. The file containing these 19664subroutines is called a @dfn{debugging stub}. 19665 19666On certain remote targets, you can use an auxiliary program 19667@code{gdbserver} instead of linking a stub into your program. 19668@xref{Server,,Using the @code{gdbserver} Program}, for details. 19669@end table 19670 19671The debugging stub is specific to the architecture of the remote 19672machine; for example, use @file{sparc-stub.c} to debug programs on 19673@sc{sparc} boards. 19674 19675@cindex remote serial stub list 19676These working remote stubs are distributed with @value{GDBN}: 19677 19678@table @code 19679 19680@item i386-stub.c 19681@cindex @file{i386-stub.c} 19682@cindex Intel 19683@cindex i386 19684For Intel 386 and compatible architectures. 19685 19686@item m68k-stub.c 19687@cindex @file{m68k-stub.c} 19688@cindex Motorola 680x0 19689@cindex m680x0 19690For Motorola 680x0 architectures. 19691 19692@item sh-stub.c 19693@cindex @file{sh-stub.c} 19694@cindex Renesas 19695@cindex SH 19696For Renesas SH architectures. 19697 19698@item sparc-stub.c 19699@cindex @file{sparc-stub.c} 19700@cindex Sparc 19701For @sc{sparc} architectures. 19702 19703@item sparcl-stub.c 19704@cindex @file{sparcl-stub.c} 19705@cindex Fujitsu 19706@cindex SparcLite 19707For Fujitsu @sc{sparclite} architectures. 19708 19709@end table 19710 19711The @file{README} file in the @value{GDBN} distribution may list other 19712recently added stubs. 19713 19714@menu 19715* Stub Contents:: What the stub can do for you 19716* Bootstrapping:: What you must do for the stub 19717* Debug Session:: Putting it all together 19718@end menu 19719 19720@node Stub Contents 19721@subsection What the Stub Can Do for You 19722 19723@cindex remote serial stub 19724The debugging stub for your architecture supplies these three 19725subroutines: 19726 19727@table @code 19728@item set_debug_traps 19729@findex set_debug_traps 19730@cindex remote serial stub, initialization 19731This routine arranges for @code{handle_exception} to run when your 19732program stops. You must call this subroutine explicitly in your 19733program's startup code. 19734 19735@item handle_exception 19736@findex handle_exception 19737@cindex remote serial stub, main routine 19738This is the central workhorse, but your program never calls it 19739explicitly---the setup code arranges for @code{handle_exception} to 19740run when a trap is triggered. 19741 19742@code{handle_exception} takes control when your program stops during 19743execution (for example, on a breakpoint), and mediates communications 19744with @value{GDBN} on the host machine. This is where the communications 19745protocol is implemented; @code{handle_exception} acts as the @value{GDBN} 19746representative on the target machine. It begins by sending summary 19747information on the state of your program, then continues to execute, 19748retrieving and transmitting any information @value{GDBN} needs, until you 19749execute a @value{GDBN} command that makes your program resume; at that point, 19750@code{handle_exception} returns control to your own code on the target 19751machine. 19752 19753@item breakpoint 19754@cindex @code{breakpoint} subroutine, remote 19755Use this auxiliary subroutine to make your program contain a 19756breakpoint. Depending on the particular situation, this may be the only 19757way for @value{GDBN} to get control. For instance, if your target 19758machine has some sort of interrupt button, you won't need to call this; 19759pressing the interrupt button transfers control to 19760@code{handle_exception}---in effect, to @value{GDBN}. On some machines, 19761simply receiving characters on the serial port may also trigger a trap; 19762again, in that situation, you don't need to call @code{breakpoint} from 19763your own program---simply running @samp{target remote} from the host 19764@value{GDBN} session gets control. 19765 19766Call @code{breakpoint} if none of these is true, or if you simply want 19767to make certain your program stops at a predetermined point for the 19768start of your debugging session. 19769@end table 19770 19771@node Bootstrapping 19772@subsection What You Must Do for the Stub 19773 19774@cindex remote stub, support routines 19775The debugging stubs that come with @value{GDBN} are set up for a particular 19776chip architecture, but they have no information about the rest of your 19777debugging target machine. 19778 19779First of all you need to tell the stub how to communicate with the 19780serial port. 19781 19782@table @code 19783@item int getDebugChar() 19784@findex getDebugChar 19785Write this subroutine to read a single character from the serial port. 19786It may be identical to @code{getchar} for your target system; a 19787different name is used to allow you to distinguish the two if you wish. 19788 19789@item void putDebugChar(int) 19790@findex putDebugChar 19791Write this subroutine to write a single character to the serial port. 19792It may be identical to @code{putchar} for your target system; a 19793different name is used to allow you to distinguish the two if you wish. 19794@end table 19795 19796@cindex control C, and remote debugging 19797@cindex interrupting remote targets 19798If you want @value{GDBN} to be able to stop your program while it is 19799running, you need to use an interrupt-driven serial driver, and arrange 19800for it to stop when it receives a @code{^C} (@samp{\003}, the control-C 19801character). That is the character which @value{GDBN} uses to tell the 19802remote system to stop. 19803 19804Getting the debugging target to return the proper status to @value{GDBN} 19805probably requires changes to the standard stub; one quick and dirty way 19806is to just execute a breakpoint instruction (the ``dirty'' part is that 19807@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}). 19808 19809Other routines you need to supply are: 19810 19811@table @code 19812@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address}) 19813@findex exceptionHandler 19814Write this function to install @var{exception_address} in the exception 19815handling tables. You need to do this because the stub does not have any 19816way of knowing what the exception handling tables on your target system 19817are like (for example, the processor's table might be in @sc{rom}, 19818containing entries which point to a table in @sc{ram}). 19819The @var{exception_number} specifies the exception which should be changed; 19820its meaning is architecture-dependent (for example, different numbers 19821might represent divide by zero, misaligned access, etc). When this 19822exception occurs, control should be transferred directly to 19823@var{exception_address}, and the processor state (stack, registers, 19824and so on) should be just as it is when a processor exception occurs. So if 19825you want to use a jump instruction to reach @var{exception_address}, it 19826should be a simple jump, not a jump to subroutine. 19827 19828For the 386, @var{exception_address} should be installed as an interrupt 19829gate so that interrupts are masked while the handler runs. The gate 19830should be at privilege level 0 (the most privileged level). The 19831@sc{sparc} and 68k stubs are able to mask interrupts themselves without 19832help from @code{exceptionHandler}. 19833 19834@item void flush_i_cache() 19835@findex flush_i_cache 19836On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the 19837instruction cache, if any, on your target machine. If there is no 19838instruction cache, this subroutine may be a no-op. 19839 19840On target machines that have instruction caches, @value{GDBN} requires this 19841function to make certain that the state of your program is stable. 19842@end table 19843 19844@noindent 19845You must also make sure this library routine is available: 19846 19847@table @code 19848@item void *memset(void *, int, int) 19849@findex memset 19850This is the standard library function @code{memset} that sets an area of 19851memory to a known value. If you have one of the free versions of 19852@code{libc.a}, @code{memset} can be found there; otherwise, you must 19853either obtain it from your hardware manufacturer, or write your own. 19854@end table 19855 19856If you do not use the GNU C compiler, you may need other standard 19857library subroutines as well; this varies from one stub to another, 19858but in general the stubs are likely to use any of the common library 19859subroutines which @code{@value{NGCC}} generates as inline code. 19860 19861 19862@node Debug Session 19863@subsection Putting it All Together 19864 19865@cindex remote serial debugging summary 19866In summary, when your program is ready to debug, you must follow these 19867steps. 19868 19869@enumerate 19870@item 19871Make sure you have defined the supporting low-level routines 19872(@pxref{Bootstrapping,,What You Must Do for the Stub}): 19873@display 19874@code{getDebugChar}, @code{putDebugChar}, 19875@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}. 19876@end display 19877 19878@item 19879Insert these lines in your program's startup code, before the main 19880procedure is called: 19881 19882@smallexample 19883set_debug_traps(); 19884breakpoint(); 19885@end smallexample 19886 19887On some machines, when a breakpoint trap is raised, the hardware 19888automatically makes the PC point to the instruction after the 19889breakpoint. If your machine doesn't do that, you may need to adjust 19890@code{handle_exception} to arrange for it to return to the instruction 19891after the breakpoint on this first invocation, so that your program 19892doesn't keep hitting the initial breakpoint instead of making 19893progress. 19894 19895@item 19896For the 680x0 stub only, you need to provide a variable called 19897@code{exceptionHook}. Normally you just use: 19898 19899@smallexample 19900void (*exceptionHook)() = 0; 19901@end smallexample 19902 19903@noindent 19904but if before calling @code{set_debug_traps}, you set it to point to a 19905function in your program, that function is called when 19906@code{@value{GDBN}} continues after stopping on a trap (for example, bus 19907error). The function indicated by @code{exceptionHook} is called with 19908one parameter: an @code{int} which is the exception number. 19909 19910@item 19911Compile and link together: your program, the @value{GDBN} debugging stub for 19912your target architecture, and the supporting subroutines. 19913 19914@item 19915Make sure you have a serial connection between your target machine and 19916the @value{GDBN} host, and identify the serial port on the host. 19917 19918@item 19919@c The "remote" target now provides a `load' command, so we should 19920@c document that. FIXME. 19921Download your program to your target machine (or get it there by 19922whatever means the manufacturer provides), and start it. 19923 19924@item 19925Start @value{GDBN} on the host, and connect to the target 19926(@pxref{Connecting,,Connecting to a Remote Target}). 19927 19928@end enumerate 19929 19930@node Configurations 19931@chapter Configuration-Specific Information 19932 19933While nearly all @value{GDBN} commands are available for all native and 19934cross versions of the debugger, there are some exceptions. This chapter 19935describes things that are only available in certain configurations. 19936 19937There are three major categories of configurations: native 19938configurations, where the host and target are the same, embedded 19939operating system configurations, which are usually the same for several 19940different processor architectures, and bare embedded processors, which 19941are quite different from each other. 19942 19943@menu 19944* Native:: 19945* Embedded OS:: 19946* Embedded Processors:: 19947* Architectures:: 19948@end menu 19949 19950@node Native 19951@section Native 19952 19953This section describes details specific to particular native 19954configurations. 19955 19956@menu 19957* HP-UX:: HP-UX 19958* BSD libkvm Interface:: Debugging BSD kernel memory images 19959* SVR4 Process Information:: SVR4 process information 19960* DJGPP Native:: Features specific to the DJGPP port 19961* Cygwin Native:: Features specific to the Cygwin port 19962* Hurd Native:: Features specific to @sc{gnu} Hurd 19963* Darwin:: Features specific to Darwin 19964@end menu 19965 19966@node HP-UX 19967@subsection HP-UX 19968 19969On HP-UX systems, if you refer to a function or variable name that 19970begins with a dollar sign, @value{GDBN} searches for a user or system 19971name first, before it searches for a convenience variable. 19972 19973 19974@node BSD libkvm Interface 19975@subsection BSD libkvm Interface 19976 19977@cindex libkvm 19978@cindex kernel memory image 19979@cindex kernel crash dump 19980 19981BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory 19982interface that provides a uniform interface for accessing kernel virtual 19983memory images, including live systems and crash dumps. @value{GDBN} 19984uses this interface to allow you to debug live kernels and kernel crash 19985dumps on many native BSD configurations. This is implemented as a 19986special @code{kvm} debugging target. For debugging a live system, load 19987the currently running kernel into @value{GDBN} and connect to the 19988@code{kvm} target: 19989 19990@smallexample 19991(@value{GDBP}) @b{target kvm} 19992@end smallexample 19993 19994For debugging crash dumps, provide the file name of the crash dump as an 19995argument: 19996 19997@smallexample 19998(@value{GDBP}) @b{target kvm /var/crash/bsd.0} 19999@end smallexample 20000 20001Once connected to the @code{kvm} target, the following commands are 20002available: 20003 20004@table @code 20005@kindex kvm 20006@item kvm pcb 20007Set current context from the @dfn{Process Control Block} (PCB) address. 20008 20009@item kvm proc 20010Set current context from proc address. This command isn't available on 20011modern FreeBSD systems. 20012@end table 20013 20014@node SVR4 Process Information 20015@subsection SVR4 Process Information 20016@cindex /proc 20017@cindex examine process image 20018@cindex process info via @file{/proc} 20019 20020Many versions of SVR4 and compatible systems provide a facility called 20021@samp{/proc} that can be used to examine the image of a running 20022process using file-system subroutines. 20023 20024If @value{GDBN} is configured for an operating system with this 20025facility, the command @code{info proc} is available to report 20026information about the process running your program, or about any 20027process running on your system. This includes, as of this writing, 20028@sc{gnu}/Linux and Solaris, but not HP-UX, for example. 20029 20030This command may also work on core files that were created on a system 20031that has the @samp{/proc} facility. 20032 20033@table @code 20034@kindex info proc 20035@cindex process ID 20036@item info proc 20037@itemx info proc @var{process-id} 20038Summarize available information about any running process. If a 20039process ID is specified by @var{process-id}, display information about 20040that process; otherwise display information about the program being 20041debugged. The summary includes the debugged process ID, the command 20042line used to invoke it, its current working directory, and its 20043executable file's absolute file name. 20044 20045On some systems, @var{process-id} can be of the form 20046@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID 20047within a process. If the optional @var{pid} part is missing, it means 20048a thread from the process being debugged (the leading @samp{/} still 20049needs to be present, or else @value{GDBN} will interpret the number as 20050a process ID rather than a thread ID). 20051 20052@item info proc cmdline 20053@cindex info proc cmdline 20054Show the original command line of the process. This command is 20055specific to @sc{gnu}/Linux. 20056 20057@item info proc cwd 20058@cindex info proc cwd 20059Show the current working directory of the process. This command is 20060specific to @sc{gnu}/Linux. 20061 20062@item info proc exe 20063@cindex info proc exe 20064Show the name of executable of the process. This command is specific 20065to @sc{gnu}/Linux. 20066 20067@item info proc mappings 20068@cindex memory address space mappings 20069Report the memory address space ranges accessible in the program, with 20070information on whether the process has read, write, or execute access 20071rights to each range. On @sc{gnu}/Linux systems, each memory range 20072includes the object file which is mapped to that range, instead of the 20073memory access rights to that range. 20074 20075@item info proc stat 20076@itemx info proc status 20077@cindex process detailed status information 20078These subcommands are specific to @sc{gnu}/Linux systems. They show 20079the process-related information, including the user ID and group ID; 20080how many threads are there in the process; its virtual memory usage; 20081the signals that are pending, blocked, and ignored; its TTY; its 20082consumption of system and user time; its stack size; its @samp{nice} 20083value; etc. For more information, see the @samp{proc} man page 20084(type @kbd{man 5 proc} from your shell prompt). 20085 20086@item info proc all 20087Show all the information about the process described under all of the 20088above @code{info proc} subcommands. 20089 20090@ignore 20091@comment These sub-options of 'info proc' were not included when 20092@comment procfs.c was re-written. Keep their descriptions around 20093@comment against the day when someone finds the time to put them back in. 20094@kindex info proc times 20095@item info proc times 20096Starting time, user CPU time, and system CPU time for your program and 20097its children. 20098 20099@kindex info proc id 20100@item info proc id 20101Report on the process IDs related to your program: its own process ID, 20102the ID of its parent, the process group ID, and the session ID. 20103@end ignore 20104 20105@item set procfs-trace 20106@kindex set procfs-trace 20107@cindex @code{procfs} API calls 20108This command enables and disables tracing of @code{procfs} API calls. 20109 20110@item show procfs-trace 20111@kindex show procfs-trace 20112Show the current state of @code{procfs} API call tracing. 20113 20114@item set procfs-file @var{file} 20115@kindex set procfs-file 20116Tell @value{GDBN} to write @code{procfs} API trace to the named 20117@var{file}. @value{GDBN} appends the trace info to the previous 20118contents of the file. The default is to display the trace on the 20119standard output. 20120 20121@item show procfs-file 20122@kindex show procfs-file 20123Show the file to which @code{procfs} API trace is written. 20124 20125@item proc-trace-entry 20126@itemx proc-trace-exit 20127@itemx proc-untrace-entry 20128@itemx proc-untrace-exit 20129@kindex proc-trace-entry 20130@kindex proc-trace-exit 20131@kindex proc-untrace-entry 20132@kindex proc-untrace-exit 20133These commands enable and disable tracing of entries into and exits 20134from the @code{syscall} interface. 20135 20136@item info pidlist 20137@kindex info pidlist 20138@cindex process list, QNX Neutrino 20139For QNX Neutrino only, this command displays the list of all the 20140processes and all the threads within each process. 20141 20142@item info meminfo 20143@kindex info meminfo 20144@cindex mapinfo list, QNX Neutrino 20145For QNX Neutrino only, this command displays the list of all mapinfos. 20146@end table 20147 20148@node DJGPP Native 20149@subsection Features for Debugging @sc{djgpp} Programs 20150@cindex @sc{djgpp} debugging 20151@cindex native @sc{djgpp} debugging 20152@cindex MS-DOS-specific commands 20153 20154@cindex DPMI 20155@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and 20156MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs 20157that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on 20158top of real-mode DOS systems and their emulations. 20159 20160@value{GDBN} supports native debugging of @sc{djgpp} programs, and 20161defines a few commands specific to the @sc{djgpp} port. This 20162subsection describes those commands. 20163 20164@table @code 20165@kindex info dos 20166@item info dos 20167This is a prefix of @sc{djgpp}-specific commands which print 20168information about the target system and important OS structures. 20169 20170@kindex sysinfo 20171@cindex MS-DOS system info 20172@cindex free memory information (MS-DOS) 20173@item info dos sysinfo 20174This command displays assorted information about the underlying 20175platform: the CPU type and features, the OS version and flavor, the 20176DPMI version, and the available conventional and DPMI memory. 20177 20178@cindex GDT 20179@cindex LDT 20180@cindex IDT 20181@cindex segment descriptor tables 20182@cindex descriptor tables display 20183@item info dos gdt 20184@itemx info dos ldt 20185@itemx info dos idt 20186These 3 commands display entries from, respectively, Global, Local, 20187and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor 20188tables are data structures which store a descriptor for each segment 20189that is currently in use. The segment's selector is an index into a 20190descriptor table; the table entry for that index holds the 20191descriptor's base address and limit, and its attributes and access 20192rights. 20193 20194A typical @sc{djgpp} program uses 3 segments: a code segment, a data 20195segment (used for both data and the stack), and a DOS segment (which 20196allows access to DOS/BIOS data structures and absolute addresses in 20197conventional memory). However, the DPMI host will usually define 20198additional segments in order to support the DPMI environment. 20199 20200@cindex garbled pointers 20201These commands allow to display entries from the descriptor tables. 20202Without an argument, all entries from the specified table are 20203displayed. An argument, which should be an integer expression, means 20204display a single entry whose index is given by the argument. For 20205example, here's a convenient way to display information about the 20206debugged program's data segment: 20207 20208@smallexample 20209@exdent @code{(@value{GDBP}) info dos ldt $ds} 20210@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)} 20211@end smallexample 20212 20213@noindent 20214This comes in handy when you want to see whether a pointer is outside 20215the data segment's limit (i.e.@: @dfn{garbled}). 20216 20217@cindex page tables display (MS-DOS) 20218@item info dos pde 20219@itemx info dos pte 20220These two commands display entries from, respectively, the Page 20221Directory and the Page Tables. Page Directories and Page Tables are 20222data structures which control how virtual memory addresses are mapped 20223into physical addresses. A Page Table includes an entry for every 20224page of memory that is mapped into the program's address space; there 20225may be several Page Tables, each one holding up to 4096 entries. A 20226Page Directory has up to 4096 entries, one each for every Page Table 20227that is currently in use. 20228 20229Without an argument, @kbd{info dos pde} displays the entire Page 20230Directory, and @kbd{info dos pte} displays all the entries in all of 20231the Page Tables. An argument, an integer expression, given to the 20232@kbd{info dos pde} command means display only that entry from the Page 20233Directory table. An argument given to the @kbd{info dos pte} command 20234means display entries from a single Page Table, the one pointed to by 20235the specified entry in the Page Directory. 20236 20237@cindex direct memory access (DMA) on MS-DOS 20238These commands are useful when your program uses @dfn{DMA} (Direct 20239Memory Access), which needs physical addresses to program the DMA 20240controller. 20241 20242These commands are supported only with some DPMI servers. 20243 20244@cindex physical address from linear address 20245@item info dos address-pte @var{addr} 20246This command displays the Page Table entry for a specified linear 20247address. The argument @var{addr} is a linear address which should 20248already have the appropriate segment's base address added to it, 20249because this command accepts addresses which may belong to @emph{any} 20250segment. For example, here's how to display the Page Table entry for 20251the page where a variable @code{i} is stored: 20252 20253@smallexample 20254@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i} 20255@exdent @code{Page Table entry for address 0x11a00d30:} 20256@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30} 20257@end smallexample 20258 20259@noindent 20260This says that @code{i} is stored at offset @code{0xd30} from the page 20261whose physical base address is @code{0x02698000}, and shows all the 20262attributes of that page. 20263 20264Note that you must cast the addresses of variables to a @code{char *}, 20265since otherwise the value of @code{__djgpp_base_address}, the base 20266address of all variables and functions in a @sc{djgpp} program, will 20267be added using the rules of C pointer arithmetics: if @code{i} is 20268declared an @code{int}, @value{GDBN} will add 4 times the value of 20269@code{__djgpp_base_address} to the address of @code{i}. 20270 20271Here's another example, it displays the Page Table entry for the 20272transfer buffer: 20273 20274@smallexample 20275@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)} 20276@exdent @code{Page Table entry for address 0x29110:} 20277@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110} 20278@end smallexample 20279 20280@noindent 20281(The @code{+ 3} offset is because the transfer buffer's address is the 202823rd member of the @code{_go32_info_block} structure.) The output 20283clearly shows that this DPMI server maps the addresses in conventional 20284memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and 20285linear (@code{0x29110}) addresses are identical. 20286 20287This command is supported only with some DPMI servers. 20288@end table 20289 20290@cindex DOS serial data link, remote debugging 20291In addition to native debugging, the DJGPP port supports remote 20292debugging via a serial data link. The following commands are specific 20293to remote serial debugging in the DJGPP port of @value{GDBN}. 20294 20295@table @code 20296@kindex set com1base 20297@kindex set com1irq 20298@kindex set com2base 20299@kindex set com2irq 20300@kindex set com3base 20301@kindex set com3irq 20302@kindex set com4base 20303@kindex set com4irq 20304@item set com1base @var{addr} 20305This command sets the base I/O port address of the @file{COM1} serial 20306port. 20307 20308@item set com1irq @var{irq} 20309This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use 20310for the @file{COM1} serial port. 20311 20312There are similar commands @samp{set com2base}, @samp{set com3irq}, 20313etc.@: for setting the port address and the @code{IRQ} lines for the 20314other 3 COM ports. 20315 20316@kindex show com1base 20317@kindex show com1irq 20318@kindex show com2base 20319@kindex show com2irq 20320@kindex show com3base 20321@kindex show com3irq 20322@kindex show com4base 20323@kindex show com4irq 20324The related commands @samp{show com1base}, @samp{show com1irq} etc.@: 20325display the current settings of the base address and the @code{IRQ} 20326lines used by the COM ports. 20327 20328@item info serial 20329@kindex info serial 20330@cindex DOS serial port status 20331This command prints the status of the 4 DOS serial ports. For each 20332port, it prints whether it's active or not, its I/O base address and 20333IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the 20334counts of various errors encountered so far. 20335@end table 20336 20337 20338@node Cygwin Native 20339@subsection Features for Debugging MS Windows PE Executables 20340@cindex MS Windows debugging 20341@cindex native Cygwin debugging 20342@cindex Cygwin-specific commands 20343 20344@value{GDBN} supports native debugging of MS Windows programs, including 20345DLLs with and without symbolic debugging information. 20346 20347@cindex Ctrl-BREAK, MS-Windows 20348@cindex interrupt debuggee on MS-Windows 20349MS-Windows programs that call @code{SetConsoleMode} to switch off the 20350special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted 20351by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows 20352supports @kbd{C-@key{BREAK}} as an alternative interrupt key 20353sequence, which can be used to interrupt the debuggee even if it 20354ignores @kbd{C-c}. 20355 20356There are various additional Cygwin-specific commands, described in 20357this section. Working with DLLs that have no debugging symbols is 20358described in @ref{Non-debug DLL Symbols}. 20359 20360@table @code 20361@kindex info w32 20362@item info w32 20363This is a prefix of MS Windows-specific commands which print 20364information about the target system and important OS structures. 20365 20366@item info w32 selector 20367This command displays information returned by 20368the Win32 API @code{GetThreadSelectorEntry} function. 20369It takes an optional argument that is evaluated to 20370a long value to give the information about this given selector. 20371Without argument, this command displays information 20372about the six segment registers. 20373 20374@item info w32 thread-information-block 20375This command displays thread specific information stored in the 20376Thread Information Block (readable on the X86 CPU family using @code{$fs} 20377selector for 32-bit programs and @code{$gs} for 64-bit programs). 20378 20379@kindex info dll 20380@item info dll 20381This is a Cygwin-specific alias of @code{info shared}. 20382 20383@kindex set cygwin-exceptions 20384@cindex debugging the Cygwin DLL 20385@cindex Cygwin DLL, debugging 20386@item set cygwin-exceptions @var{mode} 20387If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that 20388happen inside the Cygwin DLL. If @var{mode} is @code{off}, 20389@value{GDBN} will delay recognition of exceptions, and may ignore some 20390exceptions which seem to be caused by internal Cygwin DLL 20391``bookkeeping''. This option is meant primarily for debugging the 20392Cygwin DLL itself; the default value is @code{off} to avoid annoying 20393@value{GDBN} users with false @code{SIGSEGV} signals. 20394 20395@kindex show cygwin-exceptions 20396@item show cygwin-exceptions 20397Displays whether @value{GDBN} will break on exceptions that happen 20398inside the Cygwin DLL itself. 20399 20400@kindex set new-console 20401@item set new-console @var{mode} 20402If @var{mode} is @code{on} the debuggee will 20403be started in a new console on next start. 20404If @var{mode} is @code{off}, the debuggee will 20405be started in the same console as the debugger. 20406 20407@kindex show new-console 20408@item show new-console 20409Displays whether a new console is used 20410when the debuggee is started. 20411 20412@kindex set new-group 20413@item set new-group @var{mode} 20414This boolean value controls whether the debuggee should 20415start a new group or stay in the same group as the debugger. 20416This affects the way the Windows OS handles 20417@samp{Ctrl-C}. 20418 20419@kindex show new-group 20420@item show new-group 20421Displays current value of new-group boolean. 20422 20423@kindex set debugevents 20424@item set debugevents 20425This boolean value adds debug output concerning kernel events related 20426to the debuggee seen by the debugger. This includes events that 20427signal thread and process creation and exit, DLL loading and 20428unloading, console interrupts, and debugging messages produced by the 20429Windows @code{OutputDebugString} API call. 20430 20431@kindex set debugexec 20432@item set debugexec 20433This boolean value adds debug output concerning execute events 20434(such as resume thread) seen by the debugger. 20435 20436@kindex set debugexceptions 20437@item set debugexceptions 20438This boolean value adds debug output concerning exceptions in the 20439debuggee seen by the debugger. 20440 20441@kindex set debugmemory 20442@item set debugmemory 20443This boolean value adds debug output concerning debuggee memory reads 20444and writes by the debugger. 20445 20446@kindex set shell 20447@item set shell 20448This boolean values specifies whether the debuggee is called 20449via a shell or directly (default value is on). 20450 20451@kindex show shell 20452@item show shell 20453Displays if the debuggee will be started with a shell. 20454 20455@end table 20456 20457@menu 20458* Non-debug DLL Symbols:: Support for DLLs without debugging symbols 20459@end menu 20460 20461@node Non-debug DLL Symbols 20462@subsubsection Support for DLLs without Debugging Symbols 20463@cindex DLLs with no debugging symbols 20464@cindex Minimal symbols and DLLs 20465 20466Very often on windows, some of the DLLs that your program relies on do 20467not include symbolic debugging information (for example, 20468@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging 20469symbols in a DLL, it relies on the minimal amount of symbolic 20470information contained in the DLL's export table. This section 20471describes working with such symbols, known internally to @value{GDBN} as 20472``minimal symbols''. 20473 20474Note that before the debugged program has started execution, no DLLs 20475will have been loaded. The easiest way around this problem is simply to 20476start the program --- either by setting a breakpoint or letting the 20477program run once to completion. 20478 20479@subsubsection DLL Name Prefixes 20480 20481In keeping with the naming conventions used by the Microsoft debugging 20482tools, DLL export symbols are made available with a prefix based on the 20483DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is 20484also entered into the symbol table, so @code{CreateFileA} is often 20485sufficient. In some cases there will be name clashes within a program 20486(particularly if the executable itself includes full debugging symbols) 20487necessitating the use of the fully qualified name when referring to the 20488contents of the DLL. Use single-quotes around the name to avoid the 20489exclamation mark (``!'') being interpreted as a language operator. 20490 20491Note that the internal name of the DLL may be all upper-case, even 20492though the file name of the DLL is lower-case, or vice-versa. Since 20493symbols within @value{GDBN} are @emph{case-sensitive} this may cause 20494some confusion. If in doubt, try the @code{info functions} and 20495@code{info variables} commands or even @code{maint print msymbols} 20496(@pxref{Symbols}). Here's an example: 20497 20498@smallexample 20499(@value{GDBP}) info function CreateFileA 20500All functions matching regular expression "CreateFileA": 20501 20502Non-debugging symbols: 205030x77e885f4 CreateFileA 205040x77e885f4 KERNEL32!CreateFileA 20505@end smallexample 20506 20507@smallexample 20508(@value{GDBP}) info function ! 20509All functions matching regular expression "!": 20510 20511Non-debugging symbols: 205120x6100114c cygwin1!__assert 205130x61004034 cygwin1!_dll_crt0@@0 205140x61004240 cygwin1!dll_crt0(per_process *) 20515[etc...] 20516@end smallexample 20517 20518@subsubsection Working with Minimal Symbols 20519 20520Symbols extracted from a DLL's export table do not contain very much 20521type information. All that @value{GDBN} can do is guess whether a symbol 20522refers to a function or variable depending on the linker section that 20523contains the symbol. Also note that the actual contents of the memory 20524contained in a DLL are not available unless the program is running. This 20525means that you cannot examine the contents of a variable or disassemble 20526a function within a DLL without a running program. 20527 20528Variables are generally treated as pointers and dereferenced 20529automatically. For this reason, it is often necessary to prefix a 20530variable name with the address-of operator (``&'') and provide explicit 20531type information in the command. Here's an example of the type of 20532problem: 20533 20534@smallexample 20535(@value{GDBP}) print 'cygwin1!__argv' 20536$1 = 268572168 20537@end smallexample 20538 20539@smallexample 20540(@value{GDBP}) x 'cygwin1!__argv' 205410x10021610: "\230y\"" 20542@end smallexample 20543 20544And two possible solutions: 20545 20546@smallexample 20547(@value{GDBP}) print ((char **)'cygwin1!__argv')[0] 20548$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram" 20549@end smallexample 20550 20551@smallexample 20552(@value{GDBP}) x/2x &'cygwin1!__argv' 205530x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000 20554(@value{GDBP}) x/x 0x10021608 205550x10021608: 0x0022fd98 20556(@value{GDBP}) x/s 0x0022fd98 205570x22fd98: "/cygdrive/c/mydirectory/myprogram" 20558@end smallexample 20559 20560Setting a break point within a DLL is possible even before the program 20561starts execution. However, under these circumstances, @value{GDBN} can't 20562examine the initial instructions of the function in order to skip the 20563function's frame set-up code. You can work around this by using ``*&'' 20564to set the breakpoint at a raw memory address: 20565 20566@smallexample 20567(@value{GDBP}) break *&'python22!PyOS_Readline' 20568Breakpoint 1 at 0x1e04eff0 20569@end smallexample 20570 20571The author of these extensions is not entirely convinced that setting a 20572break point within a shared DLL like @file{kernel32.dll} is completely 20573safe. 20574 20575@node Hurd Native 20576@subsection Commands Specific to @sc{gnu} Hurd Systems 20577@cindex @sc{gnu} Hurd debugging 20578 20579This subsection describes @value{GDBN} commands specific to the 20580@sc{gnu} Hurd native debugging. 20581 20582@table @code 20583@item set signals 20584@itemx set sigs 20585@kindex set signals@r{, Hurd command} 20586@kindex set sigs@r{, Hurd command} 20587This command toggles the state of inferior signal interception by 20588@value{GDBN}. Mach exceptions, such as breakpoint traps, are not 20589affected by this command. @code{sigs} is a shorthand alias for 20590@code{signals}. 20591 20592@item show signals 20593@itemx show sigs 20594@kindex show signals@r{, Hurd command} 20595@kindex show sigs@r{, Hurd command} 20596Show the current state of intercepting inferior's signals. 20597 20598@item set signal-thread 20599@itemx set sigthread 20600@kindex set signal-thread 20601@kindex set sigthread 20602This command tells @value{GDBN} which thread is the @code{libc} signal 20603thread. That thread is run when a signal is delivered to a running 20604process. @code{set sigthread} is the shorthand alias of @code{set 20605signal-thread}. 20606 20607@item show signal-thread 20608@itemx show sigthread 20609@kindex show signal-thread 20610@kindex show sigthread 20611These two commands show which thread will run when the inferior is 20612delivered a signal. 20613 20614@item set stopped 20615@kindex set stopped@r{, Hurd command} 20616This commands tells @value{GDBN} that the inferior process is stopped, 20617as with the @code{SIGSTOP} signal. The stopped process can be 20618continued by delivering a signal to it. 20619 20620@item show stopped 20621@kindex show stopped@r{, Hurd command} 20622This command shows whether @value{GDBN} thinks the debuggee is 20623stopped. 20624 20625@item set exceptions 20626@kindex set exceptions@r{, Hurd command} 20627Use this command to turn off trapping of exceptions in the inferior. 20628When exception trapping is off, neither breakpoints nor 20629single-stepping will work. To restore the default, set exception 20630trapping on. 20631 20632@item show exceptions 20633@kindex show exceptions@r{, Hurd command} 20634Show the current state of trapping exceptions in the inferior. 20635 20636@item set task pause 20637@kindex set task@r{, Hurd commands} 20638@cindex task attributes (@sc{gnu} Hurd) 20639@cindex pause current task (@sc{gnu} Hurd) 20640This command toggles task suspension when @value{GDBN} has control. 20641Setting it to on takes effect immediately, and the task is suspended 20642whenever @value{GDBN} gets control. Setting it to off will take 20643effect the next time the inferior is continued. If this option is set 20644to off, you can use @code{set thread default pause on} or @code{set 20645thread pause on} (see below) to pause individual threads. 20646 20647@item show task pause 20648@kindex show task@r{, Hurd commands} 20649Show the current state of task suspension. 20650 20651@item set task detach-suspend-count 20652@cindex task suspend count 20653@cindex detach from task, @sc{gnu} Hurd 20654This command sets the suspend count the task will be left with when 20655@value{GDBN} detaches from it. 20656 20657@item show task detach-suspend-count 20658Show the suspend count the task will be left with when detaching. 20659 20660@item set task exception-port 20661@itemx set task excp 20662@cindex task exception port, @sc{gnu} Hurd 20663This command sets the task exception port to which @value{GDBN} will 20664forward exceptions. The argument should be the value of the @dfn{send 20665rights} of the task. @code{set task excp} is a shorthand alias. 20666 20667@item set noninvasive 20668@cindex noninvasive task options 20669This command switches @value{GDBN} to a mode that is the least 20670invasive as far as interfering with the inferior is concerned. This 20671is the same as using @code{set task pause}, @code{set exceptions}, and 20672@code{set signals} to values opposite to the defaults. 20673 20674@item info send-rights 20675@itemx info receive-rights 20676@itemx info port-rights 20677@itemx info port-sets 20678@itemx info dead-names 20679@itemx info ports 20680@itemx info psets 20681@cindex send rights, @sc{gnu} Hurd 20682@cindex receive rights, @sc{gnu} Hurd 20683@cindex port rights, @sc{gnu} Hurd 20684@cindex port sets, @sc{gnu} Hurd 20685@cindex dead names, @sc{gnu} Hurd 20686These commands display information about, respectively, send rights, 20687receive rights, port rights, port sets, and dead names of a task. 20688There are also shorthand aliases: @code{info ports} for @code{info 20689port-rights} and @code{info psets} for @code{info port-sets}. 20690 20691@item set thread pause 20692@kindex set thread@r{, Hurd command} 20693@cindex thread properties, @sc{gnu} Hurd 20694@cindex pause current thread (@sc{gnu} Hurd) 20695This command toggles current thread suspension when @value{GDBN} has 20696control. Setting it to on takes effect immediately, and the current 20697thread is suspended whenever @value{GDBN} gets control. Setting it to 20698off will take effect the next time the inferior is continued. 20699Normally, this command has no effect, since when @value{GDBN} has 20700control, the whole task is suspended. However, if you used @code{set 20701task pause off} (see above), this command comes in handy to suspend 20702only the current thread. 20703 20704@item show thread pause 20705@kindex show thread@r{, Hurd command} 20706This command shows the state of current thread suspension. 20707 20708@item set thread run 20709This command sets whether the current thread is allowed to run. 20710 20711@item show thread run 20712Show whether the current thread is allowed to run. 20713 20714@item set thread detach-suspend-count 20715@cindex thread suspend count, @sc{gnu} Hurd 20716@cindex detach from thread, @sc{gnu} Hurd 20717This command sets the suspend count @value{GDBN} will leave on a 20718thread when detaching. This number is relative to the suspend count 20719found by @value{GDBN} when it notices the thread; use @code{set thread 20720takeover-suspend-count} to force it to an absolute value. 20721 20722@item show thread detach-suspend-count 20723Show the suspend count @value{GDBN} will leave on the thread when 20724detaching. 20725 20726@item set thread exception-port 20727@itemx set thread excp 20728Set the thread exception port to which to forward exceptions. This 20729overrides the port set by @code{set task exception-port} (see above). 20730@code{set thread excp} is the shorthand alias. 20731 20732@item set thread takeover-suspend-count 20733Normally, @value{GDBN}'s thread suspend counts are relative to the 20734value @value{GDBN} finds when it notices each thread. This command 20735changes the suspend counts to be absolute instead. 20736 20737@item set thread default 20738@itemx show thread default 20739@cindex thread default settings, @sc{gnu} Hurd 20740Each of the above @code{set thread} commands has a @code{set thread 20741default} counterpart (e.g., @code{set thread default pause}, @code{set 20742thread default exception-port}, etc.). The @code{thread default} 20743variety of commands sets the default thread properties for all 20744threads; you can then change the properties of individual threads with 20745the non-default commands. 20746@end table 20747 20748@node Darwin 20749@subsection Darwin 20750@cindex Darwin 20751 20752@value{GDBN} provides the following commands specific to the Darwin target: 20753 20754@table @code 20755@item set debug darwin @var{num} 20756@kindex set debug darwin 20757When set to a non zero value, enables debugging messages specific to 20758the Darwin support. Higher values produce more verbose output. 20759 20760@item show debug darwin 20761@kindex show debug darwin 20762Show the current state of Darwin messages. 20763 20764@item set debug mach-o @var{num} 20765@kindex set debug mach-o 20766When set to a non zero value, enables debugging messages while 20767@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the 20768file format used on Darwin for object and executable files.) Higher 20769values produce more verbose output. This is a command to diagnose 20770problems internal to @value{GDBN} and should not be needed in normal 20771usage. 20772 20773@item show debug mach-o 20774@kindex show debug mach-o 20775Show the current state of Mach-O file messages. 20776 20777@item set mach-exceptions on 20778@itemx set mach-exceptions off 20779@kindex set mach-exceptions 20780On Darwin, faults are first reported as a Mach exception and are then 20781mapped to a Posix signal. Use this command to turn on trapping of 20782Mach exceptions in the inferior. This might be sometimes useful to 20783better understand the cause of a fault. The default is off. 20784 20785@item show mach-exceptions 20786@kindex show mach-exceptions 20787Show the current state of exceptions trapping. 20788@end table 20789 20790 20791@node Embedded OS 20792@section Embedded Operating Systems 20793 20794This section describes configurations involving the debugging of 20795embedded operating systems that are available for several different 20796architectures. 20797 20798@value{GDBN} includes the ability to debug programs running on 20799various real-time operating systems. 20800 20801@node Embedded Processors 20802@section Embedded Processors 20803 20804This section goes into details specific to particular embedded 20805configurations. 20806 20807@cindex send command to simulator 20808Whenever a specific embedded processor has a simulator, @value{GDBN} 20809allows to send an arbitrary command to the simulator. 20810 20811@table @code 20812@item sim @var{command} 20813@kindex sim@r{, a command} 20814Send an arbitrary @var{command} string to the simulator. Consult the 20815documentation for the specific simulator in use for information about 20816acceptable commands. 20817@end table 20818 20819 20820@menu 20821* ARM:: ARM RDI 20822* M32R/D:: Renesas M32R/D 20823* M68K:: Motorola M68K 20824* MicroBlaze:: Xilinx MicroBlaze 20825* MIPS Embedded:: MIPS Embedded 20826* PowerPC Embedded:: PowerPC Embedded 20827* PA:: HP PA Embedded 20828* Sparclet:: Tsqware Sparclet 20829* Sparclite:: Fujitsu Sparclite 20830* Z8000:: Zilog Z8000 20831* AVR:: Atmel AVR 20832* CRIS:: CRIS 20833* Super-H:: Renesas Super-H 20834@end menu 20835 20836@node ARM 20837@subsection ARM 20838@cindex ARM RDI 20839 20840@table @code 20841@kindex target rdi 20842@item target rdi @var{dev} 20843ARM Angel monitor, via RDI library interface to ADP protocol. You may 20844use this target to communicate with both boards running the Angel 20845monitor, or with the EmbeddedICE JTAG debug device. 20846 20847@kindex target rdp 20848@item target rdp @var{dev} 20849ARM Demon monitor. 20850 20851@end table 20852 20853@value{GDBN} provides the following ARM-specific commands: 20854 20855@table @code 20856@item set arm disassembler 20857@kindex set arm 20858This commands selects from a list of disassembly styles. The 20859@code{"std"} style is the standard style. 20860 20861@item show arm disassembler 20862@kindex show arm 20863Show the current disassembly style. 20864 20865@item set arm apcs32 20866@cindex ARM 32-bit mode 20867This command toggles ARM operation mode between 32-bit and 26-bit. 20868 20869@item show arm apcs32 20870Display the current usage of the ARM 32-bit mode. 20871 20872@item set arm fpu @var{fputype} 20873This command sets the ARM floating-point unit (FPU) type. The 20874argument @var{fputype} can be one of these: 20875 20876@table @code 20877@item auto 20878Determine the FPU type by querying the OS ABI. 20879@item softfpa 20880Software FPU, with mixed-endian doubles on little-endian ARM 20881processors. 20882@item fpa 20883GCC-compiled FPA co-processor. 20884@item softvfp 20885Software FPU with pure-endian doubles. 20886@item vfp 20887VFP co-processor. 20888@end table 20889 20890@item show arm fpu 20891Show the current type of the FPU. 20892 20893@item set arm abi 20894This command forces @value{GDBN} to use the specified ABI. 20895 20896@item show arm abi 20897Show the currently used ABI. 20898 20899@item set arm fallback-mode (arm|thumb|auto) 20900@value{GDBN} uses the symbol table, when available, to determine 20901whether instructions are ARM or Thumb. This command controls 20902@value{GDBN}'s default behavior when the symbol table is not 20903available. The default is @samp{auto}, which causes @value{GDBN} to 20904use the current execution mode (from the @code{T} bit in the @code{CPSR} 20905register). 20906 20907@item show arm fallback-mode 20908Show the current fallback instruction mode. 20909 20910@item set arm force-mode (arm|thumb|auto) 20911This command overrides use of the symbol table to determine whether 20912instructions are ARM or Thumb. The default is @samp{auto}, which 20913causes @value{GDBN} to use the symbol table and then the setting 20914of @samp{set arm fallback-mode}. 20915 20916@item show arm force-mode 20917Show the current forced instruction mode. 20918 20919@item set debug arm 20920Toggle whether to display ARM-specific debugging messages from the ARM 20921target support subsystem. 20922 20923@item show debug arm 20924Show whether ARM-specific debugging messages are enabled. 20925@end table 20926 20927The following commands are available when an ARM target is debugged 20928using the RDI interface: 20929 20930@table @code 20931@item rdilogfile @r{[}@var{file}@r{]} 20932@kindex rdilogfile 20933@cindex ADP (Angel Debugger Protocol) logging 20934Set the filename for the ADP (Angel Debugger Protocol) packet log. 20935With an argument, sets the log file to the specified @var{file}. With 20936no argument, show the current log file name. The default log file is 20937@file{rdi.log}. 20938 20939@item rdilogenable @r{[}@var{arg}@r{]} 20940@kindex rdilogenable 20941Control logging of ADP packets. With an argument of 1 or @code{"yes"} 20942enables logging, with an argument 0 or @code{"no"} disables it. With 20943no arguments displays the current setting. When logging is enabled, 20944ADP packets exchanged between @value{GDBN} and the RDI target device 20945are logged to a file. 20946 20947@item set rdiromatzero 20948@kindex set rdiromatzero 20949@cindex ROM at zero address, RDI 20950Tell @value{GDBN} whether the target has ROM at address 0. If on, 20951vector catching is disabled, so that zero address can be used. If off 20952(the default), vector catching is enabled. For this command to take 20953effect, it needs to be invoked prior to the @code{target rdi} command. 20954 20955@item show rdiromatzero 20956@kindex show rdiromatzero 20957Show the current setting of ROM at zero address. 20958 20959@item set rdiheartbeat 20960@kindex set rdiheartbeat 20961@cindex RDI heartbeat 20962Enable or disable RDI heartbeat packets. It is not recommended to 20963turn on this option, since it confuses ARM and EPI JTAG interface, as 20964well as the Angel monitor. 20965 20966@item show rdiheartbeat 20967@kindex show rdiheartbeat 20968Show the setting of RDI heartbeat packets. 20969@end table 20970 20971@table @code 20972@item target sim @r{[}@var{simargs}@r{]} @dots{} 20973The @value{GDBN} ARM simulator accepts the following optional arguments. 20974 20975@table @code 20976@item --swi-support=@var{type} 20977Tell the simulator which SWI interfaces to support. The argument 20978@var{type} may be a comma separated list of the following values. 20979The default value is @code{all}. 20980 20981@table @code 20982@item none 20983@item demon 20984@item angel 20985@item redboot 20986@item all 20987@end table 20988@end table 20989@end table 20990 20991@node M32R/D 20992@subsection Renesas M32R/D and M32R/SDI 20993 20994@table @code 20995@kindex target m32r 20996@item target m32r @var{dev} 20997Renesas M32R/D ROM monitor. 20998 20999@kindex target m32rsdi 21000@item target m32rsdi @var{dev} 21001Renesas M32R SDI server, connected via parallel port to the board. 21002@end table 21003 21004The following @value{GDBN} commands are specific to the M32R monitor: 21005 21006@table @code 21007@item set download-path @var{path} 21008@kindex set download-path 21009@cindex find downloadable @sc{srec} files (M32R) 21010Set the default path for finding downloadable @sc{srec} files. 21011 21012@item show download-path 21013@kindex show download-path 21014Show the default path for downloadable @sc{srec} files. 21015 21016@item set board-address @var{addr} 21017@kindex set board-address 21018@cindex M32-EVA target board address 21019Set the IP address for the M32R-EVA target board. 21020 21021@item show board-address 21022@kindex show board-address 21023Show the current IP address of the target board. 21024 21025@item set server-address @var{addr} 21026@kindex set server-address 21027@cindex download server address (M32R) 21028Set the IP address for the download server, which is the @value{GDBN}'s 21029host machine. 21030 21031@item show server-address 21032@kindex show server-address 21033Display the IP address of the download server. 21034 21035@item upload @r{[}@var{file}@r{]} 21036@kindex upload@r{, M32R} 21037Upload the specified @sc{srec} @var{file} via the monitor's Ethernet 21038upload capability. If no @var{file} argument is given, the current 21039executable file is uploaded. 21040 21041@item tload @r{[}@var{file}@r{]} 21042@kindex tload@r{, M32R} 21043Test the @code{upload} command. 21044@end table 21045 21046The following commands are available for M32R/SDI: 21047 21048@table @code 21049@item sdireset 21050@kindex sdireset 21051@cindex reset SDI connection, M32R 21052This command resets the SDI connection. 21053 21054@item sdistatus 21055@kindex sdistatus 21056This command shows the SDI connection status. 21057 21058@item debug_chaos 21059@kindex debug_chaos 21060@cindex M32R/Chaos debugging 21061Instructs the remote that M32R/Chaos debugging is to be used. 21062 21063@item use_debug_dma 21064@kindex use_debug_dma 21065Instructs the remote to use the DEBUG_DMA method of accessing memory. 21066 21067@item use_mon_code 21068@kindex use_mon_code 21069Instructs the remote to use the MON_CODE method of accessing memory. 21070 21071@item use_ib_break 21072@kindex use_ib_break 21073Instructs the remote to set breakpoints by IB break. 21074 21075@item use_dbt_break 21076@kindex use_dbt_break 21077Instructs the remote to set breakpoints by DBT. 21078@end table 21079 21080@node M68K 21081@subsection M68k 21082 21083The Motorola m68k configuration includes ColdFire support, and a 21084target command for the following ROM monitor. 21085 21086@table @code 21087 21088@kindex target dbug 21089@item target dbug @var{dev} 21090dBUG ROM monitor for Motorola ColdFire. 21091 21092@end table 21093 21094@node MicroBlaze 21095@subsection MicroBlaze 21096@cindex Xilinx MicroBlaze 21097@cindex XMD, Xilinx Microprocessor Debugger 21098 21099The MicroBlaze is a soft-core processor supported on various Xilinx 21100FPGAs, such as Spartan or Virtex series. Boards with these processors 21101usually have JTAG ports which connect to a host system running the Xilinx 21102Embedded Development Kit (EDK) or Software Development Kit (SDK). 21103This host system is used to download the configuration bitstream to 21104the target FPGA. The Xilinx Microprocessor Debugger (XMD) program 21105communicates with the target board using the JTAG interface and 21106presents a @code{gdbserver} interface to the board. By default 21107@code{xmd} uses port @code{1234}. (While it is possible to change 21108this default port, it requires the use of undocumented @code{xmd} 21109commands. Contact Xilinx support if you need to do this.) 21110 21111Use these GDB commands to connect to the MicroBlaze target processor. 21112 21113@table @code 21114@item target remote :1234 21115Use this command to connect to the target if you are running @value{GDBN} 21116on the same system as @code{xmd}. 21117 21118@item target remote @var{xmd-host}:1234 21119Use this command to connect to the target if it is connected to @code{xmd} 21120running on a different system named @var{xmd-host}. 21121 21122@item load 21123Use this command to download a program to the MicroBlaze target. 21124 21125@item set debug microblaze @var{n} 21126Enable MicroBlaze-specific debugging messages if non-zero. 21127 21128@item show debug microblaze @var{n} 21129Show MicroBlaze-specific debugging level. 21130@end table 21131 21132@node MIPS Embedded 21133@subsection @acronym{MIPS} Embedded 21134 21135@cindex @acronym{MIPS} boards 21136@value{GDBN} can use the @acronym{MIPS} remote debugging protocol to talk to a 21137@acronym{MIPS} board attached to a serial line. This is available when 21138you configure @value{GDBN} with @samp{--target=mips-elf}. 21139 21140@need 1000 21141Use these @value{GDBN} commands to specify the connection to your target board: 21142 21143@table @code 21144@item target mips @var{port} 21145@kindex target mips @var{port} 21146To run a program on the board, start up @code{@value{GDBP}} with the 21147name of your program as the argument. To connect to the board, use the 21148command @samp{target mips @var{port}}, where @var{port} is the name of 21149the serial port connected to the board. If the program has not already 21150been downloaded to the board, you may use the @code{load} command to 21151download it. You can then use all the usual @value{GDBN} commands. 21152 21153For example, this sequence connects to the target board through a serial 21154port, and loads and runs a program called @var{prog} through the 21155debugger: 21156 21157@smallexample 21158host$ @value{GDBP} @var{prog} 21159@value{GDBN} is free software and @dots{} 21160(@value{GDBP}) target mips /dev/ttyb 21161(@value{GDBP}) load @var{prog} 21162(@value{GDBP}) run 21163@end smallexample 21164 21165@item target mips @var{hostname}:@var{portnumber} 21166On some @value{GDBN} host configurations, you can specify a TCP 21167connection (for instance, to a serial line managed by a terminal 21168concentrator) instead of a serial port, using the syntax 21169@samp{@var{hostname}:@var{portnumber}}. 21170 21171@item target pmon @var{port} 21172@kindex target pmon @var{port} 21173PMON ROM monitor. 21174 21175@item target ddb @var{port} 21176@kindex target ddb @var{port} 21177NEC's DDB variant of PMON for Vr4300. 21178 21179@item target lsi @var{port} 21180@kindex target lsi @var{port} 21181LSI variant of PMON. 21182 21183@kindex target r3900 21184@item target r3900 @var{dev} 21185Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips. 21186 21187@kindex target array 21188@item target array @var{dev} 21189Array Tech LSI33K RAID controller board. 21190 21191@end table 21192 21193 21194@noindent 21195@value{GDBN} also supports these special commands for @acronym{MIPS} targets: 21196 21197@table @code 21198@item set mipsfpu double 21199@itemx set mipsfpu single 21200@itemx set mipsfpu none 21201@itemx set mipsfpu auto 21202@itemx show mipsfpu 21203@kindex set mipsfpu 21204@kindex show mipsfpu 21205@cindex @acronym{MIPS} remote floating point 21206@cindex floating point, @acronym{MIPS} remote 21207If your target board does not support the @acronym{MIPS} floating point 21208coprocessor, you should use the command @samp{set mipsfpu none} (if you 21209need this, you may wish to put the command in your @value{GDBN} init 21210file). This tells @value{GDBN} how to find the return value of 21211functions which return floating point values. It also allows 21212@value{GDBN} to avoid saving the floating point registers when calling 21213functions on the board. If you are using a floating point coprocessor 21214with only single precision floating point support, as on the @sc{r4650} 21215processor, use the command @samp{set mipsfpu single}. The default 21216double precision floating point coprocessor may be selected using 21217@samp{set mipsfpu double}. 21218 21219In previous versions the only choices were double precision or no 21220floating point, so @samp{set mipsfpu on} will select double precision 21221and @samp{set mipsfpu off} will select no floating point. 21222 21223As usual, you can inquire about the @code{mipsfpu} variable with 21224@samp{show mipsfpu}. 21225 21226@item set timeout @var{seconds} 21227@itemx set retransmit-timeout @var{seconds} 21228@itemx show timeout 21229@itemx show retransmit-timeout 21230@cindex @code{timeout}, @acronym{MIPS} protocol 21231@cindex @code{retransmit-timeout}, @acronym{MIPS} protocol 21232@kindex set timeout 21233@kindex show timeout 21234@kindex set retransmit-timeout 21235@kindex show retransmit-timeout 21236You can control the timeout used while waiting for a packet, in the @acronym{MIPS} 21237remote protocol, with the @code{set timeout @var{seconds}} command. The 21238default is 5 seconds. Similarly, you can control the timeout used while 21239waiting for an acknowledgment of a packet with the @code{set 21240retransmit-timeout @var{seconds}} command. The default is 3 seconds. 21241You can inspect both values with @code{show timeout} and @code{show 21242retransmit-timeout}. (These commands are @emph{only} available when 21243@value{GDBN} is configured for @samp{--target=mips-elf}.) 21244 21245The timeout set by @code{set timeout} does not apply when @value{GDBN} 21246is waiting for your program to stop. In that case, @value{GDBN} waits 21247forever because it has no way of knowing how long the program is going 21248to run before stopping. 21249 21250@item set syn-garbage-limit @var{num} 21251@kindex set syn-garbage-limit@r{, @acronym{MIPS} remote} 21252@cindex synchronize with remote @acronym{MIPS} target 21253Limit the maximum number of characters @value{GDBN} should ignore when 21254it tries to synchronize with the remote target. The default is 10 21255characters. Setting the limit to -1 means there's no limit. 21256 21257@item show syn-garbage-limit 21258@kindex show syn-garbage-limit@r{, @acronym{MIPS} remote} 21259Show the current limit on the number of characters to ignore when 21260trying to synchronize with the remote system. 21261 21262@item set monitor-prompt @var{prompt} 21263@kindex set monitor-prompt@r{, @acronym{MIPS} remote} 21264@cindex remote monitor prompt 21265Tell @value{GDBN} to expect the specified @var{prompt} string from the 21266remote monitor. The default depends on the target: 21267@table @asis 21268@item pmon target 21269@samp{PMON} 21270@item ddb target 21271@samp{NEC010} 21272@item lsi target 21273@samp{PMON>} 21274@end table 21275 21276@item show monitor-prompt 21277@kindex show monitor-prompt@r{, @acronym{MIPS} remote} 21278Show the current strings @value{GDBN} expects as the prompt from the 21279remote monitor. 21280 21281@item set monitor-warnings 21282@kindex set monitor-warnings@r{, @acronym{MIPS} remote} 21283Enable or disable monitor warnings about hardware breakpoints. This 21284has effect only for the @code{lsi} target. When on, @value{GDBN} will 21285display warning messages whose codes are returned by the @code{lsi} 21286PMON monitor for breakpoint commands. 21287 21288@item show monitor-warnings 21289@kindex show monitor-warnings@r{, @acronym{MIPS} remote} 21290Show the current setting of printing monitor warnings. 21291 21292@item pmon @var{command} 21293@kindex pmon@r{, @acronym{MIPS} remote} 21294@cindex send PMON command 21295This command allows sending an arbitrary @var{command} string to the 21296monitor. The monitor must be in debug mode for this to work. 21297@end table 21298 21299@node PowerPC Embedded 21300@subsection PowerPC Embedded 21301 21302@cindex DVC register 21303@value{GDBN} supports using the DVC (Data Value Compare) register to 21304implement in hardware simple hardware watchpoint conditions of the form: 21305 21306@smallexample 21307(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \ 21308 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION} 21309@end smallexample 21310 21311The DVC register will be automatically used when @value{GDBN} detects 21312such pattern in a condition expression, and the created watchpoint uses one 21313debug register (either the @code{exact-watchpoints} option is on and the 21314variable is scalar, or the variable has a length of one byte). This feature 21315is available in native @value{GDBN} running on a Linux kernel version 2.6.34 21316or newer. 21317 21318When running on PowerPC embedded processors, @value{GDBN} automatically uses 21319ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on, 21320in which case watchpoints using only one debug register are created when 21321watching variables of scalar types. 21322 21323You can create an artificial array to watch an arbitrary memory 21324region using one of the following commands (@pxref{Expressions}): 21325 21326@smallexample 21327(@value{GDBP}) watch *((char *) @var{address})@@@var{length} 21328(@value{GDBP}) watch @{char[@var{length}]@} @var{address} 21329@end smallexample 21330 21331PowerPC embedded processors support masked watchpoints. See the discussion 21332about the @code{mask} argument in @ref{Set Watchpoints}. 21333 21334@cindex ranged breakpoint 21335PowerPC embedded processors support hardware accelerated 21336@dfn{ranged breakpoints}. A ranged breakpoint stops execution of 21337the inferior whenever it executes an instruction at any address within 21338the range it specifies. To set a ranged breakpoint in @value{GDBN}, 21339use the @code{break-range} command. 21340 21341@value{GDBN} provides the following PowerPC-specific commands: 21342 21343@table @code 21344@kindex break-range 21345@item break-range @var{start-location}, @var{end-location} 21346Set a breakpoint for an address range given by 21347@var{start-location} and @var{end-location}, which can specify a function name, 21348a line number, an offset of lines from the current line or from the start 21349location, or an address of an instruction (see @ref{Specify Location}, 21350for a list of all the possible ways to specify a @var{location}.) 21351The breakpoint will stop execution of the inferior whenever it 21352executes an instruction at any address within the specified range, 21353(including @var{start-location} and @var{end-location}.) 21354 21355@kindex set powerpc 21356@item set powerpc soft-float 21357@itemx show powerpc soft-float 21358Force @value{GDBN} to use (or not use) a software floating point calling 21359convention. By default, @value{GDBN} selects the calling convention based 21360on the selected architecture and the provided executable file. 21361 21362@item set powerpc vector-abi 21363@itemx show powerpc vector-abi 21364Force @value{GDBN} to use the specified calling convention for vector 21365arguments and return values. The valid options are @samp{auto}; 21366@samp{generic}, to avoid vector registers even if they are present; 21367@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE 21368registers. By default, @value{GDBN} selects the calling convention 21369based on the selected architecture and the provided executable file. 21370 21371@item set powerpc exact-watchpoints 21372@itemx show powerpc exact-watchpoints 21373Allow @value{GDBN} to use only one debug register when watching a variable 21374of scalar type, thus assuming that the variable is accessed through the 21375address of its first byte. 21376 21377@kindex target dink32 21378@item target dink32 @var{dev} 21379DINK32 ROM monitor. 21380 21381@kindex target ppcbug 21382@item target ppcbug @var{dev} 21383@kindex target ppcbug1 21384@item target ppcbug1 @var{dev} 21385PPCBUG ROM monitor for PowerPC. 21386 21387@kindex target sds 21388@item target sds @var{dev} 21389SDS monitor, running on a PowerPC board (such as Motorola's ADS). 21390@end table 21391 21392@cindex SDS protocol 21393The following commands specific to the SDS protocol are supported 21394by @value{GDBN}: 21395 21396@table @code 21397@item set sdstimeout @var{nsec} 21398@kindex set sdstimeout 21399Set the timeout for SDS protocol reads to be @var{nsec} seconds. The 21400default is 2 seconds. 21401 21402@item show sdstimeout 21403@kindex show sdstimeout 21404Show the current value of the SDS timeout. 21405 21406@item sds @var{command} 21407@kindex sds@r{, a command} 21408Send the specified @var{command} string to the SDS monitor. 21409@end table 21410 21411 21412@node PA 21413@subsection HP PA Embedded 21414 21415@table @code 21416 21417@kindex target op50n 21418@item target op50n @var{dev} 21419OP50N monitor, running on an OKI HPPA board. 21420 21421@kindex target w89k 21422@item target w89k @var{dev} 21423W89K monitor, running on a Winbond HPPA board. 21424 21425@end table 21426 21427@node Sparclet 21428@subsection Tsqware Sparclet 21429 21430@cindex Sparclet 21431 21432@value{GDBN} enables developers to debug tasks running on 21433Sparclet targets from a Unix host. 21434@value{GDBN} uses code that runs on 21435both the Unix host and on the Sparclet target. The program 21436@code{@value{GDBP}} is installed and executed on the Unix host. 21437 21438@table @code 21439@item remotetimeout @var{args} 21440@kindex remotetimeout 21441@value{GDBN} supports the option @code{remotetimeout}. 21442This option is set by the user, and @var{args} represents the number of 21443seconds @value{GDBN} waits for responses. 21444@end table 21445 21446@cindex compiling, on Sparclet 21447When compiling for debugging, include the options @samp{-g} to get debug 21448information and @samp{-Ttext} to relocate the program to where you wish to 21449load it on the target. You may also want to add the options @samp{-n} or 21450@samp{-N} in order to reduce the size of the sections. Example: 21451 21452@smallexample 21453sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N 21454@end smallexample 21455 21456You can use @code{objdump} to verify that the addresses are what you intended: 21457 21458@smallexample 21459sparclet-aout-objdump --headers --syms prog 21460@end smallexample 21461 21462@cindex running, on Sparclet 21463Once you have set 21464your Unix execution search path to find @value{GDBN}, you are ready to 21465run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} 21466(or @code{sparclet-aout-gdb}, depending on your installation). 21467 21468@value{GDBN} comes up showing the prompt: 21469 21470@smallexample 21471(gdbslet) 21472@end smallexample 21473 21474@menu 21475* Sparclet File:: Setting the file to debug 21476* Sparclet Connection:: Connecting to Sparclet 21477* Sparclet Download:: Sparclet download 21478* Sparclet Execution:: Running and debugging 21479@end menu 21480 21481@node Sparclet File 21482@subsubsection Setting File to Debug 21483 21484The @value{GDBN} command @code{file} lets you choose with program to debug. 21485 21486@smallexample 21487(gdbslet) file prog 21488@end smallexample 21489 21490@need 1000 21491@value{GDBN} then attempts to read the symbol table of @file{prog}. 21492@value{GDBN} locates 21493the file by searching the directories listed in the command search 21494path. 21495If the file was compiled with debug information (option @samp{-g}), source 21496files will be searched as well. 21497@value{GDBN} locates 21498the source files by searching the directories listed in the directory search 21499path (@pxref{Environment, ,Your Program's Environment}). 21500If it fails 21501to find a file, it displays a message such as: 21502 21503@smallexample 21504prog: No such file or directory. 21505@end smallexample 21506 21507When this happens, add the appropriate directories to the search paths with 21508the @value{GDBN} commands @code{path} and @code{dir}, and execute the 21509@code{target} command again. 21510 21511@node Sparclet Connection 21512@subsubsection Connecting to Sparclet 21513 21514The @value{GDBN} command @code{target} lets you connect to a Sparclet target. 21515To connect to a target on serial port ``@code{ttya}'', type: 21516 21517@smallexample 21518(gdbslet) target sparclet /dev/ttya 21519Remote target sparclet connected to /dev/ttya 21520main () at ../prog.c:3 21521@end smallexample 21522 21523@need 750 21524@value{GDBN} displays messages like these: 21525 21526@smallexample 21527Connected to ttya. 21528@end smallexample 21529 21530@node Sparclet Download 21531@subsubsection Sparclet Download 21532 21533@cindex download to Sparclet 21534Once connected to the Sparclet target, 21535you can use the @value{GDBN} 21536@code{load} command to download the file from the host to the target. 21537The file name and load offset should be given as arguments to the @code{load} 21538command. 21539Since the file format is aout, the program must be loaded to the starting 21540address. You can use @code{objdump} to find out what this value is. The load 21541offset is an offset which is added to the VMA (virtual memory address) 21542of each of the file's sections. 21543For instance, if the program 21544@file{prog} was linked to text address 0x1201000, with data at 0x12010160 21545and bss at 0x12010170, in @value{GDBN}, type: 21546 21547@smallexample 21548(gdbslet) load prog 0x12010000 21549Loading section .text, size 0xdb0 vma 0x12010000 21550@end smallexample 21551 21552If the code is loaded at a different address then what the program was linked 21553to, you may need to use the @code{section} and @code{add-symbol-file} commands 21554to tell @value{GDBN} where to map the symbol table. 21555 21556@node Sparclet Execution 21557@subsubsection Running and Debugging 21558 21559@cindex running and debugging Sparclet programs 21560You can now begin debugging the task using @value{GDBN}'s execution control 21561commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN} 21562manual for the list of commands. 21563 21564@smallexample 21565(gdbslet) b main 21566Breakpoint 1 at 0x12010000: file prog.c, line 3. 21567(gdbslet) run 21568Starting program: prog 21569Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3 215703 char *symarg = 0; 21571(gdbslet) step 215724 char *execarg = "hello!"; 21573(gdbslet) 21574@end smallexample 21575 21576@node Sparclite 21577@subsection Fujitsu Sparclite 21578 21579@table @code 21580 21581@kindex target sparclite 21582@item target sparclite @var{dev} 21583Fujitsu sparclite boards, used only for the purpose of loading. 21584You must use an additional command to debug the program. 21585For example: target remote @var{dev} using @value{GDBN} standard 21586remote protocol. 21587 21588@end table 21589 21590@node Z8000 21591@subsection Zilog Z8000 21592 21593@cindex Z8000 21594@cindex simulator, Z8000 21595@cindex Zilog Z8000 simulator 21596 21597When configured for debugging Zilog Z8000 targets, @value{GDBN} includes 21598a Z8000 simulator. 21599 21600For the Z8000 family, @samp{target sim} simulates either the Z8002 (the 21601unsegmented variant of the Z8000 architecture) or the Z8001 (the 21602segmented variant). The simulator recognizes which architecture is 21603appropriate by inspecting the object code. 21604 21605@table @code 21606@item target sim @var{args} 21607@kindex sim 21608@kindex target sim@r{, with Z8000} 21609Debug programs on a simulated CPU. If the simulator supports setup 21610options, specify them via @var{args}. 21611@end table 21612 21613@noindent 21614After specifying this target, you can debug programs for the simulated 21615CPU in the same style as programs for your host computer; use the 21616@code{file} command to load a new program image, the @code{run} command 21617to run your program, and so on. 21618 21619As well as making available all the usual machine registers 21620(@pxref{Registers, ,Registers}), the Z8000 simulator provides three 21621additional items of information as specially named registers: 21622 21623@table @code 21624 21625@item cycles 21626Counts clock-ticks in the simulator. 21627 21628@item insts 21629Counts instructions run in the simulator. 21630 21631@item time 21632Execution time in 60ths of a second. 21633 21634@end table 21635 21636You can refer to these values in @value{GDBN} expressions with the usual 21637conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a 21638conditional breakpoint that suspends only after at least 5000 21639simulated clock ticks. 21640 21641@node AVR 21642@subsection Atmel AVR 21643@cindex AVR 21644 21645When configured for debugging the Atmel AVR, @value{GDBN} supports the 21646following AVR-specific commands: 21647 21648@table @code 21649@item info io_registers 21650@kindex info io_registers@r{, AVR} 21651@cindex I/O registers (Atmel AVR) 21652This command displays information about the AVR I/O registers. For 21653each register, @value{GDBN} prints its number and value. 21654@end table 21655 21656@node CRIS 21657@subsection CRIS 21658@cindex CRIS 21659 21660When configured for debugging CRIS, @value{GDBN} provides the 21661following CRIS-specific commands: 21662 21663@table @code 21664@item set cris-version @var{ver} 21665@cindex CRIS version 21666Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}. 21667The CRIS version affects register names and sizes. This command is useful in 21668case autodetection of the CRIS version fails. 21669 21670@item show cris-version 21671Show the current CRIS version. 21672 21673@item set cris-dwarf2-cfi 21674@cindex DWARF-2 CFI and CRIS 21675Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}. 21676Change to @samp{off} when using @code{gcc-cris} whose version is below 21677@code{R59}. 21678 21679@item show cris-dwarf2-cfi 21680Show the current state of using DWARF-2 CFI. 21681 21682@item set cris-mode @var{mode} 21683@cindex CRIS mode 21684Set the current CRIS mode to @var{mode}. It should only be changed when 21685debugging in guru mode, in which case it should be set to 21686@samp{guru} (the default is @samp{normal}). 21687 21688@item show cris-mode 21689Show the current CRIS mode. 21690@end table 21691 21692@node Super-H 21693@subsection Renesas Super-H 21694@cindex Super-H 21695 21696For the Renesas Super-H processor, @value{GDBN} provides these 21697commands: 21698 21699@table @code 21700@item set sh calling-convention @var{convention} 21701@kindex set sh calling-convention 21702Set the calling-convention used when calling functions from @value{GDBN}. 21703Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}. 21704With the @samp{gcc} setting, functions are called using the @value{NGCC} calling 21705convention. If the DWARF-2 information of the called function specifies 21706that the function follows the Renesas calling convention, the function 21707is called using the Renesas calling convention. If the calling convention 21708is set to @samp{renesas}, the Renesas calling convention is always used, 21709regardless of the DWARF-2 information. This can be used to override the 21710default of @samp{gcc} if debug information is missing, or the compiler 21711does not emit the DWARF-2 calling convention entry for a function. 21712 21713@item show sh calling-convention 21714@kindex show sh calling-convention 21715Show the current calling convention setting. 21716 21717@end table 21718 21719 21720@node Architectures 21721@section Architectures 21722 21723This section describes characteristics of architectures that affect 21724all uses of @value{GDBN} with the architecture, both native and cross. 21725 21726@menu 21727* AArch64:: 21728* i386:: 21729* Alpha:: 21730* MIPS:: 21731* HPPA:: HP PA architecture 21732* SPU:: Cell Broadband Engine SPU architecture 21733* PowerPC:: 21734* Nios II:: 21735@end menu 21736 21737@node AArch64 21738@subsection AArch64 21739@cindex AArch64 support 21740 21741When @value{GDBN} is debugging the AArch64 architecture, it provides the 21742following special commands: 21743 21744@table @code 21745@item set debug aarch64 21746@kindex set debug aarch64 21747This command determines whether AArch64 architecture-specific debugging 21748messages are to be displayed. 21749 21750@item show debug aarch64 21751Show whether AArch64 debugging messages are displayed. 21752 21753@end table 21754 21755@node i386 21756@subsection x86 Architecture-specific Issues 21757 21758@table @code 21759@item set struct-convention @var{mode} 21760@kindex set struct-convention 21761@cindex struct return convention 21762@cindex struct/union returned in registers 21763Set the convention used by the inferior to return @code{struct}s and 21764@code{union}s from functions to @var{mode}. Possible values of 21765@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the 21766default). @code{"default"} or @code{"pcc"} means that @code{struct}s 21767are returned on the stack, while @code{"reg"} means that a 21768@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will 21769be returned in a register. 21770 21771@item show struct-convention 21772@kindex show struct-convention 21773Show the current setting of the convention to return @code{struct}s 21774from functions. 21775@end table 21776 21777@subsubsection Intel(R) @dfn{Memory Protection Extensions} (MPX). 21778@cindex Intel(R) Memory Protection Extensions (MPX). 21779 21780Memory Protection Extension (MPX) adds the bound registers @samp{BND0} 21781@footnote{The register named with capital letters represent the architecture 21782registers.} through @samp{BND3}. Bound registers store a pair of 64-bit values 21783which are the lower bound and upper bound. Bounds are effective addresses or 21784memory locations. The upper bounds are architecturally represented in 1's 21785complement form. A bound having lower bound = 0, and upper bound = 0 21786(1's complement of all bits set) will allow access to the entire address space. 21787 21788@samp{BND0} through @samp{BND3} are represented in @value{GDBN} as @samp{bnd0raw} 21789through @samp{bnd3raw}. Pseudo registers @samp{bnd0} through @samp{bnd3} 21790display the upper bound performing the complement of one operation on the 21791upper bound value, i.e.@ when upper bound in @samp{bnd0raw} is 0 in the 21792@value{GDBN} @samp{bnd0} it will be @code{0xfff@dots{}}. In this sense it 21793can also be noted that the upper bounds are inclusive. 21794 21795As an example, assume that the register BND0 holds bounds for a pointer having 21796access allowed for the range between 0x32 and 0x71. The values present on 21797bnd0raw and bnd registers are presented as follows: 21798 21799@smallexample 21800 bnd0raw = @{0x32, 0xffffffff8e@} 21801 bnd0 = @{lbound = 0x32, ubound = 0x71@} : size 64 21802@end smallexample 21803 21804This way the raw value can be accessed via bnd0raw@dots{}bnd3raw. Any 21805change on bnd0@dots{}bnd3 or bnd0raw@dots{}bnd3raw is reflect on its 21806counterpart. When the bnd0@dots{}bnd3 registers are displayed via 21807Python, the display includes the memory size, in bits, accessible to 21808the pointer. 21809 21810@node Alpha 21811@subsection Alpha 21812 21813See the following section. 21814 21815@node MIPS 21816@subsection @acronym{MIPS} 21817 21818@cindex stack on Alpha 21819@cindex stack on @acronym{MIPS} 21820@cindex Alpha stack 21821@cindex @acronym{MIPS} stack 21822Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which 21823sometimes requires @value{GDBN} to search backward in the object code to 21824find the beginning of a function. 21825 21826@cindex response time, @acronym{MIPS} debugging 21827To improve response time (especially for embedded applications, where 21828@value{GDBN} may be restricted to a slow serial line for this search) 21829you may want to limit the size of this search, using one of these 21830commands: 21831 21832@table @code 21833@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS}) 21834@item set heuristic-fence-post @var{limit} 21835Restrict @value{GDBN} to examining at most @var{limit} bytes in its 21836search for the beginning of a function. A value of @var{0} (the 21837default) means there is no limit. However, except for @var{0}, the 21838larger the limit the more bytes @code{heuristic-fence-post} must search 21839and therefore the longer it takes to run. You should only need to use 21840this command when debugging a stripped executable. 21841 21842@item show heuristic-fence-post 21843Display the current limit. 21844@end table 21845 21846@noindent 21847These commands are available @emph{only} when @value{GDBN} is configured 21848for debugging programs on Alpha or @acronym{MIPS} processors. 21849 21850Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS} 21851programs: 21852 21853@table @code 21854@item set mips abi @var{arg} 21855@kindex set mips abi 21856@cindex set ABI for @acronym{MIPS} 21857Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible 21858values of @var{arg} are: 21859 21860@table @samp 21861@item auto 21862The default ABI associated with the current binary (this is the 21863default). 21864@item o32 21865@item o64 21866@item n32 21867@item n64 21868@item eabi32 21869@item eabi64 21870@end table 21871 21872@item show mips abi 21873@kindex show mips abi 21874Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior. 21875 21876@item set mips compression @var{arg} 21877@kindex set mips compression 21878@cindex code compression, @acronym{MIPS} 21879Tell @value{GDBN} which @acronym{MIPS} compressed 21880@acronym{ISA, Instruction Set Architecture} encoding is used by the 21881inferior. @value{GDBN} uses this for code disassembly and other 21882internal interpretation purposes. This setting is only referred to 21883when no executable has been associated with the debugging session or 21884the executable does not provide information about the encoding it uses. 21885Otherwise this setting is automatically updated from information 21886provided by the executable. 21887 21888Possible values of @var{arg} are @samp{mips16} and @samp{micromips}. 21889The default compressed @acronym{ISA} encoding is @samp{mips16}, as 21890executables containing @acronym{MIPS16} code frequently are not 21891identified as such. 21892 21893This setting is ``sticky''; that is, it retains its value across 21894debugging sessions until reset either explicitly with this command or 21895implicitly from an executable. 21896 21897The compiler and/or assembler typically add symbol table annotations to 21898identify functions compiled for the @acronym{MIPS16} or 21899@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations 21900are present, @value{GDBN} uses them in preference to the global 21901compressed @acronym{ISA} encoding setting. 21902 21903@item show mips compression 21904@kindex show mips compression 21905Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by 21906@value{GDBN} to debug the inferior. 21907 21908@item set mipsfpu 21909@itemx show mipsfpu 21910@xref{MIPS Embedded, set mipsfpu}. 21911 21912@item set mips mask-address @var{arg} 21913@kindex set mips mask-address 21914@cindex @acronym{MIPS} addresses, masking 21915This command determines whether the most-significant 32 bits of 64-bit 21916@acronym{MIPS} addresses are masked off. The argument @var{arg} can be 21917@samp{on}, @samp{off}, or @samp{auto}. The latter is the default 21918setting, which lets @value{GDBN} determine the correct value. 21919 21920@item show mips mask-address 21921@kindex show mips mask-address 21922Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or 21923not. 21924 21925@item set remote-mips64-transfers-32bit-regs 21926@kindex set remote-mips64-transfers-32bit-regs 21927This command controls compatibility with 64-bit @acronym{MIPS} targets that 21928transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target 21929that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr}, 21930and 64 bits for other registers, set this option to @samp{on}. 21931 21932@item show remote-mips64-transfers-32bit-regs 21933@kindex show remote-mips64-transfers-32bit-regs 21934Show the current setting of compatibility with older @acronym{MIPS} 64 targets. 21935 21936@item set debug mips 21937@kindex set debug mips 21938This command turns on and off debugging messages for the @acronym{MIPS}-specific 21939target code in @value{GDBN}. 21940 21941@item show debug mips 21942@kindex show debug mips 21943Show the current setting of @acronym{MIPS} debugging messages. 21944@end table 21945 21946 21947@node HPPA 21948@subsection HPPA 21949@cindex HPPA support 21950 21951When @value{GDBN} is debugging the HP PA architecture, it provides the 21952following special commands: 21953 21954@table @code 21955@item set debug hppa 21956@kindex set debug hppa 21957This command determines whether HPPA architecture-specific debugging 21958messages are to be displayed. 21959 21960@item show debug hppa 21961Show whether HPPA debugging messages are displayed. 21962 21963@item maint print unwind @var{address} 21964@kindex maint print unwind@r{, HPPA} 21965This command displays the contents of the unwind table entry at the 21966given @var{address}. 21967 21968@end table 21969 21970 21971@node SPU 21972@subsection Cell Broadband Engine SPU architecture 21973@cindex Cell Broadband Engine 21974@cindex SPU 21975 21976When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture, 21977it provides the following special commands: 21978 21979@table @code 21980@item info spu event 21981@kindex info spu 21982Display SPU event facility status. Shows current event mask 21983and pending event status. 21984 21985@item info spu signal 21986Display SPU signal notification facility status. Shows pending 21987signal-control word and signal notification mode of both signal 21988notification channels. 21989 21990@item info spu mailbox 21991Display SPU mailbox facility status. Shows all pending entries, 21992in order of processing, in each of the SPU Write Outbound, 21993SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes. 21994 21995@item info spu dma 21996Display MFC DMA status. Shows all pending commands in the MFC 21997DMA queue. For each entry, opcode, tag, class IDs, effective 21998and local store addresses and transfer size are shown. 21999 22000@item info spu proxydma 22001Display MFC Proxy-DMA status. Shows all pending commands in the MFC 22002Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective 22003and local store addresses and transfer size are shown. 22004 22005@end table 22006 22007When @value{GDBN} is debugging a combined PowerPC/SPU application 22008on the Cell Broadband Engine, it provides in addition the following 22009special commands: 22010 22011@table @code 22012@item set spu stop-on-load @var{arg} 22013@kindex set spu 22014Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN} 22015will give control to the user when a new SPE thread enters its @code{main} 22016function. The default is @code{off}. 22017 22018@item show spu stop-on-load 22019@kindex show spu 22020Show whether to stop for new SPE threads. 22021 22022@item set spu auto-flush-cache @var{arg} 22023Set whether to automatically flush the software-managed cache. When set to 22024@code{on}, @value{GDBN} will automatically cause the SPE software-managed 22025cache to be flushed whenever SPE execution stops. This provides a consistent 22026view of PowerPC memory that is accessed via the cache. If an application 22027does not use the software-managed cache, this option has no effect. 22028 22029@item show spu auto-flush-cache 22030Show whether to automatically flush the software-managed cache. 22031 22032@end table 22033 22034@node PowerPC 22035@subsection PowerPC 22036@cindex PowerPC architecture 22037 22038When @value{GDBN} is debugging the PowerPC architecture, it provides a set of 22039pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point 22040numbers stored in the floating point registers. These values must be stored 22041in two consecutive registers, always starting at an even register like 22042@code{f0} or @code{f2}. 22043 22044The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed 22045by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0}, 22046@code{f2} and @code{f3} for @code{$dl1} and so on. 22047 22048For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit 22049wide Extended Floating Point Registers (@samp{f32} through @samp{f63}). 22050 22051@node Nios II 22052@subsection Nios II 22053@cindex Nios II architecture 22054 22055When @value{GDBN} is debugging the Nios II architecture, 22056it provides the following special commands: 22057 22058@table @code 22059 22060@item set debug nios2 22061@kindex set debug nios2 22062This command turns on and off debugging messages for the Nios II 22063target code in @value{GDBN}. 22064 22065@item show debug nios2 22066@kindex show debug nios2 22067Show the current setting of Nios II debugging messages. 22068@end table 22069 22070@node Controlling GDB 22071@chapter Controlling @value{GDBN} 22072 22073You can alter the way @value{GDBN} interacts with you by using the 22074@code{set} command. For commands controlling how @value{GDBN} displays 22075data, see @ref{Print Settings, ,Print Settings}. Other settings are 22076described here. 22077 22078@menu 22079* Prompt:: Prompt 22080* Editing:: Command editing 22081* Command History:: Command history 22082* Screen Size:: Screen size 22083* Numbers:: Numbers 22084* ABI:: Configuring the current ABI 22085* Auto-loading:: Automatically loading associated files 22086* Messages/Warnings:: Optional warnings and messages 22087* Debugging Output:: Optional messages about internal happenings 22088* Other Misc Settings:: Other Miscellaneous Settings 22089@end menu 22090 22091@node Prompt 22092@section Prompt 22093 22094@cindex prompt 22095 22096@value{GDBN} indicates its readiness to read a command by printing a string 22097called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You 22098can change the prompt string with the @code{set prompt} command. For 22099instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change 22100the prompt in one of the @value{GDBN} sessions so that you can always tell 22101which one you are talking to. 22102 22103@emph{Note:} @code{set prompt} does not add a space for you after the 22104prompt you set. This allows you to set a prompt which ends in a space 22105or a prompt that does not. 22106 22107@table @code 22108@kindex set prompt 22109@item set prompt @var{newprompt} 22110Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth. 22111 22112@kindex show prompt 22113@item show prompt 22114Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}} 22115@end table 22116 22117Versions of @value{GDBN} that ship with Python scripting enabled have 22118prompt extensions. The commands for interacting with these extensions 22119are: 22120 22121@table @code 22122@kindex set extended-prompt 22123@item set extended-prompt @var{prompt} 22124Set an extended prompt that allows for substitutions. 22125@xref{gdb.prompt}, for a list of escape sequences that can be used for 22126substitution. Any escape sequences specified as part of the prompt 22127string are replaced with the corresponding strings each time the prompt 22128is displayed. 22129 22130For example: 22131 22132@smallexample 22133set extended-prompt Current working directory: \w (gdb) 22134@end smallexample 22135 22136Note that when an extended-prompt is set, it takes control of the 22137@var{prompt_hook} hook. @xref{prompt_hook}, for further information. 22138 22139@kindex show extended-prompt 22140@item show extended-prompt 22141Prints the extended prompt. Any escape sequences specified as part of 22142the prompt string with @code{set extended-prompt}, are replaced with the 22143corresponding strings each time the prompt is displayed. 22144@end table 22145 22146@node Editing 22147@section Command Editing 22148@cindex readline 22149@cindex command line editing 22150 22151@value{GDBN} reads its input commands via the @dfn{Readline} interface. This 22152@sc{gnu} library provides consistent behavior for programs which provide a 22153command line interface to the user. Advantages are @sc{gnu} Emacs-style 22154or @dfn{vi}-style inline editing of commands, @code{csh}-like history 22155substitution, and a storage and recall of command history across 22156debugging sessions. 22157 22158You may control the behavior of command line editing in @value{GDBN} with the 22159command @code{set}. 22160 22161@table @code 22162@kindex set editing 22163@cindex editing 22164@item set editing 22165@itemx set editing on 22166Enable command line editing (enabled by default). 22167 22168@item set editing off 22169Disable command line editing. 22170 22171@kindex show editing 22172@item show editing 22173Show whether command line editing is enabled. 22174@end table 22175 22176@ifset SYSTEM_READLINE 22177@xref{Command Line Editing, , , rluserman, GNU Readline Library}, 22178@end ifset 22179@ifclear SYSTEM_READLINE 22180@xref{Command Line Editing}, 22181@end ifclear 22182for more details about the Readline 22183interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are 22184encouraged to read that chapter. 22185 22186@node Command History 22187@section Command History 22188@cindex command history 22189 22190@value{GDBN} can keep track of the commands you type during your 22191debugging sessions, so that you can be certain of precisely what 22192happened. Use these commands to manage the @value{GDBN} command 22193history facility. 22194 22195@value{GDBN} uses the @sc{gnu} History library, a part of the Readline 22196package, to provide the history facility. 22197@ifset SYSTEM_READLINE 22198@xref{Using History Interactively, , , history, GNU History Library}, 22199@end ifset 22200@ifclear SYSTEM_READLINE 22201@xref{Using History Interactively}, 22202@end ifclear 22203for the detailed description of the History library. 22204 22205To issue a command to @value{GDBN} without affecting certain aspects of 22206the state which is seen by users, prefix it with @samp{server } 22207(@pxref{Server Prefix}). This 22208means that this command will not affect the command history, nor will it 22209affect @value{GDBN}'s notion of which command to repeat if @key{RET} is 22210pressed on a line by itself. 22211 22212@cindex @code{server}, command prefix 22213The server prefix does not affect the recording of values into the value 22214history; to print a value without recording it into the value history, 22215use the @code{output} command instead of the @code{print} command. 22216 22217Here is the description of @value{GDBN} commands related to command 22218history. 22219 22220@table @code 22221@cindex history substitution 22222@cindex history file 22223@kindex set history filename 22224@cindex @env{GDBHISTFILE}, environment variable 22225@item set history filename @var{fname} 22226Set the name of the @value{GDBN} command history file to @var{fname}. 22227This is the file where @value{GDBN} reads an initial command history 22228list, and where it writes the command history from this session when it 22229exits. You can access this list through history expansion or through 22230the history command editing characters listed below. This file defaults 22231to the value of the environment variable @code{GDBHISTFILE}, or to 22232@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable 22233is not set. 22234 22235@cindex save command history 22236@kindex set history save 22237@item set history save 22238@itemx set history save on 22239Record command history in a file, whose name may be specified with the 22240@code{set history filename} command. By default, this option is disabled. 22241 22242@item set history save off 22243Stop recording command history in a file. 22244 22245@cindex history size 22246@kindex set history size 22247@cindex @env{HISTSIZE}, environment variable 22248@item set history size @var{size} 22249@itemx set history size unlimited 22250Set the number of commands which @value{GDBN} keeps in its history list. 22251This defaults to the value of the environment variable 22252@code{HISTSIZE}, or to 256 if this variable is not set. If @var{size} 22253is @code{unlimited}, the number of commands @value{GDBN} keeps in the 22254history list is unlimited. 22255@end table 22256 22257History expansion assigns special meaning to the character @kbd{!}. 22258@ifset SYSTEM_READLINE 22259@xref{Event Designators, , , history, GNU History Library}, 22260@end ifset 22261@ifclear SYSTEM_READLINE 22262@xref{Event Designators}, 22263@end ifclear 22264for more details. 22265 22266@cindex history expansion, turn on/off 22267Since @kbd{!} is also the logical not operator in C, history expansion 22268is off by default. If you decide to enable history expansion with the 22269@code{set history expansion on} command, you may sometimes need to 22270follow @kbd{!} (when it is used as logical not, in an expression) with 22271a space or a tab to prevent it from being expanded. The readline 22272history facilities do not attempt substitution on the strings 22273@kbd{!=} and @kbd{!(}, even when history expansion is enabled. 22274 22275The commands to control history expansion are: 22276 22277@table @code 22278@item set history expansion on 22279@itemx set history expansion 22280@kindex set history expansion 22281Enable history expansion. History expansion is off by default. 22282 22283@item set history expansion off 22284Disable history expansion. 22285 22286@c @group 22287@kindex show history 22288@item show history 22289@itemx show history filename 22290@itemx show history save 22291@itemx show history size 22292@itemx show history expansion 22293These commands display the state of the @value{GDBN} history parameters. 22294@code{show history} by itself displays all four states. 22295@c @end group 22296@end table 22297 22298@table @code 22299@kindex show commands 22300@cindex show last commands 22301@cindex display command history 22302@item show commands 22303Display the last ten commands in the command history. 22304 22305@item show commands @var{n} 22306Print ten commands centered on command number @var{n}. 22307 22308@item show commands + 22309Print ten commands just after the commands last printed. 22310@end table 22311 22312@node Screen Size 22313@section Screen Size 22314@cindex size of screen 22315@cindex screen size 22316@cindex pagination 22317@cindex page size 22318@cindex pauses in output 22319 22320Certain commands to @value{GDBN} may produce large amounts of 22321information output to the screen. To help you read all of it, 22322@value{GDBN} pauses and asks you for input at the end of each page of 22323output. Type @key{RET} when you want to continue the output, or @kbd{q} 22324to discard the remaining output. Also, the screen width setting 22325determines when to wrap lines of output. Depending on what is being 22326printed, @value{GDBN} tries to break the line at a readable place, 22327rather than simply letting it overflow onto the following line. 22328 22329Normally @value{GDBN} knows the size of the screen from the terminal 22330driver software. For example, on Unix @value{GDBN} uses the termcap data base 22331together with the value of the @code{TERM} environment variable and the 22332@code{stty rows} and @code{stty cols} settings. If this is not correct, 22333you can override it with the @code{set height} and @code{set 22334width} commands: 22335 22336@table @code 22337@kindex set height 22338@kindex set width 22339@kindex show width 22340@kindex show height 22341@item set height @var{lpp} 22342@itemx set height unlimited 22343@itemx show height 22344@itemx set width @var{cpl} 22345@itemx set width unlimited 22346@itemx show width 22347These @code{set} commands specify a screen height of @var{lpp} lines and 22348a screen width of @var{cpl} characters. The associated @code{show} 22349commands display the current settings. 22350 22351If you specify a height of either @code{unlimited} or zero lines, 22352@value{GDBN} does not pause during output no matter how long the 22353output is. This is useful if output is to a file or to an editor 22354buffer. 22355 22356Likewise, you can specify @samp{set width unlimited} or @samp{set 22357width 0} to prevent @value{GDBN} from wrapping its output. 22358 22359@item set pagination on 22360@itemx set pagination off 22361@kindex set pagination 22362Turn the output pagination on or off; the default is on. Turning 22363pagination off is the alternative to @code{set height unlimited}. Note that 22364running @value{GDBN} with the @option{--batch} option (@pxref{Mode 22365Options, -batch}) also automatically disables pagination. 22366 22367@item show pagination 22368@kindex show pagination 22369Show the current pagination mode. 22370@end table 22371 22372@node Numbers 22373@section Numbers 22374@cindex number representation 22375@cindex entering numbers 22376 22377You can always enter numbers in octal, decimal, or hexadecimal in 22378@value{GDBN} by the usual conventions: octal numbers begin with 22379@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers 22380begin with @samp{0x}. Numbers that neither begin with @samp{0} or 22381@samp{0x}, nor end with a @samp{.} are, by default, entered in base 2238210; likewise, the default display for numbers---when no particular 22383format is specified---is base 10. You can change the default base for 22384both input and output with the commands described below. 22385 22386@table @code 22387@kindex set input-radix 22388@item set input-radix @var{base} 22389Set the default base for numeric input. Supported choices 22390for @var{base} are decimal 8, 10, or 16. The base must itself be 22391specified either unambiguously or using the current input radix; for 22392example, any of 22393 22394@smallexample 22395set input-radix 012 22396set input-radix 10. 22397set input-radix 0xa 22398@end smallexample 22399 22400@noindent 22401sets the input base to decimal. On the other hand, @samp{set input-radix 10} 22402leaves the input radix unchanged, no matter what it was, since 22403@samp{10}, being without any leading or trailing signs of its base, is 22404interpreted in the current radix. Thus, if the current radix is 16, 22405@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't 22406change the radix. 22407 22408@kindex set output-radix 22409@item set output-radix @var{base} 22410Set the default base for numeric display. Supported choices 22411for @var{base} are decimal 8, 10, or 16. The base must itself be 22412specified either unambiguously or using the current input radix. 22413 22414@kindex show input-radix 22415@item show input-radix 22416Display the current default base for numeric input. 22417 22418@kindex show output-radix 22419@item show output-radix 22420Display the current default base for numeric display. 22421 22422@item set radix @r{[}@var{base}@r{]} 22423@itemx show radix 22424@kindex set radix 22425@kindex show radix 22426These commands set and show the default base for both input and output 22427of numbers. @code{set radix} sets the radix of input and output to 22428the same base; without an argument, it resets the radix back to its 22429default value of 10. 22430 22431@end table 22432 22433@node ABI 22434@section Configuring the Current ABI 22435 22436@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your 22437application automatically. However, sometimes you need to override its 22438conclusions. Use these commands to manage @value{GDBN}'s view of the 22439current ABI. 22440 22441@cindex OS ABI 22442@kindex set osabi 22443@kindex show osabi 22444@cindex Newlib OS ABI and its influence on the longjmp handling 22445 22446One @value{GDBN} configuration can debug binaries for multiple operating 22447system targets, either via remote debugging or native emulation. 22448@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use, 22449but you can override its conclusion using the @code{set osabi} command. 22450One example where this is useful is in debugging of binaries which use 22451an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does 22452not have the same identifying marks that the standard C library for your 22453platform provides. 22454 22455When @value{GDBN} is debugging the AArch64 architecture, it provides a 22456``Newlib'' OS ABI. This is useful for handling @code{setjmp} and 22457@code{longjmp} when debugging binaries that use the @sc{newlib} C library. 22458The ``Newlib'' OS ABI can be selected by @code{set osabi Newlib}. 22459 22460@table @code 22461@item show osabi 22462Show the OS ABI currently in use. 22463 22464@item set osabi 22465With no argument, show the list of registered available OS ABI's. 22466 22467@item set osabi @var{abi} 22468Set the current OS ABI to @var{abi}. 22469@end table 22470 22471@cindex float promotion 22472 22473Generally, the way that an argument of type @code{float} is passed to a 22474function depends on whether the function is prototyped. For a prototyped 22475(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged, 22476according to the architecture's convention for @code{float}. For unprototyped 22477(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type 22478@code{double} and then passed. 22479 22480Unfortunately, some forms of debug information do not reliably indicate whether 22481a function is prototyped. If @value{GDBN} calls a function that is not marked 22482as prototyped, it consults @kbd{set coerce-float-to-double}. 22483 22484@table @code 22485@kindex set coerce-float-to-double 22486@item set coerce-float-to-double 22487@itemx set coerce-float-to-double on 22488Arguments of type @code{float} will be promoted to @code{double} when passed 22489to an unprototyped function. This is the default setting. 22490 22491@item set coerce-float-to-double off 22492Arguments of type @code{float} will be passed directly to unprototyped 22493functions. 22494 22495@kindex show coerce-float-to-double 22496@item show coerce-float-to-double 22497Show the current setting of promoting @code{float} to @code{double}. 22498@end table 22499 22500@kindex set cp-abi 22501@kindex show cp-abi 22502@value{GDBN} needs to know the ABI used for your program's C@t{++} 22503objects. The correct C@t{++} ABI depends on which C@t{++} compiler was 22504used to build your application. @value{GDBN} only fully supports 22505programs with a single C@t{++} ABI; if your program contains code using 22506multiple C@t{++} ABI's or if @value{GDBN} can not identify your 22507program's ABI correctly, you can tell @value{GDBN} which ABI to use. 22508Currently supported ABI's include ``gnu-v2'', for @code{g++} versions 22509before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and 22510``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may 22511use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is 22512``auto''. 22513 22514@table @code 22515@item show cp-abi 22516Show the C@t{++} ABI currently in use. 22517 22518@item set cp-abi 22519With no argument, show the list of supported C@t{++} ABI's. 22520 22521@item set cp-abi @var{abi} 22522@itemx set cp-abi auto 22523Set the current C@t{++} ABI to @var{abi}, or return to automatic detection. 22524@end table 22525 22526@node Auto-loading 22527@section Automatically loading associated files 22528@cindex auto-loading 22529 22530@value{GDBN} sometimes reads files with commands and settings automatically, 22531without being explicitly told so by the user. We call this feature 22532@dfn{auto-loading}. While auto-loading is useful for automatically adapting 22533@value{GDBN} to the needs of your project, it can sometimes produce unexpected 22534results or introduce security risks (e.g., if the file comes from untrusted 22535sources). 22536 22537@menu 22538* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit} 22539* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db} 22540 22541* Auto-loading safe path:: @samp{set/show/info auto-load safe-path} 22542* Auto-loading verbose mode:: @samp{set/show debug auto-load} 22543@end menu 22544 22545There are various kinds of files @value{GDBN} can automatically load. 22546In addition to these files, @value{GDBN} supports auto-loading code written 22547in various extension languages. @xref{Auto-loading extensions}. 22548 22549Note that loading of these associated files (including the local @file{.gdbinit} 22550file) requires accordingly configured @code{auto-load safe-path} 22551(@pxref{Auto-loading safe path}). 22552 22553For these reasons, @value{GDBN} includes commands and options to let you 22554control when to auto-load files and which files should be auto-loaded. 22555 22556@table @code 22557@anchor{set auto-load off} 22558@kindex set auto-load off 22559@item set auto-load off 22560Globally disable loading of all auto-loaded files. 22561You may want to use this command with the @samp{-iex} option 22562(@pxref{Option -init-eval-command}) such as: 22563@smallexample 22564$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile} 22565@end smallexample 22566 22567Be aware that system init file (@pxref{System-wide configuration}) 22568and init files from your home directory (@pxref{Home Directory Init File}) 22569still get read (as they come from generally trusted directories). 22570To prevent @value{GDBN} from auto-loading even those init files, use the 22571@option{-nx} option (@pxref{Mode Options}), in addition to 22572@code{set auto-load no}. 22573 22574@anchor{show auto-load} 22575@kindex show auto-load 22576@item show auto-load 22577Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled 22578or disabled. 22579 22580@smallexample 22581(gdb) show auto-load 22582gdb-scripts: Auto-loading of canned sequences of commands scripts is on. 22583libthread-db: Auto-loading of inferior specific libthread_db is on. 22584local-gdbinit: Auto-loading of .gdbinit script from current directory 22585 is on. 22586python-scripts: Auto-loading of Python scripts is on. 22587safe-path: List of directories from which it is safe to auto-load files 22588 is $debugdir:$datadir/auto-load. 22589scripts-directory: List of directories from which to load auto-loaded scripts 22590 is $debugdir:$datadir/auto-load. 22591@end smallexample 22592 22593@anchor{info auto-load} 22594@kindex info auto-load 22595@item info auto-load 22596Print whether each specific @samp{auto-load} file(s) have been auto-loaded or 22597not. 22598 22599@smallexample 22600(gdb) info auto-load 22601gdb-scripts: 22602Loaded Script 22603Yes /home/user/gdb/gdb-gdb.gdb 22604libthread-db: No auto-loaded libthread-db. 22605local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been 22606 loaded. 22607python-scripts: 22608Loaded Script 22609Yes /home/user/gdb/gdb-gdb.py 22610@end smallexample 22611@end table 22612 22613These are @value{GDBN} control commands for the auto-loading: 22614 22615@multitable @columnfractions .5 .5 22616@item @xref{set auto-load off}. 22617@tab Disable auto-loading globally. 22618@item @xref{show auto-load}. 22619@tab Show setting of all kinds of files. 22620@item @xref{info auto-load}. 22621@tab Show state of all kinds of files. 22622@item @xref{set auto-load gdb-scripts}. 22623@tab Control for @value{GDBN} command scripts. 22624@item @xref{show auto-load gdb-scripts}. 22625@tab Show setting of @value{GDBN} command scripts. 22626@item @xref{info auto-load gdb-scripts}. 22627@tab Show state of @value{GDBN} command scripts. 22628@item @xref{set auto-load python-scripts}. 22629@tab Control for @value{GDBN} Python scripts. 22630@item @xref{show auto-load python-scripts}. 22631@tab Show setting of @value{GDBN} Python scripts. 22632@item @xref{info auto-load python-scripts}. 22633@tab Show state of @value{GDBN} Python scripts. 22634@item @xref{set auto-load guile-scripts}. 22635@tab Control for @value{GDBN} Guile scripts. 22636@item @xref{show auto-load guile-scripts}. 22637@tab Show setting of @value{GDBN} Guile scripts. 22638@item @xref{info auto-load guile-scripts}. 22639@tab Show state of @value{GDBN} Guile scripts. 22640@item @xref{set auto-load scripts-directory}. 22641@tab Control for @value{GDBN} auto-loaded scripts location. 22642@item @xref{show auto-load scripts-directory}. 22643@tab Show @value{GDBN} auto-loaded scripts location. 22644@item @xref{add-auto-load-scripts-directory}. 22645@tab Add directory for auto-loaded scripts location list. 22646@item @xref{set auto-load local-gdbinit}. 22647@tab Control for init file in the current directory. 22648@item @xref{show auto-load local-gdbinit}. 22649@tab Show setting of init file in the current directory. 22650@item @xref{info auto-load local-gdbinit}. 22651@tab Show state of init file in the current directory. 22652@item @xref{set auto-load libthread-db}. 22653@tab Control for thread debugging library. 22654@item @xref{show auto-load libthread-db}. 22655@tab Show setting of thread debugging library. 22656@item @xref{info auto-load libthread-db}. 22657@tab Show state of thread debugging library. 22658@item @xref{set auto-load safe-path}. 22659@tab Control directories trusted for automatic loading. 22660@item @xref{show auto-load safe-path}. 22661@tab Show directories trusted for automatic loading. 22662@item @xref{add-auto-load-safe-path}. 22663@tab Add directory trusted for automatic loading. 22664@end multitable 22665 22666@node Init File in the Current Directory 22667@subsection Automatically loading init file in the current directory 22668@cindex auto-loading init file in the current directory 22669 22670By default, @value{GDBN} reads and executes the canned sequences of commands 22671from init file (if any) in the current working directory, 22672see @ref{Init File in the Current Directory during Startup}. 22673 22674Note that loading of this local @file{.gdbinit} file also requires accordingly 22675configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}). 22676 22677@table @code 22678@anchor{set auto-load local-gdbinit} 22679@kindex set auto-load local-gdbinit 22680@item set auto-load local-gdbinit [on|off] 22681Enable or disable the auto-loading of canned sequences of commands 22682(@pxref{Sequences}) found in init file in the current directory. 22683 22684@anchor{show auto-load local-gdbinit} 22685@kindex show auto-load local-gdbinit 22686@item show auto-load local-gdbinit 22687Show whether auto-loading of canned sequences of commands from init file in the 22688current directory is enabled or disabled. 22689 22690@anchor{info auto-load local-gdbinit} 22691@kindex info auto-load local-gdbinit 22692@item info auto-load local-gdbinit 22693Print whether canned sequences of commands from init file in the 22694current directory have been auto-loaded. 22695@end table 22696 22697@node libthread_db.so.1 file 22698@subsection Automatically loading thread debugging library 22699@cindex auto-loading libthread_db.so.1 22700 22701This feature is currently present only on @sc{gnu}/Linux native hosts. 22702 22703@value{GDBN} reads in some cases thread debugging library from places specific 22704to the inferior (@pxref{set libthread-db-search-path}). 22705 22706The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed 22707without checking this @samp{set auto-load libthread-db} switch as system 22708libraries have to be trusted in general. In all other cases of 22709@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set 22710auto-load libthread-db} is enabled before trying to open such thread debugging 22711library. 22712 22713Note that loading of this debugging library also requires accordingly configured 22714@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 22715 22716@table @code 22717@anchor{set auto-load libthread-db} 22718@kindex set auto-load libthread-db 22719@item set auto-load libthread-db [on|off] 22720Enable or disable the auto-loading of inferior specific thread debugging library. 22721 22722@anchor{show auto-load libthread-db} 22723@kindex show auto-load libthread-db 22724@item show auto-load libthread-db 22725Show whether auto-loading of inferior specific thread debugging library is 22726enabled or disabled. 22727 22728@anchor{info auto-load libthread-db} 22729@kindex info auto-load libthread-db 22730@item info auto-load libthread-db 22731Print the list of all loaded inferior specific thread debugging libraries and 22732for each such library print list of inferior @var{pid}s using it. 22733@end table 22734 22735@node Auto-loading safe path 22736@subsection Security restriction for auto-loading 22737@cindex auto-loading safe-path 22738 22739As the files of inferior can come from untrusted source (such as submitted by 22740an application user) @value{GDBN} does not always load any files automatically. 22741@value{GDBN} provides the @samp{set auto-load safe-path} setting to list 22742directories trusted for loading files not explicitly requested by user. 22743Each directory can also be a shell wildcard pattern. 22744 22745If the path is not set properly you will see a warning and the file will not 22746get loaded: 22747 22748@smallexample 22749$ ./gdb -q ./gdb 22750Reading symbols from /home/user/gdb/gdb...done. 22751warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been 22752 declined by your `auto-load safe-path' set 22753 to "$debugdir:$datadir/auto-load". 22754warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been 22755 declined by your `auto-load safe-path' set 22756 to "$debugdir:$datadir/auto-load". 22757@end smallexample 22758 22759@noindent 22760To instruct @value{GDBN} to go ahead and use the init files anyway, 22761invoke @value{GDBN} like this: 22762 22763@smallexample 22764$ gdb -q -iex "set auto-load safe-path /home/user/gdb" ./gdb 22765@end smallexample 22766 22767The list of trusted directories is controlled by the following commands: 22768 22769@table @code 22770@anchor{set auto-load safe-path} 22771@kindex set auto-load safe-path 22772@item set auto-load safe-path @r{[}@var{directories}@r{]} 22773Set the list of directories (and their subdirectories) trusted for automatic 22774loading and execution of scripts. You can also enter a specific trusted file. 22775Each directory can also be a shell wildcard pattern; wildcards do not match 22776directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch} 22777(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}). 22778If you omit @var{directories}, @samp{auto-load safe-path} will be reset to 22779its default value as specified during @value{GDBN} compilation. 22780 22781The list of directories uses path separator (@samp{:} on GNU and Unix 22782systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 22783to the @env{PATH} environment variable. 22784 22785@anchor{show auto-load safe-path} 22786@kindex show auto-load safe-path 22787@item show auto-load safe-path 22788Show the list of directories trusted for automatic loading and execution of 22789scripts. 22790 22791@anchor{add-auto-load-safe-path} 22792@kindex add-auto-load-safe-path 22793@item add-auto-load-safe-path 22794Add an entry (or list of entries) to the list of directories trusted for 22795automatic loading and execution of scripts. Multiple entries may be delimited 22796by the host platform path separator in use. 22797@end table 22798 22799This variable defaults to what @code{--with-auto-load-dir} has been configured 22800to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir} 22801substitution applies the same as for @ref{set auto-load scripts-directory}. 22802The default @code{set auto-load safe-path} value can be also overriden by 22803@value{GDBN} configuration option @option{--with-auto-load-safe-path}. 22804 22805Setting this variable to @file{/} disables this security protection, 22806corresponding @value{GDBN} configuration option is 22807@option{--without-auto-load-safe-path}. 22808This variable is supposed to be set to the system directories writable by the 22809system superuser only. Users can add their source directories in init files in 22810their home directories (@pxref{Home Directory Init File}). See also deprecated 22811init file in the current directory 22812(@pxref{Init File in the Current Directory during Startup}). 22813 22814To force @value{GDBN} to load the files it declined to load in the previous 22815example, you could use one of the following ways: 22816 22817@table @asis 22818@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb} 22819Specify this trusted directory (or a file) as additional component of the list. 22820You have to specify also any existing directories displayed by 22821by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example). 22822 22823@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}} 22824Specify this directory as in the previous case but just for a single 22825@value{GDBN} session. 22826 22827@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}} 22828Disable auto-loading safety for a single @value{GDBN} session. 22829This assumes all the files you debug during this @value{GDBN} session will come 22830from trusted sources. 22831 22832@item @kbd{./configure --without-auto-load-safe-path} 22833During compilation of @value{GDBN} you may disable any auto-loading safety. 22834This assumes all the files you will ever debug with this @value{GDBN} come from 22835trusted sources. 22836@end table 22837 22838On the other hand you can also explicitly forbid automatic files loading which 22839also suppresses any such warning messages: 22840 22841@table @asis 22842@item @kbd{gdb -iex "set auto-load no" @dots{}} 22843You can use @value{GDBN} command-line option for a single @value{GDBN} session. 22844 22845@item @file{~/.gdbinit}: @samp{set auto-load no} 22846Disable auto-loading globally for the user 22847(@pxref{Home Directory Init File}). While it is improbable, you could also 22848use system init file instead (@pxref{System-wide configuration}). 22849@end table 22850 22851This setting applies to the file names as entered by user. If no entry matches 22852@value{GDBN} tries as a last resort to also resolve all the file names into 22853their canonical form (typically resolving symbolic links) and compare the 22854entries again. @value{GDBN} already canonicalizes most of the filenames on its 22855own before starting the comparison so a canonical form of directories is 22856recommended to be entered. 22857 22858@node Auto-loading verbose mode 22859@subsection Displaying files tried for auto-load 22860@cindex auto-loading verbose mode 22861 22862For better visibility of all the file locations where you can place scripts to 22863be auto-loaded with inferior --- or to protect yourself against accidental 22864execution of untrusted scripts --- @value{GDBN} provides a feature for printing 22865all the files attempted to be loaded. Both existing and non-existing files may 22866be printed. 22867 22868For example the list of directories from which it is safe to auto-load files 22869(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which 22870may not be too obvious while setting it up. 22871 22872@smallexample 22873(gdb) set debug auto-load on 22874(gdb) file ~/src/t/true 22875auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb" 22876 for objfile "/tmp/true". 22877auto-load: Updating directories of "/usr:/opt". 22878auto-load: Using directory "/usr". 22879auto-load: Using directory "/opt". 22880warning: File "/tmp/true-gdb.gdb" auto-loading has been declined 22881 by your `auto-load safe-path' set to "/usr:/opt". 22882@end smallexample 22883 22884@table @code 22885@anchor{set debug auto-load} 22886@kindex set debug auto-load 22887@item set debug auto-load [on|off] 22888Set whether to print the filenames attempted to be auto-loaded. 22889 22890@anchor{show debug auto-load} 22891@kindex show debug auto-load 22892@item show debug auto-load 22893Show whether printing of the filenames attempted to be auto-loaded is turned 22894on or off. 22895@end table 22896 22897@node Messages/Warnings 22898@section Optional Warnings and Messages 22899 22900@cindex verbose operation 22901@cindex optional warnings 22902By default, @value{GDBN} is silent about its inner workings. If you are 22903running on a slow machine, you may want to use the @code{set verbose} 22904command. This makes @value{GDBN} tell you when it does a lengthy 22905internal operation, so you will not think it has crashed. 22906 22907Currently, the messages controlled by @code{set verbose} are those 22908which announce that the symbol table for a source file is being read; 22909see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}. 22910 22911@table @code 22912@kindex set verbose 22913@item set verbose on 22914Enables @value{GDBN} output of certain informational messages. 22915 22916@item set verbose off 22917Disables @value{GDBN} output of certain informational messages. 22918 22919@kindex show verbose 22920@item show verbose 22921Displays whether @code{set verbose} is on or off. 22922@end table 22923 22924By default, if @value{GDBN} encounters bugs in the symbol table of an 22925object file, it is silent; but if you are debugging a compiler, you may 22926find this information useful (@pxref{Symbol Errors, ,Errors Reading 22927Symbol Files}). 22928 22929@table @code 22930 22931@kindex set complaints 22932@item set complaints @var{limit} 22933Permits @value{GDBN} to output @var{limit} complaints about each type of 22934unusual symbols before becoming silent about the problem. Set 22935@var{limit} to zero to suppress all complaints; set it to a large number 22936to prevent complaints from being suppressed. 22937 22938@kindex show complaints 22939@item show complaints 22940Displays how many symbol complaints @value{GDBN} is permitted to produce. 22941 22942@end table 22943 22944@anchor{confirmation requests} 22945By default, @value{GDBN} is cautious, and asks what sometimes seems to be a 22946lot of stupid questions to confirm certain commands. For example, if 22947you try to run a program which is already running: 22948 22949@smallexample 22950(@value{GDBP}) run 22951The program being debugged has been started already. 22952Start it from the beginning? (y or n) 22953@end smallexample 22954 22955If you are willing to unflinchingly face the consequences of your own 22956commands, you can disable this ``feature'': 22957 22958@table @code 22959 22960@kindex set confirm 22961@cindex flinching 22962@cindex confirmation 22963@cindex stupid questions 22964@item set confirm off 22965Disables confirmation requests. Note that running @value{GDBN} with 22966the @option{--batch} option (@pxref{Mode Options, -batch}) also 22967automatically disables confirmation requests. 22968 22969@item set confirm on 22970Enables confirmation requests (the default). 22971 22972@kindex show confirm 22973@item show confirm 22974Displays state of confirmation requests. 22975 22976@end table 22977 22978@cindex command tracing 22979If you need to debug user-defined commands or sourced files you may find it 22980useful to enable @dfn{command tracing}. In this mode each command will be 22981printed as it is executed, prefixed with one or more @samp{+} symbols, the 22982quantity denoting the call depth of each command. 22983 22984@table @code 22985@kindex set trace-commands 22986@cindex command scripts, debugging 22987@item set trace-commands on 22988Enable command tracing. 22989@item set trace-commands off 22990Disable command tracing. 22991@item show trace-commands 22992Display the current state of command tracing. 22993@end table 22994 22995@node Debugging Output 22996@section Optional Messages about Internal Happenings 22997@cindex optional debugging messages 22998 22999@value{GDBN} has commands that enable optional debugging messages from 23000various @value{GDBN} subsystems; normally these commands are of 23001interest to @value{GDBN} maintainers, or when reporting a bug. This 23002section documents those commands. 23003 23004@table @code 23005@kindex set exec-done-display 23006@item set exec-done-display 23007Turns on or off the notification of asynchronous commands' 23008completion. When on, @value{GDBN} will print a message when an 23009asynchronous command finishes its execution. The default is off. 23010@kindex show exec-done-display 23011@item show exec-done-display 23012Displays the current setting of asynchronous command completion 23013notification. 23014@kindex set debug 23015@cindex ARM AArch64 23016@item set debug aarch64 23017Turns on or off display of debugging messages related to ARM AArch64. 23018The default is off. 23019@kindex show debug 23020@item show debug aarch64 23021Displays the current state of displaying debugging messages related to 23022ARM AArch64. 23023@cindex gdbarch debugging info 23024@cindex architecture debugging info 23025@item set debug arch 23026Turns on or off display of gdbarch debugging info. The default is off 23027@item show debug arch 23028Displays the current state of displaying gdbarch debugging info. 23029@item set debug aix-solib 23030@cindex AIX shared library debugging 23031Control display of debugging messages from the AIX shared library 23032support module. The default is off. 23033@item show debug aix-thread 23034Show the current state of displaying AIX shared library debugging messages. 23035@item set debug aix-thread 23036@cindex AIX threads 23037Display debugging messages about inner workings of the AIX thread 23038module. 23039@item show debug aix-thread 23040Show the current state of AIX thread debugging info display. 23041@item set debug check-physname 23042@cindex physname 23043Check the results of the ``physname'' computation. When reading DWARF 23044debugging information for C@t{++}, @value{GDBN} attempts to compute 23045each entity's name. @value{GDBN} can do this computation in two 23046different ways, depending on exactly what information is present. 23047When enabled, this setting causes @value{GDBN} to compute the names 23048both ways and display any discrepancies. 23049@item show debug check-physname 23050Show the current state of ``physname'' checking. 23051@item set debug coff-pe-read 23052@cindex COFF/PE exported symbols 23053Control display of debugging messages related to reading of COFF/PE 23054exported symbols. The default is off. 23055@item show debug coff-pe-read 23056Displays the current state of displaying debugging messages related to 23057reading of COFF/PE exported symbols. 23058@item set debug dwarf2-die 23059@cindex DWARF2 DIEs 23060Dump DWARF2 DIEs after they are read in. 23061The value is the number of nesting levels to print. 23062A value of zero turns off the display. 23063@item show debug dwarf2-die 23064Show the current state of DWARF2 DIE debugging. 23065@item set debug dwarf2-read 23066@cindex DWARF2 Reading 23067Turns on or off display of debugging messages related to reading 23068DWARF debug info. The default is 0 (off). 23069A value of 1 provides basic information. 23070A value greater than 1 provides more verbose information. 23071@item show debug dwarf2-read 23072Show the current state of DWARF2 reader debugging. 23073@item set debug displaced 23074@cindex displaced stepping debugging info 23075Turns on or off display of @value{GDBN} debugging info for the 23076displaced stepping support. The default is off. 23077@item show debug displaced 23078Displays the current state of displaying @value{GDBN} debugging info 23079related to displaced stepping. 23080@item set debug event 23081@cindex event debugging info 23082Turns on or off display of @value{GDBN} event debugging info. The 23083default is off. 23084@item show debug event 23085Displays the current state of displaying @value{GDBN} event debugging 23086info. 23087@item set debug expression 23088@cindex expression debugging info 23089Turns on or off display of debugging info about @value{GDBN} 23090expression parsing. The default is off. 23091@item show debug expression 23092Displays the current state of displaying debugging info about 23093@value{GDBN} expression parsing. 23094@item set debug frame 23095@cindex frame debugging info 23096Turns on or off display of @value{GDBN} frame debugging info. The 23097default is off. 23098@item show debug frame 23099Displays the current state of displaying @value{GDBN} frame debugging 23100info. 23101@item set debug gnu-nat 23102@cindex @sc{gnu}/Hurd debug messages 23103Turns on or off debugging messages from the @sc{gnu}/Hurd debug support. 23104@item show debug gnu-nat 23105Show the current state of @sc{gnu}/Hurd debugging messages. 23106@item set debug infrun 23107@cindex inferior debugging info 23108Turns on or off display of @value{GDBN} debugging info for running the inferior. 23109The default is off. @file{infrun.c} contains GDB's runtime state machine used 23110for implementing operations such as single-stepping the inferior. 23111@item show debug infrun 23112Displays the current state of @value{GDBN} inferior debugging. 23113@item set debug jit 23114@cindex just-in-time compilation, debugging messages 23115Turns on or off debugging messages from JIT debug support. 23116@item show debug jit 23117Displays the current state of @value{GDBN} JIT debugging. 23118@item set debug lin-lwp 23119@cindex @sc{gnu}/Linux LWP debug messages 23120@cindex Linux lightweight processes 23121Turns on or off debugging messages from the Linux LWP debug support. 23122@item show debug lin-lwp 23123Show the current state of Linux LWP debugging messages. 23124@item set debug mach-o 23125@cindex Mach-O symbols processing 23126Control display of debugging messages related to Mach-O symbols 23127processing. The default is off. 23128@item show debug mach-o 23129Displays the current state of displaying debugging messages related to 23130reading of COFF/PE exported symbols. 23131@item set debug notification 23132@cindex remote async notification debugging info 23133Turns on or off debugging messages about remote async notification. 23134The default is off. 23135@item show debug notification 23136Displays the current state of remote async notification debugging messages. 23137@item set debug observer 23138@cindex observer debugging info 23139Turns on or off display of @value{GDBN} observer debugging. This 23140includes info such as the notification of observable events. 23141@item show debug observer 23142Displays the current state of observer debugging. 23143@item set debug overload 23144@cindex C@t{++} overload debugging info 23145Turns on or off display of @value{GDBN} C@t{++} overload debugging 23146info. This includes info such as ranking of functions, etc. The default 23147is off. 23148@item show debug overload 23149Displays the current state of displaying @value{GDBN} C@t{++} overload 23150debugging info. 23151@cindex expression parser, debugging info 23152@cindex debug expression parser 23153@item set debug parser 23154Turns on or off the display of expression parser debugging output. 23155Internally, this sets the @code{yydebug} variable in the expression 23156parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for 23157details. The default is off. 23158@item show debug parser 23159Show the current state of expression parser debugging. 23160@cindex packets, reporting on stdout 23161@cindex serial connections, debugging 23162@cindex debug remote protocol 23163@cindex remote protocol debugging 23164@cindex display remote packets 23165@item set debug remote 23166Turns on or off display of reports on all packets sent back and forth across 23167the serial line to the remote machine. The info is printed on the 23168@value{GDBN} standard output stream. The default is off. 23169@item show debug remote 23170Displays the state of display of remote packets. 23171@item set debug serial 23172Turns on or off display of @value{GDBN} serial debugging info. The 23173default is off. 23174@item show debug serial 23175Displays the current state of displaying @value{GDBN} serial debugging 23176info. 23177@item set debug solib-frv 23178@cindex FR-V shared-library debugging 23179Turns on or off debugging messages for FR-V shared-library code. 23180@item show debug solib-frv 23181Display the current state of FR-V shared-library code debugging 23182messages. 23183@item set debug symbol-lookup 23184@cindex symbol lookup 23185Turns on or off display of debugging messages related to symbol lookup. 23186The default is 0 (off). 23187A value of 1 provides basic information. 23188A value greater than 1 provides more verbose information. 23189@item show debug symbol-lookup 23190Show the current state of symbol lookup debugging messages. 23191@item set debug symfile 23192@cindex symbol file functions 23193Turns on or off display of debugging messages related to symbol file functions. 23194The default is off. @xref{Files}. 23195@item show debug symfile 23196Show the current state of symbol file debugging messages. 23197@item set debug symtab-create 23198@cindex symbol table creation 23199Turns on or off display of debugging messages related to symbol table creation. 23200The default is 0 (off). 23201A value of 1 provides basic information. 23202A value greater than 1 provides more verbose information. 23203@item show debug symtab-create 23204Show the current state of symbol table creation debugging. 23205@item set debug target 23206@cindex target debugging info 23207Turns on or off display of @value{GDBN} target debugging info. This info 23208includes what is going on at the target level of GDB, as it happens. The 23209default is 0. Set it to 1 to track events, and to 2 to also track the 23210value of large memory transfers. 23211@item show debug target 23212Displays the current state of displaying @value{GDBN} target debugging 23213info. 23214@item set debug timestamp 23215@cindex timestampping debugging info 23216Turns on or off display of timestamps with @value{GDBN} debugging info. 23217When enabled, seconds and microseconds are displayed before each debugging 23218message. 23219@item show debug timestamp 23220Displays the current state of displaying timestamps with @value{GDBN} 23221debugging info. 23222@item set debug varobj 23223@cindex variable object debugging info 23224Turns on or off display of @value{GDBN} variable object debugging 23225info. The default is off. 23226@item show debug varobj 23227Displays the current state of displaying @value{GDBN} variable object 23228debugging info. 23229@item set debug xml 23230@cindex XML parser debugging 23231Turns on or off debugging messages for built-in XML parsers. 23232@item show debug xml 23233Displays the current state of XML debugging messages. 23234@end table 23235 23236@node Other Misc Settings 23237@section Other Miscellaneous Settings 23238@cindex miscellaneous settings 23239 23240@table @code 23241@kindex set interactive-mode 23242@item set interactive-mode 23243If @code{on}, forces @value{GDBN} to assume that GDB was started 23244in a terminal. In practice, this means that @value{GDBN} should wait 23245for the user to answer queries generated by commands entered at 23246the command prompt. If @code{off}, forces @value{GDBN} to operate 23247in the opposite mode, and it uses the default answers to all queries. 23248If @code{auto} (the default), @value{GDBN} tries to determine whether 23249its standard input is a terminal, and works in interactive-mode if it 23250is, non-interactively otherwise. 23251 23252In the vast majority of cases, the debugger should be able to guess 23253correctly which mode should be used. But this setting can be useful 23254in certain specific cases, such as running a MinGW @value{GDBN} 23255inside a cygwin window. 23256 23257@kindex show interactive-mode 23258@item show interactive-mode 23259Displays whether the debugger is operating in interactive mode or not. 23260@end table 23261 23262@node Extending GDB 23263@chapter Extending @value{GDBN} 23264@cindex extending GDB 23265 23266@value{GDBN} provides several mechanisms for extension. 23267@value{GDBN} also provides the ability to automatically load 23268extensions when it reads a file for debugging. This allows the 23269user to automatically customize @value{GDBN} for the program 23270being debugged. 23271 23272@menu 23273* Sequences:: Canned Sequences of @value{GDBN} Commands 23274* Python:: Extending @value{GDBN} using Python 23275* Guile:: Extending @value{GDBN} using Guile 23276* Auto-loading extensions:: Automatically loading extensions 23277* Multiple Extension Languages:: Working with multiple extension languages 23278* Aliases:: Creating new spellings of existing commands 23279@end menu 23280 23281To facilitate the use of extension languages, @value{GDBN} is capable 23282of evaluating the contents of a file. When doing so, @value{GDBN} 23283can recognize which extension language is being used by looking at 23284the filename extension. Files with an unrecognized filename extension 23285are always treated as a @value{GDBN} Command Files. 23286@xref{Command Files,, Command files}. 23287 23288You can control how @value{GDBN} evaluates these files with the following 23289setting: 23290 23291@table @code 23292@kindex set script-extension 23293@kindex show script-extension 23294@item set script-extension off 23295All scripts are always evaluated as @value{GDBN} Command Files. 23296 23297@item set script-extension soft 23298The debugger determines the scripting language based on filename 23299extension. If this scripting language is supported, @value{GDBN} 23300evaluates the script using that language. Otherwise, it evaluates 23301the file as a @value{GDBN} Command File. 23302 23303@item set script-extension strict 23304The debugger determines the scripting language based on filename 23305extension, and evaluates the script using that language. If the 23306language is not supported, then the evaluation fails. 23307 23308@item show script-extension 23309Display the current value of the @code{script-extension} option. 23310 23311@end table 23312 23313@node Sequences 23314@section Canned Sequences of Commands 23315 23316Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint 23317Command Lists}), @value{GDBN} provides two ways to store sequences of 23318commands for execution as a unit: user-defined commands and command 23319files. 23320 23321@menu 23322* Define:: How to define your own commands 23323* Hooks:: Hooks for user-defined commands 23324* Command Files:: How to write scripts of commands to be stored in a file 23325* Output:: Commands for controlled output 23326* Auto-loading sequences:: Controlling auto-loaded command files 23327@end menu 23328 23329@node Define 23330@subsection User-defined Commands 23331 23332@cindex user-defined command 23333@cindex arguments, to user-defined commands 23334A @dfn{user-defined command} is a sequence of @value{GDBN} commands to 23335which you assign a new name as a command. This is done with the 23336@code{define} command. User commands may accept up to 10 arguments 23337separated by whitespace. Arguments are accessed within the user command 23338via @code{$arg0@dots{}$arg9}. A trivial example: 23339 23340@smallexample 23341define adder 23342 print $arg0 + $arg1 + $arg2 23343end 23344@end smallexample 23345 23346@noindent 23347To execute the command use: 23348 23349@smallexample 23350adder 1 2 3 23351@end smallexample 23352 23353@noindent 23354This defines the command @code{adder}, which prints the sum of 23355its three arguments. Note the arguments are text substitutions, so they may 23356reference variables, use complex expressions, or even perform inferior 23357functions calls. 23358 23359@cindex argument count in user-defined commands 23360@cindex how many arguments (user-defined commands) 23361In addition, @code{$argc} may be used to find out how many arguments have 23362been passed. This expands to a number in the range 0@dots{}10. 23363 23364@smallexample 23365define adder 23366 if $argc == 2 23367 print $arg0 + $arg1 23368 end 23369 if $argc == 3 23370 print $arg0 + $arg1 + $arg2 23371 end 23372end 23373@end smallexample 23374 23375@table @code 23376 23377@kindex define 23378@item define @var{commandname} 23379Define a command named @var{commandname}. If there is already a command 23380by that name, you are asked to confirm that you want to redefine it. 23381The argument @var{commandname} may be a bare command name consisting of letters, 23382numbers, dashes, and underscores. It may also start with any predefined 23383prefix command. For example, @samp{define target my-target} creates 23384a user-defined @samp{target my-target} command. 23385 23386The definition of the command is made up of other @value{GDBN} command lines, 23387which are given following the @code{define} command. The end of these 23388commands is marked by a line containing @code{end}. 23389 23390@kindex document 23391@kindex end@r{ (user-defined commands)} 23392@item document @var{commandname} 23393Document the user-defined command @var{commandname}, so that it can be 23394accessed by @code{help}. The command @var{commandname} must already be 23395defined. This command reads lines of documentation just as @code{define} 23396reads the lines of the command definition, ending with @code{end}. 23397After the @code{document} command is finished, @code{help} on command 23398@var{commandname} displays the documentation you have written. 23399 23400You may use the @code{document} command again to change the 23401documentation of a command. Redefining the command with @code{define} 23402does not change the documentation. 23403 23404@kindex dont-repeat 23405@cindex don't repeat command 23406@item dont-repeat 23407Used inside a user-defined command, this tells @value{GDBN} that this 23408command should not be repeated when the user hits @key{RET} 23409(@pxref{Command Syntax, repeat last command}). 23410 23411@kindex help user-defined 23412@item help user-defined 23413List all user-defined commands and all python commands defined in class 23414COMAND_USER. The first line of the documentation or docstring is 23415included (if any). 23416 23417@kindex show user 23418@item show user 23419@itemx show user @var{commandname} 23420Display the @value{GDBN} commands used to define @var{commandname} (but 23421not its documentation). If no @var{commandname} is given, display the 23422definitions for all user-defined commands. 23423This does not work for user-defined python commands. 23424 23425@cindex infinite recursion in user-defined commands 23426@kindex show max-user-call-depth 23427@kindex set max-user-call-depth 23428@item show max-user-call-depth 23429@itemx set max-user-call-depth 23430The value of @code{max-user-call-depth} controls how many recursion 23431levels are allowed in user-defined commands before @value{GDBN} suspects an 23432infinite recursion and aborts the command. 23433This does not apply to user-defined python commands. 23434@end table 23435 23436In addition to the above commands, user-defined commands frequently 23437use control flow commands, described in @ref{Command Files}. 23438 23439When user-defined commands are executed, the 23440commands of the definition are not printed. An error in any command 23441stops execution of the user-defined command. 23442 23443If used interactively, commands that would ask for confirmation proceed 23444without asking when used inside a user-defined command. Many @value{GDBN} 23445commands that normally print messages to say what they are doing omit the 23446messages when used in a user-defined command. 23447 23448@node Hooks 23449@subsection User-defined Command Hooks 23450@cindex command hooks 23451@cindex hooks, for commands 23452@cindex hooks, pre-command 23453 23454@kindex hook 23455You may define @dfn{hooks}, which are a special kind of user-defined 23456command. Whenever you run the command @samp{foo}, if the user-defined 23457command @samp{hook-foo} exists, it is executed (with no arguments) 23458before that command. 23459 23460@cindex hooks, post-command 23461@kindex hookpost 23462A hook may also be defined which is run after the command you executed. 23463Whenever you run the command @samp{foo}, if the user-defined command 23464@samp{hookpost-foo} exists, it is executed (with no arguments) after 23465that command. Post-execution hooks may exist simultaneously with 23466pre-execution hooks, for the same command. 23467 23468It is valid for a hook to call the command which it hooks. If this 23469occurs, the hook is not re-executed, thereby avoiding infinite recursion. 23470 23471@c It would be nice if hookpost could be passed a parameter indicating 23472@c if the command it hooks executed properly or not. FIXME! 23473 23474@kindex stop@r{, a pseudo-command} 23475In addition, a pseudo-command, @samp{stop} exists. Defining 23476(@samp{hook-stop}) makes the associated commands execute every time 23477execution stops in your program: before breakpoint commands are run, 23478displays are printed, or the stack frame is printed. 23479 23480For example, to ignore @code{SIGALRM} signals while 23481single-stepping, but treat them normally during normal execution, 23482you could define: 23483 23484@smallexample 23485define hook-stop 23486handle SIGALRM nopass 23487end 23488 23489define hook-run 23490handle SIGALRM pass 23491end 23492 23493define hook-continue 23494handle SIGALRM pass 23495end 23496@end smallexample 23497 23498As a further example, to hook at the beginning and end of the @code{echo} 23499command, and to add extra text to the beginning and end of the message, 23500you could define: 23501 23502@smallexample 23503define hook-echo 23504echo <<<--- 23505end 23506 23507define hookpost-echo 23508echo --->>>\n 23509end 23510 23511(@value{GDBP}) echo Hello World 23512<<<---Hello World--->>> 23513(@value{GDBP}) 23514 23515@end smallexample 23516 23517You can define a hook for any single-word command in @value{GDBN}, but 23518not for command aliases; you should define a hook for the basic command 23519name, e.g.@: @code{backtrace} rather than @code{bt}. 23520@c FIXME! So how does Joe User discover whether a command is an alias 23521@c or not? 23522You can hook a multi-word command by adding @code{hook-} or 23523@code{hookpost-} to the last word of the command, e.g.@: 23524@samp{define target hook-remote} to add a hook to @samp{target remote}. 23525 23526If an error occurs during the execution of your hook, execution of 23527@value{GDBN} commands stops and @value{GDBN} issues a prompt 23528(before the command that you actually typed had a chance to run). 23529 23530If you try to define a hook which does not match any known command, you 23531get a warning from the @code{define} command. 23532 23533@node Command Files 23534@subsection Command Files 23535 23536@cindex command files 23537@cindex scripting commands 23538A command file for @value{GDBN} is a text file made of lines that are 23539@value{GDBN} commands. Comments (lines starting with @kbd{#}) may 23540also be included. An empty line in a command file does nothing; it 23541does not mean to repeat the last command, as it would from the 23542terminal. 23543 23544You can request the execution of a command file with the @code{source} 23545command. Note that the @code{source} command is also used to evaluate 23546scripts that are not Command Files. The exact behavior can be configured 23547using the @code{script-extension} setting. 23548@xref{Extending GDB,, Extending GDB}. 23549 23550@table @code 23551@kindex source 23552@cindex execute commands from a file 23553@item source [-s] [-v] @var{filename} 23554Execute the command file @var{filename}. 23555@end table 23556 23557The lines in a command file are generally executed sequentially, 23558unless the order of execution is changed by one of the 23559@emph{flow-control commands} described below. The commands are not 23560printed as they are executed. An error in any command terminates 23561execution of the command file and control is returned to the console. 23562 23563@value{GDBN} first searches for @var{filename} in the current directory. 23564If the file is not found there, and @var{filename} does not specify a 23565directory, then @value{GDBN} also looks for the file on the source search path 23566(specified with the @samp{directory} command); 23567except that @file{$cdir} is not searched because the compilation directory 23568is not relevant to scripts. 23569 23570If @code{-s} is specified, then @value{GDBN} searches for @var{filename} 23571on the search path even if @var{filename} specifies a directory. 23572The search is done by appending @var{filename} to each element of the 23573search path. So, for example, if @var{filename} is @file{mylib/myscript} 23574and the search path contains @file{/home/user} then @value{GDBN} will 23575look for the script @file{/home/user/mylib/myscript}. 23576The search is also done if @var{filename} is an absolute path. 23577For example, if @var{filename} is @file{/tmp/myscript} and 23578the search path contains @file{/home/user} then @value{GDBN} will 23579look for the script @file{/home/user/tmp/myscript}. 23580For DOS-like systems, if @var{filename} contains a drive specification, 23581it is stripped before concatenation. For example, if @var{filename} is 23582@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN} 23583will look for the script @file{c:/tmp/myscript}. 23584 23585If @code{-v}, for verbose mode, is given then @value{GDBN} displays 23586each command as it is executed. The option must be given before 23587@var{filename}, and is interpreted as part of the filename anywhere else. 23588 23589Commands that would ask for confirmation if used interactively proceed 23590without asking when used in a command file. Many @value{GDBN} commands that 23591normally print messages to say what they are doing omit the messages 23592when called from command files. 23593 23594@value{GDBN} also accepts command input from standard input. In this 23595mode, normal output goes to standard output and error output goes to 23596standard error. Errors in a command file supplied on standard input do 23597not terminate execution of the command file---execution continues with 23598the next command. 23599 23600@smallexample 23601gdb < cmds > log 2>&1 23602@end smallexample 23603 23604(The syntax above will vary depending on the shell used.) This example 23605will execute commands from the file @file{cmds}. All output and errors 23606would be directed to @file{log}. 23607 23608Since commands stored on command files tend to be more general than 23609commands typed interactively, they frequently need to deal with 23610complicated situations, such as different or unexpected values of 23611variables and symbols, changes in how the program being debugged is 23612built, etc. @value{GDBN} provides a set of flow-control commands to 23613deal with these complexities. Using these commands, you can write 23614complex scripts that loop over data structures, execute commands 23615conditionally, etc. 23616 23617@table @code 23618@kindex if 23619@kindex else 23620@item if 23621@itemx else 23622This command allows to include in your script conditionally executed 23623commands. The @code{if} command takes a single argument, which is an 23624expression to evaluate. It is followed by a series of commands that 23625are executed only if the expression is true (its value is nonzero). 23626There can then optionally be an @code{else} line, followed by a series 23627of commands that are only executed if the expression was false. The 23628end of the list is marked by a line containing @code{end}. 23629 23630@kindex while 23631@item while 23632This command allows to write loops. Its syntax is similar to 23633@code{if}: the command takes a single argument, which is an expression 23634to evaluate, and must be followed by the commands to execute, one per 23635line, terminated by an @code{end}. These commands are called the 23636@dfn{body} of the loop. The commands in the body of @code{while} are 23637executed repeatedly as long as the expression evaluates to true. 23638 23639@kindex loop_break 23640@item loop_break 23641This command exits the @code{while} loop in whose body it is included. 23642Execution of the script continues after that @code{while}s @code{end} 23643line. 23644 23645@kindex loop_continue 23646@item loop_continue 23647This command skips the execution of the rest of the body of commands 23648in the @code{while} loop in whose body it is included. Execution 23649branches to the beginning of the @code{while} loop, where it evaluates 23650the controlling expression. 23651 23652@kindex end@r{ (if/else/while commands)} 23653@item end 23654Terminate the block of commands that are the body of @code{if}, 23655@code{else}, or @code{while} flow-control commands. 23656@end table 23657 23658 23659@node Output 23660@subsection Commands for Controlled Output 23661 23662During the execution of a command file or a user-defined command, normal 23663@value{GDBN} output is suppressed; the only output that appears is what is 23664explicitly printed by the commands in the definition. This section 23665describes three commands useful for generating exactly the output you 23666want. 23667 23668@table @code 23669@kindex echo 23670@item echo @var{text} 23671@c I do not consider backslash-space a standard C escape sequence 23672@c because it is not in ANSI. 23673Print @var{text}. Nonprinting characters can be included in 23674@var{text} using C escape sequences, such as @samp{\n} to print a 23675newline. @strong{No newline is printed unless you specify one.} 23676In addition to the standard C escape sequences, a backslash followed 23677by a space stands for a space. This is useful for displaying a 23678string with spaces at the beginning or the end, since leading and 23679trailing spaces are otherwise trimmed from all arguments. 23680To print @samp{@w{ }and foo =@w{ }}, use the command 23681@samp{echo \@w{ }and foo = \@w{ }}. 23682 23683A backslash at the end of @var{text} can be used, as in C, to continue 23684the command onto subsequent lines. For example, 23685 23686@smallexample 23687echo This is some text\n\ 23688which is continued\n\ 23689onto several lines.\n 23690@end smallexample 23691 23692produces the same output as 23693 23694@smallexample 23695echo This is some text\n 23696echo which is continued\n 23697echo onto several lines.\n 23698@end smallexample 23699 23700@kindex output 23701@item output @var{expression} 23702Print the value of @var{expression} and nothing but that value: no 23703newlines, no @samp{$@var{nn} = }. The value is not entered in the 23704value history either. @xref{Expressions, ,Expressions}, for more information 23705on expressions. 23706 23707@item output/@var{fmt} @var{expression} 23708Print the value of @var{expression} in format @var{fmt}. You can use 23709the same formats as for @code{print}. @xref{Output Formats,,Output 23710Formats}, for more information. 23711 23712@kindex printf 23713@item printf @var{template}, @var{expressions}@dots{} 23714Print the values of one or more @var{expressions} under the control of 23715the string @var{template}. To print several values, make 23716@var{expressions} be a comma-separated list of individual expressions, 23717which may be either numbers or pointers. Their values are printed as 23718specified by @var{template}, exactly as a C program would do by 23719executing the code below: 23720 23721@smallexample 23722printf (@var{template}, @var{expressions}@dots{}); 23723@end smallexample 23724 23725As in @code{C} @code{printf}, ordinary characters in @var{template} 23726are printed verbatim, while @dfn{conversion specification} introduced 23727by the @samp{%} character cause subsequent @var{expressions} to be 23728evaluated, their values converted and formatted according to type and 23729style information encoded in the conversion specifications, and then 23730printed. 23731 23732For example, you can print two values in hex like this: 23733 23734@smallexample 23735printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo 23736@end smallexample 23737 23738@code{printf} supports all the standard @code{C} conversion 23739specifications, including the flags and modifiers between the @samp{%} 23740character and the conversion letter, with the following exceptions: 23741 23742@itemize @bullet 23743@item 23744The argument-ordering modifiers, such as @samp{2$}, are not supported. 23745 23746@item 23747The modifier @samp{*} is not supported for specifying precision or 23748width. 23749 23750@item 23751The @samp{'} flag (for separation of digits into groups according to 23752@code{LC_NUMERIC'}) is not supported. 23753 23754@item 23755The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not 23756supported. 23757 23758@item 23759The conversion letter @samp{n} (as in @samp{%n}) is not supported. 23760 23761@item 23762The conversion letters @samp{a} and @samp{A} are not supported. 23763@end itemize 23764 23765@noindent 23766Note that the @samp{ll} type modifier is supported only if the 23767underlying @code{C} implementation used to build @value{GDBN} supports 23768the @code{long long int} type, and the @samp{L} type modifier is 23769supported only if @code{long double} type is available. 23770 23771As in @code{C}, @code{printf} supports simple backslash-escape 23772sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"}, 23773@samp{\a}, and @samp{\f}, that consist of backslash followed by a 23774single character. Octal and hexadecimal escape sequences are not 23775supported. 23776 23777Additionally, @code{printf} supports conversion specifications for DFP 23778(@dfn{Decimal Floating Point}) types using the following length modifiers 23779together with a floating point specifier. 23780letters: 23781 23782@itemize @bullet 23783@item 23784@samp{H} for printing @code{Decimal32} types. 23785 23786@item 23787@samp{D} for printing @code{Decimal64} types. 23788 23789@item 23790@samp{DD} for printing @code{Decimal128} types. 23791@end itemize 23792 23793If the underlying @code{C} implementation used to build @value{GDBN} has 23794support for the three length modifiers for DFP types, other modifiers 23795such as width and precision will also be available for @value{GDBN} to use. 23796 23797In case there is no such @code{C} support, no additional modifiers will be 23798available and the value will be printed in the standard way. 23799 23800Here's an example of printing DFP types using the above conversion letters: 23801@smallexample 23802printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl 23803@end smallexample 23804 23805@kindex eval 23806@item eval @var{template}, @var{expressions}@dots{} 23807Convert the values of one or more @var{expressions} under the control of 23808the string @var{template} to a command line, and call it. 23809 23810@end table 23811 23812@node Auto-loading sequences 23813@subsection Controlling auto-loading native @value{GDBN} scripts 23814@cindex native script auto-loading 23815 23816When a new object file is read (for example, due to the @code{file} 23817command, or because the inferior has loaded a shared library), 23818@value{GDBN} will look for the command file @file{@var{objfile}-gdb.gdb}. 23819@xref{Auto-loading extensions}. 23820 23821Auto-loading can be enabled or disabled, 23822and the list of auto-loaded scripts can be printed. 23823 23824@table @code 23825@anchor{set auto-load gdb-scripts} 23826@kindex set auto-load gdb-scripts 23827@item set auto-load gdb-scripts [on|off] 23828Enable or disable the auto-loading of canned sequences of commands scripts. 23829 23830@anchor{show auto-load gdb-scripts} 23831@kindex show auto-load gdb-scripts 23832@item show auto-load gdb-scripts 23833Show whether auto-loading of canned sequences of commands scripts is enabled or 23834disabled. 23835 23836@anchor{info auto-load gdb-scripts} 23837@kindex info auto-load gdb-scripts 23838@cindex print list of auto-loaded canned sequences of commands scripts 23839@item info auto-load gdb-scripts [@var{regexp}] 23840Print the list of all canned sequences of commands scripts that @value{GDBN} 23841auto-loaded. 23842@end table 23843 23844If @var{regexp} is supplied only canned sequences of commands scripts with 23845matching names are printed. 23846 23847@c Python docs live in a separate file. 23848@include python.texi 23849 23850@c Guile docs live in a separate file. 23851@include guile.texi 23852 23853@node Auto-loading extensions 23854@section Auto-loading extensions 23855@cindex auto-loading extensions 23856 23857@value{GDBN} provides two mechanisms for automatically loading extensions 23858when a new object file is read (for example, due to the @code{file} 23859command, or because the inferior has loaded a shared library): 23860@file{@var{objfile}-gdb.@var{ext}} and the @code{.debug_gdb_scripts} 23861section of modern file formats like ELF. 23862 23863@menu 23864* objfile-gdb.ext file: objfile-gdbdotext file. The @file{@var{objfile}-gdb.@var{ext}} file 23865* .debug_gdb_scripts section: dotdebug_gdb_scripts section. The @code{.debug_gdb_scripts} section 23866* Which flavor to choose?:: 23867@end menu 23868 23869The auto-loading feature is useful for supplying application-specific 23870debugging commands and features. 23871 23872Auto-loading can be enabled or disabled, 23873and the list of auto-loaded scripts can be printed. 23874See the @samp{auto-loading} section of each extension language 23875for more information. 23876For @value{GDBN} command files see @ref{Auto-loading sequences}. 23877For Python files see @ref{Python Auto-loading}. 23878 23879Note that loading of this script file also requires accordingly configured 23880@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 23881 23882@node objfile-gdbdotext file 23883@subsection The @file{@var{objfile}-gdb.@var{ext}} file 23884@cindex @file{@var{objfile}-gdb.gdb} 23885@cindex @file{@var{objfile}-gdb.py} 23886@cindex @file{@var{objfile}-gdb.scm} 23887 23888When a new object file is read, @value{GDBN} looks for a file named 23889@file{@var{objfile}-gdb.@var{ext}} (we call it @var{script-name} below), 23890where @var{objfile} is the object file's name and 23891where @var{ext} is the file extension for the extension language: 23892 23893@table @code 23894@item @file{@var{objfile}-gdb.gdb} 23895GDB's own command language 23896@item @file{@var{objfile}-gdb.py} 23897Python 23898@item @file{@var{objfile}-gdb.scm} 23899Guile 23900@end table 23901 23902@var{script-name} is formed by ensuring that the file name of @var{objfile} 23903is absolute, following all symlinks, and resolving @code{.} and @code{..} 23904components, and appending the @file{-gdb.@var{ext}} suffix. 23905If this file exists and is readable, @value{GDBN} will evaluate it as a 23906script in the specified extension language. 23907 23908If this file does not exist, then @value{GDBN} will look for 23909@var{script-name} file in all of the directories as specified below. 23910 23911Note that loading of these files requires an accordingly configured 23912@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 23913 23914For object files using @file{.exe} suffix @value{GDBN} tries to load first the 23915scripts normally according to its @file{.exe} filename. But if no scripts are 23916found @value{GDBN} also tries script filenames matching the object file without 23917its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it 23918is attempted on any platform. This makes the script filenames compatible 23919between Unix and MS-Windows hosts. 23920 23921@table @code 23922@anchor{set auto-load scripts-directory} 23923@kindex set auto-load scripts-directory 23924@item set auto-load scripts-directory @r{[}@var{directories}@r{]} 23925Control @value{GDBN} auto-loaded scripts location. Multiple directory entries 23926may be delimited by the host platform path separator in use 23927(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS). 23928 23929Each entry here needs to be covered also by the security setting 23930@code{set auto-load safe-path} (@pxref{set auto-load safe-path}). 23931 23932@anchor{with-auto-load-dir} 23933This variable defaults to @file{$debugdir:$datadir/auto-load}. The default 23934@code{set auto-load safe-path} value can be also overriden by @value{GDBN} 23935configuration option @option{--with-auto-load-dir}. 23936 23937Any reference to @file{$debugdir} will get replaced by 23938@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any 23939reference to @file{$datadir} will get replaced by @var{data-directory} which is 23940determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and 23941@file{$datadir} must be placed as a directory component --- either alone or 23942delimited by @file{/} or @file{\} directory separators, depending on the host 23943platform. 23944 23945The list of directories uses path separator (@samp{:} on GNU and Unix 23946systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 23947to the @env{PATH} environment variable. 23948 23949@anchor{show auto-load scripts-directory} 23950@kindex show auto-load scripts-directory 23951@item show auto-load scripts-directory 23952Show @value{GDBN} auto-loaded scripts location. 23953 23954@anchor{add-auto-load-scripts-directory} 23955@kindex add-auto-load-scripts-directory 23956@item add-auto-load-scripts-directory @r{[}@var{directories}@dots{}@r{]} 23957Add an entry (or list of entries) to the list of auto-loaded scripts locations. 23958Multiple entries may be delimited by the host platform path separator in use. 23959@end table 23960 23961@value{GDBN} does not track which files it has already auto-loaded this way. 23962@value{GDBN} will load the associated script every time the corresponding 23963@var{objfile} is opened. 23964So your @file{-gdb.@var{ext}} file should be careful to avoid errors if it 23965is evaluated more than once. 23966 23967@node dotdebug_gdb_scripts section 23968@subsection The @code{.debug_gdb_scripts} section 23969@cindex @code{.debug_gdb_scripts} section 23970 23971For systems using file formats like ELF and COFF, 23972when @value{GDBN} loads a new object file 23973it will look for a special section named @code{.debug_gdb_scripts}. 23974If this section exists, its contents is a list of NUL-terminated names 23975of scripts to load. Each entry begins with a non-NULL prefix byte that 23976specifies the kind of entry, typically the extension language. 23977 23978@value{GDBN} will look for each specified script file first in the 23979current directory and then along the source search path 23980(@pxref{Source Path, ,Specifying Source Directories}), 23981except that @file{$cdir} is not searched, since the compilation 23982directory is not relevant to scripts. 23983 23984Entries can be placed in section @code{.debug_gdb_scripts} with, 23985for example, this GCC macro for Python scripts. 23986 23987@example 23988/* Note: The "MS" section flags are to remove duplicates. */ 23989#define DEFINE_GDB_PY_SCRIPT(script_name) \ 23990 asm("\ 23991.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\ 23992.byte 1 /* Python */\n\ 23993.asciz \"" script_name "\"\n\ 23994.popsection \n\ 23995"); 23996@end example 23997 23998@noindent 23999For Guile scripts, replace @code{.byte 1} with @code{.byte 3}. 24000Then one can reference the macro in a header or source file like this: 24001 24002@example 24003DEFINE_GDB_PY_SCRIPT ("my-app-scripts.py") 24004@end example 24005 24006The script name may include directories if desired. 24007 24008Note that loading of this script file also requires accordingly configured 24009@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 24010 24011If the macro invocation is put in a header, any application or library 24012using this header will get a reference to the specified script, 24013and with the use of @code{"MS"} attributes on the section, the linker 24014will remove duplicates. 24015 24016@node Which flavor to choose? 24017@subsection Which flavor to choose? 24018 24019Given the multiple ways of auto-loading extensions, it might not always 24020be clear which one to choose. This section provides some guidance. 24021 24022@noindent 24023Benefits of the @file{-gdb.@var{ext}} way: 24024 24025@itemize @bullet 24026@item 24027Can be used with file formats that don't support multiple sections. 24028 24029@item 24030Ease of finding scripts for public libraries. 24031 24032Scripts specified in the @code{.debug_gdb_scripts} section are searched for 24033in the source search path. 24034For publicly installed libraries, e.g., @file{libstdc++}, there typically 24035isn't a source directory in which to find the script. 24036 24037@item 24038Doesn't require source code additions. 24039@end itemize 24040 24041@noindent 24042Benefits of the @code{.debug_gdb_scripts} way: 24043 24044@itemize @bullet 24045@item 24046Works with static linking. 24047 24048Scripts for libraries done the @file{-gdb.@var{ext}} way require an objfile to 24049trigger their loading. When an application is statically linked the only 24050objfile available is the executable, and it is cumbersome to attach all the 24051scripts from all the input libraries to the executable's 24052@file{-gdb.@var{ext}} script. 24053 24054@item 24055Works with classes that are entirely inlined. 24056 24057Some classes can be entirely inlined, and thus there may not be an associated 24058shared library to attach a @file{-gdb.@var{ext}} script to. 24059 24060@item 24061Scripts needn't be copied out of the source tree. 24062 24063In some circumstances, apps can be built out of large collections of internal 24064libraries, and the build infrastructure necessary to install the 24065@file{-gdb.@var{ext}} scripts in a place where @value{GDBN} can find them is 24066cumbersome. It may be easier to specify the scripts in the 24067@code{.debug_gdb_scripts} section as relative paths, and add a path to the 24068top of the source tree to the source search path. 24069@end itemize 24070 24071@node Multiple Extension Languages 24072@section Multiple Extension Languages 24073 24074The Guile and Python extension languages do not share any state, 24075and generally do not interfere with each other. 24076There are some things to be aware of, however. 24077 24078@subsection Python comes first 24079 24080Python was @value{GDBN}'s first extension language, and to avoid breaking 24081existing behaviour Python comes first. This is generally solved by the 24082``first one wins'' principle. @value{GDBN} maintains a list of enabled 24083extension languages, and when it makes a call to an extension language, 24084(say to pretty-print a value), it tries each in turn until an extension 24085language indicates it has performed the request (e.g., has returned the 24086pretty-printed form of a value). 24087This extends to errors while performing such requests: If an error happens 24088while, for example, trying to pretty-print an object then the error is 24089reported and any following extension languages are not tried. 24090 24091@node Aliases 24092@section Creating new spellings of existing commands 24093@cindex aliases for commands 24094 24095It is often useful to define alternate spellings of existing commands. 24096For example, if a new @value{GDBN} command defined in Python has 24097a long name to type, it is handy to have an abbreviated version of it 24098that involves less typing. 24099 24100@value{GDBN} itself uses aliases. For example @samp{s} is an alias 24101of the @samp{step} command even though it is otherwise an ambiguous 24102abbreviation of other commands like @samp{set} and @samp{show}. 24103 24104Aliases are also used to provide shortened or more common versions 24105of multi-word commands. For example, @value{GDBN} provides the 24106@samp{tty} alias of the @samp{set inferior-tty} command. 24107 24108You can define a new alias with the @samp{alias} command. 24109 24110@table @code 24111 24112@kindex alias 24113@item alias [-a] [--] @var{ALIAS} = @var{COMMAND} 24114 24115@end table 24116 24117@var{ALIAS} specifies the name of the new alias. 24118Each word of @var{ALIAS} must consist of letters, numbers, dashes and 24119underscores. 24120 24121@var{COMMAND} specifies the name of an existing command 24122that is being aliased. 24123 24124The @samp{-a} option specifies that the new alias is an abbreviation 24125of the command. Abbreviations are not shown in command 24126lists displayed by the @samp{help} command. 24127 24128The @samp{--} option specifies the end of options, 24129and is useful when @var{ALIAS} begins with a dash. 24130 24131Here is a simple example showing how to make an abbreviation 24132of a command so that there is less to type. 24133Suppose you were tired of typing @samp{disas}, the current 24134shortest unambiguous abbreviation of the @samp{disassemble} command 24135and you wanted an even shorter version named @samp{di}. 24136The following will accomplish this. 24137 24138@smallexample 24139(gdb) alias -a di = disas 24140@end smallexample 24141 24142Note that aliases are different from user-defined commands. 24143With a user-defined command, you also need to write documentation 24144for it with the @samp{document} command. 24145An alias automatically picks up the documentation of the existing command. 24146 24147Here is an example where we make @samp{elms} an abbreviation of 24148@samp{elements} in the @samp{set print elements} command. 24149This is to show that you can make an abbreviation of any part 24150of a command. 24151 24152@smallexample 24153(gdb) alias -a set print elms = set print elements 24154(gdb) alias -a show print elms = show print elements 24155(gdb) set p elms 20 24156(gdb) show p elms 24157Limit on string chars or array elements to print is 200. 24158@end smallexample 24159 24160Note that if you are defining an alias of a @samp{set} command, 24161and you want to have an alias for the corresponding @samp{show} 24162command, then you need to define the latter separately. 24163 24164Unambiguously abbreviated commands are allowed in @var{COMMAND} and 24165@var{ALIAS}, just as they are normally. 24166 24167@smallexample 24168(gdb) alias -a set pr elms = set p ele 24169@end smallexample 24170 24171Finally, here is an example showing the creation of a one word 24172alias for a more complex command. 24173This creates alias @samp{spe} of the command @samp{set print elements}. 24174 24175@smallexample 24176(gdb) alias spe = set print elements 24177(gdb) spe 20 24178@end smallexample 24179 24180@node Interpreters 24181@chapter Command Interpreters 24182@cindex command interpreters 24183 24184@value{GDBN} supports multiple command interpreters, and some command 24185infrastructure to allow users or user interface writers to switch 24186between interpreters or run commands in other interpreters. 24187 24188@value{GDBN} currently supports two command interpreters, the console 24189interpreter (sometimes called the command-line interpreter or @sc{cli}) 24190and the machine interface interpreter (or @sc{gdb/mi}). This manual 24191describes both of these interfaces in great detail. 24192 24193By default, @value{GDBN} will start with the console interpreter. 24194However, the user may choose to start @value{GDBN} with another 24195interpreter by specifying the @option{-i} or @option{--interpreter} 24196startup options. Defined interpreters include: 24197 24198@table @code 24199@item console 24200@cindex console interpreter 24201The traditional console or command-line interpreter. This is the most often 24202used interpreter with @value{GDBN}. With no interpreter specified at runtime, 24203@value{GDBN} will use this interpreter. 24204 24205@item mi 24206@cindex mi interpreter 24207The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily 24208by programs wishing to use @value{GDBN} as a backend for a debugger GUI 24209or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi} 24210Interface}. 24211 24212@item mi2 24213@cindex mi2 interpreter 24214The current @sc{gdb/mi} interface. 24215 24216@item mi1 24217@cindex mi1 interpreter 24218The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3. 24219 24220@end table 24221 24222@cindex invoke another interpreter 24223The interpreter being used by @value{GDBN} may not be dynamically 24224switched at runtime. Although possible, this could lead to a very 24225precarious situation. Consider an IDE using @sc{gdb/mi}. If a user 24226enters the command "interpreter-set console" in a console view, 24227@value{GDBN} would switch to using the console interpreter, rendering 24228the IDE inoperable! 24229 24230@kindex interpreter-exec 24231Although you may only choose a single interpreter at startup, you may execute 24232commands in any interpreter from the current interpreter using the appropriate 24233command. If you are running the console interpreter, simply use the 24234@code{interpreter-exec} command: 24235 24236@smallexample 24237interpreter-exec mi "-data-list-register-names" 24238@end smallexample 24239 24240@sc{gdb/mi} has a similar command, although it is only available in versions of 24241@value{GDBN} which support @sc{gdb/mi} version 2 (or greater). 24242 24243@node TUI 24244@chapter @value{GDBN} Text User Interface 24245@cindex TUI 24246@cindex Text User Interface 24247 24248@menu 24249* TUI Overview:: TUI overview 24250* TUI Keys:: TUI key bindings 24251* TUI Single Key Mode:: TUI single key mode 24252* TUI Commands:: TUI-specific commands 24253* TUI Configuration:: TUI configuration variables 24254@end menu 24255 24256The @value{GDBN} Text User Interface (TUI) is a terminal 24257interface which uses the @code{curses} library to show the source 24258file, the assembly output, the program registers and @value{GDBN} 24259commands in separate text windows. The TUI mode is supported only 24260on platforms where a suitable version of the @code{curses} library 24261is available. 24262 24263The TUI mode is enabled by default when you invoke @value{GDBN} as 24264@samp{@value{GDBP} -tui}. 24265You can also switch in and out of TUI mode while @value{GDBN} runs by 24266using various TUI commands and key bindings, such as @kbd{C-x C-a}. 24267@xref{TUI Keys, ,TUI Key Bindings}. 24268 24269@node TUI Overview 24270@section TUI Overview 24271 24272In TUI mode, @value{GDBN} can display several text windows: 24273 24274@table @emph 24275@item command 24276This window is the @value{GDBN} command window with the @value{GDBN} 24277prompt and the @value{GDBN} output. The @value{GDBN} input is still 24278managed using readline. 24279 24280@item source 24281The source window shows the source file of the program. The current 24282line and active breakpoints are displayed in this window. 24283 24284@item assembly 24285The assembly window shows the disassembly output of the program. 24286 24287@item register 24288This window shows the processor registers. Registers are highlighted 24289when their values change. 24290@end table 24291 24292The source and assembly windows show the current program position 24293by highlighting the current line and marking it with a @samp{>} marker. 24294Breakpoints are indicated with two markers. The first marker 24295indicates the breakpoint type: 24296 24297@table @code 24298@item B 24299Breakpoint which was hit at least once. 24300 24301@item b 24302Breakpoint which was never hit. 24303 24304@item H 24305Hardware breakpoint which was hit at least once. 24306 24307@item h 24308Hardware breakpoint which was never hit. 24309@end table 24310 24311The second marker indicates whether the breakpoint is enabled or not: 24312 24313@table @code 24314@item + 24315Breakpoint is enabled. 24316 24317@item - 24318Breakpoint is disabled. 24319@end table 24320 24321The source, assembly and register windows are updated when the current 24322thread changes, when the frame changes, or when the program counter 24323changes. 24324 24325These windows are not all visible at the same time. The command 24326window is always visible. The others can be arranged in several 24327layouts: 24328 24329@itemize @bullet 24330@item 24331source only, 24332 24333@item 24334assembly only, 24335 24336@item 24337source and assembly, 24338 24339@item 24340source and registers, or 24341 24342@item 24343assembly and registers. 24344@end itemize 24345 24346A status line above the command window shows the following information: 24347 24348@table @emph 24349@item target 24350Indicates the current @value{GDBN} target. 24351(@pxref{Targets, ,Specifying a Debugging Target}). 24352 24353@item process 24354Gives the current process or thread number. 24355When no process is being debugged, this field is set to @code{No process}. 24356 24357@item function 24358Gives the current function name for the selected frame. 24359The name is demangled if demangling is turned on (@pxref{Print Settings}). 24360When there is no symbol corresponding to the current program counter, 24361the string @code{??} is displayed. 24362 24363@item line 24364Indicates the current line number for the selected frame. 24365When the current line number is not known, the string @code{??} is displayed. 24366 24367@item pc 24368Indicates the current program counter address. 24369@end table 24370 24371@node TUI Keys 24372@section TUI Key Bindings 24373@cindex TUI key bindings 24374 24375The TUI installs several key bindings in the readline keymaps 24376@ifset SYSTEM_READLINE 24377(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}). 24378@end ifset 24379@ifclear SYSTEM_READLINE 24380(@pxref{Command Line Editing}). 24381@end ifclear 24382The following key bindings are installed for both TUI mode and the 24383@value{GDBN} standard mode. 24384 24385@table @kbd 24386@kindex C-x C-a 24387@item C-x C-a 24388@kindex C-x a 24389@itemx C-x a 24390@kindex C-x A 24391@itemx C-x A 24392Enter or leave the TUI mode. When leaving the TUI mode, 24393the curses window management stops and @value{GDBN} operates using 24394its standard mode, writing on the terminal directly. When reentering 24395the TUI mode, control is given back to the curses windows. 24396The screen is then refreshed. 24397 24398@kindex C-x 1 24399@item C-x 1 24400Use a TUI layout with only one window. The layout will 24401either be @samp{source} or @samp{assembly}. When the TUI mode 24402is not active, it will switch to the TUI mode. 24403 24404Think of this key binding as the Emacs @kbd{C-x 1} binding. 24405 24406@kindex C-x 2 24407@item C-x 2 24408Use a TUI layout with at least two windows. When the current 24409layout already has two windows, the next layout with two windows is used. 24410When a new layout is chosen, one window will always be common to the 24411previous layout and the new one. 24412 24413Think of it as the Emacs @kbd{C-x 2} binding. 24414 24415@kindex C-x o 24416@item C-x o 24417Change the active window. The TUI associates several key bindings 24418(like scrolling and arrow keys) with the active window. This command 24419gives the focus to the next TUI window. 24420 24421Think of it as the Emacs @kbd{C-x o} binding. 24422 24423@kindex C-x s 24424@item C-x s 24425Switch in and out of the TUI SingleKey mode that binds single 24426keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}). 24427@end table 24428 24429The following key bindings only work in the TUI mode: 24430 24431@table @asis 24432@kindex PgUp 24433@item @key{PgUp} 24434Scroll the active window one page up. 24435 24436@kindex PgDn 24437@item @key{PgDn} 24438Scroll the active window one page down. 24439 24440@kindex Up 24441@item @key{Up} 24442Scroll the active window one line up. 24443 24444@kindex Down 24445@item @key{Down} 24446Scroll the active window one line down. 24447 24448@kindex Left 24449@item @key{Left} 24450Scroll the active window one column left. 24451 24452@kindex Right 24453@item @key{Right} 24454Scroll the active window one column right. 24455 24456@kindex C-L 24457@item @kbd{C-L} 24458Refresh the screen. 24459@end table 24460 24461Because the arrow keys scroll the active window in the TUI mode, they 24462are not available for their normal use by readline unless the command 24463window has the focus. When another window is active, you must use 24464other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b} 24465and @kbd{C-f} to control the command window. 24466 24467@node TUI Single Key Mode 24468@section TUI Single Key Mode 24469@cindex TUI single key mode 24470 24471The TUI also provides a @dfn{SingleKey} mode, which binds several 24472frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to 24473switch into this mode, where the following key bindings are used: 24474 24475@table @kbd 24476@kindex c @r{(SingleKey TUI key)} 24477@item c 24478continue 24479 24480@kindex d @r{(SingleKey TUI key)} 24481@item d 24482down 24483 24484@kindex f @r{(SingleKey TUI key)} 24485@item f 24486finish 24487 24488@kindex n @r{(SingleKey TUI key)} 24489@item n 24490next 24491 24492@kindex q @r{(SingleKey TUI key)} 24493@item q 24494exit the SingleKey mode. 24495 24496@kindex r @r{(SingleKey TUI key)} 24497@item r 24498run 24499 24500@kindex s @r{(SingleKey TUI key)} 24501@item s 24502step 24503 24504@kindex u @r{(SingleKey TUI key)} 24505@item u 24506up 24507 24508@kindex v @r{(SingleKey TUI key)} 24509@item v 24510info locals 24511 24512@kindex w @r{(SingleKey TUI key)} 24513@item w 24514where 24515@end table 24516 24517Other keys temporarily switch to the @value{GDBN} command prompt. 24518The key that was pressed is inserted in the editing buffer so that 24519it is possible to type most @value{GDBN} commands without interaction 24520with the TUI SingleKey mode. Once the command is entered the TUI 24521SingleKey mode is restored. The only way to permanently leave 24522this mode is by typing @kbd{q} or @kbd{C-x s}. 24523 24524 24525@node TUI Commands 24526@section TUI-specific Commands 24527@cindex TUI commands 24528 24529The TUI has specific commands to control the text windows. 24530These commands are always available, even when @value{GDBN} is not in 24531the TUI mode. When @value{GDBN} is in the standard mode, most 24532of these commands will automatically switch to the TUI mode. 24533 24534Note that if @value{GDBN}'s @code{stdout} is not connected to a 24535terminal, or @value{GDBN} has been started with the machine interface 24536interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of 24537these commands will fail with an error, because it would not be 24538possible or desirable to enable curses window management. 24539 24540@table @code 24541@item info win 24542@kindex info win 24543List and give the size of all displayed windows. 24544 24545@item layout next 24546@kindex layout 24547Display the next layout. 24548 24549@item layout prev 24550Display the previous layout. 24551 24552@item layout src 24553Display the source window only. 24554 24555@item layout asm 24556Display the assembly window only. 24557 24558@item layout split 24559Display the source and assembly window. 24560 24561@item layout regs 24562Display the register window together with the source or assembly window. 24563 24564@item focus next 24565@kindex focus 24566Make the next window active for scrolling. 24567 24568@item focus prev 24569Make the previous window active for scrolling. 24570 24571@item focus src 24572Make the source window active for scrolling. 24573 24574@item focus asm 24575Make the assembly window active for scrolling. 24576 24577@item focus regs 24578Make the register window active for scrolling. 24579 24580@item focus cmd 24581Make the command window active for scrolling. 24582 24583@item refresh 24584@kindex refresh 24585Refresh the screen. This is similar to typing @kbd{C-L}. 24586 24587@item tui reg float 24588@kindex tui reg 24589Show the floating point registers in the register window. 24590 24591@item tui reg general 24592Show the general registers in the register window. 24593 24594@item tui reg next 24595Show the next register group. The list of register groups as well as 24596their order is target specific. The predefined register groups are the 24597following: @code{general}, @code{float}, @code{system}, @code{vector}, 24598@code{all}, @code{save}, @code{restore}. 24599 24600@item tui reg system 24601Show the system registers in the register window. 24602 24603@item update 24604@kindex update 24605Update the source window and the current execution point. 24606 24607@item winheight @var{name} +@var{count} 24608@itemx winheight @var{name} -@var{count} 24609@kindex winheight 24610Change the height of the window @var{name} by @var{count} 24611lines. Positive counts increase the height, while negative counts 24612decrease it. The @var{name} parameter can be one of @code{src} (the 24613source window), @code{cmd} (the command window), @code{asm} (the 24614disassembly window), or @code{regs} (the register display window). 24615 24616@item tabset @var{nchars} 24617@kindex tabset 24618Set the width of tab stops to be @var{nchars} characters. This 24619setting affects the display of TAB characters in the source and 24620assembly windows. 24621@end table 24622 24623@node TUI Configuration 24624@section TUI Configuration Variables 24625@cindex TUI configuration variables 24626 24627Several configuration variables control the appearance of TUI windows. 24628 24629@table @code 24630@item set tui border-kind @var{kind} 24631@kindex set tui border-kind 24632Select the border appearance for the source, assembly and register windows. 24633The possible values are the following: 24634@table @code 24635@item space 24636Use a space character to draw the border. 24637 24638@item ascii 24639Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border. 24640 24641@item acs 24642Use the Alternate Character Set to draw the border. The border is 24643drawn using character line graphics if the terminal supports them. 24644@end table 24645 24646@item set tui border-mode @var{mode} 24647@kindex set tui border-mode 24648@itemx set tui active-border-mode @var{mode} 24649@kindex set tui active-border-mode 24650Select the display attributes for the borders of the inactive windows 24651or the active window. The @var{mode} can be one of the following: 24652@table @code 24653@item normal 24654Use normal attributes to display the border. 24655 24656@item standout 24657Use standout mode. 24658 24659@item reverse 24660Use reverse video mode. 24661 24662@item half 24663Use half bright mode. 24664 24665@item half-standout 24666Use half bright and standout mode. 24667 24668@item bold 24669Use extra bright or bold mode. 24670 24671@item bold-standout 24672Use extra bright or bold and standout mode. 24673@end table 24674@end table 24675 24676@node Emacs 24677@chapter Using @value{GDBN} under @sc{gnu} Emacs 24678 24679@cindex Emacs 24680@cindex @sc{gnu} Emacs 24681A special interface allows you to use @sc{gnu} Emacs to view (and 24682edit) the source files for the program you are debugging with 24683@value{GDBN}. 24684 24685To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the 24686executable file you want to debug as an argument. This command starts 24687@value{GDBN} as a subprocess of Emacs, with input and output through a newly 24688created Emacs buffer. 24689@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.) 24690 24691Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two 24692things: 24693 24694@itemize @bullet 24695@item 24696All ``terminal'' input and output goes through an Emacs buffer, called 24697the GUD buffer. 24698 24699This applies both to @value{GDBN} commands and their output, and to the input 24700and output done by the program you are debugging. 24701 24702This is useful because it means that you can copy the text of previous 24703commands and input them again; you can even use parts of the output 24704in this way. 24705 24706All the facilities of Emacs' Shell mode are available for interacting 24707with your program. In particular, you can send signals the usual 24708way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a 24709stop. 24710 24711@item 24712@value{GDBN} displays source code through Emacs. 24713 24714Each time @value{GDBN} displays a stack frame, Emacs automatically finds the 24715source file for that frame and puts an arrow (@samp{=>}) at the 24716left margin of the current line. Emacs uses a separate buffer for 24717source display, and splits the screen to show both your @value{GDBN} session 24718and the source. 24719 24720Explicit @value{GDBN} @code{list} or search commands still produce output as 24721usual, but you probably have no reason to use them from Emacs. 24722@end itemize 24723 24724We call this @dfn{text command mode}. Emacs 22.1, and later, also uses 24725a graphical mode, enabled by default, which provides further buffers 24726that can control the execution and describe the state of your program. 24727@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}. 24728 24729If you specify an absolute file name when prompted for the @kbd{M-x 24730gdb} argument, then Emacs sets your current working directory to where 24731your program resides. If you only specify the file name, then Emacs 24732sets your current working directory to the directory associated 24733with the previous buffer. In this case, @value{GDBN} may find your 24734program by searching your environment's @code{PATH} variable, but on 24735some operating systems it might not find the source. So, although the 24736@value{GDBN} input and output session proceeds normally, the auxiliary 24737buffer does not display the current source and line of execution. 24738 24739The initial working directory of @value{GDBN} is printed on the top 24740line of the GUD buffer and this serves as a default for the commands 24741that specify files for @value{GDBN} to operate on. @xref{Files, 24742,Commands to Specify Files}. 24743 24744By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you 24745need to call @value{GDBN} by a different name (for example, if you 24746keep several configurations around, with different names) you can 24747customize the Emacs variable @code{gud-gdb-command-name} to run the 24748one you want. 24749 24750In the GUD buffer, you can use these special Emacs commands in 24751addition to the standard Shell mode commands: 24752 24753@table @kbd 24754@item C-h m 24755Describe the features of Emacs' GUD Mode. 24756 24757@item C-c C-s 24758Execute to another source line, like the @value{GDBN} @code{step} command; also 24759update the display window to show the current file and location. 24760 24761@item C-c C-n 24762Execute to next source line in this function, skipping all function 24763calls, like the @value{GDBN} @code{next} command. Then update the display window 24764to show the current file and location. 24765 24766@item C-c C-i 24767Execute one instruction, like the @value{GDBN} @code{stepi} command; update 24768display window accordingly. 24769 24770@item C-c C-f 24771Execute until exit from the selected stack frame, like the @value{GDBN} 24772@code{finish} command. 24773 24774@item C-c C-r 24775Continue execution of your program, like the @value{GDBN} @code{continue} 24776command. 24777 24778@item C-c < 24779Go up the number of frames indicated by the numeric argument 24780(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}), 24781like the @value{GDBN} @code{up} command. 24782 24783@item C-c > 24784Go down the number of frames indicated by the numeric argument, like the 24785@value{GDBN} @code{down} command. 24786@end table 24787 24788In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break}) 24789tells @value{GDBN} to set a breakpoint on the source line point is on. 24790 24791In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a 24792separate frame which shows a backtrace when the GUD buffer is current. 24793Move point to any frame in the stack and type @key{RET} to make it 24794become the current frame and display the associated source in the 24795source buffer. Alternatively, click @kbd{Mouse-2} to make the 24796selected frame become the current one. In graphical mode, the 24797speedbar displays watch expressions. 24798 24799If you accidentally delete the source-display buffer, an easy way to get 24800it back is to type the command @code{f} in the @value{GDBN} buffer, to 24801request a frame display; when you run under Emacs, this recreates 24802the source buffer if necessary to show you the context of the current 24803frame. 24804 24805The source files displayed in Emacs are in ordinary Emacs buffers 24806which are visiting the source files in the usual way. You can edit 24807the files with these buffers if you wish; but keep in mind that @value{GDBN} 24808communicates with Emacs in terms of line numbers. If you add or 24809delete lines from the text, the line numbers that @value{GDBN} knows cease 24810to correspond properly with the code. 24811 24812A more detailed description of Emacs' interaction with @value{GDBN} is 24813given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu} 24814Emacs Manual}). 24815 24816@node GDB/MI 24817@chapter The @sc{gdb/mi} Interface 24818 24819@unnumberedsec Function and Purpose 24820 24821@cindex @sc{gdb/mi}, its purpose 24822@sc{gdb/mi} is a line based machine oriented text interface to 24823@value{GDBN} and is activated by specifying using the 24824@option{--interpreter} command line option (@pxref{Mode Options}). It 24825is specifically intended to support the development of systems which 24826use the debugger as just one small component of a larger system. 24827 24828This chapter is a specification of the @sc{gdb/mi} interface. It is written 24829in the form of a reference manual. 24830 24831Note that @sc{gdb/mi} is still under construction, so some of the 24832features described below are incomplete and subject to change 24833(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}). 24834 24835@unnumberedsec Notation and Terminology 24836 24837@cindex notational conventions, for @sc{gdb/mi} 24838This chapter uses the following notation: 24839 24840@itemize @bullet 24841@item 24842@code{|} separates two alternatives. 24843 24844@item 24845@code{[ @var{something} ]} indicates that @var{something} is optional: 24846it may or may not be given. 24847 24848@item 24849@code{( @var{group} )*} means that @var{group} inside the parentheses 24850may repeat zero or more times. 24851 24852@item 24853@code{( @var{group} )+} means that @var{group} inside the parentheses 24854may repeat one or more times. 24855 24856@item 24857@code{"@var{string}"} means a literal @var{string}. 24858@end itemize 24859 24860@ignore 24861@heading Dependencies 24862@end ignore 24863 24864@menu 24865* GDB/MI General Design:: 24866* GDB/MI Command Syntax:: 24867* GDB/MI Compatibility with CLI:: 24868* GDB/MI Development and Front Ends:: 24869* GDB/MI Output Records:: 24870* GDB/MI Simple Examples:: 24871* GDB/MI Command Description Format:: 24872* GDB/MI Breakpoint Commands:: 24873* GDB/MI Catchpoint Commands:: 24874* GDB/MI Program Context:: 24875* GDB/MI Thread Commands:: 24876* GDB/MI Ada Tasking Commands:: 24877* GDB/MI Program Execution:: 24878* GDB/MI Stack Manipulation:: 24879* GDB/MI Variable Objects:: 24880* GDB/MI Data Manipulation:: 24881* GDB/MI Tracepoint Commands:: 24882* GDB/MI Symbol Query:: 24883* GDB/MI File Commands:: 24884@ignore 24885* GDB/MI Kod Commands:: 24886* GDB/MI Memory Overlay Commands:: 24887* GDB/MI Signal Handling Commands:: 24888@end ignore 24889* GDB/MI Target Manipulation:: 24890* GDB/MI File Transfer Commands:: 24891* GDB/MI Ada Exceptions Commands:: 24892* GDB/MI Support Commands:: 24893* GDB/MI Miscellaneous Commands:: 24894@end menu 24895 24896@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 24897@node GDB/MI General Design 24898@section @sc{gdb/mi} General Design 24899@cindex GDB/MI General Design 24900 24901Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three 24902parts---commands sent to @value{GDBN}, responses to those commands 24903and notifications. Each command results in exactly one response, 24904indicating either successful completion of the command, or an error. 24905For the commands that do not resume the target, the response contains the 24906requested information. For the commands that resume the target, the 24907response only indicates whether the target was successfully resumed. 24908Notifications is the mechanism for reporting changes in the state of the 24909target, or in @value{GDBN} state, that cannot conveniently be associated with 24910a command and reported as part of that command response. 24911 24912The important examples of notifications are: 24913@itemize @bullet 24914 24915@item 24916Exec notifications. These are used to report changes in 24917target state---when a target is resumed, or stopped. It would not 24918be feasible to include this information in response of resuming 24919commands, because one resume commands can result in multiple events in 24920different threads. Also, quite some time may pass before any event 24921happens in the target, while a frontend needs to know whether the resuming 24922command itself was successfully executed. 24923 24924@item 24925Console output, and status notifications. Console output 24926notifications are used to report output of CLI commands, as well as 24927diagnostics for other commands. Status notifications are used to 24928report the progress of a long-running operation. Naturally, including 24929this information in command response would mean no output is produced 24930until the command is finished, which is undesirable. 24931 24932@item 24933General notifications. Commands may have various side effects on 24934the @value{GDBN} or target state beyond their official purpose. For example, 24935a command may change the selected thread. Although such changes can 24936be included in command response, using notification allows for more 24937orthogonal frontend design. 24938 24939@end itemize 24940 24941There's no guarantee that whenever an MI command reports an error, 24942@value{GDBN} or the target are in any specific state, and especially, 24943the state is not reverted to the state before the MI command was 24944processed. Therefore, whenever an MI command results in an error, 24945we recommend that the frontend refreshes all the information shown in 24946the user interface. 24947 24948 24949@menu 24950* Context management:: 24951* Asynchronous and non-stop modes:: 24952* Thread groups:: 24953@end menu 24954 24955@node Context management 24956@subsection Context management 24957 24958@subsubsection Threads and Frames 24959 24960In most cases when @value{GDBN} accesses the target, this access is 24961done in context of a specific thread and frame (@pxref{Frames}). 24962Often, even when accessing global data, the target requires that a thread 24963be specified. The CLI interface maintains the selected thread and frame, 24964and supplies them to target on each command. This is convenient, 24965because a command line user would not want to specify that information 24966explicitly on each command, and because user interacts with 24967@value{GDBN} via a single terminal, so no confusion is possible as 24968to what thread and frame are the current ones. 24969 24970In the case of MI, the concept of selected thread and frame is less 24971useful. First, a frontend can easily remember this information 24972itself. Second, a graphical frontend can have more than one window, 24973each one used for debugging a different thread, and the frontend might 24974want to access additional threads for internal purposes. This 24975increases the risk that by relying on implicitly selected thread, the 24976frontend may be operating on a wrong one. Therefore, each MI command 24977should explicitly specify which thread and frame to operate on. To 24978make it possible, each MI command accepts the @samp{--thread} and 24979@samp{--frame} options, the value to each is @value{GDBN} identifier 24980for thread and frame to operate on. 24981 24982Usually, each top-level window in a frontend allows the user to select 24983a thread and a frame, and remembers the user selection for further 24984operations. However, in some cases @value{GDBN} may suggest that the 24985current thread be changed. For example, when stopping on a breakpoint 24986it is reasonable to switch to the thread where breakpoint is hit. For 24987another example, if the user issues the CLI @samp{thread} command via 24988the frontend, it is desirable to change the frontend's selected thread to the 24989one specified by user. @value{GDBN} communicates the suggestion to 24990change current thread using the @samp{=thread-selected} notification. 24991No such notification is available for the selected frame at the moment. 24992 24993Note that historically, MI shares the selected thread with CLI, so 24994frontends used the @code{-thread-select} to execute commands in the 24995right context. However, getting this to work right is cumbersome. The 24996simplest way is for frontend to emit @code{-thread-select} command 24997before every command. This doubles the number of commands that need 24998to be sent. The alternative approach is to suppress @code{-thread-select} 24999if the selected thread in @value{GDBN} is supposed to be identical to the 25000thread the frontend wants to operate on. However, getting this 25001optimization right can be tricky. In particular, if the frontend 25002sends several commands to @value{GDBN}, and one of the commands changes the 25003selected thread, then the behaviour of subsequent commands will 25004change. So, a frontend should either wait for response from such 25005problematic commands, or explicitly add @code{-thread-select} for 25006all subsequent commands. No frontend is known to do this exactly 25007right, so it is suggested to just always pass the @samp{--thread} and 25008@samp{--frame} options. 25009 25010@subsubsection Language 25011 25012The execution of several commands depends on which language is selected. 25013By default, the current language (@pxref{show language}) is used. 25014But for commands known to be language-sensitive, it is recommended 25015to use the @samp{--language} option. This option takes one argument, 25016which is the name of the language to use while executing the command. 25017For instance: 25018 25019@smallexample 25020-data-evaluate-expression --language c "sizeof (void*)" 25021^done,value="4" 25022(gdb) 25023@end smallexample 25024 25025The valid language names are the same names accepted by the 25026@samp{set language} command (@pxref{Manually}), excluding @samp{auto}, 25027@samp{local} or @samp{unknown}. 25028 25029@node Asynchronous and non-stop modes 25030@subsection Asynchronous command execution and non-stop mode 25031 25032On some targets, @value{GDBN} is capable of processing MI commands 25033even while the target is running. This is called @dfn{asynchronous 25034command execution} (@pxref{Background Execution}). The frontend may 25035specify a preferrence for asynchronous execution using the 25036@code{-gdb-set mi-async 1} command, which should be emitted before 25037either running the executable or attaching to the target. After the 25038frontend has started the executable or attached to the target, it can 25039find if asynchronous execution is enabled using the 25040@code{-list-target-features} command. 25041 25042@table @code 25043@item -gdb-set mi-async on 25044@item -gdb-set mi-async off 25045Set whether MI is in asynchronous mode. 25046 25047When @code{off}, which is the default, MI execution commands (e.g., 25048@code{-exec-continue}) are foreground commands, and @value{GDBN} waits 25049for the program to stop before processing further commands. 25050 25051When @code{on}, MI execution commands are background execution 25052commands (e.g., @code{-exec-continue} becomes the equivalent of the 25053@code{c&} CLI command), and so @value{GDBN} is capable of processing 25054MI commands even while the target is running. 25055 25056@item -gdb-show mi-async 25057Show whether MI asynchronous mode is enabled. 25058@end table 25059 25060Note: In @value{GDBN} version 7.7 and earlier, this option was called 25061@code{target-async} instead of @code{mi-async}, and it had the effect 25062of both putting MI in asynchronous mode and making CLI background 25063commands possible. CLI background commands are now always possible 25064``out of the box'' if the target supports them. The old spelling is 25065kept as a deprecated alias for backwards compatibility. 25066 25067Even if @value{GDBN} can accept a command while target is running, 25068many commands that access the target do not work when the target is 25069running. Therefore, asynchronous command execution is most useful 25070when combined with non-stop mode (@pxref{Non-Stop Mode}). Then, 25071it is possible to examine the state of one thread, while other threads 25072are running. 25073 25074When a given thread is running, MI commands that try to access the 25075target in the context of that thread may not work, or may work only on 25076some targets. In particular, commands that try to operate on thread's 25077stack will not work, on any target. Commands that read memory, or 25078modify breakpoints, may work or not work, depending on the target. Note 25079that even commands that operate on global state, such as @code{print}, 25080@code{set}, and breakpoint commands, still access the target in the 25081context of a specific thread, so frontend should try to find a 25082stopped thread and perform the operation on that thread (using the 25083@samp{--thread} option). 25084 25085Which commands will work in the context of a running thread is 25086highly target dependent. However, the two commands 25087@code{-exec-interrupt}, to stop a thread, and @code{-thread-info}, 25088to find the state of a thread, will always work. 25089 25090@node Thread groups 25091@subsection Thread groups 25092@value{GDBN} may be used to debug several processes at the same time. 25093On some platfroms, @value{GDBN} may support debugging of several 25094hardware systems, each one having several cores with several different 25095processes running on each core. This section describes the MI 25096mechanism to support such debugging scenarios. 25097 25098The key observation is that regardless of the structure of the 25099target, MI can have a global list of threads, because most commands that 25100accept the @samp{--thread} option do not need to know what process that 25101thread belongs to. Therefore, it is not necessary to introduce 25102neither additional @samp{--process} option, nor an notion of the 25103current process in the MI interface. The only strictly new feature 25104that is required is the ability to find how the threads are grouped 25105into processes. 25106 25107To allow the user to discover such grouping, and to support arbitrary 25108hierarchy of machines/cores/processes, MI introduces the concept of a 25109@dfn{thread group}. Thread group is a collection of threads and other 25110thread groups. A thread group always has a string identifier, a type, 25111and may have additional attributes specific to the type. A new 25112command, @code{-list-thread-groups}, returns the list of top-level 25113thread groups, which correspond to processes that @value{GDBN} is 25114debugging at the moment. By passing an identifier of a thread group 25115to the @code{-list-thread-groups} command, it is possible to obtain 25116the members of specific thread group. 25117 25118To allow the user to easily discover processes, and other objects, he 25119wishes to debug, a concept of @dfn{available thread group} is 25120introduced. Available thread group is an thread group that 25121@value{GDBN} is not debugging, but that can be attached to, using the 25122@code{-target-attach} command. The list of available top-level thread 25123groups can be obtained using @samp{-list-thread-groups --available}. 25124In general, the content of a thread group may be only retrieved only 25125after attaching to that thread group. 25126 25127Thread groups are related to inferiors (@pxref{Inferiors and 25128Programs}). Each inferior corresponds to a thread group of a special 25129type @samp{process}, and some additional operations are permitted on 25130such thread groups. 25131 25132@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25133@node GDB/MI Command Syntax 25134@section @sc{gdb/mi} Command Syntax 25135 25136@menu 25137* GDB/MI Input Syntax:: 25138* GDB/MI Output Syntax:: 25139@end menu 25140 25141@node GDB/MI Input Syntax 25142@subsection @sc{gdb/mi} Input Syntax 25143 25144@cindex input syntax for @sc{gdb/mi} 25145@cindex @sc{gdb/mi}, input syntax 25146@table @code 25147@item @var{command} @expansion{} 25148@code{@var{cli-command} | @var{mi-command}} 25149 25150@item @var{cli-command} @expansion{} 25151@code{[ @var{token} ] @var{cli-command} @var{nl}}, where 25152@var{cli-command} is any existing @value{GDBN} CLI command. 25153 25154@item @var{mi-command} @expansion{} 25155@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )* 25156@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}} 25157 25158@item @var{token} @expansion{} 25159"any sequence of digits" 25160 25161@item @var{option} @expansion{} 25162@code{"-" @var{parameter} [ " " @var{parameter} ]} 25163 25164@item @var{parameter} @expansion{} 25165@code{@var{non-blank-sequence} | @var{c-string}} 25166 25167@item @var{operation} @expansion{} 25168@emph{any of the operations described in this chapter} 25169 25170@item @var{non-blank-sequence} @expansion{} 25171@emph{anything, provided it doesn't contain special characters such as 25172"-", @var{nl}, """ and of course " "} 25173 25174@item @var{c-string} @expansion{} 25175@code{""" @var{seven-bit-iso-c-string-content} """} 25176 25177@item @var{nl} @expansion{} 25178@code{CR | CR-LF} 25179@end table 25180 25181@noindent 25182Notes: 25183 25184@itemize @bullet 25185@item 25186The CLI commands are still handled by the @sc{mi} interpreter; their 25187output is described below. 25188 25189@item 25190The @code{@var{token}}, when present, is passed back when the command 25191finishes. 25192 25193@item 25194Some @sc{mi} commands accept optional arguments as part of the parameter 25195list. Each option is identified by a leading @samp{-} (dash) and may be 25196followed by an optional argument parameter. Options occur first in the 25197parameter list and can be delimited from normal parameters using 25198@samp{--} (this is useful when some parameters begin with a dash). 25199@end itemize 25200 25201Pragmatics: 25202 25203@itemize @bullet 25204@item 25205We want easy access to the existing CLI syntax (for debugging). 25206 25207@item 25208We want it to be easy to spot a @sc{mi} operation. 25209@end itemize 25210 25211@node GDB/MI Output Syntax 25212@subsection @sc{gdb/mi} Output Syntax 25213 25214@cindex output syntax of @sc{gdb/mi} 25215@cindex @sc{gdb/mi}, output syntax 25216The output from @sc{gdb/mi} consists of zero or more out-of-band records 25217followed, optionally, by a single result record. This result record 25218is for the most recent command. The sequence of output records is 25219terminated by @samp{(gdb)}. 25220 25221If an input command was prefixed with a @code{@var{token}} then the 25222corresponding output for that command will also be prefixed by that same 25223@var{token}. 25224 25225@table @code 25226@item @var{output} @expansion{} 25227@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}} 25228 25229@item @var{result-record} @expansion{} 25230@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}} 25231 25232@item @var{out-of-band-record} @expansion{} 25233@code{@var{async-record} | @var{stream-record}} 25234 25235@item @var{async-record} @expansion{} 25236@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}} 25237 25238@item @var{exec-async-output} @expansion{} 25239@code{[ @var{token} ] "*" @var{async-output nl}} 25240 25241@item @var{status-async-output} @expansion{} 25242@code{[ @var{token} ] "+" @var{async-output nl}} 25243 25244@item @var{notify-async-output} @expansion{} 25245@code{[ @var{token} ] "=" @var{async-output nl}} 25246 25247@item @var{async-output} @expansion{} 25248@code{@var{async-class} ( "," @var{result} )*} 25249 25250@item @var{result-class} @expansion{} 25251@code{"done" | "running" | "connected" | "error" | "exit"} 25252 25253@item @var{async-class} @expansion{} 25254@code{"stopped" | @var{others}} (where @var{others} will be added 25255depending on the needs---this is still in development). 25256 25257@item @var{result} @expansion{} 25258@code{ @var{variable} "=" @var{value}} 25259 25260@item @var{variable} @expansion{} 25261@code{ @var{string} } 25262 25263@item @var{value} @expansion{} 25264@code{ @var{const} | @var{tuple} | @var{list} } 25265 25266@item @var{const} @expansion{} 25267@code{@var{c-string}} 25268 25269@item @var{tuple} @expansion{} 25270@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" } 25271 25272@item @var{list} @expansion{} 25273@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "[" 25274@var{result} ( "," @var{result} )* "]" } 25275 25276@item @var{stream-record} @expansion{} 25277@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}} 25278 25279@item @var{console-stream-output} @expansion{} 25280@code{"~" @var{c-string nl}} 25281 25282@item @var{target-stream-output} @expansion{} 25283@code{"@@" @var{c-string nl}} 25284 25285@item @var{log-stream-output} @expansion{} 25286@code{"&" @var{c-string nl}} 25287 25288@item @var{nl} @expansion{} 25289@code{CR | CR-LF} 25290 25291@item @var{token} @expansion{} 25292@emph{any sequence of digits}. 25293@end table 25294 25295@noindent 25296Notes: 25297 25298@itemize @bullet 25299@item 25300All output sequences end in a single line containing a period. 25301 25302@item 25303The @code{@var{token}} is from the corresponding request. Note that 25304for all async output, while the token is allowed by the grammar and 25305may be output by future versions of @value{GDBN} for select async 25306output messages, it is generally omitted. Frontends should treat 25307all async output as reporting general changes in the state of the 25308target and there should be no need to associate async output to any 25309prior command. 25310 25311@item 25312@cindex status output in @sc{gdb/mi} 25313@var{status-async-output} contains on-going status information about the 25314progress of a slow operation. It can be discarded. All status output is 25315prefixed by @samp{+}. 25316 25317@item 25318@cindex async output in @sc{gdb/mi} 25319@var{exec-async-output} contains asynchronous state change on the target 25320(stopped, started, disappeared). All async output is prefixed by 25321@samp{*}. 25322 25323@item 25324@cindex notify output in @sc{gdb/mi} 25325@var{notify-async-output} contains supplementary information that the 25326client should handle (e.g., a new breakpoint information). All notify 25327output is prefixed by @samp{=}. 25328 25329@item 25330@cindex console output in @sc{gdb/mi} 25331@var{console-stream-output} is output that should be displayed as is in the 25332console. It is the textual response to a CLI command. All the console 25333output is prefixed by @samp{~}. 25334 25335@item 25336@cindex target output in @sc{gdb/mi} 25337@var{target-stream-output} is the output produced by the target program. 25338All the target output is prefixed by @samp{@@}. 25339 25340@item 25341@cindex log output in @sc{gdb/mi} 25342@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for 25343instance messages that should be displayed as part of an error log. All 25344the log output is prefixed by @samp{&}. 25345 25346@item 25347@cindex list output in @sc{gdb/mi} 25348New @sc{gdb/mi} commands should only output @var{lists} containing 25349@var{values}. 25350 25351 25352@end itemize 25353 25354@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more 25355details about the various output records. 25356 25357@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25358@node GDB/MI Compatibility with CLI 25359@section @sc{gdb/mi} Compatibility with CLI 25360 25361@cindex compatibility, @sc{gdb/mi} and CLI 25362@cindex @sc{gdb/mi}, compatibility with CLI 25363 25364For the developers convenience CLI commands can be entered directly, 25365but there may be some unexpected behaviour. For example, commands 25366that query the user will behave as if the user replied yes, breakpoint 25367command lists are not executed and some CLI commands, such as 25368@code{if}, @code{when} and @code{define}, prompt for further input with 25369@samp{>}, which is not valid MI output. 25370 25371This feature may be removed at some stage in the future and it is 25372recommended that front ends use the @code{-interpreter-exec} command 25373(@pxref{-interpreter-exec}). 25374 25375@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25376@node GDB/MI Development and Front Ends 25377@section @sc{gdb/mi} Development and Front Ends 25378@cindex @sc{gdb/mi} development 25379 25380The application which takes the MI output and presents the state of the 25381program being debugged to the user is called a @dfn{front end}. 25382 25383Although @sc{gdb/mi} is still incomplete, it is currently being used 25384by a variety of front ends to @value{GDBN}. This makes it difficult 25385to introduce new functionality without breaking existing usage. This 25386section tries to minimize the problems by describing how the protocol 25387might change. 25388 25389Some changes in MI need not break a carefully designed front end, and 25390for these the MI version will remain unchanged. The following is a 25391list of changes that may occur within one level, so front ends should 25392parse MI output in a way that can handle them: 25393 25394@itemize @bullet 25395@item 25396New MI commands may be added. 25397 25398@item 25399New fields may be added to the output of any MI command. 25400 25401@item 25402The range of values for fields with specified values, e.g., 25403@code{in_scope} (@pxref{-var-update}) may be extended. 25404 25405@c The format of field's content e.g type prefix, may change so parse it 25406@c at your own risk. Yes, in general? 25407 25408@c The order of fields may change? Shouldn't really matter but it might 25409@c resolve inconsistencies. 25410@end itemize 25411 25412If the changes are likely to break front ends, the MI version level 25413will be increased by one. This will allow the front end to parse the 25414output according to the MI version. Apart from mi0, new versions of 25415@value{GDBN} will not support old versions of MI and it will be the 25416responsibility of the front end to work with the new one. 25417 25418@c Starting with mi3, add a new command -mi-version that prints the MI 25419@c version? 25420 25421The best way to avoid unexpected changes in MI that might break your front 25422end is to make your project known to @value{GDBN} developers and 25423follow development on @email{gdb@@sourceware.org} and 25424@email{gdb-patches@@sourceware.org}. 25425@cindex mailing lists 25426 25427@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25428@node GDB/MI Output Records 25429@section @sc{gdb/mi} Output Records 25430 25431@menu 25432* GDB/MI Result Records:: 25433* GDB/MI Stream Records:: 25434* GDB/MI Async Records:: 25435* GDB/MI Breakpoint Information:: 25436* GDB/MI Frame Information:: 25437* GDB/MI Thread Information:: 25438* GDB/MI Ada Exception Information:: 25439@end menu 25440 25441@node GDB/MI Result Records 25442@subsection @sc{gdb/mi} Result Records 25443 25444@cindex result records in @sc{gdb/mi} 25445@cindex @sc{gdb/mi}, result records 25446In addition to a number of out-of-band notifications, the response to a 25447@sc{gdb/mi} command includes one of the following result indications: 25448 25449@table @code 25450@findex ^done 25451@item "^done" [ "," @var{results} ] 25452The synchronous operation was successful, @code{@var{results}} are the return 25453values. 25454 25455@item "^running" 25456@findex ^running 25457This result record is equivalent to @samp{^done}. Historically, it 25458was output instead of @samp{^done} if the command has resumed the 25459target. This behaviour is maintained for backward compatibility, but 25460all frontends should treat @samp{^done} and @samp{^running} 25461identically and rely on the @samp{*running} output record to determine 25462which threads are resumed. 25463 25464@item "^connected" 25465@findex ^connected 25466@value{GDBN} has connected to a remote target. 25467 25468@item "^error" "," "msg=" @var{c-string} [ "," "code=" @var{c-string} ] 25469@findex ^error 25470The operation failed. The @code{msg=@var{c-string}} variable contains 25471the corresponding error message. 25472 25473If present, the @code{code=@var{c-string}} variable provides an error 25474code on which consumers can rely on to detect the corresponding 25475error condition. At present, only one error code is defined: 25476 25477@table @samp 25478@item "undefined-command" 25479Indicates that the command causing the error does not exist. 25480@end table 25481 25482@item "^exit" 25483@findex ^exit 25484@value{GDBN} has terminated. 25485 25486@end table 25487 25488@node GDB/MI Stream Records 25489@subsection @sc{gdb/mi} Stream Records 25490 25491@cindex @sc{gdb/mi}, stream records 25492@cindex stream records in @sc{gdb/mi} 25493@value{GDBN} internally maintains a number of output streams: the console, the 25494target, and the log. The output intended for each of these streams is 25495funneled through the @sc{gdb/mi} interface using @dfn{stream records}. 25496 25497Each stream record begins with a unique @dfn{prefix character} which 25498identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output 25499Syntax}). In addition to the prefix, each stream record contains a 25500@code{@var{string-output}}. This is either raw text (with an implicit new 25501line) or a quoted C string (which does not contain an implicit newline). 25502 25503@table @code 25504@item "~" @var{string-output} 25505The console output stream contains text that should be displayed in the 25506CLI console window. It contains the textual responses to CLI commands. 25507 25508@item "@@" @var{string-output} 25509The target output stream contains any textual output from the running 25510target. This is only present when GDB's event loop is truly 25511asynchronous, which is currently only the case for remote targets. 25512 25513@item "&" @var{string-output} 25514The log stream contains debugging messages being produced by @value{GDBN}'s 25515internals. 25516@end table 25517 25518@node GDB/MI Async Records 25519@subsection @sc{gdb/mi} Async Records 25520 25521@cindex async records in @sc{gdb/mi} 25522@cindex @sc{gdb/mi}, async records 25523@dfn{Async} records are used to notify the @sc{gdb/mi} client of 25524additional changes that have occurred. Those changes can either be a 25525consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of 25526target activity (e.g., target stopped). 25527 25528The following is the list of possible async records: 25529 25530@table @code 25531 25532@item *running,thread-id="@var{thread}" 25533The target is now running. The @var{thread} field tells which 25534specific thread is now running, and can be @samp{all} if all threads 25535are running. The frontend should assume that no interaction with a 25536running thread is possible after this notification is produced. 25537The frontend should not assume that this notification is output 25538only once for any command. @value{GDBN} may emit this notification 25539several times, either for different threads, because it cannot resume 25540all threads together, or even for a single thread, if the thread must 25541be stepped though some code before letting it run freely. 25542 25543@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}" 25544The target has stopped. The @var{reason} field can have one of the 25545following values: 25546 25547@table @code 25548@item breakpoint-hit 25549A breakpoint was reached. 25550@item watchpoint-trigger 25551A watchpoint was triggered. 25552@item read-watchpoint-trigger 25553A read watchpoint was triggered. 25554@item access-watchpoint-trigger 25555An access watchpoint was triggered. 25556@item function-finished 25557An -exec-finish or similar CLI command was accomplished. 25558@item location-reached 25559An -exec-until or similar CLI command was accomplished. 25560@item watchpoint-scope 25561A watchpoint has gone out of scope. 25562@item end-stepping-range 25563An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or 25564similar CLI command was accomplished. 25565@item exited-signalled 25566The inferior exited because of a signal. 25567@item exited 25568The inferior exited. 25569@item exited-normally 25570The inferior exited normally. 25571@item signal-received 25572A signal was received by the inferior. 25573@item solib-event 25574The inferior has stopped due to a library being loaded or unloaded. 25575This can happen when @code{stop-on-solib-events} (@pxref{Files}) is 25576set or when a @code{catch load} or @code{catch unload} catchpoint is 25577in use (@pxref{Set Catchpoints}). 25578@item fork 25579The inferior has forked. This is reported when @code{catch fork} 25580(@pxref{Set Catchpoints}) has been used. 25581@item vfork 25582The inferior has vforked. This is reported in when @code{catch vfork} 25583(@pxref{Set Catchpoints}) has been used. 25584@item syscall-entry 25585The inferior entered a system call. This is reported when @code{catch 25586syscall} (@pxref{Set Catchpoints}) has been used. 25587@item syscall-entry 25588The inferior returned from a system call. This is reported when 25589@code{catch syscall} (@pxref{Set Catchpoints}) has been used. 25590@item exec 25591The inferior called @code{exec}. This is reported when @code{catch exec} 25592(@pxref{Set Catchpoints}) has been used. 25593@end table 25594 25595The @var{id} field identifies the thread that directly caused the stop 25596-- for example by hitting a breakpoint. Depending on whether all-stop 25597mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either 25598stop all threads, or only the thread that directly triggered the stop. 25599If all threads are stopped, the @var{stopped} field will have the 25600value of @code{"all"}. Otherwise, the value of the @var{stopped} 25601field will be a list of thread identifiers. Presently, this list will 25602always include a single thread, but frontend should be prepared to see 25603several threads in the list. The @var{core} field reports the 25604processor core on which the stop event has happened. This field may be absent 25605if such information is not available. 25606 25607@item =thread-group-added,id="@var{id}" 25608@itemx =thread-group-removed,id="@var{id}" 25609A thread group was either added or removed. The @var{id} field 25610contains the @value{GDBN} identifier of the thread group. When a thread 25611group is added, it generally might not be associated with a running 25612process. When a thread group is removed, its id becomes invalid and 25613cannot be used in any way. 25614 25615@item =thread-group-started,id="@var{id}",pid="@var{pid}" 25616A thread group became associated with a running program, 25617either because the program was just started or the thread group 25618was attached to a program. The @var{id} field contains the 25619@value{GDBN} identifier of the thread group. The @var{pid} field 25620contains process identifier, specific to the operating system. 25621 25622@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"] 25623A thread group is no longer associated with a running program, 25624either because the program has exited, or because it was detached 25625from. The @var{id} field contains the @value{GDBN} identifier of the 25626thread group. The @var{code} field is the exit code of the inferior; it exists 25627only when the inferior exited with some code. 25628 25629@item =thread-created,id="@var{id}",group-id="@var{gid}" 25630@itemx =thread-exited,id="@var{id}",group-id="@var{gid}" 25631A thread either was created, or has exited. The @var{id} field 25632contains the @value{GDBN} identifier of the thread. The @var{gid} 25633field identifies the thread group this thread belongs to. 25634 25635@item =thread-selected,id="@var{id}" 25636Informs that the selected thread was changed as result of the last 25637command. This notification is not emitted as result of @code{-thread-select} 25638command but is emitted whenever an MI command that is not documented 25639to change the selected thread actually changes it. In particular, 25640invoking, directly or indirectly (via user-defined command), the CLI 25641@code{thread} command, will generate this notification. 25642 25643We suggest that in response to this notification, front ends 25644highlight the selected thread and cause subsequent commands to apply to 25645that thread. 25646 25647@item =library-loaded,... 25648Reports that a new library file was loaded by the program. This 25649notification has 4 fields---@var{id}, @var{target-name}, 25650@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an 25651opaque identifier of the library. For remote debugging case, 25652@var{target-name} and @var{host-name} fields give the name of the 25653library file on the target, and on the host respectively. For native 25654debugging, both those fields have the same value. The 25655@var{symbols-loaded} field is emitted only for backward compatibility 25656and should not be relied on to convey any useful information. The 25657@var{thread-group} field, if present, specifies the id of the thread 25658group in whose context the library was loaded. If the field is 25659absent, it means the library was loaded in the context of all present 25660thread groups. 25661 25662@item =library-unloaded,... 25663Reports that a library was unloaded by the program. This notification 25664has 3 fields---@var{id}, @var{target-name} and @var{host-name} with 25665the same meaning as for the @code{=library-loaded} notification. 25666The @var{thread-group} field, if present, specifies the id of the 25667thread group in whose context the library was unloaded. If the field is 25668absent, it means the library was unloaded in the context of all present 25669thread groups. 25670 25671@item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum} 25672@itemx =traceframe-changed,end 25673Reports that the trace frame was changed and its new number is 25674@var{tfnum}. The number of the tracepoint associated with this trace 25675frame is @var{tpnum}. 25676 25677@item =tsv-created,name=@var{name},initial=@var{initial} 25678Reports that the new trace state variable @var{name} is created with 25679initial value @var{initial}. 25680 25681@item =tsv-deleted,name=@var{name} 25682@itemx =tsv-deleted 25683Reports that the trace state variable @var{name} is deleted or all 25684trace state variables are deleted. 25685 25686@item =tsv-modified,name=@var{name},initial=@var{initial}[,current=@var{current}] 25687Reports that the trace state variable @var{name} is modified with 25688the initial value @var{initial}. The current value @var{current} of 25689trace state variable is optional and is reported if the current 25690value of trace state variable is known. 25691 25692@item =breakpoint-created,bkpt=@{...@} 25693@itemx =breakpoint-modified,bkpt=@{...@} 25694@itemx =breakpoint-deleted,id=@var{number} 25695Reports that a breakpoint was created, modified, or deleted, 25696respectively. Only user-visible breakpoints are reported to the MI 25697user. 25698 25699The @var{bkpt} argument is of the same form as returned by the various 25700breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The 25701@var{number} is the ordinal number of the breakpoint. 25702 25703Note that if a breakpoint is emitted in the result record of a 25704command, then it will not also be emitted in an async record. 25705 25706@item =record-started,thread-group="@var{id}" 25707@itemx =record-stopped,thread-group="@var{id}" 25708Execution log recording was either started or stopped on an 25709inferior. The @var{id} is the @value{GDBN} identifier of the thread 25710group corresponding to the affected inferior. 25711 25712@item =cmd-param-changed,param=@var{param},value=@var{value} 25713Reports that a parameter of the command @code{set @var{param}} is 25714changed to @var{value}. In the multi-word @code{set} command, 25715the @var{param} is the whole parameter list to @code{set} command. 25716For example, In command @code{set check type on}, @var{param} 25717is @code{check type} and @var{value} is @code{on}. 25718 25719@item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"] 25720Reports that bytes from @var{addr} to @var{data} + @var{len} were 25721written in an inferior. The @var{id} is the identifier of the 25722thread group corresponding to the affected inferior. The optional 25723@code{type="code"} part is reported if the memory written to holds 25724executable code. 25725@end table 25726 25727@node GDB/MI Breakpoint Information 25728@subsection @sc{gdb/mi} Breakpoint Information 25729 25730When @value{GDBN} reports information about a breakpoint, a 25731tracepoint, a watchpoint, or a catchpoint, it uses a tuple with the 25732following fields: 25733 25734@table @code 25735@item number 25736The breakpoint number. For a breakpoint that represents one location 25737of a multi-location breakpoint, this will be a dotted pair, like 25738@samp{1.2}. 25739 25740@item type 25741The type of the breakpoint. For ordinary breakpoints this will be 25742@samp{breakpoint}, but many values are possible. 25743 25744@item catch-type 25745If the type of the breakpoint is @samp{catchpoint}, then this 25746indicates the exact type of catchpoint. 25747 25748@item disp 25749This is the breakpoint disposition---either @samp{del}, meaning that 25750the breakpoint will be deleted at the next stop, or @samp{keep}, 25751meaning that the breakpoint will not be deleted. 25752 25753@item enabled 25754This indicates whether the breakpoint is enabled, in which case the 25755value is @samp{y}, or disabled, in which case the value is @samp{n}. 25756Note that this is not the same as the field @code{enable}. 25757 25758@item addr 25759The address of the breakpoint. This may be a hexidecimal number, 25760giving the address; or the string @samp{<PENDING>}, for a pending 25761breakpoint; or the string @samp{<MULTIPLE>}, for a breakpoint with 25762multiple locations. This field will not be present if no address can 25763be determined. For example, a watchpoint does not have an address. 25764 25765@item func 25766If known, the function in which the breakpoint appears. 25767If not known, this field is not present. 25768 25769@item filename 25770The name of the source file which contains this function, if known. 25771If not known, this field is not present. 25772 25773@item fullname 25774The full file name of the source file which contains this function, if 25775known. If not known, this field is not present. 25776 25777@item line 25778The line number at which this breakpoint appears, if known. 25779If not known, this field is not present. 25780 25781@item at 25782If the source file is not known, this field may be provided. If 25783provided, this holds the address of the breakpoint, possibly followed 25784by a symbol name. 25785 25786@item pending 25787If this breakpoint is pending, this field is present and holds the 25788text used to set the breakpoint, as entered by the user. 25789 25790@item evaluated-by 25791Where this breakpoint's condition is evaluated, either @samp{host} or 25792@samp{target}. 25793 25794@item thread 25795If this is a thread-specific breakpoint, then this identifies the 25796thread in which the breakpoint can trigger. 25797 25798@item task 25799If this breakpoint is restricted to a particular Ada task, then this 25800field will hold the task identifier. 25801 25802@item cond 25803If the breakpoint is conditional, this is the condition expression. 25804 25805@item ignore 25806The ignore count of the breakpoint. 25807 25808@item enable 25809The enable count of the breakpoint. 25810 25811@item traceframe-usage 25812FIXME. 25813 25814@item static-tracepoint-marker-string-id 25815For a static tracepoint, the name of the static tracepoint marker. 25816 25817@item mask 25818For a masked watchpoint, this is the mask. 25819 25820@item pass 25821A tracepoint's pass count. 25822 25823@item original-location 25824The location of the breakpoint as originally specified by the user. 25825This field is optional. 25826 25827@item times 25828The number of times the breakpoint has been hit. 25829 25830@item installed 25831This field is only given for tracepoints. This is either @samp{y}, 25832meaning that the tracepoint is installed, or @samp{n}, meaning that it 25833is not. 25834 25835@item what 25836Some extra data, the exact contents of which are type-dependent. 25837 25838@end table 25839 25840For example, here is what the output of @code{-break-insert} 25841(@pxref{GDB/MI Breakpoint Commands}) might be: 25842 25843@smallexample 25844-> -break-insert main 25845<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 25846 enabled="y",addr="0x08048564",func="main",file="myprog.c", 25847 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 25848 times="0"@} 25849<- (gdb) 25850@end smallexample 25851 25852@node GDB/MI Frame Information 25853@subsection @sc{gdb/mi} Frame Information 25854 25855Response from many MI commands includes an information about stack 25856frame. This information is a tuple that may have the following 25857fields: 25858 25859@table @code 25860@item level 25861The level of the stack frame. The innermost frame has the level of 25862zero. This field is always present. 25863 25864@item func 25865The name of the function corresponding to the frame. This field may 25866be absent if @value{GDBN} is unable to determine the function name. 25867 25868@item addr 25869The code address for the frame. This field is always present. 25870 25871@item file 25872The name of the source files that correspond to the frame's code 25873address. This field may be absent. 25874 25875@item line 25876The source line corresponding to the frames' code address. This field 25877may be absent. 25878 25879@item from 25880The name of the binary file (either executable or shared library) the 25881corresponds to the frame's code address. This field may be absent. 25882 25883@end table 25884 25885@node GDB/MI Thread Information 25886@subsection @sc{gdb/mi} Thread Information 25887 25888Whenever @value{GDBN} has to report an information about a thread, it 25889uses a tuple with the following fields: 25890 25891@table @code 25892@item id 25893The numeric id assigned to the thread by @value{GDBN}. This field is 25894always present. 25895 25896@item target-id 25897Target-specific string identifying the thread. This field is always present. 25898 25899@item details 25900Additional information about the thread provided by the target. 25901It is supposed to be human-readable and not interpreted by the 25902frontend. This field is optional. 25903 25904@item state 25905Either @samp{stopped} or @samp{running}, depending on whether the 25906thread is presently running. This field is always present. 25907 25908@item core 25909The value of this field is an integer number of the processor core the 25910thread was last seen on. This field is optional. 25911@end table 25912 25913@node GDB/MI Ada Exception Information 25914@subsection @sc{gdb/mi} Ada Exception Information 25915 25916Whenever a @code{*stopped} record is emitted because the program 25917stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}), 25918@value{GDBN} provides the name of the exception that was raised via 25919the @code{exception-name} field. 25920 25921@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25922@node GDB/MI Simple Examples 25923@section Simple Examples of @sc{gdb/mi} Interaction 25924@cindex @sc{gdb/mi}, simple examples 25925 25926This subsection presents several simple examples of interaction using 25927the @sc{gdb/mi} interface. In these examples, @samp{->} means that the 25928following line is passed to @sc{gdb/mi} as input, while @samp{<-} means 25929the output received from @sc{gdb/mi}. 25930 25931Note the line breaks shown in the examples are here only for 25932readability, they don't appear in the real output. 25933 25934@subheading Setting a Breakpoint 25935 25936Setting a breakpoint generates synchronous output which contains detailed 25937information of the breakpoint. 25938 25939@smallexample 25940-> -break-insert main 25941<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 25942 enabled="y",addr="0x08048564",func="main",file="myprog.c", 25943 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 25944 times="0"@} 25945<- (gdb) 25946@end smallexample 25947 25948@subheading Program Execution 25949 25950Program execution generates asynchronous records and MI gives the 25951reason that execution stopped. 25952 25953@smallexample 25954-> -exec-run 25955<- ^running 25956<- (gdb) 25957<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 25958 frame=@{addr="0x08048564",func="main", 25959 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}], 25960 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@} 25961<- (gdb) 25962-> -exec-continue 25963<- ^running 25964<- (gdb) 25965<- *stopped,reason="exited-normally" 25966<- (gdb) 25967@end smallexample 25968 25969@subheading Quitting @value{GDBN} 25970 25971Quitting @value{GDBN} just prints the result class @samp{^exit}. 25972 25973@smallexample 25974-> (gdb) 25975<- -gdb-exit 25976<- ^exit 25977@end smallexample 25978 25979Please note that @samp{^exit} is printed immediately, but it might 25980take some time for @value{GDBN} to actually exit. During that time, @value{GDBN} 25981performs necessary cleanups, including killing programs being debugged 25982or disconnecting from debug hardware, so the frontend should wait till 25983@value{GDBN} exits and should only forcibly kill @value{GDBN} if it 25984fails to exit in reasonable time. 25985 25986@subheading A Bad Command 25987 25988Here's what happens if you pass a non-existent command: 25989 25990@smallexample 25991-> -rubbish 25992<- ^error,msg="Undefined MI command: rubbish" 25993<- (gdb) 25994@end smallexample 25995 25996 25997@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 25998@node GDB/MI Command Description Format 25999@section @sc{gdb/mi} Command Description Format 26000 26001The remaining sections describe blocks of commands. Each block of 26002commands is laid out in a fashion similar to this section. 26003 26004@subheading Motivation 26005 26006The motivation for this collection of commands. 26007 26008@subheading Introduction 26009 26010A brief introduction to this collection of commands as a whole. 26011 26012@subheading Commands 26013 26014For each command in the block, the following is described: 26015 26016@subsubheading Synopsis 26017 26018@smallexample 26019 -command @var{args}@dots{} 26020@end smallexample 26021 26022@subsubheading Result 26023 26024@subsubheading @value{GDBN} Command 26025 26026The corresponding @value{GDBN} CLI command(s), if any. 26027 26028@subsubheading Example 26029 26030Example(s) formatted for readability. Some of the described commands have 26031not been implemented yet and these are labeled N.A.@: (not available). 26032 26033 26034@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26035@node GDB/MI Breakpoint Commands 26036@section @sc{gdb/mi} Breakpoint Commands 26037 26038@cindex breakpoint commands for @sc{gdb/mi} 26039@cindex @sc{gdb/mi}, breakpoint commands 26040This section documents @sc{gdb/mi} commands for manipulating 26041breakpoints. 26042 26043@subheading The @code{-break-after} Command 26044@findex -break-after 26045 26046@subsubheading Synopsis 26047 26048@smallexample 26049 -break-after @var{number} @var{count} 26050@end smallexample 26051 26052The breakpoint number @var{number} is not in effect until it has been 26053hit @var{count} times. To see how this is reflected in the output of 26054the @samp{-break-list} command, see the description of the 26055@samp{-break-list} command below. 26056 26057@subsubheading @value{GDBN} Command 26058 26059The corresponding @value{GDBN} command is @samp{ignore}. 26060 26061@subsubheading Example 26062 26063@smallexample 26064(gdb) 26065-break-insert main 26066^done,bkpt=@{number="1",type="breakpoint",disp="keep", 26067enabled="y",addr="0x000100d0",func="main",file="hello.c", 26068fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 26069times="0"@} 26070(gdb) 26071-break-after 1 3 26072~ 26073^done 26074(gdb) 26075-break-list 26076^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 26077hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26078@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26079@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26080@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26081@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26082@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26083body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26084addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 26085line="5",thread-groups=["i1"],times="0",ignore="3"@}]@} 26086(gdb) 26087@end smallexample 26088 26089@ignore 26090@subheading The @code{-break-catch} Command 26091@findex -break-catch 26092@end ignore 26093 26094@subheading The @code{-break-commands} Command 26095@findex -break-commands 26096 26097@subsubheading Synopsis 26098 26099@smallexample 26100 -break-commands @var{number} [ @var{command1} ... @var{commandN} ] 26101@end smallexample 26102 26103Specifies the CLI commands that should be executed when breakpoint 26104@var{number} is hit. The parameters @var{command1} to @var{commandN} 26105are the commands. If no command is specified, any previously-set 26106commands are cleared. @xref{Break Commands}. Typical use of this 26107functionality is tracing a program, that is, printing of values of 26108some variables whenever breakpoint is hit and then continuing. 26109 26110@subsubheading @value{GDBN} Command 26111 26112The corresponding @value{GDBN} command is @samp{commands}. 26113 26114@subsubheading Example 26115 26116@smallexample 26117(gdb) 26118-break-insert main 26119^done,bkpt=@{number="1",type="breakpoint",disp="keep", 26120enabled="y",addr="0x000100d0",func="main",file="hello.c", 26121fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 26122times="0"@} 26123(gdb) 26124-break-commands 1 "print v" "continue" 26125^done 26126(gdb) 26127@end smallexample 26128 26129@subheading The @code{-break-condition} Command 26130@findex -break-condition 26131 26132@subsubheading Synopsis 26133 26134@smallexample 26135 -break-condition @var{number} @var{expr} 26136@end smallexample 26137 26138Breakpoint @var{number} will stop the program only if the condition in 26139@var{expr} is true. The condition becomes part of the 26140@samp{-break-list} output (see the description of the @samp{-break-list} 26141command below). 26142 26143@subsubheading @value{GDBN} Command 26144 26145The corresponding @value{GDBN} command is @samp{condition}. 26146 26147@subsubheading Example 26148 26149@smallexample 26150(gdb) 26151-break-condition 1 1 26152^done 26153(gdb) 26154-break-list 26155^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 26156hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26157@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26158@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26159@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26160@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26161@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26162body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26163addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 26164line="5",cond="1",thread-groups=["i1"],times="0",ignore="3"@}]@} 26165(gdb) 26166@end smallexample 26167 26168@subheading The @code{-break-delete} Command 26169@findex -break-delete 26170 26171@subsubheading Synopsis 26172 26173@smallexample 26174 -break-delete ( @var{breakpoint} )+ 26175@end smallexample 26176 26177Delete the breakpoint(s) whose number(s) are specified in the argument 26178list. This is obviously reflected in the breakpoint list. 26179 26180@subsubheading @value{GDBN} Command 26181 26182The corresponding @value{GDBN} command is @samp{delete}. 26183 26184@subsubheading Example 26185 26186@smallexample 26187(gdb) 26188-break-delete 1 26189^done 26190(gdb) 26191-break-list 26192^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 26193hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26194@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26195@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26196@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26197@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26198@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26199body=[]@} 26200(gdb) 26201@end smallexample 26202 26203@subheading The @code{-break-disable} Command 26204@findex -break-disable 26205 26206@subsubheading Synopsis 26207 26208@smallexample 26209 -break-disable ( @var{breakpoint} )+ 26210@end smallexample 26211 26212Disable the named @var{breakpoint}(s). The field @samp{enabled} in the 26213break list is now set to @samp{n} for the named @var{breakpoint}(s). 26214 26215@subsubheading @value{GDBN} Command 26216 26217The corresponding @value{GDBN} command is @samp{disable}. 26218 26219@subsubheading Example 26220 26221@smallexample 26222(gdb) 26223-break-disable 2 26224^done 26225(gdb) 26226-break-list 26227^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 26228hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26229@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26230@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26231@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26232@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26233@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26234body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n", 26235addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 26236line="5",thread-groups=["i1"],times="0"@}]@} 26237(gdb) 26238@end smallexample 26239 26240@subheading The @code{-break-enable} Command 26241@findex -break-enable 26242 26243@subsubheading Synopsis 26244 26245@smallexample 26246 -break-enable ( @var{breakpoint} )+ 26247@end smallexample 26248 26249Enable (previously disabled) @var{breakpoint}(s). 26250 26251@subsubheading @value{GDBN} Command 26252 26253The corresponding @value{GDBN} command is @samp{enable}. 26254 26255@subsubheading Example 26256 26257@smallexample 26258(gdb) 26259-break-enable 2 26260^done 26261(gdb) 26262-break-list 26263^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 26264hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26265@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26266@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26267@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26268@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26269@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26270body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 26271addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 26272line="5",thread-groups=["i1"],times="0"@}]@} 26273(gdb) 26274@end smallexample 26275 26276@subheading The @code{-break-info} Command 26277@findex -break-info 26278 26279@subsubheading Synopsis 26280 26281@smallexample 26282 -break-info @var{breakpoint} 26283@end smallexample 26284 26285@c REDUNDANT??? 26286Get information about a single breakpoint. 26287 26288The result is a table of breakpoints. @xref{GDB/MI Breakpoint 26289Information}, for details on the format of each breakpoint in the 26290table. 26291 26292@subsubheading @value{GDBN} Command 26293 26294The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}. 26295 26296@subsubheading Example 26297N.A. 26298 26299@subheading The @code{-break-insert} Command 26300@findex -break-insert 26301 26302@subsubheading Synopsis 26303 26304@smallexample 26305 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ] 26306 [ -c @var{condition} ] [ -i @var{ignore-count} ] 26307 [ -p @var{thread-id} ] [ @var{location} ] 26308@end smallexample 26309 26310@noindent 26311If specified, @var{location}, can be one of: 26312 26313@itemize @bullet 26314@item function 26315@c @item +offset 26316@c @item -offset 26317@c @item linenum 26318@item filename:linenum 26319@item filename:function 26320@item *address 26321@end itemize 26322 26323The possible optional parameters of this command are: 26324 26325@table @samp 26326@item -t 26327Insert a temporary breakpoint. 26328@item -h 26329Insert a hardware breakpoint. 26330@item -f 26331If @var{location} cannot be parsed (for example if it 26332refers to unknown files or functions), create a pending 26333breakpoint. Without this flag, @value{GDBN} will report 26334an error, and won't create a breakpoint, if @var{location} 26335cannot be parsed. 26336@item -d 26337Create a disabled breakpoint. 26338@item -a 26339Create a tracepoint. @xref{Tracepoints}. When this parameter 26340is used together with @samp{-h}, a fast tracepoint is created. 26341@item -c @var{condition} 26342Make the breakpoint conditional on @var{condition}. 26343@item -i @var{ignore-count} 26344Initialize the @var{ignore-count}. 26345@item -p @var{thread-id} 26346Restrict the breakpoint to the specified @var{thread-id}. 26347@end table 26348 26349@subsubheading Result 26350 26351@xref{GDB/MI Breakpoint Information}, for details on the format of the 26352resulting breakpoint. 26353 26354Note: this format is open to change. 26355@c An out-of-band breakpoint instead of part of the result? 26356 26357@subsubheading @value{GDBN} Command 26358 26359The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak}, 26360@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}. 26361 26362@subsubheading Example 26363 26364@smallexample 26365(gdb) 26366-break-insert main 26367^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c", 26368fullname="/home/foo/recursive2.c,line="4",thread-groups=["i1"], 26369times="0"@} 26370(gdb) 26371-break-insert -t foo 26372^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c", 26373fullname="/home/foo/recursive2.c,line="11",thread-groups=["i1"], 26374times="0"@} 26375(gdb) 26376-break-list 26377^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 26378hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26379@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26380@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26381@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26382@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26383@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26384body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26385addr="0x0001072c", func="main",file="recursive2.c", 26386fullname="/home/foo/recursive2.c,"line="4",thread-groups=["i1"], 26387times="0"@}, 26388bkpt=@{number="2",type="breakpoint",disp="del",enabled="y", 26389addr="0x00010774",func="foo",file="recursive2.c", 26390fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 26391times="0"@}]@} 26392(gdb) 26393@c -break-insert -r foo.* 26394@c ~int foo(int, int); 26395@c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c, 26396@c "fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 26397@c times="0"@} 26398@c (gdb) 26399@end smallexample 26400 26401@subheading The @code{-dprintf-insert} Command 26402@findex -dprintf-insert 26403 26404@subsubheading Synopsis 26405 26406@smallexample 26407 -dprintf-insert [ -t ] [ -f ] [ -d ] 26408 [ -c @var{condition} ] [ -i @var{ignore-count} ] 26409 [ -p @var{thread-id} ] [ @var{location} ] [ @var{format} ] 26410 [ @var{argument} ] 26411@end smallexample 26412 26413@noindent 26414If specified, @var{location}, can be one of: 26415 26416@itemize @bullet 26417@item @var{function} 26418@c @item +offset 26419@c @item -offset 26420@c @item @var{linenum} 26421@item @var{filename}:@var{linenum} 26422@item @var{filename}:function 26423@item *@var{address} 26424@end itemize 26425 26426The possible optional parameters of this command are: 26427 26428@table @samp 26429@item -t 26430Insert a temporary breakpoint. 26431@item -f 26432If @var{location} cannot be parsed (for example, if it 26433refers to unknown files or functions), create a pending 26434breakpoint. Without this flag, @value{GDBN} will report 26435an error, and won't create a breakpoint, if @var{location} 26436cannot be parsed. 26437@item -d 26438Create a disabled breakpoint. 26439@item -c @var{condition} 26440Make the breakpoint conditional on @var{condition}. 26441@item -i @var{ignore-count} 26442Set the ignore count of the breakpoint (@pxref{Conditions, ignore count}) 26443to @var{ignore-count}. 26444@item -p @var{thread-id} 26445Restrict the breakpoint to the specified @var{thread-id}. 26446@end table 26447 26448@subsubheading Result 26449 26450@xref{GDB/MI Breakpoint Information}, for details on the format of the 26451resulting breakpoint. 26452 26453@c An out-of-band breakpoint instead of part of the result? 26454 26455@subsubheading @value{GDBN} Command 26456 26457The corresponding @value{GDBN} command is @samp{dprintf}. 26458 26459@subsubheading Example 26460 26461@smallexample 26462(gdb) 264634-dprintf-insert foo "At foo entry\n" 264644^done,bkpt=@{number="1",type="dprintf",disp="keep",enabled="y", 26465addr="0x000000000040061b",func="foo",file="mi-dprintf.c", 26466fullname="mi-dprintf.c",line="25",thread-groups=["i1"], 26467times="0",script=@{"printf \"At foo entry\\n\"","continue"@}, 26468original-location="foo"@} 26469(gdb) 264705-dprintf-insert 26 "arg=%d, g=%d\n" arg g 264715^done,bkpt=@{number="2",type="dprintf",disp="keep",enabled="y", 26472addr="0x000000000040062a",func="foo",file="mi-dprintf.c", 26473fullname="mi-dprintf.c",line="26",thread-groups=["i1"], 26474times="0",script=@{"printf \"arg=%d, g=%d\\n\", arg, g","continue"@}, 26475original-location="mi-dprintf.c:26"@} 26476(gdb) 26477@end smallexample 26478 26479@subheading The @code{-break-list} Command 26480@findex -break-list 26481 26482@subsubheading Synopsis 26483 26484@smallexample 26485 -break-list 26486@end smallexample 26487 26488Displays the list of inserted breakpoints, showing the following fields: 26489 26490@table @samp 26491@item Number 26492number of the breakpoint 26493@item Type 26494type of the breakpoint: @samp{breakpoint} or @samp{watchpoint} 26495@item Disposition 26496should the breakpoint be deleted or disabled when it is hit: @samp{keep} 26497or @samp{nokeep} 26498@item Enabled 26499is the breakpoint enabled or no: @samp{y} or @samp{n} 26500@item Address 26501memory location at which the breakpoint is set 26502@item What 26503logical location of the breakpoint, expressed by function name, file 26504name, line number 26505@item Thread-groups 26506list of thread groups to which this breakpoint applies 26507@item Times 26508number of times the breakpoint has been hit 26509@end table 26510 26511If there are no breakpoints or watchpoints, the @code{BreakpointTable} 26512@code{body} field is an empty list. 26513 26514@subsubheading @value{GDBN} Command 26515 26516The corresponding @value{GDBN} command is @samp{info break}. 26517 26518@subsubheading Example 26519 26520@smallexample 26521(gdb) 26522-break-list 26523^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 26524hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26525@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26526@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26527@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26528@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26529@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26530body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26531addr="0x000100d0",func="main",file="hello.c",line="5",thread-groups=["i1"], 26532times="0"@}, 26533bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 26534addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c", 26535line="13",thread-groups=["i1"],times="0"@}]@} 26536(gdb) 26537@end smallexample 26538 26539Here's an example of the result when there are no breakpoints: 26540 26541@smallexample 26542(gdb) 26543-break-list 26544^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 26545hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26546@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26547@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26548@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26549@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26550@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26551body=[]@} 26552(gdb) 26553@end smallexample 26554 26555@subheading The @code{-break-passcount} Command 26556@findex -break-passcount 26557 26558@subsubheading Synopsis 26559 26560@smallexample 26561 -break-passcount @var{tracepoint-number} @var{passcount} 26562@end smallexample 26563 26564Set the passcount for tracepoint @var{tracepoint-number} to 26565@var{passcount}. If the breakpoint referred to by @var{tracepoint-number} 26566is not a tracepoint, error is emitted. This corresponds to CLI 26567command @samp{passcount}. 26568 26569@subheading The @code{-break-watch} Command 26570@findex -break-watch 26571 26572@subsubheading Synopsis 26573 26574@smallexample 26575 -break-watch [ -a | -r ] 26576@end smallexample 26577 26578Create a watchpoint. With the @samp{-a} option it will create an 26579@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a 26580read from or on a write to the memory location. With the @samp{-r} 26581option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will 26582trigger only when the memory location is accessed for reading. Without 26583either of the options, the watchpoint created is a regular watchpoint, 26584i.e., it will trigger when the memory location is accessed for writing. 26585@xref{Set Watchpoints, , Setting Watchpoints}. 26586 26587Note that @samp{-break-list} will report a single list of watchpoints and 26588breakpoints inserted. 26589 26590@subsubheading @value{GDBN} Command 26591 26592The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and 26593@samp{rwatch}. 26594 26595@subsubheading Example 26596 26597Setting a watchpoint on a variable in the @code{main} function: 26598 26599@smallexample 26600(gdb) 26601-break-watch x 26602^done,wpt=@{number="2",exp="x"@} 26603(gdb) 26604-exec-continue 26605^running 26606(gdb) 26607*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@}, 26608value=@{old="-268439212",new="55"@}, 26609frame=@{func="main",args=[],file="recursive2.c", 26610fullname="/home/foo/bar/recursive2.c",line="5"@} 26611(gdb) 26612@end smallexample 26613 26614Setting a watchpoint on a variable local to a function. @value{GDBN} will stop 26615the program execution twice: first for the variable changing value, then 26616for the watchpoint going out of scope. 26617 26618@smallexample 26619(gdb) 26620-break-watch C 26621^done,wpt=@{number="5",exp="C"@} 26622(gdb) 26623-exec-continue 26624^running 26625(gdb) 26626*stopped,reason="watchpoint-trigger", 26627wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@}, 26628frame=@{func="callee4",args=[], 26629file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26630fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@} 26631(gdb) 26632-exec-continue 26633^running 26634(gdb) 26635*stopped,reason="watchpoint-scope",wpnum="5", 26636frame=@{func="callee3",args=[@{name="strarg", 26637value="0x11940 \"A string argument.\""@}], 26638file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26639fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} 26640(gdb) 26641@end smallexample 26642 26643Listing breakpoints and watchpoints, at different points in the program 26644execution. Note that once the watchpoint goes out of scope, it is 26645deleted. 26646 26647@smallexample 26648(gdb) 26649-break-watch C 26650^done,wpt=@{number="2",exp="C"@} 26651(gdb) 26652-break-list 26653^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 26654hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26655@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26656@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26657@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26658@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26659@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26660body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26661addr="0x00010734",func="callee4", 26662file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26663fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",thread-groups=["i1"], 26664times="1"@}, 26665bkpt=@{number="2",type="watchpoint",disp="keep", 26666enabled="y",addr="",what="C",thread-groups=["i1"],times="0"@}]@} 26667(gdb) 26668-exec-continue 26669^running 26670(gdb) 26671*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@}, 26672value=@{old="-276895068",new="3"@}, 26673frame=@{func="callee4",args=[], 26674file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26675fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@} 26676(gdb) 26677-break-list 26678^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 26679hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26680@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26681@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26682@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26683@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26684@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26685body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26686addr="0x00010734",func="callee4", 26687file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26688fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",thread-groups=["i1"], 26689times="1"@}, 26690bkpt=@{number="2",type="watchpoint",disp="keep", 26691enabled="y",addr="",what="C",thread-groups=["i1"],times="-5"@}]@} 26692(gdb) 26693-exec-continue 26694^running 26695^done,reason="watchpoint-scope",wpnum="2", 26696frame=@{func="callee3",args=[@{name="strarg", 26697value="0x11940 \"A string argument.\""@}], 26698file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26699fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} 26700(gdb) 26701-break-list 26702^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 26703hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 26704@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 26705@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 26706@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 26707@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 26708@{width="40",alignment="2",col_name="what",colhdr="What"@}], 26709body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 26710addr="0x00010734",func="callee4", 26711file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 26712fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 26713thread-groups=["i1"],times="1"@}]@} 26714(gdb) 26715@end smallexample 26716 26717 26718@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26719@node GDB/MI Catchpoint Commands 26720@section @sc{gdb/mi} Catchpoint Commands 26721 26722This section documents @sc{gdb/mi} commands for manipulating 26723catchpoints. 26724 26725@menu 26726* Shared Library GDB/MI Catchpoint Commands:: 26727* Ada Exception GDB/MI Catchpoint Commands:: 26728@end menu 26729 26730@node Shared Library GDB/MI Catchpoint Commands 26731@subsection Shared Library @sc{gdb/mi} Catchpoints 26732 26733@subheading The @code{-catch-load} Command 26734@findex -catch-load 26735 26736@subsubheading Synopsis 26737 26738@smallexample 26739 -catch-load [ -t ] [ -d ] @var{regexp} 26740@end smallexample 26741 26742Add a catchpoint for library load events. If the @samp{-t} option is used, 26743the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 26744Breakpoints}). If the @samp{-d} option is used, the catchpoint is created 26745in a disabled state. The @samp{regexp} argument is a regular 26746expression used to match the name of the loaded library. 26747 26748 26749@subsubheading @value{GDBN} Command 26750 26751The corresponding @value{GDBN} command is @samp{catch load}. 26752 26753@subsubheading Example 26754 26755@smallexample 26756-catch-load -t foo.so 26757^done,bkpt=@{number="1",type="catchpoint",disp="del",enabled="y", 26758what="load of library matching foo.so",catch-type="load",times="0"@} 26759(gdb) 26760@end smallexample 26761 26762 26763@subheading The @code{-catch-unload} Command 26764@findex -catch-unload 26765 26766@subsubheading Synopsis 26767 26768@smallexample 26769 -catch-unload [ -t ] [ -d ] @var{regexp} 26770@end smallexample 26771 26772Add a catchpoint for library unload events. If the @samp{-t} option is 26773used, the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 26774Breakpoints}). If the @samp{-d} option is used, the catchpoint is 26775created in a disabled state. The @samp{regexp} argument is a regular 26776expression used to match the name of the unloaded library. 26777 26778@subsubheading @value{GDBN} Command 26779 26780The corresponding @value{GDBN} command is @samp{catch unload}. 26781 26782@subsubheading Example 26783 26784@smallexample 26785-catch-unload -d bar.so 26786^done,bkpt=@{number="2",type="catchpoint",disp="keep",enabled="n", 26787what="load of library matching bar.so",catch-type="unload",times="0"@} 26788(gdb) 26789@end smallexample 26790 26791@node Ada Exception GDB/MI Catchpoint Commands 26792@subsection Ada Exception @sc{gdb/mi} Catchpoints 26793 26794The following @sc{gdb/mi} commands can be used to create catchpoints 26795that stop the execution when Ada exceptions are being raised. 26796 26797@subheading The @code{-catch-assert} Command 26798@findex -catch-assert 26799 26800@subsubheading Synopsis 26801 26802@smallexample 26803 -catch-assert [ -c @var{condition}] [ -d ] [ -t ] 26804@end smallexample 26805 26806Add a catchpoint for failed Ada assertions. 26807 26808The possible optional parameters for this command are: 26809 26810@table @samp 26811@item -c @var{condition} 26812Make the catchpoint conditional on @var{condition}. 26813@item -d 26814Create a disabled catchpoint. 26815@item -t 26816Create a temporary catchpoint. 26817@end table 26818 26819@subsubheading @value{GDBN} Command 26820 26821The corresponding @value{GDBN} command is @samp{catch assert}. 26822 26823@subsubheading Example 26824 26825@smallexample 26826-catch-assert 26827^done,bkptno="5",bkpt=@{number="5",type="breakpoint",disp="keep", 26828enabled="y",addr="0x0000000000404888",what="failed Ada assertions", 26829thread-groups=["i1"],times="0", 26830original-location="__gnat_debug_raise_assert_failure"@} 26831(gdb) 26832@end smallexample 26833 26834@subheading The @code{-catch-exception} Command 26835@findex -catch-exception 26836 26837@subsubheading Synopsis 26838 26839@smallexample 26840 -catch-exception [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ] 26841 [ -t ] [ -u ] 26842@end smallexample 26843 26844Add a catchpoint stopping when Ada exceptions are raised. 26845By default, the command stops the program when any Ada exception 26846gets raised. But it is also possible, by using some of the 26847optional parameters described below, to create more selective 26848catchpoints. 26849 26850The possible optional parameters for this command are: 26851 26852@table @samp 26853@item -c @var{condition} 26854Make the catchpoint conditional on @var{condition}. 26855@item -d 26856Create a disabled catchpoint. 26857@item -e @var{exception-name} 26858Only stop when @var{exception-name} is raised. This option cannot 26859be used combined with @samp{-u}. 26860@item -t 26861Create a temporary catchpoint. 26862@item -u 26863Stop only when an unhandled exception gets raised. This option 26864cannot be used combined with @samp{-e}. 26865@end table 26866 26867@subsubheading @value{GDBN} Command 26868 26869The corresponding @value{GDBN} commands are @samp{catch exception} 26870and @samp{catch exception unhandled}. 26871 26872@subsubheading Example 26873 26874@smallexample 26875-catch-exception -e Program_Error 26876^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep", 26877enabled="y",addr="0x0000000000404874", 26878what="`Program_Error' Ada exception", thread-groups=["i1"], 26879times="0",original-location="__gnat_debug_raise_exception"@} 26880(gdb) 26881@end smallexample 26882 26883@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26884@node GDB/MI Program Context 26885@section @sc{gdb/mi} Program Context 26886 26887@subheading The @code{-exec-arguments} Command 26888@findex -exec-arguments 26889 26890 26891@subsubheading Synopsis 26892 26893@smallexample 26894 -exec-arguments @var{args} 26895@end smallexample 26896 26897Set the inferior program arguments, to be used in the next 26898@samp{-exec-run}. 26899 26900@subsubheading @value{GDBN} Command 26901 26902The corresponding @value{GDBN} command is @samp{set args}. 26903 26904@subsubheading Example 26905 26906@smallexample 26907(gdb) 26908-exec-arguments -v word 26909^done 26910(gdb) 26911@end smallexample 26912 26913 26914@ignore 26915@subheading The @code{-exec-show-arguments} Command 26916@findex -exec-show-arguments 26917 26918@subsubheading Synopsis 26919 26920@smallexample 26921 -exec-show-arguments 26922@end smallexample 26923 26924Print the arguments of the program. 26925 26926@subsubheading @value{GDBN} Command 26927 26928The corresponding @value{GDBN} command is @samp{show args}. 26929 26930@subsubheading Example 26931N.A. 26932@end ignore 26933 26934 26935@subheading The @code{-environment-cd} Command 26936@findex -environment-cd 26937 26938@subsubheading Synopsis 26939 26940@smallexample 26941 -environment-cd @var{pathdir} 26942@end smallexample 26943 26944Set @value{GDBN}'s working directory. 26945 26946@subsubheading @value{GDBN} Command 26947 26948The corresponding @value{GDBN} command is @samp{cd}. 26949 26950@subsubheading Example 26951 26952@smallexample 26953(gdb) 26954-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 26955^done 26956(gdb) 26957@end smallexample 26958 26959 26960@subheading The @code{-environment-directory} Command 26961@findex -environment-directory 26962 26963@subsubheading Synopsis 26964 26965@smallexample 26966 -environment-directory [ -r ] [ @var{pathdir} ]+ 26967@end smallexample 26968 26969Add directories @var{pathdir} to beginning of search path for source files. 26970If the @samp{-r} option is used, the search path is reset to the default 26971search path. If directories @var{pathdir} are supplied in addition to the 26972@samp{-r} option, the search path is first reset and then addition 26973occurs as normal. 26974Multiple directories may be specified, separated by blanks. Specifying 26975multiple directories in a single command 26976results in the directories added to the beginning of the 26977search path in the same order they were presented in the command. 26978If blanks are needed as 26979part of a directory name, double-quotes should be used around 26980the name. In the command output, the path will show up separated 26981by the system directory-separator character. The directory-separator 26982character must not be used 26983in any directory name. 26984If no directories are specified, the current search path is displayed. 26985 26986@subsubheading @value{GDBN} Command 26987 26988The corresponding @value{GDBN} command is @samp{dir}. 26989 26990@subsubheading Example 26991 26992@smallexample 26993(gdb) 26994-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 26995^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 26996(gdb) 26997-environment-directory "" 26998^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 26999(gdb) 27000-environment-directory -r /home/jjohnstn/src/gdb /usr/src 27001^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd" 27002(gdb) 27003-environment-directory -r 27004^done,source-path="$cdir:$cwd" 27005(gdb) 27006@end smallexample 27007 27008 27009@subheading The @code{-environment-path} Command 27010@findex -environment-path 27011 27012@subsubheading Synopsis 27013 27014@smallexample 27015 -environment-path [ -r ] [ @var{pathdir} ]+ 27016@end smallexample 27017 27018Add directories @var{pathdir} to beginning of search path for object files. 27019If the @samp{-r} option is used, the search path is reset to the original 27020search path that existed at gdb start-up. If directories @var{pathdir} are 27021supplied in addition to the 27022@samp{-r} option, the search path is first reset and then addition 27023occurs as normal. 27024Multiple directories may be specified, separated by blanks. Specifying 27025multiple directories in a single command 27026results in the directories added to the beginning of the 27027search path in the same order they were presented in the command. 27028If blanks are needed as 27029part of a directory name, double-quotes should be used around 27030the name. In the command output, the path will show up separated 27031by the system directory-separator character. The directory-separator 27032character must not be used 27033in any directory name. 27034If no directories are specified, the current path is displayed. 27035 27036 27037@subsubheading @value{GDBN} Command 27038 27039The corresponding @value{GDBN} command is @samp{path}. 27040 27041@subsubheading Example 27042 27043@smallexample 27044(gdb) 27045-environment-path 27046^done,path="/usr/bin" 27047(gdb) 27048-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin 27049^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin" 27050(gdb) 27051-environment-path -r /usr/local/bin 27052^done,path="/usr/local/bin:/usr/bin" 27053(gdb) 27054@end smallexample 27055 27056 27057@subheading The @code{-environment-pwd} Command 27058@findex -environment-pwd 27059 27060@subsubheading Synopsis 27061 27062@smallexample 27063 -environment-pwd 27064@end smallexample 27065 27066Show the current working directory. 27067 27068@subsubheading @value{GDBN} Command 27069 27070The corresponding @value{GDBN} command is @samp{pwd}. 27071 27072@subsubheading Example 27073 27074@smallexample 27075(gdb) 27076-environment-pwd 27077^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb" 27078(gdb) 27079@end smallexample 27080 27081@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27082@node GDB/MI Thread Commands 27083@section @sc{gdb/mi} Thread Commands 27084 27085 27086@subheading The @code{-thread-info} Command 27087@findex -thread-info 27088 27089@subsubheading Synopsis 27090 27091@smallexample 27092 -thread-info [ @var{thread-id} ] 27093@end smallexample 27094 27095Reports information about either a specific thread, if 27096the @var{thread-id} parameter is present, or about all 27097threads. When printing information about all threads, 27098also reports the current thread. 27099 27100@subsubheading @value{GDBN} Command 27101 27102The @samp{info thread} command prints the same information 27103about all threads. 27104 27105@subsubheading Result 27106 27107The result is a list of threads. The following attributes are 27108defined for a given thread: 27109 27110@table @samp 27111@item current 27112This field exists only for the current thread. It has the value @samp{*}. 27113 27114@item id 27115The identifier that @value{GDBN} uses to refer to the thread. 27116 27117@item target-id 27118The identifier that the target uses to refer to the thread. 27119 27120@item details 27121Extra information about the thread, in a target-specific format. This 27122field is optional. 27123 27124@item name 27125The name of the thread. If the user specified a name using the 27126@code{thread name} command, then this name is given. Otherwise, if 27127@value{GDBN} can extract the thread name from the target, then that 27128name is given. If @value{GDBN} cannot find the thread name, then this 27129field is omitted. 27130 27131@item frame 27132The stack frame currently executing in the thread. 27133 27134@item state 27135The thread's state. The @samp{state} field may have the following 27136values: 27137 27138@table @code 27139@item stopped 27140The thread is stopped. Frame information is available for stopped 27141threads. 27142 27143@item running 27144The thread is running. There's no frame information for running 27145threads. 27146 27147@end table 27148 27149@item core 27150If @value{GDBN} can find the CPU core on which this thread is running, 27151then this field is the core identifier. This field is optional. 27152 27153@end table 27154 27155@subsubheading Example 27156 27157@smallexample 27158-thread-info 27159^done,threads=[ 27160@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 27161 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall", 27162 args=[]@},state="running"@}, 27163@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 27164 frame=@{level="0",addr="0x0804891f",func="foo", 27165 args=[@{name="i",value="10"@}], 27166 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@}, 27167 state="running"@}], 27168current-thread-id="1" 27169(gdb) 27170@end smallexample 27171 27172@subheading The @code{-thread-list-ids} Command 27173@findex -thread-list-ids 27174 27175@subsubheading Synopsis 27176 27177@smallexample 27178 -thread-list-ids 27179@end smallexample 27180 27181Produces a list of the currently known @value{GDBN} thread ids. At the 27182end of the list it also prints the total number of such threads. 27183 27184This command is retained for historical reasons, the 27185@code{-thread-info} command should be used instead. 27186 27187@subsubheading @value{GDBN} Command 27188 27189Part of @samp{info threads} supplies the same information. 27190 27191@subsubheading Example 27192 27193@smallexample 27194(gdb) 27195-thread-list-ids 27196^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 27197current-thread-id="1",number-of-threads="3" 27198(gdb) 27199@end smallexample 27200 27201 27202@subheading The @code{-thread-select} Command 27203@findex -thread-select 27204 27205@subsubheading Synopsis 27206 27207@smallexample 27208 -thread-select @var{threadnum} 27209@end smallexample 27210 27211Make @var{threadnum} the current thread. It prints the number of the new 27212current thread, and the topmost frame for that thread. 27213 27214This command is deprecated in favor of explicitly using the 27215@samp{--thread} option to each command. 27216 27217@subsubheading @value{GDBN} Command 27218 27219The corresponding @value{GDBN} command is @samp{thread}. 27220 27221@subsubheading Example 27222 27223@smallexample 27224(gdb) 27225-exec-next 27226^running 27227(gdb) 27228*stopped,reason="end-stepping-range",thread-id="2",line="187", 27229file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c" 27230(gdb) 27231-thread-list-ids 27232^done, 27233thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 27234number-of-threads="3" 27235(gdb) 27236-thread-select 3 27237^done,new-thread-id="3", 27238frame=@{level="0",func="vprintf", 27239args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@}, 27240@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@} 27241(gdb) 27242@end smallexample 27243 27244@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27245@node GDB/MI Ada Tasking Commands 27246@section @sc{gdb/mi} Ada Tasking Commands 27247 27248@subheading The @code{-ada-task-info} Command 27249@findex -ada-task-info 27250 27251@subsubheading Synopsis 27252 27253@smallexample 27254 -ada-task-info [ @var{task-id} ] 27255@end smallexample 27256 27257Reports information about either a specific Ada task, if the 27258@var{task-id} parameter is present, or about all Ada tasks. 27259 27260@subsubheading @value{GDBN} Command 27261 27262The @samp{info tasks} command prints the same information 27263about all Ada tasks (@pxref{Ada Tasks}). 27264 27265@subsubheading Result 27266 27267The result is a table of Ada tasks. The following columns are 27268defined for each Ada task: 27269 27270@table @samp 27271@item current 27272This field exists only for the current thread. It has the value @samp{*}. 27273 27274@item id 27275The identifier that @value{GDBN} uses to refer to the Ada task. 27276 27277@item task-id 27278The identifier that the target uses to refer to the Ada task. 27279 27280@item thread-id 27281The identifier of the thread corresponding to the Ada task. 27282 27283This field should always exist, as Ada tasks are always implemented 27284on top of a thread. But if @value{GDBN} cannot find this corresponding 27285thread for any reason, the field is omitted. 27286 27287@item parent-id 27288This field exists only when the task was created by another task. 27289In this case, it provides the ID of the parent task. 27290 27291@item priority 27292The base priority of the task. 27293 27294@item state 27295The current state of the task. For a detailed description of the 27296possible states, see @ref{Ada Tasks}. 27297 27298@item name 27299The name of the task. 27300 27301@end table 27302 27303@subsubheading Example 27304 27305@smallexample 27306-ada-task-info 27307^done,tasks=@{nr_rows="3",nr_cols="8", 27308hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@}, 27309@{width="3",alignment="1",col_name="id",colhdr="ID"@}, 27310@{width="9",alignment="1",col_name="task-id",colhdr="TID"@}, 27311@{width="4",alignment="1",col_name="thread-id",colhdr=""@}, 27312@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@}, 27313@{width="3",alignment="1",col_name="priority",colhdr="Pri"@}, 27314@{width="22",alignment="-1",col_name="state",colhdr="State"@}, 27315@{width="1",alignment="2",col_name="name",colhdr="Name"@}], 27316body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48", 27317state="Child Termination Wait",name="main_task"@}]@} 27318(gdb) 27319@end smallexample 27320 27321@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27322@node GDB/MI Program Execution 27323@section @sc{gdb/mi} Program Execution 27324 27325These are the asynchronous commands which generate the out-of-band 27326record @samp{*stopped}. Currently @value{GDBN} only really executes 27327asynchronously with remote targets and this interaction is mimicked in 27328other cases. 27329 27330@subheading The @code{-exec-continue} Command 27331@findex -exec-continue 27332 27333@subsubheading Synopsis 27334 27335@smallexample 27336 -exec-continue [--reverse] [--all|--thread-group N] 27337@end smallexample 27338 27339Resumes the execution of the inferior program, which will continue 27340to execute until it reaches a debugger stop event. If the 27341@samp{--reverse} option is specified, execution resumes in reverse until 27342it reaches a stop event. Stop events may include 27343@itemize @bullet 27344@item 27345breakpoints or watchpoints 27346@item 27347signals or exceptions 27348@item 27349the end of the process (or its beginning under @samp{--reverse}) 27350@item 27351the end or beginning of a replay log if one is being used. 27352@end itemize 27353In all-stop mode (@pxref{All-Stop 27354Mode}), may resume only one thread, or all threads, depending on the 27355value of the @samp{scheduler-locking} variable. If @samp{--all} is 27356specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is 27357ignored in all-stop mode. If the @samp{--thread-group} options is 27358specified, then all threads in that thread group are resumed. 27359 27360@subsubheading @value{GDBN} Command 27361 27362The corresponding @value{GDBN} corresponding is @samp{continue}. 27363 27364@subsubheading Example 27365 27366@smallexample 27367-exec-continue 27368^running 27369(gdb) 27370@@Hello world 27371*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{ 27372func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c", 27373line="13"@} 27374(gdb) 27375@end smallexample 27376 27377 27378@subheading The @code{-exec-finish} Command 27379@findex -exec-finish 27380 27381@subsubheading Synopsis 27382 27383@smallexample 27384 -exec-finish [--reverse] 27385@end smallexample 27386 27387Resumes the execution of the inferior program until the current 27388function is exited. Displays the results returned by the function. 27389If the @samp{--reverse} option is specified, resumes the reverse 27390execution of the inferior program until the point where current 27391function was called. 27392 27393@subsubheading @value{GDBN} Command 27394 27395The corresponding @value{GDBN} command is @samp{finish}. 27396 27397@subsubheading Example 27398 27399Function returning @code{void}. 27400 27401@smallexample 27402-exec-finish 27403^running 27404(gdb) 27405@@hello from foo 27406*stopped,reason="function-finished",frame=@{func="main",args=[], 27407file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@} 27408(gdb) 27409@end smallexample 27410 27411Function returning other than @code{void}. The name of the internal 27412@value{GDBN} variable storing the result is printed, together with the 27413value itself. 27414 27415@smallexample 27416-exec-finish 27417^running 27418(gdb) 27419*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo", 27420args=[@{name="a",value="1"],@{name="b",value="9"@}@}, 27421file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 27422gdb-result-var="$1",return-value="0" 27423(gdb) 27424@end smallexample 27425 27426 27427@subheading The @code{-exec-interrupt} Command 27428@findex -exec-interrupt 27429 27430@subsubheading Synopsis 27431 27432@smallexample 27433 -exec-interrupt [--all|--thread-group N] 27434@end smallexample 27435 27436Interrupts the background execution of the target. Note how the token 27437associated with the stop message is the one for the execution command 27438that has been interrupted. The token for the interrupt itself only 27439appears in the @samp{^done} output. If the user is trying to 27440interrupt a non-running program, an error message will be printed. 27441 27442Note that when asynchronous execution is enabled, this command is 27443asynchronous just like other execution commands. That is, first the 27444@samp{^done} response will be printed, and the target stop will be 27445reported after that using the @samp{*stopped} notification. 27446 27447In non-stop mode, only the context thread is interrupted by default. 27448All threads (in all inferiors) will be interrupted if the 27449@samp{--all} option is specified. If the @samp{--thread-group} 27450option is specified, all threads in that group will be interrupted. 27451 27452@subsubheading @value{GDBN} Command 27453 27454The corresponding @value{GDBN} command is @samp{interrupt}. 27455 27456@subsubheading Example 27457 27458@smallexample 27459(gdb) 27460111-exec-continue 27461111^running 27462 27463(gdb) 27464222-exec-interrupt 27465222^done 27466(gdb) 27467111*stopped,signal-name="SIGINT",signal-meaning="Interrupt", 27468frame=@{addr="0x00010140",func="foo",args=[],file="try.c", 27469fullname="/home/foo/bar/try.c",line="13"@} 27470(gdb) 27471 27472(gdb) 27473-exec-interrupt 27474^error,msg="mi_cmd_exec_interrupt: Inferior not executing." 27475(gdb) 27476@end smallexample 27477 27478@subheading The @code{-exec-jump} Command 27479@findex -exec-jump 27480 27481@subsubheading Synopsis 27482 27483@smallexample 27484 -exec-jump @var{location} 27485@end smallexample 27486 27487Resumes execution of the inferior program at the location specified by 27488parameter. @xref{Specify Location}, for a description of the 27489different forms of @var{location}. 27490 27491@subsubheading @value{GDBN} Command 27492 27493The corresponding @value{GDBN} command is @samp{jump}. 27494 27495@subsubheading Example 27496 27497@smallexample 27498-exec-jump foo.c:10 27499*running,thread-id="all" 27500^running 27501@end smallexample 27502 27503 27504@subheading The @code{-exec-next} Command 27505@findex -exec-next 27506 27507@subsubheading Synopsis 27508 27509@smallexample 27510 -exec-next [--reverse] 27511@end smallexample 27512 27513Resumes execution of the inferior program, stopping when the beginning 27514of the next source line is reached. 27515 27516If the @samp{--reverse} option is specified, resumes reverse execution 27517of the inferior program, stopping at the beginning of the previous 27518source line. If you issue this command on the first line of a 27519function, it will take you back to the caller of that function, to the 27520source line where the function was called. 27521 27522 27523@subsubheading @value{GDBN} Command 27524 27525The corresponding @value{GDBN} command is @samp{next}. 27526 27527@subsubheading Example 27528 27529@smallexample 27530-exec-next 27531^running 27532(gdb) 27533*stopped,reason="end-stepping-range",line="8",file="hello.c" 27534(gdb) 27535@end smallexample 27536 27537 27538@subheading The @code{-exec-next-instruction} Command 27539@findex -exec-next-instruction 27540 27541@subsubheading Synopsis 27542 27543@smallexample 27544 -exec-next-instruction [--reverse] 27545@end smallexample 27546 27547Executes one machine instruction. If the instruction is a function 27548call, continues until the function returns. If the program stops at an 27549instruction in the middle of a source line, the address will be 27550printed as well. 27551 27552If the @samp{--reverse} option is specified, resumes reverse execution 27553of the inferior program, stopping at the previous instruction. If the 27554previously executed instruction was a return from another function, 27555it will continue to execute in reverse until the call to that function 27556(from the current stack frame) is reached. 27557 27558@subsubheading @value{GDBN} Command 27559 27560The corresponding @value{GDBN} command is @samp{nexti}. 27561 27562@subsubheading Example 27563 27564@smallexample 27565(gdb) 27566-exec-next-instruction 27567^running 27568 27569(gdb) 27570*stopped,reason="end-stepping-range", 27571addr="0x000100d4",line="5",file="hello.c" 27572(gdb) 27573@end smallexample 27574 27575 27576@subheading The @code{-exec-return} Command 27577@findex -exec-return 27578 27579@subsubheading Synopsis 27580 27581@smallexample 27582 -exec-return 27583@end smallexample 27584 27585Makes current function return immediately. Doesn't execute the inferior. 27586Displays the new current frame. 27587 27588@subsubheading @value{GDBN} Command 27589 27590The corresponding @value{GDBN} command is @samp{return}. 27591 27592@subsubheading Example 27593 27594@smallexample 27595(gdb) 27596200-break-insert callee4 27597200^done,bkpt=@{number="1",addr="0x00010734", 27598file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@} 27599(gdb) 27600000-exec-run 27601000^running 27602(gdb) 27603000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 27604frame=@{func="callee4",args=[], 27605file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27606fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@} 27607(gdb) 27608205-break-delete 27609205^done 27610(gdb) 27611111-exec-return 27612111^done,frame=@{level="0",func="callee3", 27613args=[@{name="strarg", 27614value="0x11940 \"A string argument.\""@}], 27615file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27616fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@} 27617(gdb) 27618@end smallexample 27619 27620 27621@subheading The @code{-exec-run} Command 27622@findex -exec-run 27623 27624@subsubheading Synopsis 27625 27626@smallexample 27627 -exec-run [ --all | --thread-group N ] [ --start ] 27628@end smallexample 27629 27630Starts execution of the inferior from the beginning. The inferior 27631executes until either a breakpoint is encountered or the program 27632exits. In the latter case the output will include an exit code, if 27633the program has exited exceptionally. 27634 27635When neither the @samp{--all} nor the @samp{--thread-group} option 27636is specified, the current inferior is started. If the 27637@samp{--thread-group} option is specified, it should refer to a thread 27638group of type @samp{process}, and that thread group will be started. 27639If the @samp{--all} option is specified, then all inferiors will be started. 27640 27641Using the @samp{--start} option instructs the debugger to stop 27642the execution at the start of the inferior's main subprogram, 27643following the same behavior as the @code{start} command 27644(@pxref{Starting}). 27645 27646@subsubheading @value{GDBN} Command 27647 27648The corresponding @value{GDBN} command is @samp{run}. 27649 27650@subsubheading Examples 27651 27652@smallexample 27653(gdb) 27654-break-insert main 27655^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@} 27656(gdb) 27657-exec-run 27658^running 27659(gdb) 27660*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 27661frame=@{func="main",args=[],file="recursive2.c", 27662fullname="/home/foo/bar/recursive2.c",line="4"@} 27663(gdb) 27664@end smallexample 27665 27666@noindent 27667Program exited normally: 27668 27669@smallexample 27670(gdb) 27671-exec-run 27672^running 27673(gdb) 27674x = 55 27675*stopped,reason="exited-normally" 27676(gdb) 27677@end smallexample 27678 27679@noindent 27680Program exited exceptionally: 27681 27682@smallexample 27683(gdb) 27684-exec-run 27685^running 27686(gdb) 27687x = 55 27688*stopped,reason="exited",exit-code="01" 27689(gdb) 27690@end smallexample 27691 27692Another way the program can terminate is if it receives a signal such as 27693@code{SIGINT}. In this case, @sc{gdb/mi} displays this: 27694 27695@smallexample 27696(gdb) 27697*stopped,reason="exited-signalled",signal-name="SIGINT", 27698signal-meaning="Interrupt" 27699@end smallexample 27700 27701 27702@c @subheading -exec-signal 27703 27704 27705@subheading The @code{-exec-step} Command 27706@findex -exec-step 27707 27708@subsubheading Synopsis 27709 27710@smallexample 27711 -exec-step [--reverse] 27712@end smallexample 27713 27714Resumes execution of the inferior program, stopping when the beginning 27715of the next source line is reached, if the next source line is not a 27716function call. If it is, stop at the first instruction of the called 27717function. If the @samp{--reverse} option is specified, resumes reverse 27718execution of the inferior program, stopping at the beginning of the 27719previously executed source line. 27720 27721@subsubheading @value{GDBN} Command 27722 27723The corresponding @value{GDBN} command is @samp{step}. 27724 27725@subsubheading Example 27726 27727Stepping into a function: 27728 27729@smallexample 27730-exec-step 27731^running 27732(gdb) 27733*stopped,reason="end-stepping-range", 27734frame=@{func="foo",args=[@{name="a",value="10"@}, 27735@{name="b",value="0"@}],file="recursive2.c", 27736fullname="/home/foo/bar/recursive2.c",line="11"@} 27737(gdb) 27738@end smallexample 27739 27740Regular stepping: 27741 27742@smallexample 27743-exec-step 27744^running 27745(gdb) 27746*stopped,reason="end-stepping-range",line="14",file="recursive2.c" 27747(gdb) 27748@end smallexample 27749 27750 27751@subheading The @code{-exec-step-instruction} Command 27752@findex -exec-step-instruction 27753 27754@subsubheading Synopsis 27755 27756@smallexample 27757 -exec-step-instruction [--reverse] 27758@end smallexample 27759 27760Resumes the inferior which executes one machine instruction. If the 27761@samp{--reverse} option is specified, resumes reverse execution of the 27762inferior program, stopping at the previously executed instruction. 27763The output, once @value{GDBN} has stopped, will vary depending on 27764whether we have stopped in the middle of a source line or not. In the 27765former case, the address at which the program stopped will be printed 27766as well. 27767 27768@subsubheading @value{GDBN} Command 27769 27770The corresponding @value{GDBN} command is @samp{stepi}. 27771 27772@subsubheading Example 27773 27774@smallexample 27775(gdb) 27776-exec-step-instruction 27777^running 27778 27779(gdb) 27780*stopped,reason="end-stepping-range", 27781frame=@{func="foo",args=[],file="try.c", 27782fullname="/home/foo/bar/try.c",line="10"@} 27783(gdb) 27784-exec-step-instruction 27785^running 27786 27787(gdb) 27788*stopped,reason="end-stepping-range", 27789frame=@{addr="0x000100f4",func="foo",args=[],file="try.c", 27790fullname="/home/foo/bar/try.c",line="10"@} 27791(gdb) 27792@end smallexample 27793 27794 27795@subheading The @code{-exec-until} Command 27796@findex -exec-until 27797 27798@subsubheading Synopsis 27799 27800@smallexample 27801 -exec-until [ @var{location} ] 27802@end smallexample 27803 27804Executes the inferior until the @var{location} specified in the 27805argument is reached. If there is no argument, the inferior executes 27806until a source line greater than the current one is reached. The 27807reason for stopping in this case will be @samp{location-reached}. 27808 27809@subsubheading @value{GDBN} Command 27810 27811The corresponding @value{GDBN} command is @samp{until}. 27812 27813@subsubheading Example 27814 27815@smallexample 27816(gdb) 27817-exec-until recursive2.c:6 27818^running 27819(gdb) 27820x = 55 27821*stopped,reason="location-reached",frame=@{func="main",args=[], 27822file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@} 27823(gdb) 27824@end smallexample 27825 27826@ignore 27827@subheading -file-clear 27828Is this going away???? 27829@end ignore 27830 27831@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27832@node GDB/MI Stack Manipulation 27833@section @sc{gdb/mi} Stack Manipulation Commands 27834 27835@subheading The @code{-enable-frame-filters} Command 27836@findex -enable-frame-filters 27837 27838@smallexample 27839-enable-frame-filters 27840@end smallexample 27841 27842@value{GDBN} allows Python-based frame filters to affect the output of 27843the MI commands relating to stack traces. As there is no way to 27844implement this in a fully backward-compatible way, a front end must 27845request that this functionality be enabled. 27846 27847Once enabled, this feature cannot be disabled. 27848 27849Note that if Python support has not been compiled into @value{GDBN}, 27850this command will still succeed (and do nothing). 27851 27852@subheading The @code{-stack-info-frame} Command 27853@findex -stack-info-frame 27854 27855@subsubheading Synopsis 27856 27857@smallexample 27858 -stack-info-frame 27859@end smallexample 27860 27861Get info on the selected frame. 27862 27863@subsubheading @value{GDBN} Command 27864 27865The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame} 27866(without arguments). 27867 27868@subsubheading Example 27869 27870@smallexample 27871(gdb) 27872-stack-info-frame 27873^done,frame=@{level="1",addr="0x0001076c",func="callee3", 27874file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27875fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@} 27876(gdb) 27877@end smallexample 27878 27879@subheading The @code{-stack-info-depth} Command 27880@findex -stack-info-depth 27881 27882@subsubheading Synopsis 27883 27884@smallexample 27885 -stack-info-depth [ @var{max-depth} ] 27886@end smallexample 27887 27888Return the depth of the stack. If the integer argument @var{max-depth} 27889is specified, do not count beyond @var{max-depth} frames. 27890 27891@subsubheading @value{GDBN} Command 27892 27893There's no equivalent @value{GDBN} command. 27894 27895@subsubheading Example 27896 27897For a stack with frame levels 0 through 11: 27898 27899@smallexample 27900(gdb) 27901-stack-info-depth 27902^done,depth="12" 27903(gdb) 27904-stack-info-depth 4 27905^done,depth="4" 27906(gdb) 27907-stack-info-depth 12 27908^done,depth="12" 27909(gdb) 27910-stack-info-depth 11 27911^done,depth="11" 27912(gdb) 27913-stack-info-depth 13 27914^done,depth="12" 27915(gdb) 27916@end smallexample 27917 27918@anchor{-stack-list-arguments} 27919@subheading The @code{-stack-list-arguments} Command 27920@findex -stack-list-arguments 27921 27922@subsubheading Synopsis 27923 27924@smallexample 27925 -stack-list-arguments [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 27926 [ @var{low-frame} @var{high-frame} ] 27927@end smallexample 27928 27929Display a list of the arguments for the frames between @var{low-frame} 27930and @var{high-frame} (inclusive). If @var{low-frame} and 27931@var{high-frame} are not provided, list the arguments for the whole 27932call stack. If the two arguments are equal, show the single frame 27933at the corresponding level. It is an error if @var{low-frame} is 27934larger than the actual number of frames. On the other hand, 27935@var{high-frame} may be larger than the actual number of frames, in 27936which case only existing frames will be returned. 27937 27938If @var{print-values} is 0 or @code{--no-values}, print only the names of 27939the variables; if it is 1 or @code{--all-values}, print also their 27940values; and if it is 2 or @code{--simple-values}, print the name, 27941type and value for simple data types, and the name and type for arrays, 27942structures and unions. If the option @code{--no-frame-filters} is 27943supplied, then Python frame filters will not be executed. 27944 27945If the @code{--skip-unavailable} option is specified, arguments that 27946are not available are not listed. Partially available arguments 27947are still displayed, however. 27948 27949Use of this command to obtain arguments in a single frame is 27950deprecated in favor of the @samp{-stack-list-variables} command. 27951 27952@subsubheading @value{GDBN} Command 27953 27954@value{GDBN} does not have an equivalent command. @code{gdbtk} has a 27955@samp{gdb_get_args} command which partially overlaps with the 27956functionality of @samp{-stack-list-arguments}. 27957 27958@subsubheading Example 27959 27960@smallexample 27961(gdb) 27962-stack-list-frames 27963^done, 27964stack=[ 27965frame=@{level="0",addr="0x00010734",func="callee4", 27966file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27967fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}, 27968frame=@{level="1",addr="0x0001076c",func="callee3", 27969file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27970fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}, 27971frame=@{level="2",addr="0x0001078c",func="callee2", 27972file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27973fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@}, 27974frame=@{level="3",addr="0x000107b4",func="callee1", 27975file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27976fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@}, 27977frame=@{level="4",addr="0x000107e0",func="main", 27978file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 27979fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}] 27980(gdb) 27981-stack-list-arguments 0 27982^done, 27983stack-args=[ 27984frame=@{level="0",args=[]@}, 27985frame=@{level="1",args=[name="strarg"]@}, 27986frame=@{level="2",args=[name="intarg",name="strarg"]@}, 27987frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@}, 27988frame=@{level="4",args=[]@}] 27989(gdb) 27990-stack-list-arguments 1 27991^done, 27992stack-args=[ 27993frame=@{level="0",args=[]@}, 27994frame=@{level="1", 27995 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 27996frame=@{level="2",args=[ 27997@{name="intarg",value="2"@}, 27998@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 27999@{frame=@{level="3",args=[ 28000@{name="intarg",value="2"@}, 28001@{name="strarg",value="0x11940 \"A string argument.\""@}, 28002@{name="fltarg",value="3.5"@}]@}, 28003frame=@{level="4",args=[]@}] 28004(gdb) 28005-stack-list-arguments 0 2 2 28006^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}] 28007(gdb) 28008-stack-list-arguments 1 2 2 28009^done,stack-args=[frame=@{level="2", 28010args=[@{name="intarg",value="2"@}, 28011@{name="strarg",value="0x11940 \"A string argument.\""@}]@}] 28012(gdb) 28013@end smallexample 28014 28015@c @subheading -stack-list-exception-handlers 28016 28017 28018@anchor{-stack-list-frames} 28019@subheading The @code{-stack-list-frames} Command 28020@findex -stack-list-frames 28021 28022@subsubheading Synopsis 28023 28024@smallexample 28025 -stack-list-frames [ --no-frame-filters @var{low-frame} @var{high-frame} ] 28026@end smallexample 28027 28028List the frames currently on the stack. For each frame it displays the 28029following info: 28030 28031@table @samp 28032@item @var{level} 28033The frame number, 0 being the topmost frame, i.e., the innermost function. 28034@item @var{addr} 28035The @code{$pc} value for that frame. 28036@item @var{func} 28037Function name. 28038@item @var{file} 28039File name of the source file where the function lives. 28040@item @var{fullname} 28041The full file name of the source file where the function lives. 28042@item @var{line} 28043Line number corresponding to the @code{$pc}. 28044@item @var{from} 28045The shared library where this function is defined. This is only given 28046if the frame's function is not known. 28047@end table 28048 28049If invoked without arguments, this command prints a backtrace for the 28050whole stack. If given two integer arguments, it shows the frames whose 28051levels are between the two arguments (inclusive). If the two arguments 28052are equal, it shows the single frame at the corresponding level. It is 28053an error if @var{low-frame} is larger than the actual number of 28054frames. On the other hand, @var{high-frame} may be larger than the 28055actual number of frames, in which case only existing frames will be 28056returned. If the option @code{--no-frame-filters} is supplied, then 28057Python frame filters will not be executed. 28058 28059@subsubheading @value{GDBN} Command 28060 28061The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}. 28062 28063@subsubheading Example 28064 28065Full stack backtrace: 28066 28067@smallexample 28068(gdb) 28069-stack-list-frames 28070^done,stack= 28071[frame=@{level="0",addr="0x0001076c",func="foo", 28072 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@}, 28073frame=@{level="1",addr="0x000107a4",func="foo", 28074 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28075frame=@{level="2",addr="0x000107a4",func="foo", 28076 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28077frame=@{level="3",addr="0x000107a4",func="foo", 28078 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28079frame=@{level="4",addr="0x000107a4",func="foo", 28080 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28081frame=@{level="5",addr="0x000107a4",func="foo", 28082 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28083frame=@{level="6",addr="0x000107a4",func="foo", 28084 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28085frame=@{level="7",addr="0x000107a4",func="foo", 28086 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28087frame=@{level="8",addr="0x000107a4",func="foo", 28088 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28089frame=@{level="9",addr="0x000107a4",func="foo", 28090 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28091frame=@{level="10",addr="0x000107a4",func="foo", 28092 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28093frame=@{level="11",addr="0x00010738",func="main", 28094 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}] 28095(gdb) 28096@end smallexample 28097 28098Show frames between @var{low_frame} and @var{high_frame}: 28099 28100@smallexample 28101(gdb) 28102-stack-list-frames 3 5 28103^done,stack= 28104[frame=@{level="3",addr="0x000107a4",func="foo", 28105 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28106frame=@{level="4",addr="0x000107a4",func="foo", 28107 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}, 28108frame=@{level="5",addr="0x000107a4",func="foo", 28109 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}] 28110(gdb) 28111@end smallexample 28112 28113Show a single frame: 28114 28115@smallexample 28116(gdb) 28117-stack-list-frames 3 3 28118^done,stack= 28119[frame=@{level="3",addr="0x000107a4",func="foo", 28120 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}] 28121(gdb) 28122@end smallexample 28123 28124 28125@subheading The @code{-stack-list-locals} Command 28126@findex -stack-list-locals 28127@anchor{-stack-list-locals} 28128 28129@subsubheading Synopsis 28130 28131@smallexample 28132 -stack-list-locals [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 28133@end smallexample 28134 28135Display the local variable names for the selected frame. If 28136@var{print-values} is 0 or @code{--no-values}, print only the names of 28137the variables; if it is 1 or @code{--all-values}, print also their 28138values; and if it is 2 or @code{--simple-values}, print the name, 28139type and value for simple data types, and the name and type for arrays, 28140structures and unions. In this last case, a frontend can immediately 28141display the value of simple data types and create variable objects for 28142other data types when the user wishes to explore their values in 28143more detail. If the option @code{--no-frame-filters} is supplied, then 28144Python frame filters will not be executed. 28145 28146If the @code{--skip-unavailable} option is specified, local variables 28147that are not available are not listed. Partially available local 28148variables are still displayed, however. 28149 28150This command is deprecated in favor of the 28151@samp{-stack-list-variables} command. 28152 28153@subsubheading @value{GDBN} Command 28154 28155@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}. 28156 28157@subsubheading Example 28158 28159@smallexample 28160(gdb) 28161-stack-list-locals 0 28162^done,locals=[name="A",name="B",name="C"] 28163(gdb) 28164-stack-list-locals --all-values 28165^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@}, 28166 @{name="C",value="@{1, 2, 3@}"@}] 28167-stack-list-locals --simple-values 28168^done,locals=[@{name="A",type="int",value="1"@}, 28169 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}] 28170(gdb) 28171@end smallexample 28172 28173@anchor{-stack-list-variables} 28174@subheading The @code{-stack-list-variables} Command 28175@findex -stack-list-variables 28176 28177@subsubheading Synopsis 28178 28179@smallexample 28180 -stack-list-variables [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 28181@end smallexample 28182 28183Display the names of local variables and function arguments for the selected frame. If 28184@var{print-values} is 0 or @code{--no-values}, print only the names of 28185the variables; if it is 1 or @code{--all-values}, print also their 28186values; and if it is 2 or @code{--simple-values}, print the name, 28187type and value for simple data types, and the name and type for arrays, 28188structures and unions. If the option @code{--no-frame-filters} is 28189supplied, then Python frame filters will not be executed. 28190 28191If the @code{--skip-unavailable} option is specified, local variables 28192and arguments that are not available are not listed. Partially 28193available arguments and local variables are still displayed, however. 28194 28195@subsubheading Example 28196 28197@smallexample 28198(gdb) 28199-stack-list-variables --thread 1 --frame 0 --all-values 28200^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}] 28201(gdb) 28202@end smallexample 28203 28204 28205@subheading The @code{-stack-select-frame} Command 28206@findex -stack-select-frame 28207 28208@subsubheading Synopsis 28209 28210@smallexample 28211 -stack-select-frame @var{framenum} 28212@end smallexample 28213 28214Change the selected frame. Select a different frame @var{framenum} on 28215the stack. 28216 28217This command in deprecated in favor of passing the @samp{--frame} 28218option to every command. 28219 28220@subsubheading @value{GDBN} Command 28221 28222The corresponding @value{GDBN} commands are @samp{frame}, @samp{up}, 28223@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}. 28224 28225@subsubheading Example 28226 28227@smallexample 28228(gdb) 28229-stack-select-frame 2 28230^done 28231(gdb) 28232@end smallexample 28233 28234@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28235@node GDB/MI Variable Objects 28236@section @sc{gdb/mi} Variable Objects 28237 28238@ignore 28239 28240@subheading Motivation for Variable Objects in @sc{gdb/mi} 28241 28242For the implementation of a variable debugger window (locals, watched 28243expressions, etc.), we are proposing the adaptation of the existing code 28244used by @code{Insight}. 28245 28246The two main reasons for that are: 28247 28248@enumerate 1 28249@item 28250It has been proven in practice (it is already on its second generation). 28251 28252@item 28253It will shorten development time (needless to say how important it is 28254now). 28255@end enumerate 28256 28257The original interface was designed to be used by Tcl code, so it was 28258slightly changed so it could be used through @sc{gdb/mi}. This section 28259describes the @sc{gdb/mi} operations that will be available and gives some 28260hints about their use. 28261 28262@emph{Note}: In addition to the set of operations described here, we 28263expect the @sc{gui} implementation of a variable window to require, at 28264least, the following operations: 28265 28266@itemize @bullet 28267@item @code{-gdb-show} @code{output-radix} 28268@item @code{-stack-list-arguments} 28269@item @code{-stack-list-locals} 28270@item @code{-stack-select-frame} 28271@end itemize 28272 28273@end ignore 28274 28275@subheading Introduction to Variable Objects 28276 28277@cindex variable objects in @sc{gdb/mi} 28278 28279Variable objects are "object-oriented" MI interface for examining and 28280changing values of expressions. Unlike some other MI interfaces that 28281work with expressions, variable objects are specifically designed for 28282simple and efficient presentation in the frontend. A variable object 28283is identified by string name. When a variable object is created, the 28284frontend specifies the expression for that variable object. The 28285expression can be a simple variable, or it can be an arbitrary complex 28286expression, and can even involve CPU registers. After creating a 28287variable object, the frontend can invoke other variable object 28288operations---for example to obtain or change the value of a variable 28289object, or to change display format. 28290 28291Variable objects have hierarchical tree structure. Any variable object 28292that corresponds to a composite type, such as structure in C, has 28293a number of child variable objects, for example corresponding to each 28294element of a structure. A child variable object can itself have 28295children, recursively. Recursion ends when we reach 28296leaf variable objects, which always have built-in types. Child variable 28297objects are created only by explicit request, so if a frontend 28298is not interested in the children of a particular variable object, no 28299child will be created. 28300 28301For a leaf variable object it is possible to obtain its value as a 28302string, or set the value from a string. String value can be also 28303obtained for a non-leaf variable object, but it's generally a string 28304that only indicates the type of the object, and does not list its 28305contents. Assignment to a non-leaf variable object is not allowed. 28306 28307A frontend does not need to read the values of all variable objects each time 28308the program stops. Instead, MI provides an update command that lists all 28309variable objects whose values has changed since the last update 28310operation. This considerably reduces the amount of data that must 28311be transferred to the frontend. As noted above, children variable 28312objects are created on demand, and only leaf variable objects have a 28313real value. As result, gdb will read target memory only for leaf 28314variables that frontend has created. 28315 28316The automatic update is not always desirable. For example, a frontend 28317might want to keep a value of some expression for future reference, 28318and never update it. For another example, fetching memory is 28319relatively slow for embedded targets, so a frontend might want 28320to disable automatic update for the variables that are either not 28321visible on the screen, or ``closed''. This is possible using so 28322called ``frozen variable objects''. Such variable objects are never 28323implicitly updated. 28324 28325Variable objects can be either @dfn{fixed} or @dfn{floating}. For the 28326fixed variable object, the expression is parsed when the variable 28327object is created, including associating identifiers to specific 28328variables. The meaning of expression never changes. For a floating 28329variable object the values of variables whose names appear in the 28330expressions are re-evaluated every time in the context of the current 28331frame. Consider this example: 28332 28333@smallexample 28334void do_work(...) 28335@{ 28336 struct work_state state; 28337 28338 if (...) 28339 do_work(...); 28340@} 28341@end smallexample 28342 28343If a fixed variable object for the @code{state} variable is created in 28344this function, and we enter the recursive call, the variable 28345object will report the value of @code{state} in the top-level 28346@code{do_work} invocation. On the other hand, a floating variable 28347object will report the value of @code{state} in the current frame. 28348 28349If an expression specified when creating a fixed variable object 28350refers to a local variable, the variable object becomes bound to the 28351thread and frame in which the variable object is created. When such 28352variable object is updated, @value{GDBN} makes sure that the 28353thread/frame combination the variable object is bound to still exists, 28354and re-evaluates the variable object in context of that thread/frame. 28355 28356The following is the complete set of @sc{gdb/mi} operations defined to 28357access this functionality: 28358 28359@multitable @columnfractions .4 .6 28360@item @strong{Operation} 28361@tab @strong{Description} 28362 28363@item @code{-enable-pretty-printing} 28364@tab enable Python-based pretty-printing 28365@item @code{-var-create} 28366@tab create a variable object 28367@item @code{-var-delete} 28368@tab delete the variable object and/or its children 28369@item @code{-var-set-format} 28370@tab set the display format of this variable 28371@item @code{-var-show-format} 28372@tab show the display format of this variable 28373@item @code{-var-info-num-children} 28374@tab tells how many children this object has 28375@item @code{-var-list-children} 28376@tab return a list of the object's children 28377@item @code{-var-info-type} 28378@tab show the type of this variable object 28379@item @code{-var-info-expression} 28380@tab print parent-relative expression that this variable object represents 28381@item @code{-var-info-path-expression} 28382@tab print full expression that this variable object represents 28383@item @code{-var-show-attributes} 28384@tab is this variable editable? does it exist here? 28385@item @code{-var-evaluate-expression} 28386@tab get the value of this variable 28387@item @code{-var-assign} 28388@tab set the value of this variable 28389@item @code{-var-update} 28390@tab update the variable and its children 28391@item @code{-var-set-frozen} 28392@tab set frozeness attribute 28393@item @code{-var-set-update-range} 28394@tab set range of children to display on update 28395@end multitable 28396 28397In the next subsection we describe each operation in detail and suggest 28398how it can be used. 28399 28400@subheading Description And Use of Operations on Variable Objects 28401 28402@subheading The @code{-enable-pretty-printing} Command 28403@findex -enable-pretty-printing 28404 28405@smallexample 28406-enable-pretty-printing 28407@end smallexample 28408 28409@value{GDBN} allows Python-based visualizers to affect the output of the 28410MI variable object commands. However, because there was no way to 28411implement this in a fully backward-compatible way, a front end must 28412request that this functionality be enabled. 28413 28414Once enabled, this feature cannot be disabled. 28415 28416Note that if Python support has not been compiled into @value{GDBN}, 28417this command will still succeed (and do nothing). 28418 28419This feature is currently (as of @value{GDBN} 7.0) experimental, and 28420may work differently in future versions of @value{GDBN}. 28421 28422@subheading The @code{-var-create} Command 28423@findex -var-create 28424 28425@subsubheading Synopsis 28426 28427@smallexample 28428 -var-create @{@var{name} | "-"@} 28429 @{@var{frame-addr} | "*" | "@@"@} @var{expression} 28430@end smallexample 28431 28432This operation creates a variable object, which allows the monitoring of 28433a variable, the result of an expression, a memory cell or a CPU 28434register. 28435 28436The @var{name} parameter is the string by which the object can be 28437referenced. It must be unique. If @samp{-} is specified, the varobj 28438system will generate a string ``varNNNNNN'' automatically. It will be 28439unique provided that one does not specify @var{name} of that format. 28440The command fails if a duplicate name is found. 28441 28442The frame under which the expression should be evaluated can be 28443specified by @var{frame-addr}. A @samp{*} indicates that the current 28444frame should be used. A @samp{@@} indicates that a floating variable 28445object must be created. 28446 28447@var{expression} is any expression valid on the current language set (must not 28448begin with a @samp{*}), or one of the following: 28449 28450@itemize @bullet 28451@item 28452@samp{*@var{addr}}, where @var{addr} is the address of a memory cell 28453 28454@item 28455@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD) 28456 28457@item 28458@samp{$@var{regname}} --- a CPU register name 28459@end itemize 28460 28461@cindex dynamic varobj 28462A varobj's contents may be provided by a Python-based pretty-printer. In this 28463case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs 28464have slightly different semantics in some cases. If the 28465@code{-enable-pretty-printing} command is not sent, then @value{GDBN} 28466will never create a dynamic varobj. This ensures backward 28467compatibility for existing clients. 28468 28469@subsubheading Result 28470 28471This operation returns attributes of the newly-created varobj. These 28472are: 28473 28474@table @samp 28475@item name 28476The name of the varobj. 28477 28478@item numchild 28479The number of children of the varobj. This number is not necessarily 28480reliable for a dynamic varobj. Instead, you must examine the 28481@samp{has_more} attribute. 28482 28483@item value 28484The varobj's scalar value. For a varobj whose type is some sort of 28485aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value 28486will not be interesting. 28487 28488@item type 28489The varobj's type. This is a string representation of the type, as 28490would be printed by the @value{GDBN} CLI. If @samp{print object} 28491(@pxref{Print Settings, set print object}) is set to @code{on}, the 28492@emph{actual} (derived) type of the object is shown rather than the 28493@emph{declared} one. 28494 28495@item thread-id 28496If a variable object is bound to a specific thread, then this is the 28497thread's identifier. 28498 28499@item has_more 28500For a dynamic varobj, this indicates whether there appear to be any 28501children available. For a non-dynamic varobj, this will be 0. 28502 28503@item dynamic 28504This attribute will be present and have the value @samp{1} if the 28505varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 28506then this attribute will not be present. 28507 28508@item displayhint 28509A dynamic varobj can supply a display hint to the front end. The 28510value comes directly from the Python pretty-printer object's 28511@code{display_hint} method. @xref{Pretty Printing API}. 28512@end table 28513 28514Typical output will look like this: 28515 28516@smallexample 28517 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}", 28518 has_more="@var{has_more}" 28519@end smallexample 28520 28521 28522@subheading The @code{-var-delete} Command 28523@findex -var-delete 28524 28525@subsubheading Synopsis 28526 28527@smallexample 28528 -var-delete [ -c ] @var{name} 28529@end smallexample 28530 28531Deletes a previously created variable object and all of its children. 28532With the @samp{-c} option, just deletes the children. 28533 28534Returns an error if the object @var{name} is not found. 28535 28536 28537@subheading The @code{-var-set-format} Command 28538@findex -var-set-format 28539 28540@subsubheading Synopsis 28541 28542@smallexample 28543 -var-set-format @var{name} @var{format-spec} 28544@end smallexample 28545 28546Sets the output format for the value of the object @var{name} to be 28547@var{format-spec}. 28548 28549@anchor{-var-set-format} 28550The syntax for the @var{format-spec} is as follows: 28551 28552@smallexample 28553 @var{format-spec} @expansion{} 28554 @{binary | decimal | hexadecimal | octal | natural@} 28555@end smallexample 28556 28557The natural format is the default format choosen automatically 28558based on the variable type (like decimal for an @code{int}, hex 28559for pointers, etc.). 28560 28561For a variable with children, the format is set only on the 28562variable itself, and the children are not affected. 28563 28564@subheading The @code{-var-show-format} Command 28565@findex -var-show-format 28566 28567@subsubheading Synopsis 28568 28569@smallexample 28570 -var-show-format @var{name} 28571@end smallexample 28572 28573Returns the format used to display the value of the object @var{name}. 28574 28575@smallexample 28576 @var{format} @expansion{} 28577 @var{format-spec} 28578@end smallexample 28579 28580 28581@subheading The @code{-var-info-num-children} Command 28582@findex -var-info-num-children 28583 28584@subsubheading Synopsis 28585 28586@smallexample 28587 -var-info-num-children @var{name} 28588@end smallexample 28589 28590Returns the number of children of a variable object @var{name}: 28591 28592@smallexample 28593 numchild=@var{n} 28594@end smallexample 28595 28596Note that this number is not completely reliable for a dynamic varobj. 28597It will return the current number of children, but more children may 28598be available. 28599 28600 28601@subheading The @code{-var-list-children} Command 28602@findex -var-list-children 28603 28604@subsubheading Synopsis 28605 28606@smallexample 28607 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}] 28608@end smallexample 28609@anchor{-var-list-children} 28610 28611Return a list of the children of the specified variable object and 28612create variable objects for them, if they do not already exist. With 28613a single argument or if @var{print-values} has a value of 0 or 28614@code{--no-values}, print only the names of the variables; if 28615@var{print-values} is 1 or @code{--all-values}, also print their 28616values; and if it is 2 or @code{--simple-values} print the name and 28617value for simple data types and just the name for arrays, structures 28618and unions. 28619 28620@var{from} and @var{to}, if specified, indicate the range of children 28621to report. If @var{from} or @var{to} is less than zero, the range is 28622reset and all children will be reported. Otherwise, children starting 28623at @var{from} (zero-based) and up to and excluding @var{to} will be 28624reported. 28625 28626If a child range is requested, it will only affect the current call to 28627@code{-var-list-children}, but not future calls to @code{-var-update}. 28628For this, you must instead use @code{-var-set-update-range}. The 28629intent of this approach is to enable a front end to implement any 28630update approach it likes; for example, scrolling a view may cause the 28631front end to request more children with @code{-var-list-children}, and 28632then the front end could call @code{-var-set-update-range} with a 28633different range to ensure that future updates are restricted to just 28634the visible items. 28635 28636For each child the following results are returned: 28637 28638@table @var 28639 28640@item name 28641Name of the variable object created for this child. 28642 28643@item exp 28644The expression to be shown to the user by the front end to designate this child. 28645For example this may be the name of a structure member. 28646 28647For a dynamic varobj, this value cannot be used to form an 28648expression. There is no way to do this at all with a dynamic varobj. 28649 28650For C/C@t{++} structures there are several pseudo children returned to 28651designate access qualifiers. For these pseudo children @var{exp} is 28652@samp{public}, @samp{private}, or @samp{protected}. In this case the 28653type and value are not present. 28654 28655A dynamic varobj will not report the access qualifying 28656pseudo-children, regardless of the language. This information is not 28657available at all with a dynamic varobj. 28658 28659@item numchild 28660Number of children this child has. For a dynamic varobj, this will be 286610. 28662 28663@item type 28664The type of the child. If @samp{print object} 28665(@pxref{Print Settings, set print object}) is set to @code{on}, the 28666@emph{actual} (derived) type of the object is shown rather than the 28667@emph{declared} one. 28668 28669@item value 28670If values were requested, this is the value. 28671 28672@item thread-id 28673If this variable object is associated with a thread, this is the thread id. 28674Otherwise this result is not present. 28675 28676@item frozen 28677If the variable object is frozen, this variable will be present with a value of 1. 28678 28679@item displayhint 28680A dynamic varobj can supply a display hint to the front end. The 28681value comes directly from the Python pretty-printer object's 28682@code{display_hint} method. @xref{Pretty Printing API}. 28683 28684@item dynamic 28685This attribute will be present and have the value @samp{1} if the 28686varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 28687then this attribute will not be present. 28688 28689@end table 28690 28691The result may have its own attributes: 28692 28693@table @samp 28694@item displayhint 28695A dynamic varobj can supply a display hint to the front end. The 28696value comes directly from the Python pretty-printer object's 28697@code{display_hint} method. @xref{Pretty Printing API}. 28698 28699@item has_more 28700This is an integer attribute which is nonzero if there are children 28701remaining after the end of the selected range. 28702@end table 28703 28704@subsubheading Example 28705 28706@smallexample 28707(gdb) 28708 -var-list-children n 28709 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 28710 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}] 28711(gdb) 28712 -var-list-children --all-values n 28713 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 28714 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}] 28715@end smallexample 28716 28717 28718@subheading The @code{-var-info-type} Command 28719@findex -var-info-type 28720 28721@subsubheading Synopsis 28722 28723@smallexample 28724 -var-info-type @var{name} 28725@end smallexample 28726 28727Returns the type of the specified variable @var{name}. The type is 28728returned as a string in the same format as it is output by the 28729@value{GDBN} CLI: 28730 28731@smallexample 28732 type=@var{typename} 28733@end smallexample 28734 28735 28736@subheading The @code{-var-info-expression} Command 28737@findex -var-info-expression 28738 28739@subsubheading Synopsis 28740 28741@smallexample 28742 -var-info-expression @var{name} 28743@end smallexample 28744 28745Returns a string that is suitable for presenting this 28746variable object in user interface. The string is generally 28747not valid expression in the current language, and cannot be evaluated. 28748 28749For example, if @code{a} is an array, and variable object 28750@code{A} was created for @code{a}, then we'll get this output: 28751 28752@smallexample 28753(gdb) -var-info-expression A.1 28754^done,lang="C",exp="1" 28755@end smallexample 28756 28757@noindent 28758Here, the value of @code{lang} is the language name, which can be 28759found in @ref{Supported Languages}. 28760 28761Note that the output of the @code{-var-list-children} command also 28762includes those expressions, so the @code{-var-info-expression} command 28763is of limited use. 28764 28765@subheading The @code{-var-info-path-expression} Command 28766@findex -var-info-path-expression 28767 28768@subsubheading Synopsis 28769 28770@smallexample 28771 -var-info-path-expression @var{name} 28772@end smallexample 28773 28774Returns an expression that can be evaluated in the current 28775context and will yield the same value that a variable object has. 28776Compare this with the @code{-var-info-expression} command, which 28777result can be used only for UI presentation. Typical use of 28778the @code{-var-info-path-expression} command is creating a 28779watchpoint from a variable object. 28780 28781This command is currently not valid for children of a dynamic varobj, 28782and will give an error when invoked on one. 28783 28784For example, suppose @code{C} is a C@t{++} class, derived from class 28785@code{Base}, and that the @code{Base} class has a member called 28786@code{m_size}. Assume a variable @code{c} is has the type of 28787@code{C} and a variable object @code{C} was created for variable 28788@code{c}. Then, we'll get this output: 28789@smallexample 28790(gdb) -var-info-path-expression C.Base.public.m_size 28791^done,path_expr=((Base)c).m_size) 28792@end smallexample 28793 28794@subheading The @code{-var-show-attributes} Command 28795@findex -var-show-attributes 28796 28797@subsubheading Synopsis 28798 28799@smallexample 28800 -var-show-attributes @var{name} 28801@end smallexample 28802 28803List attributes of the specified variable object @var{name}: 28804 28805@smallexample 28806 status=@var{attr} [ ( ,@var{attr} )* ] 28807@end smallexample 28808 28809@noindent 28810where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}. 28811 28812@subheading The @code{-var-evaluate-expression} Command 28813@findex -var-evaluate-expression 28814 28815@subsubheading Synopsis 28816 28817@smallexample 28818 -var-evaluate-expression [-f @var{format-spec}] @var{name} 28819@end smallexample 28820 28821Evaluates the expression that is represented by the specified variable 28822object and returns its value as a string. The format of the string 28823can be specified with the @samp{-f} option. The possible values of 28824this option are the same as for @code{-var-set-format} 28825(@pxref{-var-set-format}). If the @samp{-f} option is not specified, 28826the current display format will be used. The current display format 28827can be changed using the @code{-var-set-format} command. 28828 28829@smallexample 28830 value=@var{value} 28831@end smallexample 28832 28833Note that one must invoke @code{-var-list-children} for a variable 28834before the value of a child variable can be evaluated. 28835 28836@subheading The @code{-var-assign} Command 28837@findex -var-assign 28838 28839@subsubheading Synopsis 28840 28841@smallexample 28842 -var-assign @var{name} @var{expression} 28843@end smallexample 28844 28845Assigns the value of @var{expression} to the variable object specified 28846by @var{name}. The object must be @samp{editable}. If the variable's 28847value is altered by the assign, the variable will show up in any 28848subsequent @code{-var-update} list. 28849 28850@subsubheading Example 28851 28852@smallexample 28853(gdb) 28854-var-assign var1 3 28855^done,value="3" 28856(gdb) 28857-var-update * 28858^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}] 28859(gdb) 28860@end smallexample 28861 28862@subheading The @code{-var-update} Command 28863@findex -var-update 28864 28865@subsubheading Synopsis 28866 28867@smallexample 28868 -var-update [@var{print-values}] @{@var{name} | "*"@} 28869@end smallexample 28870 28871Reevaluate the expressions corresponding to the variable object 28872@var{name} and all its direct and indirect children, and return the 28873list of variable objects whose values have changed; @var{name} must 28874be a root variable object. Here, ``changed'' means that the result of 28875@code{-var-evaluate-expression} before and after the 28876@code{-var-update} is different. If @samp{*} is used as the variable 28877object names, all existing variable objects are updated, except 28878for frozen ones (@pxref{-var-set-frozen}). The option 28879@var{print-values} determines whether both names and values, or just 28880names are printed. The possible values of this option are the same 28881as for @code{-var-list-children} (@pxref{-var-list-children}). It is 28882recommended to use the @samp{--all-values} option, to reduce the 28883number of MI commands needed on each program stop. 28884 28885With the @samp{*} parameter, if a variable object is bound to a 28886currently running thread, it will not be updated, without any 28887diagnostic. 28888 28889If @code{-var-set-update-range} was previously used on a varobj, then 28890only the selected range of children will be reported. 28891 28892@code{-var-update} reports all the changed varobjs in a tuple named 28893@samp{changelist}. 28894 28895Each item in the change list is itself a tuple holding: 28896 28897@table @samp 28898@item name 28899The name of the varobj. 28900 28901@item value 28902If values were requested for this update, then this field will be 28903present and will hold the value of the varobj. 28904 28905@item in_scope 28906@anchor{-var-update} 28907This field is a string which may take one of three values: 28908 28909@table @code 28910@item "true" 28911The variable object's current value is valid. 28912 28913@item "false" 28914The variable object does not currently hold a valid value but it may 28915hold one in the future if its associated expression comes back into 28916scope. 28917 28918@item "invalid" 28919The variable object no longer holds a valid value. 28920This can occur when the executable file being debugged has changed, 28921either through recompilation or by using the @value{GDBN} @code{file} 28922command. The front end should normally choose to delete these variable 28923objects. 28924@end table 28925 28926In the future new values may be added to this list so the front should 28927be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}. 28928 28929@item type_changed 28930This is only present if the varobj is still valid. If the type 28931changed, then this will be the string @samp{true}; otherwise it will 28932be @samp{false}. 28933 28934When a varobj's type changes, its children are also likely to have 28935become incorrect. Therefore, the varobj's children are automatically 28936deleted when this attribute is @samp{true}. Also, the varobj's update 28937range, when set using the @code{-var-set-update-range} command, is 28938unset. 28939 28940@item new_type 28941If the varobj's type changed, then this field will be present and will 28942hold the new type. 28943 28944@item new_num_children 28945For a dynamic varobj, if the number of children changed, or if the 28946type changed, this will be the new number of children. 28947 28948The @samp{numchild} field in other varobj responses is generally not 28949valid for a dynamic varobj -- it will show the number of children that 28950@value{GDBN} knows about, but because dynamic varobjs lazily 28951instantiate their children, this will not reflect the number of 28952children which may be available. 28953 28954The @samp{new_num_children} attribute only reports changes to the 28955number of children known by @value{GDBN}. This is the only way to 28956detect whether an update has removed children (which necessarily can 28957only happen at the end of the update range). 28958 28959@item displayhint 28960The display hint, if any. 28961 28962@item has_more 28963This is an integer value, which will be 1 if there are more children 28964available outside the varobj's update range. 28965 28966@item dynamic 28967This attribute will be present and have the value @samp{1} if the 28968varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 28969then this attribute will not be present. 28970 28971@item new_children 28972If new children were added to a dynamic varobj within the selected 28973update range (as set by @code{-var-set-update-range}), then they will 28974be listed in this attribute. 28975@end table 28976 28977@subsubheading Example 28978 28979@smallexample 28980(gdb) 28981-var-assign var1 3 28982^done,value="3" 28983(gdb) 28984-var-update --all-values var1 28985^done,changelist=[@{name="var1",value="3",in_scope="true", 28986type_changed="false"@}] 28987(gdb) 28988@end smallexample 28989 28990@subheading The @code{-var-set-frozen} Command 28991@findex -var-set-frozen 28992@anchor{-var-set-frozen} 28993 28994@subsubheading Synopsis 28995 28996@smallexample 28997 -var-set-frozen @var{name} @var{flag} 28998@end smallexample 28999 29000Set the frozenness flag on the variable object @var{name}. The 29001@var{flag} parameter should be either @samp{1} to make the variable 29002frozen or @samp{0} to make it unfrozen. If a variable object is 29003frozen, then neither itself, nor any of its children, are 29004implicitly updated by @code{-var-update} of 29005a parent variable or by @code{-var-update *}. Only 29006@code{-var-update} of the variable itself will update its value and 29007values of its children. After a variable object is unfrozen, it is 29008implicitly updated by all subsequent @code{-var-update} operations. 29009Unfreezing a variable does not update it, only subsequent 29010@code{-var-update} does. 29011 29012@subsubheading Example 29013 29014@smallexample 29015(gdb) 29016-var-set-frozen V 1 29017^done 29018(gdb) 29019@end smallexample 29020 29021@subheading The @code{-var-set-update-range} command 29022@findex -var-set-update-range 29023@anchor{-var-set-update-range} 29024 29025@subsubheading Synopsis 29026 29027@smallexample 29028 -var-set-update-range @var{name} @var{from} @var{to} 29029@end smallexample 29030 29031Set the range of children to be returned by future invocations of 29032@code{-var-update}. 29033 29034@var{from} and @var{to} indicate the range of children to report. If 29035@var{from} or @var{to} is less than zero, the range is reset and all 29036children will be reported. Otherwise, children starting at @var{from} 29037(zero-based) and up to and excluding @var{to} will be reported. 29038 29039@subsubheading Example 29040 29041@smallexample 29042(gdb) 29043-var-set-update-range V 1 2 29044^done 29045@end smallexample 29046 29047@subheading The @code{-var-set-visualizer} command 29048@findex -var-set-visualizer 29049@anchor{-var-set-visualizer} 29050 29051@subsubheading Synopsis 29052 29053@smallexample 29054 -var-set-visualizer @var{name} @var{visualizer} 29055@end smallexample 29056 29057Set a visualizer for the variable object @var{name}. 29058 29059@var{visualizer} is the visualizer to use. The special value 29060@samp{None} means to disable any visualizer in use. 29061 29062If not @samp{None}, @var{visualizer} must be a Python expression. 29063This expression must evaluate to a callable object which accepts a 29064single argument. @value{GDBN} will call this object with the value of 29065the varobj @var{name} as an argument (this is done so that the same 29066Python pretty-printing code can be used for both the CLI and MI). 29067When called, this object must return an object which conforms to the 29068pretty-printing interface (@pxref{Pretty Printing API}). 29069 29070The pre-defined function @code{gdb.default_visualizer} may be used to 29071select a visualizer by following the built-in process 29072(@pxref{Selecting Pretty-Printers}). This is done automatically when 29073a varobj is created, and so ordinarily is not needed. 29074 29075This feature is only available if Python support is enabled. The MI 29076command @code{-list-features} (@pxref{GDB/MI Support Commands}) 29077can be used to check this. 29078 29079@subsubheading Example 29080 29081Resetting the visualizer: 29082 29083@smallexample 29084(gdb) 29085-var-set-visualizer V None 29086^done 29087@end smallexample 29088 29089Reselecting the default (type-based) visualizer: 29090 29091@smallexample 29092(gdb) 29093-var-set-visualizer V gdb.default_visualizer 29094^done 29095@end smallexample 29096 29097Suppose @code{SomeClass} is a visualizer class. A lambda expression 29098can be used to instantiate this class for a varobj: 29099 29100@smallexample 29101(gdb) 29102-var-set-visualizer V "lambda val: SomeClass()" 29103^done 29104@end smallexample 29105 29106@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29107@node GDB/MI Data Manipulation 29108@section @sc{gdb/mi} Data Manipulation 29109 29110@cindex data manipulation, in @sc{gdb/mi} 29111@cindex @sc{gdb/mi}, data manipulation 29112This section describes the @sc{gdb/mi} commands that manipulate data: 29113examine memory and registers, evaluate expressions, etc. 29114 29115@c REMOVED FROM THE INTERFACE. 29116@c @subheading -data-assign 29117@c Change the value of a program variable. Plenty of side effects. 29118@c @subsubheading GDB Command 29119@c set variable 29120@c @subsubheading Example 29121@c N.A. 29122 29123@subheading The @code{-data-disassemble} Command 29124@findex -data-disassemble 29125 29126@subsubheading Synopsis 29127 29128@smallexample 29129 -data-disassemble 29130 [ -s @var{start-addr} -e @var{end-addr} ] 29131 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ] 29132 -- @var{mode} 29133@end smallexample 29134 29135@noindent 29136Where: 29137 29138@table @samp 29139@item @var{start-addr} 29140is the beginning address (or @code{$pc}) 29141@item @var{end-addr} 29142is the end address 29143@item @var{filename} 29144is the name of the file to disassemble 29145@item @var{linenum} 29146is the line number to disassemble around 29147@item @var{lines} 29148is the number of disassembly lines to be produced. If it is -1, 29149the whole function will be disassembled, in case no @var{end-addr} is 29150specified. If @var{end-addr} is specified as a non-zero value, and 29151@var{lines} is lower than the number of disassembly lines between 29152@var{start-addr} and @var{end-addr}, only @var{lines} lines are 29153displayed; if @var{lines} is higher than the number of lines between 29154@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr} 29155are displayed. 29156@item @var{mode} 29157is either 0 (meaning only disassembly), 1 (meaning mixed source and 29158disassembly), 2 (meaning disassembly with raw opcodes), or 3 (meaning 29159mixed source and disassembly with raw opcodes). 29160@end table 29161 29162@subsubheading Result 29163 29164The result of the @code{-data-disassemble} command will be a list named 29165@samp{asm_insns}, the contents of this list depend on the @var{mode} 29166used with the @code{-data-disassemble} command. 29167 29168For modes 0 and 2 the @samp{asm_insns} list contains tuples with the 29169following fields: 29170 29171@table @code 29172@item address 29173The address at which this instruction was disassembled. 29174 29175@item func-name 29176The name of the function this instruction is within. 29177 29178@item offset 29179The decimal offset in bytes from the start of @samp{func-name}. 29180 29181@item inst 29182The text disassembly for this @samp{address}. 29183 29184@item opcodes 29185This field is only present for mode 2. This contains the raw opcode 29186bytes for the @samp{inst} field. 29187 29188@end table 29189 29190For modes 1 and 3 the @samp{asm_insns} list contains tuples named 29191@samp{src_and_asm_line}, each of which has the following fields: 29192 29193@table @code 29194@item line 29195The line number within @samp{file}. 29196 29197@item file 29198The file name from the compilation unit. This might be an absolute 29199file name or a relative file name depending on the compile command 29200used. 29201 29202@item fullname 29203Absolute file name of @samp{file}. It is converted to a canonical form 29204using the source file search path 29205(@pxref{Source Path, ,Specifying Source Directories}) 29206and after resolving all the symbolic links. 29207 29208If the source file is not found this field will contain the path as 29209present in the debug information. 29210 29211@item line_asm_insn 29212This is a list of tuples containing the disassembly for @samp{line} in 29213@samp{file}. The fields of each tuple are the same as for 29214@code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address}, 29215@samp{func-name}, @samp{offset}, @samp{inst}, and optionally 29216@samp{opcodes}. 29217 29218@end table 29219 29220Note that whatever included in the @samp{inst} field, is not 29221manipulated directly by @sc{gdb/mi}, i.e., it is not possible to 29222adjust its format. 29223 29224@subsubheading @value{GDBN} Command 29225 29226The corresponding @value{GDBN} command is @samp{disassemble}. 29227 29228@subsubheading Example 29229 29230Disassemble from the current value of @code{$pc} to @code{$pc + 20}: 29231 29232@smallexample 29233(gdb) 29234-data-disassemble -s $pc -e "$pc + 20" -- 0 29235^done, 29236asm_insns=[ 29237@{address="0x000107c0",func-name="main",offset="4", 29238inst="mov 2, %o0"@}, 29239@{address="0x000107c4",func-name="main",offset="8", 29240inst="sethi %hi(0x11800), %o2"@}, 29241@{address="0x000107c8",func-name="main",offset="12", 29242inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@}, 29243@{address="0x000107cc",func-name="main",offset="16", 29244inst="sethi %hi(0x11800), %o2"@}, 29245@{address="0x000107d0",func-name="main",offset="20", 29246inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}] 29247(gdb) 29248@end smallexample 29249 29250Disassemble the whole @code{main} function. Line 32 is part of 29251@code{main}. 29252 29253@smallexample 29254-data-disassemble -f basics.c -l 32 -- 0 29255^done,asm_insns=[ 29256@{address="0x000107bc",func-name="main",offset="0", 29257inst="save %sp, -112, %sp"@}, 29258@{address="0x000107c0",func-name="main",offset="4", 29259inst="mov 2, %o0"@}, 29260@{address="0x000107c4",func-name="main",offset="8", 29261inst="sethi %hi(0x11800), %o2"@}, 29262[@dots{}] 29263@{address="0x0001081c",func-name="main",offset="96",inst="ret "@}, 29264@{address="0x00010820",func-name="main",offset="100",inst="restore "@}] 29265(gdb) 29266@end smallexample 29267 29268Disassemble 3 instructions from the start of @code{main}: 29269 29270@smallexample 29271(gdb) 29272-data-disassemble -f basics.c -l 32 -n 3 -- 0 29273^done,asm_insns=[ 29274@{address="0x000107bc",func-name="main",offset="0", 29275inst="save %sp, -112, %sp"@}, 29276@{address="0x000107c0",func-name="main",offset="4", 29277inst="mov 2, %o0"@}, 29278@{address="0x000107c4",func-name="main",offset="8", 29279inst="sethi %hi(0x11800), %o2"@}] 29280(gdb) 29281@end smallexample 29282 29283Disassemble 3 instructions from the start of @code{main} in mixed mode: 29284 29285@smallexample 29286(gdb) 29287-data-disassemble -f basics.c -l 32 -n 3 -- 1 29288^done,asm_insns=[ 29289src_and_asm_line=@{line="31", 29290file="../../../src/gdb/testsuite/gdb.mi/basics.c", 29291fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 29292line_asm_insn=[@{address="0x000107bc", 29293func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@}, 29294src_and_asm_line=@{line="32", 29295file="../../../src/gdb/testsuite/gdb.mi/basics.c", 29296fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 29297line_asm_insn=[@{address="0x000107c0", 29298func-name="main",offset="4",inst="mov 2, %o0"@}, 29299@{address="0x000107c4",func-name="main",offset="8", 29300inst="sethi %hi(0x11800), %o2"@}]@}] 29301(gdb) 29302@end smallexample 29303 29304 29305@subheading The @code{-data-evaluate-expression} Command 29306@findex -data-evaluate-expression 29307 29308@subsubheading Synopsis 29309 29310@smallexample 29311 -data-evaluate-expression @var{expr} 29312@end smallexample 29313 29314Evaluate @var{expr} as an expression. The expression could contain an 29315inferior function call. The function call will execute synchronously. 29316If the expression contains spaces, it must be enclosed in double quotes. 29317 29318@subsubheading @value{GDBN} Command 29319 29320The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and 29321@samp{call}. In @code{gdbtk} only, there's a corresponding 29322@samp{gdb_eval} command. 29323 29324@subsubheading Example 29325 29326In the following example, the numbers that precede the commands are the 29327@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi} 29328Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its 29329output. 29330 29331@smallexample 29332211-data-evaluate-expression A 29333211^done,value="1" 29334(gdb) 29335311-data-evaluate-expression &A 29336311^done,value="0xefffeb7c" 29337(gdb) 29338411-data-evaluate-expression A+3 29339411^done,value="4" 29340(gdb) 29341511-data-evaluate-expression "A + 3" 29342511^done,value="4" 29343(gdb) 29344@end smallexample 29345 29346 29347@subheading The @code{-data-list-changed-registers} Command 29348@findex -data-list-changed-registers 29349 29350@subsubheading Synopsis 29351 29352@smallexample 29353 -data-list-changed-registers 29354@end smallexample 29355 29356Display a list of the registers that have changed. 29357 29358@subsubheading @value{GDBN} Command 29359 29360@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk} 29361has the corresponding command @samp{gdb_changed_register_list}. 29362 29363@subsubheading Example 29364 29365On a PPC MBX board: 29366 29367@smallexample 29368(gdb) 29369-exec-continue 29370^running 29371 29372(gdb) 29373*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{ 29374func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c", 29375line="5"@} 29376(gdb) 29377-data-list-changed-registers 29378^done,changed-registers=["0","1","2","4","5","6","7","8","9", 29379"10","11","13","14","15","16","17","18","19","20","21","22","23", 29380"24","25","26","27","28","30","31","64","65","66","67","69"] 29381(gdb) 29382@end smallexample 29383 29384 29385@subheading The @code{-data-list-register-names} Command 29386@findex -data-list-register-names 29387 29388@subsubheading Synopsis 29389 29390@smallexample 29391 -data-list-register-names [ ( @var{regno} )+ ] 29392@end smallexample 29393 29394Show a list of register names for the current target. If no arguments 29395are given, it shows a list of the names of all the registers. If 29396integer numbers are given as arguments, it will print a list of the 29397names of the registers corresponding to the arguments. To ensure 29398consistency between a register name and its number, the output list may 29399include empty register names. 29400 29401@subsubheading @value{GDBN} Command 29402 29403@value{GDBN} does not have a command which corresponds to 29404@samp{-data-list-register-names}. In @code{gdbtk} there is a 29405corresponding command @samp{gdb_regnames}. 29406 29407@subsubheading Example 29408 29409For the PPC MBX board: 29410@smallexample 29411(gdb) 29412-data-list-register-names 29413^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7", 29414"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18", 29415"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29", 29416"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9", 29417"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20", 29418"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31", 29419"", "pc","ps","cr","lr","ctr","xer"] 29420(gdb) 29421-data-list-register-names 1 2 3 29422^done,register-names=["r1","r2","r3"] 29423(gdb) 29424@end smallexample 29425 29426@subheading The @code{-data-list-register-values} Command 29427@findex -data-list-register-values 29428 29429@subsubheading Synopsis 29430 29431@smallexample 29432 -data-list-register-values 29433 [ @code{--skip-unavailable} ] @var{fmt} [ ( @var{regno} )*] 29434@end smallexample 29435 29436Display the registers' contents. The format according to which the 29437registers' contents are to be returned is given by @var{fmt}, followed 29438by an optional list of numbers specifying the registers to display. A 29439missing list of numbers indicates that the contents of all the 29440registers must be returned. The @code{--skip-unavailable} option 29441indicates that only the available registers are to be returned. 29442 29443Allowed formats for @var{fmt} are: 29444 29445@table @code 29446@item x 29447Hexadecimal 29448@item o 29449Octal 29450@item t 29451Binary 29452@item d 29453Decimal 29454@item r 29455Raw 29456@item N 29457Natural 29458@end table 29459 29460@subsubheading @value{GDBN} Command 29461 29462The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info 29463all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}. 29464 29465@subsubheading Example 29466 29467For a PPC MBX board (note: line breaks are for readability only, they 29468don't appear in the actual output): 29469 29470@smallexample 29471(gdb) 29472-data-list-register-values r 64 65 29473^done,register-values=[@{number="64",value="0xfe00a300"@}, 29474@{number="65",value="0x00029002"@}] 29475(gdb) 29476-data-list-register-values x 29477^done,register-values=[@{number="0",value="0xfe0043c8"@}, 29478@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@}, 29479@{number="3",value="0x0"@},@{number="4",value="0xa"@}, 29480@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@}, 29481@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@}, 29482@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@}, 29483@{number="11",value="0x1"@},@{number="12",value="0x0"@}, 29484@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@}, 29485@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@}, 29486@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@}, 29487@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@}, 29488@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@}, 29489@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@}, 29490@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@}, 29491@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@}, 29492@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@}, 29493@{number="31",value="0x0"@},@{number="32",value="0x0"@}, 29494@{number="33",value="0x0"@},@{number="34",value="0x0"@}, 29495@{number="35",value="0x0"@},@{number="36",value="0x0"@}, 29496@{number="37",value="0x0"@},@{number="38",value="0x0"@}, 29497@{number="39",value="0x0"@},@{number="40",value="0x0"@}, 29498@{number="41",value="0x0"@},@{number="42",value="0x0"@}, 29499@{number="43",value="0x0"@},@{number="44",value="0x0"@}, 29500@{number="45",value="0x0"@},@{number="46",value="0x0"@}, 29501@{number="47",value="0x0"@},@{number="48",value="0x0"@}, 29502@{number="49",value="0x0"@},@{number="50",value="0x0"@}, 29503@{number="51",value="0x0"@},@{number="52",value="0x0"@}, 29504@{number="53",value="0x0"@},@{number="54",value="0x0"@}, 29505@{number="55",value="0x0"@},@{number="56",value="0x0"@}, 29506@{number="57",value="0x0"@},@{number="58",value="0x0"@}, 29507@{number="59",value="0x0"@},@{number="60",value="0x0"@}, 29508@{number="61",value="0x0"@},@{number="62",value="0x0"@}, 29509@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@}, 29510@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@}, 29511@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@}, 29512@{number="69",value="0x20002b03"@}] 29513(gdb) 29514@end smallexample 29515 29516 29517@subheading The @code{-data-read-memory} Command 29518@findex -data-read-memory 29519 29520This command is deprecated, use @code{-data-read-memory-bytes} instead. 29521 29522@subsubheading Synopsis 29523 29524@smallexample 29525 -data-read-memory [ -o @var{byte-offset} ] 29526 @var{address} @var{word-format} @var{word-size} 29527 @var{nr-rows} @var{nr-cols} [ @var{aschar} ] 29528@end smallexample 29529 29530@noindent 29531where: 29532 29533@table @samp 29534@item @var{address} 29535An expression specifying the address of the first memory word to be 29536read. Complex expressions containing embedded white space should be 29537quoted using the C convention. 29538 29539@item @var{word-format} 29540The format to be used to print the memory words. The notation is the 29541same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats, 29542,Output Formats}). 29543 29544@item @var{word-size} 29545The size of each memory word in bytes. 29546 29547@item @var{nr-rows} 29548The number of rows in the output table. 29549 29550@item @var{nr-cols} 29551The number of columns in the output table. 29552 29553@item @var{aschar} 29554If present, indicates that each row should include an @sc{ascii} dump. The 29555value of @var{aschar} is used as a padding character when a byte is not a 29556member of the printable @sc{ascii} character set (printable @sc{ascii} 29557characters are those whose code is between 32 and 126, inclusively). 29558 29559@item @var{byte-offset} 29560An offset to add to the @var{address} before fetching memory. 29561@end table 29562 29563This command displays memory contents as a table of @var{nr-rows} by 29564@var{nr-cols} words, each word being @var{word-size} bytes. In total, 29565@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read 29566(returned as @samp{total-bytes}). Should less than the requested number 29567of bytes be returned by the target, the missing words are identified 29568using @samp{N/A}. The number of bytes read from the target is returned 29569in @samp{nr-bytes} and the starting address used to read memory in 29570@samp{addr}. 29571 29572The address of the next/previous row or page is available in 29573@samp{next-row} and @samp{prev-row}, @samp{next-page} and 29574@samp{prev-page}. 29575 29576@subsubheading @value{GDBN} Command 29577 29578The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has 29579@samp{gdb_get_mem} memory read command. 29580 29581@subsubheading Example 29582 29583Read six bytes of memory starting at @code{bytes+6} but then offset by 29584@code{-6} bytes. Format as three rows of two columns. One byte per 29585word. Display each word in hex. 29586 29587@smallexample 29588(gdb) 295899-data-read-memory -o -6 -- bytes+6 x 1 3 2 295909^done,addr="0x00001390",nr-bytes="6",total-bytes="6", 29591next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396", 29592prev-page="0x0000138a",memory=[ 29593@{addr="0x00001390",data=["0x00","0x01"]@}, 29594@{addr="0x00001392",data=["0x02","0x03"]@}, 29595@{addr="0x00001394",data=["0x04","0x05"]@}] 29596(gdb) 29597@end smallexample 29598 29599Read two bytes of memory starting at address @code{shorts + 64} and 29600display as a single word formatted in decimal. 29601 29602@smallexample 29603(gdb) 296045-data-read-memory shorts+64 d 2 1 1 296055^done,addr="0x00001510",nr-bytes="2",total-bytes="2", 29606next-row="0x00001512",prev-row="0x0000150e", 29607next-page="0x00001512",prev-page="0x0000150e",memory=[ 29608@{addr="0x00001510",data=["128"]@}] 29609(gdb) 29610@end smallexample 29611 29612Read thirty two bytes of memory starting at @code{bytes+16} and format 29613as eight rows of four columns. Include a string encoding with @samp{x} 29614used as the non-printable character. 29615 29616@smallexample 29617(gdb) 296184-data-read-memory bytes+16 x 1 8 4 x 296194^done,addr="0x000013a0",nr-bytes="32",total-bytes="32", 29620next-row="0x000013c0",prev-row="0x0000139c", 29621next-page="0x000013c0",prev-page="0x00001380",memory=[ 29622@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@}, 29623@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@}, 29624@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@}, 29625@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@}, 29626@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@}, 29627@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@}, 29628@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@}, 29629@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}] 29630(gdb) 29631@end smallexample 29632 29633@subheading The @code{-data-read-memory-bytes} Command 29634@findex -data-read-memory-bytes 29635 29636@subsubheading Synopsis 29637 29638@smallexample 29639 -data-read-memory-bytes [ -o @var{byte-offset} ] 29640 @var{address} @var{count} 29641@end smallexample 29642 29643@noindent 29644where: 29645 29646@table @samp 29647@item @var{address} 29648An expression specifying the address of the first memory word to be 29649read. Complex expressions containing embedded white space should be 29650quoted using the C convention. 29651 29652@item @var{count} 29653The number of bytes to read. This should be an integer literal. 29654 29655@item @var{byte-offset} 29656The offsets in bytes relative to @var{address} at which to start 29657reading. This should be an integer literal. This option is provided 29658so that a frontend is not required to first evaluate address and then 29659perform address arithmetics itself. 29660 29661@end table 29662 29663This command attempts to read all accessible memory regions in the 29664specified range. First, all regions marked as unreadable in the memory 29665map (if one is defined) will be skipped. @xref{Memory Region 29666Attributes}. Second, @value{GDBN} will attempt to read the remaining 29667regions. For each one, if reading full region results in an errors, 29668@value{GDBN} will try to read a subset of the region. 29669 29670In general, every single byte in the region may be readable or not, 29671and the only way to read every readable byte is to try a read at 29672every address, which is not practical. Therefore, @value{GDBN} will 29673attempt to read all accessible bytes at either beginning or the end 29674of the region, using a binary division scheme. This heuristic works 29675well for reading accross a memory map boundary. Note that if a region 29676has a readable range that is neither at the beginning or the end, 29677@value{GDBN} will not read it. 29678 29679The result record (@pxref{GDB/MI Result Records}) that is output of 29680the command includes a field named @samp{memory} whose content is a 29681list of tuples. Each tuple represent a successfully read memory block 29682and has the following fields: 29683 29684@table @code 29685@item begin 29686The start address of the memory block, as hexadecimal literal. 29687 29688@item end 29689The end address of the memory block, as hexadecimal literal. 29690 29691@item offset 29692The offset of the memory block, as hexadecimal literal, relative to 29693the start address passed to @code{-data-read-memory-bytes}. 29694 29695@item contents 29696The contents of the memory block, in hex. 29697 29698@end table 29699 29700 29701 29702@subsubheading @value{GDBN} Command 29703 29704The corresponding @value{GDBN} command is @samp{x}. 29705 29706@subsubheading Example 29707 29708@smallexample 29709(gdb) 29710-data-read-memory-bytes &a 10 29711^done,memory=[@{begin="0xbffff154",offset="0x00000000", 29712 end="0xbffff15e", 29713 contents="01000000020000000300"@}] 29714(gdb) 29715@end smallexample 29716 29717 29718@subheading The @code{-data-write-memory-bytes} Command 29719@findex -data-write-memory-bytes 29720 29721@subsubheading Synopsis 29722 29723@smallexample 29724 -data-write-memory-bytes @var{address} @var{contents} 29725 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]} 29726@end smallexample 29727 29728@noindent 29729where: 29730 29731@table @samp 29732@item @var{address} 29733An expression specifying the address of the first memory word to be 29734read. Complex expressions containing embedded white space should be 29735quoted using the C convention. 29736 29737@item @var{contents} 29738The hex-encoded bytes to write. 29739 29740@item @var{count} 29741Optional argument indicating the number of bytes to be written. If @var{count} 29742is greater than @var{contents}' length, @value{GDBN} will repeatedly 29743write @var{contents} until it fills @var{count} bytes. 29744 29745@end table 29746 29747@subsubheading @value{GDBN} Command 29748 29749There's no corresponding @value{GDBN} command. 29750 29751@subsubheading Example 29752 29753@smallexample 29754(gdb) 29755-data-write-memory-bytes &a "aabbccdd" 29756^done 29757(gdb) 29758@end smallexample 29759 29760@smallexample 29761(gdb) 29762-data-write-memory-bytes &a "aabbccdd" 16e 29763^done 29764(gdb) 29765@end smallexample 29766 29767@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29768@node GDB/MI Tracepoint Commands 29769@section @sc{gdb/mi} Tracepoint Commands 29770 29771The commands defined in this section implement MI support for 29772tracepoints. For detailed introduction, see @ref{Tracepoints}. 29773 29774@subheading The @code{-trace-find} Command 29775@findex -trace-find 29776 29777@subsubheading Synopsis 29778 29779@smallexample 29780 -trace-find @var{mode} [@var{parameters}@dots{}] 29781@end smallexample 29782 29783Find a trace frame using criteria defined by @var{mode} and 29784@var{parameters}. The following table lists permissible 29785modes and their parameters. For details of operation, see @ref{tfind}. 29786 29787@table @samp 29788 29789@item none 29790No parameters are required. Stops examining trace frames. 29791 29792@item frame-number 29793An integer is required as parameter. Selects tracepoint frame with 29794that index. 29795 29796@item tracepoint-number 29797An integer is required as parameter. Finds next 29798trace frame that corresponds to tracepoint with the specified number. 29799 29800@item pc 29801An address is required as parameter. Finds 29802next trace frame that corresponds to any tracepoint at the specified 29803address. 29804 29805@item pc-inside-range 29806Two addresses are required as parameters. Finds next trace 29807frame that corresponds to a tracepoint at an address inside the 29808specified range. Both bounds are considered to be inside the range. 29809 29810@item pc-outside-range 29811Two addresses are required as parameters. Finds 29812next trace frame that corresponds to a tracepoint at an address outside 29813the specified range. Both bounds are considered to be inside the range. 29814 29815@item line 29816Line specification is required as parameter. @xref{Specify Location}. 29817Finds next trace frame that corresponds to a tracepoint at 29818the specified location. 29819 29820@end table 29821 29822If @samp{none} was passed as @var{mode}, the response does not 29823have fields. Otherwise, the response may have the following fields: 29824 29825@table @samp 29826@item found 29827This field has either @samp{0} or @samp{1} as the value, depending 29828on whether a matching tracepoint was found. 29829 29830@item traceframe 29831The index of the found traceframe. This field is present iff 29832the @samp{found} field has value of @samp{1}. 29833 29834@item tracepoint 29835The index of the found tracepoint. This field is present iff 29836the @samp{found} field has value of @samp{1}. 29837 29838@item frame 29839The information about the frame corresponding to the found trace 29840frame. This field is present only if a trace frame was found. 29841@xref{GDB/MI Frame Information}, for description of this field. 29842 29843@end table 29844 29845@subsubheading @value{GDBN} Command 29846 29847The corresponding @value{GDBN} command is @samp{tfind}. 29848 29849@subheading -trace-define-variable 29850@findex -trace-define-variable 29851 29852@subsubheading Synopsis 29853 29854@smallexample 29855 -trace-define-variable @var{name} [ @var{value} ] 29856@end smallexample 29857 29858Create trace variable @var{name} if it does not exist. If 29859@var{value} is specified, sets the initial value of the specified 29860trace variable to that value. Note that the @var{name} should start 29861with the @samp{$} character. 29862 29863@subsubheading @value{GDBN} Command 29864 29865The corresponding @value{GDBN} command is @samp{tvariable}. 29866 29867@subheading The @code{-trace-frame-collected} Command 29868@findex -trace-frame-collected 29869 29870@subsubheading Synopsis 29871 29872@smallexample 29873 -trace-frame-collected 29874 [--var-print-values @var{var_pval}] 29875 [--comp-print-values @var{comp_pval}] 29876 [--registers-format @var{regformat}] 29877 [--memory-contents] 29878@end smallexample 29879 29880This command returns the set of collected objects, register names, 29881trace state variable names, memory ranges and computed expressions 29882that have been collected at a particular trace frame. The optional 29883parameters to the command affect the output format in different ways. 29884See the output description table below for more details. 29885 29886The reported names can be used in the normal manner to create 29887varobjs and inspect the objects themselves. The items returned by 29888this command are categorized so that it is clear which is a variable, 29889which is a register, which is a trace state variable, which is a 29890memory range and which is a computed expression. 29891 29892For instance, if the actions were 29893@smallexample 29894collect myVar, myArray[myIndex], myObj.field, myPtr->field, myCount + 2 29895collect *(int*)0xaf02bef0@@40 29896@end smallexample 29897 29898@noindent 29899the object collected in its entirety would be @code{myVar}. The 29900object @code{myArray} would be partially collected, because only the 29901element at index @code{myIndex} would be collected. The remaining 29902objects would be computed expressions. 29903 29904An example output would be: 29905 29906@smallexample 29907(gdb) 29908-trace-frame-collected 29909^done, 29910 explicit-variables=[@{name="myVar",value="1"@}], 29911 computed-expressions=[@{name="myArray[myIndex]",value="0"@}, 29912 @{name="myObj.field",value="0"@}, 29913 @{name="myPtr->field",value="1"@}, 29914 @{name="myCount + 2",value="3"@}, 29915 @{name="$tvar1 + 1",value="43970027"@}], 29916 registers=[@{number="0",value="0x7fe2c6e79ec8"@}, 29917 @{number="1",value="0x0"@}, 29918 @{number="2",value="0x4"@}, 29919 ... 29920 @{number="125",value="0x0"@}], 29921 tvars=[@{name="$tvar1",current="43970026"@}], 29922 memory=[@{address="0x0000000000602264",length="4"@}, 29923 @{address="0x0000000000615bc0",length="4"@}] 29924(gdb) 29925@end smallexample 29926 29927Where: 29928 29929@table @code 29930@item explicit-variables 29931The set of objects that have been collected in their entirety (as 29932opposed to collecting just a few elements of an array or a few struct 29933members). For each object, its name and value are printed. 29934The @code{--var-print-values} option affects how or whether the value 29935field is output. If @var{var_pval} is 0, then print only the names; 29936if it is 1, print also their values; and if it is 2, print the name, 29937type and value for simple data types, and the name and type for 29938arrays, structures and unions. 29939 29940@item computed-expressions 29941The set of computed expressions that have been collected at the 29942current trace frame. The @code{--comp-print-values} option affects 29943this set like the @code{--var-print-values} option affects the 29944@code{explicit-variables} set. See above. 29945 29946@item registers 29947The registers that have been collected at the current trace frame. 29948For each register collected, the name and current value are returned. 29949The value is formatted according to the @code{--registers-format} 29950option. See the @command{-data-list-register-values} command for a 29951list of the allowed formats. The default is @samp{x}. 29952 29953@item tvars 29954The trace state variables that have been collected at the current 29955trace frame. For each trace state variable collected, the name and 29956current value are returned. 29957 29958@item memory 29959The set of memory ranges that have been collected at the current trace 29960frame. Its content is a list of tuples. Each tuple represents a 29961collected memory range and has the following fields: 29962 29963@table @code 29964@item address 29965The start address of the memory range, as hexadecimal literal. 29966 29967@item length 29968The length of the memory range, as decimal literal. 29969 29970@item contents 29971The contents of the memory block, in hex. This field is only present 29972if the @code{--memory-contents} option is specified. 29973 29974@end table 29975 29976@end table 29977 29978@subsubheading @value{GDBN} Command 29979 29980There is no corresponding @value{GDBN} command. 29981 29982@subsubheading Example 29983 29984@subheading -trace-list-variables 29985@findex -trace-list-variables 29986 29987@subsubheading Synopsis 29988 29989@smallexample 29990 -trace-list-variables 29991@end smallexample 29992 29993Return a table of all defined trace variables. Each element of the 29994table has the following fields: 29995 29996@table @samp 29997@item name 29998The name of the trace variable. This field is always present. 29999 30000@item initial 30001The initial value. This is a 64-bit signed integer. This 30002field is always present. 30003 30004@item current 30005The value the trace variable has at the moment. This is a 64-bit 30006signed integer. This field is absent iff current value is 30007not defined, for example if the trace was never run, or is 30008presently running. 30009 30010@end table 30011 30012@subsubheading @value{GDBN} Command 30013 30014The corresponding @value{GDBN} command is @samp{tvariables}. 30015 30016@subsubheading Example 30017 30018@smallexample 30019(gdb) 30020-trace-list-variables 30021^done,trace-variables=@{nr_rows="1",nr_cols="3", 30022hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@}, 30023 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@}, 30024 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}], 30025body=[variable=@{name="$trace_timestamp",initial="0"@} 30026 variable=@{name="$foo",initial="10",current="15"@}]@} 30027(gdb) 30028@end smallexample 30029 30030@subheading -trace-save 30031@findex -trace-save 30032 30033@subsubheading Synopsis 30034 30035@smallexample 30036 -trace-save [-r ] @var{filename} 30037@end smallexample 30038 30039Saves the collected trace data to @var{filename}. Without the 30040@samp{-r} option, the data is downloaded from the target and saved 30041in a local file. With the @samp{-r} option the target is asked 30042to perform the save. 30043 30044@subsubheading @value{GDBN} Command 30045 30046The corresponding @value{GDBN} command is @samp{tsave}. 30047 30048 30049@subheading -trace-start 30050@findex -trace-start 30051 30052@subsubheading Synopsis 30053 30054@smallexample 30055 -trace-start 30056@end smallexample 30057 30058Starts a tracing experiments. The result of this command does not 30059have any fields. 30060 30061@subsubheading @value{GDBN} Command 30062 30063The corresponding @value{GDBN} command is @samp{tstart}. 30064 30065@subheading -trace-status 30066@findex -trace-status 30067 30068@subsubheading Synopsis 30069 30070@smallexample 30071 -trace-status 30072@end smallexample 30073 30074Obtains the status of a tracing experiment. The result may include 30075the following fields: 30076 30077@table @samp 30078 30079@item supported 30080May have a value of either @samp{0}, when no tracing operations are 30081supported, @samp{1}, when all tracing operations are supported, or 30082@samp{file} when examining trace file. In the latter case, examining 30083of trace frame is possible but new tracing experiement cannot be 30084started. This field is always present. 30085 30086@item running 30087May have a value of either @samp{0} or @samp{1} depending on whether 30088tracing experiement is in progress on target. This field is present 30089if @samp{supported} field is not @samp{0}. 30090 30091@item stop-reason 30092Report the reason why the tracing was stopped last time. This field 30093may be absent iff tracing was never stopped on target yet. The 30094value of @samp{request} means the tracing was stopped as result of 30095the @code{-trace-stop} command. The value of @samp{overflow} means 30096the tracing buffer is full. The value of @samp{disconnection} means 30097tracing was automatically stopped when @value{GDBN} has disconnected. 30098The value of @samp{passcount} means tracing was stopped when a 30099tracepoint was passed a maximal number of times for that tracepoint. 30100This field is present if @samp{supported} field is not @samp{0}. 30101 30102@item stopping-tracepoint 30103The number of tracepoint whose passcount as exceeded. This field is 30104present iff the @samp{stop-reason} field has the value of 30105@samp{passcount}. 30106 30107@item frames 30108@itemx frames-created 30109The @samp{frames} field is a count of the total number of trace frames 30110in the trace buffer, while @samp{frames-created} is the total created 30111during the run, including ones that were discarded, such as when a 30112circular trace buffer filled up. Both fields are optional. 30113 30114@item buffer-size 30115@itemx buffer-free 30116These fields tell the current size of the tracing buffer and the 30117remaining space. These fields are optional. 30118 30119@item circular 30120The value of the circular trace buffer flag. @code{1} means that the 30121trace buffer is circular and old trace frames will be discarded if 30122necessary to make room, @code{0} means that the trace buffer is linear 30123and may fill up. 30124 30125@item disconnected 30126The value of the disconnected tracing flag. @code{1} means that 30127tracing will continue after @value{GDBN} disconnects, @code{0} means 30128that the trace run will stop. 30129 30130@item trace-file 30131The filename of the trace file being examined. This field is 30132optional, and only present when examining a trace file. 30133 30134@end table 30135 30136@subsubheading @value{GDBN} Command 30137 30138The corresponding @value{GDBN} command is @samp{tstatus}. 30139 30140@subheading -trace-stop 30141@findex -trace-stop 30142 30143@subsubheading Synopsis 30144 30145@smallexample 30146 -trace-stop 30147@end smallexample 30148 30149Stops a tracing experiment. The result of this command has the same 30150fields as @code{-trace-status}, except that the @samp{supported} and 30151@samp{running} fields are not output. 30152 30153@subsubheading @value{GDBN} Command 30154 30155The corresponding @value{GDBN} command is @samp{tstop}. 30156 30157 30158@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30159@node GDB/MI Symbol Query 30160@section @sc{gdb/mi} Symbol Query Commands 30161 30162 30163@ignore 30164@subheading The @code{-symbol-info-address} Command 30165@findex -symbol-info-address 30166 30167@subsubheading Synopsis 30168 30169@smallexample 30170 -symbol-info-address @var{symbol} 30171@end smallexample 30172 30173Describe where @var{symbol} is stored. 30174 30175@subsubheading @value{GDBN} Command 30176 30177The corresponding @value{GDBN} command is @samp{info address}. 30178 30179@subsubheading Example 30180N.A. 30181 30182 30183@subheading The @code{-symbol-info-file} Command 30184@findex -symbol-info-file 30185 30186@subsubheading Synopsis 30187 30188@smallexample 30189 -symbol-info-file 30190@end smallexample 30191 30192Show the file for the symbol. 30193 30194@subsubheading @value{GDBN} Command 30195 30196There's no equivalent @value{GDBN} command. @code{gdbtk} has 30197@samp{gdb_find_file}. 30198 30199@subsubheading Example 30200N.A. 30201 30202 30203@subheading The @code{-symbol-info-function} Command 30204@findex -symbol-info-function 30205 30206@subsubheading Synopsis 30207 30208@smallexample 30209 -symbol-info-function 30210@end smallexample 30211 30212Show which function the symbol lives in. 30213 30214@subsubheading @value{GDBN} Command 30215 30216@samp{gdb_get_function} in @code{gdbtk}. 30217 30218@subsubheading Example 30219N.A. 30220 30221 30222@subheading The @code{-symbol-info-line} Command 30223@findex -symbol-info-line 30224 30225@subsubheading Synopsis 30226 30227@smallexample 30228 -symbol-info-line 30229@end smallexample 30230 30231Show the core addresses of the code for a source line. 30232 30233@subsubheading @value{GDBN} Command 30234 30235The corresponding @value{GDBN} command is @samp{info line}. 30236@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands. 30237 30238@subsubheading Example 30239N.A. 30240 30241 30242@subheading The @code{-symbol-info-symbol} Command 30243@findex -symbol-info-symbol 30244 30245@subsubheading Synopsis 30246 30247@smallexample 30248 -symbol-info-symbol @var{addr} 30249@end smallexample 30250 30251Describe what symbol is at location @var{addr}. 30252 30253@subsubheading @value{GDBN} Command 30254 30255The corresponding @value{GDBN} command is @samp{info symbol}. 30256 30257@subsubheading Example 30258N.A. 30259 30260 30261@subheading The @code{-symbol-list-functions} Command 30262@findex -symbol-list-functions 30263 30264@subsubheading Synopsis 30265 30266@smallexample 30267 -symbol-list-functions 30268@end smallexample 30269 30270List the functions in the executable. 30271 30272@subsubheading @value{GDBN} Command 30273 30274@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and 30275@samp{gdb_search} in @code{gdbtk}. 30276 30277@subsubheading Example 30278N.A. 30279@end ignore 30280 30281 30282@subheading The @code{-symbol-list-lines} Command 30283@findex -symbol-list-lines 30284 30285@subsubheading Synopsis 30286 30287@smallexample 30288 -symbol-list-lines @var{filename} 30289@end smallexample 30290 30291Print the list of lines that contain code and their associated program 30292addresses for the given source filename. The entries are sorted in 30293ascending PC order. 30294 30295@subsubheading @value{GDBN} Command 30296 30297There is no corresponding @value{GDBN} command. 30298 30299@subsubheading Example 30300@smallexample 30301(gdb) 30302-symbol-list-lines basics.c 30303^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}] 30304(gdb) 30305@end smallexample 30306 30307 30308@ignore 30309@subheading The @code{-symbol-list-types} Command 30310@findex -symbol-list-types 30311 30312@subsubheading Synopsis 30313 30314@smallexample 30315 -symbol-list-types 30316@end smallexample 30317 30318List all the type names. 30319 30320@subsubheading @value{GDBN} Command 30321 30322The corresponding commands are @samp{info types} in @value{GDBN}, 30323@samp{gdb_search} in @code{gdbtk}. 30324 30325@subsubheading Example 30326N.A. 30327 30328 30329@subheading The @code{-symbol-list-variables} Command 30330@findex -symbol-list-variables 30331 30332@subsubheading Synopsis 30333 30334@smallexample 30335 -symbol-list-variables 30336@end smallexample 30337 30338List all the global and static variable names. 30339 30340@subsubheading @value{GDBN} Command 30341 30342@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}. 30343 30344@subsubheading Example 30345N.A. 30346 30347 30348@subheading The @code{-symbol-locate} Command 30349@findex -symbol-locate 30350 30351@subsubheading Synopsis 30352 30353@smallexample 30354 -symbol-locate 30355@end smallexample 30356 30357@subsubheading @value{GDBN} Command 30358 30359@samp{gdb_loc} in @code{gdbtk}. 30360 30361@subsubheading Example 30362N.A. 30363 30364 30365@subheading The @code{-symbol-type} Command 30366@findex -symbol-type 30367 30368@subsubheading Synopsis 30369 30370@smallexample 30371 -symbol-type @var{variable} 30372@end smallexample 30373 30374Show type of @var{variable}. 30375 30376@subsubheading @value{GDBN} Command 30377 30378The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has 30379@samp{gdb_obj_variable}. 30380 30381@subsubheading Example 30382N.A. 30383@end ignore 30384 30385 30386@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30387@node GDB/MI File Commands 30388@section @sc{gdb/mi} File Commands 30389 30390This section describes the GDB/MI commands to specify executable file names 30391and to read in and obtain symbol table information. 30392 30393@subheading The @code{-file-exec-and-symbols} Command 30394@findex -file-exec-and-symbols 30395 30396@subsubheading Synopsis 30397 30398@smallexample 30399 -file-exec-and-symbols @var{file} 30400@end smallexample 30401 30402Specify the executable file to be debugged. This file is the one from 30403which the symbol table is also read. If no file is specified, the 30404command clears the executable and symbol information. If breakpoints 30405are set when using this command with no arguments, @value{GDBN} will produce 30406error messages. Otherwise, no output is produced, except a completion 30407notification. 30408 30409@subsubheading @value{GDBN} Command 30410 30411The corresponding @value{GDBN} command is @samp{file}. 30412 30413@subsubheading Example 30414 30415@smallexample 30416(gdb) 30417-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 30418^done 30419(gdb) 30420@end smallexample 30421 30422 30423@subheading The @code{-file-exec-file} Command 30424@findex -file-exec-file 30425 30426@subsubheading Synopsis 30427 30428@smallexample 30429 -file-exec-file @var{file} 30430@end smallexample 30431 30432Specify the executable file to be debugged. Unlike 30433@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read 30434from this file. If used without argument, @value{GDBN} clears the information 30435about the executable file. No output is produced, except a completion 30436notification. 30437 30438@subsubheading @value{GDBN} Command 30439 30440The corresponding @value{GDBN} command is @samp{exec-file}. 30441 30442@subsubheading Example 30443 30444@smallexample 30445(gdb) 30446-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 30447^done 30448(gdb) 30449@end smallexample 30450 30451 30452@ignore 30453@subheading The @code{-file-list-exec-sections} Command 30454@findex -file-list-exec-sections 30455 30456@subsubheading Synopsis 30457 30458@smallexample 30459 -file-list-exec-sections 30460@end smallexample 30461 30462List the sections of the current executable file. 30463 30464@subsubheading @value{GDBN} Command 30465 30466The @value{GDBN} command @samp{info file} shows, among the rest, the same 30467information as this command. @code{gdbtk} has a corresponding command 30468@samp{gdb_load_info}. 30469 30470@subsubheading Example 30471N.A. 30472@end ignore 30473 30474 30475@subheading The @code{-file-list-exec-source-file} Command 30476@findex -file-list-exec-source-file 30477 30478@subsubheading Synopsis 30479 30480@smallexample 30481 -file-list-exec-source-file 30482@end smallexample 30483 30484List the line number, the current source file, and the absolute path 30485to the current source file for the current executable. The macro 30486information field has a value of @samp{1} or @samp{0} depending on 30487whether or not the file includes preprocessor macro information. 30488 30489@subsubheading @value{GDBN} Command 30490 30491The @value{GDBN} equivalent is @samp{info source} 30492 30493@subsubheading Example 30494 30495@smallexample 30496(gdb) 30497123-file-list-exec-source-file 30498123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1" 30499(gdb) 30500@end smallexample 30501 30502 30503@subheading The @code{-file-list-exec-source-files} Command 30504@findex -file-list-exec-source-files 30505 30506@subsubheading Synopsis 30507 30508@smallexample 30509 -file-list-exec-source-files 30510@end smallexample 30511 30512List the source files for the current executable. 30513 30514It will always output both the filename and fullname (absolute file 30515name) of a source file. 30516 30517@subsubheading @value{GDBN} Command 30518 30519The @value{GDBN} equivalent is @samp{info sources}. 30520@code{gdbtk} has an analogous command @samp{gdb_listfiles}. 30521 30522@subsubheading Example 30523@smallexample 30524(gdb) 30525-file-list-exec-source-files 30526^done,files=[ 30527@{file=foo.c,fullname=/home/foo.c@}, 30528@{file=/home/bar.c,fullname=/home/bar.c@}, 30529@{file=gdb_could_not_find_fullpath.c@}] 30530(gdb) 30531@end smallexample 30532 30533@ignore 30534@subheading The @code{-file-list-shared-libraries} Command 30535@findex -file-list-shared-libraries 30536 30537@subsubheading Synopsis 30538 30539@smallexample 30540 -file-list-shared-libraries 30541@end smallexample 30542 30543List the shared libraries in the program. 30544 30545@subsubheading @value{GDBN} Command 30546 30547The corresponding @value{GDBN} command is @samp{info shared}. 30548 30549@subsubheading Example 30550N.A. 30551 30552 30553@subheading The @code{-file-list-symbol-files} Command 30554@findex -file-list-symbol-files 30555 30556@subsubheading Synopsis 30557 30558@smallexample 30559 -file-list-symbol-files 30560@end smallexample 30561 30562List symbol files. 30563 30564@subsubheading @value{GDBN} Command 30565 30566The corresponding @value{GDBN} command is @samp{info file} (part of it). 30567 30568@subsubheading Example 30569N.A. 30570@end ignore 30571 30572 30573@subheading The @code{-file-symbol-file} Command 30574@findex -file-symbol-file 30575 30576@subsubheading Synopsis 30577 30578@smallexample 30579 -file-symbol-file @var{file} 30580@end smallexample 30581 30582Read symbol table info from the specified @var{file} argument. When 30583used without arguments, clears @value{GDBN}'s symbol table info. No output is 30584produced, except for a completion notification. 30585 30586@subsubheading @value{GDBN} Command 30587 30588The corresponding @value{GDBN} command is @samp{symbol-file}. 30589 30590@subsubheading Example 30591 30592@smallexample 30593(gdb) 30594-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 30595^done 30596(gdb) 30597@end smallexample 30598 30599@ignore 30600@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30601@node GDB/MI Memory Overlay Commands 30602@section @sc{gdb/mi} Memory Overlay Commands 30603 30604The memory overlay commands are not implemented. 30605 30606@c @subheading -overlay-auto 30607 30608@c @subheading -overlay-list-mapping-state 30609 30610@c @subheading -overlay-list-overlays 30611 30612@c @subheading -overlay-map 30613 30614@c @subheading -overlay-off 30615 30616@c @subheading -overlay-on 30617 30618@c @subheading -overlay-unmap 30619 30620@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30621@node GDB/MI Signal Handling Commands 30622@section @sc{gdb/mi} Signal Handling Commands 30623 30624Signal handling commands are not implemented. 30625 30626@c @subheading -signal-handle 30627 30628@c @subheading -signal-list-handle-actions 30629 30630@c @subheading -signal-list-signal-types 30631@end ignore 30632 30633 30634@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30635@node GDB/MI Target Manipulation 30636@section @sc{gdb/mi} Target Manipulation Commands 30637 30638 30639@subheading The @code{-target-attach} Command 30640@findex -target-attach 30641 30642@subsubheading Synopsis 30643 30644@smallexample 30645 -target-attach @var{pid} | @var{gid} | @var{file} 30646@end smallexample 30647 30648Attach to a process @var{pid} or a file @var{file} outside of 30649@value{GDBN}, or a thread group @var{gid}. If attaching to a thread 30650group, the id previously returned by 30651@samp{-list-thread-groups --available} must be used. 30652 30653@subsubheading @value{GDBN} Command 30654 30655The corresponding @value{GDBN} command is @samp{attach}. 30656 30657@subsubheading Example 30658@smallexample 30659(gdb) 30660-target-attach 34 30661=thread-created,id="1" 30662*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@} 30663^done 30664(gdb) 30665@end smallexample 30666 30667@ignore 30668@subheading The @code{-target-compare-sections} Command 30669@findex -target-compare-sections 30670 30671@subsubheading Synopsis 30672 30673@smallexample 30674 -target-compare-sections [ @var{section} ] 30675@end smallexample 30676 30677Compare data of section @var{section} on target to the exec file. 30678Without the argument, all sections are compared. 30679 30680@subsubheading @value{GDBN} Command 30681 30682The @value{GDBN} equivalent is @samp{compare-sections}. 30683 30684@subsubheading Example 30685N.A. 30686@end ignore 30687 30688 30689@subheading The @code{-target-detach} Command 30690@findex -target-detach 30691 30692@subsubheading Synopsis 30693 30694@smallexample 30695 -target-detach [ @var{pid} | @var{gid} ] 30696@end smallexample 30697 30698Detach from the remote target which normally resumes its execution. 30699If either @var{pid} or @var{gid} is specified, detaches from either 30700the specified process, or specified thread group. There's no output. 30701 30702@subsubheading @value{GDBN} Command 30703 30704The corresponding @value{GDBN} command is @samp{detach}. 30705 30706@subsubheading Example 30707 30708@smallexample 30709(gdb) 30710-target-detach 30711^done 30712(gdb) 30713@end smallexample 30714 30715 30716@subheading The @code{-target-disconnect} Command 30717@findex -target-disconnect 30718 30719@subsubheading Synopsis 30720 30721@smallexample 30722 -target-disconnect 30723@end smallexample 30724 30725Disconnect from the remote target. There's no output and the target is 30726generally not resumed. 30727 30728@subsubheading @value{GDBN} Command 30729 30730The corresponding @value{GDBN} command is @samp{disconnect}. 30731 30732@subsubheading Example 30733 30734@smallexample 30735(gdb) 30736-target-disconnect 30737^done 30738(gdb) 30739@end smallexample 30740 30741 30742@subheading The @code{-target-download} Command 30743@findex -target-download 30744 30745@subsubheading Synopsis 30746 30747@smallexample 30748 -target-download 30749@end smallexample 30750 30751Loads the executable onto the remote target. 30752It prints out an update message every half second, which includes the fields: 30753 30754@table @samp 30755@item section 30756The name of the section. 30757@item section-sent 30758The size of what has been sent so far for that section. 30759@item section-size 30760The size of the section. 30761@item total-sent 30762The total size of what was sent so far (the current and the previous sections). 30763@item total-size 30764The size of the overall executable to download. 30765@end table 30766 30767@noindent 30768Each message is sent as status record (@pxref{GDB/MI Output Syntax, , 30769@sc{gdb/mi} Output Syntax}). 30770 30771In addition, it prints the name and size of the sections, as they are 30772downloaded. These messages include the following fields: 30773 30774@table @samp 30775@item section 30776The name of the section. 30777@item section-size 30778The size of the section. 30779@item total-size 30780The size of the overall executable to download. 30781@end table 30782 30783@noindent 30784At the end, a summary is printed. 30785 30786@subsubheading @value{GDBN} Command 30787 30788The corresponding @value{GDBN} command is @samp{load}. 30789 30790@subsubheading Example 30791 30792Note: each status message appears on a single line. Here the messages 30793have been broken down so that they can fit onto a page. 30794 30795@smallexample 30796(gdb) 30797-target-download 30798+download,@{section=".text",section-size="6668",total-size="9880"@} 30799+download,@{section=".text",section-sent="512",section-size="6668", 30800total-sent="512",total-size="9880"@} 30801+download,@{section=".text",section-sent="1024",section-size="6668", 30802total-sent="1024",total-size="9880"@} 30803+download,@{section=".text",section-sent="1536",section-size="6668", 30804total-sent="1536",total-size="9880"@} 30805+download,@{section=".text",section-sent="2048",section-size="6668", 30806total-sent="2048",total-size="9880"@} 30807+download,@{section=".text",section-sent="2560",section-size="6668", 30808total-sent="2560",total-size="9880"@} 30809+download,@{section=".text",section-sent="3072",section-size="6668", 30810total-sent="3072",total-size="9880"@} 30811+download,@{section=".text",section-sent="3584",section-size="6668", 30812total-sent="3584",total-size="9880"@} 30813+download,@{section=".text",section-sent="4096",section-size="6668", 30814total-sent="4096",total-size="9880"@} 30815+download,@{section=".text",section-sent="4608",section-size="6668", 30816total-sent="4608",total-size="9880"@} 30817+download,@{section=".text",section-sent="5120",section-size="6668", 30818total-sent="5120",total-size="9880"@} 30819+download,@{section=".text",section-sent="5632",section-size="6668", 30820total-sent="5632",total-size="9880"@} 30821+download,@{section=".text",section-sent="6144",section-size="6668", 30822total-sent="6144",total-size="9880"@} 30823+download,@{section=".text",section-sent="6656",section-size="6668", 30824total-sent="6656",total-size="9880"@} 30825+download,@{section=".init",section-size="28",total-size="9880"@} 30826+download,@{section=".fini",section-size="28",total-size="9880"@} 30827+download,@{section=".data",section-size="3156",total-size="9880"@} 30828+download,@{section=".data",section-sent="512",section-size="3156", 30829total-sent="7236",total-size="9880"@} 30830+download,@{section=".data",section-sent="1024",section-size="3156", 30831total-sent="7748",total-size="9880"@} 30832+download,@{section=".data",section-sent="1536",section-size="3156", 30833total-sent="8260",total-size="9880"@} 30834+download,@{section=".data",section-sent="2048",section-size="3156", 30835total-sent="8772",total-size="9880"@} 30836+download,@{section=".data",section-sent="2560",section-size="3156", 30837total-sent="9284",total-size="9880"@} 30838+download,@{section=".data",section-sent="3072",section-size="3156", 30839total-sent="9796",total-size="9880"@} 30840^done,address="0x10004",load-size="9880",transfer-rate="6586", 30841write-rate="429" 30842(gdb) 30843@end smallexample 30844 30845 30846@ignore 30847@subheading The @code{-target-exec-status} Command 30848@findex -target-exec-status 30849 30850@subsubheading Synopsis 30851 30852@smallexample 30853 -target-exec-status 30854@end smallexample 30855 30856Provide information on the state of the target (whether it is running or 30857not, for instance). 30858 30859@subsubheading @value{GDBN} Command 30860 30861There's no equivalent @value{GDBN} command. 30862 30863@subsubheading Example 30864N.A. 30865 30866 30867@subheading The @code{-target-list-available-targets} Command 30868@findex -target-list-available-targets 30869 30870@subsubheading Synopsis 30871 30872@smallexample 30873 -target-list-available-targets 30874@end smallexample 30875 30876List the possible targets to connect to. 30877 30878@subsubheading @value{GDBN} Command 30879 30880The corresponding @value{GDBN} command is @samp{help target}. 30881 30882@subsubheading Example 30883N.A. 30884 30885 30886@subheading The @code{-target-list-current-targets} Command 30887@findex -target-list-current-targets 30888 30889@subsubheading Synopsis 30890 30891@smallexample 30892 -target-list-current-targets 30893@end smallexample 30894 30895Describe the current target. 30896 30897@subsubheading @value{GDBN} Command 30898 30899The corresponding information is printed by @samp{info file} (among 30900other things). 30901 30902@subsubheading Example 30903N.A. 30904 30905 30906@subheading The @code{-target-list-parameters} Command 30907@findex -target-list-parameters 30908 30909@subsubheading Synopsis 30910 30911@smallexample 30912 -target-list-parameters 30913@end smallexample 30914 30915@c ???? 30916@end ignore 30917 30918@subsubheading @value{GDBN} Command 30919 30920No equivalent. 30921 30922@subsubheading Example 30923N.A. 30924 30925 30926@subheading The @code{-target-select} Command 30927@findex -target-select 30928 30929@subsubheading Synopsis 30930 30931@smallexample 30932 -target-select @var{type} @var{parameters @dots{}} 30933@end smallexample 30934 30935Connect @value{GDBN} to the remote target. This command takes two args: 30936 30937@table @samp 30938@item @var{type} 30939The type of target, for instance @samp{remote}, etc. 30940@item @var{parameters} 30941Device names, host names and the like. @xref{Target Commands, , 30942Commands for Managing Targets}, for more details. 30943@end table 30944 30945The output is a connection notification, followed by the address at 30946which the target program is, in the following form: 30947 30948@smallexample 30949^connected,addr="@var{address}",func="@var{function name}", 30950 args=[@var{arg list}] 30951@end smallexample 30952 30953@subsubheading @value{GDBN} Command 30954 30955The corresponding @value{GDBN} command is @samp{target}. 30956 30957@subsubheading Example 30958 30959@smallexample 30960(gdb) 30961-target-select remote /dev/ttya 30962^connected,addr="0xfe00a300",func="??",args=[] 30963(gdb) 30964@end smallexample 30965 30966@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30967@node GDB/MI File Transfer Commands 30968@section @sc{gdb/mi} File Transfer Commands 30969 30970 30971@subheading The @code{-target-file-put} Command 30972@findex -target-file-put 30973 30974@subsubheading Synopsis 30975 30976@smallexample 30977 -target-file-put @var{hostfile} @var{targetfile} 30978@end smallexample 30979 30980Copy file @var{hostfile} from the host system (the machine running 30981@value{GDBN}) to @var{targetfile} on the target system. 30982 30983@subsubheading @value{GDBN} Command 30984 30985The corresponding @value{GDBN} command is @samp{remote put}. 30986 30987@subsubheading Example 30988 30989@smallexample 30990(gdb) 30991-target-file-put localfile remotefile 30992^done 30993(gdb) 30994@end smallexample 30995 30996 30997@subheading The @code{-target-file-get} Command 30998@findex -target-file-get 30999 31000@subsubheading Synopsis 31001 31002@smallexample 31003 -target-file-get @var{targetfile} @var{hostfile} 31004@end smallexample 31005 31006Copy file @var{targetfile} from the target system to @var{hostfile} 31007on the host system. 31008 31009@subsubheading @value{GDBN} Command 31010 31011The corresponding @value{GDBN} command is @samp{remote get}. 31012 31013@subsubheading Example 31014 31015@smallexample 31016(gdb) 31017-target-file-get remotefile localfile 31018^done 31019(gdb) 31020@end smallexample 31021 31022 31023@subheading The @code{-target-file-delete} Command 31024@findex -target-file-delete 31025 31026@subsubheading Synopsis 31027 31028@smallexample 31029 -target-file-delete @var{targetfile} 31030@end smallexample 31031 31032Delete @var{targetfile} from the target system. 31033 31034@subsubheading @value{GDBN} Command 31035 31036The corresponding @value{GDBN} command is @samp{remote delete}. 31037 31038@subsubheading Example 31039 31040@smallexample 31041(gdb) 31042-target-file-delete remotefile 31043^done 31044(gdb) 31045@end smallexample 31046 31047 31048@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31049@node GDB/MI Ada Exceptions Commands 31050@section Ada Exceptions @sc{gdb/mi} Commands 31051 31052@subheading The @code{-info-ada-exceptions} Command 31053@findex -info-ada-exceptions 31054 31055@subsubheading Synopsis 31056 31057@smallexample 31058 -info-ada-exceptions [ @var{regexp}] 31059@end smallexample 31060 31061List all Ada exceptions defined within the program being debugged. 31062With a regular expression @var{regexp}, only those exceptions whose 31063names match @var{regexp} are listed. 31064 31065@subsubheading @value{GDBN} Command 31066 31067The corresponding @value{GDBN} command is @samp{info exceptions}. 31068 31069@subsubheading Result 31070 31071The result is a table of Ada exceptions. The following columns are 31072defined for each exception: 31073 31074@table @samp 31075@item name 31076The name of the exception. 31077 31078@item address 31079The address of the exception. 31080 31081@end table 31082 31083@subsubheading Example 31084 31085@smallexample 31086-info-ada-exceptions aint 31087^done,ada-exceptions=@{nr_rows="2",nr_cols="2", 31088hdr=[@{width="1",alignment="-1",col_name="name",colhdr="Name"@}, 31089@{width="1",alignment="-1",col_name="address",colhdr="Address"@}], 31090body=[@{name="constraint_error",address="0x0000000000613da0"@}, 31091@{name="const.aint_global_e",address="0x0000000000613b00"@}]@} 31092@end smallexample 31093 31094@subheading Catching Ada Exceptions 31095 31096The commands describing how to ask @value{GDBN} to stop when a program 31097raises an exception are described at @ref{Ada Exception GDB/MI 31098Catchpoint Commands}. 31099 31100 31101@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31102@node GDB/MI Support Commands 31103@section @sc{gdb/mi} Support Commands 31104 31105Since new commands and features get regularly added to @sc{gdb/mi}, 31106some commands are available to help front-ends query the debugger 31107about support for these capabilities. Similarly, it is also possible 31108to query @value{GDBN} about target support of certain features. 31109 31110@subheading The @code{-info-gdb-mi-command} Command 31111@cindex @code{-info-gdb-mi-command} 31112@findex -info-gdb-mi-command 31113 31114@subsubheading Synopsis 31115 31116@smallexample 31117 -info-gdb-mi-command @var{cmd_name} 31118@end smallexample 31119 31120Query support for the @sc{gdb/mi} command named @var{cmd_name}. 31121 31122Note that the dash (@code{-}) starting all @sc{gdb/mi} commands 31123is technically not part of the command name (@pxref{GDB/MI Input 31124Syntax}), and thus should be omitted in @var{cmd_name}. However, 31125for ease of use, this command also accepts the form with the leading 31126dash. 31127 31128@subsubheading @value{GDBN} Command 31129 31130There is no corresponding @value{GDBN} command. 31131 31132@subsubheading Result 31133 31134The result is a tuple. There is currently only one field: 31135 31136@table @samp 31137@item exists 31138This field is equal to @code{"true"} if the @sc{gdb/mi} command exists, 31139@code{"false"} otherwise. 31140 31141@end table 31142 31143@subsubheading Example 31144 31145Here is an example where the @sc{gdb/mi} command does not exist: 31146 31147@smallexample 31148-info-gdb-mi-command unsupported-command 31149^done,command=@{exists="false"@} 31150@end smallexample 31151 31152@noindent 31153And here is an example where the @sc{gdb/mi} command is known 31154to the debugger: 31155 31156@smallexample 31157-info-gdb-mi-command symbol-list-lines 31158^done,command=@{exists="true"@} 31159@end smallexample 31160 31161@subheading The @code{-list-features} Command 31162@findex -list-features 31163@cindex supported @sc{gdb/mi} features, list 31164 31165Returns a list of particular features of the MI protocol that 31166this version of gdb implements. A feature can be a command, 31167or a new field in an output of some command, or even an 31168important bugfix. While a frontend can sometimes detect presence 31169of a feature at runtime, it is easier to perform detection at debugger 31170startup. 31171 31172The command returns a list of strings, with each string naming an 31173available feature. Each returned string is just a name, it does not 31174have any internal structure. The list of possible feature names 31175is given below. 31176 31177Example output: 31178 31179@smallexample 31180(gdb) -list-features 31181^done,result=["feature1","feature2"] 31182@end smallexample 31183 31184The current list of features is: 31185 31186@ftable @samp 31187@item frozen-varobjs 31188Indicates support for the @code{-var-set-frozen} command, as well 31189as possible presense of the @code{frozen} field in the output 31190of @code{-varobj-create}. 31191@item pending-breakpoints 31192Indicates support for the @option{-f} option to the @code{-break-insert} 31193command. 31194@item python 31195Indicates Python scripting support, Python-based 31196pretty-printing commands, and possible presence of the 31197@samp{display_hint} field in the output of @code{-var-list-children} 31198@item thread-info 31199Indicates support for the @code{-thread-info} command. 31200@item data-read-memory-bytes 31201Indicates support for the @code{-data-read-memory-bytes} and the 31202@code{-data-write-memory-bytes} commands. 31203@item breakpoint-notifications 31204Indicates that changes to breakpoints and breakpoints created via the 31205CLI will be announced via async records. 31206@item ada-task-info 31207Indicates support for the @code{-ada-task-info} command. 31208@item language-option 31209Indicates that all @sc{gdb/mi} commands accept the @option{--language} 31210option (@pxref{Context management}). 31211@item info-gdb-mi-command 31212Indicates support for the @code{-info-gdb-mi-command} command. 31213@item undefined-command-error-code 31214Indicates support for the "undefined-command" error code in error result 31215records, produced when trying to execute an undefined @sc{gdb/mi} command 31216(@pxref{GDB/MI Result Records}). 31217@item exec-run-start-option 31218Indicates that the @code{-exec-run} command supports the @option{--start} 31219option (@pxref{GDB/MI Program Execution}). 31220@end ftable 31221 31222@subheading The @code{-list-target-features} Command 31223@findex -list-target-features 31224 31225Returns a list of particular features that are supported by the 31226target. Those features affect the permitted MI commands, but 31227unlike the features reported by the @code{-list-features} command, the 31228features depend on which target GDB is using at the moment. Whenever 31229a target can change, due to commands such as @code{-target-select}, 31230@code{-target-attach} or @code{-exec-run}, the list of target features 31231may change, and the frontend should obtain it again. 31232Example output: 31233 31234@smallexample 31235(gdb) -list-target-features 31236^done,result=["async"] 31237@end smallexample 31238 31239The current list of features is: 31240 31241@table @samp 31242@item async 31243Indicates that the target is capable of asynchronous command 31244execution, which means that @value{GDBN} will accept further commands 31245while the target is running. 31246 31247@item reverse 31248Indicates that the target is capable of reverse execution. 31249@xref{Reverse Execution}, for more information. 31250 31251@end table 31252 31253@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31254@node GDB/MI Miscellaneous Commands 31255@section Miscellaneous @sc{gdb/mi} Commands 31256 31257@c @subheading -gdb-complete 31258 31259@subheading The @code{-gdb-exit} Command 31260@findex -gdb-exit 31261 31262@subsubheading Synopsis 31263 31264@smallexample 31265 -gdb-exit 31266@end smallexample 31267 31268Exit @value{GDBN} immediately. 31269 31270@subsubheading @value{GDBN} Command 31271 31272Approximately corresponds to @samp{quit}. 31273 31274@subsubheading Example 31275 31276@smallexample 31277(gdb) 31278-gdb-exit 31279^exit 31280@end smallexample 31281 31282 31283@ignore 31284@subheading The @code{-exec-abort} Command 31285@findex -exec-abort 31286 31287@subsubheading Synopsis 31288 31289@smallexample 31290 -exec-abort 31291@end smallexample 31292 31293Kill the inferior running program. 31294 31295@subsubheading @value{GDBN} Command 31296 31297The corresponding @value{GDBN} command is @samp{kill}. 31298 31299@subsubheading Example 31300N.A. 31301@end ignore 31302 31303 31304@subheading The @code{-gdb-set} Command 31305@findex -gdb-set 31306 31307@subsubheading Synopsis 31308 31309@smallexample 31310 -gdb-set 31311@end smallexample 31312 31313Set an internal @value{GDBN} variable. 31314@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ????? 31315 31316@subsubheading @value{GDBN} Command 31317 31318The corresponding @value{GDBN} command is @samp{set}. 31319 31320@subsubheading Example 31321 31322@smallexample 31323(gdb) 31324-gdb-set $foo=3 31325^done 31326(gdb) 31327@end smallexample 31328 31329 31330@subheading The @code{-gdb-show} Command 31331@findex -gdb-show 31332 31333@subsubheading Synopsis 31334 31335@smallexample 31336 -gdb-show 31337@end smallexample 31338 31339Show the current value of a @value{GDBN} variable. 31340 31341@subsubheading @value{GDBN} Command 31342 31343The corresponding @value{GDBN} command is @samp{show}. 31344 31345@subsubheading Example 31346 31347@smallexample 31348(gdb) 31349-gdb-show annotate 31350^done,value="0" 31351(gdb) 31352@end smallexample 31353 31354@c @subheading -gdb-source 31355 31356 31357@subheading The @code{-gdb-version} Command 31358@findex -gdb-version 31359 31360@subsubheading Synopsis 31361 31362@smallexample 31363 -gdb-version 31364@end smallexample 31365 31366Show version information for @value{GDBN}. Used mostly in testing. 31367 31368@subsubheading @value{GDBN} Command 31369 31370The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by 31371default shows this information when you start an interactive session. 31372 31373@subsubheading Example 31374 31375@c This example modifies the actual output from GDB to avoid overfull 31376@c box in TeX. 31377@smallexample 31378(gdb) 31379-gdb-version 31380~GNU gdb 5.2.1 31381~Copyright 2000 Free Software Foundation, Inc. 31382~GDB is free software, covered by the GNU General Public License, and 31383~you are welcome to change it and/or distribute copies of it under 31384~ certain conditions. 31385~Type "show copying" to see the conditions. 31386~There is absolutely no warranty for GDB. Type "show warranty" for 31387~ details. 31388~This GDB was configured as 31389 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi". 31390^done 31391(gdb) 31392@end smallexample 31393 31394@subheading The @code{-list-thread-groups} Command 31395@findex -list-thread-groups 31396 31397@subheading Synopsis 31398 31399@smallexample 31400-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ] 31401@end smallexample 31402 31403Lists thread groups (@pxref{Thread groups}). When a single thread 31404group is passed as the argument, lists the children of that group. 31405When several thread group are passed, lists information about those 31406thread groups. Without any parameters, lists information about all 31407top-level thread groups. 31408 31409Normally, thread groups that are being debugged are reported. 31410With the @samp{--available} option, @value{GDBN} reports thread groups 31411available on the target. 31412 31413The output of this command may have either a @samp{threads} result or 31414a @samp{groups} result. The @samp{thread} result has a list of tuples 31415as value, with each tuple describing a thread (@pxref{GDB/MI Thread 31416Information}). The @samp{groups} result has a list of tuples as value, 31417each tuple describing a thread group. If top-level groups are 31418requested (that is, no parameter is passed), or when several groups 31419are passed, the output always has a @samp{groups} result. The format 31420of the @samp{group} result is described below. 31421 31422To reduce the number of roundtrips it's possible to list thread groups 31423together with their children, by passing the @samp{--recurse} option 31424and the recursion depth. Presently, only recursion depth of 1 is 31425permitted. If this option is present, then every reported thread group 31426will also include its children, either as @samp{group} or 31427@samp{threads} field. 31428 31429In general, any combination of option and parameters is permitted, with 31430the following caveats: 31431 31432@itemize @bullet 31433@item 31434When a single thread group is passed, the output will typically 31435be the @samp{threads} result. Because threads may not contain 31436anything, the @samp{recurse} option will be ignored. 31437 31438@item 31439When the @samp{--available} option is passed, limited information may 31440be available. In particular, the list of threads of a process might 31441be inaccessible. Further, specifying specific thread groups might 31442not give any performance advantage over listing all thread groups. 31443The frontend should assume that @samp{-list-thread-groups --available} 31444is always an expensive operation and cache the results. 31445 31446@end itemize 31447 31448The @samp{groups} result is a list of tuples, where each tuple may 31449have the following fields: 31450 31451@table @code 31452@item id 31453Identifier of the thread group. This field is always present. 31454The identifier is an opaque string; frontends should not try to 31455convert it to an integer, even though it might look like one. 31456 31457@item type 31458The type of the thread group. At present, only @samp{process} is a 31459valid type. 31460 31461@item pid 31462The target-specific process identifier. This field is only present 31463for thread groups of type @samp{process} and only if the process exists. 31464 31465@item exit-code 31466The exit code of this group's last exited thread, formatted in octal. 31467This field is only present for thread groups of type @samp{process} and 31468only if the process is not running. 31469 31470@item num_children 31471The number of children this thread group has. This field may be 31472absent for an available thread group. 31473 31474@item threads 31475This field has a list of tuples as value, each tuple describing a 31476thread. It may be present if the @samp{--recurse} option is 31477specified, and it's actually possible to obtain the threads. 31478 31479@item cores 31480This field is a list of integers, each identifying a core that one 31481thread of the group is running on. This field may be absent if 31482such information is not available. 31483 31484@item executable 31485The name of the executable file that corresponds to this thread group. 31486The field is only present for thread groups of type @samp{process}, 31487and only if there is a corresponding executable file. 31488 31489@end table 31490 31491@subheading Example 31492 31493@smallexample 31494@value{GDBP} 31495-list-thread-groups 31496^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}] 31497-list-thread-groups 17 31498^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 31499 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@}, 31500@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 31501 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}], 31502 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]] 31503-list-thread-groups --available 31504^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}] 31505-list-thread-groups --available --recurse 1 31506 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 31507 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 31508 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..] 31509-list-thread-groups --available --recurse 1 17 18 31510^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 31511 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 31512 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...] 31513@end smallexample 31514 31515@subheading The @code{-info-os} Command 31516@findex -info-os 31517 31518@subsubheading Synopsis 31519 31520@smallexample 31521-info-os [ @var{type} ] 31522@end smallexample 31523 31524If no argument is supplied, the command returns a table of available 31525operating-system-specific information types. If one of these types is 31526supplied as an argument @var{type}, then the command returns a table 31527of data of that type. 31528 31529The types of information available depend on the target operating 31530system. 31531 31532@subsubheading @value{GDBN} Command 31533 31534The corresponding @value{GDBN} command is @samp{info os}. 31535 31536@subsubheading Example 31537 31538When run on a @sc{gnu}/Linux system, the output will look something 31539like this: 31540 31541@smallexample 31542@value{GDBP} 31543-info-os 31544^done,OSDataTable=@{nr_rows="9",nr_cols="3", 31545hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@}, 31546 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@}, 31547 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}], 31548body=[item=@{col0="processes",col1="Listing of all processes", 31549 col2="Processes"@}, 31550 item=@{col0="procgroups",col1="Listing of all process groups", 31551 col2="Process groups"@}, 31552 item=@{col0="threads",col1="Listing of all threads", 31553 col2="Threads"@}, 31554 item=@{col0="files",col1="Listing of all file descriptors", 31555 col2="File descriptors"@}, 31556 item=@{col0="sockets",col1="Listing of all internet-domain sockets", 31557 col2="Sockets"@}, 31558 item=@{col0="shm",col1="Listing of all shared-memory regions", 31559 col2="Shared-memory regions"@}, 31560 item=@{col0="semaphores",col1="Listing of all semaphores", 31561 col2="Semaphores"@}, 31562 item=@{col0="msg",col1="Listing of all message queues", 31563 col2="Message queues"@}, 31564 item=@{col0="modules",col1="Listing of all loaded kernel modules", 31565 col2="Kernel modules"@}]@} 31566@value{GDBP} 31567-info-os processes 31568^done,OSDataTable=@{nr_rows="190",nr_cols="4", 31569hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@}, 31570 @{width="10",alignment="-1",col_name="col1",colhdr="user"@}, 31571 @{width="10",alignment="-1",col_name="col2",colhdr="command"@}, 31572 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}], 31573body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@}, 31574 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@}, 31575 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@}, 31576 ... 31577 item=@{col0="26446",col1="stan",col2="bash",col3="0"@}, 31578 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@} 31579(gdb) 31580@end smallexample 31581 31582(Note that the MI output here includes a @code{"Title"} column that 31583does not appear in command-line @code{info os}; this column is useful 31584for MI clients that want to enumerate the types of data, such as in a 31585popup menu, but is needless clutter on the command line, and 31586@code{info os} omits it.) 31587 31588@subheading The @code{-add-inferior} Command 31589@findex -add-inferior 31590 31591@subheading Synopsis 31592 31593@smallexample 31594-add-inferior 31595@end smallexample 31596 31597Creates a new inferior (@pxref{Inferiors and Programs}). The created 31598inferior is not associated with any executable. Such association may 31599be established with the @samp{-file-exec-and-symbols} command 31600(@pxref{GDB/MI File Commands}). The command response has a single 31601field, @samp{inferior}, whose value is the identifier of the 31602thread group corresponding to the new inferior. 31603 31604@subheading Example 31605 31606@smallexample 31607@value{GDBP} 31608-add-inferior 31609^done,inferior="i3" 31610@end smallexample 31611 31612@subheading The @code{-interpreter-exec} Command 31613@findex -interpreter-exec 31614 31615@subheading Synopsis 31616 31617@smallexample 31618-interpreter-exec @var{interpreter} @var{command} 31619@end smallexample 31620@anchor{-interpreter-exec} 31621 31622Execute the specified @var{command} in the given @var{interpreter}. 31623 31624@subheading @value{GDBN} Command 31625 31626The corresponding @value{GDBN} command is @samp{interpreter-exec}. 31627 31628@subheading Example 31629 31630@smallexample 31631(gdb) 31632-interpreter-exec console "break main" 31633&"During symbol reading, couldn't parse type; debugger out of date?.\n" 31634&"During symbol reading, bad structure-type format.\n" 31635~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n" 31636^done 31637(gdb) 31638@end smallexample 31639 31640@subheading The @code{-inferior-tty-set} Command 31641@findex -inferior-tty-set 31642 31643@subheading Synopsis 31644 31645@smallexample 31646-inferior-tty-set /dev/pts/1 31647@end smallexample 31648 31649Set terminal for future runs of the program being debugged. 31650 31651@subheading @value{GDBN} Command 31652 31653The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1. 31654 31655@subheading Example 31656 31657@smallexample 31658(gdb) 31659-inferior-tty-set /dev/pts/1 31660^done 31661(gdb) 31662@end smallexample 31663 31664@subheading The @code{-inferior-tty-show} Command 31665@findex -inferior-tty-show 31666 31667@subheading Synopsis 31668 31669@smallexample 31670-inferior-tty-show 31671@end smallexample 31672 31673Show terminal for future runs of program being debugged. 31674 31675@subheading @value{GDBN} Command 31676 31677The corresponding @value{GDBN} command is @samp{show inferior-tty}. 31678 31679@subheading Example 31680 31681@smallexample 31682(gdb) 31683-inferior-tty-set /dev/pts/1 31684^done 31685(gdb) 31686-inferior-tty-show 31687^done,inferior_tty_terminal="/dev/pts/1" 31688(gdb) 31689@end smallexample 31690 31691@subheading The @code{-enable-timings} Command 31692@findex -enable-timings 31693 31694@subheading Synopsis 31695 31696@smallexample 31697-enable-timings [yes | no] 31698@end smallexample 31699 31700Toggle the printing of the wallclock, user and system times for an MI 31701command as a field in its output. This command is to help frontend 31702developers optimize the performance of their code. No argument is 31703equivalent to @samp{yes}. 31704 31705@subheading @value{GDBN} Command 31706 31707No equivalent. 31708 31709@subheading Example 31710 31711@smallexample 31712(gdb) 31713-enable-timings 31714^done 31715(gdb) 31716-break-insert main 31717^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 31718addr="0x080484ed",func="main",file="myprog.c", 31719fullname="/home/nickrob/myprog.c",line="73",thread-groups=["i1"], 31720times="0"@}, 31721time=@{wallclock="0.05185",user="0.00800",system="0.00000"@} 31722(gdb) 31723-enable-timings no 31724^done 31725(gdb) 31726-exec-run 31727^running 31728(gdb) 31729*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 31730frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@}, 31731@{name="argv",value="0xbfb60364"@}],file="myprog.c", 31732fullname="/home/nickrob/myprog.c",line="73"@} 31733(gdb) 31734@end smallexample 31735 31736@node Annotations 31737@chapter @value{GDBN} Annotations 31738 31739This chapter describes annotations in @value{GDBN}. Annotations were 31740designed to interface @value{GDBN} to graphical user interfaces or other 31741similar programs which want to interact with @value{GDBN} at a 31742relatively high level. 31743 31744The annotation mechanism has largely been superseded by @sc{gdb/mi} 31745(@pxref{GDB/MI}). 31746 31747@ignore 31748This is Edition @value{EDITION}, @value{DATE}. 31749@end ignore 31750 31751@menu 31752* Annotations Overview:: What annotations are; the general syntax. 31753* Server Prefix:: Issuing a command without affecting user state. 31754* Prompting:: Annotations marking @value{GDBN}'s need for input. 31755* Errors:: Annotations for error messages. 31756* Invalidation:: Some annotations describe things now invalid. 31757* Annotations for Running:: 31758 Whether the program is running, how it stopped, etc. 31759* Source Annotations:: Annotations describing source code. 31760@end menu 31761 31762@node Annotations Overview 31763@section What is an Annotation? 31764@cindex annotations 31765 31766Annotations start with a newline character, two @samp{control-z} 31767characters, and the name of the annotation. If there is no additional 31768information associated with this annotation, the name of the annotation 31769is followed immediately by a newline. If there is additional 31770information, the name of the annotation is followed by a space, the 31771additional information, and a newline. The additional information 31772cannot contain newline characters. 31773 31774Any output not beginning with a newline and two @samp{control-z} 31775characters denotes literal output from @value{GDBN}. Currently there is 31776no need for @value{GDBN} to output a newline followed by two 31777@samp{control-z} characters, but if there was such a need, the 31778annotations could be extended with an @samp{escape} annotation which 31779means those three characters as output. 31780 31781The annotation @var{level}, which is specified using the 31782@option{--annotate} command line option (@pxref{Mode Options}), controls 31783how much information @value{GDBN} prints together with its prompt, 31784values of expressions, source lines, and other types of output. Level 0 31785is for no annotations, level 1 is for use when @value{GDBN} is run as a 31786subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable 31787for programs that control @value{GDBN}, and level 2 annotations have 31788been made obsolete (@pxref{Limitations, , Limitations of the Annotation 31789Interface, annotate, GDB's Obsolete Annotations}). 31790 31791@table @code 31792@kindex set annotate 31793@item set annotate @var{level} 31794The @value{GDBN} command @code{set annotate} sets the level of 31795annotations to the specified @var{level}. 31796 31797@item show annotate 31798@kindex show annotate 31799Show the current annotation level. 31800@end table 31801 31802This chapter describes level 3 annotations. 31803 31804A simple example of starting up @value{GDBN} with annotations is: 31805 31806@smallexample 31807$ @kbd{gdb --annotate=3} 31808GNU gdb 6.0 31809Copyright 2003 Free Software Foundation, Inc. 31810GDB is free software, covered by the GNU General Public License, 31811and you are welcome to change it and/or distribute copies of it 31812under certain conditions. 31813Type "show copying" to see the conditions. 31814There is absolutely no warranty for GDB. Type "show warranty" 31815for details. 31816This GDB was configured as "i386-pc-linux-gnu" 31817 31818^Z^Zpre-prompt 31819(@value{GDBP}) 31820^Z^Zprompt 31821@kbd{quit} 31822 31823^Z^Zpost-prompt 31824$ 31825@end smallexample 31826 31827Here @samp{quit} is input to @value{GDBN}; the rest is output from 31828@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z} 31829denotes a @samp{control-z} character) are annotations; the rest is 31830output from @value{GDBN}. 31831 31832@node Server Prefix 31833@section The Server Prefix 31834@cindex server prefix 31835 31836If you prefix a command with @samp{server } then it will not affect 31837the command history, nor will it affect @value{GDBN}'s notion of which 31838command to repeat if @key{RET} is pressed on a line by itself. This 31839means that commands can be run behind a user's back by a front-end in 31840a transparent manner. 31841 31842The @code{server } prefix does not affect the recording of values into 31843the value history; to print a value without recording it into the 31844value history, use the @code{output} command instead of the 31845@code{print} command. 31846 31847Using this prefix also disables confirmation requests 31848(@pxref{confirmation requests}). 31849 31850@node Prompting 31851@section Annotation for @value{GDBN} Input 31852 31853@cindex annotations for prompts 31854When @value{GDBN} prompts for input, it annotates this fact so it is possible 31855to know when to send output, when the output from a given command is 31856over, etc. 31857 31858Different kinds of input each have a different @dfn{input type}. Each 31859input type has three annotations: a @code{pre-} annotation, which 31860denotes the beginning of any prompt which is being output, a plain 31861annotation, which denotes the end of the prompt, and then a @code{post-} 31862annotation which denotes the end of any echo which may (or may not) be 31863associated with the input. For example, the @code{prompt} input type 31864features the following annotations: 31865 31866@smallexample 31867^Z^Zpre-prompt 31868^Z^Zprompt 31869^Z^Zpost-prompt 31870@end smallexample 31871 31872The input types are 31873 31874@table @code 31875@findex pre-prompt annotation 31876@findex prompt annotation 31877@findex post-prompt annotation 31878@item prompt 31879When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt). 31880 31881@findex pre-commands annotation 31882@findex commands annotation 31883@findex post-commands annotation 31884@item commands 31885When @value{GDBN} prompts for a set of commands, like in the @code{commands} 31886command. The annotations are repeated for each command which is input. 31887 31888@findex pre-overload-choice annotation 31889@findex overload-choice annotation 31890@findex post-overload-choice annotation 31891@item overload-choice 31892When @value{GDBN} wants the user to select between various overloaded functions. 31893 31894@findex pre-query annotation 31895@findex query annotation 31896@findex post-query annotation 31897@item query 31898When @value{GDBN} wants the user to confirm a potentially dangerous operation. 31899 31900@findex pre-prompt-for-continue annotation 31901@findex prompt-for-continue annotation 31902@findex post-prompt-for-continue annotation 31903@item prompt-for-continue 31904When @value{GDBN} is asking the user to press return to continue. Note: Don't 31905expect this to work well; instead use @code{set height 0} to disable 31906prompting. This is because the counting of lines is buggy in the 31907presence of annotations. 31908@end table 31909 31910@node Errors 31911@section Errors 31912@cindex annotations for errors, warnings and interrupts 31913 31914@findex quit annotation 31915@smallexample 31916^Z^Zquit 31917@end smallexample 31918 31919This annotation occurs right before @value{GDBN} responds to an interrupt. 31920 31921@findex error annotation 31922@smallexample 31923^Z^Zerror 31924@end smallexample 31925 31926This annotation occurs right before @value{GDBN} responds to an error. 31927 31928Quit and error annotations indicate that any annotations which @value{GDBN} was 31929in the middle of may end abruptly. For example, if a 31930@code{value-history-begin} annotation is followed by a @code{error}, one 31931cannot expect to receive the matching @code{value-history-end}. One 31932cannot expect not to receive it either, however; an error annotation 31933does not necessarily mean that @value{GDBN} is immediately returning all the way 31934to the top level. 31935 31936@findex error-begin annotation 31937A quit or error annotation may be preceded by 31938 31939@smallexample 31940^Z^Zerror-begin 31941@end smallexample 31942 31943Any output between that and the quit or error annotation is the error 31944message. 31945 31946Warning messages are not yet annotated. 31947@c If we want to change that, need to fix warning(), type_error(), 31948@c range_error(), and possibly other places. 31949 31950@node Invalidation 31951@section Invalidation Notices 31952 31953@cindex annotations for invalidation messages 31954The following annotations say that certain pieces of state may have 31955changed. 31956 31957@table @code 31958@findex frames-invalid annotation 31959@item ^Z^Zframes-invalid 31960 31961The frames (for example, output from the @code{backtrace} command) may 31962have changed. 31963 31964@findex breakpoints-invalid annotation 31965@item ^Z^Zbreakpoints-invalid 31966 31967The breakpoints may have changed. For example, the user just added or 31968deleted a breakpoint. 31969@end table 31970 31971@node Annotations for Running 31972@section Running the Program 31973@cindex annotations for running programs 31974 31975@findex starting annotation 31976@findex stopping annotation 31977When the program starts executing due to a @value{GDBN} command such as 31978@code{step} or @code{continue}, 31979 31980@smallexample 31981^Z^Zstarting 31982@end smallexample 31983 31984is output. When the program stops, 31985 31986@smallexample 31987^Z^Zstopped 31988@end smallexample 31989 31990is output. Before the @code{stopped} annotation, a variety of 31991annotations describe how the program stopped. 31992 31993@table @code 31994@findex exited annotation 31995@item ^Z^Zexited @var{exit-status} 31996The program exited, and @var{exit-status} is the exit status (zero for 31997successful exit, otherwise nonzero). 31998 31999@findex signalled annotation 32000@findex signal-name annotation 32001@findex signal-name-end annotation 32002@findex signal-string annotation 32003@findex signal-string-end annotation 32004@item ^Z^Zsignalled 32005The program exited with a signal. After the @code{^Z^Zsignalled}, the 32006annotation continues: 32007 32008@smallexample 32009@var{intro-text} 32010^Z^Zsignal-name 32011@var{name} 32012^Z^Zsignal-name-end 32013@var{middle-text} 32014^Z^Zsignal-string 32015@var{string} 32016^Z^Zsignal-string-end 32017@var{end-text} 32018@end smallexample 32019 32020@noindent 32021where @var{name} is the name of the signal, such as @code{SIGILL} or 32022@code{SIGSEGV}, and @var{string} is the explanation of the signal, such 32023as @code{Illegal Instruction} or @code{Segmentation fault}. The arguments 32024@var{intro-text}, @var{middle-text}, and @var{end-text} are for the 32025user's benefit and have no particular format. 32026 32027@findex signal annotation 32028@item ^Z^Zsignal 32029The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is 32030just saying that the program received the signal, not that it was 32031terminated with it. 32032 32033@findex breakpoint annotation 32034@item ^Z^Zbreakpoint @var{number} 32035The program hit breakpoint number @var{number}. 32036 32037@findex watchpoint annotation 32038@item ^Z^Zwatchpoint @var{number} 32039The program hit watchpoint number @var{number}. 32040@end table 32041 32042@node Source Annotations 32043@section Displaying Source 32044@cindex annotations for source display 32045 32046@findex source annotation 32047The following annotation is used instead of displaying source code: 32048 32049@smallexample 32050^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr} 32051@end smallexample 32052 32053where @var{filename} is an absolute file name indicating which source 32054file, @var{line} is the line number within that file (where 1 is the 32055first line in the file), @var{character} is the character position 32056within the file (where 0 is the first character in the file) (for most 32057debug formats this will necessarily point to the beginning of a line), 32058@var{middle} is @samp{middle} if @var{addr} is in the middle of the 32059line, or @samp{beg} if @var{addr} is at the beginning of the line, and 32060@var{addr} is the address in the target program associated with the 32061source which is being displayed. The @var{addr} is in the form @samp{0x} 32062followed by one or more lowercase hex digits (note that this does not 32063depend on the language). 32064 32065@node JIT Interface 32066@chapter JIT Compilation Interface 32067@cindex just-in-time compilation 32068@cindex JIT compilation interface 32069 32070This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation 32071interface. A JIT compiler is a program or library that generates native 32072executable code at runtime and executes it, usually in order to achieve good 32073performance while maintaining platform independence. 32074 32075Programs that use JIT compilation are normally difficult to debug because 32076portions of their code are generated at runtime, instead of being loaded from 32077object files, which is where @value{GDBN} normally finds the program's symbols 32078and debug information. In order to debug programs that use JIT compilation, 32079@value{GDBN} has an interface that allows the program to register in-memory 32080symbol files with @value{GDBN} at runtime. 32081 32082If you are using @value{GDBN} to debug a program that uses this interface, then 32083it should work transparently so long as you have not stripped the binary. If 32084you are developing a JIT compiler, then the interface is documented in the rest 32085of this chapter. At this time, the only known client of this interface is the 32086LLVM JIT. 32087 32088Broadly speaking, the JIT interface mirrors the dynamic loader interface. The 32089JIT compiler communicates with @value{GDBN} by writing data into a global 32090variable and calling a fuction at a well-known symbol. When @value{GDBN} 32091attaches, it reads a linked list of symbol files from the global variable to 32092find existing code, and puts a breakpoint in the function so that it can find 32093out about additional code. 32094 32095@menu 32096* Declarations:: Relevant C struct declarations 32097* Registering Code:: Steps to register code 32098* Unregistering Code:: Steps to unregister code 32099* Custom Debug Info:: Emit debug information in a custom format 32100@end menu 32101 32102@node Declarations 32103@section JIT Declarations 32104 32105These are the relevant struct declarations that a C program should include to 32106implement the interface: 32107 32108@smallexample 32109typedef enum 32110@{ 32111 JIT_NOACTION = 0, 32112 JIT_REGISTER_FN, 32113 JIT_UNREGISTER_FN 32114@} jit_actions_t; 32115 32116struct jit_code_entry 32117@{ 32118 struct jit_code_entry *next_entry; 32119 struct jit_code_entry *prev_entry; 32120 const char *symfile_addr; 32121 uint64_t symfile_size; 32122@}; 32123 32124struct jit_descriptor 32125@{ 32126 uint32_t version; 32127 /* This type should be jit_actions_t, but we use uint32_t 32128 to be explicit about the bitwidth. */ 32129 uint32_t action_flag; 32130 struct jit_code_entry *relevant_entry; 32131 struct jit_code_entry *first_entry; 32132@}; 32133 32134/* GDB puts a breakpoint in this function. */ 32135void __attribute__((noinline)) __jit_debug_register_code() @{ @}; 32136 32137/* Make sure to specify the version statically, because the 32138 debugger may check the version before we can set it. */ 32139struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @}; 32140@end smallexample 32141 32142If the JIT is multi-threaded, then it is important that the JIT synchronize any 32143modifications to this global data properly, which can easily be done by putting 32144a global mutex around modifications to these structures. 32145 32146@node Registering Code 32147@section Registering Code 32148 32149To register code with @value{GDBN}, the JIT should follow this protocol: 32150 32151@itemize @bullet 32152@item 32153Generate an object file in memory with symbols and other desired debug 32154information. The file must include the virtual addresses of the sections. 32155 32156@item 32157Create a code entry for the file, which gives the start and size of the symbol 32158file. 32159 32160@item 32161Add it to the linked list in the JIT descriptor. 32162 32163@item 32164Point the relevant_entry field of the descriptor at the entry. 32165 32166@item 32167Set @code{action_flag} to @code{JIT_REGISTER} and call 32168@code{__jit_debug_register_code}. 32169@end itemize 32170 32171When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the 32172@code{relevant_entry} pointer so it doesn't have to walk the list looking for 32173new code. However, the linked list must still be maintained in order to allow 32174@value{GDBN} to attach to a running process and still find the symbol files. 32175 32176@node Unregistering Code 32177@section Unregistering Code 32178 32179If code is freed, then the JIT should use the following protocol: 32180 32181@itemize @bullet 32182@item 32183Remove the code entry corresponding to the code from the linked list. 32184 32185@item 32186Point the @code{relevant_entry} field of the descriptor at the code entry. 32187 32188@item 32189Set @code{action_flag} to @code{JIT_UNREGISTER} and call 32190@code{__jit_debug_register_code}. 32191@end itemize 32192 32193If the JIT frees or recompiles code without unregistering it, then @value{GDBN} 32194and the JIT will leak the memory used for the associated symbol files. 32195 32196@node Custom Debug Info 32197@section Custom Debug Info 32198@cindex custom JIT debug info 32199@cindex JIT debug info reader 32200 32201Generating debug information in platform-native file formats (like ELF 32202or COFF) may be an overkill for JIT compilers; especially if all the 32203debug info is used for is displaying a meaningful backtrace. The 32204issue can be resolved by having the JIT writers decide on a debug info 32205format and also provide a reader that parses the debug info generated 32206by the JIT compiler. This section gives a brief overview on writing 32207such a parser. More specific details can be found in the source file 32208@file{gdb/jit-reader.in}, which is also installed as a header at 32209@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion. 32210 32211The reader is implemented as a shared object (so this functionality is 32212not available on platforms which don't allow loading shared objects at 32213runtime). Two @value{GDBN} commands, @code{jit-reader-load} and 32214@code{jit-reader-unload} are provided, to be used to load and unload 32215the readers from a preconfigured directory. Once loaded, the shared 32216object is used the parse the debug information emitted by the JIT 32217compiler. 32218 32219@menu 32220* Using JIT Debug Info Readers:: How to use supplied readers correctly 32221* Writing JIT Debug Info Readers:: Creating a debug-info reader 32222@end menu 32223 32224@node Using JIT Debug Info Readers 32225@subsection Using JIT Debug Info Readers 32226@kindex jit-reader-load 32227@kindex jit-reader-unload 32228 32229Readers can be loaded and unloaded using the @code{jit-reader-load} 32230and @code{jit-reader-unload} commands. 32231 32232@table @code 32233@item jit-reader-load @var{reader} 32234Load the JIT reader named @var{reader}, which is a shared 32235object specified as either an absolute or a relative file name. In 32236the latter case, @value{GDBN} will try to load the reader from a 32237pre-configured directory, usually @file{@var{libdir}/gdb/} on a UNIX 32238system (here @var{libdir} is the system library directory, often 32239@file{/usr/local/lib}). 32240 32241Only one reader can be active at a time; trying to load a second 32242reader when one is already loaded will result in @value{GDBN} 32243reporting an error. A new JIT reader can be loaded by first unloading 32244the current one using @code{jit-reader-unload} and then invoking 32245@code{jit-reader-load}. 32246 32247@item jit-reader-unload 32248Unload the currently loaded JIT reader. 32249 32250@end table 32251 32252@node Writing JIT Debug Info Readers 32253@subsection Writing JIT Debug Info Readers 32254@cindex writing JIT debug info readers 32255 32256As mentioned, a reader is essentially a shared object conforming to a 32257certain ABI. This ABI is described in @file{jit-reader.h}. 32258 32259@file{jit-reader.h} defines the structures, macros and functions 32260required to write a reader. It is installed (along with 32261@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is 32262the system include directory. 32263 32264Readers need to be released under a GPL compatible license. A reader 32265can be declared as released under such a license by placing the macro 32266@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file. 32267 32268The entry point for readers is the symbol @code{gdb_init_reader}, 32269which is expected to be a function with the prototype 32270 32271@findex gdb_init_reader 32272@smallexample 32273extern struct gdb_reader_funcs *gdb_init_reader (void); 32274@end smallexample 32275 32276@cindex @code{struct gdb_reader_funcs} 32277 32278@code{struct gdb_reader_funcs} contains a set of pointers to callback 32279functions. These functions are executed to read the debug info 32280generated by the JIT compiler (@code{read}), to unwind stack frames 32281(@code{unwind}) and to create canonical frame IDs 32282(@code{get_Frame_id}). It also has a callback that is called when the 32283reader is being unloaded (@code{destroy}). The struct looks like this 32284 32285@smallexample 32286struct gdb_reader_funcs 32287@{ 32288 /* Must be set to GDB_READER_INTERFACE_VERSION. */ 32289 int reader_version; 32290 32291 /* For use by the reader. */ 32292 void *priv_data; 32293 32294 gdb_read_debug_info *read; 32295 gdb_unwind_frame *unwind; 32296 gdb_get_frame_id *get_frame_id; 32297 gdb_destroy_reader *destroy; 32298@}; 32299@end smallexample 32300 32301@cindex @code{struct gdb_symbol_callbacks} 32302@cindex @code{struct gdb_unwind_callbacks} 32303 32304The callbacks are provided with another set of callbacks by 32305@value{GDBN} to do their job. For @code{read}, these callbacks are 32306passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind} 32307and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}. 32308@code{struct gdb_symbol_callbacks} has callbacks to create new object 32309files and new symbol tables inside those object files. @code{struct 32310gdb_unwind_callbacks} has callbacks to read registers off the current 32311frame and to write out the values of the registers in the previous 32312frame. Both have a callback (@code{target_read}) to read bytes off the 32313target's address space. 32314 32315@node In-Process Agent 32316@chapter In-Process Agent 32317@cindex debugging agent 32318The traditional debugging model is conceptually low-speed, but works fine, 32319because most bugs can be reproduced in debugging-mode execution. However, 32320as multi-core or many-core processors are becoming mainstream, and 32321multi-threaded programs become more and more popular, there should be more 32322and more bugs that only manifest themselves at normal-mode execution, for 32323example, thread races, because debugger's interference with the program's 32324timing may conceal the bugs. On the other hand, in some applications, 32325it is not feasible for the debugger to interrupt the program's execution 32326long enough for the developer to learn anything helpful about its behavior. 32327If the program's correctness depends on its real-time behavior, delays 32328introduced by a debugger might cause the program to fail, even when the 32329code itself is correct. It is useful to be able to observe the program's 32330behavior without interrupting it. 32331 32332Therefore, traditional debugging model is too intrusive to reproduce 32333some bugs. In order to reduce the interference with the program, we can 32334reduce the number of operations performed by debugger. The 32335@dfn{In-Process Agent}, a shared library, is running within the same 32336process with inferior, and is able to perform some debugging operations 32337itself. As a result, debugger is only involved when necessary, and 32338performance of debugging can be improved accordingly. Note that 32339interference with program can be reduced but can't be removed completely, 32340because the in-process agent will still stop or slow down the program. 32341 32342The in-process agent can interpret and execute Agent Expressions 32343(@pxref{Agent Expressions}) during performing debugging operations. The 32344agent expressions can be used for different purposes, such as collecting 32345data in tracepoints, and condition evaluation in breakpoints. 32346 32347@anchor{Control Agent} 32348You can control whether the in-process agent is used as an aid for 32349debugging with the following commands: 32350 32351@table @code 32352@kindex set agent on 32353@item set agent on 32354Causes the in-process agent to perform some operations on behalf of the 32355debugger. Just which operations requested by the user will be done 32356by the in-process agent depends on the its capabilities. For example, 32357if you request to evaluate breakpoint conditions in the in-process agent, 32358and the in-process agent has such capability as well, then breakpoint 32359conditions will be evaluated in the in-process agent. 32360 32361@kindex set agent off 32362@item set agent off 32363Disables execution of debugging operations by the in-process agent. All 32364of the operations will be performed by @value{GDBN}. 32365 32366@kindex show agent 32367@item show agent 32368Display the current setting of execution of debugging operations by 32369the in-process agent. 32370@end table 32371 32372@menu 32373* In-Process Agent Protocol:: 32374@end menu 32375 32376@node In-Process Agent Protocol 32377@section In-Process Agent Protocol 32378@cindex in-process agent protocol 32379 32380The in-process agent is able to communicate with both @value{GDBN} and 32381GDBserver (@pxref{In-Process Agent}). This section documents the protocol 32382used for communications between @value{GDBN} or GDBserver and the IPA. 32383In general, @value{GDBN} or GDBserver sends commands 32384(@pxref{IPA Protocol Commands}) and data to in-process agent, and then 32385in-process agent replies back with the return result of the command, or 32386some other information. The data sent to in-process agent is composed 32387of primitive data types, such as 4-byte or 8-byte type, and composite 32388types, which are called objects (@pxref{IPA Protocol Objects}). 32389 32390@menu 32391* IPA Protocol Objects:: 32392* IPA Protocol Commands:: 32393@end menu 32394 32395@node IPA Protocol Objects 32396@subsection IPA Protocol Objects 32397@cindex ipa protocol objects 32398 32399The commands sent to and results received from agent may contain some 32400complex data types called @dfn{objects}. 32401 32402The in-process agent is running on the same machine with @value{GDBN} 32403or GDBserver, so it doesn't have to handle as much differences between 32404two ends as remote protocol (@pxref{Remote Protocol}) tries to handle. 32405However, there are still some differences of two ends in two processes: 32406 32407@enumerate 32408@item 32409word size. On some 64-bit machines, @value{GDBN} or GDBserver can be 32410compiled as a 64-bit executable, while in-process agent is a 32-bit one. 32411@item 32412ABI. Some machines may have multiple types of ABI, @value{GDBN} or 32413GDBserver is compiled with one, and in-process agent is compiled with 32414the other one. 32415@end enumerate 32416 32417Here are the IPA Protocol Objects: 32418 32419@enumerate 32420@item 32421agent expression object. It represents an agent expression 32422(@pxref{Agent Expressions}). 32423@anchor{agent expression object} 32424@item 32425tracepoint action object. It represents a tracepoint action 32426(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers, 32427memory, static trace data and to evaluate expression. 32428@anchor{tracepoint action object} 32429@item 32430tracepoint object. It represents a tracepoint (@pxref{Tracepoints}). 32431@anchor{tracepoint object} 32432 32433@end enumerate 32434 32435The following table describes important attributes of each IPA protocol 32436object: 32437 32438@multitable @columnfractions .30 .20 .50 32439@headitem Name @tab Size @tab Description 32440@item @emph{agent expression object} @tab @tab 32441@item length @tab 4 @tab length of bytes code 32442@item byte code @tab @var{length} @tab contents of byte code 32443@item @emph{tracepoint action for collecting memory} @tab @tab 32444@item 'M' @tab 1 @tab type of tracepoint action 32445@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the 32446address of the lowest byte to collect, otherwise @var{addr} is the offset 32447of @var{basereg} for memory collecting. 32448@item len @tab 8 @tab length of memory for collecting 32449@item basereg @tab 4 @tab the register number containing the starting 32450memory address for collecting. 32451@item @emph{tracepoint action for collecting registers} @tab @tab 32452@item 'R' @tab 1 @tab type of tracepoint action 32453@item @emph{tracepoint action for collecting static trace data} @tab @tab 32454@item 'L' @tab 1 @tab type of tracepoint action 32455@item @emph{tracepoint action for expression evaluation} @tab @tab 32456@item 'X' @tab 1 @tab type of tracepoint action 32457@item agent expression @tab length of @tab @ref{agent expression object} 32458@item @emph{tracepoint object} @tab @tab 32459@item number @tab 4 @tab number of tracepoint 32460@item address @tab 8 @tab address of tracepoint inserted on 32461@item type @tab 4 @tab type of tracepoint 32462@item enabled @tab 1 @tab enable or disable of tracepoint 32463@item step_count @tab 8 @tab step 32464@item pass_count @tab 8 @tab pass 32465@item numactions @tab 4 @tab number of tracepoint actions 32466@item hit count @tab 8 @tab hit count 32467@item trace frame usage @tab 8 @tab trace frame usage 32468@item compiled_cond @tab 8 @tab compiled condition 32469@item orig_size @tab 8 @tab orig size 32470@item condition @tab 4 if condition is NULL otherwise length of 32471@ref{agent expression object} 32472@tab zero if condition is NULL, otherwise is 32473@ref{agent expression object} 32474@item actions @tab variable 32475@tab numactions number of @ref{tracepoint action object} 32476@end multitable 32477 32478@node IPA Protocol Commands 32479@subsection IPA Protocol Commands 32480@cindex ipa protocol commands 32481 32482The spaces in each command are delimiters to ease reading this commands 32483specification. They don't exist in real commands. 32484 32485@table @samp 32486 32487@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head} 32488Installs a new fast tracepoint described by @var{tracepoint_object} 32489(@pxref{tracepoint object}). The @var{gdb_jump_pad_head}, 8-byte long, is the 32490head of @dfn{jumppad}, which is used to jump to data collection routine 32491in IPA finally. 32492 32493Replies: 32494@table @samp 32495@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump} 32496@var{target_address} is address of tracepoint in the inferior. 32497The @var{gdb_jump_pad_head} is updated head of jumppad. Both of 32498@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long. 32499The @var{fjump} contains a sequence of instructions jump to jumppad entry. 32500The @var{fjump_size}, 4-byte long, is the size of @var{fjump}. 32501@item E @var{NN} 32502for an error 32503 32504@end table 32505 32506@item close 32507Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver 32508is about to kill inferiors. 32509 32510@item qTfSTM 32511@xref{qTfSTM}. 32512@item qTsSTM 32513@xref{qTsSTM}. 32514@item qTSTMat 32515@xref{qTSTMat}. 32516@item probe_marker_at:@var{address} 32517Asks in-process agent to probe the marker at @var{address}. 32518 32519Replies: 32520@table @samp 32521@item E @var{NN} 32522for an error 32523@end table 32524@item unprobe_marker_at:@var{address} 32525Asks in-process agent to unprobe the marker at @var{address}. 32526@end table 32527 32528@node GDB Bugs 32529@chapter Reporting Bugs in @value{GDBN} 32530@cindex bugs in @value{GDBN} 32531@cindex reporting bugs in @value{GDBN} 32532 32533Your bug reports play an essential role in making @value{GDBN} reliable. 32534 32535Reporting a bug may help you by bringing a solution to your problem, or it 32536may not. But in any case the principal function of a bug report is to help 32537the entire community by making the next version of @value{GDBN} work better. Bug 32538reports are your contribution to the maintenance of @value{GDBN}. 32539 32540In order for a bug report to serve its purpose, you must include the 32541information that enables us to fix the bug. 32542 32543@menu 32544* Bug Criteria:: Have you found a bug? 32545* Bug Reporting:: How to report bugs 32546@end menu 32547 32548@node Bug Criteria 32549@section Have You Found a Bug? 32550@cindex bug criteria 32551 32552If you are not sure whether you have found a bug, here are some guidelines: 32553 32554@itemize @bullet 32555@cindex fatal signal 32556@cindex debugger crash 32557@cindex crash of debugger 32558@item 32559If the debugger gets a fatal signal, for any input whatever, that is a 32560@value{GDBN} bug. Reliable debuggers never crash. 32561 32562@cindex error on valid input 32563@item 32564If @value{GDBN} produces an error message for valid input, that is a 32565bug. (Note that if you're cross debugging, the problem may also be 32566somewhere in the connection to the target.) 32567 32568@cindex invalid input 32569@item 32570If @value{GDBN} does not produce an error message for invalid input, 32571that is a bug. However, you should note that your idea of 32572``invalid input'' might be our idea of ``an extension'' or ``support 32573for traditional practice''. 32574 32575@item 32576If you are an experienced user of debugging tools, your suggestions 32577for improvement of @value{GDBN} are welcome in any case. 32578@end itemize 32579 32580@node Bug Reporting 32581@section How to Report Bugs 32582@cindex bug reports 32583@cindex @value{GDBN} bugs, reporting 32584 32585A number of companies and individuals offer support for @sc{gnu} products. 32586If you obtained @value{GDBN} from a support organization, we recommend you 32587contact that organization first. 32588 32589You can find contact information for many support companies and 32590individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs 32591distribution. 32592@c should add a web page ref... 32593 32594@ifset BUGURL 32595@ifset BUGURL_DEFAULT 32596In any event, we also recommend that you submit bug reports for 32597@value{GDBN}. The preferred method is to submit them directly using 32598@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web 32599page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can 32600be used. 32601 32602@strong{Do not send bug reports to @samp{info-gdb}, or to 32603@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do 32604not want to receive bug reports. Those that do have arranged to receive 32605@samp{bug-gdb}. 32606 32607The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which 32608serves as a repeater. The mailing list and the newsgroup carry exactly 32609the same messages. Often people think of posting bug reports to the 32610newsgroup instead of mailing them. This appears to work, but it has one 32611problem which can be crucial: a newsgroup posting often lacks a mail 32612path back to the sender. Thus, if we need to ask for more information, 32613we may be unable to reach you. For this reason, it is better to send 32614bug reports to the mailing list. 32615@end ifset 32616@ifclear BUGURL_DEFAULT 32617In any event, we also recommend that you submit bug reports for 32618@value{GDBN} to @value{BUGURL}. 32619@end ifclear 32620@end ifset 32621 32622The fundamental principle of reporting bugs usefully is this: 32623@strong{report all the facts}. If you are not sure whether to state a 32624fact or leave it out, state it! 32625 32626Often people omit facts because they think they know what causes the 32627problem and assume that some details do not matter. Thus, you might 32628assume that the name of the variable you use in an example does not matter. 32629Well, probably it does not, but one cannot be sure. Perhaps the bug is a 32630stray memory reference which happens to fetch from the location where that 32631name is stored in memory; perhaps, if the name were different, the contents 32632of that location would fool the debugger into doing the right thing despite 32633the bug. Play it safe and give a specific, complete example. That is the 32634easiest thing for you to do, and the most helpful. 32635 32636Keep in mind that the purpose of a bug report is to enable us to fix the 32637bug. It may be that the bug has been reported previously, but neither 32638you nor we can know that unless your bug report is complete and 32639self-contained. 32640 32641Sometimes people give a few sketchy facts and ask, ``Does this ring a 32642bell?'' Those bug reports are useless, and we urge everyone to 32643@emph{refuse to respond to them} except to chide the sender to report 32644bugs properly. 32645 32646To enable us to fix the bug, you should include all these things: 32647 32648@itemize @bullet 32649@item 32650The version of @value{GDBN}. @value{GDBN} announces it if you start 32651with no arguments; you can also print it at any time using @code{show 32652version}. 32653 32654Without this, we will not know whether there is any point in looking for 32655the bug in the current version of @value{GDBN}. 32656 32657@item 32658The type of machine you are using, and the operating system name and 32659version number. 32660 32661@item 32662The details of the @value{GDBN} build-time configuration. 32663@value{GDBN} shows these details if you invoke it with the 32664@option{--configuration} command-line option, or if you type 32665@code{show configuration} at @value{GDBN}'s prompt. 32666 32667@item 32668What compiler (and its version) was used to compile @value{GDBN}---e.g.@: 32669``@value{GCC}--2.8.1''. 32670 32671@item 32672What compiler (and its version) was used to compile the program you are 32673debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP 32674C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version} 32675to get this information; for other compilers, see the documentation for 32676those compilers. 32677 32678@item 32679The command arguments you gave the compiler to compile your example and 32680observe the bug. For example, did you use @samp{-O}? To guarantee 32681you will not omit something important, list them all. A copy of the 32682Makefile (or the output from make) is sufficient. 32683 32684If we were to try to guess the arguments, we would probably guess wrong 32685and then we might not encounter the bug. 32686 32687@item 32688A complete input script, and all necessary source files, that will 32689reproduce the bug. 32690 32691@item 32692A description of what behavior you observe that you believe is 32693incorrect. For example, ``It gets a fatal signal.'' 32694 32695Of course, if the bug is that @value{GDBN} gets a fatal signal, then we 32696will certainly notice it. But if the bug is incorrect output, we might 32697not notice unless it is glaringly wrong. You might as well not give us 32698a chance to make a mistake. 32699 32700Even if the problem you experience is a fatal signal, you should still 32701say so explicitly. Suppose something strange is going on, such as, your 32702copy of @value{GDBN} is out of synch, or you have encountered a bug in 32703the C library on your system. (This has happened!) Your copy might 32704crash and ours would not. If you told us to expect a crash, then when 32705ours fails to crash, we would know that the bug was not happening for 32706us. If you had not told us to expect a crash, then we would not be able 32707to draw any conclusion from our observations. 32708 32709@pindex script 32710@cindex recording a session script 32711To collect all this information, you can use a session recording program 32712such as @command{script}, which is available on many Unix systems. 32713Just run your @value{GDBN} session inside @command{script} and then 32714include the @file{typescript} file with your bug report. 32715 32716Another way to record a @value{GDBN} session is to run @value{GDBN} 32717inside Emacs and then save the entire buffer to a file. 32718 32719@item 32720If you wish to suggest changes to the @value{GDBN} source, send us context 32721diffs. If you even discuss something in the @value{GDBN} source, refer to 32722it by context, not by line number. 32723 32724The line numbers in our development sources will not match those in your 32725sources. Your line numbers would convey no useful information to us. 32726 32727@end itemize 32728 32729Here are some things that are not necessary: 32730 32731@itemize @bullet 32732@item 32733A description of the envelope of the bug. 32734 32735Often people who encounter a bug spend a lot of time investigating 32736which changes to the input file will make the bug go away and which 32737changes will not affect it. 32738 32739This is often time consuming and not very useful, because the way we 32740will find the bug is by running a single example under the debugger 32741with breakpoints, not by pure deduction from a series of examples. 32742We recommend that you save your time for something else. 32743 32744Of course, if you can find a simpler example to report @emph{instead} 32745of the original one, that is a convenience for us. Errors in the 32746output will be easier to spot, running under the debugger will take 32747less time, and so on. 32748 32749However, simplification is not vital; if you do not want to do this, 32750report the bug anyway and send us the entire test case you used. 32751 32752@item 32753A patch for the bug. 32754 32755A patch for the bug does help us if it is a good one. But do not omit 32756the necessary information, such as the test case, on the assumption that 32757a patch is all we need. We might see problems with your patch and decide 32758to fix the problem another way, or we might not understand it at all. 32759 32760Sometimes with a program as complicated as @value{GDBN} it is very hard to 32761construct an example that will make the program follow a certain path 32762through the code. If you do not send us the example, we will not be able 32763to construct one, so we will not be able to verify that the bug is fixed. 32764 32765And if we cannot understand what bug you are trying to fix, or why your 32766patch should be an improvement, we will not install it. A test case will 32767help us to understand. 32768 32769@item 32770A guess about what the bug is or what it depends on. 32771 32772Such guesses are usually wrong. Even we cannot guess right about such 32773things without first using the debugger to find the facts. 32774@end itemize 32775 32776@c The readline documentation is distributed with the readline code 32777@c and consists of the two following files: 32778@c rluser.texi 32779@c hsuser.texi 32780@c Use -I with makeinfo to point to the appropriate directory, 32781@c environment var TEXINPUTS with TeX. 32782@ifclear SYSTEM_READLINE 32783@include rluser.texi 32784@include hsuser.texi 32785@end ifclear 32786 32787@node In Memoriam 32788@appendix In Memoriam 32789 32790The @value{GDBN} project mourns the loss of the following long-time 32791contributors: 32792 32793@table @code 32794@item Fred Fish 32795Fred was a long-standing contributor to @value{GDBN} (1991-2006), and 32796to Free Software in general. Outside of @value{GDBN}, he was known in 32797the Amiga world for his series of Fish Disks, and the GeekGadget project. 32798 32799@item Michael Snyder 32800Michael was one of the Global Maintainers of the @value{GDBN} project, 32801with contributions recorded as early as 1996, until 2011. In addition 32802to his day to day participation, he was a large driving force behind 32803adding Reverse Debugging to @value{GDBN}. 32804@end table 32805 32806Beyond their technical contributions to the project, they were also 32807enjoyable members of the Free Software Community. We will miss them. 32808 32809@node Formatting Documentation 32810@appendix Formatting Documentation 32811 32812@cindex @value{GDBN} reference card 32813@cindex reference card 32814The @value{GDBN} 4 release includes an already-formatted reference card, ready 32815for printing with PostScript or Ghostscript, in the @file{gdb} 32816subdirectory of the main source directory@footnote{In 32817@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN} 32818release.}. If you can use PostScript or Ghostscript with your printer, 32819you can print the reference card immediately with @file{refcard.ps}. 32820 32821The release also includes the source for the reference card. You 32822can format it, using @TeX{}, by typing: 32823 32824@smallexample 32825make refcard.dvi 32826@end smallexample 32827 32828The @value{GDBN} reference card is designed to print in @dfn{landscape} 32829mode on US ``letter'' size paper; 32830that is, on a sheet 11 inches wide by 8.5 inches 32831high. You will need to specify this form of printing as an option to 32832your @sc{dvi} output program. 32833 32834@cindex documentation 32835 32836All the documentation for @value{GDBN} comes as part of the machine-readable 32837distribution. The documentation is written in Texinfo format, which is 32838a documentation system that uses a single source file to produce both 32839on-line information and a printed manual. You can use one of the Info 32840formatting commands to create the on-line version of the documentation 32841and @TeX{} (or @code{texi2roff}) to typeset the printed version. 32842 32843@value{GDBN} includes an already formatted copy of the on-line Info 32844version of this manual in the @file{gdb} subdirectory. The main Info 32845file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to 32846subordinate files matching @samp{gdb.info*} in the same directory. If 32847necessary, you can print out these files, or read them with any editor; 32848but they are easier to read using the @code{info} subsystem in @sc{gnu} 32849Emacs or the standalone @code{info} program, available as part of the 32850@sc{gnu} Texinfo distribution. 32851 32852If you want to format these Info files yourself, you need one of the 32853Info formatting programs, such as @code{texinfo-format-buffer} or 32854@code{makeinfo}. 32855 32856If you have @code{makeinfo} installed, and are in the top level 32857@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of 32858version @value{GDBVN}), you can make the Info file by typing: 32859 32860@smallexample 32861cd gdb 32862make gdb.info 32863@end smallexample 32864 32865If you want to typeset and print copies of this manual, you need @TeX{}, 32866a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the 32867Texinfo definitions file. 32868 32869@TeX{} is a typesetting program; it does not print files directly, but 32870produces output files called @sc{dvi} files. To print a typeset 32871document, you need a program to print @sc{dvi} files. If your system 32872has @TeX{} installed, chances are it has such a program. The precise 32873command to use depends on your system; @kbd{lpr -d} is common; another 32874(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may 32875require a file name without any extension or a @samp{.dvi} extension. 32876 32877@TeX{} also requires a macro definitions file called 32878@file{texinfo.tex}. This file tells @TeX{} how to typeset a document 32879written in Texinfo format. On its own, @TeX{} cannot either read or 32880typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB 32881and is located in the @file{gdb-@var{version-number}/texinfo} 32882directory. 32883 32884If you have @TeX{} and a @sc{dvi} printer program installed, you can 32885typeset and print this manual. First switch to the @file{gdb} 32886subdirectory of the main source directory (for example, to 32887@file{gdb-@value{GDBVN}/gdb}) and type: 32888 32889@smallexample 32890make gdb.dvi 32891@end smallexample 32892 32893Then give @file{gdb.dvi} to your @sc{dvi} printing program. 32894 32895@node Installing GDB 32896@appendix Installing @value{GDBN} 32897@cindex installation 32898 32899@menu 32900* Requirements:: Requirements for building @value{GDBN} 32901* Running Configure:: Invoking the @value{GDBN} @file{configure} script 32902* Separate Objdir:: Compiling @value{GDBN} in another directory 32903* Config Names:: Specifying names for hosts and targets 32904* Configure Options:: Summary of options for configure 32905* System-wide configuration:: Having a system-wide init file 32906@end menu 32907 32908@node Requirements 32909@section Requirements for Building @value{GDBN} 32910@cindex building @value{GDBN}, requirements for 32911 32912Building @value{GDBN} requires various tools and packages to be available. 32913Other packages will be used only if they are found. 32914 32915@heading Tools/Packages Necessary for Building @value{GDBN} 32916@table @asis 32917@item ISO C90 compiler 32918@value{GDBN} is written in ISO C90. It should be buildable with any 32919working C90 compiler, e.g.@: GCC. 32920 32921@end table 32922 32923@heading Tools/Packages Optional for Building @value{GDBN} 32924@table @asis 32925@item Expat 32926@anchor{Expat} 32927@value{GDBN} can use the Expat XML parsing library. This library may be 32928included with your operating system distribution; if it is not, you 32929can get the latest version from @url{http://expat.sourceforge.net}. 32930The @file{configure} script will search for this library in several 32931standard locations; if it is installed in an unusual path, you can 32932use the @option{--with-libexpat-prefix} option to specify its location. 32933 32934Expat is used for: 32935 32936@itemize @bullet 32937@item 32938Remote protocol memory maps (@pxref{Memory Map Format}) 32939@item 32940Target descriptions (@pxref{Target Descriptions}) 32941@item 32942Remote shared library lists (@xref{Library List Format}, 32943or alternatively @pxref{Library List Format for SVR4 Targets}) 32944@item 32945MS-Windows shared libraries (@pxref{Shared Libraries}) 32946@item 32947Traceframe info (@pxref{Traceframe Info Format}) 32948@item 32949Branch trace (@pxref{Branch Trace Format}) 32950@end itemize 32951 32952@item zlib 32953@cindex compressed debug sections 32954@value{GDBN} will use the @samp{zlib} library, if available, to read 32955compressed debug sections. Some linkers, such as GNU gold, are capable 32956of producing binaries with compressed debug sections. If @value{GDBN} 32957is compiled with @samp{zlib}, it will be able to read the debug 32958information in such binaries. 32959 32960The @samp{zlib} library is likely included with your operating system 32961distribution; if it is not, you can get the latest version from 32962@url{http://zlib.net}. 32963 32964@item iconv 32965@value{GDBN}'s features related to character sets (@pxref{Character 32966Sets}) require a functioning @code{iconv} implementation. If you are 32967on a GNU system, then this is provided by the GNU C Library. Some 32968other systems also provide a working @code{iconv}. 32969 32970If @value{GDBN} is using the @code{iconv} program which is installed 32971in a non-standard place, you will need to tell @value{GDBN} where to find it. 32972This is done with @option{--with-iconv-bin} which specifies the 32973directory that contains the @code{iconv} program. 32974 32975On systems without @code{iconv}, you can install GNU Libiconv. If you 32976have previously installed Libiconv, you can use the 32977@option{--with-libiconv-prefix} option to configure. 32978 32979@value{GDBN}'s top-level @file{configure} and @file{Makefile} will 32980arrange to build Libiconv if a directory named @file{libiconv} appears 32981in the top-most source directory. If Libiconv is built this way, and 32982if the operating system does not provide a suitable @code{iconv} 32983implementation, then the just-built library will automatically be used 32984by @value{GDBN}. One easy way to set this up is to download GNU 32985Libiconv, unpack it, and then rename the directory holding the 32986Libiconv source code to @samp{libiconv}. 32987@end table 32988 32989@node Running Configure 32990@section Invoking the @value{GDBN} @file{configure} Script 32991@cindex configuring @value{GDBN} 32992@value{GDBN} comes with a @file{configure} script that automates the process 32993of preparing @value{GDBN} for installation; you can then use @code{make} to 32994build the @code{gdb} program. 32995@iftex 32996@c irrelevant in info file; it's as current as the code it lives with. 32997@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN}, 32998look at the @file{README} file in the sources; we may have improved the 32999installation procedures since publishing this manual.} 33000@end iftex 33001 33002The @value{GDBN} distribution includes all the source code you need for 33003@value{GDBN} in a single directory, whose name is usually composed by 33004appending the version number to @samp{gdb}. 33005 33006For example, the @value{GDBN} version @value{GDBVN} distribution is in the 33007@file{gdb-@value{GDBVN}} directory. That directory contains: 33008 33009@table @code 33010@item gdb-@value{GDBVN}/configure @r{(and supporting files)} 33011script for configuring @value{GDBN} and all its supporting libraries 33012 33013@item gdb-@value{GDBVN}/gdb 33014the source specific to @value{GDBN} itself 33015 33016@item gdb-@value{GDBVN}/bfd 33017source for the Binary File Descriptor library 33018 33019@item gdb-@value{GDBVN}/include 33020@sc{gnu} include files 33021 33022@item gdb-@value{GDBVN}/libiberty 33023source for the @samp{-liberty} free software library 33024 33025@item gdb-@value{GDBVN}/opcodes 33026source for the library of opcode tables and disassemblers 33027 33028@item gdb-@value{GDBVN}/readline 33029source for the @sc{gnu} command-line interface 33030 33031@item gdb-@value{GDBVN}/glob 33032source for the @sc{gnu} filename pattern-matching subroutine 33033 33034@item gdb-@value{GDBVN}/mmalloc 33035source for the @sc{gnu} memory-mapped malloc package 33036@end table 33037 33038The simplest way to configure and build @value{GDBN} is to run @file{configure} 33039from the @file{gdb-@var{version-number}} source directory, which in 33040this example is the @file{gdb-@value{GDBVN}} directory. 33041 33042First switch to the @file{gdb-@var{version-number}} source directory 33043if you are not already in it; then run @file{configure}. Pass the 33044identifier for the platform on which @value{GDBN} will run as an 33045argument. 33046 33047For example: 33048 33049@smallexample 33050cd gdb-@value{GDBVN} 33051./configure @var{host} 33052make 33053@end smallexample 33054 33055@noindent 33056where @var{host} is an identifier such as @samp{sun4} or 33057@samp{decstation}, that identifies the platform where @value{GDBN} will run. 33058(You can often leave off @var{host}; @file{configure} tries to guess the 33059correct value by examining your system.) 33060 33061Running @samp{configure @var{host}} and then running @code{make} builds the 33062@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty} 33063libraries, then @code{gdb} itself. The configured source files, and the 33064binaries, are left in the corresponding source directories. 33065 33066@need 750 33067@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your 33068system does not recognize this automatically when you run a different 33069shell, you may need to run @code{sh} on it explicitly: 33070 33071@smallexample 33072sh configure @var{host} 33073@end smallexample 33074 33075If you run @file{configure} from a directory that contains source 33076directories for multiple libraries or programs, such as the 33077@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, 33078@file{configure} 33079creates configuration files for every directory level underneath (unless 33080you tell it not to, with the @samp{--norecursion} option). 33081 33082You should run the @file{configure} script from the top directory in the 33083source tree, the @file{gdb-@var{version-number}} directory. If you run 33084@file{configure} from one of the subdirectories, you will configure only 33085that subdirectory. That is usually not what you want. In particular, 33086if you run the first @file{configure} from the @file{gdb} subdirectory 33087of the @file{gdb-@var{version-number}} directory, you will omit the 33088configuration of @file{bfd}, @file{readline}, and other sibling 33089directories of the @file{gdb} subdirectory. This leads to build errors 33090about missing include files such as @file{bfd/bfd.h}. 33091 33092You can install @code{@value{GDBP}} anywhere; it has no hardwired paths. 33093However, you should make sure that the shell on your path (named by 33094the @samp{SHELL} environment variable) is publicly readable. Remember 33095that @value{GDBN} uses the shell to start your program---some systems refuse to 33096let @value{GDBN} debug child processes whose programs are not readable. 33097 33098@node Separate Objdir 33099@section Compiling @value{GDBN} in Another Directory 33100 33101If you want to run @value{GDBN} versions for several host or target machines, 33102you need a different @code{gdb} compiled for each combination of 33103host and target. @file{configure} is designed to make this easy by 33104allowing you to generate each configuration in a separate subdirectory, 33105rather than in the source directory. If your @code{make} program 33106handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running 33107@code{make} in each of these directories builds the @code{gdb} 33108program specified there. 33109 33110To build @code{gdb} in a separate directory, run @file{configure} 33111with the @samp{--srcdir} option to specify where to find the source. 33112(You also need to specify a path to find @file{configure} 33113itself from your working directory. If the path to @file{configure} 33114would be the same as the argument to @samp{--srcdir}, you can leave out 33115the @samp{--srcdir} option; it is assumed.) 33116 33117For example, with version @value{GDBVN}, you can build @value{GDBN} in a 33118separate directory for a Sun 4 like this: 33119 33120@smallexample 33121@group 33122cd gdb-@value{GDBVN} 33123mkdir ../gdb-sun4 33124cd ../gdb-sun4 33125../gdb-@value{GDBVN}/configure sun4 33126make 33127@end group 33128@end smallexample 33129 33130When @file{configure} builds a configuration using a remote source 33131directory, it creates a tree for the binaries with the same structure 33132(and using the same names) as the tree under the source directory. In 33133the example, you'd find the Sun 4 library @file{libiberty.a} in the 33134directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in 33135@file{gdb-sun4/gdb}. 33136 33137Make sure that your path to the @file{configure} script has just one 33138instance of @file{gdb} in it. If your path to @file{configure} looks 33139like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only 33140one subdirectory of @value{GDBN}, not the whole package. This leads to 33141build errors about missing include files such as @file{bfd/bfd.h}. 33142 33143One popular reason to build several @value{GDBN} configurations in separate 33144directories is to configure @value{GDBN} for cross-compiling (where 33145@value{GDBN} runs on one machine---the @dfn{host}---while debugging 33146programs that run on another machine---the @dfn{target}). 33147You specify a cross-debugging target by 33148giving the @samp{--target=@var{target}} option to @file{configure}. 33149 33150When you run @code{make} to build a program or library, you must run 33151it in a configured directory---whatever directory you were in when you 33152called @file{configure} (or one of its subdirectories). 33153 33154The @code{Makefile} that @file{configure} generates in each source 33155directory also runs recursively. If you type @code{make} in a source 33156directory such as @file{gdb-@value{GDBVN}} (or in a separate configured 33157directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you 33158will build all the required libraries, and then build GDB. 33159 33160When you have multiple hosts or targets configured in separate 33161directories, you can run @code{make} on them in parallel (for example, 33162if they are NFS-mounted on each of the hosts); they will not interfere 33163with each other. 33164 33165@node Config Names 33166@section Specifying Names for Hosts and Targets 33167 33168The specifications used for hosts and targets in the @file{configure} 33169script are based on a three-part naming scheme, but some short predefined 33170aliases are also supported. The full naming scheme encodes three pieces 33171of information in the following pattern: 33172 33173@smallexample 33174@var{architecture}-@var{vendor}-@var{os} 33175@end smallexample 33176 33177For example, you can use the alias @code{sun4} as a @var{host} argument, 33178or as the value for @var{target} in a @code{--target=@var{target}} 33179option. The equivalent full name is @samp{sparc-sun-sunos4}. 33180 33181The @file{configure} script accompanying @value{GDBN} does not provide 33182any query facility to list all supported host and target names or 33183aliases. @file{configure} calls the Bourne shell script 33184@code{config.sub} to map abbreviations to full names; you can read the 33185script, if you wish, or you can use it to test your guesses on 33186abbreviations---for example: 33187 33188@smallexample 33189% sh config.sub i386-linux 33190i386-pc-linux-gnu 33191% sh config.sub alpha-linux 33192alpha-unknown-linux-gnu 33193% sh config.sub hp9k700 33194hppa1.1-hp-hpux 33195% sh config.sub sun4 33196sparc-sun-sunos4.1.1 33197% sh config.sub sun3 33198m68k-sun-sunos4.1.1 33199% sh config.sub i986v 33200Invalid configuration `i986v': machine `i986v' not recognized 33201@end smallexample 33202 33203@noindent 33204@code{config.sub} is also distributed in the @value{GDBN} source 33205directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}). 33206 33207@node Configure Options 33208@section @file{configure} Options 33209 33210Here is a summary of the @file{configure} options and arguments that 33211are most often useful for building @value{GDBN}. @file{configure} also has 33212several other options not listed here. @inforef{What Configure 33213Does,,configure.info}, for a full explanation of @file{configure}. 33214 33215@smallexample 33216configure @r{[}--help@r{]} 33217 @r{[}--prefix=@var{dir}@r{]} 33218 @r{[}--exec-prefix=@var{dir}@r{]} 33219 @r{[}--srcdir=@var{dirname}@r{]} 33220 @r{[}--norecursion@r{]} @r{[}--rm@r{]} 33221 @r{[}--target=@var{target}@r{]} 33222 @var{host} 33223@end smallexample 33224 33225@noindent 33226You may introduce options with a single @samp{-} rather than 33227@samp{--} if you prefer; but you may abbreviate option names if you use 33228@samp{--}. 33229 33230@table @code 33231@item --help 33232Display a quick summary of how to invoke @file{configure}. 33233 33234@item --prefix=@var{dir} 33235Configure the source to install programs and files under directory 33236@file{@var{dir}}. 33237 33238@item --exec-prefix=@var{dir} 33239Configure the source to install programs under directory 33240@file{@var{dir}}. 33241 33242@c avoid splitting the warning from the explanation: 33243@need 2000 33244@item --srcdir=@var{dirname} 33245@strong{Warning: using this option requires @sc{gnu} @code{make}, or another 33246@code{make} that implements the @code{VPATH} feature.}@* 33247Use this option to make configurations in directories separate from the 33248@value{GDBN} source directories. Among other things, you can use this to 33249build (or maintain) several configurations simultaneously, in separate 33250directories. @file{configure} writes configuration-specific files in 33251the current directory, but arranges for them to use the source in the 33252directory @var{dirname}. @file{configure} creates directories under 33253the working directory in parallel to the source directories below 33254@var{dirname}. 33255 33256@item --norecursion 33257Configure only the directory level where @file{configure} is executed; do not 33258propagate configuration to subdirectories. 33259 33260@item --target=@var{target} 33261Configure @value{GDBN} for cross-debugging programs running on the specified 33262@var{target}. Without this option, @value{GDBN} is configured to debug 33263programs that run on the same machine (@var{host}) as @value{GDBN} itself. 33264 33265There is no convenient way to generate a list of all available targets. 33266 33267@item @var{host} @dots{} 33268Configure @value{GDBN} to run on the specified @var{host}. 33269 33270There is no convenient way to generate a list of all available hosts. 33271@end table 33272 33273There are many other options available as well, but they are generally 33274needed for special purposes only. 33275 33276@node System-wide configuration 33277@section System-wide configuration and settings 33278@cindex system-wide init file 33279 33280@value{GDBN} can be configured to have a system-wide init file; 33281this file will be read and executed at startup (@pxref{Startup, , What 33282@value{GDBN} does during startup}). 33283 33284Here is the corresponding configure option: 33285 33286@table @code 33287@item --with-system-gdbinit=@var{file} 33288Specify that the default location of the system-wide init file is 33289@var{file}. 33290@end table 33291 33292If @value{GDBN} has been configured with the option @option{--prefix=$prefix}, 33293it may be subject to relocation. Two possible cases: 33294 33295@itemize @bullet 33296@item 33297If the default location of this init file contains @file{$prefix}, 33298it will be subject to relocation. Suppose that the configure options 33299are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit}; 33300if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system 33301init file is looked for as @file{$install/etc/gdbinit} instead of 33302@file{$prefix/etc/gdbinit}. 33303 33304@item 33305By contrast, if the default location does not contain the prefix, 33306it will not be relocated. E.g.@: if @value{GDBN} has been configured with 33307@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit}, 33308then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit}, 33309wherever @value{GDBN} is installed. 33310@end itemize 33311 33312If the configured location of the system-wide init file (as given by the 33313@option{--with-system-gdbinit} option at configure time) is in the 33314data-directory (as specified by @option{--with-gdb-datadir} at configure 33315time) or in one of its subdirectories, then @value{GDBN} will look for the 33316system-wide init file in the directory specified by the 33317@option{--data-directory} command-line option. 33318Note that the system-wide init file is only read once, during @value{GDBN} 33319initialization. If the data-directory is changed after @value{GDBN} has 33320started with the @code{set data-directory} command, the file will not be 33321reread. 33322 33323@menu 33324* System-wide Configuration Scripts:: Installed System-wide Configuration Scripts 33325@end menu 33326 33327@node System-wide Configuration Scripts 33328@subsection Installed System-wide Configuration Scripts 33329@cindex system-wide configuration scripts 33330 33331The @file{system-gdbinit} directory, located inside the data-directory 33332(as specified by @option{--with-gdb-datadir} at configure time) contains 33333a number of scripts which can be used as system-wide init files. To 33334automatically source those scripts at startup, @value{GDBN} should be 33335configured with @option{--with-system-gdbinit}. Otherwise, any user 33336should be able to source them by hand as needed. 33337 33338The following scripts are currently available: 33339@itemize @bullet 33340 33341@item @file{elinos.py} 33342@pindex elinos.py 33343@cindex ELinOS system-wide configuration script 33344This script is useful when debugging a program on an ELinOS target. 33345It takes advantage of the environment variables defined in a standard 33346ELinOS environment in order to determine the location of the system 33347shared libraries, and then sets the @samp{solib-absolute-prefix} 33348and @samp{solib-search-path} variables appropriately. 33349 33350@item @file{wrs-linux.py} 33351@pindex wrs-linux.py 33352@cindex Wind River Linux system-wide configuration script 33353This script is useful when debugging a program on a target running 33354Wind River Linux. It expects the @env{ENV_PREFIX} to be set to 33355the host-side sysroot used by the target system. 33356 33357@end itemize 33358 33359@node Maintenance Commands 33360@appendix Maintenance Commands 33361@cindex maintenance commands 33362@cindex internal commands 33363 33364In addition to commands intended for @value{GDBN} users, @value{GDBN} 33365includes a number of commands intended for @value{GDBN} developers, 33366that are not documented elsewhere in this manual. These commands are 33367provided here for reference. (For commands that turn on debugging 33368messages, see @ref{Debugging Output}.) 33369 33370@table @code 33371@kindex maint agent 33372@kindex maint agent-eval 33373@item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression} 33374@itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression} 33375Translate the given @var{expression} into remote agent bytecodes. 33376This command is useful for debugging the Agent Expression mechanism 33377(@pxref{Agent Expressions}). The @samp{agent} version produces an 33378expression useful for data collection, such as by tracepoints, while 33379@samp{maint agent-eval} produces an expression that evaluates directly 33380to a result. For instance, a collection expression for @code{globa + 33381globb} will include bytecodes to record four bytes of memory at each 33382of the addresses of @code{globa} and @code{globb}, while discarding 33383the result of the addition, while an evaluation expression will do the 33384addition and return the sum. 33385If @code{-at} is given, generate remote agent bytecode for @var{location}. 33386If not, generate remote agent bytecode for current frame PC address. 33387 33388@kindex maint agent-printf 33389@item maint agent-printf @var{format},@var{expr},... 33390Translate the given format string and list of argument expressions 33391into remote agent bytecodes and display them as a disassembled list. 33392This command is useful for debugging the agent version of dynamic 33393printf (@pxref{Dynamic Printf}). 33394 33395@kindex maint info breakpoints 33396@item @anchor{maint info breakpoints}maint info breakpoints 33397Using the same format as @samp{info breakpoints}, display both the 33398breakpoints you've set explicitly, and those @value{GDBN} is using for 33399internal purposes. Internal breakpoints are shown with negative 33400breakpoint numbers. The type column identifies what kind of breakpoint 33401is shown: 33402 33403@table @code 33404@item breakpoint 33405Normal, explicitly set breakpoint. 33406 33407@item watchpoint 33408Normal, explicitly set watchpoint. 33409 33410@item longjmp 33411Internal breakpoint, used to handle correctly stepping through 33412@code{longjmp} calls. 33413 33414@item longjmp resume 33415Internal breakpoint at the target of a @code{longjmp}. 33416 33417@item until 33418Temporary internal breakpoint used by the @value{GDBN} @code{until} command. 33419 33420@item finish 33421Temporary internal breakpoint used by the @value{GDBN} @code{finish} command. 33422 33423@item shlib events 33424Shared library events. 33425 33426@end table 33427 33428@kindex maint info bfds 33429@item maint info bfds 33430This prints information about each @code{bfd} object that is known to 33431@value{GDBN}. @xref{Top, , BFD, bfd, The Binary File Descriptor Library}. 33432 33433@kindex set displaced-stepping 33434@kindex show displaced-stepping 33435@cindex displaced stepping support 33436@cindex out-of-line single-stepping 33437@item set displaced-stepping 33438@itemx show displaced-stepping 33439Control whether or not @value{GDBN} will do @dfn{displaced stepping} 33440if the target supports it. Displaced stepping is a way to single-step 33441over breakpoints without removing them from the inferior, by executing 33442an out-of-line copy of the instruction that was originally at the 33443breakpoint location. It is also known as out-of-line single-stepping. 33444 33445@table @code 33446@item set displaced-stepping on 33447If the target architecture supports it, @value{GDBN} will use 33448displaced stepping to step over breakpoints. 33449 33450@item set displaced-stepping off 33451@value{GDBN} will not use displaced stepping to step over breakpoints, 33452even if such is supported by the target architecture. 33453 33454@cindex non-stop mode, and @samp{set displaced-stepping} 33455@item set displaced-stepping auto 33456This is the default mode. @value{GDBN} will use displaced stepping 33457only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target 33458architecture supports displaced stepping. 33459@end table 33460 33461@kindex maint check-psymtabs 33462@item maint check-psymtabs 33463Check the consistency of currently expanded psymtabs versus symtabs. 33464Use this to check, for example, whether a symbol is in one but not the other. 33465 33466@kindex maint check-symtabs 33467@item maint check-symtabs 33468Check the consistency of currently expanded symtabs. 33469 33470@kindex maint expand-symtabs 33471@item maint expand-symtabs [@var{regexp}] 33472Expand symbol tables. 33473If @var{regexp} is specified, only expand symbol tables for file 33474names matching @var{regexp}. 33475 33476@kindex maint set catch-demangler-crashes 33477@kindex maint show catch-demangler-crashes 33478@cindex demangler crashes 33479@item maint set catch-demangler-crashes [on|off] 33480@itemx maint show catch-demangler-crashes 33481Control whether @value{GDBN} should attempt to catch crashes in the 33482symbol name demangler. The default is to attempt to catch crashes. 33483If enabled, the first time a crash is caught, a core file is created, 33484the offending symbol is displayed and the user is presented with the 33485option to terminate the current session. 33486 33487@kindex maint cplus first_component 33488@item maint cplus first_component @var{name} 33489Print the first C@t{++} class/namespace component of @var{name}. 33490 33491@kindex maint cplus namespace 33492@item maint cplus namespace 33493Print the list of possible C@t{++} namespaces. 33494 33495@kindex maint deprecate 33496@kindex maint undeprecate 33497@cindex deprecated commands 33498@item maint deprecate @var{command} @r{[}@var{replacement}@r{]} 33499@itemx maint undeprecate @var{command} 33500Deprecate or undeprecate the named @var{command}. Deprecated commands 33501cause @value{GDBN} to issue a warning when you use them. The optional 33502argument @var{replacement} says which newer command should be used in 33503favor of the deprecated one; if it is given, @value{GDBN} will mention 33504the replacement as part of the warning. 33505 33506@kindex maint dump-me 33507@item maint dump-me 33508@cindex @code{SIGQUIT} signal, dump core of @value{GDBN} 33509Cause a fatal signal in the debugger and force it to dump its core. 33510This is supported only on systems which support aborting a program 33511with the @code{SIGQUIT} signal. 33512 33513@kindex maint internal-error 33514@kindex maint internal-warning 33515@kindex maint demangler-warning 33516@cindex demangler crashes 33517@item maint internal-error @r{[}@var{message-text}@r{]} 33518@itemx maint internal-warning @r{[}@var{message-text}@r{]} 33519@itemx maint demangler-warning @r{[}@var{message-text}@r{]} 33520 33521Cause @value{GDBN} to call the internal function @code{internal_error}, 33522@code{internal_warning} or @code{demangler_warning} and hence behave 33523as though an internal problam has been detected. In addition to 33524reporting the internal problem, these functions give the user the 33525opportunity to either quit @value{GDBN} or (for @code{internal_error} 33526and @code{internal_warning}) create a core file of the current 33527@value{GDBN} session. 33528 33529These commands take an optional parameter @var{message-text} that is 33530used as the text of the error or warning message. 33531 33532Here's an example of using @code{internal-error}: 33533 33534@smallexample 33535(@value{GDBP}) @kbd{maint internal-error testing, 1, 2} 33536@dots{}/maint.c:121: internal-error: testing, 1, 2 33537A problem internal to GDB has been detected. Further 33538debugging may prove unreliable. 33539Quit this debugging session? (y or n) @kbd{n} 33540Create a core file? (y or n) @kbd{n} 33541(@value{GDBP}) 33542@end smallexample 33543 33544@cindex @value{GDBN} internal error 33545@cindex internal errors, control of @value{GDBN} behavior 33546@cindex demangler crashes 33547 33548@kindex maint set internal-error 33549@kindex maint show internal-error 33550@kindex maint set internal-warning 33551@kindex maint show internal-warning 33552@kindex maint set demangler-warning 33553@kindex maint show demangler-warning 33554@item maint set internal-error @var{action} [ask|yes|no] 33555@itemx maint show internal-error @var{action} 33556@itemx maint set internal-warning @var{action} [ask|yes|no] 33557@itemx maint show internal-warning @var{action} 33558@itemx maint set demangler-warning @var{action} [ask|yes|no] 33559@itemx maint show demangler-warning @var{action} 33560When @value{GDBN} reports an internal problem (error or warning) it 33561gives the user the opportunity to both quit @value{GDBN} and create a 33562core file of the current @value{GDBN} session. These commands let you 33563override the default behaviour for each particular @var{action}, 33564described in the table below. 33565 33566@table @samp 33567@item quit 33568You can specify that @value{GDBN} should always (yes) or never (no) 33569quit. The default is to ask the user what to do. 33570 33571@item corefile 33572You can specify that @value{GDBN} should always (yes) or never (no) 33573create a core file. The default is to ask the user what to do. Note 33574that there is no @code{corefile} option for @code{demangler-warning}: 33575demangler warnings always create a core file and this cannot be 33576disabled. 33577@end table 33578 33579@kindex maint packet 33580@item maint packet @var{text} 33581If @value{GDBN} is talking to an inferior via the serial protocol, 33582then this command sends the string @var{text} to the inferior, and 33583displays the response packet. @value{GDBN} supplies the initial 33584@samp{$} character, the terminating @samp{#} character, and the 33585checksum. 33586 33587@kindex maint print architecture 33588@item maint print architecture @r{[}@var{file}@r{]} 33589Print the entire architecture configuration. The optional argument 33590@var{file} names the file where the output goes. 33591 33592@kindex maint print c-tdesc 33593@item maint print c-tdesc 33594Print the current target description (@pxref{Target Descriptions}) as 33595a C source file. The created source file can be used in @value{GDBN} 33596when an XML parser is not available to parse the description. 33597 33598@kindex maint print dummy-frames 33599@item maint print dummy-frames 33600Prints the contents of @value{GDBN}'s internal dummy-frame stack. 33601 33602@smallexample 33603(@value{GDBP}) @kbd{b add} 33604@dots{} 33605(@value{GDBP}) @kbd{print add(2,3)} 33606Breakpoint 2, add (a=2, b=3) at @dots{} 3360758 return (a + b); 33608The program being debugged stopped while in a function called from GDB. 33609@dots{} 33610(@value{GDBP}) @kbd{maint print dummy-frames} 336110xa8206d8: id=@{stack=0xbfffe734,code=0xbfffe73f,!special@}, ptid=process 9353 33612(@value{GDBP}) 33613@end smallexample 33614 33615Takes an optional file parameter. 33616 33617@kindex maint print registers 33618@kindex maint print raw-registers 33619@kindex maint print cooked-registers 33620@kindex maint print register-groups 33621@kindex maint print remote-registers 33622@item maint print registers @r{[}@var{file}@r{]} 33623@itemx maint print raw-registers @r{[}@var{file}@r{]} 33624@itemx maint print cooked-registers @r{[}@var{file}@r{]} 33625@itemx maint print register-groups @r{[}@var{file}@r{]} 33626@itemx maint print remote-registers @r{[}@var{file}@r{]} 33627Print @value{GDBN}'s internal register data structures. 33628 33629The command @code{maint print raw-registers} includes the contents of 33630the raw register cache; the command @code{maint print 33631cooked-registers} includes the (cooked) value of all registers, 33632including registers which aren't available on the target nor visible 33633to user; the command @code{maint print register-groups} includes the 33634groups that each register is a member of; and the command @code{maint 33635print remote-registers} includes the remote target's register numbers 33636and offsets in the `G' packets. 33637 33638These commands take an optional parameter, a file name to which to 33639write the information. 33640 33641@kindex maint print reggroups 33642@item maint print reggroups @r{[}@var{file}@r{]} 33643Print @value{GDBN}'s internal register group data structures. The 33644optional argument @var{file} tells to what file to write the 33645information. 33646 33647The register groups info looks like this: 33648 33649@smallexample 33650(@value{GDBP}) @kbd{maint print reggroups} 33651 Group Type 33652 general user 33653 float user 33654 all user 33655 vector user 33656 system user 33657 save internal 33658 restore internal 33659@end smallexample 33660 33661@kindex flushregs 33662@item flushregs 33663This command forces @value{GDBN} to flush its internal register cache. 33664 33665@kindex maint print objfiles 33666@cindex info for known object files 33667@item maint print objfiles @r{[}@var{regexp}@r{]} 33668Print a dump of all known object files. 33669If @var{regexp} is specified, only print object files whose names 33670match @var{regexp}. For each object file, this command prints its name, 33671address in memory, and all of its psymtabs and symtabs. 33672 33673@kindex maint print user-registers 33674@cindex user registers 33675@item maint print user-registers 33676List all currently available @dfn{user registers}. User registers 33677typically provide alternate names for actual hardware registers. They 33678include the four ``standard'' registers @code{$fp}, @code{$pc}, 33679@code{$sp}, and @code{$ps}. @xref{standard registers}. User 33680registers can be used in expressions in the same way as the canonical 33681register names, but only the latter are listed by the @code{info 33682registers} and @code{maint print registers} commands. 33683 33684@kindex maint print section-scripts 33685@cindex info for known .debug_gdb_scripts-loaded scripts 33686@item maint print section-scripts [@var{regexp}] 33687Print a dump of scripts specified in the @code{.debug_gdb_section} section. 33688If @var{regexp} is specified, only print scripts loaded by object files 33689matching @var{regexp}. 33690For each script, this command prints its name as specified in the objfile, 33691and the full path if known. 33692@xref{dotdebug_gdb_scripts section}. 33693 33694@kindex maint print statistics 33695@cindex bcache statistics 33696@item maint print statistics 33697This command prints, for each object file in the program, various data 33698about that object file followed by the byte cache (@dfn{bcache}) 33699statistics for the object file. The objfile data includes the number 33700of minimal, partial, full, and stabs symbols, the number of types 33701defined by the objfile, the number of as yet unexpanded psym tables, 33702the number of line tables and string tables, and the amount of memory 33703used by the various tables. The bcache statistics include the counts, 33704sizes, and counts of duplicates of all and unique objects, max, 33705average, and median entry size, total memory used and its overhead and 33706savings, and various measures of the hash table size and chain 33707lengths. 33708 33709@kindex maint print target-stack 33710@cindex target stack description 33711@item maint print target-stack 33712A @dfn{target} is an interface between the debugger and a particular 33713kind of file or process. Targets can be stacked in @dfn{strata}, 33714so that more than one target can potentially respond to a request. 33715In particular, memory accesses will walk down the stack of targets 33716until they find a target that is interested in handling that particular 33717address. 33718 33719This command prints a short description of each layer that was pushed on 33720the @dfn{target stack}, starting from the top layer down to the bottom one. 33721 33722@kindex maint print type 33723@cindex type chain of a data type 33724@item maint print type @var{expr} 33725Print the type chain for a type specified by @var{expr}. The argument 33726can be either a type name or a symbol. If it is a symbol, the type of 33727that symbol is described. The type chain produced by this command is 33728a recursive definition of the data type as stored in @value{GDBN}'s 33729data structures, including its flags and contained types. 33730 33731@kindex maint set dwarf2 always-disassemble 33732@kindex maint show dwarf2 always-disassemble 33733@item maint set dwarf2 always-disassemble 33734@item maint show dwarf2 always-disassemble 33735Control the behavior of @code{info address} when using DWARF debugging 33736information. 33737 33738The default is @code{off}, which means that @value{GDBN} should try to 33739describe a variable's location in an easily readable format. When 33740@code{on}, @value{GDBN} will instead display the DWARF location 33741expression in an assembly-like format. Note that some locations are 33742too complex for @value{GDBN} to describe simply; in this case you will 33743always see the disassembly form. 33744 33745Here is an example of the resulting disassembly: 33746 33747@smallexample 33748(gdb) info addr argc 33749Symbol "argc" is a complex DWARF expression: 33750 1: DW_OP_fbreg 0 33751@end smallexample 33752 33753For more information on these expressions, see 33754@uref{http://www.dwarfstd.org/, the DWARF standard}. 33755 33756@kindex maint set dwarf2 max-cache-age 33757@kindex maint show dwarf2 max-cache-age 33758@item maint set dwarf2 max-cache-age 33759@itemx maint show dwarf2 max-cache-age 33760Control the DWARF 2 compilation unit cache. 33761 33762@cindex DWARF 2 compilation units cache 33763In object files with inter-compilation-unit references, such as those 33764produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2 33765reader needs to frequently refer to previously read compilation units. 33766This setting controls how long a compilation unit will remain in the 33767cache if it is not referenced. A higher limit means that cached 33768compilation units will be stored in memory longer, and more total 33769memory will be used. Setting it to zero disables caching, which will 33770slow down @value{GDBN} startup, but reduce memory consumption. 33771 33772@kindex maint set profile 33773@kindex maint show profile 33774@cindex profiling GDB 33775@item maint set profile 33776@itemx maint show profile 33777Control profiling of @value{GDBN}. 33778 33779Profiling will be disabled until you use the @samp{maint set profile} 33780command to enable it. When you enable profiling, the system will begin 33781collecting timing and execution count data; when you disable profiling or 33782exit @value{GDBN}, the results will be written to a log file. Remember that 33783if you use profiling, @value{GDBN} will overwrite the profiling log file 33784(often called @file{gmon.out}). If you have a record of important profiling 33785data in a @file{gmon.out} file, be sure to move it to a safe location. 33786 33787Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be 33788compiled with the @samp{-pg} compiler option. 33789 33790@kindex maint set show-debug-regs 33791@kindex maint show show-debug-regs 33792@cindex hardware debug registers 33793@item maint set show-debug-regs 33794@itemx maint show show-debug-regs 33795Control whether to show variables that mirror the hardware debug 33796registers. Use @code{on} to enable, @code{off} to disable. If 33797enabled, the debug registers values are shown when @value{GDBN} inserts or 33798removes a hardware breakpoint or watchpoint, and when the inferior 33799triggers a hardware-assisted breakpoint or watchpoint. 33800 33801@kindex maint set show-all-tib 33802@kindex maint show show-all-tib 33803@item maint set show-all-tib 33804@itemx maint show show-all-tib 33805Control whether to show all non zero areas within a 1k block starting 33806at thread local base, when using the @samp{info w32 thread-information-block} 33807command. 33808 33809@kindex maint set target-async 33810@kindex maint show target-async 33811@item maint set target-async 33812@itemx maint show target-async 33813This controls whether @value{GDBN} targets operate in synchronous or 33814asynchronous mode (@pxref{Background Execution}). Normally the 33815default is asynchronous, if it is available; but this can be changed 33816to more easily debug problems occurring only in synchronous mode. 33817 33818@kindex maint set per-command 33819@kindex maint show per-command 33820@item maint set per-command 33821@itemx maint show per-command 33822@cindex resources used by commands 33823 33824@value{GDBN} can display the resources used by each command. 33825This is useful in debugging performance problems. 33826 33827@table @code 33828@item maint set per-command space [on|off] 33829@itemx maint show per-command space 33830Enable or disable the printing of the memory used by GDB for each command. 33831If enabled, @value{GDBN} will display how much memory each command 33832took, following the command's own output. 33833This can also be requested by invoking @value{GDBN} with the 33834@option{--statistics} command-line switch (@pxref{Mode Options}). 33835 33836@item maint set per-command time [on|off] 33837@itemx maint show per-command time 33838Enable or disable the printing of the execution time of @value{GDBN} 33839for each command. 33840If enabled, @value{GDBN} will display how much time it 33841took to execute each command, following the command's own output. 33842Both CPU time and wallclock time are printed. 33843Printing both is useful when trying to determine whether the cost is 33844CPU or, e.g., disk/network latency. 33845Note that the CPU time printed is for @value{GDBN} only, it does not include 33846the execution time of the inferior because there's no mechanism currently 33847to compute how much time was spent by @value{GDBN} and how much time was 33848spent by the program been debugged. 33849This can also be requested by invoking @value{GDBN} with the 33850@option{--statistics} command-line switch (@pxref{Mode Options}). 33851 33852@item maint set per-command symtab [on|off] 33853@itemx maint show per-command symtab 33854Enable or disable the printing of basic symbol table statistics 33855for each command. 33856If enabled, @value{GDBN} will display the following information: 33857 33858@enumerate a 33859@item 33860number of symbol tables 33861@item 33862number of primary symbol tables 33863@item 33864number of blocks in the blockvector 33865@end enumerate 33866@end table 33867 33868@kindex maint space 33869@cindex memory used by commands 33870@item maint space @var{value} 33871An alias for @code{maint set per-command space}. 33872A non-zero value enables it, zero disables it. 33873 33874@kindex maint time 33875@cindex time of command execution 33876@item maint time @var{value} 33877An alias for @code{maint set per-command time}. 33878A non-zero value enables it, zero disables it. 33879 33880@kindex maint translate-address 33881@item maint translate-address @r{[}@var{section}@r{]} @var{addr} 33882Find the symbol stored at the location specified by the address 33883@var{addr} and an optional section name @var{section}. If found, 33884@value{GDBN} prints the name of the closest symbol and an offset from 33885the symbol's location to the specified address. This is similar to 33886the @code{info address} command (@pxref{Symbols}), except that this 33887command also allows to find symbols in other sections. 33888 33889If section was not specified, the section in which the symbol was found 33890is also printed. For dynamically linked executables, the name of 33891executable or shared library containing the symbol is printed as well. 33892 33893@end table 33894 33895The following command is useful for non-interactive invocations of 33896@value{GDBN}, such as in the test suite. 33897 33898@table @code 33899@item set watchdog @var{nsec} 33900@kindex set watchdog 33901@cindex watchdog timer 33902@cindex timeout for commands 33903Set the maximum number of seconds @value{GDBN} will wait for the 33904target operation to finish. If this time expires, @value{GDBN} 33905reports and error and the command is aborted. 33906 33907@item show watchdog 33908Show the current setting of the target wait timeout. 33909@end table 33910 33911@node Remote Protocol 33912@appendix @value{GDBN} Remote Serial Protocol 33913 33914@menu 33915* Overview:: 33916* Packets:: 33917* Stop Reply Packets:: 33918* General Query Packets:: 33919* Architecture-Specific Protocol Details:: 33920* Tracepoint Packets:: 33921* Host I/O Packets:: 33922* Interrupts:: 33923* Notification Packets:: 33924* Remote Non-Stop:: 33925* Packet Acknowledgment:: 33926* Examples:: 33927* File-I/O Remote Protocol Extension:: 33928* Library List Format:: 33929* Library List Format for SVR4 Targets:: 33930* Memory Map Format:: 33931* Thread List Format:: 33932* Traceframe Info Format:: 33933* Branch Trace Format:: 33934@end menu 33935 33936@node Overview 33937@section Overview 33938 33939There may be occasions when you need to know something about the 33940protocol---for example, if there is only one serial port to your target 33941machine, you might want your program to do something special if it 33942recognizes a packet meant for @value{GDBN}. 33943 33944In the examples below, @samp{->} and @samp{<-} are used to indicate 33945transmitted and received data, respectively. 33946 33947@cindex protocol, @value{GDBN} remote serial 33948@cindex serial protocol, @value{GDBN} remote 33949@cindex remote serial protocol 33950All @value{GDBN} commands and responses (other than acknowledgments 33951and notifications, see @ref{Notification Packets}) are sent as a 33952@var{packet}. A @var{packet} is introduced with the character 33953@samp{$}, the actual @var{packet-data}, and the terminating character 33954@samp{#} followed by a two-digit @var{checksum}: 33955 33956@smallexample 33957@code{$}@var{packet-data}@code{#}@var{checksum} 33958@end smallexample 33959@noindent 33960 33961@cindex checksum, for @value{GDBN} remote 33962@noindent 33963The two-digit @var{checksum} is computed as the modulo 256 sum of all 33964characters between the leading @samp{$} and the trailing @samp{#} (an 33965eight bit unsigned checksum). 33966 33967Implementors should note that prior to @value{GDBN} 5.0 the protocol 33968specification also included an optional two-digit @var{sequence-id}: 33969 33970@smallexample 33971@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum} 33972@end smallexample 33973 33974@cindex sequence-id, for @value{GDBN} remote 33975@noindent 33976That @var{sequence-id} was appended to the acknowledgment. @value{GDBN} 33977has never output @var{sequence-id}s. Stubs that handle packets added 33978since @value{GDBN} 5.0 must not accept @var{sequence-id}. 33979 33980When either the host or the target machine receives a packet, the first 33981response expected is an acknowledgment: either @samp{+} (to indicate 33982the package was received correctly) or @samp{-} (to request 33983retransmission): 33984 33985@smallexample 33986-> @code{$}@var{packet-data}@code{#}@var{checksum} 33987<- @code{+} 33988@end smallexample 33989@noindent 33990 33991The @samp{+}/@samp{-} acknowledgments can be disabled 33992once a connection is established. 33993@xref{Packet Acknowledgment}, for details. 33994 33995The host (@value{GDBN}) sends @var{command}s, and the target (the 33996debugging stub incorporated in your program) sends a @var{response}. In 33997the case of step and continue @var{command}s, the response is only sent 33998when the operation has completed, and the target has again stopped all 33999threads in all attached processes. This is the default all-stop mode 34000behavior, but the remote protocol also supports @value{GDBN}'s non-stop 34001execution mode; see @ref{Remote Non-Stop}, for details. 34002 34003@var{packet-data} consists of a sequence of characters with the 34004exception of @samp{#} and @samp{$} (see @samp{X} packet for additional 34005exceptions). 34006 34007@cindex remote protocol, field separator 34008Fields within the packet should be separated using @samp{,} @samp{;} or 34009@samp{:}. Except where otherwise noted all numbers are represented in 34010@sc{hex} with leading zeros suppressed. 34011 34012Implementors should note that prior to @value{GDBN} 5.0, the character 34013@samp{:} could not appear as the third character in a packet (as it 34014would potentially conflict with the @var{sequence-id}). 34015 34016@cindex remote protocol, binary data 34017@anchor{Binary Data} 34018Binary data in most packets is encoded either as two hexadecimal 34019digits per byte of binary data. This allowed the traditional remote 34020protocol to work over connections which were only seven-bit clean. 34021Some packets designed more recently assume an eight-bit clean 34022connection, and use a more efficient encoding to send and receive 34023binary data. 34024 34025The binary data representation uses @code{7d} (@sc{ascii} @samp{@}}) 34026as an escape character. Any escaped byte is transmitted as the escape 34027character followed by the original character XORed with @code{0x20}. 34028For example, the byte @code{0x7d} would be transmitted as the two 34029bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}), 34030@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii} 34031@samp{@}}) must always be escaped. Responses sent by the stub 34032must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it 34033is not interpreted as the start of a run-length encoded sequence 34034(described next). 34035 34036Response @var{data} can be run-length encoded to save space. 34037Run-length encoding replaces runs of identical characters with one 34038instance of the repeated character, followed by a @samp{*} and a 34039repeat count. The repeat count is itself sent encoded, to avoid 34040binary characters in @var{data}: a value of @var{n} is sent as 34041@code{@var{n}+29}. For a repeat count greater or equal to 3, this 34042produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii} 34043code 32) for a repeat count of 3. (This is because run-length 34044encoding starts to win for counts 3 or more.) Thus, for example, 34045@samp{0* } is a run-length encoding of ``0000'': the space character 34046after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 = 340473}} more times. 34048 34049The printable characters @samp{#} and @samp{$} or with a numeric value 34050greater than 126 must not be used. Runs of six repeats (@samp{#}) or 34051seven repeats (@samp{$}) can be expanded using a repeat count of only 34052five (@samp{"}). For example, @samp{00000000} can be encoded as 34053@samp{0*"00}. 34054 34055The error response returned for some packets includes a two character 34056error number. That number is not well defined. 34057 34058@cindex empty response, for unsupported packets 34059For any @var{command} not supported by the stub, an empty response 34060(@samp{$#00}) should be returned. That way it is possible to extend the 34061protocol. A newer @value{GDBN} can tell if a packet is supported based 34062on that response. 34063 34064At a minimum, a stub is required to support the @samp{g} and @samp{G} 34065commands for register access, and the @samp{m} and @samp{M} commands 34066for memory access. Stubs that only control single-threaded targets 34067can implement run control with the @samp{c} (continue), and @samp{s} 34068(step) commands. Stubs that support multi-threading targets should 34069support the @samp{vCont} command. All other commands are optional. 34070 34071@node Packets 34072@section Packets 34073 34074The following table provides a complete list of all currently defined 34075@var{command}s and their corresponding response @var{data}. 34076@xref{File-I/O Remote Protocol Extension}, for details about the File 34077I/O extension of the remote protocol. 34078 34079Each packet's description has a template showing the packet's overall 34080syntax, followed by an explanation of the packet's meaning. We 34081include spaces in some of the templates for clarity; these are not 34082part of the packet's syntax. No @value{GDBN} packet uses spaces to 34083separate its components. For example, a template like @samp{foo 34084@var{bar} @var{baz}} describes a packet beginning with the three ASCII 34085bytes @samp{foo}, followed by a @var{bar}, followed directly by a 34086@var{baz}. @value{GDBN} does not transmit a space character between the 34087@samp{foo} and the @var{bar}, or between the @var{bar} and the 34088@var{baz}. 34089 34090@cindex @var{thread-id}, in remote protocol 34091@anchor{thread-id syntax} 34092Several packets and replies include a @var{thread-id} field to identify 34093a thread. Normally these are positive numbers with a target-specific 34094interpretation, formatted as big-endian hex strings. A @var{thread-id} 34095can also be a literal @samp{-1} to indicate all threads, or @samp{0} to 34096pick any thread. 34097 34098In addition, the remote protocol supports a multiprocess feature in 34099which the @var{thread-id} syntax is extended to optionally include both 34100process and thread ID fields, as @samp{p@var{pid}.@var{tid}}. 34101The @var{pid} (process) and @var{tid} (thread) components each have the 34102format described above: a positive number with target-specific 34103interpretation formatted as a big-endian hex string, literal @samp{-1} 34104to indicate all processes or threads (respectively), or @samp{0} to 34105indicate an arbitrary process or thread. Specifying just a process, as 34106@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an 34107error to specify all processes but a specific thread, such as 34108@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used 34109for those packets and replies explicitly documented to include a process 34110ID, rather than a @var{thread-id}. 34111 34112The multiprocess @var{thread-id} syntax extensions are only used if both 34113@value{GDBN} and the stub report support for the @samp{multiprocess} 34114feature using @samp{qSupported}. @xref{multiprocess extensions}, for 34115more information. 34116 34117Note that all packet forms beginning with an upper- or lower-case 34118letter, other than those described here, are reserved for future use. 34119 34120Here are the packet descriptions. 34121 34122@table @samp 34123 34124@item ! 34125@cindex @samp{!} packet 34126@anchor{extended mode} 34127Enable extended mode. In extended mode, the remote server is made 34128persistent. The @samp{R} packet is used to restart the program being 34129debugged. 34130 34131Reply: 34132@table @samp 34133@item OK 34134The remote target both supports and has enabled extended mode. 34135@end table 34136 34137@item ? 34138@cindex @samp{?} packet 34139@anchor{? packet} 34140Indicate the reason the target halted. The reply is the same as for 34141step and continue. This packet has a special interpretation when the 34142target is in non-stop mode; see @ref{Remote Non-Stop}. 34143 34144Reply: 34145@xref{Stop Reply Packets}, for the reply specifications. 34146 34147@item A @var{arglen},@var{argnum},@var{arg},@dots{} 34148@cindex @samp{A} packet 34149Initialized @code{argv[]} array passed into program. @var{arglen} 34150specifies the number of bytes in the hex encoded byte stream 34151@var{arg}. See @code{gdbserver} for more details. 34152 34153Reply: 34154@table @samp 34155@item OK 34156The arguments were set. 34157@item E @var{NN} 34158An error occurred. 34159@end table 34160 34161@item b @var{baud} 34162@cindex @samp{b} packet 34163(Don't use this packet; its behavior is not well-defined.) 34164Change the serial line speed to @var{baud}. 34165 34166JTC: @emph{When does the transport layer state change? When it's 34167received, or after the ACK is transmitted. In either case, there are 34168problems if the command or the acknowledgment packet is dropped.} 34169 34170Stan: @emph{If people really wanted to add something like this, and get 34171it working for the first time, they ought to modify ser-unix.c to send 34172some kind of out-of-band message to a specially-setup stub and have the 34173switch happen "in between" packets, so that from remote protocol's point 34174of view, nothing actually happened.} 34175 34176@item B @var{addr},@var{mode} 34177@cindex @samp{B} packet 34178Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a 34179breakpoint at @var{addr}. 34180 34181Don't use this packet. Use the @samp{Z} and @samp{z} packets instead 34182(@pxref{insert breakpoint or watchpoint packet}). 34183 34184@cindex @samp{bc} packet 34185@anchor{bc} 34186@item bc 34187Backward continue. Execute the target system in reverse. No parameter. 34188@xref{Reverse Execution}, for more information. 34189 34190Reply: 34191@xref{Stop Reply Packets}, for the reply specifications. 34192 34193@cindex @samp{bs} packet 34194@anchor{bs} 34195@item bs 34196Backward single step. Execute one instruction in reverse. No parameter. 34197@xref{Reverse Execution}, for more information. 34198 34199Reply: 34200@xref{Stop Reply Packets}, for the reply specifications. 34201 34202@item c @r{[}@var{addr}@r{]} 34203@cindex @samp{c} packet 34204Continue at @var{addr}, which is the address to resume. If @var{addr} 34205is omitted, resume at current address. 34206 34207This packet is deprecated for multi-threading support. @xref{vCont 34208packet}. 34209 34210Reply: 34211@xref{Stop Reply Packets}, for the reply specifications. 34212 34213@item C @var{sig}@r{[};@var{addr}@r{]} 34214@cindex @samp{C} packet 34215Continue with signal @var{sig} (hex signal number). If 34216@samp{;@var{addr}} is omitted, resume at same address. 34217 34218This packet is deprecated for multi-threading support. @xref{vCont 34219packet}. 34220 34221Reply: 34222@xref{Stop Reply Packets}, for the reply specifications. 34223 34224@item d 34225@cindex @samp{d} packet 34226Toggle debug flag. 34227 34228Don't use this packet; instead, define a general set packet 34229(@pxref{General Query Packets}). 34230 34231@item D 34232@itemx D;@var{pid} 34233@cindex @samp{D} packet 34234The first form of the packet is used to detach @value{GDBN} from the 34235remote system. It is sent to the remote target 34236before @value{GDBN} disconnects via the @code{detach} command. 34237 34238The second form, including a process ID, is used when multiprocess 34239protocol extensions are enabled (@pxref{multiprocess extensions}), to 34240detach only a specific process. The @var{pid} is specified as a 34241big-endian hex string. 34242 34243Reply: 34244@table @samp 34245@item OK 34246for success 34247@item E @var{NN} 34248for an error 34249@end table 34250 34251@item F @var{RC},@var{EE},@var{CF};@var{XX} 34252@cindex @samp{F} packet 34253A reply from @value{GDBN} to an @samp{F} packet sent by the target. 34254This is part of the File-I/O protocol extension. @xref{File-I/O 34255Remote Protocol Extension}, for the specification. 34256 34257@item g 34258@anchor{read registers packet} 34259@cindex @samp{g} packet 34260Read general registers. 34261 34262Reply: 34263@table @samp 34264@item @var{XX@dots{}} 34265Each byte of register data is described by two hex digits. The bytes 34266with the register are transmitted in target byte order. The size of 34267each register and their position within the @samp{g} packet are 34268determined by the @value{GDBN} internal gdbarch functions 34269@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The 34270specification of several standard @samp{g} packets is specified below. 34271 34272When reading registers from a trace frame (@pxref{Analyze Collected 34273Data,,Using the Collected Data}), the stub may also return a string of 34274literal @samp{x}'s in place of the register data digits, to indicate 34275that the corresponding register has not been collected, thus its value 34276is unavailable. For example, for an architecture with 4 registers of 342774 bytes each, the following reply indicates to @value{GDBN} that 34278registers 0 and 2 have not been collected, while registers 1 and 3 34279have been collected, and both have zero value: 34280 34281@smallexample 34282-> @code{g} 34283<- @code{xxxxxxxx00000000xxxxxxxx00000000} 34284@end smallexample 34285 34286@item E @var{NN} 34287for an error. 34288@end table 34289 34290@item G @var{XX@dots{}} 34291@cindex @samp{G} packet 34292Write general registers. @xref{read registers packet}, for a 34293description of the @var{XX@dots{}} data. 34294 34295Reply: 34296@table @samp 34297@item OK 34298for success 34299@item E @var{NN} 34300for an error 34301@end table 34302 34303@item H @var{op} @var{thread-id} 34304@cindex @samp{H} packet 34305Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g}, 34306@samp{G}, et.al.). Depending on the operation to be performed, @var{op} 34307should be @samp{c} for step and continue operations (note that this 34308is deprecated, supporting the @samp{vCont} command is a better 34309option), and @samp{g} for other operations. The thread designator 34310@var{thread-id} has the format and interpretation described in 34311@ref{thread-id syntax}. 34312 34313Reply: 34314@table @samp 34315@item OK 34316for success 34317@item E @var{NN} 34318for an error 34319@end table 34320 34321@c FIXME: JTC: 34322@c 'H': How restrictive (or permissive) is the thread model. If a 34323@c thread is selected and stopped, are other threads allowed 34324@c to continue to execute? As I mentioned above, I think the 34325@c semantics of each command when a thread is selected must be 34326@c described. For example: 34327@c 34328@c 'g': If the stub supports threads and a specific thread is 34329@c selected, returns the register block from that thread; 34330@c otherwise returns current registers. 34331@c 34332@c 'G' If the stub supports threads and a specific thread is 34333@c selected, sets the registers of the register block of 34334@c that thread; otherwise sets current registers. 34335 34336@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]} 34337@anchor{cycle step packet} 34338@cindex @samp{i} packet 34339Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is 34340present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle 34341step starting at that address. 34342 34343@item I 34344@cindex @samp{I} packet 34345Signal, then cycle step. @xref{step with signal packet}. @xref{cycle 34346step packet}. 34347 34348@item k 34349@cindex @samp{k} packet 34350Kill request. 34351 34352The exact effect of this packet is not specified. 34353 34354For a bare-metal target, it may power cycle or reset the target 34355system. For that reason, the @samp{k} packet has no reply. 34356 34357For a single-process target, it may kill that process if possible. 34358 34359A multiple-process target may choose to kill just one process, or all 34360that are under @value{GDBN}'s control. For more precise control, use 34361the vKill packet (@pxref{vKill packet}). 34362 34363If the target system immediately closes the connection in response to 34364@samp{k}, @value{GDBN} does not consider the lack of packet 34365acknowledgment to be an error, and assumes the kill was successful. 34366 34367If connected using @kbd{target extended-remote}, and the target does 34368not close the connection in response to a kill request, @value{GDBN} 34369probes the target state as if a new connection was opened 34370(@pxref{? packet}). 34371 34372@item m @var{addr},@var{length} 34373@cindex @samp{m} packet 34374Read @var{length} bytes of memory starting at address @var{addr}. 34375Note that @var{addr} may not be aligned to any particular boundary. 34376 34377The stub need not use any particular size or alignment when gathering 34378data from memory for the response; even if @var{addr} is word-aligned 34379and @var{length} is a multiple of the word size, the stub is free to 34380use byte accesses, or not. For this reason, this packet may not be 34381suitable for accessing memory-mapped I/O devices. 34382@cindex alignment of remote memory accesses 34383@cindex size of remote memory accesses 34384@cindex memory, alignment and size of remote accesses 34385 34386Reply: 34387@table @samp 34388@item @var{XX@dots{}} 34389Memory contents; each byte is transmitted as a two-digit hexadecimal 34390number. The reply may contain fewer bytes than requested if the 34391server was able to read only part of the region of memory. 34392@item E @var{NN} 34393@var{NN} is errno 34394@end table 34395 34396@item M @var{addr},@var{length}:@var{XX@dots{}} 34397@cindex @samp{M} packet 34398Write @var{length} bytes of memory starting at address @var{addr}. 34399The data is given by @var{XX@dots{}}; each byte is transmitted as a two-digit 34400hexadecimal number. 34401 34402Reply: 34403@table @samp 34404@item OK 34405for success 34406@item E @var{NN} 34407for an error (this includes the case where only part of the data was 34408written). 34409@end table 34410 34411@item p @var{n} 34412@cindex @samp{p} packet 34413Read the value of register @var{n}; @var{n} is in hex. 34414@xref{read registers packet}, for a description of how the returned 34415register value is encoded. 34416 34417Reply: 34418@table @samp 34419@item @var{XX@dots{}} 34420the register's value 34421@item E @var{NN} 34422for an error 34423@item @w{} 34424Indicating an unrecognized @var{query}. 34425@end table 34426 34427@item P @var{n@dots{}}=@var{r@dots{}} 34428@anchor{write register packet} 34429@cindex @samp{P} packet 34430Write register @var{n@dots{}} with value @var{r@dots{}}. The register 34431number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex 34432digits for each byte in the register (target byte order). 34433 34434Reply: 34435@table @samp 34436@item OK 34437for success 34438@item E @var{NN} 34439for an error 34440@end table 34441 34442@item q @var{name} @var{params}@dots{} 34443@itemx Q @var{name} @var{params}@dots{} 34444@cindex @samp{q} packet 34445@cindex @samp{Q} packet 34446General query (@samp{q}) and set (@samp{Q}). These packets are 34447described fully in @ref{General Query Packets}. 34448 34449@item r 34450@cindex @samp{r} packet 34451Reset the entire system. 34452 34453Don't use this packet; use the @samp{R} packet instead. 34454 34455@item R @var{XX} 34456@cindex @samp{R} packet 34457Restart the program being debugged. The @var{XX}, while needed, is ignored. 34458This packet is only available in extended mode (@pxref{extended mode}). 34459 34460The @samp{R} packet has no reply. 34461 34462@item s @r{[}@var{addr}@r{]} 34463@cindex @samp{s} packet 34464Single step, resuming at @var{addr}. If 34465@var{addr} is omitted, resume at same address. 34466 34467This packet is deprecated for multi-threading support. @xref{vCont 34468packet}. 34469 34470Reply: 34471@xref{Stop Reply Packets}, for the reply specifications. 34472 34473@item S @var{sig}@r{[};@var{addr}@r{]} 34474@anchor{step with signal packet} 34475@cindex @samp{S} packet 34476Step with signal. This is analogous to the @samp{C} packet, but 34477requests a single-step, rather than a normal resumption of execution. 34478 34479This packet is deprecated for multi-threading support. @xref{vCont 34480packet}. 34481 34482Reply: 34483@xref{Stop Reply Packets}, for the reply specifications. 34484 34485@item t @var{addr}:@var{PP},@var{MM} 34486@cindex @samp{t} packet 34487Search backwards starting at address @var{addr} for a match with pattern 34488@var{PP} and mask @var{MM}, both of which are are 4 byte long. 34489There must be at least 3 digits in @var{addr}. 34490 34491@item T @var{thread-id} 34492@cindex @samp{T} packet 34493Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}. 34494 34495Reply: 34496@table @samp 34497@item OK 34498thread is still alive 34499@item E @var{NN} 34500thread is dead 34501@end table 34502 34503@item v 34504Packets starting with @samp{v} are identified by a multi-letter name, 34505up to the first @samp{;} or @samp{?} (or the end of the packet). 34506 34507@item vAttach;@var{pid} 34508@cindex @samp{vAttach} packet 34509Attach to a new process with the specified process ID @var{pid}. 34510The process ID is a 34511hexadecimal integer identifying the process. In all-stop mode, all 34512threads in the attached process are stopped; in non-stop mode, it may be 34513attached without being stopped if that is supported by the target. 34514 34515@c In non-stop mode, on a successful vAttach, the stub should set the 34516@c current thread to a thread of the newly-attached process. After 34517@c attaching, GDB queries for the attached process's thread ID with qC. 34518@c Also note that, from a user perspective, whether or not the 34519@c target is stopped on attach in non-stop mode depends on whether you 34520@c use the foreground or background version of the attach command, not 34521@c on what vAttach does; GDB does the right thing with respect to either 34522@c stopping or restarting threads. 34523 34524This packet is only available in extended mode (@pxref{extended mode}). 34525 34526Reply: 34527@table @samp 34528@item E @var{nn} 34529for an error 34530@item @r{Any stop packet} 34531for success in all-stop mode (@pxref{Stop Reply Packets}) 34532@item OK 34533for success in non-stop mode (@pxref{Remote Non-Stop}) 34534@end table 34535 34536@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{} 34537@cindex @samp{vCont} packet 34538@anchor{vCont packet} 34539Resume the inferior, specifying different actions for each thread. 34540If an action is specified with no @var{thread-id}, then it is applied to any 34541threads that don't have a specific action specified; if no default action is 34542specified then other threads should remain stopped in all-stop mode and 34543in their current state in non-stop mode. 34544Specifying multiple 34545default actions is an error; specifying no actions is also an error. 34546Thread IDs are specified using the syntax described in @ref{thread-id syntax}. 34547 34548Currently supported actions are: 34549 34550@table @samp 34551@item c 34552Continue. 34553@item C @var{sig} 34554Continue with signal @var{sig}. The signal @var{sig} should be two hex digits. 34555@item s 34556Step. 34557@item S @var{sig} 34558Step with signal @var{sig}. The signal @var{sig} should be two hex digits. 34559@item t 34560Stop. 34561@item r @var{start},@var{end} 34562Step once, and then keep stepping as long as the thread stops at 34563addresses between @var{start} (inclusive) and @var{end} (exclusive). 34564The remote stub reports a stop reply when either the thread goes out 34565of the range or is stopped due to an unrelated reason, such as hitting 34566a breakpoint. @xref{range stepping}. 34567 34568If the range is empty (@var{start} == @var{end}), then the action 34569becomes equivalent to the @samp{s} action. In other words, 34570single-step once, and report the stop (even if the stepped instruction 34571jumps to @var{start}). 34572 34573(A stop reply may be sent at any point even if the PC is still within 34574the stepping range; for example, it is valid to implement this packet 34575in a degenerate way as a single instruction step operation.) 34576 34577@end table 34578 34579The optional argument @var{addr} normally associated with the 34580@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is 34581not supported in @samp{vCont}. 34582 34583The @samp{t} action is only relevant in non-stop mode 34584(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise. 34585A stop reply should be generated for any affected thread not already stopped. 34586When a thread is stopped by means of a @samp{t} action, 34587the corresponding stop reply should indicate that the thread has stopped with 34588signal @samp{0}, regardless of whether the target uses some other signal 34589as an implementation detail. 34590 34591The stub must support @samp{vCont} if it reports support for 34592multiprocess extensions (@pxref{multiprocess extensions}). Note that in 34593this case @samp{vCont} actions can be specified to apply to all threads 34594in a process by using the @samp{p@var{pid}.-1} form of the 34595@var{thread-id}. 34596 34597Reply: 34598@xref{Stop Reply Packets}, for the reply specifications. 34599 34600@item vCont? 34601@cindex @samp{vCont?} packet 34602Request a list of actions supported by the @samp{vCont} packet. 34603 34604Reply: 34605@table @samp 34606@item vCont@r{[};@var{action}@dots{}@r{]} 34607The @samp{vCont} packet is supported. Each @var{action} is a supported 34608command in the @samp{vCont} packet. 34609@item @w{} 34610The @samp{vCont} packet is not supported. 34611@end table 34612 34613@item vFile:@var{operation}:@var{parameter}@dots{} 34614@cindex @samp{vFile} packet 34615Perform a file operation on the target system. For details, 34616see @ref{Host I/O Packets}. 34617 34618@item vFlashErase:@var{addr},@var{length} 34619@cindex @samp{vFlashErase} packet 34620Direct the stub to erase @var{length} bytes of flash starting at 34621@var{addr}. The region may enclose any number of flash blocks, but 34622its start and end must fall on block boundaries, as indicated by the 34623flash block size appearing in the memory map (@pxref{Memory Map 34624Format}). @value{GDBN} groups flash memory programming operations 34625together, and sends a @samp{vFlashDone} request after each group; the 34626stub is allowed to delay erase operation until the @samp{vFlashDone} 34627packet is received. 34628 34629Reply: 34630@table @samp 34631@item OK 34632for success 34633@item E @var{NN} 34634for an error 34635@end table 34636 34637@item vFlashWrite:@var{addr}:@var{XX@dots{}} 34638@cindex @samp{vFlashWrite} packet 34639Direct the stub to write data to flash address @var{addr}. The data 34640is passed in binary form using the same encoding as for the @samp{X} 34641packet (@pxref{Binary Data}). The memory ranges specified by 34642@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must 34643not overlap, and must appear in order of increasing addresses 34644(although @samp{vFlashErase} packets for higher addresses may already 34645have been received; the ordering is guaranteed only between 34646@samp{vFlashWrite} packets). If a packet writes to an address that was 34647neither erased by a preceding @samp{vFlashErase} packet nor by some other 34648target-specific method, the results are unpredictable. 34649 34650 34651Reply: 34652@table @samp 34653@item OK 34654for success 34655@item E.memtype 34656for vFlashWrite addressing non-flash memory 34657@item E @var{NN} 34658for an error 34659@end table 34660 34661@item vFlashDone 34662@cindex @samp{vFlashDone} packet 34663Indicate to the stub that flash programming operation is finished. 34664The stub is permitted to delay or batch the effects of a group of 34665@samp{vFlashErase} and @samp{vFlashWrite} packets until a 34666@samp{vFlashDone} packet is received. The contents of the affected 34667regions of flash memory are unpredictable until the @samp{vFlashDone} 34668request is completed. 34669 34670@item vKill;@var{pid} 34671@cindex @samp{vKill} packet 34672@anchor{vKill packet} 34673Kill the process with the specified process ID @var{pid}, which is a 34674hexadecimal integer identifying the process. This packet is used in 34675preference to @samp{k} when multiprocess protocol extensions are 34676supported; see @ref{multiprocess extensions}. 34677 34678Reply: 34679@table @samp 34680@item E @var{nn} 34681for an error 34682@item OK 34683for success 34684@end table 34685 34686@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{} 34687@cindex @samp{vRun} packet 34688Run the program @var{filename}, passing it each @var{argument} on its 34689command line. The file and arguments are hex-encoded strings. If 34690@var{filename} is an empty string, the stub may use a default program 34691(e.g.@: the last program run). The program is created in the stopped 34692state. 34693 34694@c FIXME: What about non-stop mode? 34695 34696This packet is only available in extended mode (@pxref{extended mode}). 34697 34698Reply: 34699@table @samp 34700@item E @var{nn} 34701for an error 34702@item @r{Any stop packet} 34703for success (@pxref{Stop Reply Packets}) 34704@end table 34705 34706@item vStopped 34707@cindex @samp{vStopped} packet 34708@xref{Notification Packets}. 34709 34710@item X @var{addr},@var{length}:@var{XX@dots{}} 34711@anchor{X packet} 34712@cindex @samp{X} packet 34713Write data to memory, where the data is transmitted in binary. 34714Memory is specified by its address @var{addr} and number of bytes @var{length}; 34715@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}). 34716 34717Reply: 34718@table @samp 34719@item OK 34720for success 34721@item E @var{NN} 34722for an error 34723@end table 34724 34725@item z @var{type},@var{addr},@var{kind} 34726@itemx Z @var{type},@var{addr},@var{kind} 34727@anchor{insert breakpoint or watchpoint packet} 34728@cindex @samp{z} packet 34729@cindex @samp{Z} packets 34730Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or 34731watchpoint starting at address @var{address} of kind @var{kind}. 34732 34733Each breakpoint and watchpoint packet @var{type} is documented 34734separately. 34735 34736@emph{Implementation notes: A remote target shall return an empty string 34737for an unrecognized breakpoint or watchpoint packet @var{type}. A 34738remote target shall support either both or neither of a given 34739@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To 34740avoid potential problems with duplicate packets, the operations should 34741be implemented in an idempotent way.} 34742 34743@item z0,@var{addr},@var{kind} 34744@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]} 34745@cindex @samp{z0} packet 34746@cindex @samp{Z0} packet 34747Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address 34748@var{addr} of type @var{kind}. 34749 34750A memory breakpoint is implemented by replacing the instruction at 34751@var{addr} with a software breakpoint or trap instruction. The 34752@var{kind} is target-specific and typically indicates the size of 34753the breakpoint in bytes that should be inserted. E.g., the @sc{arm} 34754and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some 34755architectures have additional meanings for @var{kind}; 34756@var{cond_list} is an optional list of conditional expressions in bytecode 34757form that should be evaluated on the target's side. These are the 34758conditions that should be taken into consideration when deciding if 34759the breakpoint trigger should be reported back to @var{GDBN}. 34760 34761The @var{cond_list} parameter is comprised of a series of expressions, 34762concatenated without separators. Each expression has the following form: 34763 34764@table @samp 34765 34766@item X @var{len},@var{expr} 34767@var{len} is the length of the bytecode expression and @var{expr} is the 34768actual conditional expression in bytecode form. 34769 34770@end table 34771 34772The optional @var{cmd_list} parameter introduces commands that may be 34773run on the target, rather than being reported back to @value{GDBN}. 34774The parameter starts with a numeric flag @var{persist}; if the flag is 34775nonzero, then the breakpoint may remain active and the commands 34776continue to be run even when @value{GDBN} disconnects from the target. 34777Following this flag is a series of expressions concatenated with no 34778separators. Each expression has the following form: 34779 34780@table @samp 34781 34782@item X @var{len},@var{expr} 34783@var{len} is the length of the bytecode expression and @var{expr} is the 34784actual conditional expression in bytecode form. 34785 34786@end table 34787 34788see @ref{Architecture-Specific Protocol Details}. 34789 34790@emph{Implementation note: It is possible for a target to copy or move 34791code that contains memory breakpoints (e.g., when implementing 34792overlays). The behavior of this packet, in the presence of such a 34793target, is not defined.} 34794 34795Reply: 34796@table @samp 34797@item OK 34798success 34799@item @w{} 34800not supported 34801@item E @var{NN} 34802for an error 34803@end table 34804 34805@item z1,@var{addr},@var{kind} 34806@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]} 34807@cindex @samp{z1} packet 34808@cindex @samp{Z1} packet 34809Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at 34810address @var{addr}. 34811 34812A hardware breakpoint is implemented using a mechanism that is not 34813dependant on being able to modify the target's memory. The @var{kind} 34814and @var{cond_list} have the same meaning as in @samp{Z0} packets. 34815 34816@emph{Implementation note: A hardware breakpoint is not affected by code 34817movement.} 34818 34819Reply: 34820@table @samp 34821@item OK 34822success 34823@item @w{} 34824not supported 34825@item E @var{NN} 34826for an error 34827@end table 34828 34829@item z2,@var{addr},@var{kind} 34830@itemx Z2,@var{addr},@var{kind} 34831@cindex @samp{z2} packet 34832@cindex @samp{Z2} packet 34833Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}. 34834The number of bytes to watch is specified by @var{kind}. 34835 34836Reply: 34837@table @samp 34838@item OK 34839success 34840@item @w{} 34841not supported 34842@item E @var{NN} 34843for an error 34844@end table 34845 34846@item z3,@var{addr},@var{kind} 34847@itemx Z3,@var{addr},@var{kind} 34848@cindex @samp{z3} packet 34849@cindex @samp{Z3} packet 34850Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}. 34851The number of bytes to watch is specified by @var{kind}. 34852 34853Reply: 34854@table @samp 34855@item OK 34856success 34857@item @w{} 34858not supported 34859@item E @var{NN} 34860for an error 34861@end table 34862 34863@item z4,@var{addr},@var{kind} 34864@itemx Z4,@var{addr},@var{kind} 34865@cindex @samp{z4} packet 34866@cindex @samp{Z4} packet 34867Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}. 34868The number of bytes to watch is specified by @var{kind}. 34869 34870Reply: 34871@table @samp 34872@item OK 34873success 34874@item @w{} 34875not supported 34876@item E @var{NN} 34877for an error 34878@end table 34879 34880@end table 34881 34882@node Stop Reply Packets 34883@section Stop Reply Packets 34884@cindex stop reply packets 34885 34886The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont}, 34887@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can 34888receive any of the below as a reply. Except for @samp{?} 34889and @samp{vStopped}, that reply is only returned 34890when the target halts. In the below the exact meaning of @dfn{signal 34891number} is defined by the header @file{include/gdb/signals.h} in the 34892@value{GDBN} source code. 34893 34894As in the description of request packets, we include spaces in the 34895reply templates for clarity; these are not part of the reply packet's 34896syntax. No @value{GDBN} stop reply packet uses spaces to separate its 34897components. 34898 34899@table @samp 34900 34901@item S @var{AA} 34902The program received signal number @var{AA} (a two-digit hexadecimal 34903number). This is equivalent to a @samp{T} response with no 34904@var{n}:@var{r} pairs. 34905 34906@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{} 34907@cindex @samp{T} packet reply 34908The program received signal number @var{AA} (a two-digit hexadecimal 34909number). This is equivalent to an @samp{S} response, except that the 34910@samp{@var{n}:@var{r}} pairs can carry values of important registers 34911and other information directly in the stop reply packet, reducing 34912round-trip latency. Single-step and breakpoint traps are reported 34913this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows: 34914 34915@itemize @bullet 34916@item 34917If @var{n} is a hexadecimal number, it is a register number, and the 34918corresponding @var{r} gives that register's value. The data @var{r} is a 34919series of bytes in target byte order, with each byte given by a 34920two-digit hex number. 34921 34922@item 34923If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of 34924the stopped thread, as specified in @ref{thread-id syntax}. 34925 34926@item 34927If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of 34928the core on which the stop event was detected. 34929 34930@item 34931If @var{n} is a recognized @dfn{stop reason}, it describes a more 34932specific event that stopped the target. The currently defined stop 34933reasons are listed below. The @var{aa} should be @samp{05}, the trap 34934signal. At most one stop reason should be present. 34935 34936@item 34937Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair 34938and go on to the next; this allows us to extend the protocol in the 34939future. 34940@end itemize 34941 34942The currently defined stop reasons are: 34943 34944@table @samp 34945@item watch 34946@itemx rwatch 34947@itemx awatch 34948The packet indicates a watchpoint hit, and @var{r} is the data address, in 34949hex. 34950 34951@cindex shared library events, remote reply 34952@item library 34953The packet indicates that the loaded libraries have changed. 34954@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new 34955list of loaded libraries. The @var{r} part is ignored. 34956 34957@cindex replay log events, remote reply 34958@item replaylog 34959The packet indicates that the target cannot continue replaying 34960logged execution events, because it has reached the end (or the 34961beginning when executing backward) of the log. The value of @var{r} 34962will be either @samp{begin} or @samp{end}. @xref{Reverse Execution}, 34963for more information. 34964@end table 34965 34966@item W @var{AA} 34967@itemx W @var{AA} ; process:@var{pid} 34968The process exited, and @var{AA} is the exit status. This is only 34969applicable to certain targets. 34970 34971The second form of the response, including the process ID of the exited 34972process, can be used only when @value{GDBN} has reported support for 34973multiprocess protocol extensions; see @ref{multiprocess extensions}. 34974The @var{pid} is formatted as a big-endian hex string. 34975 34976@item X @var{AA} 34977@itemx X @var{AA} ; process:@var{pid} 34978The process terminated with signal @var{AA}. 34979 34980The second form of the response, including the process ID of the 34981terminated process, can be used only when @value{GDBN} has reported 34982support for multiprocess protocol extensions; see @ref{multiprocess 34983extensions}. The @var{pid} is formatted as a big-endian hex string. 34984 34985@item O @var{XX}@dots{} 34986@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be 34987written as the program's console output. This can happen at any time 34988while the program is running and the debugger should continue to wait 34989for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode. 34990 34991@item F @var{call-id},@var{parameter}@dots{} 34992@var{call-id} is the identifier which says which host system call should 34993be called. This is just the name of the function. Translation into the 34994correct system call is only applicable as it's defined in @value{GDBN}. 34995@xref{File-I/O Remote Protocol Extension}, for a list of implemented 34996system calls. 34997 34998@samp{@var{parameter}@dots{}} is a list of parameters as defined for 34999this very system call. 35000 35001The target replies with this packet when it expects @value{GDBN} to 35002call a host system call on behalf of the target. @value{GDBN} replies 35003with an appropriate @samp{F} packet and keeps up waiting for the next 35004reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S} 35005or @samp{s} action is expected to be continued. @xref{File-I/O Remote 35006Protocol Extension}, for more details. 35007 35008@end table 35009 35010@node General Query Packets 35011@section General Query Packets 35012@cindex remote query requests 35013 35014Packets starting with @samp{q} are @dfn{general query packets}; 35015packets starting with @samp{Q} are @dfn{general set packets}. General 35016query and set packets are a semi-unified form for retrieving and 35017sending information to and from the stub. 35018 35019The initial letter of a query or set packet is followed by a name 35020indicating what sort of thing the packet applies to. For example, 35021@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol 35022definitions with the stub. These packet names follow some 35023conventions: 35024 35025@itemize @bullet 35026@item 35027The name must not contain commas, colons or semicolons. 35028@item 35029Most @value{GDBN} query and set packets have a leading upper case 35030letter. 35031@item 35032The names of custom vendor packets should use a company prefix, in 35033lower case, followed by a period. For example, packets designed at 35034the Acme Corporation might begin with @samp{qacme.foo} (for querying 35035foos) or @samp{Qacme.bar} (for setting bars). 35036@end itemize 35037 35038The name of a query or set packet should be separated from any 35039parameters by a @samp{:}; the parameters themselves should be 35040separated by @samp{,} or @samp{;}. Stubs must be careful to match the 35041full packet name, and check for a separator or the end of the packet, 35042in case two packet names share a common prefix. New packets should not begin 35043with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL} 35044packets predate these conventions, and have arguments without any terminator 35045for the packet name; we suspect they are in widespread use in places that 35046are difficult to upgrade. The @samp{qC} packet has no arguments, but some 35047existing stubs (e.g.@: RedBoot) are known to not check for the end of the 35048packet.}. 35049 35050Like the descriptions of the other packets, each description here 35051has a template showing the packet's overall syntax, followed by an 35052explanation of the packet's meaning. We include spaces in some of the 35053templates for clarity; these are not part of the packet's syntax. No 35054@value{GDBN} packet uses spaces to separate its components. 35055 35056Here are the currently defined query and set packets: 35057 35058@table @samp 35059 35060@item QAgent:1 35061@itemx QAgent:0 35062Turn on or off the agent as a helper to perform some debugging operations 35063delegated from @value{GDBN} (@pxref{Control Agent}). 35064 35065@item QAllow:@var{op}:@var{val}@dots{} 35066@cindex @samp{QAllow} packet 35067Specify which operations @value{GDBN} expects to request of the 35068target, as a semicolon-separated list of operation name and value 35069pairs. Possible values for @var{op} include @samp{WriteReg}, 35070@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace}, 35071@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0, 35072indicating that @value{GDBN} will not request the operation, or 1, 35073indicating that it may. (The target can then use this to set up its 35074own internals optimally, for instance if the debugger never expects to 35075insert breakpoints, it may not need to install its own trap handler.) 35076 35077@item qC 35078@cindex current thread, remote request 35079@cindex @samp{qC} packet 35080Return the current thread ID. 35081 35082Reply: 35083@table @samp 35084@item QC @var{thread-id} 35085Where @var{thread-id} is a thread ID as documented in 35086@ref{thread-id syntax}. 35087@item @r{(anything else)} 35088Any other reply implies the old thread ID. 35089@end table 35090 35091@item qCRC:@var{addr},@var{length} 35092@cindex CRC of memory block, remote request 35093@cindex @samp{qCRC} packet 35094@anchor{qCRC packet} 35095Compute the CRC checksum of a block of memory using CRC-32 defined in 35096IEEE 802.3. The CRC is computed byte at a time, taking the most 35097significant bit of each byte first. The initial pattern code 35098@code{0xffffffff} is used to ensure leading zeros affect the CRC. 35099 35100@emph{Note:} This is the same CRC used in validating separate debug 35101files (@pxref{Separate Debug Files, , Debugging Information in Separate 35102Files}). However the algorithm is slightly different. When validating 35103separate debug files, the CRC is computed taking the @emph{least} 35104significant bit of each byte first, and the final result is inverted to 35105detect trailing zeros. 35106 35107Reply: 35108@table @samp 35109@item E @var{NN} 35110An error (such as memory fault) 35111@item C @var{crc32} 35112The specified memory region's checksum is @var{crc32}. 35113@end table 35114 35115@item QDisableRandomization:@var{value} 35116@cindex disable address space randomization, remote request 35117@cindex @samp{QDisableRandomization} packet 35118Some target operating systems will randomize the virtual address space 35119of the inferior process as a security feature, but provide a feature 35120to disable such randomization, e.g.@: to allow for a more deterministic 35121debugging experience. On such systems, this packet with a @var{value} 35122of 1 directs the target to disable address space randomization for 35123processes subsequently started via @samp{vRun} packets, while a packet 35124with a @var{value} of 0 tells the target to enable address space 35125randomization. 35126 35127This packet is only available in extended mode (@pxref{extended mode}). 35128 35129Reply: 35130@table @samp 35131@item OK 35132The request succeeded. 35133 35134@item E @var{nn} 35135An error occurred. The error number @var{nn} is given as hex digits. 35136 35137@item @w{} 35138An empty reply indicates that @samp{QDisableRandomization} is not supported 35139by the stub. 35140@end table 35141 35142This packet is not probed by default; the remote stub must request it, 35143by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 35144This should only be done on targets that actually support disabling 35145address space randomization. 35146 35147@item qfThreadInfo 35148@itemx qsThreadInfo 35149@cindex list active threads, remote request 35150@cindex @samp{qfThreadInfo} packet 35151@cindex @samp{qsThreadInfo} packet 35152Obtain a list of all active thread IDs from the target (OS). Since there 35153may be too many active threads to fit into one reply packet, this query 35154works iteratively: it may require more than one query/reply sequence to 35155obtain the entire list of threads. The first query of the sequence will 35156be the @samp{qfThreadInfo} query; subsequent queries in the 35157sequence will be the @samp{qsThreadInfo} query. 35158 35159NOTE: This packet replaces the @samp{qL} query (see below). 35160 35161Reply: 35162@table @samp 35163@item m @var{thread-id} 35164A single thread ID 35165@item m @var{thread-id},@var{thread-id}@dots{} 35166a comma-separated list of thread IDs 35167@item l 35168(lower case letter @samp{L}) denotes end of list. 35169@end table 35170 35171In response to each query, the target will reply with a list of one or 35172more thread IDs, separated by commas. 35173@value{GDBN} will respond to each reply with a request for more thread 35174ids (using the @samp{qs} form of the query), until the target responds 35175with @samp{l} (lower-case ell, for @dfn{last}). 35176Refer to @ref{thread-id syntax}, for the format of the @var{thread-id} 35177fields. 35178 35179@emph{Note: @value{GDBN} will send the @code{qfThreadInfo} query during the 35180initial connection with the remote target, and the very first thread ID 35181mentioned in the reply will be stopped by @value{GDBN} in a subsequent 35182message. Therefore, the stub should ensure that the first thread ID in 35183the @code{qfThreadInfo} reply is suitable for being stopped by @value{GDBN}.} 35184 35185@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm} 35186@cindex get thread-local storage address, remote request 35187@cindex @samp{qGetTLSAddr} packet 35188Fetch the address associated with thread local storage specified 35189by @var{thread-id}, @var{offset}, and @var{lm}. 35190 35191@var{thread-id} is the thread ID associated with the 35192thread for which to fetch the TLS address. @xref{thread-id syntax}. 35193 35194@var{offset} is the (big endian, hex encoded) offset associated with the 35195thread local variable. (This offset is obtained from the debug 35196information associated with the variable.) 35197 35198@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the 35199load module associated with the thread local storage. For example, 35200a @sc{gnu}/Linux system will pass the link map address of the shared 35201object associated with the thread local storage under consideration. 35202Other operating environments may choose to represent the load module 35203differently, so the precise meaning of this parameter will vary. 35204 35205Reply: 35206@table @samp 35207@item @var{XX}@dots{} 35208Hex encoded (big endian) bytes representing the address of the thread 35209local storage requested. 35210 35211@item E @var{nn} 35212An error occurred. The error number @var{nn} is given as hex digits. 35213 35214@item @w{} 35215An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub. 35216@end table 35217 35218@item qGetTIBAddr:@var{thread-id} 35219@cindex get thread information block address 35220@cindex @samp{qGetTIBAddr} packet 35221Fetch address of the Windows OS specific Thread Information Block. 35222 35223@var{thread-id} is the thread ID associated with the thread. 35224 35225Reply: 35226@table @samp 35227@item @var{XX}@dots{} 35228Hex encoded (big endian) bytes representing the linear address of the 35229thread information block. 35230 35231@item E @var{nn} 35232An error occured. This means that either the thread was not found, or the 35233address could not be retrieved. 35234 35235@item @w{} 35236An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub. 35237@end table 35238 35239@item qL @var{startflag} @var{threadcount} @var{nextthread} 35240Obtain thread information from RTOS. Where: @var{startflag} (one hex 35241digit) is one to indicate the first query and zero to indicate a 35242subsequent query; @var{threadcount} (two hex digits) is the maximum 35243number of threads the response packet can contain; and @var{nextthread} 35244(eight hex digits), for subsequent queries (@var{startflag} is zero), is 35245returned in the response as @var{argthread}. 35246 35247Don't use this packet; use the @samp{qfThreadInfo} query instead (see above). 35248 35249Reply: 35250@table @samp 35251@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{} 35252Where: @var{count} (two hex digits) is the number of threads being 35253returned; @var{done} (one hex digit) is zero to indicate more threads 35254and one indicates no further threads; @var{argthreadid} (eight hex 35255digits) is @var{nextthread} from the request packet; @var{thread}@dots{} 35256is a sequence of thread IDs, @var{threadid} (eight hex 35257digits), from the target. See @code{remote.c:parse_threadlist_response()}. 35258@end table 35259 35260@item qOffsets 35261@cindex section offsets, remote request 35262@cindex @samp{qOffsets} packet 35263Get section offsets that the target used when relocating the downloaded 35264image. 35265 35266Reply: 35267@table @samp 35268@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]} 35269Relocate the @code{Text} section by @var{xxx} from its original address. 35270Relocate the @code{Data} section by @var{yyy} from its original address. 35271If the object file format provides segment information (e.g.@: @sc{elf} 35272@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire 35273segments by the supplied offsets. 35274 35275@emph{Note: while a @code{Bss} offset may be included in the response, 35276@value{GDBN} ignores this and instead applies the @code{Data} offset 35277to the @code{Bss} section.} 35278 35279@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]} 35280Relocate the first segment of the object file, which conventionally 35281contains program code, to a starting address of @var{xxx}. If 35282@samp{DataSeg} is specified, relocate the second segment, which 35283conventionally contains modifiable data, to a starting address of 35284@var{yyy}. @value{GDBN} will report an error if the object file 35285does not contain segment information, or does not contain at least 35286as many segments as mentioned in the reply. Extra segments are 35287kept at fixed offsets relative to the last relocated segment. 35288@end table 35289 35290@item qP @var{mode} @var{thread-id} 35291@cindex thread information, remote request 35292@cindex @samp{qP} packet 35293Returns information on @var{thread-id}. Where: @var{mode} is a hex 35294encoded 32 bit mode; @var{thread-id} is a thread ID 35295(@pxref{thread-id syntax}). 35296 35297Don't use this packet; use the @samp{qThreadExtraInfo} query instead 35298(see below). 35299 35300Reply: see @code{remote.c:remote_unpack_thread_info_response()}. 35301 35302@item QNonStop:1 35303@itemx QNonStop:0 35304@cindex non-stop mode, remote request 35305@cindex @samp{QNonStop} packet 35306@anchor{QNonStop} 35307Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode. 35308@xref{Remote Non-Stop}, for more information. 35309 35310Reply: 35311@table @samp 35312@item OK 35313The request succeeded. 35314 35315@item E @var{nn} 35316An error occurred. The error number @var{nn} is given as hex digits. 35317 35318@item @w{} 35319An empty reply indicates that @samp{QNonStop} is not supported by 35320the stub. 35321@end table 35322 35323This packet is not probed by default; the remote stub must request it, 35324by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 35325Use of this packet is controlled by the @code{set non-stop} command; 35326@pxref{Non-Stop Mode}. 35327 35328@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 35329@cindex pass signals to inferior, remote request 35330@cindex @samp{QPassSignals} packet 35331@anchor{QPassSignals} 35332Each listed @var{signal} should be passed directly to the inferior process. 35333Signals are numbered identically to continue packets and stop replies 35334(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 35335strictly greater than the previous item. These signals do not need to stop 35336the inferior, or be reported to @value{GDBN}. All other signals should be 35337reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not 35338combine; any earlier @samp{QPassSignals} list is completely replaced by the 35339new list. This packet improves performance when using @samp{handle 35340@var{signal} nostop noprint pass}. 35341 35342Reply: 35343@table @samp 35344@item OK 35345The request succeeded. 35346 35347@item E @var{nn} 35348An error occurred. The error number @var{nn} is given as hex digits. 35349 35350@item @w{} 35351An empty reply indicates that @samp{QPassSignals} is not supported by 35352the stub. 35353@end table 35354 35355Use of this packet is controlled by the @code{set remote pass-signals} 35356command (@pxref{Remote Configuration, set remote pass-signals}). 35357This packet is not probed by default; the remote stub must request it, 35358by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 35359 35360@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 35361@cindex signals the inferior may see, remote request 35362@cindex @samp{QProgramSignals} packet 35363@anchor{QProgramSignals} 35364Each listed @var{signal} may be delivered to the inferior process. 35365Others should be silently discarded. 35366 35367In some cases, the remote stub may need to decide whether to deliver a 35368signal to the program or not without @value{GDBN} involvement. One 35369example of that is while detaching --- the program's threads may have 35370stopped for signals that haven't yet had a chance of being reported to 35371@value{GDBN}, and so the remote stub can use the signal list specified 35372by this packet to know whether to deliver or ignore those pending 35373signals. 35374 35375This does not influence whether to deliver a signal as requested by a 35376resumption packet (@pxref{vCont packet}). 35377 35378Signals are numbered identically to continue packets and stop replies 35379(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 35380strictly greater than the previous item. Multiple 35381@samp{QProgramSignals} packets do not combine; any earlier 35382@samp{QProgramSignals} list is completely replaced by the new list. 35383 35384Reply: 35385@table @samp 35386@item OK 35387The request succeeded. 35388 35389@item E @var{nn} 35390An error occurred. The error number @var{nn} is given as hex digits. 35391 35392@item @w{} 35393An empty reply indicates that @samp{QProgramSignals} is not supported 35394by the stub. 35395@end table 35396 35397Use of this packet is controlled by the @code{set remote program-signals} 35398command (@pxref{Remote Configuration, set remote program-signals}). 35399This packet is not probed by default; the remote stub must request it, 35400by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 35401 35402@item qRcmd,@var{command} 35403@cindex execute remote command, remote request 35404@cindex @samp{qRcmd} packet 35405@var{command} (hex encoded) is passed to the local interpreter for 35406execution. Invalid commands should be reported using the output 35407string. Before the final result packet, the target may also respond 35408with a number of intermediate @samp{O@var{output}} console output 35409packets. @emph{Implementors should note that providing access to a 35410stubs's interpreter may have security implications}. 35411 35412Reply: 35413@table @samp 35414@item OK 35415A command response with no output. 35416@item @var{OUTPUT} 35417A command response with the hex encoded output string @var{OUTPUT}. 35418@item E @var{NN} 35419Indicate a badly formed request. 35420@item @w{} 35421An empty reply indicates that @samp{qRcmd} is not recognized. 35422@end table 35423 35424(Note that the @code{qRcmd} packet's name is separated from the 35425command by a @samp{,}, not a @samp{:}, contrary to the naming 35426conventions above. Please don't use this packet as a model for new 35427packets.) 35428 35429@item qSearch:memory:@var{address};@var{length};@var{search-pattern} 35430@cindex searching memory, in remote debugging 35431@ifnotinfo 35432@cindex @samp{qSearch:memory} packet 35433@end ifnotinfo 35434@cindex @samp{qSearch memory} packet 35435@anchor{qSearch memory} 35436Search @var{length} bytes at @var{address} for @var{search-pattern}. 35437Both @var{address} and @var{length} are encoded in hex; 35438@var{search-pattern} is a sequence of bytes, also hex encoded. 35439 35440Reply: 35441@table @samp 35442@item 0 35443The pattern was not found. 35444@item 1,address 35445The pattern was found at @var{address}. 35446@item E @var{NN} 35447A badly formed request or an error was encountered while searching memory. 35448@item @w{} 35449An empty reply indicates that @samp{qSearch:memory} is not recognized. 35450@end table 35451 35452@item QStartNoAckMode 35453@cindex @samp{QStartNoAckMode} packet 35454@anchor{QStartNoAckMode} 35455Request that the remote stub disable the normal @samp{+}/@samp{-} 35456protocol acknowledgments (@pxref{Packet Acknowledgment}). 35457 35458Reply: 35459@table @samp 35460@item OK 35461The stub has switched to no-acknowledgment mode. 35462@value{GDBN} acknowledges this reponse, 35463but neither the stub nor @value{GDBN} shall send or expect further 35464@samp{+}/@samp{-} acknowledgments in the current connection. 35465@item @w{} 35466An empty reply indicates that the stub does not support no-acknowledgment mode. 35467@end table 35468 35469@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]} 35470@cindex supported packets, remote query 35471@cindex features of the remote protocol 35472@cindex @samp{qSupported} packet 35473@anchor{qSupported} 35474Tell the remote stub about features supported by @value{GDBN}, and 35475query the stub for features it supports. This packet allows 35476@value{GDBN} and the remote stub to take advantage of each others' 35477features. @samp{qSupported} also consolidates multiple feature probes 35478at startup, to improve @value{GDBN} performance---a single larger 35479packet performs better than multiple smaller probe packets on 35480high-latency links. Some features may enable behavior which must not 35481be on by default, e.g.@: because it would confuse older clients or 35482stubs. Other features may describe packets which could be 35483automatically probed for, but are not. These features must be 35484reported before @value{GDBN} will use them. This ``default 35485unsupported'' behavior is not appropriate for all packets, but it 35486helps to keep the initial connection time under control with new 35487versions of @value{GDBN} which support increasing numbers of packets. 35488 35489Reply: 35490@table @samp 35491@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{} 35492The stub supports or does not support each returned @var{stubfeature}, 35493depending on the form of each @var{stubfeature} (see below for the 35494possible forms). 35495@item @w{} 35496An empty reply indicates that @samp{qSupported} is not recognized, 35497or that no features needed to be reported to @value{GDBN}. 35498@end table 35499 35500The allowed forms for each feature (either a @var{gdbfeature} in the 35501@samp{qSupported} packet, or a @var{stubfeature} in the response) 35502are: 35503 35504@table @samp 35505@item @var{name}=@var{value} 35506The remote protocol feature @var{name} is supported, and associated 35507with the specified @var{value}. The format of @var{value} depends 35508on the feature, but it must not include a semicolon. 35509@item @var{name}+ 35510The remote protocol feature @var{name} is supported, and does not 35511need an associated value. 35512@item @var{name}- 35513The remote protocol feature @var{name} is not supported. 35514@item @var{name}? 35515The remote protocol feature @var{name} may be supported, and 35516@value{GDBN} should auto-detect support in some other way when it is 35517needed. This form will not be used for @var{gdbfeature} notifications, 35518but may be used for @var{stubfeature} responses. 35519@end table 35520 35521Whenever the stub receives a @samp{qSupported} request, the 35522supplied set of @value{GDBN} features should override any previous 35523request. This allows @value{GDBN} to put the stub in a known 35524state, even if the stub had previously been communicating with 35525a different version of @value{GDBN}. 35526 35527The following values of @var{gdbfeature} (for the packet sent by @value{GDBN}) 35528are defined: 35529 35530@table @samp 35531@item multiprocess 35532This feature indicates whether @value{GDBN} supports multiprocess 35533extensions to the remote protocol. @value{GDBN} does not use such 35534extensions unless the stub also reports that it supports them by 35535including @samp{multiprocess+} in its @samp{qSupported} reply. 35536@xref{multiprocess extensions}, for details. 35537 35538@item xmlRegisters 35539This feature indicates that @value{GDBN} supports the XML target 35540description. If the stub sees @samp{xmlRegisters=} with target 35541specific strings separated by a comma, it will report register 35542description. 35543 35544@item qRelocInsn 35545This feature indicates whether @value{GDBN} supports the 35546@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate 35547instruction reply packet}). 35548@end table 35549 35550Stubs should ignore any unknown values for 35551@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported} 35552packet supports receiving packets of unlimited length (earlier 35553versions of @value{GDBN} may reject overly long responses). Additional values 35554for @var{gdbfeature} may be defined in the future to let the stub take 35555advantage of new features in @value{GDBN}, e.g.@: incompatible 35556improvements in the remote protocol---the @samp{multiprocess} feature is 35557an example of such a feature. The stub's reply should be independent 35558of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN} 35559describes all the features it supports, and then the stub replies with 35560all the features it supports. 35561 35562Similarly, @value{GDBN} will silently ignore unrecognized stub feature 35563responses, as long as each response uses one of the standard forms. 35564 35565Some features are flags. A stub which supports a flag feature 35566should respond with a @samp{+} form response. Other features 35567require values, and the stub should respond with an @samp{=} 35568form response. 35569 35570Each feature has a default value, which @value{GDBN} will use if 35571@samp{qSupported} is not available or if the feature is not mentioned 35572in the @samp{qSupported} response. The default values are fixed; a 35573stub is free to omit any feature responses that match the defaults. 35574 35575Not all features can be probed, but for those which can, the probing 35576mechanism is useful: in some cases, a stub's internal 35577architecture may not allow the protocol layer to know some information 35578about the underlying target in advance. This is especially common in 35579stubs which may be configured for multiple targets. 35580 35581These are the currently defined stub features and their properties: 35582 35583@multitable @columnfractions 0.35 0.2 0.12 0.2 35584@c NOTE: The first row should be @headitem, but we do not yet require 35585@c a new enough version of Texinfo (4.7) to use @headitem. 35586@item Feature Name 35587@tab Value Required 35588@tab Default 35589@tab Probe Allowed 35590 35591@item @samp{PacketSize} 35592@tab Yes 35593@tab @samp{-} 35594@tab No 35595 35596@item @samp{qXfer:auxv:read} 35597@tab No 35598@tab @samp{-} 35599@tab Yes 35600 35601@item @samp{qXfer:btrace:read} 35602@tab No 35603@tab @samp{-} 35604@tab Yes 35605 35606@item @samp{qXfer:features:read} 35607@tab No 35608@tab @samp{-} 35609@tab Yes 35610 35611@item @samp{qXfer:libraries:read} 35612@tab No 35613@tab @samp{-} 35614@tab Yes 35615 35616@item @samp{qXfer:libraries-svr4:read} 35617@tab No 35618@tab @samp{-} 35619@tab Yes 35620 35621@item @samp{augmented-libraries-svr4-read} 35622@tab No 35623@tab @samp{-} 35624@tab No 35625 35626@item @samp{qXfer:memory-map:read} 35627@tab No 35628@tab @samp{-} 35629@tab Yes 35630 35631@item @samp{qXfer:sdata:read} 35632@tab No 35633@tab @samp{-} 35634@tab Yes 35635 35636@item @samp{qXfer:spu:read} 35637@tab No 35638@tab @samp{-} 35639@tab Yes 35640 35641@item @samp{qXfer:spu:write} 35642@tab No 35643@tab @samp{-} 35644@tab Yes 35645 35646@item @samp{qXfer:siginfo:read} 35647@tab No 35648@tab @samp{-} 35649@tab Yes 35650 35651@item @samp{qXfer:siginfo:write} 35652@tab No 35653@tab @samp{-} 35654@tab Yes 35655 35656@item @samp{qXfer:threads:read} 35657@tab No 35658@tab @samp{-} 35659@tab Yes 35660 35661@item @samp{qXfer:traceframe-info:read} 35662@tab No 35663@tab @samp{-} 35664@tab Yes 35665 35666@item @samp{qXfer:uib:read} 35667@tab No 35668@tab @samp{-} 35669@tab Yes 35670 35671@item @samp{qXfer:fdpic:read} 35672@tab No 35673@tab @samp{-} 35674@tab Yes 35675 35676@item @samp{Qbtrace:off} 35677@tab Yes 35678@tab @samp{-} 35679@tab Yes 35680 35681@item @samp{Qbtrace:bts} 35682@tab Yes 35683@tab @samp{-} 35684@tab Yes 35685 35686@item @samp{QNonStop} 35687@tab No 35688@tab @samp{-} 35689@tab Yes 35690 35691@item @samp{QPassSignals} 35692@tab No 35693@tab @samp{-} 35694@tab Yes 35695 35696@item @samp{QStartNoAckMode} 35697@tab No 35698@tab @samp{-} 35699@tab Yes 35700 35701@item @samp{multiprocess} 35702@tab No 35703@tab @samp{-} 35704@tab No 35705 35706@item @samp{ConditionalBreakpoints} 35707@tab No 35708@tab @samp{-} 35709@tab No 35710 35711@item @samp{ConditionalTracepoints} 35712@tab No 35713@tab @samp{-} 35714@tab No 35715 35716@item @samp{ReverseContinue} 35717@tab No 35718@tab @samp{-} 35719@tab No 35720 35721@item @samp{ReverseStep} 35722@tab No 35723@tab @samp{-} 35724@tab No 35725 35726@item @samp{TracepointSource} 35727@tab No 35728@tab @samp{-} 35729@tab No 35730 35731@item @samp{QAgent} 35732@tab No 35733@tab @samp{-} 35734@tab No 35735 35736@item @samp{QAllow} 35737@tab No 35738@tab @samp{-} 35739@tab No 35740 35741@item @samp{QDisableRandomization} 35742@tab No 35743@tab @samp{-} 35744@tab No 35745 35746@item @samp{EnableDisableTracepoints} 35747@tab No 35748@tab @samp{-} 35749@tab No 35750 35751@item @samp{QTBuffer:size} 35752@tab No 35753@tab @samp{-} 35754@tab No 35755 35756@item @samp{tracenz} 35757@tab No 35758@tab @samp{-} 35759@tab No 35760 35761@item @samp{BreakpointCommands} 35762@tab No 35763@tab @samp{-} 35764@tab No 35765 35766@end multitable 35767 35768These are the currently defined stub features, in more detail: 35769 35770@table @samp 35771@cindex packet size, remote protocol 35772@item PacketSize=@var{bytes} 35773The remote stub can accept packets up to at least @var{bytes} in 35774length. @value{GDBN} will send packets up to this size for bulk 35775transfers, and will never send larger packets. This is a limit on the 35776data characters in the packet, including the frame and checksum. 35777There is no trailing NUL byte in a remote protocol packet; if the stub 35778stores packets in a NUL-terminated format, it should allow an extra 35779byte in its buffer for the NUL. If this stub feature is not supported, 35780@value{GDBN} guesses based on the size of the @samp{g} packet response. 35781 35782@item qXfer:auxv:read 35783The remote stub understands the @samp{qXfer:auxv:read} packet 35784(@pxref{qXfer auxiliary vector read}). 35785 35786@item qXfer:btrace:read 35787The remote stub understands the @samp{qXfer:btrace:read} 35788packet (@pxref{qXfer btrace read}). 35789 35790@item qXfer:features:read 35791The remote stub understands the @samp{qXfer:features:read} packet 35792(@pxref{qXfer target description read}). 35793 35794@item qXfer:libraries:read 35795The remote stub understands the @samp{qXfer:libraries:read} packet 35796(@pxref{qXfer library list read}). 35797 35798@item qXfer:libraries-svr4:read 35799The remote stub understands the @samp{qXfer:libraries-svr4:read} packet 35800(@pxref{qXfer svr4 library list read}). 35801 35802@item augmented-libraries-svr4-read 35803The remote stub understands the augmented form of the 35804@samp{qXfer:libraries-svr4:read} packet 35805(@pxref{qXfer svr4 library list read}). 35806 35807@item qXfer:memory-map:read 35808The remote stub understands the @samp{qXfer:memory-map:read} packet 35809(@pxref{qXfer memory map read}). 35810 35811@item qXfer:sdata:read 35812The remote stub understands the @samp{qXfer:sdata:read} packet 35813(@pxref{qXfer sdata read}). 35814 35815@item qXfer:spu:read 35816The remote stub understands the @samp{qXfer:spu:read} packet 35817(@pxref{qXfer spu read}). 35818 35819@item qXfer:spu:write 35820The remote stub understands the @samp{qXfer:spu:write} packet 35821(@pxref{qXfer spu write}). 35822 35823@item qXfer:siginfo:read 35824The remote stub understands the @samp{qXfer:siginfo:read} packet 35825(@pxref{qXfer siginfo read}). 35826 35827@item qXfer:siginfo:write 35828The remote stub understands the @samp{qXfer:siginfo:write} packet 35829(@pxref{qXfer siginfo write}). 35830 35831@item qXfer:threads:read 35832The remote stub understands the @samp{qXfer:threads:read} packet 35833(@pxref{qXfer threads read}). 35834 35835@item qXfer:traceframe-info:read 35836The remote stub understands the @samp{qXfer:traceframe-info:read} 35837packet (@pxref{qXfer traceframe info read}). 35838 35839@item qXfer:uib:read 35840The remote stub understands the @samp{qXfer:uib:read} 35841packet (@pxref{qXfer unwind info block}). 35842 35843@item qXfer:fdpic:read 35844The remote stub understands the @samp{qXfer:fdpic:read} 35845packet (@pxref{qXfer fdpic loadmap read}). 35846 35847@item QNonStop 35848The remote stub understands the @samp{QNonStop} packet 35849(@pxref{QNonStop}). 35850 35851@item QPassSignals 35852The remote stub understands the @samp{QPassSignals} packet 35853(@pxref{QPassSignals}). 35854 35855@item QStartNoAckMode 35856The remote stub understands the @samp{QStartNoAckMode} packet and 35857prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}. 35858 35859@item multiprocess 35860@anchor{multiprocess extensions} 35861@cindex multiprocess extensions, in remote protocol 35862The remote stub understands the multiprocess extensions to the remote 35863protocol syntax. The multiprocess extensions affect the syntax of 35864thread IDs in both packets and replies (@pxref{thread-id syntax}), and 35865add process IDs to the @samp{D} packet and @samp{W} and @samp{X} 35866replies. Note that reporting this feature indicates support for the 35867syntactic extensions only, not that the stub necessarily supports 35868debugging of more than one process at a time. The stub must not use 35869multiprocess extensions in packet replies unless @value{GDBN} has also 35870indicated it supports them in its @samp{qSupported} request. 35871 35872@item qXfer:osdata:read 35873The remote stub understands the @samp{qXfer:osdata:read} packet 35874((@pxref{qXfer osdata read}). 35875 35876@item ConditionalBreakpoints 35877The target accepts and implements evaluation of conditional expressions 35878defined for breakpoints. The target will only report breakpoint triggers 35879when such conditions are true (@pxref{Conditions, ,Break Conditions}). 35880 35881@item ConditionalTracepoints 35882The remote stub accepts and implements conditional expressions defined 35883for tracepoints (@pxref{Tracepoint Conditions}). 35884 35885@item ReverseContinue 35886The remote stub accepts and implements the reverse continue packet 35887(@pxref{bc}). 35888 35889@item ReverseStep 35890The remote stub accepts and implements the reverse step packet 35891(@pxref{bs}). 35892 35893@item TracepointSource 35894The remote stub understands the @samp{QTDPsrc} packet that supplies 35895the source form of tracepoint definitions. 35896 35897@item QAgent 35898The remote stub understands the @samp{QAgent} packet. 35899 35900@item QAllow 35901The remote stub understands the @samp{QAllow} packet. 35902 35903@item QDisableRandomization 35904The remote stub understands the @samp{QDisableRandomization} packet. 35905 35906@item StaticTracepoint 35907@cindex static tracepoints, in remote protocol 35908The remote stub supports static tracepoints. 35909 35910@item InstallInTrace 35911@anchor{install tracepoint in tracing} 35912The remote stub supports installing tracepoint in tracing. 35913 35914@item EnableDisableTracepoints 35915The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and 35916@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints 35917to be enabled and disabled while a trace experiment is running. 35918 35919@item QTBuffer:size 35920The remote stub supports the @samp{QTBuffer:size} (@pxref{QTBuffer-size}) 35921packet that allows to change the size of the trace buffer. 35922 35923@item tracenz 35924@cindex string tracing, in remote protocol 35925The remote stub supports the @samp{tracenz} bytecode for collecting strings. 35926See @ref{Bytecode Descriptions} for details about the bytecode. 35927 35928@item BreakpointCommands 35929@cindex breakpoint commands, in remote protocol 35930The remote stub supports running a breakpoint's command list itself, 35931rather than reporting the hit to @value{GDBN}. 35932 35933@item Qbtrace:off 35934The remote stub understands the @samp{Qbtrace:off} packet. 35935 35936@item Qbtrace:bts 35937The remote stub understands the @samp{Qbtrace:bts} packet. 35938 35939@end table 35940 35941@item qSymbol:: 35942@cindex symbol lookup, remote request 35943@cindex @samp{qSymbol} packet 35944Notify the target that @value{GDBN} is prepared to serve symbol lookup 35945requests. Accept requests from the target for the values of symbols. 35946 35947Reply: 35948@table @samp 35949@item OK 35950The target does not need to look up any (more) symbols. 35951@item qSymbol:@var{sym_name} 35952The target requests the value of symbol @var{sym_name} (hex encoded). 35953@value{GDBN} may provide the value by using the 35954@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described 35955below. 35956@end table 35957 35958@item qSymbol:@var{sym_value}:@var{sym_name} 35959Set the value of @var{sym_name} to @var{sym_value}. 35960 35961@var{sym_name} (hex encoded) is the name of a symbol whose value the 35962target has previously requested. 35963 35964@var{sym_value} (hex) is the value for symbol @var{sym_name}. If 35965@value{GDBN} cannot supply a value for @var{sym_name}, then this field 35966will be empty. 35967 35968Reply: 35969@table @samp 35970@item OK 35971The target does not need to look up any (more) symbols. 35972@item qSymbol:@var{sym_name} 35973The target requests the value of a new symbol @var{sym_name} (hex 35974encoded). @value{GDBN} will continue to supply the values of symbols 35975(if available), until the target ceases to request them. 35976@end table 35977 35978@item qTBuffer 35979@itemx QTBuffer 35980@itemx QTDisconnected 35981@itemx QTDP 35982@itemx QTDPsrc 35983@itemx QTDV 35984@itemx qTfP 35985@itemx qTfV 35986@itemx QTFrame 35987@itemx qTMinFTPILen 35988 35989@xref{Tracepoint Packets}. 35990 35991@item qThreadExtraInfo,@var{thread-id} 35992@cindex thread attributes info, remote request 35993@cindex @samp{qThreadExtraInfo} packet 35994Obtain from the target OS a printable string description of thread 35995attributes for the thread @var{thread-id}; see @ref{thread-id syntax}, 35996for the forms of @var{thread-id}. This 35997string may contain anything that the target OS thinks is interesting 35998for @value{GDBN} to tell the user about the thread. The string is 35999displayed in @value{GDBN}'s @code{info threads} display. Some 36000examples of possible thread extra info strings are @samp{Runnable}, or 36001@samp{Blocked on Mutex}. 36002 36003Reply: 36004@table @samp 36005@item @var{XX}@dots{} 36006Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data, 36007comprising the printable string containing the extra information about 36008the thread's attributes. 36009@end table 36010 36011(Note that the @code{qThreadExtraInfo} packet's name is separated from 36012the command by a @samp{,}, not a @samp{:}, contrary to the naming 36013conventions above. Please don't use this packet as a model for new 36014packets.) 36015 36016@item QTNotes 36017@itemx qTP 36018@itemx QTSave 36019@itemx qTsP 36020@itemx qTsV 36021@itemx QTStart 36022@itemx QTStop 36023@itemx QTEnable 36024@itemx QTDisable 36025@itemx QTinit 36026@itemx QTro 36027@itemx qTStatus 36028@itemx qTV 36029@itemx qTfSTM 36030@itemx qTsSTM 36031@itemx qTSTMat 36032@xref{Tracepoint Packets}. 36033 36034@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length} 36035@cindex read special object, remote request 36036@cindex @samp{qXfer} packet 36037@anchor{qXfer read} 36038Read uninterpreted bytes from the target's special data area 36039identified by the keyword @var{object}. Request @var{length} bytes 36040starting at @var{offset} bytes into the data. The content and 36041encoding of @var{annex} is specific to @var{object}; it can supply 36042additional details about what data to access. 36043 36044Here are the specific requests of this form defined so far. All 36045@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply 36046formats, listed below. 36047 36048@table @samp 36049@item qXfer:auxv:read::@var{offset},@var{length} 36050@anchor{qXfer auxiliary vector read} 36051Access the target's @dfn{auxiliary vector}. @xref{OS Information, 36052auxiliary vector}. Note @var{annex} must be empty. 36053 36054This packet is not probed by default; the remote stub must request it, 36055by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36056 36057@item qXfer:btrace:read:@var{annex}:@var{offset},@var{length} 36058@anchor{qXfer btrace read} 36059 36060Return a description of the current branch trace. 36061@xref{Branch Trace Format}. The annex part of the generic @samp{qXfer} 36062packet may have one of the following values: 36063 36064@table @code 36065@item all 36066Returns all available branch trace. 36067 36068@item new 36069Returns all available branch trace if the branch trace changed since 36070the last read request. 36071 36072@item delta 36073Returns the new branch trace since the last read request. Adds a new 36074block to the end of the trace that begins at zero and ends at the source 36075location of the first branch in the trace buffer. This extra block is 36076used to stitch traces together. 36077 36078If the trace buffer overflowed, returns an error indicating the overflow. 36079@end table 36080 36081This packet is not probed by default; the remote stub must request it 36082by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36083 36084@item qXfer:features:read:@var{annex}:@var{offset},@var{length} 36085@anchor{qXfer target description read} 36086Access the @dfn{target description}. @xref{Target Descriptions}. The 36087annex specifies which XML document to access. The main description is 36088always loaded from the @samp{target.xml} annex. 36089 36090This packet is not probed by default; the remote stub must request it, 36091by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36092 36093@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length} 36094@anchor{qXfer library list read} 36095Access the target's list of loaded libraries. @xref{Library List Format}. 36096The annex part of the generic @samp{qXfer} packet must be empty 36097(@pxref{qXfer read}). 36098 36099Targets which maintain a list of libraries in the program's memory do 36100not need to implement this packet; it is designed for platforms where 36101the operating system manages the list of loaded libraries. 36102 36103This packet is not probed by default; the remote stub must request it, 36104by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36105 36106@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length} 36107@anchor{qXfer svr4 library list read} 36108Access the target's list of loaded libraries when the target is an SVR4 36109platform. @xref{Library List Format for SVR4 Targets}. The annex part 36110of the generic @samp{qXfer} packet must be empty unless the remote 36111stub indicated it supports the augmented form of this packet 36112by supplying an appropriate @samp{qSupported} response 36113(@pxref{qXfer read}, @ref{qSupported}). 36114 36115This packet is optional for better performance on SVR4 targets. 36116@value{GDBN} uses memory read packets to read the SVR4 library list otherwise. 36117 36118This packet is not probed by default; the remote stub must request it, 36119by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36120 36121If the remote stub indicates it supports the augmented form of this 36122packet then the annex part of the generic @samp{qXfer} packet may 36123contain a semicolon-separated list of @samp{@var{name}=@var{value}} 36124arguments. The currently supported arguments are: 36125 36126@table @code 36127@item start=@var{address} 36128A hexadecimal number specifying the address of the @samp{struct 36129link_map} to start reading the library list from. If unset or zero 36130then the first @samp{struct link_map} in the library list will be 36131chosen as the starting point. 36132 36133@item prev=@var{address} 36134A hexadecimal number specifying the address of the @samp{struct 36135link_map} immediately preceding the @samp{struct link_map} 36136specified by the @samp{start} argument. If unset or zero then 36137the remote stub will expect that no @samp{struct link_map} 36138exists prior to the starting point. 36139 36140@end table 36141 36142Arguments that are not understood by the remote stub will be silently 36143ignored. 36144 36145@item qXfer:memory-map:read::@var{offset},@var{length} 36146@anchor{qXfer memory map read} 36147Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The 36148annex part of the generic @samp{qXfer} packet must be empty 36149(@pxref{qXfer read}). 36150 36151This packet is not probed by default; the remote stub must request it, 36152by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36153 36154@item qXfer:sdata:read::@var{offset},@var{length} 36155@anchor{qXfer sdata read} 36156 36157Read contents of the extra collected static tracepoint marker 36158information. The annex part of the generic @samp{qXfer} packet must 36159be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint 36160Action Lists}. 36161 36162This packet is not probed by default; the remote stub must request it, 36163by supplying an appropriate @samp{qSupported} response 36164(@pxref{qSupported}). 36165 36166@item qXfer:siginfo:read::@var{offset},@var{length} 36167@anchor{qXfer siginfo read} 36168Read contents of the extra signal information on the target 36169system. The annex part of the generic @samp{qXfer} packet must be 36170empty (@pxref{qXfer read}). 36171 36172This packet is not probed by default; the remote stub must request it, 36173by supplying an appropriate @samp{qSupported} response 36174(@pxref{qSupported}). 36175 36176@item qXfer:spu:read:@var{annex}:@var{offset},@var{length} 36177@anchor{qXfer spu read} 36178Read contents of an @code{spufs} file on the target system. The 36179annex specifies which file to read; it must be of the form 36180@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID 36181in the target process, and @var{name} identifes the @code{spufs} file 36182in that context to be accessed. 36183 36184This packet is not probed by default; the remote stub must request it, 36185by supplying an appropriate @samp{qSupported} response 36186(@pxref{qSupported}). 36187 36188@item qXfer:threads:read::@var{offset},@var{length} 36189@anchor{qXfer threads read} 36190Access the list of threads on target. @xref{Thread List Format}. The 36191annex part of the generic @samp{qXfer} packet must be empty 36192(@pxref{qXfer read}). 36193 36194This packet is not probed by default; the remote stub must request it, 36195by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36196 36197@item qXfer:traceframe-info:read::@var{offset},@var{length} 36198@anchor{qXfer traceframe info read} 36199 36200Return a description of the current traceframe's contents. 36201@xref{Traceframe Info Format}. The annex part of the generic 36202@samp{qXfer} packet must be empty (@pxref{qXfer read}). 36203 36204This packet is not probed by default; the remote stub must request it, 36205by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36206 36207@item qXfer:uib:read:@var{pc}:@var{offset},@var{length} 36208@anchor{qXfer unwind info block} 36209 36210Return the unwind information block for @var{pc}. This packet is used 36211on OpenVMS/ia64 to ask the kernel unwind information. 36212 36213This packet is not probed by default. 36214 36215@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length} 36216@anchor{qXfer fdpic loadmap read} 36217Read contents of @code{loadmap}s on the target system. The 36218annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap}, 36219executable @code{loadmap} or interpreter @code{loadmap} to read. 36220 36221This packet is not probed by default; the remote stub must request it, 36222by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36223 36224@item qXfer:osdata:read::@var{offset},@var{length} 36225@anchor{qXfer osdata read} 36226Access the target's @dfn{operating system information}. 36227@xref{Operating System Information}. 36228 36229@end table 36230 36231Reply: 36232@table @samp 36233@item m @var{data} 36234Data @var{data} (@pxref{Binary Data}) has been read from the 36235target. There may be more data at a higher address (although 36236it is permitted to return @samp{m} even for the last valid 36237block of data, as long as at least one byte of data was read). 36238It is possible for @var{data} to have fewer bytes than the @var{length} in the 36239request. 36240 36241@item l @var{data} 36242Data @var{data} (@pxref{Binary Data}) has been read from the target. 36243There is no more data to be read. It is possible for @var{data} to 36244have fewer bytes than the @var{length} in the request. 36245 36246@item l 36247The @var{offset} in the request is at the end of the data. 36248There is no more data to be read. 36249 36250@item E00 36251The request was malformed, or @var{annex} was invalid. 36252 36253@item E @var{nn} 36254The offset was invalid, or there was an error encountered reading the data. 36255The @var{nn} part is a hex-encoded @code{errno} value. 36256 36257@item @w{} 36258An empty reply indicates the @var{object} string was not recognized by 36259the stub, or that the object does not support reading. 36260@end table 36261 36262@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{} 36263@cindex write data into object, remote request 36264@anchor{qXfer write} 36265Write uninterpreted bytes into the target's special data area 36266identified by the keyword @var{object}, starting at @var{offset} bytes 36267into the data. The binary-encoded data (@pxref{Binary Data}) to be 36268written is given by @var{data}@dots{}. The content and encoding of @var{annex} 36269is specific to @var{object}; it can supply additional details about what data 36270to access. 36271 36272Here are the specific requests of this form defined so far. All 36273@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply 36274formats, listed below. 36275 36276@table @samp 36277@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{} 36278@anchor{qXfer siginfo write} 36279Write @var{data} to the extra signal information on the target system. 36280The annex part of the generic @samp{qXfer} packet must be 36281empty (@pxref{qXfer write}). 36282 36283This packet is not probed by default; the remote stub must request it, 36284by supplying an appropriate @samp{qSupported} response 36285(@pxref{qSupported}). 36286 36287@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{} 36288@anchor{qXfer spu write} 36289Write @var{data} to an @code{spufs} file on the target system. The 36290annex specifies which file to write; it must be of the form 36291@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID 36292in the target process, and @var{name} identifes the @code{spufs} file 36293in that context to be accessed. 36294 36295This packet is not probed by default; the remote stub must request it, 36296by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 36297@end table 36298 36299Reply: 36300@table @samp 36301@item @var{nn} 36302@var{nn} (hex encoded) is the number of bytes written. 36303This may be fewer bytes than supplied in the request. 36304 36305@item E00 36306The request was malformed, or @var{annex} was invalid. 36307 36308@item E @var{nn} 36309The offset was invalid, or there was an error encountered writing the data. 36310The @var{nn} part is a hex-encoded @code{errno} value. 36311 36312@item @w{} 36313An empty reply indicates the @var{object} string was not 36314recognized by the stub, or that the object does not support writing. 36315@end table 36316 36317@item qXfer:@var{object}:@var{operation}:@dots{} 36318Requests of this form may be added in the future. When a stub does 36319not recognize the @var{object} keyword, or its support for 36320@var{object} does not recognize the @var{operation} keyword, the stub 36321must respond with an empty packet. 36322 36323@item qAttached:@var{pid} 36324@cindex query attached, remote request 36325@cindex @samp{qAttached} packet 36326Return an indication of whether the remote server attached to an 36327existing process or created a new process. When the multiprocess 36328protocol extensions are supported (@pxref{multiprocess extensions}), 36329@var{pid} is an integer in hexadecimal format identifying the target 36330process. Otherwise, @value{GDBN} will omit the @var{pid} field and 36331the query packet will be simplified as @samp{qAttached}. 36332 36333This query is used, for example, to know whether the remote process 36334should be detached or killed when a @value{GDBN} session is ended with 36335the @code{quit} command. 36336 36337Reply: 36338@table @samp 36339@item 1 36340The remote server attached to an existing process. 36341@item 0 36342The remote server created a new process. 36343@item E @var{NN} 36344A badly formed request or an error was encountered. 36345@end table 36346 36347@item Qbtrace:bts 36348Enable branch tracing for the current thread using bts tracing. 36349 36350Reply: 36351@table @samp 36352@item OK 36353Branch tracing has been enabled. 36354@item E.errtext 36355A badly formed request or an error was encountered. 36356@end table 36357 36358@item Qbtrace:off 36359Disable branch tracing for the current thread. 36360 36361Reply: 36362@table @samp 36363@item OK 36364Branch tracing has been disabled. 36365@item E.errtext 36366A badly formed request or an error was encountered. 36367@end table 36368 36369@end table 36370 36371@node Architecture-Specific Protocol Details 36372@section Architecture-Specific Protocol Details 36373 36374This section describes how the remote protocol is applied to specific 36375target architectures. Also see @ref{Standard Target Features}, for 36376details of XML target descriptions for each architecture. 36377 36378@menu 36379* ARM-Specific Protocol Details:: 36380* MIPS-Specific Protocol Details:: 36381@end menu 36382 36383@node ARM-Specific Protocol Details 36384@subsection @acronym{ARM}-specific Protocol Details 36385 36386@menu 36387* ARM Breakpoint Kinds:: 36388@end menu 36389 36390@node ARM Breakpoint Kinds 36391@subsubsection @acronym{ARM} Breakpoint Kinds 36392@cindex breakpoint kinds, @acronym{ARM} 36393 36394These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 36395 36396@table @r 36397 36398@item 2 3639916-bit Thumb mode breakpoint. 36400 36401@item 3 3640232-bit Thumb mode (Thumb-2) breakpoint. 36403 36404@item 4 3640532-bit @acronym{ARM} mode breakpoint. 36406 36407@end table 36408 36409@node MIPS-Specific Protocol Details 36410@subsection @acronym{MIPS}-specific Protocol Details 36411 36412@menu 36413* MIPS Register packet Format:: 36414* MIPS Breakpoint Kinds:: 36415@end menu 36416 36417@node MIPS Register packet Format 36418@subsubsection @acronym{MIPS} Register Packet Format 36419@cindex register packet format, @acronym{MIPS} 36420 36421The following @code{g}/@code{G} packets have previously been defined. 36422In the below, some thirty-two bit registers are transferred as 36423sixty-four bits. Those registers should be zero/sign extended (which?) 36424to fill the space allocated. Register bytes are transferred in target 36425byte order. The two nibbles within a register byte are transferred 36426most-significant -- least-significant. 36427 36428@table @r 36429 36430@item MIPS32 36431All registers are transferred as thirty-two bit quantities in the order: 3643232 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point 36433registers; fsr; fir; fp. 36434 36435@item MIPS64 36436All registers are transferred as sixty-four bit quantities (including 36437thirty-two bit registers such as @code{sr}). The ordering is the same 36438as @code{MIPS32}. 36439 36440@end table 36441 36442@node MIPS Breakpoint Kinds 36443@subsubsection @acronym{MIPS} Breakpoint Kinds 36444@cindex breakpoint kinds, @acronym{MIPS} 36445 36446These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 36447 36448@table @r 36449 36450@item 2 3645116-bit @acronym{MIPS16} mode breakpoint. 36452 36453@item 3 3645416-bit @acronym{microMIPS} mode breakpoint. 36455 36456@item 4 3645732-bit standard @acronym{MIPS} mode breakpoint. 36458 36459@item 5 3646032-bit @acronym{microMIPS} mode breakpoint. 36461 36462@end table 36463 36464@node Tracepoint Packets 36465@section Tracepoint Packets 36466@cindex tracepoint packets 36467@cindex packets, tracepoint 36468 36469Here we describe the packets @value{GDBN} uses to implement 36470tracepoints (@pxref{Tracepoints}). 36471 36472@table @samp 36473 36474@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]} 36475@cindex @samp{QTDP} packet 36476Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena} 36477is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then 36478the tracepoint is disabled. The @var{step} gives the tracepoint's step 36479count, and @var{pass} gives its pass count. If an @samp{F} is present, 36480then the tracepoint is to be a fast tracepoint, and the @var{flen} is 36481the number of bytes that the target should copy elsewhere to make room 36482for the tracepoint. If an @samp{X} is present, it introduces a 36483tracepoint condition, which consists of a hexadecimal length, followed 36484by a comma and hex-encoded bytes, in a manner similar to action 36485encodings as described below. If the trailing @samp{-} is present, 36486further @samp{QTDP} packets will follow to specify this tracepoint's 36487actions. 36488 36489Replies: 36490@table @samp 36491@item OK 36492The packet was understood and carried out. 36493@item qRelocInsn 36494@xref{Tracepoint Packets,,Relocate instruction reply packet}. 36495@item @w{} 36496The packet was not recognized. 36497@end table 36498 36499@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]} 36500Define actions to be taken when a tracepoint is hit. The @var{n} and 36501@var{addr} must be the same as in the initial @samp{QTDP} packet for 36502this tracepoint. This packet may only be sent immediately after 36503another @samp{QTDP} packet that ended with a @samp{-}. If the 36504trailing @samp{-} is present, further @samp{QTDP} packets will follow, 36505specifying more actions for this tracepoint. 36506 36507In the series of action packets for a given tracepoint, at most one 36508can have an @samp{S} before its first @var{action}. If such a packet 36509is sent, it and the following packets define ``while-stepping'' 36510actions. Any prior packets define ordinary actions --- that is, those 36511taken when the tracepoint is first hit. If no action packet has an 36512@samp{S}, then all the packets in the series specify ordinary 36513tracepoint actions. 36514 36515The @samp{@var{action}@dots{}} portion of the packet is a series of 36516actions, concatenated without separators. Each action has one of the 36517following forms: 36518 36519@table @samp 36520 36521@item R @var{mask} 36522Collect the registers whose bits are set in @var{mask}, 36523a hexadecimal number whose @var{i}'th bit is set if register number 36524@var{i} should be collected. (The least significant bit is numbered 36525zero.) Note that @var{mask} may be any number of digits long; it may 36526not fit in a 32-bit word. 36527 36528@item M @var{basereg},@var{offset},@var{len} 36529Collect @var{len} bytes of memory starting at the address in register 36530number @var{basereg}, plus @var{offset}. If @var{basereg} is 36531@samp{-1}, then the range has a fixed address: @var{offset} is the 36532address of the lowest byte to collect. The @var{basereg}, 36533@var{offset}, and @var{len} parameters are all unsigned hexadecimal 36534values (the @samp{-1} value for @var{basereg} is a special case). 36535 36536@item X @var{len},@var{expr} 36537Evaluate @var{expr}, whose length is @var{len}, and collect memory as 36538it directs. The agent expression @var{expr} is as described in 36539@ref{Agent Expressions}. Each byte of the expression is encoded as a 36540two-digit hex number in the packet; @var{len} is the number of bytes 36541in the expression (and thus one-half the number of hex digits in the 36542packet). 36543 36544@end table 36545 36546Any number of actions may be packed together in a single @samp{QTDP} 36547packet, as long as the packet does not exceed the maximum packet 36548length (400 bytes, for many stubs). There may be only one @samp{R} 36549action per tracepoint, and it must precede any @samp{M} or @samp{X} 36550actions. Any registers referred to by @samp{M} and @samp{X} actions 36551must be collected by a preceding @samp{R} action. (The 36552``while-stepping'' actions are treated as if they were attached to a 36553separate tracepoint, as far as these restrictions are concerned.) 36554 36555Replies: 36556@table @samp 36557@item OK 36558The packet was understood and carried out. 36559@item qRelocInsn 36560@xref{Tracepoint Packets,,Relocate instruction reply packet}. 36561@item @w{} 36562The packet was not recognized. 36563@end table 36564 36565@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes} 36566@cindex @samp{QTDPsrc} packet 36567Specify a source string of tracepoint @var{n} at address @var{addr}. 36568This is useful to get accurate reproduction of the tracepoints 36569originally downloaded at the beginning of the trace run. The @var{type} 36570is the name of the tracepoint part, such as @samp{cond} for the 36571tracepoint's conditional expression (see below for a list of types), while 36572@var{bytes} is the string, encoded in hexadecimal. 36573 36574@var{start} is the offset of the @var{bytes} within the overall source 36575string, while @var{slen} is the total length of the source string. 36576This is intended for handling source strings that are longer than will 36577fit in a single packet. 36578@c Add detailed example when this info is moved into a dedicated 36579@c tracepoint descriptions section. 36580 36581The available string types are @samp{at} for the location, 36582@samp{cond} for the conditional, and @samp{cmd} for an action command. 36583@value{GDBN} sends a separate packet for each command in the action 36584list, in the same order in which the commands are stored in the list. 36585 36586The target does not need to do anything with source strings except 36587report them back as part of the replies to the @samp{qTfP}/@samp{qTsP} 36588query packets. 36589 36590Although this packet is optional, and @value{GDBN} will only send it 36591if the target replies with @samp{TracepointSource} @xref{General 36592Query Packets}, it makes both disconnected tracing and trace files 36593much easier to use. Otherwise the user must be careful that the 36594tracepoints in effect while looking at trace frames are identical to 36595the ones in effect during the trace run; even a small discrepancy 36596could cause @samp{tdump} not to work, or a particular trace frame not 36597be found. 36598 36599@item QTDV:@var{n}:@var{value} 36600@cindex define trace state variable, remote request 36601@cindex @samp{QTDV} packet 36602Create a new trace state variable, number @var{n}, with an initial 36603value of @var{value}, which is a 64-bit signed integer. Both @var{n} 36604and @var{value} are encoded as hexadecimal values. @value{GDBN} has 36605the option of not using this packet for initial values of zero; the 36606target should simply create the trace state variables as they are 36607mentioned in expressions. 36608 36609@item QTFrame:@var{n} 36610@cindex @samp{QTFrame} packet 36611Select the @var{n}'th tracepoint frame from the buffer, and use the 36612register and memory contents recorded there to answer subsequent 36613request packets from @value{GDBN}. 36614 36615A successful reply from the stub indicates that the stub has found the 36616requested frame. The response is a series of parts, concatenated 36617without separators, describing the frame we selected. Each part has 36618one of the following forms: 36619 36620@table @samp 36621@item F @var{f} 36622The selected frame is number @var{n} in the trace frame buffer; 36623@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there 36624was no frame matching the criteria in the request packet. 36625 36626@item T @var{t} 36627The selected trace frame records a hit of tracepoint number @var{t}; 36628@var{t} is a hexadecimal number. 36629 36630@end table 36631 36632@item QTFrame:pc:@var{addr} 36633Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 36634currently selected frame whose PC is @var{addr}; 36635@var{addr} is a hexadecimal number. 36636 36637@item QTFrame:tdp:@var{t} 36638Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 36639currently selected frame that is a hit of tracepoint @var{t}; @var{t} 36640is a hexadecimal number. 36641 36642@item QTFrame:range:@var{start}:@var{end} 36643Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 36644currently selected frame whose PC is between @var{start} (inclusive) 36645and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal 36646numbers. 36647 36648@item QTFrame:outside:@var{start}:@var{end} 36649Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first 36650frame @emph{outside} the given range of addresses (exclusive). 36651 36652@item qTMinFTPILen 36653@cindex @samp{qTMinFTPILen} packet 36654This packet requests the minimum length of instruction at which a fast 36655tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on 36656the 32-bit x86 architecture, it is possible to use a 4-byte jump, but 36657it depends on the target system being able to create trampolines in 36658the first 64K of memory, which might or might not be possible for that 36659system. So the reply to this packet will be 4 if it is able to 36660arrange for that. 36661 36662Replies: 36663 36664@table @samp 36665@item 0 36666The minimum instruction length is currently unknown. 36667@item @var{length} 36668The minimum instruction length is @var{length}, where @var{length} 36669is a hexadecimal number greater or equal to 1. A reply 36670of 1 means that a fast tracepoint may be placed on any instruction 36671regardless of size. 36672@item E 36673An error has occurred. 36674@item @w{} 36675An empty reply indicates that the request is not supported by the stub. 36676@end table 36677 36678@item QTStart 36679@cindex @samp{QTStart} packet 36680Begin the tracepoint experiment. Begin collecting data from 36681tracepoint hits in the trace frame buffer. This packet supports the 36682@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate 36683instruction reply packet}). 36684 36685@item QTStop 36686@cindex @samp{QTStop} packet 36687End the tracepoint experiment. Stop collecting trace frames. 36688 36689@item QTEnable:@var{n}:@var{addr} 36690@anchor{QTEnable} 36691@cindex @samp{QTEnable} packet 36692Enable tracepoint @var{n} at address @var{addr} in a started tracepoint 36693experiment. If the tracepoint was previously disabled, then collection 36694of data from it will resume. 36695 36696@item QTDisable:@var{n}:@var{addr} 36697@anchor{QTDisable} 36698@cindex @samp{QTDisable} packet 36699Disable tracepoint @var{n} at address @var{addr} in a started tracepoint 36700experiment. No more data will be collected from the tracepoint unless 36701@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued. 36702 36703@item QTinit 36704@cindex @samp{QTinit} packet 36705Clear the table of tracepoints, and empty the trace frame buffer. 36706 36707@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{} 36708@cindex @samp{QTro} packet 36709Establish the given ranges of memory as ``transparent''. The stub 36710will answer requests for these ranges from memory's current contents, 36711if they were not collected as part of the tracepoint hit. 36712 36713@value{GDBN} uses this to mark read-only regions of memory, like those 36714containing program code. Since these areas never change, they should 36715still have the same contents they did when the tracepoint was hit, so 36716there's no reason for the stub to refuse to provide their contents. 36717 36718@item QTDisconnected:@var{value} 36719@cindex @samp{QTDisconnected} packet 36720Set the choice to what to do with the tracing run when @value{GDBN} 36721disconnects from the target. A @var{value} of 1 directs the target to 36722continue the tracing run, while 0 tells the target to stop tracing if 36723@value{GDBN} is no longer in the picture. 36724 36725@item qTStatus 36726@cindex @samp{qTStatus} packet 36727Ask the stub if there is a trace experiment running right now. 36728 36729The reply has the form: 36730 36731@table @samp 36732 36733@item T@var{running}@r{[};@var{field}@r{]}@dots{} 36734@var{running} is a single digit @code{1} if the trace is presently 36735running, or @code{0} if not. It is followed by semicolon-separated 36736optional fields that an agent may use to report additional status. 36737 36738@end table 36739 36740If the trace is not running, the agent may report any of several 36741explanations as one of the optional fields: 36742 36743@table @samp 36744 36745@item tnotrun:0 36746No trace has been run yet. 36747 36748@item tstop[:@var{text}]:0 36749The trace was stopped by a user-originated stop command. The optional 36750@var{text} field is a user-supplied string supplied as part of the 36751stop command (for instance, an explanation of why the trace was 36752stopped manually). It is hex-encoded. 36753 36754@item tfull:0 36755The trace stopped because the trace buffer filled up. 36756 36757@item tdisconnected:0 36758The trace stopped because @value{GDBN} disconnected from the target. 36759 36760@item tpasscount:@var{tpnum} 36761The trace stopped because tracepoint @var{tpnum} exceeded its pass count. 36762 36763@item terror:@var{text}:@var{tpnum} 36764The trace stopped because tracepoint @var{tpnum} had an error. The 36765string @var{text} is available to describe the nature of the error 36766(for instance, a divide by zero in the condition expression); it 36767is hex encoded. 36768 36769@item tunknown:0 36770The trace stopped for some other reason. 36771 36772@end table 36773 36774Additional optional fields supply statistical and other information. 36775Although not required, they are extremely useful for users monitoring 36776the progress of a trace run. If a trace has stopped, and these 36777numbers are reported, they must reflect the state of the just-stopped 36778trace. 36779 36780@table @samp 36781 36782@item tframes:@var{n} 36783The number of trace frames in the buffer. 36784 36785@item tcreated:@var{n} 36786The total number of trace frames created during the run. This may 36787be larger than the trace frame count, if the buffer is circular. 36788 36789@item tsize:@var{n} 36790The total size of the trace buffer, in bytes. 36791 36792@item tfree:@var{n} 36793The number of bytes still unused in the buffer. 36794 36795@item circular:@var{n} 36796The value of the circular trace buffer flag. @code{1} means that the 36797trace buffer is circular and old trace frames will be discarded if 36798necessary to make room, @code{0} means that the trace buffer is linear 36799and may fill up. 36800 36801@item disconn:@var{n} 36802The value of the disconnected tracing flag. @code{1} means that 36803tracing will continue after @value{GDBN} disconnects, @code{0} means 36804that the trace run will stop. 36805 36806@end table 36807 36808@item qTP:@var{tp}:@var{addr} 36809@cindex tracepoint status, remote request 36810@cindex @samp{qTP} packet 36811Ask the stub for the current state of tracepoint number @var{tp} at 36812address @var{addr}. 36813 36814Replies: 36815@table @samp 36816@item V@var{hits}:@var{usage} 36817The tracepoint has been hit @var{hits} times so far during the trace 36818run, and accounts for @var{usage} in the trace buffer. Note that 36819@code{while-stepping} steps are not counted as separate hits, but the 36820steps' space consumption is added into the usage number. 36821 36822@end table 36823 36824@item qTV:@var{var} 36825@cindex trace state variable value, remote request 36826@cindex @samp{qTV} packet 36827Ask the stub for the value of the trace state variable number @var{var}. 36828 36829Replies: 36830@table @samp 36831@item V@var{value} 36832The value of the variable is @var{value}. This will be the current 36833value of the variable if the user is examining a running target, or a 36834saved value if the variable was collected in the trace frame that the 36835user is looking at. Note that multiple requests may result in 36836different reply values, such as when requesting values while the 36837program is running. 36838 36839@item U 36840The value of the variable is unknown. This would occur, for example, 36841if the user is examining a trace frame in which the requested variable 36842was not collected. 36843@end table 36844 36845@item qTfP 36846@cindex @samp{qTfP} packet 36847@itemx qTsP 36848@cindex @samp{qTsP} packet 36849These packets request data about tracepoints that are being used by 36850the target. @value{GDBN} sends @code{qTfP} to get the first piece 36851of data, and multiple @code{qTsP} to get additional pieces. Replies 36852to these packets generally take the form of the @code{QTDP} packets 36853that define tracepoints. (FIXME add detailed syntax) 36854 36855@item qTfV 36856@cindex @samp{qTfV} packet 36857@itemx qTsV 36858@cindex @samp{qTsV} packet 36859These packets request data about trace state variables that are on the 36860target. @value{GDBN} sends @code{qTfV} to get the first vari of data, 36861and multiple @code{qTsV} to get additional variables. Replies to 36862these packets follow the syntax of the @code{QTDV} packets that define 36863trace state variables. 36864 36865@item qTfSTM 36866@itemx qTsSTM 36867@anchor{qTfSTM} 36868@anchor{qTsSTM} 36869@cindex @samp{qTfSTM} packet 36870@cindex @samp{qTsSTM} packet 36871These packets request data about static tracepoint markers that exist 36872in the target program. @value{GDBN} sends @code{qTfSTM} to get the 36873first piece of data, and multiple @code{qTsSTM} to get additional 36874pieces. Replies to these packets take the following form: 36875 36876Reply: 36877@table @samp 36878@item m @var{address}:@var{id}:@var{extra} 36879A single marker 36880@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{} 36881a comma-separated list of markers 36882@item l 36883(lower case letter @samp{L}) denotes end of list. 36884@item E @var{nn} 36885An error occurred. The error number @var{nn} is given as hex digits. 36886@item @w{} 36887An empty reply indicates that the request is not supported by the 36888stub. 36889@end table 36890 36891The @var{address} is encoded in hex; 36892@var{id} and @var{extra} are strings encoded in hex. 36893 36894In response to each query, the target will reply with a list of one or 36895more markers, separated by commas. @value{GDBN} will respond to each 36896reply with a request for more markers (using the @samp{qs} form of the 36897query), until the target responds with @samp{l} (lower-case ell, for 36898@dfn{last}). 36899 36900@item qTSTMat:@var{address} 36901@anchor{qTSTMat} 36902@cindex @samp{qTSTMat} packet 36903This packets requests data about static tracepoint markers in the 36904target program at @var{address}. Replies to this packet follow the 36905syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static 36906tracepoint markers. 36907 36908@item QTSave:@var{filename} 36909@cindex @samp{QTSave} packet 36910This packet directs the target to save trace data to the file name 36911@var{filename} in the target's filesystem. The @var{filename} is encoded 36912as a hex string; the interpretation of the file name (relative vs 36913absolute, wild cards, etc) is up to the target. 36914 36915@item qTBuffer:@var{offset},@var{len} 36916@cindex @samp{qTBuffer} packet 36917Return up to @var{len} bytes of the current contents of trace buffer, 36918starting at @var{offset}. The trace buffer is treated as if it were 36919a contiguous collection of traceframes, as per the trace file format. 36920The reply consists as many hex-encoded bytes as the target can deliver 36921in a packet; it is not an error to return fewer than were asked for. 36922A reply consisting of just @code{l} indicates that no bytes are 36923available. 36924 36925@item QTBuffer:circular:@var{value} 36926This packet directs the target to use a circular trace buffer if 36927@var{value} is 1, or a linear buffer if the value is 0. 36928 36929@item QTBuffer:size:@var{size} 36930@anchor{QTBuffer-size} 36931@cindex @samp{QTBuffer size} packet 36932This packet directs the target to make the trace buffer be of size 36933@var{size} if possible. A value of @code{-1} tells the target to 36934use whatever size it prefers. 36935 36936@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{} 36937@cindex @samp{QTNotes} packet 36938This packet adds optional textual notes to the trace run. Allowable 36939types include @code{user}, @code{notes}, and @code{tstop}, the 36940@var{text} fields are arbitrary strings, hex-encoded. 36941 36942@end table 36943 36944@subsection Relocate instruction reply packet 36945When installing fast tracepoints in memory, the target may need to 36946relocate the instruction currently at the tracepoint address to a 36947different address in memory. For most instructions, a simple copy is 36948enough, but, for example, call instructions that implicitly push the 36949return address on the stack, and relative branches or other 36950PC-relative instructions require offset adjustment, so that the effect 36951of executing the instruction at a different address is the same as if 36952it had executed in the original location. 36953 36954In response to several of the tracepoint packets, the target may also 36955respond with a number of intermediate @samp{qRelocInsn} request 36956packets before the final result packet, to have @value{GDBN} handle 36957this relocation operation. If a packet supports this mechanism, its 36958documentation will explicitly say so. See for example the above 36959descriptions for the @samp{QTStart} and @samp{QTDP} packets. The 36960format of the request is: 36961 36962@table @samp 36963@item qRelocInsn:@var{from};@var{to} 36964 36965This requests @value{GDBN} to copy instruction at address @var{from} 36966to address @var{to}, possibly adjusted so that executing the 36967instruction at @var{to} has the same effect as executing it at 36968@var{from}. @value{GDBN} writes the adjusted instruction to target 36969memory starting at @var{to}. 36970@end table 36971 36972Replies: 36973@table @samp 36974@item qRelocInsn:@var{adjusted_size} 36975Informs the stub the relocation is complete. The @var{adjusted_size} is 36976the length in bytes of resulting relocated instruction sequence. 36977@item E @var{NN} 36978A badly formed request was detected, or an error was encountered while 36979relocating the instruction. 36980@end table 36981 36982@node Host I/O Packets 36983@section Host I/O Packets 36984@cindex Host I/O, remote protocol 36985@cindex file transfer, remote protocol 36986 36987The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O 36988operations on the far side of a remote link. For example, Host I/O is 36989used to upload and download files to a remote target with its own 36990filesystem. Host I/O uses the same constant values and data structure 36991layout as the target-initiated File-I/O protocol. However, the 36992Host I/O packets are structured differently. The target-initiated 36993protocol relies on target memory to store parameters and buffers. 36994Host I/O requests are initiated by @value{GDBN}, and the 36995target's memory is not involved. @xref{File-I/O Remote Protocol 36996Extension}, for more details on the target-initiated protocol. 36997 36998The Host I/O request packets all encode a single operation along with 36999its arguments. They have this format: 37000 37001@table @samp 37002 37003@item vFile:@var{operation}: @var{parameter}@dots{} 37004@var{operation} is the name of the particular request; the target 37005should compare the entire packet name up to the second colon when checking 37006for a supported operation. The format of @var{parameter} depends on 37007the operation. Numbers are always passed in hexadecimal. Negative 37008numbers have an explicit minus sign (i.e.@: two's complement is not 37009used). Strings (e.g.@: filenames) are encoded as a series of 37010hexadecimal bytes. The last argument to a system call may be a 37011buffer of escaped binary data (@pxref{Binary Data}). 37012 37013@end table 37014 37015The valid responses to Host I/O packets are: 37016 37017@table @samp 37018 37019@item F @var{result} [, @var{errno}] [; @var{attachment}] 37020@var{result} is the integer value returned by this operation, usually 37021non-negative for success and -1 for errors. If an error has occured, 37022@var{errno} will be included in the result specifying a 37023value defined by the File-I/O protocol (@pxref{Errno Values}). For 37024operations which return data, @var{attachment} supplies the data as a 37025binary buffer. Binary buffers in response packets are escaped in the 37026normal way (@pxref{Binary Data}). See the individual packet 37027documentation for the interpretation of @var{result} and 37028@var{attachment}. 37029 37030@item @w{} 37031An empty response indicates that this operation is not recognized. 37032 37033@end table 37034 37035These are the supported Host I/O operations: 37036 37037@table @samp 37038@item vFile:open: @var{filename}, @var{flags}, @var{mode} 37039Open a file at @var{filename} and return a file descriptor for it, or 37040return -1 if an error occurs. The @var{filename} is a string, 37041@var{flags} is an integer indicating a mask of open flags 37042(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask 37043of mode bits to use if the file is created (@pxref{mode_t Values}). 37044@xref{open}, for details of the open flags and mode values. 37045 37046@item vFile:close: @var{fd} 37047Close the open file corresponding to @var{fd} and return 0, or 37048-1 if an error occurs. 37049 37050@item vFile:pread: @var{fd}, @var{count}, @var{offset} 37051Read data from the open file corresponding to @var{fd}. Up to 37052@var{count} bytes will be read from the file, starting at @var{offset} 37053relative to the start of the file. The target may read fewer bytes; 37054common reasons include packet size limits and an end-of-file 37055condition. The number of bytes read is returned. Zero should only be 37056returned for a successful read at the end of the file, or if 37057@var{count} was zero. 37058 37059The data read should be returned as a binary attachment on success. 37060If zero bytes were read, the response should include an empty binary 37061attachment (i.e.@: a trailing semicolon). The return value is the 37062number of target bytes read; the binary attachment may be longer if 37063some characters were escaped. 37064 37065@item vFile:pwrite: @var{fd}, @var{offset}, @var{data} 37066Write @var{data} (a binary buffer) to the open file corresponding 37067to @var{fd}. Start the write at @var{offset} from the start of the 37068file. Unlike many @code{write} system calls, there is no 37069separate @var{count} argument; the length of @var{data} in the 37070packet is used. @samp{vFile:write} returns the number of bytes written, 37071which may be shorter than the length of @var{data}, or -1 if an 37072error occurred. 37073 37074@item vFile:unlink: @var{filename} 37075Delete the file at @var{filename} on the target. Return 0, 37076or -1 if an error occurs. The @var{filename} is a string. 37077 37078@item vFile:readlink: @var{filename} 37079Read value of symbolic link @var{filename} on the target. Return 37080the number of bytes read, or -1 if an error occurs. 37081 37082The data read should be returned as a binary attachment on success. 37083If zero bytes were read, the response should include an empty binary 37084attachment (i.e.@: a trailing semicolon). The return value is the 37085number of target bytes read; the binary attachment may be longer if 37086some characters were escaped. 37087 37088@end table 37089 37090@node Interrupts 37091@section Interrupts 37092@cindex interrupts (remote protocol) 37093 37094When a program on the remote target is running, @value{GDBN} may 37095attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or 37096a @code{BREAK} followed by @code{g}, 37097control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}. 37098 37099The precise meaning of @code{BREAK} is defined by the transport 37100mechanism and may, in fact, be undefined. @value{GDBN} does not 37101currently define a @code{BREAK} mechanism for any of the network 37102interfaces except for TCP, in which case @value{GDBN} sends the 37103@code{telnet} BREAK sequence. 37104 37105@samp{Ctrl-C}, on the other hand, is defined and implemented for all 37106transport mechanisms. It is represented by sending the single byte 37107@code{0x03} without any of the usual packet overhead described in 37108the Overview section (@pxref{Overview}). When a @code{0x03} byte is 37109transmitted as part of a packet, it is considered to be packet data 37110and does @emph{not} represent an interrupt. E.g., an @samp{X} packet 37111(@pxref{X packet}), used for binary downloads, may include an unescaped 37112@code{0x03} as part of its packet. 37113 37114@code{BREAK} followed by @code{g} is also known as Magic SysRq g. 37115When Linux kernel receives this sequence from serial port, 37116it stops execution and connects to gdb. 37117 37118Stubs are not required to recognize these interrupt mechanisms and the 37119precise meaning associated with receipt of the interrupt is 37120implementation defined. If the target supports debugging of multiple 37121threads and/or processes, it should attempt to interrupt all 37122currently-executing threads and processes. 37123If the stub is successful at interrupting the 37124running program, it should send one of the stop 37125reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result 37126of successfully stopping the program in all-stop mode, and a stop reply 37127for each stopped thread in non-stop mode. 37128Interrupts received while the 37129program is stopped are discarded. 37130 37131@node Notification Packets 37132@section Notification Packets 37133@cindex notification packets 37134@cindex packets, notification 37135 37136The @value{GDBN} remote serial protocol includes @dfn{notifications}, 37137packets that require no acknowledgment. Both the GDB and the stub 37138may send notifications (although the only notifications defined at 37139present are sent by the stub). Notifications carry information 37140without incurring the round-trip latency of an acknowledgment, and so 37141are useful for low-impact communications where occasional packet loss 37142is not a problem. 37143 37144A notification packet has the form @samp{% @var{data} # 37145@var{checksum}}, where @var{data} is the content of the notification, 37146and @var{checksum} is a checksum of @var{data}, computed and formatted 37147as for ordinary @value{GDBN} packets. A notification's @var{data} 37148never contains @samp{$}, @samp{%} or @samp{#} characters. Upon 37149receiving a notification, the recipient sends no @samp{+} or @samp{-} 37150to acknowledge the notification's receipt or to report its corruption. 37151 37152Every notification's @var{data} begins with a name, which contains no 37153colon characters, followed by a colon character. 37154 37155Recipients should silently ignore corrupted notifications and 37156notifications they do not understand. Recipients should restart 37157timeout periods on receipt of a well-formed notification, whether or 37158not they understand it. 37159 37160Senders should only send the notifications described here when this 37161protocol description specifies that they are permitted. In the 37162future, we may extend the protocol to permit existing notifications in 37163new contexts; this rule helps older senders avoid confusing newer 37164recipients. 37165 37166(Older versions of @value{GDBN} ignore bytes received until they see 37167the @samp{$} byte that begins an ordinary packet, so new stubs may 37168transmit notifications without fear of confusing older clients. There 37169are no notifications defined for @value{GDBN} to send at the moment, but we 37170assume that most older stubs would ignore them, as well.) 37171 37172Each notification is comprised of three parts: 37173@table @samp 37174@item @var{name}:@var{event} 37175The notification packet is sent by the side that initiates the 37176exchange (currently, only the stub does that), with @var{event} 37177carrying the specific information about the notification, and 37178@var{name} specifying the name of the notification. 37179@item @var{ack} 37180The acknowledge sent by the other side, usually @value{GDBN}, to 37181acknowledge the exchange and request the event. 37182@end table 37183 37184The purpose of an asynchronous notification mechanism is to report to 37185@value{GDBN} that something interesting happened in the remote stub. 37186 37187The remote stub may send notification @var{name}:@var{event} 37188at any time, but @value{GDBN} acknowledges the notification when 37189appropriate. The notification event is pending before @value{GDBN} 37190acknowledges. Only one notification at a time may be pending; if 37191additional events occur before @value{GDBN} has acknowledged the 37192previous notification, they must be queued by the stub for later 37193synchronous transmission in response to @var{ack} packets from 37194@value{GDBN}. Because the notification mechanism is unreliable, 37195the stub is permitted to resend a notification if it believes 37196@value{GDBN} may not have received it. 37197 37198Specifically, notifications may appear when @value{GDBN} is not 37199otherwise reading input from the stub, or when @value{GDBN} is 37200expecting to read a normal synchronous response or a 37201@samp{+}/@samp{-} acknowledgment to a packet it has sent. 37202Notification packets are distinct from any other communication from 37203the stub so there is no ambiguity. 37204 37205After receiving a notification, @value{GDBN} shall acknowledge it by 37206sending a @var{ack} packet as a regular, synchronous request to the 37207stub. Such acknowledgment is not required to happen immediately, as 37208@value{GDBN} is permitted to send other, unrelated packets to the 37209stub first, which the stub should process normally. 37210 37211Upon receiving a @var{ack} packet, if the stub has other queued 37212events to report to @value{GDBN}, it shall respond by sending a 37213normal @var{event}. @value{GDBN} shall then send another @var{ack} 37214packet to solicit further responses; again, it is permitted to send 37215other, unrelated packets as well which the stub should process 37216normally. 37217 37218If the stub receives a @var{ack} packet and there are no additional 37219@var{event} to report, the stub shall return an @samp{OK} response. 37220At this point, @value{GDBN} has finished processing a notification 37221and the stub has completed sending any queued events. @value{GDBN} 37222won't accept any new notifications until the final @samp{OK} is 37223received . If further notification events occur, the stub shall send 37224a new notification, @value{GDBN} shall accept the notification, and 37225the process shall be repeated. 37226 37227The process of asynchronous notification can be illustrated by the 37228following example: 37229@smallexample 37230<- @code{%%Stop:T0505:98e7ffbf;04:4ce6ffbf;08:b1b6e54c;thread:p7526.7526;core:0;} 37231@code{...} 37232-> @code{vStopped} 37233<- @code{T0505:68f37db7;04:40f37db7;08:63850408;thread:p7526.7528;core:0;} 37234-> @code{vStopped} 37235<- @code{T0505:68e3fdb6;04:40e3fdb6;08:63850408;thread:p7526.7529;core:0;} 37236-> @code{vStopped} 37237<- @code{OK} 37238@end smallexample 37239 37240The following notifications are defined: 37241@multitable @columnfractions 0.12 0.12 0.38 0.38 37242 37243@item Notification 37244@tab Ack 37245@tab Event 37246@tab Description 37247 37248@item Stop 37249@tab vStopped 37250@tab @var{reply}. The @var{reply} has the form of a stop reply, as 37251described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop}, 37252for information on how these notifications are acknowledged by 37253@value{GDBN}. 37254@tab Report an asynchronous stop event in non-stop mode. 37255 37256@end multitable 37257 37258@node Remote Non-Stop 37259@section Remote Protocol Support for Non-Stop Mode 37260 37261@value{GDBN}'s remote protocol supports non-stop debugging of 37262multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub 37263supports non-stop mode, it should report that to @value{GDBN} by including 37264@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}). 37265 37266@value{GDBN} typically sends a @samp{QNonStop} packet only when 37267establishing a new connection with the stub. Entering non-stop mode 37268does not alter the state of any currently-running threads, but targets 37269must stop all threads in any already-attached processes when entering 37270all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to 37271probe the target state after a mode change. 37272 37273In non-stop mode, when an attached process encounters an event that 37274would otherwise be reported with a stop reply, it uses the 37275asynchronous notification mechanism (@pxref{Notification Packets}) to 37276inform @value{GDBN}. In contrast to all-stop mode, where all threads 37277in all processes are stopped when a stop reply is sent, in non-stop 37278mode only the thread reporting the stop event is stopped. That is, 37279when reporting a @samp{S} or @samp{T} response to indicate completion 37280of a step operation, hitting a breakpoint, or a fault, only the 37281affected thread is stopped; any other still-running threads continue 37282to run. When reporting a @samp{W} or @samp{X} response, all running 37283threads belonging to other attached processes continue to run. 37284 37285In non-stop mode, the target shall respond to the @samp{?} packet as 37286follows. First, any incomplete stop reply notification/@samp{vStopped} 37287sequence in progress is abandoned. The target must begin a new 37288sequence reporting stop events for all stopped threads, whether or not 37289it has previously reported those events to @value{GDBN}. The first 37290stop reply is sent as a synchronous reply to the @samp{?} packet, and 37291subsequent stop replies are sent as responses to @samp{vStopped} packets 37292using the mechanism described above. The target must not send 37293asynchronous stop reply notifications until the sequence is complete. 37294If all threads are running when the target receives the @samp{?} packet, 37295or if the target is not attached to any process, it shall respond 37296@samp{OK}. 37297 37298@node Packet Acknowledgment 37299@section Packet Acknowledgment 37300 37301@cindex acknowledgment, for @value{GDBN} remote 37302@cindex packet acknowledgment, for @value{GDBN} remote 37303By default, when either the host or the target machine receives a packet, 37304the first response expected is an acknowledgment: either @samp{+} (to indicate 37305the package was received correctly) or @samp{-} (to request retransmission). 37306This mechanism allows the @value{GDBN} remote protocol to operate over 37307unreliable transport mechanisms, such as a serial line. 37308 37309In cases where the transport mechanism is itself reliable (such as a pipe or 37310TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant. 37311It may be desirable to disable them in that case to reduce communication 37312overhead, or for other reasons. This can be accomplished by means of the 37313@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}. 37314 37315When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or 37316expect @samp{+}/@samp{-} protocol acknowledgments. The packet 37317and response format still includes the normal checksum, as described in 37318@ref{Overview}, but the checksum may be ignored by the receiver. 37319 37320If the stub supports @samp{QStartNoAckMode} and prefers to operate in 37321no-acknowledgment mode, it should report that to @value{GDBN} 37322by including @samp{QStartNoAckMode+} in its response to @samp{qSupported}; 37323@pxref{qSupported}. 37324If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been 37325disabled via the @code{set remote noack-packet off} command 37326(@pxref{Remote Configuration}), 37327@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub. 37328Only then may the stub actually turn off packet acknowledgments. 37329@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK} 37330response, which can be safely ignored by the stub. 37331 37332Note that @code{set remote noack-packet} command only affects negotiation 37333between @value{GDBN} and the stub when subsequent connections are made; 37334it does not affect the protocol acknowledgment state for any current 37335connection. 37336Since @samp{+}/@samp{-} acknowledgments are enabled by default when a 37337new connection is established, 37338there is also no protocol request to re-enable the acknowledgments 37339for the current connection, once disabled. 37340 37341@node Examples 37342@section Examples 37343 37344Example sequence of a target being re-started. Notice how the restart 37345does not get any direct output: 37346 37347@smallexample 37348-> @code{R00} 37349<- @code{+} 37350@emph{target restarts} 37351-> @code{?} 37352<- @code{+} 37353<- @code{T001:1234123412341234} 37354-> @code{+} 37355@end smallexample 37356 37357Example sequence of a target being stepped by a single instruction: 37358 37359@smallexample 37360-> @code{G1445@dots{}} 37361<- @code{+} 37362-> @code{s} 37363<- @code{+} 37364@emph{time passes} 37365<- @code{T001:1234123412341234} 37366-> @code{+} 37367-> @code{g} 37368<- @code{+} 37369<- @code{1455@dots{}} 37370-> @code{+} 37371@end smallexample 37372 37373@node File-I/O Remote Protocol Extension 37374@section File-I/O Remote Protocol Extension 37375@cindex File-I/O remote protocol extension 37376 37377@menu 37378* File-I/O Overview:: 37379* Protocol Basics:: 37380* The F Request Packet:: 37381* The F Reply Packet:: 37382* The Ctrl-C Message:: 37383* Console I/O:: 37384* List of Supported Calls:: 37385* Protocol-specific Representation of Datatypes:: 37386* Constants:: 37387* File-I/O Examples:: 37388@end menu 37389 37390@node File-I/O Overview 37391@subsection File-I/O Overview 37392@cindex file-i/o overview 37393 37394The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the 37395target to use the host's file system and console I/O to perform various 37396system calls. System calls on the target system are translated into a 37397remote protocol packet to the host system, which then performs the needed 37398actions and returns a response packet to the target system. 37399This simulates file system operations even on targets that lack file systems. 37400 37401The protocol is defined to be independent of both the host and target systems. 37402It uses its own internal representation of datatypes and values. Both 37403@value{GDBN} and the target's @value{GDBN} stub are responsible for 37404translating the system-dependent value representations into the internal 37405protocol representations when data is transmitted. 37406 37407The communication is synchronous. A system call is possible only when 37408@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S} 37409or @samp{s} packets. While @value{GDBN} handles the request for a system call, 37410the target is stopped to allow deterministic access to the target's 37411memory. Therefore File-I/O is not interruptible by target signals. On 37412the other hand, it is possible to interrupt File-I/O by a user interrupt 37413(@samp{Ctrl-C}) within @value{GDBN}. 37414 37415The target's request to perform a host system call does not finish 37416the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means, 37417after finishing the system call, the target returns to continuing the 37418previous activity (continue, step). No additional continue or step 37419request from @value{GDBN} is required. 37420 37421@smallexample 37422(@value{GDBP}) continue 37423 <- target requests 'system call X' 37424 target is stopped, @value{GDBN} executes system call 37425 -> @value{GDBN} returns result 37426 ... target continues, @value{GDBN} returns to wait for the target 37427 <- target hits breakpoint and sends a Txx packet 37428@end smallexample 37429 37430The protocol only supports I/O on the console and to regular files on 37431the host file system. Character or block special devices, pipes, 37432named pipes, sockets or any other communication method on the host 37433system are not supported by this protocol. 37434 37435File I/O is not supported in non-stop mode. 37436 37437@node Protocol Basics 37438@subsection Protocol Basics 37439@cindex protocol basics, file-i/o 37440 37441The File-I/O protocol uses the @code{F} packet as the request as well 37442as reply packet. Since a File-I/O system call can only occur when 37443@value{GDBN} is waiting for a response from the continuing or stepping target, 37444the File-I/O request is a reply that @value{GDBN} has to expect as a result 37445of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet. 37446This @code{F} packet contains all information needed to allow @value{GDBN} 37447to call the appropriate host system call: 37448 37449@itemize @bullet 37450@item 37451A unique identifier for the requested system call. 37452 37453@item 37454All parameters to the system call. Pointers are given as addresses 37455in the target memory address space. Pointers to strings are given as 37456pointer/length pair. Numerical values are given as they are. 37457Numerical control flags are given in a protocol-specific representation. 37458 37459@end itemize 37460 37461At this point, @value{GDBN} has to perform the following actions. 37462 37463@itemize @bullet 37464@item 37465If the parameters include pointer values to data needed as input to a 37466system call, @value{GDBN} requests this data from the target with a 37467standard @code{m} packet request. This additional communication has to be 37468expected by the target implementation and is handled as any other @code{m} 37469packet. 37470 37471@item 37472@value{GDBN} translates all value from protocol representation to host 37473representation as needed. Datatypes are coerced into the host types. 37474 37475@item 37476@value{GDBN} calls the system call. 37477 37478@item 37479It then coerces datatypes back to protocol representation. 37480 37481@item 37482If the system call is expected to return data in buffer space specified 37483by pointer parameters to the call, the data is transmitted to the 37484target using a @code{M} or @code{X} packet. This packet has to be expected 37485by the target implementation and is handled as any other @code{M} or @code{X} 37486packet. 37487 37488@end itemize 37489 37490Eventually @value{GDBN} replies with another @code{F} packet which contains all 37491necessary information for the target to continue. This at least contains 37492 37493@itemize @bullet 37494@item 37495Return value. 37496 37497@item 37498@code{errno}, if has been changed by the system call. 37499 37500@item 37501``Ctrl-C'' flag. 37502 37503@end itemize 37504 37505After having done the needed type and value coercion, the target continues 37506the latest continue or step action. 37507 37508@node The F Request Packet 37509@subsection The @code{F} Request Packet 37510@cindex file-i/o request packet 37511@cindex @code{F} request packet 37512 37513The @code{F} request packet has the following format: 37514 37515@table @samp 37516@item F@var{call-id},@var{parameter@dots{}} 37517 37518@var{call-id} is the identifier to indicate the host system call to be called. 37519This is just the name of the function. 37520 37521@var{parameter@dots{}} are the parameters to the system call. 37522Parameters are hexadecimal integer values, either the actual values in case 37523of scalar datatypes, pointers to target buffer space in case of compound 37524datatypes and unspecified memory areas, or pointer/length pairs in case 37525of string parameters. These are appended to the @var{call-id} as a 37526comma-delimited list. All values are transmitted in ASCII 37527string representation, pointer/length pairs separated by a slash. 37528 37529@end table 37530 37531 37532 37533@node The F Reply Packet 37534@subsection The @code{F} Reply Packet 37535@cindex file-i/o reply packet 37536@cindex @code{F} reply packet 37537 37538The @code{F} reply packet has the following format: 37539 37540@table @samp 37541 37542@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment} 37543 37544@var{retcode} is the return code of the system call as hexadecimal value. 37545 37546@var{errno} is the @code{errno} set by the call, in protocol-specific 37547representation. 37548This parameter can be omitted if the call was successful. 37549 37550@var{Ctrl-C flag} is only sent if the user requested a break. In this 37551case, @var{errno} must be sent as well, even if the call was successful. 37552The @var{Ctrl-C flag} itself consists of the character @samp{C}: 37553 37554@smallexample 37555F0,0,C 37556@end smallexample 37557 37558@noindent 37559or, if the call was interrupted before the host call has been performed: 37560 37561@smallexample 37562F-1,4,C 37563@end smallexample 37564 37565@noindent 37566assuming 4 is the protocol-specific representation of @code{EINTR}. 37567 37568@end table 37569 37570 37571@node The Ctrl-C Message 37572@subsection The @samp{Ctrl-C} Message 37573@cindex ctrl-c message, in file-i/o protocol 37574 37575If the @samp{Ctrl-C} flag is set in the @value{GDBN} 37576reply packet (@pxref{The F Reply Packet}), 37577the target should behave as if it had 37578gotten a break message. The meaning for the target is ``system call 37579interrupted by @code{SIGINT}''. Consequentially, the target should actually stop 37580(as with a break message) and return to @value{GDBN} with a @code{T02} 37581packet. 37582 37583It's important for the target to know in which 37584state the system call was interrupted. There are two possible cases: 37585 37586@itemize @bullet 37587@item 37588The system call hasn't been performed on the host yet. 37589 37590@item 37591The system call on the host has been finished. 37592 37593@end itemize 37594 37595These two states can be distinguished by the target by the value of the 37596returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system 37597call hasn't been performed. This is equivalent to the @code{EINTR} handling 37598on POSIX systems. In any other case, the target may presume that the 37599system call has been finished --- successfully or not --- and should behave 37600as if the break message arrived right after the system call. 37601 37602@value{GDBN} must behave reliably. If the system call has not been called 37603yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as 37604@code{errno} in the packet. If the system call on the host has been finished 37605before the user requests a break, the full action must be finished by 37606@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary. 37607The @code{F} packet may only be sent when either nothing has happened 37608or the full action has been completed. 37609 37610@node Console I/O 37611@subsection Console I/O 37612@cindex console i/o as part of file-i/o 37613 37614By default and if not explicitly closed by the target system, the file 37615descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output 37616on the @value{GDBN} console is handled as any other file output operation 37617(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled 37618by @value{GDBN} so that after the target read request from file descriptor 376190 all following typing is buffered until either one of the following 37620conditions is met: 37621 37622@itemize @bullet 37623@item 37624The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the 37625@code{read} 37626system call is treated as finished. 37627 37628@item 37629The user presses @key{RET}. This is treated as end of input with a trailing 37630newline. 37631 37632@item 37633The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing 37634character (neither newline nor @samp{Ctrl-D}) is appended to the input. 37635 37636@end itemize 37637 37638If the user has typed more characters than fit in the buffer given to 37639the @code{read} call, the trailing characters are buffered in @value{GDBN} until 37640either another @code{read(0, @dots{})} is requested by the target, or debugging 37641is stopped at the user's request. 37642 37643 37644@node List of Supported Calls 37645@subsection List of Supported Calls 37646@cindex list of supported file-i/o calls 37647 37648@menu 37649* open:: 37650* close:: 37651* read:: 37652* write:: 37653* lseek:: 37654* rename:: 37655* unlink:: 37656* stat/fstat:: 37657* gettimeofday:: 37658* isatty:: 37659* system:: 37660@end menu 37661 37662@node open 37663@unnumberedsubsubsec open 37664@cindex open, file-i/o system call 37665 37666@table @asis 37667@item Synopsis: 37668@smallexample 37669int open(const char *pathname, int flags); 37670int open(const char *pathname, int flags, mode_t mode); 37671@end smallexample 37672 37673@item Request: 37674@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}} 37675 37676@noindent 37677@var{flags} is the bitwise @code{OR} of the following values: 37678 37679@table @code 37680@item O_CREAT 37681If the file does not exist it will be created. The host 37682rules apply as far as file ownership and time stamps 37683are concerned. 37684 37685@item O_EXCL 37686When used with @code{O_CREAT}, if the file already exists it is 37687an error and open() fails. 37688 37689@item O_TRUNC 37690If the file already exists and the open mode allows 37691writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be 37692truncated to zero length. 37693 37694@item O_APPEND 37695The file is opened in append mode. 37696 37697@item O_RDONLY 37698The file is opened for reading only. 37699 37700@item O_WRONLY 37701The file is opened for writing only. 37702 37703@item O_RDWR 37704The file is opened for reading and writing. 37705@end table 37706 37707@noindent 37708Other bits are silently ignored. 37709 37710 37711@noindent 37712@var{mode} is the bitwise @code{OR} of the following values: 37713 37714@table @code 37715@item S_IRUSR 37716User has read permission. 37717 37718@item S_IWUSR 37719User has write permission. 37720 37721@item S_IRGRP 37722Group has read permission. 37723 37724@item S_IWGRP 37725Group has write permission. 37726 37727@item S_IROTH 37728Others have read permission. 37729 37730@item S_IWOTH 37731Others have write permission. 37732@end table 37733 37734@noindent 37735Other bits are silently ignored. 37736 37737 37738@item Return value: 37739@code{open} returns the new file descriptor or -1 if an error 37740occurred. 37741 37742@item Errors: 37743 37744@table @code 37745@item EEXIST 37746@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used. 37747 37748@item EISDIR 37749@var{pathname} refers to a directory. 37750 37751@item EACCES 37752The requested access is not allowed. 37753 37754@item ENAMETOOLONG 37755@var{pathname} was too long. 37756 37757@item ENOENT 37758A directory component in @var{pathname} does not exist. 37759 37760@item ENODEV 37761@var{pathname} refers to a device, pipe, named pipe or socket. 37762 37763@item EROFS 37764@var{pathname} refers to a file on a read-only filesystem and 37765write access was requested. 37766 37767@item EFAULT 37768@var{pathname} is an invalid pointer value. 37769 37770@item ENOSPC 37771No space on device to create the file. 37772 37773@item EMFILE 37774The process already has the maximum number of files open. 37775 37776@item ENFILE 37777The limit on the total number of files open on the system 37778has been reached. 37779 37780@item EINTR 37781The call was interrupted by the user. 37782@end table 37783 37784@end table 37785 37786@node close 37787@unnumberedsubsubsec close 37788@cindex close, file-i/o system call 37789 37790@table @asis 37791@item Synopsis: 37792@smallexample 37793int close(int fd); 37794@end smallexample 37795 37796@item Request: 37797@samp{Fclose,@var{fd}} 37798 37799@item Return value: 37800@code{close} returns zero on success, or -1 if an error occurred. 37801 37802@item Errors: 37803 37804@table @code 37805@item EBADF 37806@var{fd} isn't a valid open file descriptor. 37807 37808@item EINTR 37809The call was interrupted by the user. 37810@end table 37811 37812@end table 37813 37814@node read 37815@unnumberedsubsubsec read 37816@cindex read, file-i/o system call 37817 37818@table @asis 37819@item Synopsis: 37820@smallexample 37821int read(int fd, void *buf, unsigned int count); 37822@end smallexample 37823 37824@item Request: 37825@samp{Fread,@var{fd},@var{bufptr},@var{count}} 37826 37827@item Return value: 37828On success, the number of bytes read is returned. 37829Zero indicates end of file. If count is zero, read 37830returns zero as well. On error, -1 is returned. 37831 37832@item Errors: 37833 37834@table @code 37835@item EBADF 37836@var{fd} is not a valid file descriptor or is not open for 37837reading. 37838 37839@item EFAULT 37840@var{bufptr} is an invalid pointer value. 37841 37842@item EINTR 37843The call was interrupted by the user. 37844@end table 37845 37846@end table 37847 37848@node write 37849@unnumberedsubsubsec write 37850@cindex write, file-i/o system call 37851 37852@table @asis 37853@item Synopsis: 37854@smallexample 37855int write(int fd, const void *buf, unsigned int count); 37856@end smallexample 37857 37858@item Request: 37859@samp{Fwrite,@var{fd},@var{bufptr},@var{count}} 37860 37861@item Return value: 37862On success, the number of bytes written are returned. 37863Zero indicates nothing was written. On error, -1 37864is returned. 37865 37866@item Errors: 37867 37868@table @code 37869@item EBADF 37870@var{fd} is not a valid file descriptor or is not open for 37871writing. 37872 37873@item EFAULT 37874@var{bufptr} is an invalid pointer value. 37875 37876@item EFBIG 37877An attempt was made to write a file that exceeds the 37878host-specific maximum file size allowed. 37879 37880@item ENOSPC 37881No space on device to write the data. 37882 37883@item EINTR 37884The call was interrupted by the user. 37885@end table 37886 37887@end table 37888 37889@node lseek 37890@unnumberedsubsubsec lseek 37891@cindex lseek, file-i/o system call 37892 37893@table @asis 37894@item Synopsis: 37895@smallexample 37896long lseek (int fd, long offset, int flag); 37897@end smallexample 37898 37899@item Request: 37900@samp{Flseek,@var{fd},@var{offset},@var{flag}} 37901 37902@var{flag} is one of: 37903 37904@table @code 37905@item SEEK_SET 37906The offset is set to @var{offset} bytes. 37907 37908@item SEEK_CUR 37909The offset is set to its current location plus @var{offset} 37910bytes. 37911 37912@item SEEK_END 37913The offset is set to the size of the file plus @var{offset} 37914bytes. 37915@end table 37916 37917@item Return value: 37918On success, the resulting unsigned offset in bytes from 37919the beginning of the file is returned. Otherwise, a 37920value of -1 is returned. 37921 37922@item Errors: 37923 37924@table @code 37925@item EBADF 37926@var{fd} is not a valid open file descriptor. 37927 37928@item ESPIPE 37929@var{fd} is associated with the @value{GDBN} console. 37930 37931@item EINVAL 37932@var{flag} is not a proper value. 37933 37934@item EINTR 37935The call was interrupted by the user. 37936@end table 37937 37938@end table 37939 37940@node rename 37941@unnumberedsubsubsec rename 37942@cindex rename, file-i/o system call 37943 37944@table @asis 37945@item Synopsis: 37946@smallexample 37947int rename(const char *oldpath, const char *newpath); 37948@end smallexample 37949 37950@item Request: 37951@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}} 37952 37953@item Return value: 37954On success, zero is returned. On error, -1 is returned. 37955 37956@item Errors: 37957 37958@table @code 37959@item EISDIR 37960@var{newpath} is an existing directory, but @var{oldpath} is not a 37961directory. 37962 37963@item EEXIST 37964@var{newpath} is a non-empty directory. 37965 37966@item EBUSY 37967@var{oldpath} or @var{newpath} is a directory that is in use by some 37968process. 37969 37970@item EINVAL 37971An attempt was made to make a directory a subdirectory 37972of itself. 37973 37974@item ENOTDIR 37975A component used as a directory in @var{oldpath} or new 37976path is not a directory. Or @var{oldpath} is a directory 37977and @var{newpath} exists but is not a directory. 37978 37979@item EFAULT 37980@var{oldpathptr} or @var{newpathptr} are invalid pointer values. 37981 37982@item EACCES 37983No access to the file or the path of the file. 37984 37985@item ENAMETOOLONG 37986 37987@var{oldpath} or @var{newpath} was too long. 37988 37989@item ENOENT 37990A directory component in @var{oldpath} or @var{newpath} does not exist. 37991 37992@item EROFS 37993The file is on a read-only filesystem. 37994 37995@item ENOSPC 37996The device containing the file has no room for the new 37997directory entry. 37998 37999@item EINTR 38000The call was interrupted by the user. 38001@end table 38002 38003@end table 38004 38005@node unlink 38006@unnumberedsubsubsec unlink 38007@cindex unlink, file-i/o system call 38008 38009@table @asis 38010@item Synopsis: 38011@smallexample 38012int unlink(const char *pathname); 38013@end smallexample 38014 38015@item Request: 38016@samp{Funlink,@var{pathnameptr}/@var{len}} 38017 38018@item Return value: 38019On success, zero is returned. On error, -1 is returned. 38020 38021@item Errors: 38022 38023@table @code 38024@item EACCES 38025No access to the file or the path of the file. 38026 38027@item EPERM 38028The system does not allow unlinking of directories. 38029 38030@item EBUSY 38031The file @var{pathname} cannot be unlinked because it's 38032being used by another process. 38033 38034@item EFAULT 38035@var{pathnameptr} is an invalid pointer value. 38036 38037@item ENAMETOOLONG 38038@var{pathname} was too long. 38039 38040@item ENOENT 38041A directory component in @var{pathname} does not exist. 38042 38043@item ENOTDIR 38044A component of the path is not a directory. 38045 38046@item EROFS 38047The file is on a read-only filesystem. 38048 38049@item EINTR 38050The call was interrupted by the user. 38051@end table 38052 38053@end table 38054 38055@node stat/fstat 38056@unnumberedsubsubsec stat/fstat 38057@cindex fstat, file-i/o system call 38058@cindex stat, file-i/o system call 38059 38060@table @asis 38061@item Synopsis: 38062@smallexample 38063int stat(const char *pathname, struct stat *buf); 38064int fstat(int fd, struct stat *buf); 38065@end smallexample 38066 38067@item Request: 38068@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@* 38069@samp{Ffstat,@var{fd},@var{bufptr}} 38070 38071@item Return value: 38072On success, zero is returned. On error, -1 is returned. 38073 38074@item Errors: 38075 38076@table @code 38077@item EBADF 38078@var{fd} is not a valid open file. 38079 38080@item ENOENT 38081A directory component in @var{pathname} does not exist or the 38082path is an empty string. 38083 38084@item ENOTDIR 38085A component of the path is not a directory. 38086 38087@item EFAULT 38088@var{pathnameptr} is an invalid pointer value. 38089 38090@item EACCES 38091No access to the file or the path of the file. 38092 38093@item ENAMETOOLONG 38094@var{pathname} was too long. 38095 38096@item EINTR 38097The call was interrupted by the user. 38098@end table 38099 38100@end table 38101 38102@node gettimeofday 38103@unnumberedsubsubsec gettimeofday 38104@cindex gettimeofday, file-i/o system call 38105 38106@table @asis 38107@item Synopsis: 38108@smallexample 38109int gettimeofday(struct timeval *tv, void *tz); 38110@end smallexample 38111 38112@item Request: 38113@samp{Fgettimeofday,@var{tvptr},@var{tzptr}} 38114 38115@item Return value: 38116On success, 0 is returned, -1 otherwise. 38117 38118@item Errors: 38119 38120@table @code 38121@item EINVAL 38122@var{tz} is a non-NULL pointer. 38123 38124@item EFAULT 38125@var{tvptr} and/or @var{tzptr} is an invalid pointer value. 38126@end table 38127 38128@end table 38129 38130@node isatty 38131@unnumberedsubsubsec isatty 38132@cindex isatty, file-i/o system call 38133 38134@table @asis 38135@item Synopsis: 38136@smallexample 38137int isatty(int fd); 38138@end smallexample 38139 38140@item Request: 38141@samp{Fisatty,@var{fd}} 38142 38143@item Return value: 38144Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise. 38145 38146@item Errors: 38147 38148@table @code 38149@item EINTR 38150The call was interrupted by the user. 38151@end table 38152 38153@end table 38154 38155Note that the @code{isatty} call is treated as a special case: it returns 381561 to the target if the file descriptor is attached 38157to the @value{GDBN} console, 0 otherwise. Implementing through system calls 38158would require implementing @code{ioctl} and would be more complex than 38159needed. 38160 38161 38162@node system 38163@unnumberedsubsubsec system 38164@cindex system, file-i/o system call 38165 38166@table @asis 38167@item Synopsis: 38168@smallexample 38169int system(const char *command); 38170@end smallexample 38171 38172@item Request: 38173@samp{Fsystem,@var{commandptr}/@var{len}} 38174 38175@item Return value: 38176If @var{len} is zero, the return value indicates whether a shell is 38177available. A zero return value indicates a shell is not available. 38178For non-zero @var{len}, the value returned is -1 on error and the 38179return status of the command otherwise. Only the exit status of the 38180command is returned, which is extracted from the host's @code{system} 38181return value by calling @code{WEXITSTATUS(retval)}. In case 38182@file{/bin/sh} could not be executed, 127 is returned. 38183 38184@item Errors: 38185 38186@table @code 38187@item EINTR 38188The call was interrupted by the user. 38189@end table 38190 38191@end table 38192 38193@value{GDBN} takes over the full task of calling the necessary host calls 38194to perform the @code{system} call. The return value of @code{system} on 38195the host is simplified before it's returned 38196to the target. Any termination signal information from the child process 38197is discarded, and the return value consists 38198entirely of the exit status of the called command. 38199 38200Due to security concerns, the @code{system} call is by default refused 38201by @value{GDBN}. The user has to allow this call explicitly with the 38202@code{set remote system-call-allowed 1} command. 38203 38204@table @code 38205@item set remote system-call-allowed 38206@kindex set remote system-call-allowed 38207Control whether to allow the @code{system} calls in the File I/O 38208protocol for the remote target. The default is zero (disabled). 38209 38210@item show remote system-call-allowed 38211@kindex show remote system-call-allowed 38212Show whether the @code{system} calls are allowed in the File I/O 38213protocol. 38214@end table 38215 38216@node Protocol-specific Representation of Datatypes 38217@subsection Protocol-specific Representation of Datatypes 38218@cindex protocol-specific representation of datatypes, in file-i/o protocol 38219 38220@menu 38221* Integral Datatypes:: 38222* Pointer Values:: 38223* Memory Transfer:: 38224* struct stat:: 38225* struct timeval:: 38226@end menu 38227 38228@node Integral Datatypes 38229@unnumberedsubsubsec Integral Datatypes 38230@cindex integral datatypes, in file-i/o protocol 38231 38232The integral datatypes used in the system calls are @code{int}, 38233@code{unsigned int}, @code{long}, @code{unsigned long}, 38234@code{mode_t}, and @code{time_t}. 38235 38236@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are 38237implemented as 32 bit values in this protocol. 38238 38239@code{long} and @code{unsigned long} are implemented as 64 bit types. 38240 38241@xref{Limits}, for corresponding MIN and MAX values (similar to those 38242in @file{limits.h}) to allow range checking on host and target. 38243 38244@code{time_t} datatypes are defined as seconds since the Epoch. 38245 38246All integral datatypes transferred as part of a memory read or write of a 38247structured datatype e.g.@: a @code{struct stat} have to be given in big endian 38248byte order. 38249 38250@node Pointer Values 38251@unnumberedsubsubsec Pointer Values 38252@cindex pointer values, in file-i/o protocol 38253 38254Pointers to target data are transmitted as they are. An exception 38255is made for pointers to buffers for which the length isn't 38256transmitted as part of the function call, namely strings. Strings 38257are transmitted as a pointer/length pair, both as hex values, e.g.@: 38258 38259@smallexample 38260@code{1aaf/12} 38261@end smallexample 38262 38263@noindent 38264which is a pointer to data of length 18 bytes at position 0x1aaf. 38265The length is defined as the full string length in bytes, including 38266the trailing null byte. For example, the string @code{"hello world"} 38267at address 0x123456 is transmitted as 38268 38269@smallexample 38270@code{123456/d} 38271@end smallexample 38272 38273@node Memory Transfer 38274@unnumberedsubsubsec Memory Transfer 38275@cindex memory transfer, in file-i/o protocol 38276 38277Structured data which is transferred using a memory read or write (for 38278example, a @code{struct stat}) is expected to be in a protocol-specific format 38279with all scalar multibyte datatypes being big endian. Translation to 38280this representation needs to be done both by the target before the @code{F} 38281packet is sent, and by @value{GDBN} before 38282it transfers memory to the target. Transferred pointers to structured 38283data should point to the already-coerced data at any time. 38284 38285 38286@node struct stat 38287@unnumberedsubsubsec struct stat 38288@cindex struct stat, in file-i/o protocol 38289 38290The buffer of type @code{struct stat} used by the target and @value{GDBN} 38291is defined as follows: 38292 38293@smallexample 38294struct stat @{ 38295 unsigned int st_dev; /* device */ 38296 unsigned int st_ino; /* inode */ 38297 mode_t st_mode; /* protection */ 38298 unsigned int st_nlink; /* number of hard links */ 38299 unsigned int st_uid; /* user ID of owner */ 38300 unsigned int st_gid; /* group ID of owner */ 38301 unsigned int st_rdev; /* device type (if inode device) */ 38302 unsigned long st_size; /* total size, in bytes */ 38303 unsigned long st_blksize; /* blocksize for filesystem I/O */ 38304 unsigned long st_blocks; /* number of blocks allocated */ 38305 time_t st_atime; /* time of last access */ 38306 time_t st_mtime; /* time of last modification */ 38307 time_t st_ctime; /* time of last change */ 38308@}; 38309@end smallexample 38310 38311The integral datatypes conform to the definitions given in the 38312appropriate section (see @ref{Integral Datatypes}, for details) so this 38313structure is of size 64 bytes. 38314 38315The values of several fields have a restricted meaning and/or 38316range of values. 38317 38318@table @code 38319 38320@item st_dev 38321A value of 0 represents a file, 1 the console. 38322 38323@item st_ino 38324No valid meaning for the target. Transmitted unchanged. 38325 38326@item st_mode 38327Valid mode bits are described in @ref{Constants}. Any other 38328bits have currently no meaning for the target. 38329 38330@item st_uid 38331@itemx st_gid 38332@itemx st_rdev 38333No valid meaning for the target. Transmitted unchanged. 38334 38335@item st_atime 38336@itemx st_mtime 38337@itemx st_ctime 38338These values have a host and file system dependent 38339accuracy. Especially on Windows hosts, the file system may not 38340support exact timing values. 38341@end table 38342 38343The target gets a @code{struct stat} of the above representation and is 38344responsible for coercing it to the target representation before 38345continuing. 38346 38347Note that due to size differences between the host, target, and protocol 38348representations of @code{struct stat} members, these members could eventually 38349get truncated on the target. 38350 38351@node struct timeval 38352@unnumberedsubsubsec struct timeval 38353@cindex struct timeval, in file-i/o protocol 38354 38355The buffer of type @code{struct timeval} used by the File-I/O protocol 38356is defined as follows: 38357 38358@smallexample 38359struct timeval @{ 38360 time_t tv_sec; /* second */ 38361 long tv_usec; /* microsecond */ 38362@}; 38363@end smallexample 38364 38365The integral datatypes conform to the definitions given in the 38366appropriate section (see @ref{Integral Datatypes}, for details) so this 38367structure is of size 8 bytes. 38368 38369@node Constants 38370@subsection Constants 38371@cindex constants, in file-i/o protocol 38372 38373The following values are used for the constants inside of the 38374protocol. @value{GDBN} and target are responsible for translating these 38375values before and after the call as needed. 38376 38377@menu 38378* Open Flags:: 38379* mode_t Values:: 38380* Errno Values:: 38381* Lseek Flags:: 38382* Limits:: 38383@end menu 38384 38385@node Open Flags 38386@unnumberedsubsubsec Open Flags 38387@cindex open flags, in file-i/o protocol 38388 38389All values are given in hexadecimal representation. 38390 38391@smallexample 38392 O_RDONLY 0x0 38393 O_WRONLY 0x1 38394 O_RDWR 0x2 38395 O_APPEND 0x8 38396 O_CREAT 0x200 38397 O_TRUNC 0x400 38398 O_EXCL 0x800 38399@end smallexample 38400 38401@node mode_t Values 38402@unnumberedsubsubsec mode_t Values 38403@cindex mode_t values, in file-i/o protocol 38404 38405All values are given in octal representation. 38406 38407@smallexample 38408 S_IFREG 0100000 38409 S_IFDIR 040000 38410 S_IRUSR 0400 38411 S_IWUSR 0200 38412 S_IXUSR 0100 38413 S_IRGRP 040 38414 S_IWGRP 020 38415 S_IXGRP 010 38416 S_IROTH 04 38417 S_IWOTH 02 38418 S_IXOTH 01 38419@end smallexample 38420 38421@node Errno Values 38422@unnumberedsubsubsec Errno Values 38423@cindex errno values, in file-i/o protocol 38424 38425All values are given in decimal representation. 38426 38427@smallexample 38428 EPERM 1 38429 ENOENT 2 38430 EINTR 4 38431 EBADF 9 38432 EACCES 13 38433 EFAULT 14 38434 EBUSY 16 38435 EEXIST 17 38436 ENODEV 19 38437 ENOTDIR 20 38438 EISDIR 21 38439 EINVAL 22 38440 ENFILE 23 38441 EMFILE 24 38442 EFBIG 27 38443 ENOSPC 28 38444 ESPIPE 29 38445 EROFS 30 38446 ENAMETOOLONG 91 38447 EUNKNOWN 9999 38448@end smallexample 38449 38450 @code{EUNKNOWN} is used as a fallback error value if a host system returns 38451 any error value not in the list of supported error numbers. 38452 38453@node Lseek Flags 38454@unnumberedsubsubsec Lseek Flags 38455@cindex lseek flags, in file-i/o protocol 38456 38457@smallexample 38458 SEEK_SET 0 38459 SEEK_CUR 1 38460 SEEK_END 2 38461@end smallexample 38462 38463@node Limits 38464@unnumberedsubsubsec Limits 38465@cindex limits, in file-i/o protocol 38466 38467All values are given in decimal representation. 38468 38469@smallexample 38470 INT_MIN -2147483648 38471 INT_MAX 2147483647 38472 UINT_MAX 4294967295 38473 LONG_MIN -9223372036854775808 38474 LONG_MAX 9223372036854775807 38475 ULONG_MAX 18446744073709551615 38476@end smallexample 38477 38478@node File-I/O Examples 38479@subsection File-I/O Examples 38480@cindex file-i/o examples 38481 38482Example sequence of a write call, file descriptor 3, buffer is at target 38483address 0x1234, 6 bytes should be written: 38484 38485@smallexample 38486<- @code{Fwrite,3,1234,6} 38487@emph{request memory read from target} 38488-> @code{m1234,6} 38489<- XXXXXX 38490@emph{return "6 bytes written"} 38491-> @code{F6} 38492@end smallexample 38493 38494Example sequence of a read call, file descriptor 3, buffer is at target 38495address 0x1234, 6 bytes should be read: 38496 38497@smallexample 38498<- @code{Fread,3,1234,6} 38499@emph{request memory write to target} 38500-> @code{X1234,6:XXXXXX} 38501@emph{return "6 bytes read"} 38502-> @code{F6} 38503@end smallexample 38504 38505Example sequence of a read call, call fails on the host due to invalid 38506file descriptor (@code{EBADF}): 38507 38508@smallexample 38509<- @code{Fread,3,1234,6} 38510-> @code{F-1,9} 38511@end smallexample 38512 38513Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on 38514host is called: 38515 38516@smallexample 38517<- @code{Fread,3,1234,6} 38518-> @code{F-1,4,C} 38519<- @code{T02} 38520@end smallexample 38521 38522Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on 38523host is called: 38524 38525@smallexample 38526<- @code{Fread,3,1234,6} 38527-> @code{X1234,6:XXXXXX} 38528<- @code{T02} 38529@end smallexample 38530 38531@node Library List Format 38532@section Library List Format 38533@cindex library list format, remote protocol 38534 38535On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the 38536same process as your application to manage libraries. In this case, 38537@value{GDBN} can use the loader's symbol table and normal memory 38538operations to maintain a list of shared libraries. On other 38539platforms, the operating system manages loaded libraries. 38540@value{GDBN} can not retrieve the list of currently loaded libraries 38541through memory operations, so it uses the @samp{qXfer:libraries:read} 38542packet (@pxref{qXfer library list read}) instead. The remote stub 38543queries the target's operating system and reports which libraries 38544are loaded. 38545 38546The @samp{qXfer:libraries:read} packet returns an XML document which 38547lists loaded libraries and their offsets. Each library has an 38548associated name and one or more segment or section base addresses, 38549which report where the library was loaded in memory. 38550 38551For the common case of libraries that are fully linked binaries, the 38552library should have a list of segments. If the target supports 38553dynamic linking of a relocatable object file, its library XML element 38554should instead include a list of allocated sections. The segment or 38555section bases are start addresses, not relocation offsets; they do not 38556depend on the library's link-time base addresses. 38557 38558@value{GDBN} must be linked with the Expat library to support XML 38559library lists. @xref{Expat}. 38560 38561A simple memory map, with one loaded library relocated by a single 38562offset, looks like this: 38563 38564@smallexample 38565<library-list> 38566 <library name="/lib/libc.so.6"> 38567 <segment address="0x10000000"/> 38568 </library> 38569</library-list> 38570@end smallexample 38571 38572Another simple memory map, with one loaded library with three 38573allocated sections (.text, .data, .bss), looks like this: 38574 38575@smallexample 38576<library-list> 38577 <library name="sharedlib.o"> 38578 <section address="0x10000000"/> 38579 <section address="0x20000000"/> 38580 <section address="0x30000000"/> 38581 </library> 38582</library-list> 38583@end smallexample 38584 38585The format of a library list is described by this DTD: 38586 38587@smallexample 38588<!-- library-list: Root element with versioning --> 38589<!ELEMENT library-list (library)*> 38590<!ATTLIST library-list version CDATA #FIXED "1.0"> 38591<!ELEMENT library (segment*, section*)> 38592<!ATTLIST library name CDATA #REQUIRED> 38593<!ELEMENT segment EMPTY> 38594<!ATTLIST segment address CDATA #REQUIRED> 38595<!ELEMENT section EMPTY> 38596<!ATTLIST section address CDATA #REQUIRED> 38597@end smallexample 38598 38599In addition, segments and section descriptors cannot be mixed within a 38600single library element, and you must supply at least one segment or 38601section for each library. 38602 38603@node Library List Format for SVR4 Targets 38604@section Library List Format for SVR4 Targets 38605@cindex library list format, remote protocol 38606 38607On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader 38608(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of 38609shared libraries. Still a special library list provided by this packet is 38610more efficient for the @value{GDBN} remote protocol. 38611 38612The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists 38613loaded libraries and their SVR4 linker parameters. For each library on SVR4 38614target, the following parameters are reported: 38615 38616@itemize @minus 38617@item 38618@code{name}, the absolute file name from the @code{l_name} field of 38619@code{struct link_map}. 38620@item 38621@code{lm} with address of @code{struct link_map} used for TLS 38622(Thread Local Storage) access. 38623@item 38624@code{l_addr}, the displacement as read from the field @code{l_addr} of 38625@code{struct link_map}. For prelinked libraries this is not an absolute 38626memory address. It is a displacement of absolute memory address against 38627address the file was prelinked to during the library load. 38628@item 38629@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment 38630@end itemize 38631 38632Additionally the single @code{main-lm} attribute specifies address of 38633@code{struct link_map} used for the main executable. This parameter is used 38634for TLS access and its presence is optional. 38635 38636@value{GDBN} must be linked with the Expat library to support XML 38637SVR4 library lists. @xref{Expat}. 38638 38639A simple memory map, with two loaded libraries (which do not use prelink), 38640looks like this: 38641 38642@smallexample 38643<library-list-svr4 version="1.0" main-lm="0xe4f8f8"> 38644 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000" 38645 l_ld="0xe4eefc"/> 38646 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000" 38647 l_ld="0x152350"/> 38648</library-list-svr> 38649@end smallexample 38650 38651The format of an SVR4 library list is described by this DTD: 38652 38653@smallexample 38654<!-- library-list-svr4: Root element with versioning --> 38655<!ELEMENT library-list-svr4 (library)*> 38656<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0"> 38657<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED> 38658<!ELEMENT library EMPTY> 38659<!ATTLIST library name CDATA #REQUIRED> 38660<!ATTLIST library lm CDATA #REQUIRED> 38661<!ATTLIST library l_addr CDATA #REQUIRED> 38662<!ATTLIST library l_ld CDATA #REQUIRED> 38663@end smallexample 38664 38665@node Memory Map Format 38666@section Memory Map Format 38667@cindex memory map format 38668 38669To be able to write into flash memory, @value{GDBN} needs to obtain a 38670memory map from the target. This section describes the format of the 38671memory map. 38672 38673The memory map is obtained using the @samp{qXfer:memory-map:read} 38674(@pxref{qXfer memory map read}) packet and is an XML document that 38675lists memory regions. 38676 38677@value{GDBN} must be linked with the Expat library to support XML 38678memory maps. @xref{Expat}. 38679 38680The top-level structure of the document is shown below: 38681 38682@smallexample 38683<?xml version="1.0"?> 38684<!DOCTYPE memory-map 38685 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 38686 "http://sourceware.org/gdb/gdb-memory-map.dtd"> 38687<memory-map> 38688 region... 38689</memory-map> 38690@end smallexample 38691 38692Each region can be either: 38693 38694@itemize 38695 38696@item 38697A region of RAM starting at @var{addr} and extending for @var{length} 38698bytes from there: 38699 38700@smallexample 38701<memory type="ram" start="@var{addr}" length="@var{length}"/> 38702@end smallexample 38703 38704 38705@item 38706A region of read-only memory: 38707 38708@smallexample 38709<memory type="rom" start="@var{addr}" length="@var{length}"/> 38710@end smallexample 38711 38712 38713@item 38714A region of flash memory, with erasure blocks @var{blocksize} 38715bytes in length: 38716 38717@smallexample 38718<memory type="flash" start="@var{addr}" length="@var{length}"> 38719 <property name="blocksize">@var{blocksize}</property> 38720</memory> 38721@end smallexample 38722 38723@end itemize 38724 38725Regions must not overlap. @value{GDBN} assumes that areas of memory not covered 38726by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X} 38727packets to write to addresses in such ranges. 38728 38729The formal DTD for memory map format is given below: 38730 38731@smallexample 38732<!-- ................................................... --> 38733<!-- Memory Map XML DTD ................................ --> 38734<!-- File: memory-map.dtd .............................. --> 38735<!-- .................................... .............. --> 38736<!-- memory-map.dtd --> 38737<!-- memory-map: Root element with versioning --> 38738<!ELEMENT memory-map (memory | property)> 38739<!ATTLIST memory-map version CDATA #FIXED "1.0.0"> 38740<!ELEMENT memory (property)> 38741<!-- memory: Specifies a memory region, 38742 and its type, or device. --> 38743<!ATTLIST memory type CDATA #REQUIRED 38744 start CDATA #REQUIRED 38745 length CDATA #REQUIRED 38746 device CDATA #IMPLIED> 38747<!-- property: Generic attribute tag --> 38748<!ELEMENT property (#PCDATA | property)*> 38749<!ATTLIST property name CDATA #REQUIRED> 38750@end smallexample 38751 38752@node Thread List Format 38753@section Thread List Format 38754@cindex thread list format 38755 38756To efficiently update the list of threads and their attributes, 38757@value{GDBN} issues the @samp{qXfer:threads:read} packet 38758(@pxref{qXfer threads read}) and obtains the XML document with 38759the following structure: 38760 38761@smallexample 38762<?xml version="1.0"?> 38763<threads> 38764 <thread id="id" core="0"> 38765 ... description ... 38766 </thread> 38767</threads> 38768@end smallexample 38769 38770Each @samp{thread} element must have the @samp{id} attribute that 38771identifies the thread (@pxref{thread-id syntax}). The 38772@samp{core} attribute, if present, specifies which processor core 38773the thread was last executing on. The content of the of @samp{thread} 38774element is interpreted as human-readable auxilliary information. 38775 38776@node Traceframe Info Format 38777@section Traceframe Info Format 38778@cindex traceframe info format 38779 38780To be able to know which objects in the inferior can be examined when 38781inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of 38782memory ranges, registers and trace state variables that have been 38783collected in a traceframe. 38784 38785This list is obtained using the @samp{qXfer:traceframe-info:read} 38786(@pxref{qXfer traceframe info read}) packet and is an XML document. 38787 38788@value{GDBN} must be linked with the Expat library to support XML 38789traceframe info discovery. @xref{Expat}. 38790 38791The top-level structure of the document is shown below: 38792 38793@smallexample 38794<?xml version="1.0"?> 38795<!DOCTYPE traceframe-info 38796 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 38797 "http://sourceware.org/gdb/gdb-traceframe-info.dtd"> 38798<traceframe-info> 38799 block... 38800</traceframe-info> 38801@end smallexample 38802 38803Each traceframe block can be either: 38804 38805@itemize 38806 38807@item 38808A region of collected memory starting at @var{addr} and extending for 38809@var{length} bytes from there: 38810 38811@smallexample 38812<memory start="@var{addr}" length="@var{length}"/> 38813@end smallexample 38814 38815@item 38816A block indicating trace state variable numbered @var{number} has been 38817collected: 38818 38819@smallexample 38820<tvar id="@var{number}"/> 38821@end smallexample 38822 38823@end itemize 38824 38825The formal DTD for the traceframe info format is given below: 38826 38827@smallexample 38828<!ELEMENT traceframe-info (memory | tvar)* > 38829<!ATTLIST traceframe-info version CDATA #FIXED "1.0"> 38830 38831<!ELEMENT memory EMPTY> 38832<!ATTLIST memory start CDATA #REQUIRED 38833 length CDATA #REQUIRED> 38834<!ELEMENT tvar> 38835<!ATTLIST tvar id CDATA #REQUIRED> 38836@end smallexample 38837 38838@node Branch Trace Format 38839@section Branch Trace Format 38840@cindex branch trace format 38841 38842In order to display the branch trace of an inferior thread, 38843@value{GDBN} needs to obtain the list of branches. This list is 38844represented as list of sequential code blocks that are connected via 38845branches. The code in each block has been executed sequentially. 38846 38847This list is obtained using the @samp{qXfer:btrace:read} 38848(@pxref{qXfer btrace read}) packet and is an XML document. 38849 38850@value{GDBN} must be linked with the Expat library to support XML 38851traceframe info discovery. @xref{Expat}. 38852 38853The top-level structure of the document is shown below: 38854 38855@smallexample 38856<?xml version="1.0"?> 38857<!DOCTYPE btrace 38858 PUBLIC "+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN" 38859 "http://sourceware.org/gdb/gdb-btrace.dtd"> 38860<btrace> 38861 block... 38862</btrace> 38863@end smallexample 38864 38865@itemize 38866 38867@item 38868A block of sequentially executed instructions starting at @var{begin} 38869and ending at @var{end}: 38870 38871@smallexample 38872<block begin="@var{begin}" end="@var{end}"/> 38873@end smallexample 38874 38875@end itemize 38876 38877The formal DTD for the branch trace format is given below: 38878 38879@smallexample 38880<!ELEMENT btrace (block)* > 38881<!ATTLIST btrace version CDATA #FIXED "1.0"> 38882 38883<!ELEMENT block EMPTY> 38884<!ATTLIST block begin CDATA #REQUIRED 38885 end CDATA #REQUIRED> 38886@end smallexample 38887 38888@include agentexpr.texi 38889 38890@node Target Descriptions 38891@appendix Target Descriptions 38892@cindex target descriptions 38893 38894One of the challenges of using @value{GDBN} to debug embedded systems 38895is that there are so many minor variants of each processor 38896architecture in use. It is common practice for vendors to start with 38897a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example --- 38898and then make changes to adapt it to a particular market niche. Some 38899architectures have hundreds of variants, available from dozens of 38900vendors. This leads to a number of problems: 38901 38902@itemize @bullet 38903@item 38904With so many different customized processors, it is difficult for 38905the @value{GDBN} maintainers to keep up with the changes. 38906@item 38907Since individual variants may have short lifetimes or limited 38908audiences, it may not be worthwhile to carry information about every 38909variant in the @value{GDBN} source tree. 38910@item 38911When @value{GDBN} does support the architecture of the embedded system 38912at hand, the task of finding the correct architecture name to give the 38913@command{set architecture} command can be error-prone. 38914@end itemize 38915 38916To address these problems, the @value{GDBN} remote protocol allows a 38917target system to not only identify itself to @value{GDBN}, but to 38918actually describe its own features. This lets @value{GDBN} support 38919processor variants it has never seen before --- to the extent that the 38920descriptions are accurate, and that @value{GDBN} understands them. 38921 38922@value{GDBN} must be linked with the Expat library to support XML 38923target descriptions. @xref{Expat}. 38924 38925@menu 38926* Retrieving Descriptions:: How descriptions are fetched from a target. 38927* Target Description Format:: The contents of a target description. 38928* Predefined Target Types:: Standard types available for target 38929 descriptions. 38930* Standard Target Features:: Features @value{GDBN} knows about. 38931@end menu 38932 38933@node Retrieving Descriptions 38934@section Retrieving Descriptions 38935 38936Target descriptions can be read from the target automatically, or 38937specified by the user manually. The default behavior is to read the 38938description from the target. @value{GDBN} retrieves it via the remote 38939protocol using @samp{qXfer} requests (@pxref{General Query Packets, 38940qXfer}). The @var{annex} in the @samp{qXfer} packet will be 38941@samp{target.xml}. The contents of the @samp{target.xml} annex are an 38942XML document, of the form described in @ref{Target Description 38943Format}. 38944 38945Alternatively, you can specify a file to read for the target description. 38946If a file is set, the target will not be queried. The commands to 38947specify a file are: 38948 38949@table @code 38950@cindex set tdesc filename 38951@item set tdesc filename @var{path} 38952Read the target description from @var{path}. 38953 38954@cindex unset tdesc filename 38955@item unset tdesc filename 38956Do not read the XML target description from a file. @value{GDBN} 38957will use the description supplied by the current target. 38958 38959@cindex show tdesc filename 38960@item show tdesc filename 38961Show the filename to read for a target description, if any. 38962@end table 38963 38964 38965@node Target Description Format 38966@section Target Description Format 38967@cindex target descriptions, XML format 38968 38969A target description annex is an @uref{http://www.w3.org/XML/, XML} 38970document which complies with the Document Type Definition provided in 38971the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This 38972means you can use generally available tools like @command{xmllint} to 38973check that your feature descriptions are well-formed and valid. 38974However, to help people unfamiliar with XML write descriptions for 38975their targets, we also describe the grammar here. 38976 38977Target descriptions can identify the architecture of the remote target 38978and (for some architectures) provide information about custom register 38979sets. They can also identify the OS ABI of the remote target. 38980@value{GDBN} can use this information to autoconfigure for your 38981target, or to warn you if you connect to an unsupported target. 38982 38983Here is a simple target description: 38984 38985@smallexample 38986<target version="1.0"> 38987 <architecture>i386:x86-64</architecture> 38988</target> 38989@end smallexample 38990 38991@noindent 38992This minimal description only says that the target uses 38993the x86-64 architecture. 38994 38995A target description has the following overall form, with [ ] marking 38996optional elements and @dots{} marking repeatable elements. The elements 38997are explained further below. 38998 38999@smallexample 39000<?xml version="1.0"?> 39001<!DOCTYPE target SYSTEM "gdb-target.dtd"> 39002<target version="1.0"> 39003 @r{[}@var{architecture}@r{]} 39004 @r{[}@var{osabi}@r{]} 39005 @r{[}@var{compatible}@r{]} 39006 @r{[}@var{feature}@dots{}@r{]} 39007</target> 39008@end smallexample 39009 39010@noindent 39011The description is generally insensitive to whitespace and line 39012breaks, under the usual common-sense rules. The XML version 39013declaration and document type declaration can generally be omitted 39014(@value{GDBN} does not require them), but specifying them may be 39015useful for XML validation tools. The @samp{version} attribute for 39016@samp{<target>} may also be omitted, but we recommend 39017including it; if future versions of @value{GDBN} use an incompatible 39018revision of @file{gdb-target.dtd}, they will detect and report 39019the version mismatch. 39020 39021@subsection Inclusion 39022@cindex target descriptions, inclusion 39023@cindex XInclude 39024@ifnotinfo 39025@cindex <xi:include> 39026@end ifnotinfo 39027 39028It can sometimes be valuable to split a target description up into 39029several different annexes, either for organizational purposes, or to 39030share files between different possible target descriptions. You can 39031divide a description into multiple files by replacing any element of 39032the target description with an inclusion directive of the form: 39033 39034@smallexample 39035<xi:include href="@var{document}"/> 39036@end smallexample 39037 39038@noindent 39039When @value{GDBN} encounters an element of this form, it will retrieve 39040the named XML @var{document}, and replace the inclusion directive with 39041the contents of that document. If the current description was read 39042using @samp{qXfer}, then so will be the included document; 39043@var{document} will be interpreted as the name of an annex. If the 39044current description was read from a file, @value{GDBN} will look for 39045@var{document} as a file in the same directory where it found the 39046original description. 39047 39048@subsection Architecture 39049@cindex <architecture> 39050 39051An @samp{<architecture>} element has this form: 39052 39053@smallexample 39054 <architecture>@var{arch}</architecture> 39055@end smallexample 39056 39057@var{arch} is one of the architectures from the set accepted by 39058@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 39059 39060@subsection OS ABI 39061@cindex @code{<osabi>} 39062 39063This optional field was introduced in @value{GDBN} version 7.0. 39064Previous versions of @value{GDBN} ignore it. 39065 39066An @samp{<osabi>} element has this form: 39067 39068@smallexample 39069 <osabi>@var{abi-name}</osabi> 39070@end smallexample 39071 39072@var{abi-name} is an OS ABI name from the same selection accepted by 39073@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}). 39074 39075@subsection Compatible Architecture 39076@cindex @code{<compatible>} 39077 39078This optional field was introduced in @value{GDBN} version 7.0. 39079Previous versions of @value{GDBN} ignore it. 39080 39081A @samp{<compatible>} element has this form: 39082 39083@smallexample 39084 <compatible>@var{arch}</compatible> 39085@end smallexample 39086 39087@var{arch} is one of the architectures from the set accepted by 39088@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 39089 39090A @samp{<compatible>} element is used to specify that the target 39091is able to run binaries in some other than the main target architecture 39092given by the @samp{<architecture>} element. For example, on the 39093Cell Broadband Engine, the main architecture is @code{powerpc:common} 39094or @code{powerpc:common64}, but the system is able to run binaries 39095in the @code{spu} architecture as well. The way to describe this 39096capability with @samp{<compatible>} is as follows: 39097 39098@smallexample 39099 <architecture>powerpc:common</architecture> 39100 <compatible>spu</compatible> 39101@end smallexample 39102 39103@subsection Features 39104@cindex <feature> 39105 39106Each @samp{<feature>} describes some logical portion of the target 39107system. Features are currently used to describe available CPU 39108registers and the types of their contents. A @samp{<feature>} element 39109has this form: 39110 39111@smallexample 39112<feature name="@var{name}"> 39113 @r{[}@var{type}@dots{}@r{]} 39114 @var{reg}@dots{} 39115</feature> 39116@end smallexample 39117 39118@noindent 39119Each feature's name should be unique within the description. The name 39120of a feature does not matter unless @value{GDBN} has some special 39121knowledge of the contents of that feature; if it does, the feature 39122should have its standard name. @xref{Standard Target Features}. 39123 39124@subsection Types 39125 39126Any register's value is a collection of bits which @value{GDBN} must 39127interpret. The default interpretation is a two's complement integer, 39128but other types can be requested by name in the register description. 39129Some predefined types are provided by @value{GDBN} (@pxref{Predefined 39130Target Types}), and the description can define additional composite types. 39131 39132Each type element must have an @samp{id} attribute, which gives 39133a unique (within the containing @samp{<feature>}) name to the type. 39134Types must be defined before they are used. 39135 39136@cindex <vector> 39137Some targets offer vector registers, which can be treated as arrays 39138of scalar elements. These types are written as @samp{<vector>} elements, 39139specifying the array element type, @var{type}, and the number of elements, 39140@var{count}: 39141 39142@smallexample 39143<vector id="@var{id}" type="@var{type}" count="@var{count}"/> 39144@end smallexample 39145 39146@cindex <union> 39147If a register's value is usefully viewed in multiple ways, define it 39148with a union type containing the useful representations. The 39149@samp{<union>} element contains one or more @samp{<field>} elements, 39150each of which has a @var{name} and a @var{type}: 39151 39152@smallexample 39153<union id="@var{id}"> 39154 <field name="@var{name}" type="@var{type}"/> 39155 @dots{} 39156</union> 39157@end smallexample 39158 39159@cindex <struct> 39160If a register's value is composed from several separate values, define 39161it with a structure type. There are two forms of the @samp{<struct>} 39162element; a @samp{<struct>} element must either contain only bitfields 39163or contain no bitfields. If the structure contains only bitfields, 39164its total size in bytes must be specified, each bitfield must have an 39165explicit start and end, and bitfields are automatically assigned an 39166integer type. The field's @var{start} should be less than or 39167equal to its @var{end}, and zero represents the least significant bit. 39168 39169@smallexample 39170<struct id="@var{id}" size="@var{size}"> 39171 <field name="@var{name}" start="@var{start}" end="@var{end}"/> 39172 @dots{} 39173</struct> 39174@end smallexample 39175 39176If the structure contains no bitfields, then each field has an 39177explicit type, and no implicit padding is added. 39178 39179@smallexample 39180<struct id="@var{id}"> 39181 <field name="@var{name}" type="@var{type}"/> 39182 @dots{} 39183</struct> 39184@end smallexample 39185 39186@cindex <flags> 39187If a register's value is a series of single-bit flags, define it with 39188a flags type. The @samp{<flags>} element has an explicit @var{size} 39189and contains one or more @samp{<field>} elements. Each field has a 39190@var{name}, a @var{start}, and an @var{end}. Only single-bit flags 39191are supported. 39192 39193@smallexample 39194<flags id="@var{id}" size="@var{size}"> 39195 <field name="@var{name}" start="@var{start}" end="@var{end}"/> 39196 @dots{} 39197</flags> 39198@end smallexample 39199 39200@subsection Registers 39201@cindex <reg> 39202 39203Each register is represented as an element with this form: 39204 39205@smallexample 39206<reg name="@var{name}" 39207 bitsize="@var{size}" 39208 @r{[}regnum="@var{num}"@r{]} 39209 @r{[}save-restore="@var{save-restore}"@r{]} 39210 @r{[}type="@var{type}"@r{]} 39211 @r{[}group="@var{group}"@r{]}/> 39212@end smallexample 39213 39214@noindent 39215The components are as follows: 39216 39217@table @var 39218 39219@item name 39220The register's name; it must be unique within the target description. 39221 39222@item bitsize 39223The register's size, in bits. 39224 39225@item regnum 39226The register's number. If omitted, a register's number is one greater 39227than that of the previous register (either in the current feature or in 39228a preceding feature); the first register in the target description 39229defaults to zero. This register number is used to read or write 39230the register; e.g.@: it is used in the remote @code{p} and @code{P} 39231packets, and registers appear in the @code{g} and @code{G} packets 39232in order of increasing register number. 39233 39234@item save-restore 39235Whether the register should be preserved across inferior function 39236calls; this must be either @code{yes} or @code{no}. The default is 39237@code{yes}, which is appropriate for most registers except for 39238some system control registers; this is not related to the target's 39239ABI. 39240 39241@item type 39242The type of the register. It may be a predefined type, a type 39243defined in the current feature, or one of the special types @code{int} 39244and @code{float}. @code{int} is an integer type of the correct size 39245for @var{bitsize}, and @code{float} is a floating point type (in the 39246architecture's normal floating point format) of the correct size for 39247@var{bitsize}. The default is @code{int}. 39248 39249@item group 39250The register group to which this register belongs. It must 39251be either @code{general}, @code{float}, or @code{vector}. If no 39252@var{group} is specified, @value{GDBN} will not display the register 39253in @code{info registers}. 39254 39255@end table 39256 39257@node Predefined Target Types 39258@section Predefined Target Types 39259@cindex target descriptions, predefined types 39260 39261Type definitions in the self-description can build up composite types 39262from basic building blocks, but can not define fundamental types. Instead, 39263standard identifiers are provided by @value{GDBN} for the fundamental 39264types. The currently supported types are: 39265 39266@table @code 39267 39268@item int8 39269@itemx int16 39270@itemx int32 39271@itemx int64 39272@itemx int128 39273Signed integer types holding the specified number of bits. 39274 39275@item uint8 39276@itemx uint16 39277@itemx uint32 39278@itemx uint64 39279@itemx uint128 39280Unsigned integer types holding the specified number of bits. 39281 39282@item code_ptr 39283@itemx data_ptr 39284Pointers to unspecified code and data. The program counter and 39285any dedicated return address register may be marked as code 39286pointers; printing a code pointer converts it into a symbolic 39287address. The stack pointer and any dedicated address registers 39288may be marked as data pointers. 39289 39290@item ieee_single 39291Single precision IEEE floating point. 39292 39293@item ieee_double 39294Double precision IEEE floating point. 39295 39296@item arm_fpa_ext 39297The 12-byte extended precision format used by ARM FPA registers. 39298 39299@item i387_ext 39300The 10-byte extended precision format used by x87 registers. 39301 39302@item i386_eflags 3930332bit @sc{eflags} register used by x86. 39304 39305@item i386_mxcsr 3930632bit @sc{mxcsr} register used by x86. 39307 39308@end table 39309 39310@node Standard Target Features 39311@section Standard Target Features 39312@cindex target descriptions, standard features 39313 39314A target description must contain either no registers or all the 39315target's registers. If the description contains no registers, then 39316@value{GDBN} will assume a default register layout, selected based on 39317the architecture. If the description contains any registers, the 39318default layout will not be used; the standard registers must be 39319described in the target description, in such a way that @value{GDBN} 39320can recognize them. 39321 39322This is accomplished by giving specific names to feature elements 39323which contain standard registers. @value{GDBN} will look for features 39324with those names and verify that they contain the expected registers; 39325if any known feature is missing required registers, or if any required 39326feature is missing, @value{GDBN} will reject the target 39327description. You can add additional registers to any of the 39328standard features --- @value{GDBN} will display them just as if 39329they were added to an unrecognized feature. 39330 39331This section lists the known features and their expected contents. 39332Sample XML documents for these features are included in the 39333@value{GDBN} source tree, in the directory @file{gdb/features}. 39334 39335Names recognized by @value{GDBN} should include the name of the 39336company or organization which selected the name, and the overall 39337architecture to which the feature applies; so e.g.@: the feature 39338containing ARM core registers is named @samp{org.gnu.gdb.arm.core}. 39339 39340The names of registers are not case sensitive for the purpose 39341of recognizing standard features, but @value{GDBN} will only display 39342registers using the capitalization used in the description. 39343 39344@menu 39345* AArch64 Features:: 39346* ARM Features:: 39347* i386 Features:: 39348* MicroBlaze Features:: 39349* MIPS Features:: 39350* M68K Features:: 39351* Nios II Features:: 39352* PowerPC Features:: 39353* S/390 and System z Features:: 39354* TIC6x Features:: 39355@end menu 39356 39357 39358@node AArch64 Features 39359@subsection AArch64 Features 39360@cindex target descriptions, AArch64 features 39361 39362The @samp{org.gnu.gdb.aarch64.core} feature is required for AArch64 39363targets. It should contain registers @samp{x0} through @samp{x30}, 39364@samp{sp}, @samp{pc}, and @samp{cpsr}. 39365 39366The @samp{org.gnu.gdb.aarch64.fpu} feature is optional. If present, 39367it should contain registers @samp{v0} through @samp{v31}, @samp{fpsr}, 39368and @samp{fpcr}. 39369 39370@node ARM Features 39371@subsection ARM Features 39372@cindex target descriptions, ARM features 39373 39374The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile 39375ARM targets. 39376It should contain registers @samp{r0} through @samp{r13}, @samp{sp}, 39377@samp{lr}, @samp{pc}, and @samp{cpsr}. 39378 39379For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core} 39380feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain 39381registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc}, 39382and @samp{xpsr}. 39383 39384The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it 39385should contain registers @samp{f0} through @samp{f7} and @samp{fps}. 39386 39387The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present, 39388it should contain at least registers @samp{wR0} through @samp{wR15} and 39389@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon}, 39390@samp{wCSSF}, and @samp{wCASF} registers are optional. 39391 39392The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it 39393should contain at least registers @samp{d0} through @samp{d15}. If 39394they are present, @samp{d16} through @samp{d31} should also be included. 39395@value{GDBN} will synthesize the single-precision registers from 39396halves of the double-precision registers. 39397 39398The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not 39399need to contain registers; it instructs @value{GDBN} to display the 39400VFP double-precision registers as vectors and to synthesize the 39401quad-precision registers from pairs of double-precision registers. 39402If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also 39403be present and include 32 double-precision registers. 39404 39405@node i386 Features 39406@subsection i386 Features 39407@cindex target descriptions, i386 features 39408 39409The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64 39410targets. It should describe the following registers: 39411 39412@itemize @minus 39413@item 39414@samp{eax} through @samp{edi} plus @samp{eip} for i386 39415@item 39416@samp{rax} through @samp{r15} plus @samp{rip} for amd64 39417@item 39418@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es}, 39419@samp{fs}, @samp{gs} 39420@item 39421@samp{st0} through @samp{st7} 39422@item 39423@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff}, 39424@samp{foseg}, @samp{fooff} and @samp{fop} 39425@end itemize 39426 39427The register sets may be different, depending on the target. 39428 39429The @samp{org.gnu.gdb.i386.sse} feature is optional. It should 39430describe registers: 39431 39432@itemize @minus 39433@item 39434@samp{xmm0} through @samp{xmm7} for i386 39435@item 39436@samp{xmm0} through @samp{xmm15} for amd64 39437@item 39438@samp{mxcsr} 39439@end itemize 39440 39441The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the 39442@samp{org.gnu.gdb.i386.sse} feature. It should 39443describe the upper 128 bits of @sc{ymm} registers: 39444 39445@itemize @minus 39446@item 39447@samp{ymm0h} through @samp{ymm7h} for i386 39448@item 39449@samp{ymm0h} through @samp{ymm15h} for amd64 39450@end itemize 39451 39452The @samp{org.gnu.gdb.i386.mpx} is an optional feature representing Intel(R) 39453Memory Protection Extension (MPX). It should describe the following registers: 39454 39455@itemize @minus 39456@item 39457@samp{bnd0raw} through @samp{bnd3raw} for i386 and amd64. 39458@item 39459@samp{bndcfgu} and @samp{bndstatus} for i386 and amd64. 39460@end itemize 39461 39462The @samp{org.gnu.gdb.i386.linux} feature is optional. It should 39463describe a single register, @samp{orig_eax}. 39464 39465The @samp{org.gnu.gdb.i386.avx512} feature is optional and requires the 39466@samp{org.gnu.gdb.i386.avx} feature. It should 39467describe additional @sc{xmm} registers: 39468 39469@itemize @minus 39470@item 39471@samp{xmm16h} through @samp{xmm31h}, only valid for amd64. 39472@end itemize 39473 39474It should describe the upper 128 bits of additional @sc{ymm} registers: 39475 39476@itemize @minus 39477@item 39478@samp{ymm16h} through @samp{ymm31h}, only valid for amd64. 39479@end itemize 39480 39481It should 39482describe the upper 256 bits of @sc{zmm} registers: 39483 39484@itemize @minus 39485@item 39486@samp{zmm0h} through @samp{zmm7h} for i386. 39487@item 39488@samp{zmm0h} through @samp{zmm15h} for amd64. 39489@end itemize 39490 39491It should 39492describe the additional @sc{zmm} registers: 39493 39494@itemize @minus 39495@item 39496@samp{zmm16h} through @samp{zmm31h}, only valid for amd64. 39497@end itemize 39498 39499@node MicroBlaze Features 39500@subsection MicroBlaze Features 39501@cindex target descriptions, MicroBlaze features 39502 39503The @samp{org.gnu.gdb.microblaze.core} feature is required for MicroBlaze 39504targets. It should contain registers @samp{r0} through @samp{r31}, 39505@samp{rpc}, @samp{rmsr}, @samp{rear}, @samp{resr}, @samp{rfsr}, @samp{rbtr}, 39506@samp{rpvr}, @samp{rpvr1} through @samp{rpvr11}, @samp{redr}, @samp{rpid}, 39507@samp{rzpr}, @samp{rtlbx}, @samp{rtlbsx}, @samp{rtlblo}, and @samp{rtlbhi}. 39508 39509The @samp{org.gnu.gdb.microblaze.stack-protect} feature is optional. 39510If present, it should contain registers @samp{rshr} and @samp{rslr} 39511 39512@node MIPS Features 39513@subsection @acronym{MIPS} Features 39514@cindex target descriptions, @acronym{MIPS} features 39515 39516The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets. 39517It should contain registers @samp{r0} through @samp{r31}, @samp{lo}, 39518@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending 39519on the target. 39520 39521The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should 39522contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause} 39523registers. They may be 32-bit or 64-bit depending on the target. 39524 39525The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though 39526it may be optional in a future version of @value{GDBN}. It should 39527contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and 39528@samp{fir}. They may be 32-bit or 64-bit depending on the target. 39529 39530The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should 39531contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through 39532@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should 39533be 32-bit and the rest may be 32-bit or 64-bit depending on the target. 39534 39535The @samp{org.gnu.gdb.mips.linux} feature is optional. It should 39536contain a single register, @samp{restart}, which is used by the 39537Linux kernel to control restartable syscalls. 39538 39539@node M68K Features 39540@subsection M68K Features 39541@cindex target descriptions, M68K features 39542 39543@table @code 39544@item @samp{org.gnu.gdb.m68k.core} 39545@itemx @samp{org.gnu.gdb.coldfire.core} 39546@itemx @samp{org.gnu.gdb.fido.core} 39547One of those features must be always present. 39548The feature that is present determines which flavor of m68k is 39549used. The feature that is present should contain registers 39550@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp}, 39551@samp{sp}, @samp{ps} and @samp{pc}. 39552 39553@item @samp{org.gnu.gdb.coldfire.fp} 39554This feature is optional. If present, it should contain registers 39555@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and 39556@samp{fpiaddr}. 39557@end table 39558 39559@node Nios II Features 39560@subsection Nios II Features 39561@cindex target descriptions, Nios II features 39562 39563The @samp{org.gnu.gdb.nios2.cpu} feature is required for Nios II 39564targets. It should contain the 32 core registers (@samp{zero}, 39565@samp{at}, @samp{r2} through @samp{r23}, @samp{et} through @samp{ra}), 39566@samp{pc}, and the 16 control registers (@samp{status} through 39567@samp{mpuacc}). 39568 39569@node PowerPC Features 39570@subsection PowerPC Features 39571@cindex target descriptions, PowerPC features 39572 39573The @samp{org.gnu.gdb.power.core} feature is required for PowerPC 39574targets. It should contain registers @samp{r0} through @samp{r31}, 39575@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and 39576@samp{xer}. They may be 32-bit or 64-bit depending on the target. 39577 39578The @samp{org.gnu.gdb.power.fpu} feature is optional. It should 39579contain registers @samp{f0} through @samp{f31} and @samp{fpscr}. 39580 39581The @samp{org.gnu.gdb.power.altivec} feature is optional. It should 39582contain registers @samp{vr0} through @samp{vr31}, @samp{vscr}, 39583and @samp{vrsave}. 39584 39585The @samp{org.gnu.gdb.power.vsx} feature is optional. It should 39586contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN} 39587will combine these registers with the floating point registers 39588(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0} 39589through @samp{vr31}) to present the 128-bit wide registers @samp{vs0} 39590through @samp{vs63}, the set of vector registers for POWER7. 39591 39592The @samp{org.gnu.gdb.power.spe} feature is optional. It should 39593contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and 39594@samp{spefscr}. SPE targets should provide 32-bit registers in 39595@samp{org.gnu.gdb.power.core} and provide the upper halves in 39596@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine 39597these to present registers @samp{ev0} through @samp{ev31} to the 39598user. 39599 39600@node S/390 and System z Features 39601@subsection S/390 and System z Features 39602@cindex target descriptions, S/390 features 39603@cindex target descriptions, System z features 39604 39605The @samp{org.gnu.gdb.s390.core} feature is required for S/390 and 39606System z targets. It should contain the PSW and the 16 general 39607registers. In particular, System z targets should provide the 64-bit 39608registers @samp{pswm}, @samp{pswa}, and @samp{r0} through @samp{r15}. 39609S/390 targets should provide the 32-bit versions of these registers. 39610A System z target that runs in 31-bit addressing mode should provide 3961132-bit versions of @samp{pswm} and @samp{pswa}, as well as the general 39612register's upper halves @samp{r0h} through @samp{r15h}, and their 39613lower halves @samp{r0l} through @samp{r15l}. 39614 39615The @samp{org.gnu.gdb.s390.fpr} feature is required. It should 39616contain the 64-bit registers @samp{f0} through @samp{f15}, and 39617@samp{fpc}. 39618 39619The @samp{org.gnu.gdb.s390.acr} feature is required. It should 39620contain the 32-bit registers @samp{acr0} through @samp{acr15}. 39621 39622The @samp{org.gnu.gdb.s390.linux} feature is optional. It should 39623contain the register @samp{orig_r2}, which is 64-bit wide on System z 39624targets and 32-bit otherwise. In addition, the feature may contain 39625the @samp{last_break} register, whose width depends on the addressing 39626mode, as well as the @samp{system_call} register, which is always 3962732-bit wide. 39628 39629The @samp{org.gnu.gdb.s390.tdb} feature is optional. It should 39630contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct}, 39631@samp{atia}, and @samp{tr0} through @samp{tr15}. 39632 39633@node TIC6x Features 39634@subsection TMS320C6x Features 39635@cindex target descriptions, TIC6x features 39636@cindex target descriptions, TMS320C6x features 39637The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x 39638targets. It should contain registers @samp{A0} through @samp{A15}, 39639registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}. 39640 39641The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should 39642contain registers @samp{A16} through @samp{A31} and @samp{B16} 39643through @samp{B31}. 39644 39645The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should 39646contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}. 39647 39648@node Operating System Information 39649@appendix Operating System Information 39650@cindex operating system information 39651 39652@menu 39653* Process list:: 39654@end menu 39655 39656Users of @value{GDBN} often wish to obtain information about the state of 39657the operating system running on the target---for example the list of 39658processes, or the list of open files. This section describes the 39659mechanism that makes it possible. This mechanism is similar to the 39660target features mechanism (@pxref{Target Descriptions}), but focuses 39661on a different aspect of target. 39662 39663Operating system information is retrived from the target via the 39664remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata 39665read}). The object name in the request should be @samp{osdata}, and 39666the @var{annex} identifies the data to be fetched. 39667 39668@node Process list 39669@appendixsection Process list 39670@cindex operating system information, process list 39671 39672When requesting the process list, the @var{annex} field in the 39673@samp{qXfer} request should be @samp{processes}. The returned data is 39674an XML document. The formal syntax of this document is defined in 39675@file{gdb/features/osdata.dtd}. 39676 39677An example document is: 39678 39679@smallexample 39680<?xml version="1.0"?> 39681<!DOCTYPE target SYSTEM "osdata.dtd"> 39682<osdata type="processes"> 39683 <item> 39684 <column name="pid">1</column> 39685 <column name="user">root</column> 39686 <column name="command">/sbin/init</column> 39687 <column name="cores">1,2,3</column> 39688 </item> 39689</osdata> 39690@end smallexample 39691 39692Each item should include a column whose name is @samp{pid}. The value 39693of that column should identify the process on the target. The 39694@samp{user} and @samp{command} columns are optional, and will be 39695displayed by @value{GDBN}. The @samp{cores} column, if present, 39696should contain a comma-separated list of cores that this process 39697is running on. Target may provide additional columns, 39698which @value{GDBN} currently ignores. 39699 39700@node Trace File Format 39701@appendix Trace File Format 39702@cindex trace file format 39703 39704The trace file comes in three parts: a header, a textual description 39705section, and a trace frame section with binary data. 39706 39707The header has the form @code{\x7fTRACE0\n}. The first byte is 39708@code{0x7f} so as to indicate that the file contains binary data, 39709while the @code{0} is a version number that may have different values 39710in the future. 39711 39712The description section consists of multiple lines of @sc{ascii} text 39713separated by newline characters (@code{0xa}). The lines may include a 39714variety of optional descriptive or context-setting information, such 39715as tracepoint definitions or register set size. @value{GDBN} will 39716ignore any line that it does not recognize. An empty line marks the end 39717of this section. 39718 39719@c FIXME add some specific types of data 39720 39721The trace frame section consists of a number of consecutive frames. 39722Each frame begins with a two-byte tracepoint number, followed by a 39723four-byte size giving the amount of data in the frame. The data in 39724the frame consists of a number of blocks, each introduced by a 39725character indicating its type (at least register, memory, and trace 39726state variable). The data in this section is raw binary, not a 39727hexadecimal or other encoding; its endianness matches the target's 39728endianness. 39729 39730@c FIXME bi-arch may require endianness/arch info in description section 39731 39732@table @code 39733@item R @var{bytes} 39734Register block. The number and ordering of bytes matches that of a 39735@code{g} packet in the remote protocol. Note that these are the 39736actual bytes, in target order and @value{GDBN} register order, not a 39737hexadecimal encoding. 39738 39739@item M @var{address} @var{length} @var{bytes}... 39740Memory block. This is a contiguous block of memory, at the 8-byte 39741address @var{address}, with a 2-byte length @var{length}, followed by 39742@var{length} bytes. 39743 39744@item V @var{number} @var{value} 39745Trace state variable block. This records the 8-byte signed value 39746@var{value} of trace state variable numbered @var{number}. 39747 39748@end table 39749 39750Future enhancements of the trace file format may include additional types 39751of blocks. 39752 39753@node Index Section Format 39754@appendix @code{.gdb_index} section format 39755@cindex .gdb_index section format 39756@cindex index section format 39757 39758This section documents the index section that is created by @code{save 39759gdb-index} (@pxref{Index Files}). The index section is 39760DWARF-specific; some knowledge of DWARF is assumed in this 39761description. 39762 39763The mapped index file format is designed to be directly 39764@code{mmap}able on any architecture. In most cases, a datum is 39765represented using a little-endian 32-bit integer value, called an 39766@code{offset_type}. Big endian machines must byte-swap the values 39767before using them. Exceptions to this rule are noted. The data is 39768laid out such that alignment is always respected. 39769 39770A mapped index consists of several areas, laid out in order. 39771 39772@enumerate 39773@item 39774The file header. This is a sequence of values, of @code{offset_type} 39775unless otherwise noted: 39776 39777@enumerate 39778@item 39779The version number, currently 8. Versions 1, 2 and 3 are obsolete. 39780Version 4 uses a different hashing function from versions 5 and 6. 39781Version 6 includes symbols for inlined functions, whereas versions 4 39782and 5 do not. Version 7 adds attributes to the CU indices in the 39783symbol table. Version 8 specifies that symbols from DWARF type units 39784(@samp{DW_TAG_type_unit}) refer to the type unit's symbol table and not the 39785compilation unit (@samp{DW_TAG_comp_unit}) using the type. 39786 39787@value{GDBN} will only read version 4, 5, or 6 indices 39788by specifying @code{set use-deprecated-index-sections on}. 39789GDB has a workaround for potentially broken version 7 indices so it is 39790currently not flagged as deprecated. 39791 39792@item 39793The offset, from the start of the file, of the CU list. 39794 39795@item 39796The offset, from the start of the file, of the types CU list. Note 39797that this area can be empty, in which case this offset will be equal 39798to the next offset. 39799 39800@item 39801The offset, from the start of the file, of the address area. 39802 39803@item 39804The offset, from the start of the file, of the symbol table. 39805 39806@item 39807The offset, from the start of the file, of the constant pool. 39808@end enumerate 39809 39810@item 39811The CU list. This is a sequence of pairs of 64-bit little-endian 39812values, sorted by the CU offset. The first element in each pair is 39813the offset of a CU in the @code{.debug_info} section. The second 39814element in each pair is the length of that CU. References to a CU 39815elsewhere in the map are done using a CU index, which is just the 398160-based index into this table. Note that if there are type CUs, then 39817conceptually CUs and type CUs form a single list for the purposes of 39818CU indices. 39819 39820@item 39821The types CU list. This is a sequence of triplets of 64-bit 39822little-endian values. In a triplet, the first value is the CU offset, 39823the second value is the type offset in the CU, and the third value is 39824the type signature. The types CU list is not sorted. 39825 39826@item 39827The address area. The address area consists of a sequence of address 39828entries. Each address entry has three elements: 39829 39830@enumerate 39831@item 39832The low address. This is a 64-bit little-endian value. 39833 39834@item 39835The high address. This is a 64-bit little-endian value. Like 39836@code{DW_AT_high_pc}, the value is one byte beyond the end. 39837 39838@item 39839The CU index. This is an @code{offset_type} value. 39840@end enumerate 39841 39842@item 39843The symbol table. This is an open-addressed hash table. The size of 39844the hash table is always a power of 2. 39845 39846Each slot in the hash table consists of a pair of @code{offset_type} 39847values. The first value is the offset of the symbol's name in the 39848constant pool. The second value is the offset of the CU vector in the 39849constant pool. 39850 39851If both values are 0, then this slot in the hash table is empty. This 39852is ok because while 0 is a valid constant pool index, it cannot be a 39853valid index for both a string and a CU vector. 39854 39855The hash value for a table entry is computed by applying an 39856iterative hash function to the symbol's name. Starting with an 39857initial value of @code{r = 0}, each (unsigned) character @samp{c} in 39858the string is incorporated into the hash using the formula depending on the 39859index version: 39860 39861@table @asis 39862@item Version 4 39863The formula is @code{r = r * 67 + c - 113}. 39864 39865@item Versions 5 to 7 39866The formula is @code{r = r * 67 + tolower (c) - 113}. 39867@end table 39868 39869The terminating @samp{\0} is not incorporated into the hash. 39870 39871The step size used in the hash table is computed via 39872@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash 39873value, and @samp{size} is the size of the hash table. The step size 39874is used to find the next candidate slot when handling a hash 39875collision. 39876 39877The names of C@t{++} symbols in the hash table are canonicalized. We 39878don't currently have a simple description of the canonicalization 39879algorithm; if you intend to create new index sections, you must read 39880the code. 39881 39882@item 39883The constant pool. This is simply a bunch of bytes. It is organized 39884so that alignment is correct: CU vectors are stored first, followed by 39885strings. 39886 39887A CU vector in the constant pool is a sequence of @code{offset_type} 39888values. The first value is the number of CU indices in the vector. 39889Each subsequent value is the index and symbol attributes of a CU in 39890the CU list. This element in the hash table is used to indicate which 39891CUs define the symbol and how the symbol is used. 39892See below for the format of each CU index+attributes entry. 39893 39894A string in the constant pool is zero-terminated. 39895@end enumerate 39896 39897Attributes were added to CU index values in @code{.gdb_index} version 7. 39898If a symbol has multiple uses within a CU then there is one 39899CU index+attributes value for each use. 39900 39901The format of each CU index+attributes entry is as follows 39902(bit 0 = LSB): 39903 39904@table @asis 39905 39906@item Bits 0-23 39907This is the index of the CU in the CU list. 39908@item Bits 24-27 39909These bits are reserved for future purposes and must be zero. 39910@item Bits 28-30 39911The kind of the symbol in the CU. 39912 39913@table @asis 39914@item 0 39915This value is reserved and should not be used. 39916By reserving zero the full @code{offset_type} value is backwards compatible 39917with previous versions of the index. 39918@item 1 39919The symbol is a type. 39920@item 2 39921The symbol is a variable or an enum value. 39922@item 3 39923The symbol is a function. 39924@item 4 39925Any other kind of symbol. 39926@item 5,6,7 39927These values are reserved. 39928@end table 39929 39930@item Bit 31 39931This bit is zero if the value is global and one if it is static. 39932 39933The determination of whether a symbol is global or static is complicated. 39934The authorative reference is the file @file{dwarf2read.c} in 39935@value{GDBN} sources. 39936 39937@end table 39938 39939This pseudo-code describes the computation of a symbol's kind and 39940global/static attributes in the index. 39941 39942@smallexample 39943is_external = get_attribute (die, DW_AT_external); 39944language = get_attribute (cu_die, DW_AT_language); 39945switch (die->tag) 39946 @{ 39947 case DW_TAG_typedef: 39948 case DW_TAG_base_type: 39949 case DW_TAG_subrange_type: 39950 kind = TYPE; 39951 is_static = 1; 39952 break; 39953 case DW_TAG_enumerator: 39954 kind = VARIABLE; 39955 is_static = (language != CPLUS && language != JAVA); 39956 break; 39957 case DW_TAG_subprogram: 39958 kind = FUNCTION; 39959 is_static = ! (is_external || language == ADA); 39960 break; 39961 case DW_TAG_constant: 39962 kind = VARIABLE; 39963 is_static = ! is_external; 39964 break; 39965 case DW_TAG_variable: 39966 kind = VARIABLE; 39967 is_static = ! is_external; 39968 break; 39969 case DW_TAG_namespace: 39970 kind = TYPE; 39971 is_static = 0; 39972 break; 39973 case DW_TAG_class_type: 39974 case DW_TAG_interface_type: 39975 case DW_TAG_structure_type: 39976 case DW_TAG_union_type: 39977 case DW_TAG_enumeration_type: 39978 kind = TYPE; 39979 is_static = (language != CPLUS && language != JAVA); 39980 break; 39981 default: 39982 assert (0); 39983 @} 39984@end smallexample 39985 39986@node Man Pages 39987@appendix Manual pages 39988@cindex Man pages 39989 39990@menu 39991* gdb man:: The GNU Debugger man page 39992* gdbserver man:: Remote Server for the GNU Debugger man page 39993* gcore man:: Generate a core file of a running program 39994* gdbinit man:: gdbinit scripts 39995@end menu 39996 39997@node gdb man 39998@heading gdb man 39999 40000@c man title gdb The GNU Debugger 40001 40002@c man begin SYNOPSIS gdb 40003gdb [@option{-help}] [@option{-nh}] [@option{-nx}] [@option{-q}] 40004[@option{-batch}] [@option{-cd=}@var{dir}] [@option{-f}] 40005[@option{-b}@w{ }@var{bps}] 40006 [@option{-tty=}@var{dev}] [@option{-s} @var{symfile}] 40007[@option{-e}@w{ }@var{prog}] [@option{-se}@w{ }@var{prog}] 40008[@option{-c}@w{ }@var{core}] [@option{-p}@w{ }@var{procID}] 40009 [@option{-x}@w{ }@var{cmds}] [@option{-d}@w{ }@var{dir}] 40010[@var{prog}|@var{prog} @var{procID}|@var{prog} @var{core}] 40011@c man end 40012 40013@c man begin DESCRIPTION gdb 40014The purpose of a debugger such as @value{GDBN} is to allow you to see what is 40015going on ``inside'' another program while it executes -- or what another 40016program was doing at the moment it crashed. 40017 40018@value{GDBN} can do four main kinds of things (plus other things in support of 40019these) to help you catch bugs in the act: 40020 40021@itemize @bullet 40022@item 40023Start your program, specifying anything that might affect its behavior. 40024 40025@item 40026Make your program stop on specified conditions. 40027 40028@item 40029Examine what has happened, when your program has stopped. 40030 40031@item 40032Change things in your program, so you can experiment with correcting the 40033effects of one bug and go on to learn about another. 40034@end itemize 40035 40036You can use @value{GDBN} to debug programs written in C, C@t{++}, Fortran and 40037Modula-2. 40038 40039@value{GDBN} is invoked with the shell command @code{gdb}. Once started, it reads 40040commands from the terminal until you tell it to exit with the @value{GDBN} 40041command @code{quit}. You can get online help from @value{GDBN} itself 40042by using the command @code{help}. 40043 40044You can run @code{gdb} with no arguments or options; but the most 40045usual way to start @value{GDBN} is with one argument or two, specifying an 40046executable program as the argument: 40047 40048@smallexample 40049gdb program 40050@end smallexample 40051 40052You can also start with both an executable program and a core file specified: 40053 40054@smallexample 40055gdb program core 40056@end smallexample 40057 40058You can, instead, specify a process ID as a second argument, if you want 40059to debug a running process: 40060 40061@smallexample 40062gdb program 1234 40063gdb -p 1234 40064@end smallexample 40065 40066@noindent 40067would attach @value{GDBN} to process @code{1234} (unless you also have a file 40068named @file{1234}; @value{GDBN} does check for a core file first). 40069With option @option{-p} you can omit the @var{program} filename. 40070 40071Here are some of the most frequently needed @value{GDBN} commands: 40072 40073@c pod2man highlights the right hand side of the @item lines. 40074@table @env 40075@item break [@var{file}:]@var{functiop} 40076Set a breakpoint at @var{function} (in @var{file}). 40077 40078@item run [@var{arglist}] 40079Start your program (with @var{arglist}, if specified). 40080 40081@item bt 40082Backtrace: display the program stack. 40083 40084@item print @var{expr} 40085Display the value of an expression. 40086 40087@item c 40088Continue running your program (after stopping, e.g. at a breakpoint). 40089 40090@item next 40091Execute next program line (after stopping); step @emph{over} any 40092function calls in the line. 40093 40094@item edit [@var{file}:]@var{function} 40095look at the program line where it is presently stopped. 40096 40097@item list [@var{file}:]@var{function} 40098type the text of the program in the vicinity of where it is presently stopped. 40099 40100@item step 40101Execute next program line (after stopping); step @emph{into} any 40102function calls in the line. 40103 40104@item help [@var{name}] 40105Show information about @value{GDBN} command @var{name}, or general information 40106about using @value{GDBN}. 40107 40108@item quit 40109Exit from @value{GDBN}. 40110@end table 40111 40112@ifset man 40113For full details on @value{GDBN}, 40114see @cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 40115by Richard M. Stallman and Roland H. Pesch. The same text is available online 40116as the @code{gdb} entry in the @code{info} program. 40117@end ifset 40118@c man end 40119 40120@c man begin OPTIONS gdb 40121Any arguments other than options specify an executable 40122file and core file (or process ID); that is, the first argument 40123encountered with no 40124associated option flag is equivalent to a @option{-se} option, and the second, 40125if any, is equivalent to a @option{-c} option if it's the name of a file. 40126Many options have 40127both long and short forms; both are shown here. The long forms are also 40128recognized if you truncate them, so long as enough of the option is 40129present to be unambiguous. (If you prefer, you can flag option 40130arguments with @option{+} rather than @option{-}, though we illustrate the 40131more usual convention.) 40132 40133All the options and command line arguments you give are processed 40134in sequential order. The order makes a difference when the @option{-x} 40135option is used. 40136 40137@table @env 40138@item -help 40139@itemx -h 40140List all options, with brief explanations. 40141 40142@item -symbols=@var{file} 40143@itemx -s @var{file} 40144Read symbol table from file @var{file}. 40145 40146@item -write 40147Enable writing into executable and core files. 40148 40149@item -exec=@var{file} 40150@itemx -e @var{file} 40151Use file @var{file} as the executable file to execute when 40152appropriate, and for examining pure data in conjunction with a core 40153dump. 40154 40155@item -se=@var{file} 40156Read symbol table from file @var{file} and use it as the executable 40157file. 40158 40159@item -core=@var{file} 40160@itemx -c @var{file} 40161Use file @var{file} as a core dump to examine. 40162 40163@item -command=@var{file} 40164@itemx -x @var{file} 40165Execute @value{GDBN} commands from file @var{file}. 40166 40167@item -ex @var{command} 40168Execute given @value{GDBN} @var{command}. 40169 40170@item -directory=@var{directory} 40171@itemx -d @var{directory} 40172Add @var{directory} to the path to search for source files. 40173 40174@item -nh 40175Do not execute commands from @file{~/.gdbinit}. 40176 40177@item -nx 40178@itemx -n 40179Do not execute commands from any @file{.gdbinit} initialization files. 40180 40181@item -quiet 40182@itemx -q 40183``Quiet''. Do not print the introductory and copyright messages. These 40184messages are also suppressed in batch mode. 40185 40186@item -batch 40187Run in batch mode. Exit with status @code{0} after processing all the command 40188files specified with @option{-x} (and @file{.gdbinit}, if not inhibited). 40189Exit with nonzero status if an error occurs in executing the @value{GDBN} 40190commands in the command files. 40191 40192Batch mode may be useful for running @value{GDBN} as a filter, for example to 40193download and run a program on another computer; in order to make this 40194more useful, the message 40195 40196@smallexample 40197Program exited normally. 40198@end smallexample 40199 40200@noindent 40201(which is ordinarily issued whenever a program running under @value{GDBN} control 40202terminates) is not issued when running in batch mode. 40203 40204@item -cd=@var{directory} 40205Run @value{GDBN} using @var{directory} as its working directory, 40206instead of the current directory. 40207 40208@item -fullname 40209@itemx -f 40210Emacs sets this option when it runs @value{GDBN} as a subprocess. It tells 40211@value{GDBN} to output the full file name and line number in a standard, 40212recognizable fashion each time a stack frame is displayed (which 40213includes each time the program stops). This recognizable format looks 40214like two @samp{\032} characters, followed by the file name, line number 40215and character position separated by colons, and a newline. The 40216Emacs-to-@value{GDBN} interface program uses the two @samp{\032} 40217characters as a signal to display the source code for the frame. 40218 40219@item -b @var{bps} 40220Set the line speed (baud rate or bits per second) of any serial 40221interface used by @value{GDBN} for remote debugging. 40222 40223@item -tty=@var{device} 40224Run using @var{device} for your program's standard input and output. 40225@end table 40226@c man end 40227 40228@c man begin SEEALSO gdb 40229@ifset man 40230The full documentation for @value{GDBN} is maintained as a Texinfo manual. 40231If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 40232documentation are properly installed at your site, the command 40233 40234@smallexample 40235info gdb 40236@end smallexample 40237 40238@noindent 40239should give you access to the complete manual. 40240 40241@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 40242Richard M. Stallman and Roland H. Pesch, July 1991. 40243@end ifset 40244@c man end 40245 40246@node gdbserver man 40247@heading gdbserver man 40248 40249@c man title gdbserver Remote Server for the GNU Debugger 40250@format 40251@c man begin SYNOPSIS gdbserver 40252gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 40253 40254gdbserver --attach @var{comm} @var{pid} 40255 40256gdbserver --multi @var{comm} 40257@c man end 40258@end format 40259 40260@c man begin DESCRIPTION gdbserver 40261@command{gdbserver} is a program that allows you to run @value{GDBN} on a different machine 40262than the one which is running the program being debugged. 40263 40264@ifclear man 40265@subheading Usage (server (target) side) 40266@end ifclear 40267@ifset man 40268Usage (server (target) side): 40269@end ifset 40270 40271First, you need to have a copy of the program you want to debug put onto 40272the target system. The program can be stripped to save space if needed, as 40273@command{gdbserver} doesn't care about symbols. All symbol handling is taken care of by 40274the @value{GDBN} running on the host system. 40275 40276To use the server, you log on to the target system, and run the @command{gdbserver} 40277program. You must tell it (a) how to communicate with @value{GDBN}, (b) the name of 40278your program, and (c) its arguments. The general syntax is: 40279 40280@smallexample 40281target> gdbserver @var{comm} @var{program} [@var{args} ...] 40282@end smallexample 40283 40284For example, using a serial port, you might say: 40285 40286@smallexample 40287@ifset man 40288@c @file would wrap it as F</dev/com1>. 40289target> gdbserver /dev/com1 emacs foo.txt 40290@end ifset 40291@ifclear man 40292target> gdbserver @file{/dev/com1} emacs foo.txt 40293@end ifclear 40294@end smallexample 40295 40296This tells @command{gdbserver} to debug emacs with an argument of foo.txt, and 40297to communicate with @value{GDBN} via @file{/dev/com1}. @command{gdbserver} now 40298waits patiently for the host @value{GDBN} to communicate with it. 40299 40300To use a TCP connection, you could say: 40301 40302@smallexample 40303target> gdbserver host:2345 emacs foo.txt 40304@end smallexample 40305 40306This says pretty much the same thing as the last example, except that we are 40307going to communicate with the @code{host} @value{GDBN} via TCP. The @code{host:2345} argument means 40308that we are expecting to see a TCP connection from @code{host} to local TCP port 403092345. (Currently, the @code{host} part is ignored.) You can choose any number you 40310want for the port number as long as it does not conflict with any existing TCP 40311ports on the target system. This same port number must be used in the host 40312@value{GDBN}s @code{target remote} command, which will be described shortly. Note that if 40313you chose a port number that conflicts with another service, @command{gdbserver} will 40314print an error message and exit. 40315 40316@command{gdbserver} can also attach to running programs. 40317This is accomplished via the @option{--attach} argument. The syntax is: 40318 40319@smallexample 40320target> gdbserver --attach @var{comm} @var{pid} 40321@end smallexample 40322 40323@var{pid} is the process ID of a currently running process. It isn't 40324necessary to point @command{gdbserver} at a binary for the running process. 40325 40326To start @code{gdbserver} without supplying an initial command to run 40327or process ID to attach, use the @option{--multi} command line option. 40328In such case you should connect using @kbd{target extended-remote} to start 40329the program you want to debug. 40330 40331@smallexample 40332target> gdbserver --multi @var{comm} 40333@end smallexample 40334 40335@ifclear man 40336@subheading Usage (host side) 40337@end ifclear 40338@ifset man 40339Usage (host side): 40340@end ifset 40341 40342You need an unstripped copy of the target program on your host system, since 40343@value{GDBN} needs to examine it's symbol tables and such. Start up @value{GDBN} as you normally 40344would, with the target program as the first argument. (You may need to use the 40345@option{--baud} option if the serial line is running at anything except 9600 baud.) 40346That is @code{gdb TARGET-PROG}, or @code{gdb --baud BAUD TARGET-PROG}. After that, the only 40347new command you need to know about is @code{target remote} 40348(or @code{target extended-remote}). Its argument is either 40349a device name (usually a serial device, like @file{/dev/ttyb}), or a @code{HOST:PORT} 40350descriptor. For example: 40351 40352@smallexample 40353@ifset man 40354@c @file would wrap it as F</dev/ttyb>. 40355(gdb) target remote /dev/ttyb 40356@end ifset 40357@ifclear man 40358(gdb) target remote @file{/dev/ttyb} 40359@end ifclear 40360@end smallexample 40361 40362@noindent 40363communicates with the server via serial line @file{/dev/ttyb}, and: 40364 40365@smallexample 40366(gdb) target remote the-target:2345 40367@end smallexample 40368 40369@noindent 40370communicates via a TCP connection to port 2345 on host `the-target', where 40371you previously started up @command{gdbserver} with the same port number. Note that for 40372TCP connections, you must start up @command{gdbserver} prior to using the `target remote' 40373command, otherwise you may get an error that looks something like 40374`Connection refused'. 40375 40376@command{gdbserver} can also debug multiple inferiors at once, 40377described in 40378@ifset man 40379the @value{GDBN} manual in node @code{Inferiors and Programs} 40380-- shell command @code{info -f gdb -n 'Inferiors and Programs'}. 40381@end ifset 40382@ifclear man 40383@ref{Inferiors and Programs}. 40384@end ifclear 40385In such case use the @code{extended-remote} @value{GDBN} command variant: 40386 40387@smallexample 40388(gdb) target extended-remote the-target:2345 40389@end smallexample 40390 40391The @command{gdbserver} option @option{--multi} may or may not be used in such 40392case. 40393@c man end 40394 40395@c man begin OPTIONS gdbserver 40396There are three different modes for invoking @command{gdbserver}: 40397 40398@itemize @bullet 40399 40400@item 40401Debug a specific program specified by its program name: 40402 40403@smallexample 40404gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 40405@end smallexample 40406 40407The @var{comm} parameter specifies how should the server communicate 40408with @value{GDBN}; it is either a device name (to use a serial line), 40409a TCP port number (@code{:1234}), or @code{-} or @code{stdio} to use 40410stdin/stdout of @code{gdbserver}. Specify the name of the program to 40411debug in @var{prog}. Any remaining arguments will be passed to the 40412program verbatim. When the program exits, @value{GDBN} will close the 40413connection, and @code{gdbserver} will exit. 40414 40415@item 40416Debug a specific program by specifying the process ID of a running 40417program: 40418 40419@smallexample 40420gdbserver --attach @var{comm} @var{pid} 40421@end smallexample 40422 40423The @var{comm} parameter is as described above. Supply the process ID 40424of a running program in @var{pid}; @value{GDBN} will do everything 40425else. Like with the previous mode, when the process @var{pid} exits, 40426@value{GDBN} will close the connection, and @code{gdbserver} will exit. 40427 40428@item 40429Multi-process mode -- debug more than one program/process: 40430 40431@smallexample 40432gdbserver --multi @var{comm} 40433@end smallexample 40434 40435In this mode, @value{GDBN} can instruct @command{gdbserver} which 40436command(s) to run. Unlike the other 2 modes, @value{GDBN} will not 40437close the connection when a process being debugged exits, so you can 40438debug several processes in the same session. 40439@end itemize 40440 40441In each of the modes you may specify these options: 40442 40443@table @env 40444 40445@item --help 40446List all options, with brief explanations. 40447 40448@item --version 40449This option causes @command{gdbserver} to print its version number and exit. 40450 40451@item --attach 40452@command{gdbserver} will attach to a running program. The syntax is: 40453 40454@smallexample 40455target> gdbserver --attach @var{comm} @var{pid} 40456@end smallexample 40457 40458@var{pid} is the process ID of a currently running process. It isn't 40459necessary to point @command{gdbserver} at a binary for the running process. 40460 40461@item --multi 40462To start @code{gdbserver} without supplying an initial command to run 40463or process ID to attach, use this command line option. 40464Then you can connect using @kbd{target extended-remote} and start 40465the program you want to debug. The syntax is: 40466 40467@smallexample 40468target> gdbserver --multi @var{comm} 40469@end smallexample 40470 40471@item --debug 40472Instruct @code{gdbserver} to display extra status information about the debugging 40473process. 40474This option is intended for @code{gdbserver} development and for bug reports to 40475the developers. 40476 40477@item --remote-debug 40478Instruct @code{gdbserver} to display remote protocol debug output. 40479This option is intended for @code{gdbserver} development and for bug reports to 40480the developers. 40481 40482@item --debug-format=option1@r{[},option2,...@r{]} 40483Instruct @code{gdbserver} to include extra information in each line 40484of debugging output. 40485@xref{Other Command-Line Arguments for gdbserver}. 40486 40487@item --wrapper 40488Specify a wrapper to launch programs 40489for debugging. The option should be followed by the name of the 40490wrapper, then any command-line arguments to pass to the wrapper, then 40491@kbd{--} indicating the end of the wrapper arguments. 40492 40493@item --once 40494By default, @command{gdbserver} keeps the listening TCP port open, so that 40495additional connections are possible. However, if you start @code{gdbserver} 40496with the @option{--once} option, it will stop listening for any further 40497connection attempts after connecting to the first @value{GDBN} session. 40498 40499@c --disable-packet is not documented for users. 40500 40501@c --disable-randomization and --no-disable-randomization are superseded by 40502@c QDisableRandomization. 40503 40504@end table 40505@c man end 40506 40507@c man begin SEEALSO gdbserver 40508@ifset man 40509The full documentation for @value{GDBN} is maintained as a Texinfo manual. 40510If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 40511documentation are properly installed at your site, the command 40512 40513@smallexample 40514info gdb 40515@end smallexample 40516 40517should give you access to the complete manual. 40518 40519@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 40520Richard M. Stallman and Roland H. Pesch, July 1991. 40521@end ifset 40522@c man end 40523 40524@node gcore man 40525@heading gcore 40526 40527@c man title gcore Generate a core file of a running program 40528 40529@format 40530@c man begin SYNOPSIS gcore 40531gcore [-o @var{filename}] @var{pid} 40532@c man end 40533@end format 40534 40535@c man begin DESCRIPTION gcore 40536Generate a core dump of a running program with process ID @var{pid}. 40537Produced file is equivalent to a kernel produced core file as if the process 40538crashed (and if @kbd{ulimit -c} were used to set up an appropriate core dump 40539limit). Unlike after a crash, after @command{gcore} the program remains 40540running without any change. 40541@c man end 40542 40543@c man begin OPTIONS gcore 40544@table @env 40545@item -o @var{filename} 40546The optional argument 40547@var{filename} specifies the file name where to put the core dump. 40548If not specified, the file name defaults to @file{core.@var{pid}}, 40549where @var{pid} is the running program process ID. 40550@end table 40551@c man end 40552 40553@c man begin SEEALSO gcore 40554@ifset man 40555The full documentation for @value{GDBN} is maintained as a Texinfo manual. 40556If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 40557documentation are properly installed at your site, the command 40558 40559@smallexample 40560info gdb 40561@end smallexample 40562 40563@noindent 40564should give you access to the complete manual. 40565 40566@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 40567Richard M. Stallman and Roland H. Pesch, July 1991. 40568@end ifset 40569@c man end 40570 40571@node gdbinit man 40572@heading gdbinit 40573 40574@c man title gdbinit GDB initialization scripts 40575 40576@format 40577@c man begin SYNOPSIS gdbinit 40578@ifset SYSTEM_GDBINIT 40579@value{SYSTEM_GDBINIT} 40580@end ifset 40581 40582~/.gdbinit 40583 40584./.gdbinit 40585@c man end 40586@end format 40587 40588@c man begin DESCRIPTION gdbinit 40589These files contain @value{GDBN} commands to automatically execute during 40590@value{GDBN} startup. The lines of contents are canned sequences of commands, 40591described in 40592@ifset man 40593the @value{GDBN} manual in node @code{Sequences} 40594-- shell command @code{info -f gdb -n Sequences}. 40595@end ifset 40596@ifclear man 40597@ref{Sequences}. 40598@end ifclear 40599 40600Please read more in 40601@ifset man 40602the @value{GDBN} manual in node @code{Startup} 40603-- shell command @code{info -f gdb -n Startup}. 40604@end ifset 40605@ifclear man 40606@ref{Startup}. 40607@end ifclear 40608 40609@table @env 40610@ifset SYSTEM_GDBINIT 40611@item @value{SYSTEM_GDBINIT} 40612@end ifset 40613@ifclear SYSTEM_GDBINIT 40614@item (not enabled with @code{--with-system-gdbinit} during compilation) 40615@end ifclear 40616System-wide initialization file. It is executed unless user specified 40617@value{GDBN} option @code{-nx} or @code{-n}. 40618See more in 40619@ifset man 40620the @value{GDBN} manual in node @code{System-wide configuration} 40621-- shell command @code{info -f gdb -n 'System-wide configuration'}. 40622@end ifset 40623@ifclear man 40624@ref{System-wide configuration}. 40625@end ifclear 40626 40627@item ~/.gdbinit 40628User initialization file. It is executed unless user specified 40629@value{GDBN} options @code{-nx}, @code{-n} or @code{-nh}. 40630 40631@item ./.gdbinit 40632Initialization file for current directory. It may need to be enabled with 40633@value{GDBN} security command @code{set auto-load local-gdbinit}. 40634See more in 40635@ifset man 40636the @value{GDBN} manual in node @code{Init File in the Current Directory} 40637-- shell command @code{info -f gdb -n 'Init File in the Current Directory'}. 40638@end ifset 40639@ifclear man 40640@ref{Init File in the Current Directory}. 40641@end ifclear 40642@end table 40643@c man end 40644 40645@c man begin SEEALSO gdbinit 40646@ifset man 40647gdb(1), @code{info -f gdb -n Startup} 40648 40649The full documentation for @value{GDBN} is maintained as a Texinfo manual. 40650If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 40651documentation are properly installed at your site, the command 40652 40653@smallexample 40654info gdb 40655@end smallexample 40656 40657should give you access to the complete manual. 40658 40659@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 40660Richard M. Stallman and Roland H. Pesch, July 1991. 40661@end ifset 40662@c man end 40663 40664@include gpl.texi 40665 40666@node GNU Free Documentation License 40667@appendix GNU Free Documentation License 40668@include fdl.texi 40669 40670@node Concept Index 40671@unnumbered Concept Index 40672 40673@printindex cp 40674 40675@node Command and Variable Index 40676@unnumbered Command, Variable, and Function Index 40677 40678@printindex fn 40679 40680@tex 40681% I think something like @@colophon should be in texinfo. In the 40682% meantime: 40683\long\def\colophon{\hbox to0pt{}\vfill 40684\centerline{The body of this manual is set in} 40685\centerline{\fontname\tenrm,} 40686\centerline{with headings in {\bf\fontname\tenbf}} 40687\centerline{and examples in {\tt\fontname\tentt}.} 40688\centerline{{\it\fontname\tenit\/},} 40689\centerline{{\bf\fontname\tenbf}, and} 40690\centerline{{\sl\fontname\tensl\/}} 40691\centerline{are used for emphasis.}\vfill} 40692\page\colophon 40693% Blame: doc@@cygnus.com, 1991. 40694@end tex 40695 40696@bye 40697