1\input texinfo @c -*-texinfo-*- 2@c Copyright (C) 1988-2019 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-2019 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-2019 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 544Initial support for the FreeBSD/mips target and native configuration 545was developed by SRI International and the University of Cambridge 546Computer Laboratory under DARPA/AFRL contract FA8750-10-C-0237 547("CTSRD"), as part of the DARPA CRASH research programme. 548 549Initial support for the FreeBSD/riscv target and native configuration 550was developed by SRI International and the University of Cambridge 551Computer Laboratory (Department of Computer Science and Technology) 552under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of the DARPA 553SSITH research programme. 554 555The original port to the OpenRISC 1000 is believed to be due to 556Alessandro Forin and Per Bothner. More recent ports have been the work 557of Jeremy Bennett, Franck Jullien, Stefan Wallentowitz and 558Stafford Horne. 559 560@node Sample Session 561@chapter A Sample @value{GDBN} Session 562 563You can use this manual at your leisure to read all about @value{GDBN}. 564However, a handful of commands are enough to get started using the 565debugger. This chapter illustrates those commands. 566 567@iftex 568In this sample session, we emphasize user input like this: @b{input}, 569to make it easier to pick out from the surrounding output. 570@end iftex 571 572@c FIXME: this example may not be appropriate for some configs, where 573@c FIXME...primary interest is in remote use. 574 575One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro 576processor) exhibits the following bug: sometimes, when we change its 577quote strings from the default, the commands used to capture one macro 578definition within another stop working. In the following short @code{m4} 579session, we define a macro @code{foo} which expands to @code{0000}; we 580then use the @code{m4} built-in @code{defn} to define @code{bar} as the 581same thing. However, when we change the open quote string to 582@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same 583procedure fails to define a new synonym @code{baz}: 584 585@smallexample 586$ @b{cd gnu/m4} 587$ @b{./m4} 588@b{define(foo,0000)} 589 590@b{foo} 5910000 592@b{define(bar,defn(`foo'))} 593 594@b{bar} 5950000 596@b{changequote(<QUOTE>,<UNQUOTE>)} 597 598@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))} 599@b{baz} 600@b{Ctrl-d} 601m4: End of input: 0: fatal error: EOF in string 602@end smallexample 603 604@noindent 605Let us use @value{GDBN} to try to see what is going on. 606 607@smallexample 608$ @b{@value{GDBP} m4} 609@c FIXME: this falsifies the exact text played out, to permit smallbook 610@c FIXME... format to come out better. 611@value{GDBN} is free software and you are welcome to distribute copies 612 of it under certain conditions; type "show copying" to see 613 the conditions. 614There is absolutely no warranty for @value{GDBN}; type "show warranty" 615 for details. 616 617@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc... 618(@value{GDBP}) 619@end smallexample 620 621@noindent 622@value{GDBN} reads only enough symbol data to know where to find the 623rest when needed; as a result, the first prompt comes up very quickly. 624We now tell @value{GDBN} to use a narrower display width than usual, so 625that examples fit in this manual. 626 627@smallexample 628(@value{GDBP}) @b{set width 70} 629@end smallexample 630 631@noindent 632We need to see how the @code{m4} built-in @code{changequote} works. 633Having looked at the source, we know the relevant subroutine is 634@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN} 635@code{break} command. 636 637@smallexample 638(@value{GDBP}) @b{break m4_changequote} 639Breakpoint 1 at 0x62f4: file builtin.c, line 879. 640@end smallexample 641 642@noindent 643Using the @code{run} command, we start @code{m4} running under @value{GDBN} 644control; as long as control does not reach the @code{m4_changequote} 645subroutine, the program runs as usual: 646 647@smallexample 648(@value{GDBP}) @b{run} 649Starting program: /work/Editorial/gdb/gnu/m4/m4 650@b{define(foo,0000)} 651 652@b{foo} 6530000 654@end smallexample 655 656@noindent 657To trigger the breakpoint, we call @code{changequote}. @value{GDBN} 658suspends execution of @code{m4}, displaying information about the 659context where it stops. 660 661@smallexample 662@b{changequote(<QUOTE>,<UNQUOTE>)} 663 664Breakpoint 1, m4_changequote (argc=3, argv=0x33c70) 665 at builtin.c:879 666879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3)) 667@end smallexample 668 669@noindent 670Now we use the command @code{n} (@code{next}) to advance execution to 671the next line of the current function. 672 673@smallexample 674(@value{GDBP}) @b{n} 675882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\ 676 : nil, 677@end smallexample 678 679@noindent 680@code{set_quotes} looks like a promising subroutine. We can go into it 681by using the command @code{s} (@code{step}) instead of @code{next}. 682@code{step} goes to the next line to be executed in @emph{any} 683subroutine, so it steps into @code{set_quotes}. 684 685@smallexample 686(@value{GDBP}) @b{s} 687set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") 688 at input.c:530 689530 if (lquote != def_lquote) 690@end smallexample 691 692@noindent 693The display that shows the subroutine where @code{m4} is now 694suspended (and its arguments) is called a stack frame display. It 695shows a summary of the stack. We can use the @code{backtrace} 696command (which can also be spelled @code{bt}), to see where we are 697in the stack as a whole: the @code{backtrace} command displays a 698stack frame for each active subroutine. 699 700@smallexample 701(@value{GDBP}) @b{bt} 702#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") 703 at input.c:530 704#1 0x6344 in m4_changequote (argc=3, argv=0x33c70) 705 at builtin.c:882 706#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242 707#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30) 708 at macro.c:71 709#4 0x79dc in expand_input () at macro.c:40 710#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195 711@end smallexample 712 713@noindent 714We step through a few more lines to see what happens. The first two 715times, we can use @samp{s}; the next two times we use @code{n} to avoid 716falling into the @code{xstrdup} subroutine. 717 718@smallexample 719(@value{GDBP}) @b{s} 7200x3b5c 532 if (rquote != def_rquote) 721(@value{GDBP}) @b{s} 7220x3b80 535 lquote = (lq == nil || *lq == '\0') ? \ 723def_lquote : xstrdup(lq); 724(@value{GDBP}) @b{n} 725536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ 726 : xstrdup(rq); 727(@value{GDBP}) @b{n} 728538 len_lquote = strlen(rquote); 729@end smallexample 730 731@noindent 732The last line displayed looks a little odd; we can examine the variables 733@code{lquote} and @code{rquote} to see if they are in fact the new left 734and right quotes we specified. We use the command @code{p} 735(@code{print}) to see their values. 736 737@smallexample 738(@value{GDBP}) @b{p lquote} 739$1 = 0x35d40 "<QUOTE>" 740(@value{GDBP}) @b{p rquote} 741$2 = 0x35d50 "<UNQUOTE>" 742@end smallexample 743 744@noindent 745@code{lquote} and @code{rquote} are indeed the new left and right quotes. 746To look at some context, we can display ten lines of source 747surrounding the current line with the @code{l} (@code{list}) command. 748 749@smallexample 750(@value{GDBP}) @b{l} 751533 xfree(rquote); 752534 753535 lquote = (lq == nil || *lq == '\0') ? def_lquote\ 754 : xstrdup (lq); 755536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ 756 : xstrdup (rq); 757537 758538 len_lquote = strlen(rquote); 759539 len_rquote = strlen(lquote); 760540 @} 761541 762542 void 763@end smallexample 764 765@noindent 766Let us step past the two lines that set @code{len_lquote} and 767@code{len_rquote}, and then examine the values of those variables. 768 769@smallexample 770(@value{GDBP}) @b{n} 771539 len_rquote = strlen(lquote); 772(@value{GDBP}) @b{n} 773540 @} 774(@value{GDBP}) @b{p len_lquote} 775$3 = 9 776(@value{GDBP}) @b{p len_rquote} 777$4 = 7 778@end smallexample 779 780@noindent 781That certainly looks wrong, assuming @code{len_lquote} and 782@code{len_rquote} are meant to be the lengths of @code{lquote} and 783@code{rquote} respectively. We can set them to better values using 784the @code{p} command, since it can print the value of 785any expression---and that expression can include subroutine calls and 786assignments. 787 788@smallexample 789(@value{GDBP}) @b{p len_lquote=strlen(lquote)} 790$5 = 7 791(@value{GDBP}) @b{p len_rquote=strlen(rquote)} 792$6 = 9 793@end smallexample 794 795@noindent 796Is that enough to fix the problem of using the new quotes with the 797@code{m4} built-in @code{defn}? We can allow @code{m4} to continue 798executing with the @code{c} (@code{continue}) command, and then try the 799example that caused trouble initially: 800 801@smallexample 802(@value{GDBP}) @b{c} 803Continuing. 804 805@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))} 806 807baz 8080000 809@end smallexample 810 811@noindent 812Success! The new quotes now work just as well as the default ones. The 813problem seems to have been just the two typos defining the wrong 814lengths. We allow @code{m4} exit by giving it an EOF as input: 815 816@smallexample 817@b{Ctrl-d} 818Program exited normally. 819@end smallexample 820 821@noindent 822The message @samp{Program exited normally.} is from @value{GDBN}; it 823indicates @code{m4} has finished executing. We can end our @value{GDBN} 824session with the @value{GDBN} @code{quit} command. 825 826@smallexample 827(@value{GDBP}) @b{quit} 828@end smallexample 829 830@node Invocation 831@chapter Getting In and Out of @value{GDBN} 832 833This chapter discusses how to start @value{GDBN}, and how to get out of it. 834The essentials are: 835@itemize @bullet 836@item 837type @samp{@value{GDBP}} to start @value{GDBN}. 838@item 839type @kbd{quit} or @kbd{Ctrl-d} to exit. 840@end itemize 841 842@menu 843* Invoking GDB:: How to start @value{GDBN} 844* Quitting GDB:: How to quit @value{GDBN} 845* Shell Commands:: How to use shell commands inside @value{GDBN} 846* Logging Output:: How to log @value{GDBN}'s output to a file 847@end menu 848 849@node Invoking GDB 850@section Invoking @value{GDBN} 851 852Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started, 853@value{GDBN} reads commands from the terminal until you tell it to exit. 854 855You can also run @code{@value{GDBP}} with a variety of arguments and options, 856to specify more of your debugging environment at the outset. 857 858The command-line options described here are designed 859to cover a variety of situations; in some environments, some of these 860options may effectively be unavailable. 861 862The most usual way to start @value{GDBN} is with one argument, 863specifying an executable program: 864 865@smallexample 866@value{GDBP} @var{program} 867@end smallexample 868 869@noindent 870You can also start with both an executable program and a core file 871specified: 872 873@smallexample 874@value{GDBP} @var{program} @var{core} 875@end smallexample 876 877You can, instead, specify a process ID as a second argument, if you want 878to debug a running process: 879 880@smallexample 881@value{GDBP} @var{program} 1234 882@end smallexample 883 884@noindent 885would attach @value{GDBN} to process @code{1234} (unless you also have a file 886named @file{1234}; @value{GDBN} does check for a core file first). 887 888Taking advantage of the second command-line argument requires a fairly 889complete operating system; when you use @value{GDBN} as a remote 890debugger attached to a bare board, there may not be any notion of 891``process'', and there is often no way to get a core dump. @value{GDBN} 892will warn you if it is unable to attach or to read core dumps. 893 894You can optionally have @code{@value{GDBP}} pass any arguments after the 895executable file to the inferior using @code{--args}. This option stops 896option processing. 897@smallexample 898@value{GDBP} --args gcc -O2 -c foo.c 899@end smallexample 900This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set 901@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}. 902 903You can run @code{@value{GDBP}} without printing the front material, which describes 904@value{GDBN}'s non-warranty, by specifying @code{--silent} 905(or @code{-q}/@code{--quiet}): 906 907@smallexample 908@value{GDBP} --silent 909@end smallexample 910 911@noindent 912You can further control how @value{GDBN} starts up by using command-line 913options. @value{GDBN} itself can remind you of the options available. 914 915@noindent 916Type 917 918@smallexample 919@value{GDBP} -help 920@end smallexample 921 922@noindent 923to display all available options and briefly describe their use 924(@samp{@value{GDBP} -h} is a shorter equivalent). 925 926All options and command line arguments you give are processed 927in sequential order. The order makes a difference when the 928@samp{-x} option is used. 929 930 931@menu 932* File Options:: Choosing files 933* Mode Options:: Choosing modes 934* Startup:: What @value{GDBN} does during startup 935@end menu 936 937@node File Options 938@subsection Choosing Files 939 940When @value{GDBN} starts, it reads any arguments other than options as 941specifying an executable file and core file (or process ID). This is 942the same as if the arguments were specified by the @samp{-se} and 943@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the 944first argument that does not have an associated option flag as 945equivalent to the @samp{-se} option followed by that argument; and the 946second argument that does not have an associated option flag, if any, as 947equivalent to the @samp{-c}/@samp{-p} option followed by that argument.) 948If the second argument begins with a decimal digit, @value{GDBN} will 949first attempt to attach to it as a process, and if that fails, attempt 950to open it as a corefile. If you have a corefile whose name begins with 951a digit, you can prevent @value{GDBN} from treating it as a pid by 952prefixing it with @file{./}, e.g.@: @file{./12345}. 953 954If @value{GDBN} has not been configured to included core file support, 955such as for most embedded targets, then it will complain about a second 956argument and ignore it. 957 958Many options have both long and short forms; both are shown in the 959following list. @value{GDBN} also recognizes the long forms if you truncate 960them, so long as enough of the option is present to be unambiguous. 961(If you prefer, you can flag option arguments with @samp{--} rather 962than @samp{-}, though we illustrate the more usual convention.) 963 964@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This 965@c way, both those who look for -foo and --foo in the index, will find 966@c it. 967 968@table @code 969@item -symbols @var{file} 970@itemx -s @var{file} 971@cindex @code{--symbols} 972@cindex @code{-s} 973Read symbol table from file @var{file}. 974 975@item -exec @var{file} 976@itemx -e @var{file} 977@cindex @code{--exec} 978@cindex @code{-e} 979Use file @var{file} as the executable file to execute when appropriate, 980and for examining pure data in conjunction with a core dump. 981 982@item -se @var{file} 983@cindex @code{--se} 984Read symbol table from file @var{file} and use it as the executable 985file. 986 987@item -core @var{file} 988@itemx -c @var{file} 989@cindex @code{--core} 990@cindex @code{-c} 991Use file @var{file} as a core dump to examine. 992 993@item -pid @var{number} 994@itemx -p @var{number} 995@cindex @code{--pid} 996@cindex @code{-p} 997Connect to process ID @var{number}, as with the @code{attach} command. 998 999@item -command @var{file} 1000@itemx -x @var{file} 1001@cindex @code{--command} 1002@cindex @code{-x} 1003Execute commands from file @var{file}. The contents of this file is 1004evaluated exactly as the @code{source} command would. 1005@xref{Command Files,, Command files}. 1006 1007@item -eval-command @var{command} 1008@itemx -ex @var{command} 1009@cindex @code{--eval-command} 1010@cindex @code{-ex} 1011Execute a single @value{GDBN} command. 1012 1013This option may be used multiple times to call multiple commands. It may 1014also be interleaved with @samp{-command} as required. 1015 1016@smallexample 1017@value{GDBP} -ex 'target sim' -ex 'load' \ 1018 -x setbreakpoints -ex 'run' a.out 1019@end smallexample 1020 1021@item -init-command @var{file} 1022@itemx -ix @var{file} 1023@cindex @code{--init-command} 1024@cindex @code{-ix} 1025Execute commands from file @var{file} before loading the inferior (but 1026after loading gdbinit files). 1027@xref{Startup}. 1028 1029@item -init-eval-command @var{command} 1030@itemx -iex @var{command} 1031@cindex @code{--init-eval-command} 1032@cindex @code{-iex} 1033Execute a single @value{GDBN} command before loading the inferior (but 1034after loading gdbinit files). 1035@xref{Startup}. 1036 1037@item -directory @var{directory} 1038@itemx -d @var{directory} 1039@cindex @code{--directory} 1040@cindex @code{-d} 1041Add @var{directory} to the path to search for source and script files. 1042 1043@item -r 1044@itemx -readnow 1045@cindex @code{--readnow} 1046@cindex @code{-r} 1047Read each symbol file's entire symbol table immediately, rather than 1048the default, which is to read it incrementally as it is needed. 1049This makes startup slower, but makes future operations faster. 1050 1051@item --readnever 1052@anchor{--readnever} 1053@cindex @code{--readnever}, command-line option 1054Do not read each symbol file's symbolic debug information. This makes 1055startup faster but at the expense of not being able to perform 1056symbolic debugging. DWARF unwind information is also not read, 1057meaning backtraces may become incomplete or inaccurate. One use of 1058this is when a user simply wants to do the following sequence: attach, 1059dump core, detach. Loading the debugging information in this case is 1060an unnecessary cause of delay. 1061@end table 1062 1063@node Mode Options 1064@subsection Choosing Modes 1065 1066You can run @value{GDBN} in various alternative modes---for example, in 1067batch mode or quiet mode. 1068 1069@table @code 1070@anchor{-nx} 1071@item -nx 1072@itemx -n 1073@cindex @code{--nx} 1074@cindex @code{-n} 1075Do not execute commands found in any initialization file. 1076There are three init files, loaded in the following order: 1077 1078@table @code 1079@item @file{system.gdbinit} 1080This is the system-wide init file. 1081Its location is specified with the @code{--with-system-gdbinit} 1082configure option (@pxref{System-wide configuration}). 1083It is loaded first when @value{GDBN} starts, before command line options 1084have been processed. 1085@item @file{~/.gdbinit} 1086This is the init file in your home directory. 1087It is loaded next, after @file{system.gdbinit}, and before 1088command options have been processed. 1089@item @file{./.gdbinit} 1090This is the init file in the current directory. 1091It is loaded last, after command line options other than @code{-x} and 1092@code{-ex} have been processed. Command line options @code{-x} and 1093@code{-ex} are processed last, after @file{./.gdbinit} has been loaded. 1094@end table 1095 1096For further documentation on startup processing, @xref{Startup}. 1097For documentation on how to write command files, 1098@xref{Command Files,,Command Files}. 1099 1100@anchor{-nh} 1101@item -nh 1102@cindex @code{--nh} 1103Do not execute commands found in @file{~/.gdbinit}, the init file 1104in your home directory. 1105@xref{Startup}. 1106 1107@item -quiet 1108@itemx -silent 1109@itemx -q 1110@cindex @code{--quiet} 1111@cindex @code{--silent} 1112@cindex @code{-q} 1113``Quiet''. Do not print the introductory and copyright messages. These 1114messages are also suppressed in batch mode. 1115 1116@item -batch 1117@cindex @code{--batch} 1118Run in batch mode. Exit with status @code{0} after processing all the 1119command files specified with @samp{-x} (and all commands from 1120initialization files, if not inhibited with @samp{-n}). Exit with 1121nonzero status if an error occurs in executing the @value{GDBN} commands 1122in the command files. Batch mode also disables pagination, sets unlimited 1123terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm 1124off} were in effect (@pxref{Messages/Warnings}). 1125 1126Batch mode may be useful for running @value{GDBN} as a filter, for 1127example to download and run a program on another computer; in order to 1128make this more useful, the message 1129 1130@smallexample 1131Program exited normally. 1132@end smallexample 1133 1134@noindent 1135(which is ordinarily issued whenever a program running under 1136@value{GDBN} control terminates) is not issued when running in batch 1137mode. 1138 1139@item -batch-silent 1140@cindex @code{--batch-silent} 1141Run in batch mode exactly like @samp{-batch}, but totally silently. All 1142@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is 1143unaffected). This is much quieter than @samp{-silent} and would be useless 1144for an interactive session. 1145 1146This is particularly useful when using targets that give @samp{Loading section} 1147messages, for example. 1148 1149Note that targets that give their output via @value{GDBN}, as opposed to 1150writing directly to @code{stdout}, will also be made silent. 1151 1152@item -return-child-result 1153@cindex @code{--return-child-result} 1154The return code from @value{GDBN} will be the return code from the child 1155process (the process being debugged), with the following exceptions: 1156 1157@itemize @bullet 1158@item 1159@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an 1160internal error. In this case the exit code is the same as it would have been 1161without @samp{-return-child-result}. 1162@item 1163The user quits with an explicit value. E.g., @samp{quit 1}. 1164@item 1165The child process never runs, or is not allowed to terminate, in which case 1166the exit code will be -1. 1167@end itemize 1168 1169This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent}, 1170when @value{GDBN} is being used as a remote program loader or simulator 1171interface. 1172 1173@item -nowindows 1174@itemx -nw 1175@cindex @code{--nowindows} 1176@cindex @code{-nw} 1177``No windows''. If @value{GDBN} comes with a graphical user interface 1178(GUI) built in, then this option tells @value{GDBN} to only use the command-line 1179interface. If no GUI is available, this option has no effect. 1180 1181@item -windows 1182@itemx -w 1183@cindex @code{--windows} 1184@cindex @code{-w} 1185If @value{GDBN} includes a GUI, then this option requires it to be 1186used if possible. 1187 1188@item -cd @var{directory} 1189@cindex @code{--cd} 1190Run @value{GDBN} using @var{directory} as its working directory, 1191instead of the current directory. 1192 1193@item -data-directory @var{directory} 1194@itemx -D @var{directory} 1195@cindex @code{--data-directory} 1196@cindex @code{-D} 1197Run @value{GDBN} using @var{directory} as its data directory. 1198The data directory is where @value{GDBN} searches for its 1199auxiliary files. @xref{Data Files}. 1200 1201@item -fullname 1202@itemx -f 1203@cindex @code{--fullname} 1204@cindex @code{-f} 1205@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a 1206subprocess. It tells @value{GDBN} to output the full file name and line 1207number in a standard, recognizable fashion each time a stack frame is 1208displayed (which includes each time your program stops). This 1209recognizable format looks like two @samp{\032} characters, followed by 1210the file name, line number and character position separated by colons, 1211and a newline. The Emacs-to-@value{GDBN} interface program uses the two 1212@samp{\032} characters as a signal to display the source code for the 1213frame. 1214 1215@item -annotate @var{level} 1216@cindex @code{--annotate} 1217This option sets the @dfn{annotation level} inside @value{GDBN}. Its 1218effect is identical to using @samp{set annotate @var{level}} 1219(@pxref{Annotations}). The annotation @var{level} controls how much 1220information @value{GDBN} prints together with its prompt, values of 1221expressions, source lines, and other types of output. Level 0 is the 1222normal, level 1 is for use when @value{GDBN} is run as a subprocess of 1223@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs 1224that control @value{GDBN}, and level 2 has been deprecated. 1225 1226The annotation mechanism has largely been superseded by @sc{gdb/mi} 1227(@pxref{GDB/MI}). 1228 1229@item --args 1230@cindex @code{--args} 1231Change interpretation of command line so that arguments following the 1232executable file are passed as command line arguments to the inferior. 1233This option stops option processing. 1234 1235@item -baud @var{bps} 1236@itemx -b @var{bps} 1237@cindex @code{--baud} 1238@cindex @code{-b} 1239Set the line speed (baud rate or bits per second) of any serial 1240interface used by @value{GDBN} for remote debugging. 1241 1242@item -l @var{timeout} 1243@cindex @code{-l} 1244Set the timeout (in seconds) of any communication used by @value{GDBN} 1245for remote debugging. 1246 1247@item -tty @var{device} 1248@itemx -t @var{device} 1249@cindex @code{--tty} 1250@cindex @code{-t} 1251Run using @var{device} for your program's standard input and output. 1252@c FIXME: kingdon thinks there is more to -tty. Investigate. 1253 1254@c resolve the situation of these eventually 1255@item -tui 1256@cindex @code{--tui} 1257Activate the @dfn{Text User Interface} when starting. The Text User 1258Interface manages several text windows on the terminal, showing 1259source, assembly, registers and @value{GDBN} command outputs 1260(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this 1261option if you run @value{GDBN} from Emacs (@pxref{Emacs, , 1262Using @value{GDBN} under @sc{gnu} Emacs}). 1263 1264@item -interpreter @var{interp} 1265@cindex @code{--interpreter} 1266Use the interpreter @var{interp} for interface with the controlling 1267program or device. This option is meant to be set by programs which 1268communicate with @value{GDBN} using it as a back end. 1269@xref{Interpreters, , Command Interpreters}. 1270 1271@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes 1272@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, , 1273The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The 1274previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and 1275selected with @samp{--interpreter=mi1}, is deprecated. Earlier 1276@sc{gdb/mi} interfaces are no longer supported. 1277 1278@item -write 1279@cindex @code{--write} 1280Open the executable and core files for both reading and writing. This 1281is equivalent to the @samp{set write on} command inside @value{GDBN} 1282(@pxref{Patching}). 1283 1284@item -statistics 1285@cindex @code{--statistics} 1286This option causes @value{GDBN} to print statistics about time and 1287memory usage after it completes each command and returns to the prompt. 1288 1289@item -version 1290@cindex @code{--version} 1291This option causes @value{GDBN} to print its version number and 1292no-warranty blurb, and exit. 1293 1294@item -configuration 1295@cindex @code{--configuration} 1296This option causes @value{GDBN} to print details about its build-time 1297configuration parameters, and then exit. These details can be 1298important when reporting @value{GDBN} bugs (@pxref{GDB Bugs}). 1299 1300@end table 1301 1302@node Startup 1303@subsection What @value{GDBN} Does During Startup 1304@cindex @value{GDBN} startup 1305 1306Here's the description of what @value{GDBN} does during session startup: 1307 1308@enumerate 1309@item 1310Sets up the command interpreter as specified by the command line 1311(@pxref{Mode Options, interpreter}). 1312 1313@item 1314@cindex init file 1315Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was 1316used when building @value{GDBN}; @pxref{System-wide configuration, 1317 ,System-wide configuration and settings}) and executes all the commands in 1318that file. 1319 1320@anchor{Home Directory Init File} 1321@item 1322Reads the init file (if any) in your home directory@footnote{On 1323DOS/Windows systems, the home directory is the one pointed to by the 1324@code{HOME} environment variable.} and executes all the commands in 1325that file. 1326 1327@anchor{Option -init-eval-command} 1328@item 1329Executes commands and command files specified by the @samp{-iex} and 1330@samp{-ix} options in their specified order. Usually you should use the 1331@samp{-ex} and @samp{-x} options instead, but this way you can apply 1332settings before @value{GDBN} init files get executed and before inferior 1333gets loaded. 1334 1335@item 1336Processes command line options and operands. 1337 1338@anchor{Init File in the Current Directory during Startup} 1339@item 1340Reads and executes the commands from init file (if any) in the current 1341working directory as long as @samp{set auto-load local-gdbinit} is set to 1342@samp{on} (@pxref{Init File in the Current Directory}). 1343This is only done if the current directory is 1344different from your home directory. Thus, you can have more than one 1345init file, one generic in your home directory, and another, specific 1346to the program you are debugging, in the directory where you invoke 1347@value{GDBN}. 1348 1349@item 1350If the command line specified a program to debug, or a process to 1351attach to, or a core file, @value{GDBN} loads any auto-loaded 1352scripts provided for the program or for its loaded shared libraries. 1353@xref{Auto-loading}. 1354 1355If you wish to disable the auto-loading during startup, 1356you must do something like the following: 1357 1358@smallexample 1359$ gdb -iex "set auto-load python-scripts off" myprogram 1360@end smallexample 1361 1362Option @samp{-ex} does not work because the auto-loading is then turned 1363off too late. 1364 1365@item 1366Executes commands and command files specified by the @samp{-ex} and 1367@samp{-x} options in their specified order. @xref{Command Files}, for 1368more details about @value{GDBN} command files. 1369 1370@item 1371Reads the command history recorded in the @dfn{history file}. 1372@xref{Command History}, for more details about the command history and the 1373files where @value{GDBN} records it. 1374@end enumerate 1375 1376Init files use the same syntax as @dfn{command files} (@pxref{Command 1377Files}) and are processed by @value{GDBN} in the same way. The init 1378file in your home directory can set options (such as @samp{set 1379complaints}) that affect subsequent processing of command line options 1380and operands. Init files are not executed if you use the @samp{-nx} 1381option (@pxref{Mode Options, ,Choosing Modes}). 1382 1383To display the list of init files loaded by gdb at startup, you 1384can use @kbd{gdb --help}. 1385 1386@cindex init file name 1387@cindex @file{.gdbinit} 1388@cindex @file{gdb.ini} 1389The @value{GDBN} init files are normally called @file{.gdbinit}. 1390The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to 1391the limitations of file names imposed by DOS filesystems. The Windows 1392port of @value{GDBN} uses the standard name, but if it finds a 1393@file{gdb.ini} file in your home directory, it warns you about that 1394and suggests to rename the file to the standard name. 1395 1396 1397@node Quitting GDB 1398@section Quitting @value{GDBN} 1399@cindex exiting @value{GDBN} 1400@cindex leaving @value{GDBN} 1401 1402@table @code 1403@kindex quit @r{[}@var{expression}@r{]} 1404@kindex q @r{(@code{quit})} 1405@item quit @r{[}@var{expression}@r{]} 1406@itemx q 1407To exit @value{GDBN}, use the @code{quit} command (abbreviated 1408@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you 1409do not supply @var{expression}, @value{GDBN} will terminate normally; 1410otherwise it will terminate using the result of @var{expression} as the 1411error code. 1412@end table 1413 1414@cindex interrupt 1415An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather 1416terminates the action of any @value{GDBN} command that is in progress and 1417returns to @value{GDBN} command level. It is safe to type the interrupt 1418character at any time because @value{GDBN} does not allow it to take effect 1419until a time when it is safe. 1420 1421If you have been using @value{GDBN} to control an attached process or 1422device, you can release it with the @code{detach} command 1423(@pxref{Attach, ,Debugging an Already-running Process}). 1424 1425@node Shell Commands 1426@section Shell Commands 1427 1428If you need to execute occasional shell commands during your 1429debugging session, there is no need to leave or suspend @value{GDBN}; you can 1430just use the @code{shell} command. 1431 1432@table @code 1433@kindex shell 1434@kindex ! 1435@cindex shell escape 1436@item shell @var{command-string} 1437@itemx !@var{command-string} 1438Invoke a standard shell to execute @var{command-string}. 1439Note that no space is needed between @code{!} and @var{command-string}. 1440If it exists, the environment variable @code{SHELL} determines which 1441shell to run. Otherwise @value{GDBN} uses the default shell 1442(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.). 1443@end table 1444 1445The utility @code{make} is often needed in development environments. 1446You do not have to use the @code{shell} command for this purpose in 1447@value{GDBN}: 1448 1449@table @code 1450@kindex make 1451@cindex calling make 1452@item make @var{make-args} 1453Execute the @code{make} program with the specified 1454arguments. This is equivalent to @samp{shell make @var{make-args}}. 1455@end table 1456 1457@node Logging Output 1458@section Logging Output 1459@cindex logging @value{GDBN} output 1460@cindex save @value{GDBN} output to a file 1461 1462You may want to save the output of @value{GDBN} commands to a file. 1463There are several commands to control @value{GDBN}'s logging. 1464 1465@table @code 1466@kindex set logging 1467@item set logging on 1468Enable logging. 1469@item set logging off 1470Disable logging. 1471@cindex logging file name 1472@item set logging file @var{file} 1473Change the name of the current logfile. The default logfile is @file{gdb.txt}. 1474@item set logging overwrite [on|off] 1475By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if 1476you want @code{set logging on} to overwrite the logfile instead. 1477@item set logging redirect [on|off] 1478By default, @value{GDBN} output will go to both the terminal and the logfile. 1479Set @code{redirect} if you want output to go only to the log file. 1480@kindex show logging 1481@item show logging 1482Show the current values of the logging settings. 1483@end table 1484 1485@node Commands 1486@chapter @value{GDBN} Commands 1487 1488You can abbreviate a @value{GDBN} command to the first few letters of the command 1489name, if that abbreviation is unambiguous; and you can repeat certain 1490@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB} 1491key to get @value{GDBN} to fill out the rest of a word in a command (or to 1492show you the alternatives available, if there is more than one possibility). 1493 1494@menu 1495* Command Syntax:: How to give commands to @value{GDBN} 1496* Completion:: Command completion 1497* Help:: How to ask @value{GDBN} for help 1498@end menu 1499 1500@node Command Syntax 1501@section Command Syntax 1502 1503A @value{GDBN} command is a single line of input. There is no limit on 1504how long it can be. It starts with a command name, which is followed by 1505arguments whose meaning depends on the command name. For example, the 1506command @code{step} accepts an argument which is the number of times to 1507step, as in @samp{step 5}. You can also use the @code{step} command 1508with no arguments. Some commands do not allow any arguments. 1509 1510@cindex abbreviation 1511@value{GDBN} command names may always be truncated if that abbreviation is 1512unambiguous. Other possible command abbreviations are listed in the 1513documentation for individual commands. In some cases, even ambiguous 1514abbreviations are allowed; for example, @code{s} is specially defined as 1515equivalent to @code{step} even though there are other commands whose 1516names start with @code{s}. You can test abbreviations by using them as 1517arguments to the @code{help} command. 1518 1519@cindex repeating commands 1520@kindex RET @r{(repeat last command)} 1521A blank line as input to @value{GDBN} (typing just @key{RET}) means to 1522repeat the previous command. Certain commands (for example, @code{run}) 1523will not repeat this way; these are commands whose unintentional 1524repetition might cause trouble and which you are unlikely to want to 1525repeat. User-defined commands can disable this feature; see 1526@ref{Define, dont-repeat}. 1527 1528The @code{list} and @code{x} commands, when you repeat them with 1529@key{RET}, construct new arguments rather than repeating 1530exactly as typed. This permits easy scanning of source or memory. 1531 1532@value{GDBN} can also use @key{RET} in another way: to partition lengthy 1533output, in a way similar to the common utility @code{more} 1534(@pxref{Screen Size,,Screen Size}). Since it is easy to press one 1535@key{RET} too many in this situation, @value{GDBN} disables command 1536repetition after any command that generates this sort of display. 1537 1538@kindex # @r{(a comment)} 1539@cindex comment 1540Any text from a @kbd{#} to the end of the line is a comment; it does 1541nothing. This is useful mainly in command files (@pxref{Command 1542Files,,Command Files}). 1543 1544@cindex repeating command sequences 1545@kindex Ctrl-o @r{(operate-and-get-next)} 1546The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of 1547commands. This command accepts the current line, like @key{RET}, and 1548then fetches the next line relative to the current line from the history 1549for editing. 1550 1551@node Completion 1552@section Command Completion 1553 1554@cindex completion 1555@cindex word completion 1556@value{GDBN} can fill in the rest of a word in a command for you, if there is 1557only one possibility; it can also show you what the valid possibilities 1558are for the next word in a command, at any time. This works for @value{GDBN} 1559commands, @value{GDBN} subcommands, and the names of symbols in your program. 1560 1561Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest 1562of a word. If there is only one possibility, @value{GDBN} fills in the 1563word, and waits for you to finish the command (or press @key{RET} to 1564enter it). For example, if you type 1565 1566@c FIXME "@key" does not distinguish its argument sufficiently to permit 1567@c complete accuracy in these examples; space introduced for clarity. 1568@c If texinfo enhancements make it unnecessary, it would be nice to 1569@c replace " @key" by "@key" in the following... 1570@smallexample 1571(@value{GDBP}) info bre @key{TAB} 1572@end smallexample 1573 1574@noindent 1575@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is 1576the only @code{info} subcommand beginning with @samp{bre}: 1577 1578@smallexample 1579(@value{GDBP}) info breakpoints 1580@end smallexample 1581 1582@noindent 1583You can either press @key{RET} at this point, to run the @code{info 1584breakpoints} command, or backspace and enter something else, if 1585@samp{breakpoints} does not look like the command you expected. (If you 1586were sure you wanted @code{info breakpoints} in the first place, you 1587might as well just type @key{RET} immediately after @samp{info bre}, 1588to exploit command abbreviations rather than command completion). 1589 1590If there is more than one possibility for the next word when you press 1591@key{TAB}, @value{GDBN} sounds a bell. You can either supply more 1592characters and try again, or just press @key{TAB} a second time; 1593@value{GDBN} displays all the possible completions for that word. For 1594example, you might want to set a breakpoint on a subroutine whose name 1595begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN} 1596just sounds the bell. Typing @key{TAB} again displays all the 1597function names in your program that begin with those characters, for 1598example: 1599 1600@smallexample 1601(@value{GDBP}) b make_ @key{TAB} 1602@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see: 1603make_a_section_from_file make_environ 1604make_abs_section make_function_type 1605make_blockvector make_pointer_type 1606make_cleanup make_reference_type 1607make_command make_symbol_completion_list 1608(@value{GDBP}) b make_ 1609@end smallexample 1610 1611@noindent 1612After displaying the available possibilities, @value{GDBN} copies your 1613partial input (@samp{b make_} in the example) so you can finish the 1614command. 1615 1616If you just want to see the list of alternatives in the first place, you 1617can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?} 1618means @kbd{@key{META} ?}. You can type this either by holding down a 1619key designated as the @key{META} shift on your keyboard (if there is 1620one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}. 1621 1622If the number of possible completions is large, @value{GDBN} will 1623print as much of the list as it has collected, as well as a message 1624indicating that the list may be truncated. 1625 1626@smallexample 1627(@value{GDBP}) b m@key{TAB}@key{TAB} 1628main 1629<... the rest of the possible completions ...> 1630*** List may be truncated, max-completions reached. *** 1631(@value{GDBP}) b m 1632@end smallexample 1633 1634@noindent 1635This behavior can be controlled with the following commands: 1636 1637@table @code 1638@kindex set max-completions 1639@item set max-completions @var{limit} 1640@itemx set max-completions unlimited 1641Set the maximum number of completion candidates. @value{GDBN} will 1642stop looking for more completions once it collects this many candidates. 1643This is useful when completing on things like function names as collecting 1644all the possible candidates can be time consuming. 1645The default value is 200. A value of zero disables tab-completion. 1646Note that setting either no limit or a very large limit can make 1647completion slow. 1648@kindex show max-completions 1649@item show max-completions 1650Show the maximum number of candidates that @value{GDBN} will collect and show 1651during completion. 1652@end table 1653 1654@cindex quotes in commands 1655@cindex completion of quoted strings 1656Sometimes the string you need, while logically a ``word'', may contain 1657parentheses or other characters that @value{GDBN} normally excludes from 1658its notion of a word. To permit word completion to work in this 1659situation, you may enclose words in @code{'} (single quote marks) in 1660@value{GDBN} commands. 1661 1662A likely situation where you might need this is in typing an 1663expression that involves a C@t{++} symbol name with template 1664parameters. This is because when completing expressions, GDB treats 1665the @samp{<} character as word delimiter, assuming that it's the 1666less-than comparison operator (@pxref{C Operators, , C and C@t{++} 1667Operators}). 1668 1669For example, when you want to call a C@t{++} template function 1670interactively using the @code{print} or @code{call} commands, you may 1671need to distinguish whether you mean the version of @code{name} that 1672was specialized for @code{int}, @code{name<int>()}, or the version 1673that was specialized for @code{float}, @code{name<float>()}. To use 1674the word-completion facilities in this situation, type a single quote 1675@code{'} at the beginning of the function name. This alerts 1676@value{GDBN} that it may need to consider more information than usual 1677when you press @key{TAB} or @kbd{M-?} to request word completion: 1678 1679@smallexample 1680(@value{GDBP}) p 'func< @kbd{M-?} 1681func<int>() func<float>() 1682(@value{GDBP}) p 'func< 1683@end smallexample 1684 1685When setting breakpoints however (@pxref{Specify Location}), you don't 1686usually need to type a quote before the function name, because 1687@value{GDBN} understands that you want to set a breakpoint on a 1688function: 1689 1690@smallexample 1691(@value{GDBP}) b func< @kbd{M-?} 1692func<int>() func<float>() 1693(@value{GDBP}) b func< 1694@end smallexample 1695 1696This is true even in the case of typing the name of C@t{++} overloaded 1697functions (multiple definitions of the same function, distinguished by 1698argument type). For example, when you want to set a breakpoint you 1699don't need to distinguish whether you mean the version of @code{name} 1700that takes an @code{int} parameter, @code{name(int)}, or the version 1701that takes a @code{float} parameter, @code{name(float)}. 1702 1703@smallexample 1704(@value{GDBP}) b bubble( @kbd{M-?} 1705bubble(int) bubble(double) 1706(@value{GDBP}) b bubble(dou @kbd{M-?} 1707bubble(double) 1708@end smallexample 1709 1710See @ref{quoting names} for a description of other scenarios that 1711require quoting. 1712 1713For more information about overloaded functions, see @ref{C Plus Plus 1714Expressions, ,C@t{++} Expressions}. You can use the command @code{set 1715overload-resolution off} to disable overload resolution; 1716see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}. 1717 1718@cindex completion of structure field names 1719@cindex structure field name completion 1720@cindex completion of union field names 1721@cindex union field name completion 1722When completing in an expression which looks up a field in a 1723structure, @value{GDBN} also tries@footnote{The completer can be 1724confused by certain kinds of invalid expressions. Also, it only 1725examines the static type of the expression, not the dynamic type.} to 1726limit completions to the field names available in the type of the 1727left-hand-side: 1728 1729@smallexample 1730(@value{GDBP}) p gdb_stdout.@kbd{M-?} 1731magic to_fputs to_rewind 1732to_data to_isatty to_write 1733to_delete to_put to_write_async_safe 1734to_flush to_read 1735@end smallexample 1736 1737@noindent 1738This is because the @code{gdb_stdout} is a variable of the type 1739@code{struct ui_file} that is defined in @value{GDBN} sources as 1740follows: 1741 1742@smallexample 1743struct ui_file 1744@{ 1745 int *magic; 1746 ui_file_flush_ftype *to_flush; 1747 ui_file_write_ftype *to_write; 1748 ui_file_write_async_safe_ftype *to_write_async_safe; 1749 ui_file_fputs_ftype *to_fputs; 1750 ui_file_read_ftype *to_read; 1751 ui_file_delete_ftype *to_delete; 1752 ui_file_isatty_ftype *to_isatty; 1753 ui_file_rewind_ftype *to_rewind; 1754 ui_file_put_ftype *to_put; 1755 void *to_data; 1756@} 1757@end smallexample 1758 1759 1760@node Help 1761@section Getting Help 1762@cindex online documentation 1763@kindex help 1764 1765You can always ask @value{GDBN} itself for information on its commands, 1766using the command @code{help}. 1767 1768@table @code 1769@kindex h @r{(@code{help})} 1770@item help 1771@itemx h 1772You can use @code{help} (abbreviated @code{h}) with no arguments to 1773display a short list of named classes of commands: 1774 1775@smallexample 1776(@value{GDBP}) help 1777List of classes of commands: 1778 1779aliases -- Aliases of other commands 1780breakpoints -- Making program stop at certain points 1781data -- Examining data 1782files -- Specifying and examining files 1783internals -- Maintenance commands 1784obscure -- Obscure features 1785running -- Running the program 1786stack -- Examining the stack 1787status -- Status inquiries 1788support -- Support facilities 1789tracepoints -- Tracing of program execution without 1790 stopping the program 1791user-defined -- User-defined commands 1792 1793Type "help" followed by a class name for a list of 1794commands in that class. 1795Type "help" followed by command name for full 1796documentation. 1797Command name abbreviations are allowed if unambiguous. 1798(@value{GDBP}) 1799@end smallexample 1800@c the above line break eliminates huge line overfull... 1801 1802@item help @var{class} 1803Using one of the general help classes as an argument, you can get a 1804list of the individual commands in that class. For example, here is the 1805help display for the class @code{status}: 1806 1807@smallexample 1808(@value{GDBP}) help status 1809Status inquiries. 1810 1811List of commands: 1812 1813@c Line break in "show" line falsifies real output, but needed 1814@c to fit in smallbook page size. 1815info -- Generic command for showing things 1816 about the program being debugged 1817show -- Generic command for showing things 1818 about the debugger 1819 1820Type "help" followed by command name for full 1821documentation. 1822Command name abbreviations are allowed if unambiguous. 1823(@value{GDBP}) 1824@end smallexample 1825 1826@item help @var{command} 1827With a command name as @code{help} argument, @value{GDBN} displays a 1828short paragraph on how to use that command. 1829 1830@kindex apropos 1831@item apropos @var{args} 1832The @code{apropos} command searches through all of the @value{GDBN} 1833commands, and their documentation, for the regular expression specified in 1834@var{args}. It prints out all matches found. For example: 1835 1836@smallexample 1837apropos alias 1838@end smallexample 1839 1840@noindent 1841results in: 1842 1843@smallexample 1844@c @group 1845alias -- Define a new command that is an alias of an existing command 1846aliases -- Aliases of other commands 1847d -- Delete some breakpoints or auto-display expressions 1848del -- Delete some breakpoints or auto-display expressions 1849delete -- Delete some breakpoints or auto-display expressions 1850@c @end group 1851@end smallexample 1852 1853@kindex complete 1854@item complete @var{args} 1855The @code{complete @var{args}} command lists all the possible completions 1856for the beginning of a command. Use @var{args} to specify the beginning of the 1857command you want completed. For example: 1858 1859@smallexample 1860complete i 1861@end smallexample 1862 1863@noindent results in: 1864 1865@smallexample 1866@group 1867if 1868ignore 1869info 1870inspect 1871@end group 1872@end smallexample 1873 1874@noindent This is intended for use by @sc{gnu} Emacs. 1875@end table 1876 1877In addition to @code{help}, you can use the @value{GDBN} commands @code{info} 1878and @code{show} to inquire about the state of your program, or the state 1879of @value{GDBN} itself. Each command supports many topics of inquiry; this 1880manual introduces each of them in the appropriate context. The listings 1881under @code{info} and under @code{show} in the Command, Variable, and 1882Function Index point to all the sub-commands. @xref{Command and Variable 1883Index}. 1884 1885@c @group 1886@table @code 1887@kindex info 1888@kindex i @r{(@code{info})} 1889@item info 1890This command (abbreviated @code{i}) is for describing the state of your 1891program. For example, you can show the arguments passed to a function 1892with @code{info args}, list the registers currently in use with @code{info 1893registers}, or list the breakpoints you have set with @code{info breakpoints}. 1894You can get a complete list of the @code{info} sub-commands with 1895@w{@code{help info}}. 1896 1897@kindex set 1898@item set 1899You can assign the result of an expression to an environment variable with 1900@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with 1901@code{set prompt $}. 1902 1903@kindex show 1904@item show 1905In contrast to @code{info}, @code{show} is for describing the state of 1906@value{GDBN} itself. 1907You can change most of the things you can @code{show}, by using the 1908related command @code{set}; for example, you can control what number 1909system is used for displays with @code{set radix}, or simply inquire 1910which is currently in use with @code{show radix}. 1911 1912@kindex info set 1913To display all the settable parameters and their current 1914values, you can use @code{show} with no arguments; you may also use 1915@code{info set}. Both commands produce the same display. 1916@c FIXME: "info set" violates the rule that "info" is for state of 1917@c FIXME...program. Ck w/ GNU: "info set" to be called something else, 1918@c FIXME...or change desc of rule---eg "state of prog and debugging session"? 1919@end table 1920@c @end group 1921 1922Here are several miscellaneous @code{show} subcommands, all of which are 1923exceptional in lacking corresponding @code{set} commands: 1924 1925@table @code 1926@kindex show version 1927@cindex @value{GDBN} version number 1928@item show version 1929Show what version of @value{GDBN} is running. You should include this 1930information in @value{GDBN} bug-reports. If multiple versions of 1931@value{GDBN} are in use at your site, you may need to determine which 1932version of @value{GDBN} you are running; as @value{GDBN} evolves, new 1933commands are introduced, and old ones may wither away. Also, many 1934system vendors ship variant versions of @value{GDBN}, and there are 1935variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well. 1936The version number is the same as the one announced when you start 1937@value{GDBN}. 1938 1939@kindex show copying 1940@kindex info copying 1941@cindex display @value{GDBN} copyright 1942@item show copying 1943@itemx info copying 1944Display information about permission for copying @value{GDBN}. 1945 1946@kindex show warranty 1947@kindex info warranty 1948@item show warranty 1949@itemx info warranty 1950Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty, 1951if your version of @value{GDBN} comes with one. 1952 1953@kindex show configuration 1954@item show configuration 1955Display detailed information about the way @value{GDBN} was configured 1956when it was built. This displays the optional arguments passed to the 1957@file{configure} script and also configuration parameters detected 1958automatically by @command{configure}. When reporting a @value{GDBN} 1959bug (@pxref{GDB Bugs}), it is important to include this information in 1960your report. 1961 1962@end table 1963 1964@node Running 1965@chapter Running Programs Under @value{GDBN} 1966 1967When you run a program under @value{GDBN}, you must first generate 1968debugging information when you compile it. 1969 1970You may start @value{GDBN} with its arguments, if any, in an environment 1971of your choice. If you are doing native debugging, you may redirect 1972your program's input and output, debug an already running process, or 1973kill a child process. 1974 1975@menu 1976* Compilation:: Compiling for debugging 1977* Starting:: Starting your program 1978* Arguments:: Your program's arguments 1979* Environment:: Your program's environment 1980 1981* Working Directory:: Your program's working directory 1982* Input/Output:: Your program's input and output 1983* Attach:: Debugging an already-running process 1984* Kill Process:: Killing the child process 1985 1986* Inferiors and Programs:: Debugging multiple inferiors and programs 1987* Threads:: Debugging programs with multiple threads 1988* Forks:: Debugging forks 1989* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later 1990@end menu 1991 1992@node Compilation 1993@section Compiling for Debugging 1994 1995In order to debug a program effectively, you need to generate 1996debugging information when you compile it. This debugging information 1997is stored in the object file; it describes the data type of each 1998variable or function and the correspondence between source line numbers 1999and addresses in the executable code. 2000 2001To request debugging information, specify the @samp{-g} option when you run 2002the compiler. 2003 2004Programs that are to be shipped to your customers are compiled with 2005optimizations, using the @samp{-O} compiler option. However, some 2006compilers are unable to handle the @samp{-g} and @samp{-O} options 2007together. Using those compilers, you cannot generate optimized 2008executables containing debugging information. 2009 2010@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or 2011without @samp{-O}, making it possible to debug optimized code. We 2012recommend that you @emph{always} use @samp{-g} whenever you compile a 2013program. You may think your program is correct, but there is no sense 2014in pushing your luck. For more information, see @ref{Optimized Code}. 2015 2016Older versions of the @sc{gnu} C compiler permitted a variant option 2017@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this 2018format; if your @sc{gnu} C compiler has this option, do not use it. 2019 2020@value{GDBN} knows about preprocessor macros and can show you their 2021expansion (@pxref{Macros}). Most compilers do not include information 2022about preprocessor macros in the debugging information if you specify 2023the @option{-g} flag alone. Version 3.1 and later of @value{NGCC}, 2024the @sc{gnu} C compiler, provides macro information if you are using 2025the DWARF debugging format, and specify the option @option{-g3}. 2026 2027@xref{Debugging Options,,Options for Debugging Your Program or GCC, 2028gcc, Using the @sc{gnu} Compiler Collection (GCC)}, for more 2029information on @value{NGCC} options affecting debug information. 2030 2031You will have the best debugging experience if you use the latest 2032version of the DWARF debugging format that your compiler supports. 2033DWARF is currently the most expressive and best supported debugging 2034format in @value{GDBN}. 2035 2036@need 2000 2037@node Starting 2038@section Starting your Program 2039@cindex starting 2040@cindex running 2041 2042@table @code 2043@kindex run 2044@kindex r @r{(@code{run})} 2045@item run 2046@itemx r 2047Use the @code{run} command to start your program under @value{GDBN}. 2048You must first specify the program name with an argument to 2049@value{GDBN} (@pxref{Invocation, ,Getting In and Out of 2050@value{GDBN}}), or by using the @code{file} or @code{exec-file} 2051command (@pxref{Files, ,Commands to Specify Files}). 2052 2053@end table 2054 2055If you are running your program in an execution environment that 2056supports processes, @code{run} creates an inferior process and makes 2057that process run your program. In some environments without processes, 2058@code{run} jumps to the start of your program. Other targets, 2059like @samp{remote}, are always running. If you get an error 2060message like this one: 2061 2062@smallexample 2063The "remote" target does not support "run". 2064Try "help target" or "continue". 2065@end smallexample 2066 2067@noindent 2068then use @code{continue} to run your program. You may need @code{load} 2069first (@pxref{load}). 2070 2071The execution of a program is affected by certain information it 2072receives from its superior. @value{GDBN} provides ways to specify this 2073information, which you must do @emph{before} starting your program. (You 2074can change it after starting your program, but such changes only affect 2075your program the next time you start it.) This information may be 2076divided into four categories: 2077 2078@table @asis 2079@item The @emph{arguments.} 2080Specify the arguments to give your program as the arguments of the 2081@code{run} command. If a shell is available on your target, the shell 2082is used to pass the arguments, so that you may use normal conventions 2083(such as wildcard expansion or variable substitution) in describing 2084the arguments. 2085In Unix systems, you can control which shell is used with the 2086@code{SHELL} environment variable. If you do not define @code{SHELL}, 2087@value{GDBN} uses the default shell (@file{/bin/sh}). You can disable 2088use of any shell with the @code{set startup-with-shell} command (see 2089below for details). 2090 2091@item The @emph{environment.} 2092Your program normally inherits its environment from @value{GDBN}, but you can 2093use the @value{GDBN} commands @code{set environment} and @code{unset 2094environment} to change parts of the environment that affect 2095your program. @xref{Environment, ,Your Program's Environment}. 2096 2097@item The @emph{working directory.} 2098You can set your program's working directory with the command 2099@kbd{set cwd}. If you do not set any working directory with this 2100command, your program will inherit @value{GDBN}'s working directory if 2101native debugging, or the remote server's working directory if remote 2102debugging. @xref{Working Directory, ,Your Program's Working 2103Directory}. 2104 2105@item The @emph{standard input and output.} 2106Your program normally uses the same device for standard input and 2107standard output as @value{GDBN} is using. You can redirect input and output 2108in the @code{run} command line, or you can use the @code{tty} command to 2109set a different device for your program. 2110@xref{Input/Output, ,Your Program's Input and Output}. 2111 2112@cindex pipes 2113@emph{Warning:} While input and output redirection work, you cannot use 2114pipes to pass the output of the program you are debugging to another 2115program; if you attempt this, @value{GDBN} is likely to wind up debugging the 2116wrong program. 2117@end table 2118 2119When you issue the @code{run} command, your program begins to execute 2120immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion 2121of how to arrange for your program to stop. Once your program has 2122stopped, you may call functions in your program, using the @code{print} 2123or @code{call} commands. @xref{Data, ,Examining Data}. 2124 2125If the modification time of your symbol file has changed since the last 2126time @value{GDBN} read its symbols, @value{GDBN} discards its symbol 2127table, and reads it again. When it does this, @value{GDBN} tries to retain 2128your current breakpoints. 2129 2130@table @code 2131@kindex start 2132@item start 2133@cindex run to main procedure 2134The name of the main procedure can vary from language to language. 2135With C or C@t{++}, the main procedure name is always @code{main}, but 2136other languages such as Ada do not require a specific name for their 2137main procedure. The debugger provides a convenient way to start the 2138execution of the program and to stop at the beginning of the main 2139procedure, depending on the language used. 2140 2141The @samp{start} command does the equivalent of setting a temporary 2142breakpoint at the beginning of the main procedure and then invoking 2143the @samp{run} command. 2144 2145@cindex elaboration phase 2146Some programs contain an @dfn{elaboration} phase where some startup code is 2147executed before the main procedure is called. This depends on the 2148languages used to write your program. In C@t{++}, for instance, 2149constructors for static and global objects are executed before 2150@code{main} is called. It is therefore possible that the debugger stops 2151before reaching the main procedure. However, the temporary breakpoint 2152will remain to halt execution. 2153 2154Specify the arguments to give to your program as arguments to the 2155@samp{start} command. These arguments will be given verbatim to the 2156underlying @samp{run} command. Note that the same arguments will be 2157reused if no argument is provided during subsequent calls to 2158@samp{start} or @samp{run}. 2159 2160It is sometimes necessary to debug the program during elaboration. In 2161these cases, using the @code{start} command would stop the execution 2162of your program too late, as the program would have already completed 2163the elaboration phase. Under these circumstances, either insert 2164breakpoints in your elaboration code before running your program or 2165use the @code{starti} command. 2166 2167@kindex starti 2168@item starti 2169@cindex run to first instruction 2170The @samp{starti} command does the equivalent of setting a temporary 2171breakpoint at the first instruction of a program's execution and then 2172invoking the @samp{run} command. For programs containing an 2173elaboration phase, the @code{starti} command will stop execution at 2174the start of the elaboration phase. 2175 2176@anchor{set exec-wrapper} 2177@kindex set exec-wrapper 2178@item set exec-wrapper @var{wrapper} 2179@itemx show exec-wrapper 2180@itemx unset exec-wrapper 2181When @samp{exec-wrapper} is set, the specified wrapper is used to 2182launch programs for debugging. @value{GDBN} starts your program 2183with a shell command of the form @kbd{exec @var{wrapper} 2184@var{program}}. Quoting is added to @var{program} and its 2185arguments, but not to @var{wrapper}, so you should add quotes if 2186appropriate for your shell. The wrapper runs until it executes 2187your program, and then @value{GDBN} takes control. 2188 2189You can use any program that eventually calls @code{execve} with 2190its arguments as a wrapper. Several standard Unix utilities do 2191this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 2192with @code{exec "$@@"} will also work. 2193 2194For example, you can use @code{env} to pass an environment variable to 2195the debugged program, without setting the variable in your shell's 2196environment: 2197 2198@smallexample 2199(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so' 2200(@value{GDBP}) run 2201@end smallexample 2202 2203This command is available when debugging locally on most targets, excluding 2204@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino. 2205 2206@kindex set startup-with-shell 2207@anchor{set startup-with-shell} 2208@item set startup-with-shell 2209@itemx set startup-with-shell on 2210@itemx set startup-with-shell off 2211@itemx show startup-with-shell 2212On Unix systems, by default, if a shell is available on your target, 2213@value{GDBN}) uses it to start your program. Arguments of the 2214@code{run} command are passed to the shell, which does variable 2215substitution, expands wildcard characters and performs redirection of 2216I/O. In some circumstances, it may be useful to disable such use of a 2217shell, for example, when debugging the shell itself or diagnosing 2218startup failures such as: 2219 2220@smallexample 2221(@value{GDBP}) run 2222Starting program: ./a.out 2223During startup program terminated with signal SIGSEGV, Segmentation fault. 2224@end smallexample 2225 2226@noindent 2227which indicates the shell or the wrapper specified with 2228@samp{exec-wrapper} crashed, not your program. Most often, this is 2229caused by something odd in your shell's non-interactive mode 2230initialization file---such as @file{.cshrc} for C-shell, 2231$@file{.zshenv} for the Z shell, or the file specified in the 2232@samp{BASH_ENV} environment variable for BASH. 2233 2234@anchor{set auto-connect-native-target} 2235@kindex set auto-connect-native-target 2236@item set auto-connect-native-target 2237@itemx set auto-connect-native-target on 2238@itemx set auto-connect-native-target off 2239@itemx show auto-connect-native-target 2240 2241By default, if not connected to any target yet (e.g., with 2242@code{target remote}), the @code{run} command starts your program as a 2243native process under @value{GDBN}, on your local machine. If you're 2244sure you don't want to debug programs on your local machine, you can 2245tell @value{GDBN} to not connect to the native target automatically 2246with the @code{set auto-connect-native-target off} command. 2247 2248If @code{on}, which is the default, and if @value{GDBN} is not 2249connected to a target already, the @code{run} command automaticaly 2250connects to the native target, if one is available. 2251 2252If @code{off}, and if @value{GDBN} is not connected to a target 2253already, the @code{run} command fails with an error: 2254 2255@smallexample 2256(@value{GDBP}) run 2257Don't know how to run. Try "help target". 2258@end smallexample 2259 2260If @value{GDBN} is already connected to a target, @value{GDBN} always 2261uses it with the @code{run} command. 2262 2263In any case, you can explicitly connect to the native target with the 2264@code{target native} command. For example, 2265 2266@smallexample 2267(@value{GDBP}) set auto-connect-native-target off 2268(@value{GDBP}) run 2269Don't know how to run. Try "help target". 2270(@value{GDBP}) target native 2271(@value{GDBP}) run 2272Starting program: ./a.out 2273[Inferior 1 (process 10421) exited normally] 2274@end smallexample 2275 2276In case you connected explicitly to the @code{native} target, 2277@value{GDBN} remains connected even if all inferiors exit, ready for 2278the next @code{run} command. Use the @code{disconnect} command to 2279disconnect. 2280 2281Examples of other commands that likewise respect the 2282@code{auto-connect-native-target} setting: @code{attach}, @code{info 2283proc}, @code{info os}. 2284 2285@kindex set disable-randomization 2286@item set disable-randomization 2287@itemx set disable-randomization on 2288This option (enabled by default in @value{GDBN}) will turn off the native 2289randomization of the virtual address space of the started program. This option 2290is useful for multiple debugging sessions to make the execution better 2291reproducible and memory addresses reusable across debugging sessions. 2292 2293This feature is implemented only on certain targets, including @sc{gnu}/Linux. 2294On @sc{gnu}/Linux you can get the same behavior using 2295 2296@smallexample 2297(@value{GDBP}) set exec-wrapper setarch `uname -m` -R 2298@end smallexample 2299 2300@item set disable-randomization off 2301Leave the behavior of the started executable unchanged. Some bugs rear their 2302ugly heads only when the program is loaded at certain addresses. If your bug 2303disappears when you run the program under @value{GDBN}, that might be because 2304@value{GDBN} by default disables the address randomization on platforms, such 2305as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set 2306disable-randomization off} to try to reproduce such elusive bugs. 2307 2308On targets where it is available, virtual address space randomization 2309protects the programs against certain kinds of security attacks. In these 2310cases the attacker needs to know the exact location of a concrete executable 2311code. Randomizing its location makes it impossible to inject jumps misusing 2312a code at its expected addresses. 2313 2314Prelinking shared libraries provides a startup performance advantage but it 2315makes addresses in these libraries predictable for privileged processes by 2316having just unprivileged access at the target system. Reading the shared 2317library binary gives enough information for assembling the malicious code 2318misusing it. Still even a prelinked shared library can get loaded at a new 2319random address just requiring the regular relocation process during the 2320startup. Shared libraries not already prelinked are always loaded at 2321a randomly chosen address. 2322 2323Position independent executables (PIE) contain position independent code 2324similar to the shared libraries and therefore such executables get loaded at 2325a randomly chosen address upon startup. PIE executables always load even 2326already prelinked shared libraries at a random address. You can build such 2327executable using @command{gcc -fPIE -pie}. 2328 2329Heap (malloc storage), stack and custom mmap areas are always placed randomly 2330(as long as the randomization is enabled). 2331 2332@item show disable-randomization 2333Show the current setting of the explicit disable of the native randomization of 2334the virtual address space of the started program. 2335 2336@end table 2337 2338@node Arguments 2339@section Your Program's Arguments 2340 2341@cindex arguments (to your program) 2342The arguments to your program can be specified by the arguments of the 2343@code{run} command. 2344They are passed to a shell, which expands wildcard characters and 2345performs redirection of I/O, and thence to your program. Your 2346@code{SHELL} environment variable (if it exists) specifies what shell 2347@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses 2348the default shell (@file{/bin/sh} on Unix). 2349 2350On non-Unix systems, the program is usually invoked directly by 2351@value{GDBN}, which emulates I/O redirection via the appropriate system 2352calls, and the wildcard characters are expanded by the startup code of 2353the program, not by the shell. 2354 2355@code{run} with no arguments uses the same arguments used by the previous 2356@code{run}, or those set by the @code{set args} command. 2357 2358@table @code 2359@kindex set args 2360@item set args 2361Specify the arguments to be used the next time your program is run. If 2362@code{set args} has no arguments, @code{run} executes your program 2363with no arguments. Once you have run your program with arguments, 2364using @code{set args} before the next @code{run} is the only way to run 2365it again without arguments. 2366 2367@kindex show args 2368@item show args 2369Show the arguments to give your program when it is started. 2370@end table 2371 2372@node Environment 2373@section Your Program's Environment 2374 2375@cindex environment (of your program) 2376The @dfn{environment} consists of a set of environment variables and 2377their values. Environment variables conventionally record such things as 2378your user name, your home directory, your terminal type, and your search 2379path for programs to run. Usually you set up environment variables with 2380the shell and they are inherited by all the other programs you run. When 2381debugging, it can be useful to try running your program with a modified 2382environment without having to start @value{GDBN} over again. 2383 2384@table @code 2385@kindex path 2386@item path @var{directory} 2387Add @var{directory} to the front of the @code{PATH} environment variable 2388(the search path for executables) that will be passed to your program. 2389The value of @code{PATH} used by @value{GDBN} does not change. 2390You may specify several directory names, separated by whitespace or by a 2391system-dependent separator character (@samp{:} on Unix, @samp{;} on 2392MS-DOS and MS-Windows). If @var{directory} is already in the path, it 2393is moved to the front, so it is searched sooner. 2394 2395You can use the string @samp{$cwd} to refer to whatever is the current 2396working directory at the time @value{GDBN} searches the path. If you 2397use @samp{.} instead, it refers to the directory where you executed the 2398@code{path} command. @value{GDBN} replaces @samp{.} in the 2399@var{directory} argument (with the current path) before adding 2400@var{directory} to the search path. 2401@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to 2402@c document that, since repeating it would be a no-op. 2403 2404@kindex show paths 2405@item show paths 2406Display the list of search paths for executables (the @code{PATH} 2407environment variable). 2408 2409@kindex show environment 2410@item show environment @r{[}@var{varname}@r{]} 2411Print the value of environment variable @var{varname} to be given to 2412your program when it starts. If you do not supply @var{varname}, 2413print the names and values of all environment variables to be given to 2414your program. You can abbreviate @code{environment} as @code{env}. 2415 2416@kindex set environment 2417@anchor{set environment} 2418@item set environment @var{varname} @r{[}=@var{value}@r{]} 2419Set environment variable @var{varname} to @var{value}. The value 2420changes for your program (and the shell @value{GDBN} uses to launch 2421it), not for @value{GDBN} itself. The @var{value} may be any string; the 2422values of environment variables are just strings, and any 2423interpretation is supplied by your program itself. The @var{value} 2424parameter is optional; if it is eliminated, the variable is set to a 2425null value. 2426@c "any string" here does not include leading, trailing 2427@c blanks. Gnu asks: does anyone care? 2428 2429For example, this command: 2430 2431@smallexample 2432set env USER = foo 2433@end smallexample 2434 2435@noindent 2436tells the debugged program, when subsequently run, that its user is named 2437@samp{foo}. (The spaces around @samp{=} are used for clarity here; they 2438are not actually required.) 2439 2440Note that on Unix systems, @value{GDBN} runs your program via a shell, 2441which also inherits the environment set with @code{set environment}. 2442If necessary, you can avoid that by using the @samp{env} program as a 2443wrapper instead of using @code{set environment}. @xref{set 2444exec-wrapper}, for an example doing just that. 2445 2446Environment variables that are set by the user are also transmitted to 2447@command{gdbserver} to be used when starting the remote inferior. 2448@pxref{QEnvironmentHexEncoded}. 2449 2450@kindex unset environment 2451@anchor{unset environment} 2452@item unset environment @var{varname} 2453Remove variable @var{varname} from the environment to be passed to your 2454program. This is different from @samp{set env @var{varname} =}; 2455@code{unset environment} removes the variable from the environment, 2456rather than assigning it an empty value. 2457 2458Environment variables that are unset by the user are also unset on 2459@command{gdbserver} when starting the remote inferior. 2460@pxref{QEnvironmentUnset}. 2461@end table 2462 2463@emph{Warning:} On Unix systems, @value{GDBN} runs your program using 2464the shell indicated by your @code{SHELL} environment variable if it 2465exists (or @code{/bin/sh} if not). If your @code{SHELL} variable 2466names a shell that runs an initialization file when started 2467non-interactively---such as @file{.cshrc} for C-shell, $@file{.zshenv} 2468for the Z shell, or the file specified in the @samp{BASH_ENV} 2469environment variable for BASH---any variables you set in that file 2470affect your program. You may wish to move setting of environment 2471variables to files that are only run when you sign on, such as 2472@file{.login} or @file{.profile}. 2473 2474@node Working Directory 2475@section Your Program's Working Directory 2476 2477@cindex working directory (of your program) 2478Each time you start your program with @code{run}, the inferior will be 2479initialized with the current working directory specified by the 2480@kbd{set cwd} command. If no directory has been specified by this 2481command, then the inferior will inherit @value{GDBN}'s current working 2482directory as its working directory if native debugging, or it will 2483inherit the remote server's current working directory if remote 2484debugging. 2485 2486@table @code 2487@kindex set cwd 2488@cindex change inferior's working directory 2489@anchor{set cwd command} 2490@item set cwd @r{[}@var{directory}@r{]} 2491Set the inferior's working directory to @var{directory}, which will be 2492@code{glob}-expanded in order to resolve tildes (@file{~}). If no 2493argument has been specified, the command clears the setting and resets 2494it to an empty state. This setting has no effect on @value{GDBN}'s 2495working directory, and it only takes effect the next time you start 2496the inferior. The @file{~} in @var{directory} is a short for the 2497@dfn{home directory}, usually pointed to by the @env{HOME} environment 2498variable. On MS-Windows, if @env{HOME} is not defined, @value{GDBN} 2499uses the concatenation of @env{HOMEDRIVE} and @env{HOMEPATH} as 2500fallback. 2501 2502You can also change @value{GDBN}'s current working directory by using 2503the @code{cd} command. 2504@xref{cd command}. 2505 2506@kindex show cwd 2507@cindex show inferior's working directory 2508@item show cwd 2509Show the inferior's working directory. If no directory has been 2510specified by @kbd{set cwd}, then the default inferior's working 2511directory is the same as @value{GDBN}'s working directory. 2512 2513@kindex cd 2514@cindex change @value{GDBN}'s working directory 2515@anchor{cd command} 2516@item cd @r{[}@var{directory}@r{]} 2517Set the @value{GDBN} working directory to @var{directory}. If not 2518given, @var{directory} uses @file{'~'}. 2519 2520The @value{GDBN} working directory serves as a default for the 2521commands that specify files for @value{GDBN} to operate on. 2522@xref{Files, ,Commands to Specify Files}. 2523@xref{set cwd command}. 2524 2525@kindex pwd 2526@item pwd 2527Print the @value{GDBN} working directory. 2528@end table 2529 2530It is generally impossible to find the current working directory of 2531the process being debugged (since a program can change its directory 2532during its run). If you work on a system where @value{GDBN} supports 2533the @code{info proc} command (@pxref{Process Information}), you can 2534use the @code{info proc} command to find out the 2535current working directory of the debuggee. 2536 2537@node Input/Output 2538@section Your Program's Input and Output 2539 2540@cindex redirection 2541@cindex i/o 2542@cindex terminal 2543By default, the program you run under @value{GDBN} does input and output to 2544the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal 2545to its own terminal modes to interact with you, but it records the terminal 2546modes your program was using and switches back to them when you continue 2547running your program. 2548 2549@table @code 2550@kindex info terminal 2551@item info terminal 2552Displays information recorded by @value{GDBN} about the terminal modes your 2553program is using. 2554@end table 2555 2556You can redirect your program's input and/or output using shell 2557redirection with the @code{run} command. For example, 2558 2559@smallexample 2560run > outfile 2561@end smallexample 2562 2563@noindent 2564starts your program, diverting its output to the file @file{outfile}. 2565 2566@kindex tty 2567@cindex controlling terminal 2568Another way to specify where your program should do input and output is 2569with the @code{tty} command. This command accepts a file name as 2570argument, and causes this file to be the default for future @code{run} 2571commands. It also resets the controlling terminal for the child 2572process, for future @code{run} commands. For example, 2573 2574@smallexample 2575tty /dev/ttyb 2576@end smallexample 2577 2578@noindent 2579directs that processes started with subsequent @code{run} commands 2580default to do input and output on the terminal @file{/dev/ttyb} and have 2581that as their controlling terminal. 2582 2583An explicit redirection in @code{run} overrides the @code{tty} command's 2584effect on the input/output device, but not its effect on the controlling 2585terminal. 2586 2587When you use the @code{tty} command or redirect input in the @code{run} 2588command, only the input @emph{for your program} is affected. The input 2589for @value{GDBN} still comes from your terminal. @code{tty} is an alias 2590for @code{set inferior-tty}. 2591 2592@cindex inferior tty 2593@cindex set inferior controlling terminal 2594You can use the @code{show inferior-tty} command to tell @value{GDBN} to 2595display the name of the terminal that will be used for future runs of your 2596program. 2597 2598@table @code 2599@item set inferior-tty [ @var{tty} ] 2600@kindex set inferior-tty 2601Set the tty for the program being debugged to @var{tty}. Omitting @var{tty} 2602restores the default behavior, which is to use the same terminal as 2603@value{GDBN}. 2604 2605@item show inferior-tty 2606@kindex show inferior-tty 2607Show the current tty for the program being debugged. 2608@end table 2609 2610@node Attach 2611@section Debugging an Already-running Process 2612@kindex attach 2613@cindex attach 2614 2615@table @code 2616@item attach @var{process-id} 2617This command attaches to a running process---one that was started 2618outside @value{GDBN}. (@code{info files} shows your active 2619targets.) The command takes as argument a process ID. The usual way to 2620find out the @var{process-id} of a Unix process is with the @code{ps} utility, 2621or with the @samp{jobs -l} shell command. 2622 2623@code{attach} does not repeat if you press @key{RET} a second time after 2624executing the command. 2625@end table 2626 2627To use @code{attach}, your program must be running in an environment 2628which supports processes; for example, @code{attach} does not work for 2629programs on bare-board targets that lack an operating system. You must 2630also have permission to send the process a signal. 2631 2632When you use @code{attach}, the debugger finds the program running in 2633the process first by looking in the current working directory, then (if 2634the program is not found) by using the source file search path 2635(@pxref{Source Path, ,Specifying Source Directories}). You can also use 2636the @code{file} command to load the program. @xref{Files, ,Commands to 2637Specify Files}. 2638 2639The first thing @value{GDBN} does after arranging to debug the specified 2640process is to stop it. You can examine and modify an attached process 2641with all the @value{GDBN} commands that are ordinarily available when 2642you start processes with @code{run}. You can insert breakpoints; you 2643can step and continue; you can modify storage. If you would rather the 2644process continue running, you may use the @code{continue} command after 2645attaching @value{GDBN} to the process. 2646 2647@table @code 2648@kindex detach 2649@item detach 2650When you have finished debugging the attached process, you can use the 2651@code{detach} command to release it from @value{GDBN} control. Detaching 2652the process continues its execution. After the @code{detach} command, 2653that process and @value{GDBN} become completely independent once more, and you 2654are ready to @code{attach} another process or start one with @code{run}. 2655@code{detach} does not repeat if you press @key{RET} again after 2656executing the command. 2657@end table 2658 2659If you exit @value{GDBN} while you have an attached process, you detach 2660that process. If you use the @code{run} command, you kill that process. 2661By default, @value{GDBN} asks for confirmation if you try to do either of these 2662things; you can control whether or not you need to confirm by using the 2663@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and 2664Messages}). 2665 2666@node Kill Process 2667@section Killing the Child Process 2668 2669@table @code 2670@kindex kill 2671@item kill 2672Kill the child process in which your program is running under @value{GDBN}. 2673@end table 2674 2675This command is useful if you wish to debug a core dump instead of a 2676running process. @value{GDBN} ignores any core dump file while your program 2677is running. 2678 2679On some operating systems, a program cannot be executed outside @value{GDBN} 2680while you have breakpoints set on it inside @value{GDBN}. You can use the 2681@code{kill} command in this situation to permit running your program 2682outside the debugger. 2683 2684The @code{kill} command is also useful if you wish to recompile and 2685relink your program, since on many systems it is impossible to modify an 2686executable file while it is running in a process. In this case, when you 2687next type @code{run}, @value{GDBN} notices that the file has changed, and 2688reads the symbol table again (while trying to preserve your current 2689breakpoint settings). 2690 2691@node Inferiors and Programs 2692@section Debugging Multiple Inferiors and Programs 2693 2694@value{GDBN} lets you run and debug multiple programs in a single 2695session. In addition, @value{GDBN} on some systems may let you run 2696several programs simultaneously (otherwise you have to exit from one 2697before starting another). In the most general case, you can have 2698multiple threads of execution in each of multiple processes, launched 2699from multiple executables. 2700 2701@cindex inferior 2702@value{GDBN} represents the state of each program execution with an 2703object called an @dfn{inferior}. An inferior typically corresponds to 2704a process, but is more general and applies also to targets that do not 2705have processes. Inferiors may be created before a process runs, and 2706may be retained after a process exits. Inferiors have unique 2707identifiers that are different from process ids. Usually each 2708inferior will also have its own distinct address space, although some 2709embedded targets may have several inferiors running in different parts 2710of a single address space. Each inferior may in turn have multiple 2711threads running in it. 2712 2713To find out what inferiors exist at any moment, use @w{@code{info 2714inferiors}}: 2715 2716@table @code 2717@kindex info inferiors [ @var{id}@dots{} ] 2718@item info inferiors 2719Print a list of all inferiors currently being managed by @value{GDBN}. 2720By default all inferiors are printed, but the argument @var{id}@dots{} 2721-- a space separated list of inferior numbers -- can be used to limit 2722the display to just the requested inferiors. 2723 2724@value{GDBN} displays for each inferior (in this order): 2725 2726@enumerate 2727@item 2728the inferior number assigned by @value{GDBN} 2729 2730@item 2731the target system's inferior identifier 2732 2733@item 2734the name of the executable the inferior is running. 2735 2736@end enumerate 2737 2738@noindent 2739An asterisk @samp{*} preceding the @value{GDBN} inferior number 2740indicates the current inferior. 2741 2742For example, 2743@end table 2744@c end table here to get a little more width for example 2745 2746@smallexample 2747(@value{GDBP}) info inferiors 2748 Num Description Executable 2749 2 process 2307 hello 2750* 1 process 3401 goodbye 2751@end smallexample 2752 2753To switch focus between inferiors, use the @code{inferior} command: 2754 2755@table @code 2756@kindex inferior @var{infno} 2757@item inferior @var{infno} 2758Make inferior number @var{infno} the current inferior. The argument 2759@var{infno} is the inferior number assigned by @value{GDBN}, as shown 2760in the first field of the @samp{info inferiors} display. 2761@end table 2762 2763@vindex $_inferior@r{, convenience variable} 2764The debugger convenience variable @samp{$_inferior} contains the 2765number of the current inferior. You may find this useful in writing 2766breakpoint conditional expressions, command scripts, and so forth. 2767@xref{Convenience Vars,, Convenience Variables}, for general 2768information on convenience variables. 2769 2770You can get multiple executables into a debugging session via the 2771@code{add-inferior} and @w{@code{clone-inferior}} commands. On some 2772systems @value{GDBN} can add inferiors to the debug session 2773automatically by following calls to @code{fork} and @code{exec}. To 2774remove inferiors from the debugging session use the 2775@w{@code{remove-inferiors}} command. 2776 2777@table @code 2778@kindex add-inferior 2779@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ] 2780Adds @var{n} inferiors to be run using @var{executable} as the 2781executable; @var{n} defaults to 1. If no executable is specified, 2782the inferiors begins empty, with no program. You can still assign or 2783change the program assigned to the inferior at any time by using the 2784@code{file} command with the executable name as its argument. 2785 2786@kindex clone-inferior 2787@item clone-inferior [ -copies @var{n} ] [ @var{infno} ] 2788Adds @var{n} inferiors ready to execute the same program as inferior 2789@var{infno}; @var{n} defaults to 1, and @var{infno} defaults to the 2790number of the current inferior. This is a convenient command when you 2791want to run another instance of the inferior you are debugging. 2792 2793@smallexample 2794(@value{GDBP}) info inferiors 2795 Num Description Executable 2796* 1 process 29964 helloworld 2797(@value{GDBP}) clone-inferior 2798Added inferior 2. 27991 inferiors added. 2800(@value{GDBP}) info inferiors 2801 Num Description Executable 2802 2 <null> helloworld 2803* 1 process 29964 helloworld 2804@end smallexample 2805 2806You can now simply switch focus to inferior 2 and run it. 2807 2808@kindex remove-inferiors 2809@item remove-inferiors @var{infno}@dots{} 2810Removes the inferior or inferiors @var{infno}@dots{}. It is not 2811possible to remove an inferior that is running with this command. For 2812those, use the @code{kill} or @code{detach} command first. 2813 2814@end table 2815 2816To quit debugging one of the running inferiors that is not the current 2817inferior, you can either detach from it by using the @w{@code{detach 2818inferior}} command (allowing it to run independently), or kill it 2819using the @w{@code{kill inferiors}} command: 2820 2821@table @code 2822@kindex detach inferiors @var{infno}@dots{} 2823@item detach inferior @var{infno}@dots{} 2824Detach from the inferior or inferiors identified by @value{GDBN} 2825inferior number(s) @var{infno}@dots{}. Note that the inferior's entry 2826still stays on the list of inferiors shown by @code{info inferiors}, 2827but its Description will show @samp{<null>}. 2828 2829@kindex kill inferiors @var{infno}@dots{} 2830@item kill inferiors @var{infno}@dots{} 2831Kill the inferior or inferiors identified by @value{GDBN} inferior 2832number(s) @var{infno}@dots{}. Note that the inferior's entry still 2833stays on the list of inferiors shown by @code{info inferiors}, but its 2834Description will show @samp{<null>}. 2835@end table 2836 2837After the successful completion of a command such as @code{detach}, 2838@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after 2839a normal process exit, the inferior is still valid and listed with 2840@code{info inferiors}, ready to be restarted. 2841 2842 2843To be notified when inferiors are started or exit under @value{GDBN}'s 2844control use @w{@code{set print inferior-events}}: 2845 2846@table @code 2847@kindex set print inferior-events 2848@cindex print messages on inferior start and exit 2849@item set print inferior-events 2850@itemx set print inferior-events on 2851@itemx set print inferior-events off 2852The @code{set print inferior-events} command allows you to enable or 2853disable printing of messages when @value{GDBN} notices that new 2854inferiors have started or that inferiors have exited or have been 2855detached. By default, these messages will not be printed. 2856 2857@kindex show print inferior-events 2858@item show print inferior-events 2859Show whether messages will be printed when @value{GDBN} detects that 2860inferiors have started, exited or have been detached. 2861@end table 2862 2863Many commands will work the same with multiple programs as with a 2864single program: e.g., @code{print myglobal} will simply display the 2865value of @code{myglobal} in the current inferior. 2866 2867 2868Occasionaly, when debugging @value{GDBN} itself, it may be useful to 2869get more info about the relationship of inferiors, programs, address 2870spaces in a debug session. You can do that with the @w{@code{maint 2871info program-spaces}} command. 2872 2873@table @code 2874@kindex maint info program-spaces 2875@item maint info program-spaces 2876Print a list of all program spaces currently being managed by 2877@value{GDBN}. 2878 2879@value{GDBN} displays for each program space (in this order): 2880 2881@enumerate 2882@item 2883the program space number assigned by @value{GDBN} 2884 2885@item 2886the name of the executable loaded into the program space, with e.g., 2887the @code{file} command. 2888 2889@end enumerate 2890 2891@noindent 2892An asterisk @samp{*} preceding the @value{GDBN} program space number 2893indicates the current program space. 2894 2895In addition, below each program space line, @value{GDBN} prints extra 2896information that isn't suitable to display in tabular form. For 2897example, the list of inferiors bound to the program space. 2898 2899@smallexample 2900(@value{GDBP}) maint info program-spaces 2901 Id Executable 2902* 1 hello 2903 2 goodbye 2904 Bound inferiors: ID 1 (process 21561) 2905@end smallexample 2906 2907Here we can see that no inferior is running the program @code{hello}, 2908while @code{process 21561} is running the program @code{goodbye}. On 2909some targets, it is possible that multiple inferiors are bound to the 2910same program space. The most common example is that of debugging both 2911the parent and child processes of a @code{vfork} call. For example, 2912 2913@smallexample 2914(@value{GDBP}) maint info program-spaces 2915 Id Executable 2916* 1 vfork-test 2917 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045) 2918@end smallexample 2919 2920Here, both inferior 2 and inferior 1 are running in the same program 2921space as a result of inferior 1 having executed a @code{vfork} call. 2922@end table 2923 2924@node Threads 2925@section Debugging Programs with Multiple Threads 2926 2927@cindex threads of execution 2928@cindex multiple threads 2929@cindex switching threads 2930In some operating systems, such as GNU/Linux and Solaris, a single program 2931may have more than one @dfn{thread} of execution. The precise semantics 2932of threads differ from one operating system to another, but in general 2933the threads of a single program are akin to multiple processes---except 2934that they share one address space (that is, they can all examine and 2935modify the same variables). On the other hand, each thread has its own 2936registers and execution stack, and perhaps private memory. 2937 2938@value{GDBN} provides these facilities for debugging multi-thread 2939programs: 2940 2941@itemize @bullet 2942@item automatic notification of new threads 2943@item @samp{thread @var{thread-id}}, a command to switch among threads 2944@item @samp{info threads}, a command to inquire about existing threads 2945@item @samp{thread apply [@var{thread-id-list} | all] @var{args}}, 2946a command to apply a command to a list of threads 2947@item thread-specific breakpoints 2948@item @samp{set print thread-events}, which controls printing of 2949messages on thread start and exit. 2950@item @samp{set libthread-db-search-path @var{path}}, which lets 2951the user specify which @code{libthread_db} to use if the default choice 2952isn't compatible with the program. 2953@end itemize 2954 2955@cindex focus of debugging 2956@cindex current thread 2957The @value{GDBN} thread debugging facility allows you to observe all 2958threads while your program runs---but whenever @value{GDBN} takes 2959control, one thread in particular is always the focus of debugging. 2960This thread is called the @dfn{current thread}. Debugging commands show 2961program information from the perspective of the current thread. 2962 2963@cindex @code{New} @var{systag} message 2964@cindex thread identifier (system) 2965@c FIXME-implementors!! It would be more helpful if the [New...] message 2966@c included GDB's numeric thread handle, so you could just go to that 2967@c thread without first checking `info threads'. 2968Whenever @value{GDBN} detects a new thread in your program, it displays 2969the target system's identification for the thread with a message in the 2970form @samp{[New @var{systag}]}, where @var{systag} is a thread identifier 2971whose form varies depending on the particular system. For example, on 2972@sc{gnu}/Linux, you might see 2973 2974@smallexample 2975[New Thread 0x41e02940 (LWP 25582)] 2976@end smallexample 2977 2978@noindent 2979when @value{GDBN} notices a new thread. In contrast, on other systems, 2980the @var{systag} is simply something like @samp{process 368}, with no 2981further qualifier. 2982 2983@c FIXME!! (1) Does the [New...] message appear even for the very first 2984@c thread of a program, or does it only appear for the 2985@c second---i.e.@: when it becomes obvious we have a multithread 2986@c program? 2987@c (2) *Is* there necessarily a first thread always? Or do some 2988@c multithread systems permit starting a program with multiple 2989@c threads ab initio? 2990 2991@anchor{thread numbers} 2992@cindex thread number, per inferior 2993@cindex thread identifier (GDB) 2994For debugging purposes, @value{GDBN} associates its own thread number 2995---always a single integer---with each thread of an inferior. This 2996number is unique between all threads of an inferior, but not unique 2997between threads of different inferiors. 2998 2999@cindex qualified thread ID 3000You can refer to a given thread in an inferior using the qualified 3001@var{inferior-num}.@var{thread-num} syntax, also known as 3002@dfn{qualified thread ID}, with @var{inferior-num} being the inferior 3003number and @var{thread-num} being the thread number of the given 3004inferior. For example, thread @code{2.3} refers to thread number 3 of 3005inferior 2. If you omit @var{inferior-num} (e.g., @code{thread 3}), 3006then @value{GDBN} infers you're referring to a thread of the current 3007inferior. 3008 3009Until you create a second inferior, @value{GDBN} does not show the 3010@var{inferior-num} part of thread IDs, even though you can always use 3011the full @var{inferior-num}.@var{thread-num} form to refer to threads 3012of inferior 1, the initial inferior. 3013 3014@anchor{thread ID lists} 3015@cindex thread ID lists 3016Some commands accept a space-separated @dfn{thread ID list} as 3017argument. A list element can be: 3018 3019@enumerate 3020@item 3021A thread ID as shown in the first field of the @samp{info threads} 3022display, with or without an inferior qualifier. E.g., @samp{2.1} or 3023@samp{1}. 3024 3025@item 3026A range of thread numbers, again with or without an inferior 3027qualifier, as in @var{inf}.@var{thr1}-@var{thr2} or 3028@var{thr1}-@var{thr2}. E.g., @samp{1.2-4} or @samp{2-4}. 3029 3030@item 3031All threads of an inferior, specified with a star wildcard, with or 3032without an inferior qualifier, as in @var{inf}.@code{*} (e.g., 3033@samp{1.*}) or @code{*}. The former refers to all threads of the 3034given inferior, and the latter form without an inferior qualifier 3035refers to all threads of the current inferior. 3036 3037@end enumerate 3038 3039For example, if the current inferior is 1, and inferior 7 has one 3040thread with ID 7.1, the thread list @samp{1 2-3 4.5 6.7-9 7.*} 3041includes threads 1 to 3 of inferior 1, thread 5 of inferior 4, threads 30427 to 9 of inferior 6 and all threads of inferior 7. That is, in 3043expanded qualified form, the same as @samp{1.1 1.2 1.3 4.5 6.7 6.8 6.9 30447.1}. 3045 3046 3047@anchor{global thread numbers} 3048@cindex global thread number 3049@cindex global thread identifier (GDB) 3050In addition to a @emph{per-inferior} number, each thread is also 3051assigned a unique @emph{global} number, also known as @dfn{global 3052thread ID}, a single integer. Unlike the thread number component of 3053the thread ID, no two threads have the same global ID, even when 3054you're debugging multiple inferiors. 3055 3056From @value{GDBN}'s perspective, a process always has at least one 3057thread. In other words, @value{GDBN} assigns a thread number to the 3058program's ``main thread'' even if the program is not multi-threaded. 3059 3060@vindex $_thread@r{, convenience variable} 3061@vindex $_gthread@r{, convenience variable} 3062The debugger convenience variables @samp{$_thread} and 3063@samp{$_gthread} contain, respectively, the per-inferior thread number 3064and the global thread number of the current thread. You may find this 3065useful in writing breakpoint conditional expressions, command scripts, 3066and so forth. @xref{Convenience Vars,, Convenience Variables}, for 3067general information on convenience variables. 3068 3069If @value{GDBN} detects the program is multi-threaded, it augments the 3070usual message about stopping at a breakpoint with the ID and name of 3071the thread that hit the breakpoint. 3072 3073@smallexample 3074Thread 2 "client" hit Breakpoint 1, send_message () at client.c:68 3075@end smallexample 3076 3077Likewise when the program receives a signal: 3078 3079@smallexample 3080Thread 1 "main" received signal SIGINT, Interrupt. 3081@end smallexample 3082 3083@table @code 3084@kindex info threads 3085@item info threads @r{[}@var{thread-id-list}@r{]} 3086 3087Display information about one or more threads. With no arguments 3088displays information about all threads. You can specify the list of 3089threads that you want to display using the thread ID list syntax 3090(@pxref{thread ID lists}). 3091 3092@value{GDBN} displays for each thread (in this order): 3093 3094@enumerate 3095@item 3096the per-inferior thread number assigned by @value{GDBN} 3097 3098@item 3099the global thread number assigned by @value{GDBN}, if the @samp{-gid} 3100option was specified 3101 3102@item 3103the target system's thread identifier (@var{systag}) 3104 3105@item 3106the thread's name, if one is known. A thread can either be named by 3107the user (see @code{thread name}, below), or, in some cases, by the 3108program itself. 3109 3110@item 3111the current stack frame summary for that thread 3112@end enumerate 3113 3114@noindent 3115An asterisk @samp{*} to the left of the @value{GDBN} thread number 3116indicates the current thread. 3117 3118For example, 3119@end table 3120@c end table here to get a little more width for example 3121 3122@smallexample 3123(@value{GDBP}) info threads 3124 Id Target Id Frame 3125* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) 3126 2 process 35 thread 23 0x34e5 in sigpause () 3127 3 process 35 thread 27 0x34e5 in sigpause () 3128 at threadtest.c:68 3129@end smallexample 3130 3131If you're debugging multiple inferiors, @value{GDBN} displays thread 3132IDs using the qualified @var{inferior-num}.@var{thread-num} format. 3133Otherwise, only @var{thread-num} is shown. 3134 3135If you specify the @samp{-gid} option, @value{GDBN} displays a column 3136indicating each thread's global thread ID: 3137 3138@smallexample 3139(@value{GDBP}) info threads 3140 Id GId Target Id Frame 3141 1.1 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) 3142 1.2 3 process 35 thread 23 0x34e5 in sigpause () 3143 1.3 4 process 35 thread 27 0x34e5 in sigpause () 3144* 2.1 2 process 65 thread 1 main (argc=1, argv=0x7ffffff8) 3145@end smallexample 3146 3147On Solaris, you can display more information about user threads with a 3148Solaris-specific command: 3149 3150@table @code 3151@item maint info sol-threads 3152@kindex maint info sol-threads 3153@cindex thread info (Solaris) 3154Display info on Solaris user threads. 3155@end table 3156 3157@table @code 3158@kindex thread @var{thread-id} 3159@item thread @var{thread-id} 3160Make thread ID @var{thread-id} the current thread. The command 3161argument @var{thread-id} is the @value{GDBN} thread ID, as shown in 3162the first field of the @samp{info threads} display, with or without an 3163inferior qualifier (e.g., @samp{2.1} or @samp{1}). 3164 3165@value{GDBN} responds by displaying the system identifier of the 3166thread you selected, and its current stack frame summary: 3167 3168@smallexample 3169(@value{GDBP}) thread 2 3170[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))] 3171#0 some_function (ignore=0x0) at example.c:8 31728 printf ("hello\n"); 3173@end smallexample 3174 3175@noindent 3176As with the @samp{[New @dots{}]} message, the form of the text after 3177@samp{Switching to} depends on your system's conventions for identifying 3178threads. 3179 3180@kindex thread apply 3181@cindex apply command to several threads 3182@item thread apply [@var{thread-id-list} | all [-ascending]] [@var{flag}]@dots{} @var{command} 3183The @code{thread apply} command allows you to apply the named 3184@var{command} to one or more threads. Specify the threads that you 3185want affected using the thread ID list syntax (@pxref{thread ID 3186lists}), or specify @code{all} to apply to all threads. To apply a 3187command to all threads in descending order, type @kbd{thread apply all 3188@var{command}}. To apply a command to all threads in ascending order, 3189type @kbd{thread apply all -ascending @var{command}}. 3190 3191The @var{flag} arguments control what output to produce and how to handle 3192errors raised when applying @var{command} to a thread. @var{flag} 3193must start with a @code{-} directly followed by one letter in 3194@code{qcs}. If several flags are provided, they must be given 3195individually, such as @code{-c -q}. 3196 3197By default, @value{GDBN} displays some thread information before the 3198output produced by @var{command}, and an error raised during the 3199execution of a @var{command} will abort @code{thread apply}. The 3200following flags can be used to fine-tune this behavior: 3201 3202@table @code 3203@item -c 3204The flag @code{-c}, which stands for @samp{continue}, causes any 3205errors in @var{command} to be displayed, and the execution of 3206@code{thread apply} then continues. 3207@item -s 3208The flag @code{-s}, which stands for @samp{silent}, causes any errors 3209or empty output produced by a @var{command} to be silently ignored. 3210That is, the execution continues, but the thread information and errors 3211are not printed. 3212@item -q 3213The flag @code{-q} (@samp{quiet}) disables printing the thread 3214information. 3215@end table 3216 3217Flags @code{-c} and @code{-s} cannot be used together. 3218 3219@kindex taas 3220@cindex apply command to all threads (ignoring errors and empty output) 3221@item taas @var{command} 3222Shortcut for @code{thread apply all -s @var{command}}. 3223Applies @var{command} on all threads, ignoring errors and empty output. 3224 3225@kindex tfaas 3226@cindex apply a command to all frames of all threads (ignoring errors and empty output) 3227@item tfaas @var{command} 3228Shortcut for @code{thread apply all -s frame apply all -s @var{command}}. 3229Applies @var{command} on all frames of all threads, ignoring errors 3230and empty output. Note that the flag @code{-s} is specified twice: 3231The first @code{-s} ensures that @code{thread apply} only shows the thread 3232information of the threads for which @code{frame apply} produces 3233some output. The second @code{-s} is needed to ensure that @code{frame 3234apply} shows the frame information of a frame only if the 3235@var{command} successfully produced some output. 3236 3237It can for example be used to print a local variable or a function 3238argument without knowing the thread or frame where this variable or argument 3239is, using: 3240@smallexample 3241(@value{GDBP}) tfaas p some_local_var_i_do_not_remember_where_it_is 3242@end smallexample 3243 3244 3245@kindex thread name 3246@cindex name a thread 3247@item thread name [@var{name}] 3248This command assigns a name to the current thread. If no argument is 3249given, any existing user-specified name is removed. The thread name 3250appears in the @samp{info threads} display. 3251 3252On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to 3253determine the name of the thread as given by the OS. On these 3254systems, a name specified with @samp{thread name} will override the 3255system-give name, and removing the user-specified name will cause 3256@value{GDBN} to once again display the system-specified name. 3257 3258@kindex thread find 3259@cindex search for a thread 3260@item thread find [@var{regexp}] 3261Search for and display thread ids whose name or @var{systag} 3262matches the supplied regular expression. 3263 3264As well as being the complement to the @samp{thread name} command, 3265this command also allows you to identify a thread by its target 3266@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag} 3267is the LWP id. 3268 3269@smallexample 3270(@value{GDBN}) thread find 26688 3271Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)' 3272(@value{GDBN}) info thread 4 3273 Id Target Id Frame 3274 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select () 3275@end smallexample 3276 3277@kindex set print thread-events 3278@cindex print messages on thread start and exit 3279@item set print thread-events 3280@itemx set print thread-events on 3281@itemx set print thread-events off 3282The @code{set print thread-events} command allows you to enable or 3283disable printing of messages when @value{GDBN} notices that new threads have 3284started or that threads have exited. By default, these messages will 3285be printed if detection of these events is supported by the target. 3286Note that these messages cannot be disabled on all targets. 3287 3288@kindex show print thread-events 3289@item show print thread-events 3290Show whether messages will be printed when @value{GDBN} detects that threads 3291have started and exited. 3292@end table 3293 3294@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for 3295more information about how @value{GDBN} behaves when you stop and start 3296programs with multiple threads. 3297 3298@xref{Set Watchpoints,,Setting Watchpoints}, for information about 3299watchpoints in programs with multiple threads. 3300 3301@anchor{set libthread-db-search-path} 3302@table @code 3303@kindex set libthread-db-search-path 3304@cindex search path for @code{libthread_db} 3305@item set libthread-db-search-path @r{[}@var{path}@r{]} 3306If this variable is set, @var{path} is a colon-separated list of 3307directories @value{GDBN} will use to search for @code{libthread_db}. 3308If you omit @var{path}, @samp{libthread-db-search-path} will be reset to 3309its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems). 3310Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH} 3311macro. 3312 3313On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper'' 3314@code{libthread_db} library to obtain information about threads in the 3315inferior process. @value{GDBN} will use @samp{libthread-db-search-path} 3316to find @code{libthread_db}. @value{GDBN} also consults first if inferior 3317specific thread debugging library loading is enabled 3318by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}). 3319 3320A special entry @samp{$sdir} for @samp{libthread-db-search-path} 3321refers to the default system directories that are 3322normally searched for loading shared libraries. The @samp{$sdir} entry 3323is the only kind not needing to be enabled by @samp{set auto-load libthread-db} 3324(@pxref{libthread_db.so.1 file}). 3325 3326A special entry @samp{$pdir} for @samp{libthread-db-search-path} 3327refers to the directory from which @code{libpthread} 3328was loaded in the inferior process. 3329 3330For any @code{libthread_db} library @value{GDBN} finds in above directories, 3331@value{GDBN} attempts to initialize it with the current inferior process. 3332If this initialization fails (which could happen because of a version 3333mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN} 3334will unload @code{libthread_db}, and continue with the next directory. 3335If none of @code{libthread_db} libraries initialize successfully, 3336@value{GDBN} will issue a warning and thread debugging will be disabled. 3337 3338Setting @code{libthread-db-search-path} is currently implemented 3339only on some platforms. 3340 3341@kindex show libthread-db-search-path 3342@item show libthread-db-search-path 3343Display current libthread_db search path. 3344 3345@kindex set debug libthread-db 3346@kindex show debug libthread-db 3347@cindex debugging @code{libthread_db} 3348@item set debug libthread-db 3349@itemx show debug libthread-db 3350Turns on or off display of @code{libthread_db}-related events. 3351Use @code{1} to enable, @code{0} to disable. 3352@end table 3353 3354@node Forks 3355@section Debugging Forks 3356 3357@cindex fork, debugging programs which call 3358@cindex multiple processes 3359@cindex processes, multiple 3360On most systems, @value{GDBN} has no special support for debugging 3361programs which create additional processes using the @code{fork} 3362function. When a program forks, @value{GDBN} will continue to debug the 3363parent process and the child process will run unimpeded. If you have 3364set a breakpoint in any code which the child then executes, the child 3365will get a @code{SIGTRAP} signal which (unless it catches the signal) 3366will cause it to terminate. 3367 3368However, if you want to debug the child process there is a workaround 3369which isn't too painful. Put a call to @code{sleep} in the code which 3370the child process executes after the fork. It may be useful to sleep 3371only if a certain environment variable is set, or a certain file exists, 3372so that the delay need not occur when you don't want to run @value{GDBN} 3373on the child. While the child is sleeping, use the @code{ps} program to 3374get its process ID. Then tell @value{GDBN} (a new invocation of 3375@value{GDBN} if you are also debugging the parent process) to attach to 3376the child process (@pxref{Attach}). From that point on you can debug 3377the child process just like any other process which you attached to. 3378 3379On some systems, @value{GDBN} provides support for debugging programs 3380that create additional processes using the @code{fork} or @code{vfork} 3381functions. On @sc{gnu}/Linux platforms, this feature is supported 3382with kernel version 2.5.46 and later. 3383 3384The fork debugging commands are supported in native mode and when 3385connected to @code{gdbserver} in either @code{target remote} mode or 3386@code{target extended-remote} mode. 3387 3388By default, when a program forks, @value{GDBN} will continue to debug 3389the parent process and the child process will run unimpeded. 3390 3391If you want to follow the child process instead of the parent process, 3392use the command @w{@code{set follow-fork-mode}}. 3393 3394@table @code 3395@kindex set follow-fork-mode 3396@item set follow-fork-mode @var{mode} 3397Set the debugger response to a program call of @code{fork} or 3398@code{vfork}. A call to @code{fork} or @code{vfork} creates a new 3399process. The @var{mode} argument can be: 3400 3401@table @code 3402@item parent 3403The original process is debugged after a fork. The child process runs 3404unimpeded. This is the default. 3405 3406@item child 3407The new process is debugged after a fork. The parent process runs 3408unimpeded. 3409 3410@end table 3411 3412@kindex show follow-fork-mode 3413@item show follow-fork-mode 3414Display the current debugger response to a @code{fork} or @code{vfork} call. 3415@end table 3416 3417@cindex debugging multiple processes 3418On Linux, if you want to debug both the parent and child processes, use the 3419command @w{@code{set detach-on-fork}}. 3420 3421@table @code 3422@kindex set detach-on-fork 3423@item set detach-on-fork @var{mode} 3424Tells gdb whether to detach one of the processes after a fork, or 3425retain debugger control over them both. 3426 3427@table @code 3428@item on 3429The child process (or parent process, depending on the value of 3430@code{follow-fork-mode}) will be detached and allowed to run 3431independently. This is the default. 3432 3433@item off 3434Both processes will be held under the control of @value{GDBN}. 3435One process (child or parent, depending on the value of 3436@code{follow-fork-mode}) is debugged as usual, while the other 3437is held suspended. 3438 3439@end table 3440 3441@kindex show detach-on-fork 3442@item show detach-on-fork 3443Show whether detach-on-fork mode is on/off. 3444@end table 3445 3446If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN} 3447will retain control of all forked processes (including nested forks). 3448You can list the forked processes under the control of @value{GDBN} by 3449using the @w{@code{info inferiors}} command, and switch from one fork 3450to another by using the @code{inferior} command (@pxref{Inferiors and 3451Programs, ,Debugging Multiple Inferiors and Programs}). 3452 3453To quit debugging one of the forked processes, you can either detach 3454from it by using the @w{@code{detach inferiors}} command (allowing it 3455to run independently), or kill it using the @w{@code{kill inferiors}} 3456command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors 3457and Programs}. 3458 3459If you ask to debug a child process and a @code{vfork} is followed by an 3460@code{exec}, @value{GDBN} executes the new target up to the first 3461breakpoint in the new target. If you have a breakpoint set on 3462@code{main} in your original program, the breakpoint will also be set on 3463the child process's @code{main}. 3464 3465On some systems, when a child process is spawned by @code{vfork}, you 3466cannot debug the child or parent until an @code{exec} call completes. 3467 3468If you issue a @code{run} command to @value{GDBN} after an @code{exec} 3469call executes, the new target restarts. To restart the parent 3470process, use the @code{file} command with the parent executable name 3471as its argument. By default, after an @code{exec} call executes, 3472@value{GDBN} discards the symbols of the previous executable image. 3473You can change this behaviour with the @w{@code{set follow-exec-mode}} 3474command. 3475 3476@table @code 3477@kindex set follow-exec-mode 3478@item set follow-exec-mode @var{mode} 3479 3480Set debugger response to a program call of @code{exec}. An 3481@code{exec} call replaces the program image of a process. 3482 3483@code{follow-exec-mode} can be: 3484 3485@table @code 3486@item new 3487@value{GDBN} creates a new inferior and rebinds the process to this 3488new inferior. The program the process was running before the 3489@code{exec} call can be restarted afterwards by restarting the 3490original inferior. 3491 3492For example: 3493 3494@smallexample 3495(@value{GDBP}) info inferiors 3496(gdb) info inferior 3497 Id Description Executable 3498* 1 <null> prog1 3499(@value{GDBP}) run 3500process 12020 is executing new program: prog2 3501Program exited normally. 3502(@value{GDBP}) info inferiors 3503 Id Description Executable 3504 1 <null> prog1 3505* 2 <null> prog2 3506@end smallexample 3507 3508@item same 3509@value{GDBN} keeps the process bound to the same inferior. The new 3510executable image replaces the previous executable loaded in the 3511inferior. Restarting the inferior after the @code{exec} call, with 3512e.g., the @code{run} command, restarts the executable the process was 3513running after the @code{exec} call. This is the default mode. 3514 3515For example: 3516 3517@smallexample 3518(@value{GDBP}) info inferiors 3519 Id Description Executable 3520* 1 <null> prog1 3521(@value{GDBP}) run 3522process 12020 is executing new program: prog2 3523Program exited normally. 3524(@value{GDBP}) info inferiors 3525 Id Description Executable 3526* 1 <null> prog2 3527@end smallexample 3528 3529@end table 3530@end table 3531 3532@code{follow-exec-mode} is supported in native mode and 3533@code{target extended-remote} mode. 3534 3535You can use the @code{catch} command to make @value{GDBN} stop whenever 3536a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set 3537Catchpoints, ,Setting Catchpoints}. 3538 3539@node Checkpoint/Restart 3540@section Setting a @emph{Bookmark} to Return to Later 3541 3542@cindex checkpoint 3543@cindex restart 3544@cindex bookmark 3545@cindex snapshot of a process 3546@cindex rewind program state 3547 3548On certain operating systems@footnote{Currently, only 3549@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a 3550program's state, called a @dfn{checkpoint}, and come back to it 3551later. 3552 3553Returning to a checkpoint effectively undoes everything that has 3554happened in the program since the @code{checkpoint} was saved. This 3555includes changes in memory, registers, and even (within some limits) 3556system state. Effectively, it is like going back in time to the 3557moment when the checkpoint was saved. 3558 3559Thus, if you're stepping thru a program and you think you're 3560getting close to the point where things go wrong, you can save 3561a checkpoint. Then, if you accidentally go too far and miss 3562the critical statement, instead of having to restart your program 3563from the beginning, you can just go back to the checkpoint and 3564start again from there. 3565 3566This can be especially useful if it takes a lot of time or 3567steps to reach the point where you think the bug occurs. 3568 3569To use the @code{checkpoint}/@code{restart} method of debugging: 3570 3571@table @code 3572@kindex checkpoint 3573@item checkpoint 3574Save a snapshot of the debugged program's current execution state. 3575The @code{checkpoint} command takes no arguments, but each checkpoint 3576is assigned a small integer id, similar to a breakpoint id. 3577 3578@kindex info checkpoints 3579@item info checkpoints 3580List the checkpoints that have been saved in the current debugging 3581session. For each checkpoint, the following information will be 3582listed: 3583 3584@table @code 3585@item Checkpoint ID 3586@item Process ID 3587@item Code Address 3588@item Source line, or label 3589@end table 3590 3591@kindex restart @var{checkpoint-id} 3592@item restart @var{checkpoint-id} 3593Restore the program state that was saved as checkpoint number 3594@var{checkpoint-id}. All program variables, registers, stack frames 3595etc.@: will be returned to the values that they had when the checkpoint 3596was saved. In essence, gdb will ``wind back the clock'' to the point 3597in time when the checkpoint was saved. 3598 3599Note that breakpoints, @value{GDBN} variables, command history etc. 3600are not affected by restoring a checkpoint. In general, a checkpoint 3601only restores things that reside in the program being debugged, not in 3602the debugger. 3603 3604@kindex delete checkpoint @var{checkpoint-id} 3605@item delete checkpoint @var{checkpoint-id} 3606Delete the previously-saved checkpoint identified by @var{checkpoint-id}. 3607 3608@end table 3609 3610Returning to a previously saved checkpoint will restore the user state 3611of the program being debugged, plus a significant subset of the system 3612(OS) state, including file pointers. It won't ``un-write'' data from 3613a file, but it will rewind the file pointer to the previous location, 3614so that the previously written data can be overwritten. For files 3615opened in read mode, the pointer will also be restored so that the 3616previously read data can be read again. 3617 3618Of course, characters that have been sent to a printer (or other 3619external device) cannot be ``snatched back'', and characters received 3620from eg.@: a serial device can be removed from internal program buffers, 3621but they cannot be ``pushed back'' into the serial pipeline, ready to 3622be received again. Similarly, the actual contents of files that have 3623been changed cannot be restored (at this time). 3624 3625However, within those constraints, you actually can ``rewind'' your 3626program to a previously saved point in time, and begin debugging it 3627again --- and you can change the course of events so as to debug a 3628different execution path this time. 3629 3630@cindex checkpoints and process id 3631Finally, there is one bit of internal program state that will be 3632different when you return to a checkpoint --- the program's process 3633id. Each checkpoint will have a unique process id (or @var{pid}), 3634and each will be different from the program's original @var{pid}. 3635If your program has saved a local copy of its process id, this could 3636potentially pose a problem. 3637 3638@subsection A Non-obvious Benefit of Using Checkpoints 3639 3640On some systems such as @sc{gnu}/Linux, address space randomization 3641is performed on new processes for security reasons. This makes it 3642difficult or impossible to set a breakpoint, or watchpoint, on an 3643absolute address if you have to restart the program, since the 3644absolute location of a symbol will change from one execution to the 3645next. 3646 3647A checkpoint, however, is an @emph{identical} copy of a process. 3648Therefore if you create a checkpoint at (eg.@:) the start of main, 3649and simply return to that checkpoint instead of restarting the 3650process, you can avoid the effects of address randomization and 3651your symbols will all stay in the same place. 3652 3653@node Stopping 3654@chapter Stopping and Continuing 3655 3656The principal purposes of using a debugger are so that you can stop your 3657program before it terminates; or so that, if your program runs into 3658trouble, you can investigate and find out why. 3659 3660Inside @value{GDBN}, your program may stop for any of several reasons, 3661such as a signal, a breakpoint, or reaching a new line after a 3662@value{GDBN} command such as @code{step}. You may then examine and 3663change variables, set new breakpoints or remove old ones, and then 3664continue execution. Usually, the messages shown by @value{GDBN} provide 3665ample explanation of the status of your program---but you can also 3666explicitly request this information at any time. 3667 3668@table @code 3669@kindex info program 3670@item info program 3671Display information about the status of your program: whether it is 3672running or not, what process it is, and why it stopped. 3673@end table 3674 3675@menu 3676* Breakpoints:: Breakpoints, watchpoints, and catchpoints 3677* Continuing and Stepping:: Resuming execution 3678* Skipping Over Functions and Files:: 3679 Skipping over functions and files 3680* Signals:: Signals 3681* Thread Stops:: Stopping and starting multi-thread programs 3682@end menu 3683 3684@node Breakpoints 3685@section Breakpoints, Watchpoints, and Catchpoints 3686 3687@cindex breakpoints 3688A @dfn{breakpoint} makes your program stop whenever a certain point in 3689the program is reached. For each breakpoint, you can add conditions to 3690control in finer detail whether your program stops. You can set 3691breakpoints with the @code{break} command and its variants (@pxref{Set 3692Breaks, ,Setting Breakpoints}), to specify the place where your program 3693should stop by line number, function name or exact address in the 3694program. 3695 3696On some systems, you can set breakpoints in shared libraries before 3697the executable is run. 3698 3699@cindex watchpoints 3700@cindex data breakpoints 3701@cindex memory tracing 3702@cindex breakpoint on memory address 3703@cindex breakpoint on variable modification 3704A @dfn{watchpoint} is a special breakpoint that stops your program 3705when the value of an expression changes. The expression may be a value 3706of a variable, or it could involve values of one or more variables 3707combined by operators, such as @samp{a + b}. This is sometimes called 3708@dfn{data breakpoints}. You must use a different command to set 3709watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside 3710from that, you can manage a watchpoint like any other breakpoint: you 3711enable, disable, and delete both breakpoints and watchpoints using the 3712same commands. 3713 3714You can arrange to have values from your program displayed automatically 3715whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,, 3716Automatic Display}. 3717 3718@cindex catchpoints 3719@cindex breakpoint on events 3720A @dfn{catchpoint} is another special breakpoint that stops your program 3721when a certain kind of event occurs, such as the throwing of a C@t{++} 3722exception or the loading of a library. As with watchpoints, you use a 3723different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting 3724Catchpoints}), but aside from that, you can manage a catchpoint like any 3725other breakpoint. (To stop when your program receives a signal, use the 3726@code{handle} command; see @ref{Signals, ,Signals}.) 3727 3728@cindex breakpoint numbers 3729@cindex numbers for breakpoints 3730@value{GDBN} assigns a number to each breakpoint, watchpoint, or 3731catchpoint when you create it; these numbers are successive integers 3732starting with one. In many of the commands for controlling various 3733features of breakpoints you use the breakpoint number to say which 3734breakpoint you want to change. Each breakpoint may be @dfn{enabled} or 3735@dfn{disabled}; if disabled, it has no effect on your program until you 3736enable it again. 3737 3738@cindex breakpoint ranges 3739@cindex breakpoint lists 3740@cindex ranges of breakpoints 3741@cindex lists of breakpoints 3742Some @value{GDBN} commands accept a space-separated list of breakpoints 3743on which to operate. A list element can be either a single breakpoint number, 3744like @samp{5}, or a range of such numbers, like @samp{5-7}. 3745When a breakpoint list is given to a command, all breakpoints in that list 3746are operated on. 3747 3748@menu 3749* Set Breaks:: Setting breakpoints 3750* Set Watchpoints:: Setting watchpoints 3751* Set Catchpoints:: Setting catchpoints 3752* Delete Breaks:: Deleting breakpoints 3753* Disabling:: Disabling breakpoints 3754* Conditions:: Break conditions 3755* Break Commands:: Breakpoint command lists 3756* Dynamic Printf:: Dynamic printf 3757* Save Breakpoints:: How to save breakpoints in a file 3758* Static Probe Points:: Listing static probe points 3759* Error in Breakpoints:: ``Cannot insert breakpoints'' 3760* Breakpoint-related Warnings:: ``Breakpoint address adjusted...'' 3761@end menu 3762 3763@node Set Breaks 3764@subsection Setting Breakpoints 3765 3766@c FIXME LMB what does GDB do if no code on line of breakpt? 3767@c consider in particular declaration with/without initialization. 3768@c 3769@c FIXME 2 is there stuff on this already? break at fun start, already init? 3770 3771@kindex break 3772@kindex b @r{(@code{break})} 3773@vindex $bpnum@r{, convenience variable} 3774@cindex latest breakpoint 3775Breakpoints are set with the @code{break} command (abbreviated 3776@code{b}). The debugger convenience variable @samp{$bpnum} records the 3777number of the breakpoint you've set most recently; see @ref{Convenience 3778Vars,, Convenience Variables}, for a discussion of what you can do with 3779convenience variables. 3780 3781@table @code 3782@item break @var{location} 3783Set a breakpoint at the given @var{location}, which can specify a 3784function name, a line number, or an address of an instruction. 3785(@xref{Specify Location}, for a list of all the possible ways to 3786specify a @var{location}.) The breakpoint will stop your program just 3787before it executes any of the code in the specified @var{location}. 3788 3789When using source languages that permit overloading of symbols, such as 3790C@t{++}, a function name may refer to more than one possible place to break. 3791@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of 3792that situation. 3793 3794It is also possible to insert a breakpoint that will stop the program 3795only if a specific thread (@pxref{Thread-Specific Breakpoints}) 3796or a specific task (@pxref{Ada Tasks}) hits that breakpoint. 3797 3798@item break 3799When called without any arguments, @code{break} sets a breakpoint at 3800the next instruction to be executed in the selected stack frame 3801(@pxref{Stack, ,Examining the Stack}). In any selected frame but the 3802innermost, this makes your program stop as soon as control 3803returns to that frame. This is similar to the effect of a 3804@code{finish} command in the frame inside the selected frame---except 3805that @code{finish} does not leave an active breakpoint. If you use 3806@code{break} without an argument in the innermost frame, @value{GDBN} stops 3807the next time it reaches the current location; this may be useful 3808inside loops. 3809 3810@value{GDBN} normally ignores breakpoints when it resumes execution, until at 3811least one instruction has been executed. If it did not do this, you 3812would be unable to proceed past a breakpoint without first disabling the 3813breakpoint. This rule applies whether or not the breakpoint already 3814existed when your program stopped. 3815 3816@item break @dots{} if @var{cond} 3817Set a breakpoint with condition @var{cond}; evaluate the expression 3818@var{cond} each time the breakpoint is reached, and stop only if the 3819value is nonzero---that is, if @var{cond} evaluates as true. 3820@samp{@dots{}} stands for one of the possible arguments described 3821above (or no argument) specifying where to break. @xref{Conditions, 3822,Break Conditions}, for more information on breakpoint conditions. 3823 3824@kindex tbreak 3825@item tbreak @var{args} 3826Set a breakpoint enabled only for one stop. The @var{args} are the 3827same as for the @code{break} command, and the breakpoint is set in the same 3828way, but the breakpoint is automatically deleted after the first time your 3829program stops there. @xref{Disabling, ,Disabling Breakpoints}. 3830 3831@kindex hbreak 3832@cindex hardware breakpoints 3833@item hbreak @var{args} 3834Set a hardware-assisted breakpoint. The @var{args} are the same as for the 3835@code{break} command and the breakpoint is set in the same way, but the 3836breakpoint requires hardware support and some target hardware may not 3837have this support. The main purpose of this is EPROM/ROM code 3838debugging, so you can set a breakpoint at an instruction without 3839changing the instruction. This can be used with the new trap-generation 3840provided by SPARClite DSU and most x86-based targets. These targets 3841will generate traps when a program accesses some data or instruction 3842address that is assigned to the debug registers. However the hardware 3843breakpoint registers can take a limited number of breakpoints. For 3844example, on the DSU, only two data breakpoints can be set at a time, and 3845@value{GDBN} will reject this command if more than two are used. Delete 3846or disable unused hardware breakpoints before setting new ones 3847(@pxref{Disabling, ,Disabling Breakpoints}). 3848@xref{Conditions, ,Break Conditions}. 3849For remote targets, you can restrict the number of hardware 3850breakpoints @value{GDBN} will use, see @ref{set remote 3851hardware-breakpoint-limit}. 3852 3853@kindex thbreak 3854@item thbreak @var{args} 3855Set a hardware-assisted breakpoint enabled only for one stop. The @var{args} 3856are the same as for the @code{hbreak} command and the breakpoint is set in 3857the same way. However, like the @code{tbreak} command, 3858the breakpoint is automatically deleted after the 3859first time your program stops there. Also, like the @code{hbreak} 3860command, the breakpoint requires hardware support and some target hardware 3861may not have this support. @xref{Disabling, ,Disabling Breakpoints}. 3862See also @ref{Conditions, ,Break Conditions}. 3863 3864@kindex rbreak 3865@cindex regular expression 3866@cindex breakpoints at functions matching a regexp 3867@cindex set breakpoints in many functions 3868@item rbreak @var{regex} 3869Set breakpoints on all functions matching the regular expression 3870@var{regex}. This command sets an unconditional breakpoint on all 3871matches, printing a list of all breakpoints it set. Once these 3872breakpoints are set, they are treated just like the breakpoints set with 3873the @code{break} command. You can delete them, disable them, or make 3874them conditional the same way as any other breakpoint. 3875 3876In programs using different languages, @value{GDBN} chooses the syntax 3877to print the list of all breakpoints it sets according to the 3878@samp{set language} value: using @samp{set language auto} 3879(see @ref{Automatically, ,Set Language Automatically}) means to use the 3880language of the breakpoint's function, other values mean to use 3881the manually specified language (see @ref{Manually, ,Set Language Manually}). 3882 3883The syntax of the regular expression is the standard one used with tools 3884like @file{grep}. Note that this is different from the syntax used by 3885shells, so for instance @code{foo*} matches all functions that include 3886an @code{fo} followed by zero or more @code{o}s. There is an implicit 3887@code{.*} leading and trailing the regular expression you supply, so to 3888match only functions that begin with @code{foo}, use @code{^foo}. 3889 3890@cindex non-member C@t{++} functions, set breakpoint in 3891When debugging C@t{++} programs, @code{rbreak} is useful for setting 3892breakpoints on overloaded functions that are not members of any special 3893classes. 3894 3895@cindex set breakpoints on all functions 3896The @code{rbreak} command can be used to set breakpoints in 3897@strong{all} the functions in a program, like this: 3898 3899@smallexample 3900(@value{GDBP}) rbreak . 3901@end smallexample 3902 3903@item rbreak @var{file}:@var{regex} 3904If @code{rbreak} is called with a filename qualification, it limits 3905the search for functions matching the given regular expression to the 3906specified @var{file}. This can be used, for example, to set breakpoints on 3907every function in a given file: 3908 3909@smallexample 3910(@value{GDBP}) rbreak file.c:. 3911@end smallexample 3912 3913The colon separating the filename qualifier from the regex may 3914optionally be surrounded by spaces. 3915 3916@kindex info breakpoints 3917@cindex @code{$_} and @code{info breakpoints} 3918@item info breakpoints @r{[}@var{list}@dots{}@r{]} 3919@itemx info break @r{[}@var{list}@dots{}@r{]} 3920Print a table of all breakpoints, watchpoints, and catchpoints set and 3921not deleted. Optional argument @var{n} means print information only 3922about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)). 3923For each breakpoint, following columns are printed: 3924 3925@table @emph 3926@item Breakpoint Numbers 3927@item Type 3928Breakpoint, watchpoint, or catchpoint. 3929@item Disposition 3930Whether the breakpoint is marked to be disabled or deleted when hit. 3931@item Enabled or Disabled 3932Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints 3933that are not enabled. 3934@item Address 3935Where the breakpoint is in your program, as a memory address. For a 3936pending breakpoint whose address is not yet known, this field will 3937contain @samp{<PENDING>}. Such breakpoint won't fire until a shared 3938library that has the symbol or line referred by breakpoint is loaded. 3939See below for details. A breakpoint with several locations will 3940have @samp{<MULTIPLE>} in this field---see below for details. 3941@item What 3942Where the breakpoint is in the source for your program, as a file and 3943line number. For a pending breakpoint, the original string passed to 3944the breakpoint command will be listed as it cannot be resolved until 3945the appropriate shared library is loaded in the future. 3946@end table 3947 3948@noindent 3949If a breakpoint is conditional, there are two evaluation modes: ``host'' and 3950``target''. If mode is ``host'', breakpoint condition evaluation is done by 3951@value{GDBN} on the host's side. If it is ``target'', then the condition 3952is evaluated by the target. The @code{info break} command shows 3953the condition on the line following the affected breakpoint, together with 3954its condition evaluation mode in between parentheses. 3955 3956Breakpoint commands, if any, are listed after that. A pending breakpoint is 3957allowed to have a condition specified for it. The condition is not parsed for 3958validity until a shared library is loaded that allows the pending 3959breakpoint to resolve to a valid location. 3960 3961@noindent 3962@code{info break} with a breakpoint 3963number @var{n} as argument lists only that breakpoint. The 3964convenience variable @code{$_} and the default examining-address for 3965the @code{x} command are set to the address of the last breakpoint 3966listed (@pxref{Memory, ,Examining Memory}). 3967 3968@noindent 3969@code{info break} displays a count of the number of times the breakpoint 3970has been hit. This is especially useful in conjunction with the 3971@code{ignore} command. You can ignore a large number of breakpoint 3972hits, look at the breakpoint info to see how many times the breakpoint 3973was hit, and then run again, ignoring one less than that number. This 3974will get you quickly to the last hit of that breakpoint. 3975 3976@noindent 3977For a breakpoints with an enable count (xref) greater than 1, 3978@code{info break} also displays that count. 3979 3980@end table 3981 3982@value{GDBN} allows you to set any number of breakpoints at the same place in 3983your program. There is nothing silly or meaningless about this. When 3984the breakpoints are conditional, this is even useful 3985(@pxref{Conditions, ,Break Conditions}). 3986 3987@cindex multiple locations, breakpoints 3988@cindex breakpoints, multiple locations 3989It is possible that a breakpoint corresponds to several locations 3990in your program. Examples of this situation are: 3991 3992@itemize @bullet 3993@item 3994Multiple functions in the program may have the same name. 3995 3996@item 3997For a C@t{++} constructor, the @value{NGCC} compiler generates several 3998instances of the function body, used in different cases. 3999 4000@item 4001For a C@t{++} template function, a given line in the function can 4002correspond to any number of instantiations. 4003 4004@item 4005For an inlined function, a given source line can correspond to 4006several places where that function is inlined. 4007@end itemize 4008 4009In all those cases, @value{GDBN} will insert a breakpoint at all 4010the relevant locations. 4011 4012A breakpoint with multiple locations is displayed in the breakpoint 4013table using several rows---one header row, followed by one row for 4014each breakpoint location. The header row has @samp{<MULTIPLE>} in the 4015address column. The rows for individual locations contain the actual 4016addresses for locations, and show the functions to which those 4017locations belong. The number column for a location is of the form 4018@var{breakpoint-number}.@var{location-number}. 4019 4020For example: 4021 4022@smallexample 4023Num Type Disp Enb Address What 40241 breakpoint keep y <MULTIPLE> 4025 stop only if i==1 4026 breakpoint already hit 1 time 40271.1 y 0x080486a2 in void foo<int>() at t.cc:8 40281.2 y 0x080486ca in void foo<double>() at t.cc:8 4029@end smallexample 4030 4031You cannot delete the individual locations from a breakpoint. However, 4032each location can be individually enabled or disabled by passing 4033@var{breakpoint-number}.@var{location-number} as argument to the 4034@code{enable} and @code{disable} commands. It's also possible to 4035@code{enable} and @code{disable} a range of @var{location-number} 4036locations using a @var{breakpoint-number} and two @var{location-number}s, 4037in increasing order, separated by a hyphen, like 4038@kbd{@var{breakpoint-number}.@var{location-number1}-@var{location-number2}}, 4039in which case @value{GDBN} acts on all the locations in the range (inclusive). 4040Disabling or enabling the parent breakpoint (@pxref{Disabling}) affects 4041all of the locations that belong to that breakpoint. 4042 4043@cindex pending breakpoints 4044It's quite common to have a breakpoint inside a shared library. 4045Shared libraries can be loaded and unloaded explicitly, 4046and possibly repeatedly, as the program is executed. To support 4047this use case, @value{GDBN} updates breakpoint locations whenever 4048any shared library is loaded or unloaded. Typically, you would 4049set a breakpoint in a shared library at the beginning of your 4050debugging session, when the library is not loaded, and when the 4051symbols from the library are not available. When you try to set 4052breakpoint, @value{GDBN} will ask you if you want to set 4053a so called @dfn{pending breakpoint}---breakpoint whose address 4054is not yet resolved. 4055 4056After the program is run, whenever a new shared library is loaded, 4057@value{GDBN} reevaluates all the breakpoints. When a newly loaded 4058shared library contains the symbol or line referred to by some 4059pending breakpoint, that breakpoint is resolved and becomes an 4060ordinary breakpoint. When a library is unloaded, all breakpoints 4061that refer to its symbols or source lines become pending again. 4062 4063This logic works for breakpoints with multiple locations, too. For 4064example, if you have a breakpoint in a C@t{++} template function, and 4065a newly loaded shared library has an instantiation of that template, 4066a new location is added to the list of locations for the breakpoint. 4067 4068Except for having unresolved address, pending breakpoints do not 4069differ from regular breakpoints. You can set conditions or commands, 4070enable and disable them and perform other breakpoint operations. 4071 4072@value{GDBN} provides some additional commands for controlling what 4073happens when the @samp{break} command cannot resolve breakpoint 4074address specification to an address: 4075 4076@kindex set breakpoint pending 4077@kindex show breakpoint pending 4078@table @code 4079@item set breakpoint pending auto 4080This is the default behavior. When @value{GDBN} cannot find the breakpoint 4081location, it queries you whether a pending breakpoint should be created. 4082 4083@item set breakpoint pending on 4084This indicates that an unrecognized breakpoint location should automatically 4085result in a pending breakpoint being created. 4086 4087@item set breakpoint pending off 4088This indicates that pending breakpoints are not to be created. Any 4089unrecognized breakpoint location results in an error. This setting does 4090not affect any pending breakpoints previously created. 4091 4092@item show breakpoint pending 4093Show the current behavior setting for creating pending breakpoints. 4094@end table 4095 4096The settings above only affect the @code{break} command and its 4097variants. Once breakpoint is set, it will be automatically updated 4098as shared libraries are loaded and unloaded. 4099 4100@cindex automatic hardware breakpoints 4101For some targets, @value{GDBN} can automatically decide if hardware or 4102software breakpoints should be used, depending on whether the 4103breakpoint address is read-only or read-write. This applies to 4104breakpoints set with the @code{break} command as well as to internal 4105breakpoints set by commands like @code{next} and @code{finish}. For 4106breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware 4107breakpoints. 4108 4109You can control this automatic behaviour with the following commands: 4110 4111@kindex set breakpoint auto-hw 4112@kindex show breakpoint auto-hw 4113@table @code 4114@item set breakpoint auto-hw on 4115This is the default behavior. When @value{GDBN} sets a breakpoint, it 4116will try to use the target memory map to decide if software or hardware 4117breakpoint must be used. 4118 4119@item set breakpoint auto-hw off 4120This indicates @value{GDBN} should not automatically select breakpoint 4121type. If the target provides a memory map, @value{GDBN} will warn when 4122trying to set software breakpoint at a read-only address. 4123@end table 4124 4125@value{GDBN} normally implements breakpoints by replacing the program code 4126at the breakpoint address with a special instruction, which, when 4127executed, given control to the debugger. By default, the program 4128code is so modified only when the program is resumed. As soon as 4129the program stops, @value{GDBN} restores the original instructions. This 4130behaviour guards against leaving breakpoints inserted in the 4131target should gdb abrubptly disconnect. However, with slow remote 4132targets, inserting and removing breakpoint can reduce the performance. 4133This behavior can be controlled with the following commands:: 4134 4135@kindex set breakpoint always-inserted 4136@kindex show breakpoint always-inserted 4137@table @code 4138@item set breakpoint always-inserted off 4139All breakpoints, including newly added by the user, are inserted in 4140the target only when the target is resumed. All breakpoints are 4141removed from the target when it stops. This is the default mode. 4142 4143@item set breakpoint always-inserted on 4144Causes all breakpoints to be inserted in the target at all times. If 4145the user adds a new breakpoint, or changes an existing breakpoint, the 4146breakpoints in the target are updated immediately. A breakpoint is 4147removed from the target only when breakpoint itself is deleted. 4148@end table 4149 4150@value{GDBN} handles conditional breakpoints by evaluating these conditions 4151when a breakpoint breaks. If the condition is true, then the process being 4152debugged stops, otherwise the process is resumed. 4153 4154If the target supports evaluating conditions on its end, @value{GDBN} may 4155download the breakpoint, together with its conditions, to it. 4156 4157This feature can be controlled via the following commands: 4158 4159@kindex set breakpoint condition-evaluation 4160@kindex show breakpoint condition-evaluation 4161@table @code 4162@item set breakpoint condition-evaluation host 4163This option commands @value{GDBN} to evaluate the breakpoint 4164conditions on the host's side. Unconditional breakpoints are sent to 4165the target which in turn receives the triggers and reports them back to GDB 4166for condition evaluation. This is the standard evaluation mode. 4167 4168@item set breakpoint condition-evaluation target 4169This option commands @value{GDBN} to download breakpoint conditions 4170to the target at the moment of their insertion. The target 4171is responsible for evaluating the conditional expression and reporting 4172breakpoint stop events back to @value{GDBN} whenever the condition 4173is true. Due to limitations of target-side evaluation, some conditions 4174cannot be evaluated there, e.g., conditions that depend on local data 4175that is only known to the host. Examples include 4176conditional expressions involving convenience variables, complex types 4177that cannot be handled by the agent expression parser and expressions 4178that are too long to be sent over to the target, specially when the 4179target is a remote system. In these cases, the conditions will be 4180evaluated by @value{GDBN}. 4181 4182@item set breakpoint condition-evaluation auto 4183This is the default mode. If the target supports evaluating breakpoint 4184conditions on its end, @value{GDBN} will download breakpoint conditions to 4185the target (limitations mentioned previously apply). If the target does 4186not support breakpoint condition evaluation, then @value{GDBN} will fallback 4187to evaluating all these conditions on the host's side. 4188@end table 4189 4190 4191@cindex negative breakpoint numbers 4192@cindex internal @value{GDBN} breakpoints 4193@value{GDBN} itself sometimes sets breakpoints in your program for 4194special purposes, such as proper handling of @code{longjmp} (in C 4195programs). These internal breakpoints are assigned negative numbers, 4196starting with @code{-1}; @samp{info breakpoints} does not display them. 4197You can see these breakpoints with the @value{GDBN} maintenance command 4198@samp{maint info breakpoints} (@pxref{maint info breakpoints}). 4199 4200 4201@node Set Watchpoints 4202@subsection Setting Watchpoints 4203 4204@cindex setting watchpoints 4205You can use a watchpoint to stop execution whenever the value of an 4206expression changes, without having to predict a particular place where 4207this may happen. (This is sometimes called a @dfn{data breakpoint}.) 4208The expression may be as simple as the value of a single variable, or 4209as complex as many variables combined by operators. Examples include: 4210 4211@itemize @bullet 4212@item 4213A reference to the value of a single variable. 4214 4215@item 4216An address cast to an appropriate data type. For example, 4217@samp{*(int *)0x12345678} will watch a 4-byte region at the specified 4218address (assuming an @code{int} occupies 4 bytes). 4219 4220@item 4221An arbitrarily complex expression, such as @samp{a*b + c/d}. The 4222expression can use any operators valid in the program's native 4223language (@pxref{Languages}). 4224@end itemize 4225 4226You can set a watchpoint on an expression even if the expression can 4227not be evaluated yet. For instance, you can set a watchpoint on 4228@samp{*global_ptr} before @samp{global_ptr} is initialized. 4229@value{GDBN} will stop when your program sets @samp{global_ptr} and 4230the expression produces a valid value. If the expression becomes 4231valid in some other way than changing a variable (e.g.@: if the memory 4232pointed to by @samp{*global_ptr} becomes readable as the result of a 4233@code{malloc} call), @value{GDBN} may not stop until the next time 4234the expression changes. 4235 4236@cindex software watchpoints 4237@cindex hardware watchpoints 4238Depending on your system, watchpoints may be implemented in software or 4239hardware. @value{GDBN} does software watchpointing by single-stepping your 4240program and testing the variable's value each time, which is hundreds of 4241times slower than normal execution. (But this may still be worth it, to 4242catch errors where you have no clue what part of your program is the 4243culprit.) 4244 4245On some systems, such as most PowerPC or x86-based targets, 4246@value{GDBN} includes support for hardware watchpoints, which do not 4247slow down the running of your program. 4248 4249@table @code 4250@kindex watch 4251@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]} 4252Set a watchpoint for an expression. @value{GDBN} will break when the 4253expression @var{expr} is written into by the program and its value 4254changes. The simplest (and the most popular) use of this command is 4255to watch the value of a single variable: 4256 4257@smallexample 4258(@value{GDBP}) watch foo 4259@end smallexample 4260 4261If the command includes a @code{@r{[}thread @var{thread-id}@r{]}} 4262argument, @value{GDBN} breaks only when the thread identified by 4263@var{thread-id} changes the value of @var{expr}. If any other threads 4264change the value of @var{expr}, @value{GDBN} will not break. Note 4265that watchpoints restricted to a single thread in this way only work 4266with Hardware Watchpoints. 4267 4268Ordinarily a watchpoint respects the scope of variables in @var{expr} 4269(see below). The @code{-location} argument tells @value{GDBN} to 4270instead watch the memory referred to by @var{expr}. In this case, 4271@value{GDBN} will evaluate @var{expr}, take the address of the result, 4272and watch the memory at that address. The type of the result is used 4273to determine the size of the watched memory. If the expression's 4274result does not have an address, then @value{GDBN} will print an 4275error. 4276 4277The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation 4278of masked watchpoints, if the current architecture supports this 4279feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC 4280Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition 4281to an address to watch. The mask specifies that some bits of an address 4282(the bits which are reset in the mask) should be ignored when matching 4283the address accessed by the inferior against the watchpoint address. 4284Thus, a masked watchpoint watches many addresses simultaneously---those 4285addresses whose unmasked bits are identical to the unmasked bits in the 4286watchpoint address. The @code{mask} argument implies @code{-location}. 4287Examples: 4288 4289@smallexample 4290(@value{GDBP}) watch foo mask 0xffff00ff 4291(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00 4292@end smallexample 4293 4294@kindex rwatch 4295@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]} 4296Set a watchpoint that will break when the value of @var{expr} is read 4297by the program. 4298 4299@kindex awatch 4300@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]} 4301Set a watchpoint that will break when @var{expr} is either read from 4302or written into by the program. 4303 4304@kindex info watchpoints @r{[}@var{list}@dots{}@r{]} 4305@item info watchpoints @r{[}@var{list}@dots{}@r{]} 4306This command prints a list of watchpoints, using the same format as 4307@code{info break} (@pxref{Set Breaks}). 4308@end table 4309 4310If you watch for a change in a numerically entered address you need to 4311dereference it, as the address itself is just a constant number which will 4312never change. @value{GDBN} refuses to create a watchpoint that watches 4313a never-changing value: 4314 4315@smallexample 4316(@value{GDBP}) watch 0x600850 4317Cannot watch constant value 0x600850. 4318(@value{GDBP}) watch *(int *) 0x600850 4319Watchpoint 1: *(int *) 6293584 4320@end smallexample 4321 4322@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware 4323watchpoints execute very quickly, and the debugger reports a change in 4324value at the exact instruction where the change occurs. If @value{GDBN} 4325cannot set a hardware watchpoint, it sets a software watchpoint, which 4326executes more slowly and reports the change in value at the next 4327@emph{statement}, not the instruction, after the change occurs. 4328 4329@cindex use only software watchpoints 4330You can force @value{GDBN} to use only software watchpoints with the 4331@kbd{set can-use-hw-watchpoints 0} command. With this variable set to 4332zero, @value{GDBN} will never try to use hardware watchpoints, even if 4333the underlying system supports them. (Note that hardware-assisted 4334watchpoints that were set @emph{before} setting 4335@code{can-use-hw-watchpoints} to zero will still use the hardware 4336mechanism of watching expression values.) 4337 4338@table @code 4339@item set can-use-hw-watchpoints 4340@kindex set can-use-hw-watchpoints 4341Set whether or not to use hardware watchpoints. 4342 4343@item show can-use-hw-watchpoints 4344@kindex show can-use-hw-watchpoints 4345Show the current mode of using hardware watchpoints. 4346@end table 4347 4348For remote targets, you can restrict the number of hardware 4349watchpoints @value{GDBN} will use, see @ref{set remote 4350hardware-breakpoint-limit}. 4351 4352When you issue the @code{watch} command, @value{GDBN} reports 4353 4354@smallexample 4355Hardware watchpoint @var{num}: @var{expr} 4356@end smallexample 4357 4358@noindent 4359if it was able to set a hardware watchpoint. 4360 4361Currently, the @code{awatch} and @code{rwatch} commands can only set 4362hardware watchpoints, because accesses to data that don't change the 4363value of the watched expression cannot be detected without examining 4364every instruction as it is being executed, and @value{GDBN} does not do 4365that currently. If @value{GDBN} finds that it is unable to set a 4366hardware breakpoint with the @code{awatch} or @code{rwatch} command, it 4367will print a message like this: 4368 4369@smallexample 4370Expression cannot be implemented with read/access watchpoint. 4371@end smallexample 4372 4373Sometimes, @value{GDBN} cannot set a hardware watchpoint because the 4374data type of the watched expression is wider than what a hardware 4375watchpoint on the target machine can handle. For example, some systems 4376can only watch regions that are up to 4 bytes wide; on such systems you 4377cannot set hardware watchpoints for an expression that yields a 4378double-precision floating-point number (which is typically 8 bytes 4379wide). As a work-around, it might be possible to break the large region 4380into a series of smaller ones and watch them with separate watchpoints. 4381 4382If you set too many hardware watchpoints, @value{GDBN} might be unable 4383to insert all of them when you resume the execution of your program. 4384Since the precise number of active watchpoints is unknown until such 4385time as the program is about to be resumed, @value{GDBN} might not be 4386able to warn you about this when you set the watchpoints, and the 4387warning will be printed only when the program is resumed: 4388 4389@smallexample 4390Hardware watchpoint @var{num}: Could not insert watchpoint 4391@end smallexample 4392 4393@noindent 4394If this happens, delete or disable some of the watchpoints. 4395 4396Watching complex expressions that reference many variables can also 4397exhaust the resources available for hardware-assisted watchpoints. 4398That's because @value{GDBN} needs to watch every variable in the 4399expression with separately allocated resources. 4400 4401If you call a function interactively using @code{print} or @code{call}, 4402any watchpoints you have set will be inactive until @value{GDBN} reaches another 4403kind of breakpoint or the call completes. 4404 4405@value{GDBN} automatically deletes watchpoints that watch local 4406(automatic) variables, or expressions that involve such variables, when 4407they go out of scope, that is, when the execution leaves the block in 4408which these variables were defined. In particular, when the program 4409being debugged terminates, @emph{all} local variables go out of scope, 4410and so only watchpoints that watch global variables remain set. If you 4411rerun the program, you will need to set all such watchpoints again. One 4412way of doing that would be to set a code breakpoint at the entry to the 4413@code{main} function and when it breaks, set all the watchpoints. 4414 4415@cindex watchpoints and threads 4416@cindex threads and watchpoints 4417In multi-threaded programs, watchpoints will detect changes to the 4418watched expression from every thread. 4419 4420@quotation 4421@emph{Warning:} In multi-threaded programs, software watchpoints 4422have only limited usefulness. If @value{GDBN} creates a software 4423watchpoint, it can only watch the value of an expression @emph{in a 4424single thread}. If you are confident that the expression can only 4425change due to the current thread's activity (and if you are also 4426confident that no other thread can become current), then you can use 4427software watchpoints as usual. However, @value{GDBN} may not notice 4428when a non-current thread's activity changes the expression. (Hardware 4429watchpoints, in contrast, watch an expression in all threads.) 4430@end quotation 4431 4432@xref{set remote hardware-watchpoint-limit}. 4433 4434@node Set Catchpoints 4435@subsection Setting Catchpoints 4436@cindex catchpoints, setting 4437@cindex exception handlers 4438@cindex event handling 4439 4440You can use @dfn{catchpoints} to cause the debugger to stop for certain 4441kinds of program events, such as C@t{++} exceptions or the loading of a 4442shared library. Use the @code{catch} command to set a catchpoint. 4443 4444@table @code 4445@kindex catch 4446@item catch @var{event} 4447Stop when @var{event} occurs. The @var{event} can be any of the following: 4448 4449@table @code 4450@item throw @r{[}@var{regexp}@r{]} 4451@itemx rethrow @r{[}@var{regexp}@r{]} 4452@itemx catch @r{[}@var{regexp}@r{]} 4453@kindex catch throw 4454@kindex catch rethrow 4455@kindex catch catch 4456@cindex stop on C@t{++} exceptions 4457The throwing, re-throwing, or catching of a C@t{++} exception. 4458 4459If @var{regexp} is given, then only exceptions whose type matches the 4460regular expression will be caught. 4461 4462@vindex $_exception@r{, convenience variable} 4463The convenience variable @code{$_exception} is available at an 4464exception-related catchpoint, on some systems. This holds the 4465exception being thrown. 4466 4467There are currently some limitations to C@t{++} exception handling in 4468@value{GDBN}: 4469 4470@itemize @bullet 4471@item 4472The support for these commands is system-dependent. Currently, only 4473systems using the @samp{gnu-v3} C@t{++} ABI (@pxref{ABI}) are 4474supported. 4475 4476@item 4477The regular expression feature and the @code{$_exception} convenience 4478variable rely on the presence of some SDT probes in @code{libstdc++}. 4479If these probes are not present, then these features cannot be used. 4480These probes were first available in the GCC 4.8 release, but whether 4481or not they are available in your GCC also depends on how it was 4482built. 4483 4484@item 4485The @code{$_exception} convenience variable is only valid at the 4486instruction at which an exception-related catchpoint is set. 4487 4488@item 4489When an exception-related catchpoint is hit, @value{GDBN} stops at a 4490location in the system library which implements runtime exception 4491support for C@t{++}, usually @code{libstdc++}. You can use @code{up} 4492(@pxref{Selection}) to get to your code. 4493 4494@item 4495If you call a function interactively, @value{GDBN} normally returns 4496control to you when the function has finished executing. If the call 4497raises an exception, however, the call may bypass the mechanism that 4498returns control to you and cause your program either to abort or to 4499simply continue running until it hits a breakpoint, catches a signal 4500that @value{GDBN} is listening for, or exits. This is the case even if 4501you set a catchpoint for the exception; catchpoints on exceptions are 4502disabled within interactive calls. @xref{Calling}, for information on 4503controlling this with @code{set unwind-on-terminating-exception}. 4504 4505@item 4506You cannot raise an exception interactively. 4507 4508@item 4509You cannot install an exception handler interactively. 4510@end itemize 4511 4512@item exception 4513@kindex catch exception 4514@cindex Ada exception catching 4515@cindex catch Ada exceptions 4516An Ada exception being raised. If an exception name is specified 4517at the end of the command (eg @code{catch exception Program_Error}), 4518the debugger will stop only when this specific exception is raised. 4519Otherwise, the debugger stops execution when any Ada exception is raised. 4520 4521When inserting an exception catchpoint on a user-defined exception whose 4522name is identical to one of the exceptions defined by the language, the 4523fully qualified name must be used as the exception name. Otherwise, 4524@value{GDBN} will assume that it should stop on the pre-defined exception 4525rather than the user-defined one. For instance, assuming an exception 4526called @code{Constraint_Error} is defined in package @code{Pck}, then 4527the command to use to catch such exceptions is @kbd{catch exception 4528Pck.Constraint_Error}. 4529 4530@item handlers 4531@kindex catch handlers 4532@cindex Ada exception handlers catching 4533@cindex catch Ada exceptions when handled 4534An Ada exception being handled. If an exception name is 4535specified at the end of the command 4536 (eg @kbd{catch handlers Program_Error}), the debugger will stop 4537only when this specific exception is handled. 4538Otherwise, the debugger stops execution when any Ada exception is handled. 4539 4540When inserting a handlers catchpoint on a user-defined 4541exception whose name is identical to one of the exceptions 4542defined by the language, the fully qualified name must be used 4543as the exception name. Otherwise, @value{GDBN} will assume that it 4544should stop on the pre-defined exception rather than the 4545user-defined one. For instance, assuming an exception called 4546 @code{Constraint_Error} is defined in package @code{Pck}, then the 4547command to use to catch such exceptions handling is 4548@kbd{catch handlers Pck.Constraint_Error}. 4549 4550@item exception unhandled 4551@kindex catch exception unhandled 4552An exception that was raised but is not handled by the program. 4553 4554@item assert 4555@kindex catch assert 4556A failed Ada assertion. 4557 4558@item exec 4559@kindex catch exec 4560@cindex break on fork/exec 4561A call to @code{exec}. 4562 4563@anchor{catch syscall} 4564@item syscall 4565@itemx syscall @r{[}@var{name} @r{|} @var{number} @r{|} @r{group:}@var{groupname} @r{|} @r{g:}@var{groupname}@r{]} @dots{} 4566@kindex catch syscall 4567@cindex break on a system call. 4568A call to or return from a system call, a.k.a.@: @dfn{syscall}. A 4569syscall is a mechanism for application programs to request a service 4570from the operating system (OS) or one of the OS system services. 4571@value{GDBN} can catch some or all of the syscalls issued by the 4572debuggee, and show the related information for each syscall. If no 4573argument is specified, calls to and returns from all system calls 4574will be caught. 4575 4576@var{name} can be any system call name that is valid for the 4577underlying OS. Just what syscalls are valid depends on the OS. On 4578GNU and Unix systems, you can find the full list of valid syscall 4579names on @file{/usr/include/asm/unistd.h}. 4580 4581@c For MS-Windows, the syscall names and the corresponding numbers 4582@c can be found, e.g., on this URL: 4583@c http://www.metasploit.com/users/opcode/syscalls.html 4584@c but we don't support Windows syscalls yet. 4585 4586Normally, @value{GDBN} knows in advance which syscalls are valid for 4587each OS, so you can use the @value{GDBN} command-line completion 4588facilities (@pxref{Completion,, command completion}) to list the 4589available choices. 4590 4591You may also specify the system call numerically. A syscall's 4592number is the value passed to the OS's syscall dispatcher to 4593identify the requested service. When you specify the syscall by its 4594name, @value{GDBN} uses its database of syscalls to convert the name 4595into the corresponding numeric code, but using the number directly 4596may be useful if @value{GDBN}'s database does not have the complete 4597list of syscalls on your system (e.g., because @value{GDBN} lags 4598behind the OS upgrades). 4599 4600You may specify a group of related syscalls to be caught at once using 4601the @code{group:} syntax (@code{g:} is a shorter equivalent). For 4602instance, on some platforms @value{GDBN} allows you to catch all 4603network related syscalls, by passing the argument @code{group:network} 4604to @code{catch syscall}. Note that not all syscall groups are 4605available in every system. You can use the command completion 4606facilities (@pxref{Completion,, command completion}) to list the 4607syscall groups available on your environment. 4608 4609The example below illustrates how this command works if you don't provide 4610arguments to it: 4611 4612@smallexample 4613(@value{GDBP}) catch syscall 4614Catchpoint 1 (syscall) 4615(@value{GDBP}) r 4616Starting program: /tmp/catch-syscall 4617 4618Catchpoint 1 (call to syscall 'close'), \ 4619 0xffffe424 in __kernel_vsyscall () 4620(@value{GDBP}) c 4621Continuing. 4622 4623Catchpoint 1 (returned from syscall 'close'), \ 4624 0xffffe424 in __kernel_vsyscall () 4625(@value{GDBP}) 4626@end smallexample 4627 4628Here is an example of catching a system call by name: 4629 4630@smallexample 4631(@value{GDBP}) catch syscall chroot 4632Catchpoint 1 (syscall 'chroot' [61]) 4633(@value{GDBP}) r 4634Starting program: /tmp/catch-syscall 4635 4636Catchpoint 1 (call to syscall 'chroot'), \ 4637 0xffffe424 in __kernel_vsyscall () 4638(@value{GDBP}) c 4639Continuing. 4640 4641Catchpoint 1 (returned from syscall 'chroot'), \ 4642 0xffffe424 in __kernel_vsyscall () 4643(@value{GDBP}) 4644@end smallexample 4645 4646An example of specifying a system call numerically. In the case 4647below, the syscall number has a corresponding entry in the XML 4648file, so @value{GDBN} finds its name and prints it: 4649 4650@smallexample 4651(@value{GDBP}) catch syscall 252 4652Catchpoint 1 (syscall(s) 'exit_group') 4653(@value{GDBP}) r 4654Starting program: /tmp/catch-syscall 4655 4656Catchpoint 1 (call to syscall 'exit_group'), \ 4657 0xffffe424 in __kernel_vsyscall () 4658(@value{GDBP}) c 4659Continuing. 4660 4661Program exited normally. 4662(@value{GDBP}) 4663@end smallexample 4664 4665Here is an example of catching a syscall group: 4666 4667@smallexample 4668(@value{GDBP}) catch syscall group:process 4669Catchpoint 1 (syscalls 'exit' [1] 'fork' [2] 'waitpid' [7] 4670'execve' [11] 'wait4' [114] 'clone' [120] 'vfork' [190] 4671'exit_group' [252] 'waitid' [284] 'unshare' [310]) 4672(@value{GDBP}) r 4673Starting program: /tmp/catch-syscall 4674 4675Catchpoint 1 (call to syscall fork), 0x00007ffff7df4e27 in open64 () 4676 from /lib64/ld-linux-x86-64.so.2 4677 4678(@value{GDBP}) c 4679Continuing. 4680@end smallexample 4681 4682However, there can be situations when there is no corresponding name 4683in XML file for that syscall number. In this case, @value{GDBN} prints 4684a warning message saying that it was not able to find the syscall name, 4685but the catchpoint will be set anyway. See the example below: 4686 4687@smallexample 4688(@value{GDBP}) catch syscall 764 4689warning: The number '764' does not represent a known syscall. 4690Catchpoint 2 (syscall 764) 4691(@value{GDBP}) 4692@end smallexample 4693 4694If you configure @value{GDBN} using the @samp{--without-expat} option, 4695it will not be able to display syscall names. Also, if your 4696architecture does not have an XML file describing its system calls, 4697you will not be able to see the syscall names. It is important to 4698notice that these two features are used for accessing the syscall 4699name database. In either case, you will see a warning like this: 4700 4701@smallexample 4702(@value{GDBP}) catch syscall 4703warning: Could not open "syscalls/i386-linux.xml" 4704warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'. 4705GDB will not be able to display syscall names. 4706Catchpoint 1 (syscall) 4707(@value{GDBP}) 4708@end smallexample 4709 4710Of course, the file name will change depending on your architecture and system. 4711 4712Still using the example above, you can also try to catch a syscall by its 4713number. In this case, you would see something like: 4714 4715@smallexample 4716(@value{GDBP}) catch syscall 252 4717Catchpoint 1 (syscall(s) 252) 4718@end smallexample 4719 4720Again, in this case @value{GDBN} would not be able to display syscall's names. 4721 4722@item fork 4723@kindex catch fork 4724A call to @code{fork}. 4725 4726@item vfork 4727@kindex catch vfork 4728A call to @code{vfork}. 4729 4730@item load @r{[}regexp@r{]} 4731@itemx unload @r{[}regexp@r{]} 4732@kindex catch load 4733@kindex catch unload 4734The loading or unloading of a shared library. If @var{regexp} is 4735given, then the catchpoint will stop only if the regular expression 4736matches one of the affected libraries. 4737 4738@item signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 4739@kindex catch signal 4740The delivery of a signal. 4741 4742With no arguments, this catchpoint will catch any signal that is not 4743used internally by @value{GDBN}, specifically, all signals except 4744@samp{SIGTRAP} and @samp{SIGINT}. 4745 4746With the argument @samp{all}, all signals, including those used by 4747@value{GDBN}, will be caught. This argument cannot be used with other 4748signal names. 4749 4750Otherwise, the arguments are a list of signal names as given to 4751@code{handle} (@pxref{Signals}). Only signals specified in this list 4752will be caught. 4753 4754One reason that @code{catch signal} can be more useful than 4755@code{handle} is that you can attach commands and conditions to the 4756catchpoint. 4757 4758When a signal is caught by a catchpoint, the signal's @code{stop} and 4759@code{print} settings, as specified by @code{handle}, are ignored. 4760However, whether the signal is still delivered to the inferior depends 4761on the @code{pass} setting; this can be changed in the catchpoint's 4762commands. 4763 4764@end table 4765 4766@item tcatch @var{event} 4767@kindex tcatch 4768Set a catchpoint that is enabled only for one stop. The catchpoint is 4769automatically deleted after the first time the event is caught. 4770 4771@end table 4772 4773Use the @code{info break} command to list the current catchpoints. 4774 4775 4776@node Delete Breaks 4777@subsection Deleting Breakpoints 4778 4779@cindex clearing breakpoints, watchpoints, catchpoints 4780@cindex deleting breakpoints, watchpoints, catchpoints 4781It is often necessary to eliminate a breakpoint, watchpoint, or 4782catchpoint once it has done its job and you no longer want your program 4783to stop there. This is called @dfn{deleting} the breakpoint. A 4784breakpoint that has been deleted no longer exists; it is forgotten. 4785 4786With the @code{clear} command you can delete breakpoints according to 4787where they are in your program. With the @code{delete} command you can 4788delete individual breakpoints, watchpoints, or catchpoints by specifying 4789their breakpoint numbers. 4790 4791It is not necessary to delete a breakpoint to proceed past it. @value{GDBN} 4792automatically ignores breakpoints on the first instruction to be executed 4793when you continue execution without changing the execution address. 4794 4795@table @code 4796@kindex clear 4797@item clear 4798Delete any breakpoints at the next instruction to be executed in the 4799selected stack frame (@pxref{Selection, ,Selecting a Frame}). When 4800the innermost frame is selected, this is a good way to delete a 4801breakpoint where your program just stopped. 4802 4803@item clear @var{location} 4804Delete any breakpoints set at the specified @var{location}. 4805@xref{Specify Location}, for the various forms of @var{location}; the 4806most useful ones are listed below: 4807 4808@table @code 4809@item clear @var{function} 4810@itemx clear @var{filename}:@var{function} 4811Delete any breakpoints set at entry to the named @var{function}. 4812 4813@item clear @var{linenum} 4814@itemx clear @var{filename}:@var{linenum} 4815Delete any breakpoints set at or within the code of the specified 4816@var{linenum} of the specified @var{filename}. 4817@end table 4818 4819@cindex delete breakpoints 4820@kindex delete 4821@kindex d @r{(@code{delete})} 4822@item delete @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]} 4823Delete the breakpoints, watchpoints, or catchpoints of the breakpoint 4824list specified as argument. If no argument is specified, delete all 4825breakpoints (@value{GDBN} asks confirmation, unless you have @code{set 4826confirm off}). You can abbreviate this command as @code{d}. 4827@end table 4828 4829@node Disabling 4830@subsection Disabling Breakpoints 4831 4832@cindex enable/disable a breakpoint 4833Rather than deleting a breakpoint, watchpoint, or catchpoint, you might 4834prefer to @dfn{disable} it. This makes the breakpoint inoperative as if 4835it had been deleted, but remembers the information on the breakpoint so 4836that you can @dfn{enable} it again later. 4837 4838You disable and enable breakpoints, watchpoints, and catchpoints with 4839the @code{enable} and @code{disable} commands, optionally specifying 4840one or more breakpoint numbers as arguments. Use @code{info break} to 4841print a list of all breakpoints, watchpoints, and catchpoints if you 4842do not know which numbers to use. 4843 4844Disabling and enabling a breakpoint that has multiple locations 4845affects all of its locations. 4846 4847A breakpoint, watchpoint, or catchpoint can have any of several 4848different states of enablement: 4849 4850@itemize @bullet 4851@item 4852Enabled. The breakpoint stops your program. A breakpoint set 4853with the @code{break} command starts out in this state. 4854@item 4855Disabled. The breakpoint has no effect on your program. 4856@item 4857Enabled once. The breakpoint stops your program, but then becomes 4858disabled. 4859@item 4860Enabled for a count. The breakpoint stops your program for the next 4861N times, then becomes disabled. 4862@item 4863Enabled for deletion. The breakpoint stops your program, but 4864immediately after it does so it is deleted permanently. A breakpoint 4865set with the @code{tbreak} command starts out in this state. 4866@end itemize 4867 4868You can use the following commands to enable or disable breakpoints, 4869watchpoints, and catchpoints: 4870 4871@table @code 4872@kindex disable 4873@kindex dis @r{(@code{disable})} 4874@item disable @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]} 4875Disable the specified breakpoints---or all breakpoints, if none are 4876listed. A disabled breakpoint has no effect but is not forgotten. All 4877options such as ignore-counts, conditions and commands are remembered in 4878case the breakpoint is enabled again later. You may abbreviate 4879@code{disable} as @code{dis}. 4880 4881@kindex enable 4882@item enable @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]} 4883Enable the specified breakpoints (or all defined breakpoints). They 4884become effective once again in stopping your program. 4885 4886@item enable @r{[}breakpoints@r{]} once @var{list}@dots{} 4887Enable the specified breakpoints temporarily. @value{GDBN} disables any 4888of these breakpoints immediately after stopping your program. 4889 4890@item enable @r{[}breakpoints@r{]} count @var{count} @var{list}@dots{} 4891Enable the specified breakpoints temporarily. @value{GDBN} records 4892@var{count} with each of the specified breakpoints, and decrements a 4893breakpoint's count when it is hit. When any count reaches 0, 4894@value{GDBN} disables that breakpoint. If a breakpoint has an ignore 4895count (@pxref{Conditions, ,Break Conditions}), that will be 4896decremented to 0 before @var{count} is affected. 4897 4898@item enable @r{[}breakpoints@r{]} delete @var{list}@dots{} 4899Enable the specified breakpoints to work once, then die. @value{GDBN} 4900deletes any of these breakpoints as soon as your program stops there. 4901Breakpoints set by the @code{tbreak} command start out in this state. 4902@end table 4903 4904@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is 4905@c confusing: tbreak is also initially enabled. 4906Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks, 4907,Setting Breakpoints}), breakpoints that you set are initially enabled; 4908subsequently, they become disabled or enabled only when you use one of 4909the commands above. (The command @code{until} can set and delete a 4910breakpoint of its own, but it does not change the state of your other 4911breakpoints; see @ref{Continuing and Stepping, ,Continuing and 4912Stepping}.) 4913 4914@node Conditions 4915@subsection Break Conditions 4916@cindex conditional breakpoints 4917@cindex breakpoint conditions 4918 4919@c FIXME what is scope of break condition expr? Context where wanted? 4920@c in particular for a watchpoint? 4921The simplest sort of breakpoint breaks every time your program reaches a 4922specified place. You can also specify a @dfn{condition} for a 4923breakpoint. A condition is just a Boolean expression in your 4924programming language (@pxref{Expressions, ,Expressions}). A breakpoint with 4925a condition evaluates the expression each time your program reaches it, 4926and your program stops only if the condition is @emph{true}. 4927 4928This is the converse of using assertions for program validation; in that 4929situation, you want to stop when the assertion is violated---that is, 4930when the condition is false. In C, if you want to test an assertion expressed 4931by the condition @var{assert}, you should set the condition 4932@samp{! @var{assert}} on the appropriate breakpoint. 4933 4934Conditions are also accepted for watchpoints; you may not need them, 4935since a watchpoint is inspecting the value of an expression anyhow---but 4936it might be simpler, say, to just set a watchpoint on a variable name, 4937and specify a condition that tests whether the new value is an interesting 4938one. 4939 4940Break conditions can have side effects, and may even call functions in 4941your program. This can be useful, for example, to activate functions 4942that log program progress, or to use your own print functions to 4943format special data structures. The effects are completely predictable 4944unless there is another enabled breakpoint at the same address. (In 4945that case, @value{GDBN} might see the other breakpoint first and stop your 4946program without checking the condition of this one.) Note that 4947breakpoint commands are usually more convenient and flexible than break 4948conditions for the 4949purpose of performing side effects when a breakpoint is reached 4950(@pxref{Break Commands, ,Breakpoint Command Lists}). 4951 4952Breakpoint conditions can also be evaluated on the target's side if 4953the target supports it. Instead of evaluating the conditions locally, 4954@value{GDBN} encodes the expression into an agent expression 4955(@pxref{Agent Expressions}) suitable for execution on the target, 4956independently of @value{GDBN}. Global variables become raw memory 4957locations, locals become stack accesses, and so forth. 4958 4959In this case, @value{GDBN} will only be notified of a breakpoint trigger 4960when its condition evaluates to true. This mechanism may provide faster 4961response times depending on the performance characteristics of the target 4962since it does not need to keep @value{GDBN} informed about 4963every breakpoint trigger, even those with false conditions. 4964 4965Break conditions can be specified when a breakpoint is set, by using 4966@samp{if} in the arguments to the @code{break} command. @xref{Set 4967Breaks, ,Setting Breakpoints}. They can also be changed at any time 4968with the @code{condition} command. 4969 4970You can also use the @code{if} keyword with the @code{watch} command. 4971The @code{catch} command does not recognize the @code{if} keyword; 4972@code{condition} is the only way to impose a further condition on a 4973catchpoint. 4974 4975@table @code 4976@kindex condition 4977@item condition @var{bnum} @var{expression} 4978Specify @var{expression} as the break condition for breakpoint, 4979watchpoint, or catchpoint number @var{bnum}. After you set a condition, 4980breakpoint @var{bnum} stops your program only if the value of 4981@var{expression} is true (nonzero, in C). When you use 4982@code{condition}, @value{GDBN} checks @var{expression} immediately for 4983syntactic correctness, and to determine whether symbols in it have 4984referents in the context of your breakpoint. If @var{expression} uses 4985symbols not referenced in the context of the breakpoint, @value{GDBN} 4986prints an error message: 4987 4988@smallexample 4989No symbol "foo" in current context. 4990@end smallexample 4991 4992@noindent 4993@value{GDBN} does 4994not actually evaluate @var{expression} at the time the @code{condition} 4995command (or a command that sets a breakpoint with a condition, like 4996@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}. 4997 4998@item condition @var{bnum} 4999Remove the condition from breakpoint number @var{bnum}. It becomes 5000an ordinary unconditional breakpoint. 5001@end table 5002 5003@cindex ignore count (of breakpoint) 5004A special case of a breakpoint condition is to stop only when the 5005breakpoint has been reached a certain number of times. This is so 5006useful that there is a special way to do it, using the @dfn{ignore 5007count} of the breakpoint. Every breakpoint has an ignore count, which 5008is an integer. Most of the time, the ignore count is zero, and 5009therefore has no effect. But if your program reaches a breakpoint whose 5010ignore count is positive, then instead of stopping, it just decrements 5011the ignore count by one and continues. As a result, if the ignore count 5012value is @var{n}, the breakpoint does not stop the next @var{n} times 5013your program reaches it. 5014 5015@table @code 5016@kindex ignore 5017@item ignore @var{bnum} @var{count} 5018Set the ignore count of breakpoint number @var{bnum} to @var{count}. 5019The next @var{count} times the breakpoint is reached, your program's 5020execution does not stop; other than to decrement the ignore count, @value{GDBN} 5021takes no action. 5022 5023To make the breakpoint stop the next time it is reached, specify 5024a count of zero. 5025 5026When you use @code{continue} to resume execution of your program from a 5027breakpoint, you can specify an ignore count directly as an argument to 5028@code{continue}, rather than using @code{ignore}. @xref{Continuing and 5029Stepping,,Continuing and Stepping}. 5030 5031If a breakpoint has a positive ignore count and a condition, the 5032condition is not checked. Once the ignore count reaches zero, 5033@value{GDBN} resumes checking the condition. 5034 5035You could achieve the effect of the ignore count with a condition such 5036as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that 5037is decremented each time. @xref{Convenience Vars, ,Convenience 5038Variables}. 5039@end table 5040 5041Ignore counts apply to breakpoints, watchpoints, and catchpoints. 5042 5043 5044@node Break Commands 5045@subsection Breakpoint Command Lists 5046 5047@cindex breakpoint commands 5048You can give any breakpoint (or watchpoint or catchpoint) a series of 5049commands to execute when your program stops due to that breakpoint. For 5050example, you might want to print the values of certain expressions, or 5051enable other breakpoints. 5052 5053@table @code 5054@kindex commands 5055@kindex end@r{ (breakpoint commands)} 5056@item commands @r{[}@var{list}@dots{}@r{]} 5057@itemx @dots{} @var{command-list} @dots{} 5058@itemx end 5059Specify a list of commands for the given breakpoints. The commands 5060themselves appear on the following lines. Type a line containing just 5061@code{end} to terminate the commands. 5062 5063To remove all commands from a breakpoint, type @code{commands} and 5064follow it immediately with @code{end}; that is, give no commands. 5065 5066With no argument, @code{commands} refers to the last breakpoint, 5067watchpoint, or catchpoint set (not to the breakpoint most recently 5068encountered). If the most recent breakpoints were set with a single 5069command, then the @code{commands} will apply to all the breakpoints 5070set by that command. This applies to breakpoints set by 5071@code{rbreak}, and also applies when a single @code{break} command 5072creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous 5073Expressions}). 5074@end table 5075 5076Pressing @key{RET} as a means of repeating the last @value{GDBN} command is 5077disabled within a @var{command-list}. 5078 5079You can use breakpoint commands to start your program up again. Simply 5080use the @code{continue} command, or @code{step}, or any other command 5081that resumes execution. 5082 5083Any other commands in the command list, after a command that resumes 5084execution, are ignored. This is because any time you resume execution 5085(even with a simple @code{next} or @code{step}), you may encounter 5086another breakpoint---which could have its own command list, leading to 5087ambiguities about which list to execute. 5088 5089@kindex silent 5090If the first command you specify in a command list is @code{silent}, the 5091usual message about stopping at a breakpoint is not printed. This may 5092be desirable for breakpoints that are to print a specific message and 5093then continue. If none of the remaining commands print anything, you 5094see no sign that the breakpoint was reached. @code{silent} is 5095meaningful only at the beginning of a breakpoint command list. 5096 5097The commands @code{echo}, @code{output}, and @code{printf} allow you to 5098print precisely controlled output, and are often useful in silent 5099breakpoints. @xref{Output, ,Commands for Controlled Output}. 5100 5101For example, here is how you could use breakpoint commands to print the 5102value of @code{x} at entry to @code{foo} whenever @code{x} is positive. 5103 5104@smallexample 5105break foo if x>0 5106commands 5107silent 5108printf "x is %d\n",x 5109cont 5110end 5111@end smallexample 5112 5113One application for breakpoint commands is to compensate for one bug so 5114you can test for another. Put a breakpoint just after the erroneous line 5115of code, give it a condition to detect the case in which something 5116erroneous has been done, and give it commands to assign correct values 5117to any variables that need them. End with the @code{continue} command 5118so that your program does not stop, and start with the @code{silent} 5119command so that no output is produced. Here is an example: 5120 5121@smallexample 5122break 403 5123commands 5124silent 5125set x = y + 4 5126cont 5127end 5128@end smallexample 5129 5130@node Dynamic Printf 5131@subsection Dynamic Printf 5132 5133@cindex dynamic printf 5134@cindex dprintf 5135The dynamic printf command @code{dprintf} combines a breakpoint with 5136formatted printing of your program's data to give you the effect of 5137inserting @code{printf} calls into your program on-the-fly, without 5138having to recompile it. 5139 5140In its most basic form, the output goes to the GDB console. However, 5141you can set the variable @code{dprintf-style} for alternate handling. 5142For instance, you can ask to format the output by calling your 5143program's @code{printf} function. This has the advantage that the 5144characters go to the program's output device, so they can recorded in 5145redirects to files and so forth. 5146 5147If you are doing remote debugging with a stub or agent, you can also 5148ask to have the printf handled by the remote agent. In addition to 5149ensuring that the output goes to the remote program's device along 5150with any other output the program might produce, you can also ask that 5151the dprintf remain active even after disconnecting from the remote 5152target. Using the stub/agent is also more efficient, as it can do 5153everything without needing to communicate with @value{GDBN}. 5154 5155@table @code 5156@kindex dprintf 5157@item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}] 5158Whenever execution reaches @var{location}, print the values of one or 5159more @var{expressions} under the control of the string @var{template}. 5160To print several values, separate them with commas. 5161 5162@item set dprintf-style @var{style} 5163Set the dprintf output to be handled in one of several different 5164styles enumerated below. A change of style affects all existing 5165dynamic printfs immediately. (If you need individual control over the 5166print commands, simply define normal breakpoints with 5167explicitly-supplied command lists.) 5168 5169@table @code 5170@item gdb 5171@kindex dprintf-style gdb 5172Handle the output using the @value{GDBN} @code{printf} command. 5173 5174@item call 5175@kindex dprintf-style call 5176Handle the output by calling a function in your program (normally 5177@code{printf}). 5178 5179@item agent 5180@kindex dprintf-style agent 5181Have the remote debugging agent (such as @code{gdbserver}) handle 5182the output itself. This style is only available for agents that 5183support running commands on the target. 5184@end table 5185 5186@item set dprintf-function @var{function} 5187Set the function to call if the dprintf style is @code{call}. By 5188default its value is @code{printf}. You may set it to any expression. 5189that @value{GDBN} can evaluate to a function, as per the @code{call} 5190command. 5191 5192@item set dprintf-channel @var{channel} 5193Set a ``channel'' for dprintf. If set to a non-empty value, 5194@value{GDBN} will evaluate it as an expression and pass the result as 5195a first argument to the @code{dprintf-function}, in the manner of 5196@code{fprintf} and similar functions. Otherwise, the dprintf format 5197string will be the first argument, in the manner of @code{printf}. 5198 5199As an example, if you wanted @code{dprintf} output to go to a logfile 5200that is a standard I/O stream assigned to the variable @code{mylog}, 5201you could do the following: 5202 5203@example 5204(gdb) set dprintf-style call 5205(gdb) set dprintf-function fprintf 5206(gdb) set dprintf-channel mylog 5207(gdb) dprintf 25,"at line 25, glob=%d\n",glob 5208Dprintf 1 at 0x123456: file main.c, line 25. 5209(gdb) info break 52101 dprintf keep y 0x00123456 in main at main.c:25 5211 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob) 5212 continue 5213(gdb) 5214@end example 5215 5216Note that the @code{info break} displays the dynamic printf commands 5217as normal breakpoint commands; you can thus easily see the effect of 5218the variable settings. 5219 5220@item set disconnected-dprintf on 5221@itemx set disconnected-dprintf off 5222@kindex set disconnected-dprintf 5223Choose whether @code{dprintf} commands should continue to run if 5224@value{GDBN} has disconnected from the target. This only applies 5225if the @code{dprintf-style} is @code{agent}. 5226 5227@item show disconnected-dprintf off 5228@kindex show disconnected-dprintf 5229Show the current choice for disconnected @code{dprintf}. 5230 5231@end table 5232 5233@value{GDBN} does not check the validity of function and channel, 5234relying on you to supply values that are meaningful for the contexts 5235in which they are being used. For instance, the function and channel 5236may be the values of local variables, but if that is the case, then 5237all enabled dynamic prints must be at locations within the scope of 5238those locals. If evaluation fails, @value{GDBN} will report an error. 5239 5240@node Save Breakpoints 5241@subsection How to save breakpoints to a file 5242 5243To save breakpoint definitions to a file use the @w{@code{save 5244breakpoints}} command. 5245 5246@table @code 5247@kindex save breakpoints 5248@cindex save breakpoints to a file for future sessions 5249@item save breakpoints [@var{filename}] 5250This command saves all current breakpoint definitions together with 5251their commands and ignore counts, into a file @file{@var{filename}} 5252suitable for use in a later debugging session. This includes all 5253types of breakpoints (breakpoints, watchpoints, catchpoints, 5254tracepoints). To read the saved breakpoint definitions, use the 5255@code{source} command (@pxref{Command Files}). Note that watchpoints 5256with expressions involving local variables may fail to be recreated 5257because it may not be possible to access the context where the 5258watchpoint is valid anymore. Because the saved breakpoint definitions 5259are simply a sequence of @value{GDBN} commands that recreate the 5260breakpoints, you can edit the file in your favorite editing program, 5261and remove the breakpoint definitions you're not interested in, or 5262that can no longer be recreated. 5263@end table 5264 5265@node Static Probe Points 5266@subsection Static Probe Points 5267 5268@cindex static probe point, SystemTap 5269@cindex static probe point, DTrace 5270@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands 5271for Statically Defined Tracing, and the probes are designed to have a tiny 5272runtime code and data footprint, and no dynamic relocations. 5273 5274Currently, the following types of probes are supported on 5275ELF-compatible systems: 5276 5277@itemize @bullet 5278 5279@item @code{SystemTap} (@uref{http://sourceware.org/systemtap/}) 5280@acronym{SDT} probes@footnote{See 5281@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps} 5282for more information on how to add @code{SystemTap} @acronym{SDT} 5283probes in your applications.}. @code{SystemTap} probes are usable 5284from assembly, C and C@t{++} languages@footnote{See 5285@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation} 5286for a good reference on how the @acronym{SDT} probes are implemented.}. 5287 5288@item @code{DTrace} (@uref{http://oss.oracle.com/projects/DTrace}) 5289@acronym{USDT} probes. @code{DTrace} probes are usable from C and 5290C@t{++} languages. 5291@end itemize 5292 5293@cindex semaphores on static probe points 5294Some @code{SystemTap} probes have an associated semaphore variable; 5295for instance, this happens automatically if you defined your probe 5296using a DTrace-style @file{.d} file. If your probe has a semaphore, 5297@value{GDBN} will automatically enable it when you specify a 5298breakpoint using the @samp{-probe-stap} notation. But, if you put a 5299breakpoint at a probe's location by some other method (e.g., 5300@code{break file:line}), then @value{GDBN} will not automatically set 5301the semaphore. @code{DTrace} probes do not support semaphores. 5302 5303You can examine the available static static probes using @code{info 5304probes}, with optional arguments: 5305 5306@table @code 5307@kindex info probes 5308@item info probes @r{[}@var{type}@r{]} @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 5309If given, @var{type} is either @code{stap} for listing 5310@code{SystemTap} probes or @code{dtrace} for listing @code{DTrace} 5311probes. If omitted all probes are listed regardless of their types. 5312 5313If given, @var{provider} is a regular expression used to match against provider 5314names when selecting which probes to list. If omitted, probes by all 5315probes from all providers are listed. 5316 5317If given, @var{name} is a regular expression to match against probe names 5318when selecting which probes to list. If omitted, probe names are not 5319considered when deciding whether to display them. 5320 5321If given, @var{objfile} is a regular expression used to select which 5322object files (executable or shared libraries) to examine. If not 5323given, all object files are considered. 5324 5325@item info probes all 5326List the available static probes, from all types. 5327@end table 5328 5329@cindex enabling and disabling probes 5330Some probe points can be enabled and/or disabled. The effect of 5331enabling or disabling a probe depends on the type of probe being 5332handled. Some @code{DTrace} probes can be enabled or 5333disabled, but @code{SystemTap} probes cannot be disabled. 5334 5335You can enable (or disable) one or more probes using the following 5336commands, with optional arguments: 5337 5338@table @code 5339@kindex enable probes 5340@item enable probes @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 5341If given, @var{provider} is a regular expression used to match against 5342provider names when selecting which probes to enable. If omitted, 5343all probes from all providers are enabled. 5344 5345If given, @var{name} is a regular expression to match against probe 5346names when selecting which probes to enable. If omitted, probe names 5347are not considered when deciding whether to enable them. 5348 5349If given, @var{objfile} is a regular expression used to select which 5350object files (executable or shared libraries) to examine. If not 5351given, all object files are considered. 5352 5353@kindex disable probes 5354@item disable probes @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 5355See the @code{enable probes} command above for a description of the 5356optional arguments accepted by this command. 5357@end table 5358 5359@vindex $_probe_arg@r{, convenience variable} 5360A probe may specify up to twelve arguments. These are available at the 5361point at which the probe is defined---that is, when the current PC is 5362at the probe's location. The arguments are available using the 5363convenience variables (@pxref{Convenience Vars}) 5364@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. In @code{SystemTap} 5365probes each probe argument is an integer of the appropriate size; 5366types are not preserved. In @code{DTrace} probes types are preserved 5367provided that they are recognized as such by @value{GDBN}; otherwise 5368the value of the probe argument will be a long integer. The 5369convenience variable @code{$_probe_argc} holds the number of arguments 5370at the current probe point. 5371 5372These variables are always available, but attempts to access them at 5373any location other than a probe point will cause @value{GDBN} to give 5374an error message. 5375 5376 5377@c @ifclear BARETARGET 5378@node Error in Breakpoints 5379@subsection ``Cannot insert breakpoints'' 5380 5381If you request too many active hardware-assisted breakpoints and 5382watchpoints, you will see this error message: 5383 5384@c FIXME: the precise wording of this message may change; the relevant 5385@c source change is not committed yet (Sep 3, 1999). 5386@smallexample 5387Stopped; cannot insert breakpoints. 5388You may have requested too many hardware breakpoints and watchpoints. 5389@end smallexample 5390 5391@noindent 5392This message is printed when you attempt to resume the program, since 5393only then @value{GDBN} knows exactly how many hardware breakpoints and 5394watchpoints it needs to insert. 5395 5396When this message is printed, you need to disable or remove some of the 5397hardware-assisted breakpoints and watchpoints, and then continue. 5398 5399@node Breakpoint-related Warnings 5400@subsection ``Breakpoint address adjusted...'' 5401@cindex breakpoint address adjusted 5402 5403Some processor architectures place constraints on the addresses at 5404which breakpoints may be placed. For architectures thus constrained, 5405@value{GDBN} will attempt to adjust the breakpoint's address to comply 5406with the constraints dictated by the architecture. 5407 5408One example of such an architecture is the Fujitsu FR-V. The FR-V is 5409a VLIW architecture in which a number of RISC-like instructions may be 5410bundled together for parallel execution. The FR-V architecture 5411constrains the location of a breakpoint instruction within such a 5412bundle to the instruction with the lowest address. @value{GDBN} 5413honors this constraint by adjusting a breakpoint's address to the 5414first in the bundle. 5415 5416It is not uncommon for optimized code to have bundles which contain 5417instructions from different source statements, thus it may happen that 5418a breakpoint's address will be adjusted from one source statement to 5419another. Since this adjustment may significantly alter @value{GDBN}'s 5420breakpoint related behavior from what the user expects, a warning is 5421printed when the breakpoint is first set and also when the breakpoint 5422is hit. 5423 5424A warning like the one below is printed when setting a breakpoint 5425that's been subject to address adjustment: 5426 5427@smallexample 5428warning: Breakpoint address adjusted from 0x00010414 to 0x00010410. 5429@end smallexample 5430 5431Such warnings are printed both for user settable and @value{GDBN}'s 5432internal breakpoints. If you see one of these warnings, you should 5433verify that a breakpoint set at the adjusted address will have the 5434desired affect. If not, the breakpoint in question may be removed and 5435other breakpoints may be set which will have the desired behavior. 5436E.g., it may be sufficient to place the breakpoint at a later 5437instruction. A conditional breakpoint may also be useful in some 5438cases to prevent the breakpoint from triggering too often. 5439 5440@value{GDBN} will also issue a warning when stopping at one of these 5441adjusted breakpoints: 5442 5443@smallexample 5444warning: Breakpoint 1 address previously adjusted from 0x00010414 5445to 0x00010410. 5446@end smallexample 5447 5448When this warning is encountered, it may be too late to take remedial 5449action except in cases where the breakpoint is hit earlier or more 5450frequently than expected. 5451 5452@node Continuing and Stepping 5453@section Continuing and Stepping 5454 5455@cindex stepping 5456@cindex continuing 5457@cindex resuming execution 5458@dfn{Continuing} means resuming program execution until your program 5459completes normally. In contrast, @dfn{stepping} means executing just 5460one more ``step'' of your program, where ``step'' may mean either one 5461line of source code, or one machine instruction (depending on what 5462particular command you use). Either when continuing or when stepping, 5463your program may stop even sooner, due to a breakpoint or a signal. (If 5464it stops due to a signal, you may want to use @code{handle}, or use 5465@samp{signal 0} to resume execution (@pxref{Signals, ,Signals}), 5466or you may step into the signal's handler (@pxref{stepping and signal 5467handlers}).) 5468 5469@table @code 5470@kindex continue 5471@kindex c @r{(@code{continue})} 5472@kindex fg @r{(resume foreground execution)} 5473@item continue @r{[}@var{ignore-count}@r{]} 5474@itemx c @r{[}@var{ignore-count}@r{]} 5475@itemx fg @r{[}@var{ignore-count}@r{]} 5476Resume program execution, at the address where your program last stopped; 5477any breakpoints set at that address are bypassed. The optional argument 5478@var{ignore-count} allows you to specify a further number of times to 5479ignore a breakpoint at this location; its effect is like that of 5480@code{ignore} (@pxref{Conditions, ,Break Conditions}). 5481 5482The argument @var{ignore-count} is meaningful only when your program 5483stopped due to a breakpoint. At other times, the argument to 5484@code{continue} is ignored. 5485 5486The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the 5487debugged program is deemed to be the foreground program) are provided 5488purely for convenience, and have exactly the same behavior as 5489@code{continue}. 5490@end table 5491 5492To resume execution at a different place, you can use @code{return} 5493(@pxref{Returning, ,Returning from a Function}) to go back to the 5494calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a 5495Different Address}) to go to an arbitrary location in your program. 5496 5497A typical technique for using stepping is to set a breakpoint 5498(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the 5499beginning of the function or the section of your program where a problem 5500is believed to lie, run your program until it stops at that breakpoint, 5501and then step through the suspect area, examining the variables that are 5502interesting, until you see the problem happen. 5503 5504@table @code 5505@kindex step 5506@kindex s @r{(@code{step})} 5507@item step 5508Continue running your program until control reaches a different source 5509line, then stop it and return control to @value{GDBN}. This command is 5510abbreviated @code{s}. 5511 5512@quotation 5513@c "without debugging information" is imprecise; actually "without line 5514@c numbers in the debugging information". (gcc -g1 has debugging info but 5515@c not line numbers). But it seems complex to try to make that 5516@c distinction here. 5517@emph{Warning:} If you use the @code{step} command while control is 5518within a function that was compiled without debugging information, 5519execution proceeds until control reaches a function that does have 5520debugging information. Likewise, it will not step into a function which 5521is compiled without debugging information. To step through functions 5522without debugging information, use the @code{stepi} command, described 5523below. 5524@end quotation 5525 5526The @code{step} command only stops at the first instruction of a source 5527line. This prevents the multiple stops that could otherwise occur in 5528@code{switch} statements, @code{for} loops, etc. @code{step} continues 5529to stop if a function that has debugging information is called within 5530the line. In other words, @code{step} @emph{steps inside} any functions 5531called within the line. 5532 5533Also, the @code{step} command only enters a function if there is line 5534number information for the function. Otherwise it acts like the 5535@code{next} command. This avoids problems when using @code{cc -gl} 5536on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there 5537was any debugging information about the routine. 5538 5539@item step @var{count} 5540Continue running as in @code{step}, but do so @var{count} times. If a 5541breakpoint is reached, or a signal not related to stepping occurs before 5542@var{count} steps, stepping stops right away. 5543 5544@kindex next 5545@kindex n @r{(@code{next})} 5546@item next @r{[}@var{count}@r{]} 5547Continue to the next source line in the current (innermost) stack frame. 5548This is similar to @code{step}, but function calls that appear within 5549the line of code are executed without stopping. Execution stops when 5550control reaches a different line of code at the original stack level 5551that was executing when you gave the @code{next} command. This command 5552is abbreviated @code{n}. 5553 5554An argument @var{count} is a repeat count, as for @code{step}. 5555 5556 5557@c FIX ME!! Do we delete this, or is there a way it fits in with 5558@c the following paragraph? --- Vctoria 5559@c 5560@c @code{next} within a function that lacks debugging information acts like 5561@c @code{step}, but any function calls appearing within the code of the 5562@c function are executed without stopping. 5563 5564The @code{next} command only stops at the first instruction of a 5565source line. This prevents multiple stops that could otherwise occur in 5566@code{switch} statements, @code{for} loops, etc. 5567 5568@kindex set step-mode 5569@item set step-mode 5570@cindex functions without line info, and stepping 5571@cindex stepping into functions with no line info 5572@itemx set step-mode on 5573The @code{set step-mode on} command causes the @code{step} command to 5574stop at the first instruction of a function which contains no debug line 5575information rather than stepping over it. 5576 5577This is useful in cases where you may be interested in inspecting the 5578machine instructions of a function which has no symbolic info and do not 5579want @value{GDBN} to automatically skip over this function. 5580 5581@item set step-mode off 5582Causes the @code{step} command to step over any functions which contains no 5583debug information. This is the default. 5584 5585@item show step-mode 5586Show whether @value{GDBN} will stop in or step over functions without 5587source line debug information. 5588 5589@kindex finish 5590@kindex fin @r{(@code{finish})} 5591@item finish 5592Continue running until just after function in the selected stack frame 5593returns. Print the returned value (if any). This command can be 5594abbreviated as @code{fin}. 5595 5596Contrast this with the @code{return} command (@pxref{Returning, 5597,Returning from a Function}). 5598 5599@kindex until 5600@kindex u @r{(@code{until})} 5601@cindex run until specified location 5602@item until 5603@itemx u 5604Continue running until a source line past the current line, in the 5605current stack frame, is reached. This command is used to avoid single 5606stepping through a loop more than once. It is like the @code{next} 5607command, except that when @code{until} encounters a jump, it 5608automatically continues execution until the program counter is greater 5609than the address of the jump. 5610 5611This means that when you reach the end of a loop after single stepping 5612though it, @code{until} makes your program continue execution until it 5613exits the loop. In contrast, a @code{next} command at the end of a loop 5614simply steps back to the beginning of the loop, which forces you to step 5615through the next iteration. 5616 5617@code{until} always stops your program if it attempts to exit the current 5618stack frame. 5619 5620@code{until} may produce somewhat counterintuitive results if the order 5621of machine code does not match the order of the source lines. For 5622example, in the following excerpt from a debugging session, the @code{f} 5623(@code{frame}) command shows that execution is stopped at line 5624@code{206}; yet when we use @code{until}, we get to line @code{195}: 5625 5626@smallexample 5627(@value{GDBP}) f 5628#0 main (argc=4, argv=0xf7fffae8) at m4.c:206 5629206 expand_input(); 5630(@value{GDBP}) until 5631195 for ( ; argc > 0; NEXTARG) @{ 5632@end smallexample 5633 5634This happened because, for execution efficiency, the compiler had 5635generated code for the loop closure test at the end, rather than the 5636start, of the loop---even though the test in a C @code{for}-loop is 5637written before the body of the loop. The @code{until} command appeared 5638to step back to the beginning of the loop when it advanced to this 5639expression; however, it has not really gone to an earlier 5640statement---not in terms of the actual machine code. 5641 5642@code{until} with no argument works by means of single 5643instruction stepping, and hence is slower than @code{until} with an 5644argument. 5645 5646@item until @var{location} 5647@itemx u @var{location} 5648Continue running your program until either the specified @var{location} is 5649reached, or the current stack frame returns. The location is any of 5650the forms described in @ref{Specify Location}. 5651This form of the command uses temporary breakpoints, and 5652hence is quicker than @code{until} without an argument. The specified 5653location is actually reached only if it is in the current frame. This 5654implies that @code{until} can be used to skip over recursive function 5655invocations. For instance in the code below, if the current location is 5656line @code{96}, issuing @code{until 99} will execute the program up to 5657line @code{99} in the same invocation of factorial, i.e., after the inner 5658invocations have returned. 5659 5660@smallexample 566194 int factorial (int value) 566295 @{ 566396 if (value > 1) @{ 566497 value *= factorial (value - 1); 566598 @} 566699 return (value); 5667100 @} 5668@end smallexample 5669 5670 5671@kindex advance @var{location} 5672@item advance @var{location} 5673Continue running the program up to the given @var{location}. An argument is 5674required, which should be of one of the forms described in 5675@ref{Specify Location}. 5676Execution will also stop upon exit from the current stack 5677frame. This command is similar to @code{until}, but @code{advance} will 5678not skip over recursive function calls, and the target location doesn't 5679have to be in the same frame as the current one. 5680 5681 5682@kindex stepi 5683@kindex si @r{(@code{stepi})} 5684@item stepi 5685@itemx stepi @var{arg} 5686@itemx si 5687Execute one machine instruction, then stop and return to the debugger. 5688 5689It is often useful to do @samp{display/i $pc} when stepping by machine 5690instructions. This makes @value{GDBN} automatically display the next 5691instruction to be executed, each time your program stops. @xref{Auto 5692Display,, Automatic Display}. 5693 5694An argument is a repeat count, as in @code{step}. 5695 5696@need 750 5697@kindex nexti 5698@kindex ni @r{(@code{nexti})} 5699@item nexti 5700@itemx nexti @var{arg} 5701@itemx ni 5702Execute one machine instruction, but if it is a function call, 5703proceed until the function returns. 5704 5705An argument is a repeat count, as in @code{next}. 5706 5707@end table 5708 5709@anchor{range stepping} 5710@cindex range stepping 5711@cindex target-assisted range stepping 5712By default, and if available, @value{GDBN} makes use of 5713target-assisted @dfn{range stepping}. In other words, whenever you 5714use a stepping command (e.g., @code{step}, @code{next}), @value{GDBN} 5715tells the target to step the corresponding range of instruction 5716addresses instead of issuing multiple single-steps. This speeds up 5717line stepping, particularly for remote targets. Ideally, there should 5718be no reason you would want to turn range stepping off. However, it's 5719possible that a bug in the debug info, a bug in the remote stub (for 5720remote targets), or even a bug in @value{GDBN} could make line 5721stepping behave incorrectly when target-assisted range stepping is 5722enabled. You can use the following command to turn off range stepping 5723if necessary: 5724 5725@table @code 5726@kindex set range-stepping 5727@kindex show range-stepping 5728@item set range-stepping 5729@itemx show range-stepping 5730Control whether range stepping is enabled. 5731 5732If @code{on}, and the target supports it, @value{GDBN} tells the 5733target to step a range of addresses itself, instead of issuing 5734multiple single-steps. If @code{off}, @value{GDBN} always issues 5735single-steps, even if range stepping is supported by the target. The 5736default is @code{on}. 5737 5738@end table 5739 5740@node Skipping Over Functions and Files 5741@section Skipping Over Functions and Files 5742@cindex skipping over functions and files 5743 5744The program you are debugging may contain some functions which are 5745uninteresting to debug. The @code{skip} command lets you tell @value{GDBN} to 5746skip a function, all functions in a file or a particular function in 5747a particular file when stepping. 5748 5749For example, consider the following C function: 5750 5751@smallexample 5752101 int func() 5753102 @{ 5754103 foo(boring()); 5755104 bar(boring()); 5756105 @} 5757@end smallexample 5758 5759@noindent 5760Suppose you wish to step into the functions @code{foo} and @code{bar}, but you 5761are not interested in stepping through @code{boring}. If you run @code{step} 5762at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll 5763step over both @code{foo} and @code{boring}! 5764 5765One solution is to @code{step} into @code{boring} and use the @code{finish} 5766command to immediately exit it. But this can become tedious if @code{boring} 5767is called from many places. 5768 5769A more flexible solution is to execute @kbd{skip boring}. This instructs 5770@value{GDBN} never to step into @code{boring}. Now when you execute 5771@code{step} at line 103, you'll step over @code{boring} and directly into 5772@code{foo}. 5773 5774Functions may be skipped by providing either a function name, linespec 5775(@pxref{Specify Location}), regular expression that matches the function's 5776name, file name or a @code{glob}-style pattern that matches the file name. 5777 5778On Posix systems the form of the regular expression is 5779``Extended Regular Expressions''. See for example @samp{man 7 regex} 5780on @sc{gnu}/Linux systems. On non-Posix systems the form of the regular 5781expression is whatever is provided by the @code{regcomp} function of 5782the underlying system. 5783See for example @samp{man 7 glob} on @sc{gnu}/Linux systems for a 5784description of @code{glob}-style patterns. 5785 5786@table @code 5787@kindex skip 5788@item skip @r{[}@var{options}@r{]} 5789The basic form of the @code{skip} command takes zero or more options 5790that specify what to skip. 5791The @var{options} argument is any useful combination of the following: 5792 5793@table @code 5794@item -file @var{file} 5795@itemx -fi @var{file} 5796Functions in @var{file} will be skipped over when stepping. 5797 5798@item -gfile @var{file-glob-pattern} 5799@itemx -gfi @var{file-glob-pattern} 5800@cindex skipping over files via glob-style patterns 5801Functions in files matching @var{file-glob-pattern} will be skipped 5802over when stepping. 5803 5804@smallexample 5805(gdb) skip -gfi utils/*.c 5806@end smallexample 5807 5808@item -function @var{linespec} 5809@itemx -fu @var{linespec} 5810Functions named by @var{linespec} or the function containing the line 5811named by @var{linespec} will be skipped over when stepping. 5812@xref{Specify Location}. 5813 5814@item -rfunction @var{regexp} 5815@itemx -rfu @var{regexp} 5816@cindex skipping over functions via regular expressions 5817Functions whose name matches @var{regexp} will be skipped over when stepping. 5818 5819This form is useful for complex function names. 5820For example, there is generally no need to step into C@t{++} @code{std::string} 5821constructors or destructors. Plus with C@t{++} templates it can be hard to 5822write out the full name of the function, and often it doesn't matter what 5823the template arguments are. Specifying the function to be skipped as a 5824regular expression makes this easier. 5825 5826@smallexample 5827(gdb) skip -rfu ^std::(allocator|basic_string)<.*>::~?\1 *\( 5828@end smallexample 5829 5830If you want to skip every templated C@t{++} constructor and destructor 5831in the @code{std} namespace you can do: 5832 5833@smallexample 5834(gdb) skip -rfu ^std::([a-zA-z0-9_]+)<.*>::~?\1 *\( 5835@end smallexample 5836@end table 5837 5838If no options are specified, the function you're currently debugging 5839will be skipped. 5840 5841@kindex skip function 5842@item skip function @r{[}@var{linespec}@r{]} 5843After running this command, the function named by @var{linespec} or the 5844function containing the line named by @var{linespec} will be skipped over when 5845stepping. @xref{Specify Location}. 5846 5847If you do not specify @var{linespec}, the function you're currently debugging 5848will be skipped. 5849 5850(If you have a function called @code{file} that you want to skip, use 5851@kbd{skip function file}.) 5852 5853@kindex skip file 5854@item skip file @r{[}@var{filename}@r{]} 5855After running this command, any function whose source lives in @var{filename} 5856will be skipped over when stepping. 5857 5858@smallexample 5859(gdb) skip file boring.c 5860File boring.c will be skipped when stepping. 5861@end smallexample 5862 5863If you do not specify @var{filename}, functions whose source lives in the file 5864you're currently debugging will be skipped. 5865@end table 5866 5867Skips can be listed, deleted, disabled, and enabled, much like breakpoints. 5868These are the commands for managing your list of skips: 5869 5870@table @code 5871@kindex info skip 5872@item info skip @r{[}@var{range}@r{]} 5873Print details about the specified skip(s). If @var{range} is not specified, 5874print a table with details about all functions and files marked for skipping. 5875@code{info skip} prints the following information about each skip: 5876 5877@table @emph 5878@item Identifier 5879A number identifying this skip. 5880@item Enabled or Disabled 5881Enabled skips are marked with @samp{y}. 5882Disabled skips are marked with @samp{n}. 5883@item Glob 5884If the file name is a @samp{glob} pattern this is @samp{y}. 5885Otherwise it is @samp{n}. 5886@item File 5887The name or @samp{glob} pattern of the file to be skipped. 5888If no file is specified this is @samp{<none>}. 5889@item RE 5890If the function name is a @samp{regular expression} this is @samp{y}. 5891Otherwise it is @samp{n}. 5892@item Function 5893The name or regular expression of the function to skip. 5894If no function is specified this is @samp{<none>}. 5895@end table 5896 5897@kindex skip delete 5898@item skip delete @r{[}@var{range}@r{]} 5899Delete the specified skip(s). If @var{range} is not specified, delete all 5900skips. 5901 5902@kindex skip enable 5903@item skip enable @r{[}@var{range}@r{]} 5904Enable the specified skip(s). If @var{range} is not specified, enable all 5905skips. 5906 5907@kindex skip disable 5908@item skip disable @r{[}@var{range}@r{]} 5909Disable the specified skip(s). If @var{range} is not specified, disable all 5910skips. 5911 5912@kindex set debug skip 5913@item set debug skip @r{[}on|off@r{]} 5914Set whether to print the debug output about skipping files and functions. 5915 5916@kindex show debug skip 5917@item show debug skip 5918Show whether the debug output about skipping files and functions is printed. 5919 5920@end table 5921 5922@node Signals 5923@section Signals 5924@cindex signals 5925 5926A signal is an asynchronous event that can happen in a program. The 5927operating system defines the possible kinds of signals, and gives each 5928kind a name and a number. For example, in Unix @code{SIGINT} is the 5929signal a program gets when you type an interrupt character (often @kbd{Ctrl-c}); 5930@code{SIGSEGV} is the signal a program gets from referencing a place in 5931memory far away from all the areas in use; @code{SIGALRM} occurs when 5932the alarm clock timer goes off (which happens only if your program has 5933requested an alarm). 5934 5935@cindex fatal signals 5936Some signals, including @code{SIGALRM}, are a normal part of the 5937functioning of your program. Others, such as @code{SIGSEGV}, indicate 5938errors; these signals are @dfn{fatal} (they kill your program immediately) if the 5939program has not specified in advance some other way to handle the signal. 5940@code{SIGINT} does not indicate an error in your program, but it is normally 5941fatal so it can carry out the purpose of the interrupt: to kill the program. 5942 5943@value{GDBN} has the ability to detect any occurrence of a signal in your 5944program. You can tell @value{GDBN} in advance what to do for each kind of 5945signal. 5946 5947@cindex handling signals 5948Normally, @value{GDBN} is set up to let the non-erroneous signals like 5949@code{SIGALRM} be silently passed to your program 5950(so as not to interfere with their role in the program's functioning) 5951but to stop your program immediately whenever an error signal happens. 5952You can change these settings with the @code{handle} command. 5953 5954@table @code 5955@kindex info signals 5956@kindex info handle 5957@item info signals 5958@itemx info handle 5959Print a table of all the kinds of signals and how @value{GDBN} has been told to 5960handle each one. You can use this to see the signal numbers of all 5961the defined types of signals. 5962 5963@item info signals @var{sig} 5964Similar, but print information only about the specified signal number. 5965 5966@code{info handle} is an alias for @code{info signals}. 5967 5968@item catch signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 5969Set a catchpoint for the indicated signals. @xref{Set Catchpoints}, 5970for details about this command. 5971 5972@kindex handle 5973@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]} 5974Change the way @value{GDBN} handles signal @var{signal}. The @var{signal} 5975can be the number of a signal or its name (with or without the 5976@samp{SIG} at the beginning); a list of signal numbers of the form 5977@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the 5978known signals. Optional arguments @var{keywords}, described below, 5979say what change to make. 5980@end table 5981 5982@c @group 5983The keywords allowed by the @code{handle} command can be abbreviated. 5984Their full names are: 5985 5986@table @code 5987@item nostop 5988@value{GDBN} should not stop your program when this signal happens. It may 5989still print a message telling you that the signal has come in. 5990 5991@item stop 5992@value{GDBN} should stop your program when this signal happens. This implies 5993the @code{print} keyword as well. 5994 5995@item print 5996@value{GDBN} should print a message when this signal happens. 5997 5998@item noprint 5999@value{GDBN} should not mention the occurrence of the signal at all. This 6000implies the @code{nostop} keyword as well. 6001 6002@item pass 6003@itemx noignore 6004@value{GDBN} should allow your program to see this signal; your program 6005can handle the signal, or else it may terminate if the signal is fatal 6006and not handled. @code{pass} and @code{noignore} are synonyms. 6007 6008@item nopass 6009@itemx ignore 6010@value{GDBN} should not allow your program to see this signal. 6011@code{nopass} and @code{ignore} are synonyms. 6012@end table 6013@c @end group 6014 6015When a signal stops your program, the signal is not visible to the 6016program until you 6017continue. Your program sees the signal then, if @code{pass} is in 6018effect for the signal in question @emph{at that time}. In other words, 6019after @value{GDBN} reports a signal, you can use the @code{handle} 6020command with @code{pass} or @code{nopass} to control whether your 6021program sees that signal when you continue. 6022 6023The default is set to @code{nostop}, @code{noprint}, @code{pass} for 6024non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and 6025@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the 6026erroneous signals. 6027 6028You can also use the @code{signal} command to prevent your program from 6029seeing a signal, or cause it to see a signal it normally would not see, 6030or to give it any signal at any time. For example, if your program stopped 6031due to some sort of memory reference error, you might store correct 6032values into the erroneous variables and continue, hoping to see more 6033execution; but your program would probably terminate immediately as 6034a result of the fatal signal once it saw the signal. To prevent this, 6035you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your 6036Program a Signal}. 6037 6038@cindex stepping and signal handlers 6039@anchor{stepping and signal handlers} 6040 6041@value{GDBN} optimizes for stepping the mainline code. If a signal 6042that has @code{handle nostop} and @code{handle pass} set arrives while 6043a stepping command (e.g., @code{stepi}, @code{step}, @code{next}) is 6044in progress, @value{GDBN} lets the signal handler run and then resumes 6045stepping the mainline code once the signal handler returns. In other 6046words, @value{GDBN} steps over the signal handler. This prevents 6047signals that you've specified as not interesting (with @code{handle 6048nostop}) from changing the focus of debugging unexpectedly. Note that 6049the signal handler itself may still hit a breakpoint, stop for another 6050signal that has @code{handle stop} in effect, or for any other event 6051that normally results in stopping the stepping command sooner. Also 6052note that @value{GDBN} still informs you that the program received a 6053signal if @code{handle print} is set. 6054 6055@anchor{stepping into signal handlers} 6056 6057If you set @code{handle pass} for a signal, and your program sets up a 6058handler for it, then issuing a stepping command, such as @code{step} 6059or @code{stepi}, when your program is stopped due to the signal will 6060step @emph{into} the signal handler (if the target supports that). 6061 6062Likewise, if you use the @code{queue-signal} command to queue a signal 6063to be delivered to the current thread when execution of the thread 6064resumes (@pxref{Signaling, ,Giving your Program a Signal}), then a 6065stepping command will step into the signal handler. 6066 6067Here's an example, using @code{stepi} to step to the first instruction 6068of @code{SIGUSR1}'s handler: 6069 6070@smallexample 6071(@value{GDBP}) handle SIGUSR1 6072Signal Stop Print Pass to program Description 6073SIGUSR1 Yes Yes Yes User defined signal 1 6074(@value{GDBP}) c 6075Continuing. 6076 6077Program received signal SIGUSR1, User defined signal 1. 6078main () sigusr1.c:28 607928 p = 0; 6080(@value{GDBP}) si 6081sigusr1_handler () at sigusr1.c:9 60829 @{ 6083@end smallexample 6084 6085The same, but using @code{queue-signal} instead of waiting for the 6086program to receive the signal first: 6087 6088@smallexample 6089(@value{GDBP}) n 609028 p = 0; 6091(@value{GDBP}) queue-signal SIGUSR1 6092(@value{GDBP}) si 6093sigusr1_handler () at sigusr1.c:9 60949 @{ 6095(@value{GDBP}) 6096@end smallexample 6097 6098@cindex extra signal information 6099@anchor{extra signal information} 6100 6101On some targets, @value{GDBN} can inspect extra signal information 6102associated with the intercepted signal, before it is actually 6103delivered to the program being debugged. This information is exported 6104by the convenience variable @code{$_siginfo}, and consists of data 6105that is passed by the kernel to the signal handler at the time of the 6106receipt of a signal. The data type of the information itself is 6107target dependent. You can see the data type using the @code{ptype 6108$_siginfo} command. On Unix systems, it typically corresponds to the 6109standard @code{siginfo_t} type, as defined in the @file{signal.h} 6110system header. 6111 6112Here's an example, on a @sc{gnu}/Linux system, printing the stray 6113referenced address that raised a segmentation fault. 6114 6115@smallexample 6116@group 6117(@value{GDBP}) continue 6118Program received signal SIGSEGV, Segmentation fault. 61190x0000000000400766 in main () 612069 *(int *)p = 0; 6121(@value{GDBP}) ptype $_siginfo 6122type = struct @{ 6123 int si_signo; 6124 int si_errno; 6125 int si_code; 6126 union @{ 6127 int _pad[28]; 6128 struct @{...@} _kill; 6129 struct @{...@} _timer; 6130 struct @{...@} _rt; 6131 struct @{...@} _sigchld; 6132 struct @{...@} _sigfault; 6133 struct @{...@} _sigpoll; 6134 @} _sifields; 6135@} 6136(@value{GDBP}) ptype $_siginfo._sifields._sigfault 6137type = struct @{ 6138 void *si_addr; 6139@} 6140(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr 6141$1 = (void *) 0x7ffff7ff7000 6142@end group 6143@end smallexample 6144 6145Depending on target support, @code{$_siginfo} may also be writable. 6146 6147@cindex Intel MPX boundary violations 6148@cindex boundary violations, Intel MPX 6149On some targets, a @code{SIGSEGV} can be caused by a boundary 6150violation, i.e., accessing an address outside of the allowed range. 6151In those cases @value{GDBN} may displays additional information, 6152depending on how @value{GDBN} has been told to handle the signal. 6153With @code{handle stop SIGSEGV}, @value{GDBN} displays the violation 6154kind: "Upper" or "Lower", the memory address accessed and the 6155bounds, while with @code{handle nostop SIGSEGV} no additional 6156information is displayed. 6157 6158The usual output of a segfault is: 6159@smallexample 6160Program received signal SIGSEGV, Segmentation fault 61610x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68 616268 value = *(p + len); 6163@end smallexample 6164 6165While a bound violation is presented as: 6166@smallexample 6167Program received signal SIGSEGV, Segmentation fault 6168Upper bound violation while accessing address 0x7fffffffc3b3 6169Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3] 61700x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68 617168 value = *(p + len); 6172@end smallexample 6173 6174@node Thread Stops 6175@section Stopping and Starting Multi-thread Programs 6176 6177@cindex stopped threads 6178@cindex threads, stopped 6179 6180@cindex continuing threads 6181@cindex threads, continuing 6182 6183@value{GDBN} supports debugging programs with multiple threads 6184(@pxref{Threads,, Debugging Programs with Multiple Threads}). There 6185are two modes of controlling execution of your program within the 6186debugger. In the default mode, referred to as @dfn{all-stop mode}, 6187when any thread in your program stops (for example, at a breakpoint 6188or while being stepped), all other threads in the program are also stopped by 6189@value{GDBN}. On some targets, @value{GDBN} also supports 6190@dfn{non-stop mode}, in which other threads can continue to run freely while 6191you examine the stopped thread in the debugger. 6192 6193@menu 6194* All-Stop Mode:: All threads stop when GDB takes control 6195* Non-Stop Mode:: Other threads continue to execute 6196* Background Execution:: Running your program asynchronously 6197* Thread-Specific Breakpoints:: Controlling breakpoints 6198* Interrupted System Calls:: GDB may interfere with system calls 6199* Observer Mode:: GDB does not alter program behavior 6200@end menu 6201 6202@node All-Stop Mode 6203@subsection All-Stop Mode 6204 6205@cindex all-stop mode 6206 6207In all-stop mode, whenever your program stops under @value{GDBN} for any reason, 6208@emph{all} threads of execution stop, not just the current thread. This 6209allows you to examine the overall state of the program, including 6210switching between threads, without worrying that things may change 6211underfoot. 6212 6213Conversely, whenever you restart the program, @emph{all} threads start 6214executing. @emph{This is true even when single-stepping} with commands 6215like @code{step} or @code{next}. 6216 6217In particular, @value{GDBN} cannot single-step all threads in lockstep. 6218Since thread scheduling is up to your debugging target's operating 6219system (not controlled by @value{GDBN}), other threads may 6220execute more than one statement while the current thread completes a 6221single step. Moreover, in general other threads stop in the middle of a 6222statement, rather than at a clean statement boundary, when the program 6223stops. 6224 6225You might even find your program stopped in another thread after 6226continuing or even single-stepping. This happens whenever some other 6227thread runs into a breakpoint, a signal, or an exception before the 6228first thread completes whatever you requested. 6229 6230@cindex automatic thread selection 6231@cindex switching threads automatically 6232@cindex threads, automatic switching 6233Whenever @value{GDBN} stops your program, due to a breakpoint or a 6234signal, it automatically selects the thread where that breakpoint or 6235signal happened. @value{GDBN} alerts you to the context switch with a 6236message such as @samp{[Switching to Thread @var{n}]} to identify the 6237thread. 6238 6239On some OSes, you can modify @value{GDBN}'s default behavior by 6240locking the OS scheduler to allow only a single thread to run. 6241 6242@table @code 6243@item set scheduler-locking @var{mode} 6244@cindex scheduler locking mode 6245@cindex lock scheduler 6246Set the scheduler locking mode. It applies to normal execution, 6247record mode, and replay mode. If it is @code{off}, then there is no 6248locking and any thread may run at any time. If @code{on}, then only 6249the current thread may run when the inferior is resumed. The 6250@code{step} mode optimizes for single-stepping; it prevents other 6251threads from preempting the current thread while you are stepping, so 6252that the focus of debugging does not change unexpectedly. Other 6253threads never get a chance to run when you step, and they are 6254completely free to run when you use commands like @samp{continue}, 6255@samp{until}, or @samp{finish}. However, unless another thread hits a 6256breakpoint during its timeslice, @value{GDBN} does not change the 6257current thread away from the thread that you are debugging. The 6258@code{replay} mode behaves like @code{off} in record mode and like 6259@code{on} in replay mode. 6260 6261@item show scheduler-locking 6262Display the current scheduler locking mode. 6263@end table 6264 6265@cindex resume threads of multiple processes simultaneously 6266By default, when you issue one of the execution commands such as 6267@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only 6268threads of the current inferior to run. For example, if @value{GDBN} 6269is attached to two inferiors, each with two threads, the 6270@code{continue} command resumes only the two threads of the current 6271inferior. This is useful, for example, when you debug a program that 6272forks and you want to hold the parent stopped (so that, for instance, 6273it doesn't run to exit), while you debug the child. In other 6274situations, you may not be interested in inspecting the current state 6275of any of the processes @value{GDBN} is attached to, and you may want 6276to resume them all until some breakpoint is hit. In the latter case, 6277you can instruct @value{GDBN} to allow all threads of all the 6278inferiors to run with the @w{@code{set schedule-multiple}} command. 6279 6280@table @code 6281@kindex set schedule-multiple 6282@item set schedule-multiple 6283Set the mode for allowing threads of multiple processes to be resumed 6284when an execution command is issued. When @code{on}, all threads of 6285all processes are allowed to run. When @code{off}, only the threads 6286of the current process are resumed. The default is @code{off}. The 6287@code{scheduler-locking} mode takes precedence when set to @code{on}, 6288or while you are stepping and set to @code{step}. 6289 6290@item show schedule-multiple 6291Display the current mode for resuming the execution of threads of 6292multiple processes. 6293@end table 6294 6295@node Non-Stop Mode 6296@subsection Non-Stop Mode 6297 6298@cindex non-stop mode 6299 6300@c This section is really only a place-holder, and needs to be expanded 6301@c with more details. 6302 6303For some multi-threaded targets, @value{GDBN} supports an optional 6304mode of operation in which you can examine stopped program threads in 6305the debugger while other threads continue to execute freely. This 6306minimizes intrusion when debugging live systems, such as programs 6307where some threads have real-time constraints or must continue to 6308respond to external events. This is referred to as @dfn{non-stop} mode. 6309 6310In non-stop mode, when a thread stops to report a debugging event, 6311@emph{only} that thread is stopped; @value{GDBN} does not stop other 6312threads as well, in contrast to the all-stop mode behavior. Additionally, 6313execution commands such as @code{continue} and @code{step} apply by default 6314only to the current thread in non-stop mode, rather than all threads as 6315in all-stop mode. This allows you to control threads explicitly in 6316ways that are not possible in all-stop mode --- for example, stepping 6317one thread while allowing others to run freely, stepping 6318one thread while holding all others stopped, or stepping several threads 6319independently and simultaneously. 6320 6321To enter non-stop mode, use this sequence of commands before you run 6322or attach to your program: 6323 6324@smallexample 6325# If using the CLI, pagination breaks non-stop. 6326set pagination off 6327 6328# Finally, turn it on! 6329set non-stop on 6330@end smallexample 6331 6332You can use these commands to manipulate the non-stop mode setting: 6333 6334@table @code 6335@kindex set non-stop 6336@item set non-stop on 6337Enable selection of non-stop mode. 6338@item set non-stop off 6339Disable selection of non-stop mode. 6340@kindex show non-stop 6341@item show non-stop 6342Show the current non-stop enablement setting. 6343@end table 6344 6345Note these commands only reflect whether non-stop mode is enabled, 6346not whether the currently-executing program is being run in non-stop mode. 6347In particular, the @code{set non-stop} preference is only consulted when 6348@value{GDBN} starts or connects to the target program, and it is generally 6349not possible to switch modes once debugging has started. Furthermore, 6350since not all targets support non-stop mode, even when you have enabled 6351non-stop mode, @value{GDBN} may still fall back to all-stop operation by 6352default. 6353 6354In non-stop mode, all execution commands apply only to the current thread 6355by default. That is, @code{continue} only continues one thread. 6356To continue all threads, issue @code{continue -a} or @code{c -a}. 6357 6358You can use @value{GDBN}'s background execution commands 6359(@pxref{Background Execution}) to run some threads in the background 6360while you continue to examine or step others from @value{GDBN}. 6361The MI execution commands (@pxref{GDB/MI Program Execution}) are 6362always executed asynchronously in non-stop mode. 6363 6364Suspending execution is done with the @code{interrupt} command when 6365running in the background, or @kbd{Ctrl-c} during foreground execution. 6366In all-stop mode, this stops the whole process; 6367but in non-stop mode the interrupt applies only to the current thread. 6368To stop the whole program, use @code{interrupt -a}. 6369 6370Other execution commands do not currently support the @code{-a} option. 6371 6372In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make 6373that thread current, as it does in all-stop mode. This is because the 6374thread stop notifications are asynchronous with respect to @value{GDBN}'s 6375command interpreter, and it would be confusing if @value{GDBN} unexpectedly 6376changed to a different thread just as you entered a command to operate on the 6377previously current thread. 6378 6379@node Background Execution 6380@subsection Background Execution 6381 6382@cindex foreground execution 6383@cindex background execution 6384@cindex asynchronous execution 6385@cindex execution, foreground, background and asynchronous 6386 6387@value{GDBN}'s execution commands have two variants: the normal 6388foreground (synchronous) behavior, and a background 6389(asynchronous) behavior. In foreground execution, @value{GDBN} waits for 6390the program to report that some thread has stopped before prompting for 6391another command. In background execution, @value{GDBN} immediately gives 6392a command prompt so that you can issue other commands while your program runs. 6393 6394If the target doesn't support async mode, @value{GDBN} issues an error 6395message if you attempt to use the background execution commands. 6396 6397@cindex @code{&}, background execution of commands 6398To specify background execution, add a @code{&} to the command. For example, 6399the background form of the @code{continue} command is @code{continue&}, or 6400just @code{c&}. The execution commands that accept background execution 6401are: 6402 6403@table @code 6404@kindex run& 6405@item run 6406@xref{Starting, , Starting your Program}. 6407 6408@item attach 6409@kindex attach& 6410@xref{Attach, , Debugging an Already-running Process}. 6411 6412@item step 6413@kindex step& 6414@xref{Continuing and Stepping, step}. 6415 6416@item stepi 6417@kindex stepi& 6418@xref{Continuing and Stepping, stepi}. 6419 6420@item next 6421@kindex next& 6422@xref{Continuing and Stepping, next}. 6423 6424@item nexti 6425@kindex nexti& 6426@xref{Continuing and Stepping, nexti}. 6427 6428@item continue 6429@kindex continue& 6430@xref{Continuing and Stepping, continue}. 6431 6432@item finish 6433@kindex finish& 6434@xref{Continuing and Stepping, finish}. 6435 6436@item until 6437@kindex until& 6438@xref{Continuing and Stepping, until}. 6439 6440@end table 6441 6442Background execution is especially useful in conjunction with non-stop 6443mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}. 6444However, you can also use these commands in the normal all-stop mode with 6445the restriction that you cannot issue another execution command until the 6446previous one finishes. Examples of commands that are valid in all-stop 6447mode while the program is running include @code{help} and @code{info break}. 6448 6449You can interrupt your program while it is running in the background by 6450using the @code{interrupt} command. 6451 6452@table @code 6453@kindex interrupt 6454@item interrupt 6455@itemx interrupt -a 6456 6457Suspend execution of the running program. In all-stop mode, 6458@code{interrupt} stops the whole process, but in non-stop mode, it stops 6459only the current thread. To stop the whole program in non-stop mode, 6460use @code{interrupt -a}. 6461@end table 6462 6463@node Thread-Specific Breakpoints 6464@subsection Thread-Specific Breakpoints 6465 6466When your program has multiple threads (@pxref{Threads,, Debugging 6467Programs with Multiple Threads}), you can choose whether to set 6468breakpoints on all threads, or on a particular thread. 6469 6470@table @code 6471@cindex breakpoints and threads 6472@cindex thread breakpoints 6473@kindex break @dots{} thread @var{thread-id} 6474@item break @var{location} thread @var{thread-id} 6475@itemx break @var{location} thread @var{thread-id} if @dots{} 6476@var{location} specifies source lines; there are several ways of 6477writing them (@pxref{Specify Location}), but the effect is always to 6478specify some source line. 6479 6480Use the qualifier @samp{thread @var{thread-id}} with a breakpoint command 6481to specify that you only want @value{GDBN} to stop the program when a 6482particular thread reaches this breakpoint. The @var{thread-id} specifier 6483is one of the thread identifiers assigned by @value{GDBN}, shown 6484in the first column of the @samp{info threads} display. 6485 6486If you do not specify @samp{thread @var{thread-id}} when you set a 6487breakpoint, the breakpoint applies to @emph{all} threads of your 6488program. 6489 6490You can use the @code{thread} qualifier on conditional breakpoints as 6491well; in this case, place @samp{thread @var{thread-id}} before or 6492after the breakpoint condition, like this: 6493 6494@smallexample 6495(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim 6496@end smallexample 6497 6498@end table 6499 6500Thread-specific breakpoints are automatically deleted when 6501@value{GDBN} detects the corresponding thread is no longer in the 6502thread list. For example: 6503 6504@smallexample 6505(@value{GDBP}) c 6506Thread-specific breakpoint 3 deleted - thread 28 no longer in the thread list. 6507@end smallexample 6508 6509There are several ways for a thread to disappear, such as a regular 6510thread exit, but also when you detach from the process with the 6511@code{detach} command (@pxref{Attach, ,Debugging an Already-running 6512Process}), or if @value{GDBN} loses the remote connection 6513(@pxref{Remote Debugging}), etc. Note that with some targets, 6514@value{GDBN} is only able to detect a thread has exited when the user 6515explictly asks for the thread list with the @code{info threads} 6516command. 6517 6518@node Interrupted System Calls 6519@subsection Interrupted System Calls 6520 6521@cindex thread breakpoints and system calls 6522@cindex system calls and thread breakpoints 6523@cindex premature return from system calls 6524There is an unfortunate side effect when using @value{GDBN} to debug 6525multi-threaded programs. If one thread stops for a 6526breakpoint, or for some other reason, and another thread is blocked in a 6527system call, then the system call may return prematurely. This is a 6528consequence of the interaction between multiple threads and the signals 6529that @value{GDBN} uses to implement breakpoints and other events that 6530stop execution. 6531 6532To handle this problem, your program should check the return value of 6533each system call and react appropriately. This is good programming 6534style anyways. 6535 6536For example, do not write code like this: 6537 6538@smallexample 6539 sleep (10); 6540@end smallexample 6541 6542The call to @code{sleep} will return early if a different thread stops 6543at a breakpoint or for some other reason. 6544 6545Instead, write this: 6546 6547@smallexample 6548 int unslept = 10; 6549 while (unslept > 0) 6550 unslept = sleep (unslept); 6551@end smallexample 6552 6553A system call is allowed to return early, so the system is still 6554conforming to its specification. But @value{GDBN} does cause your 6555multi-threaded program to behave differently than it would without 6556@value{GDBN}. 6557 6558Also, @value{GDBN} uses internal breakpoints in the thread library to 6559monitor certain events such as thread creation and thread destruction. 6560When such an event happens, a system call in another thread may return 6561prematurely, even though your program does not appear to stop. 6562 6563@node Observer Mode 6564@subsection Observer Mode 6565 6566If you want to build on non-stop mode and observe program behavior 6567without any chance of disruption by @value{GDBN}, you can set 6568variables to disable all of the debugger's attempts to modify state, 6569whether by writing memory, inserting breakpoints, etc. These operate 6570at a low level, intercepting operations from all commands. 6571 6572When all of these are set to @code{off}, then @value{GDBN} is said to 6573be @dfn{observer mode}. As a convenience, the variable 6574@code{observer} can be set to disable these, plus enable non-stop 6575mode. 6576 6577Note that @value{GDBN} will not prevent you from making nonsensical 6578combinations of these settings. For instance, if you have enabled 6579@code{may-insert-breakpoints} but disabled @code{may-write-memory}, 6580then breakpoints that work by writing trap instructions into the code 6581stream will still not be able to be placed. 6582 6583@table @code 6584 6585@kindex observer 6586@item set observer on 6587@itemx set observer off 6588When set to @code{on}, this disables all the permission variables 6589below (except for @code{insert-fast-tracepoints}), plus enables 6590non-stop debugging. Setting this to @code{off} switches back to 6591normal debugging, though remaining in non-stop mode. 6592 6593@item show observer 6594Show whether observer mode is on or off. 6595 6596@kindex may-write-registers 6597@item set may-write-registers on 6598@itemx set may-write-registers off 6599This controls whether @value{GDBN} will attempt to alter the values of 6600registers, such as with assignment expressions in @code{print}, or the 6601@code{jump} command. It defaults to @code{on}. 6602 6603@item show may-write-registers 6604Show the current permission to write registers. 6605 6606@kindex may-write-memory 6607@item set may-write-memory on 6608@itemx set may-write-memory off 6609This controls whether @value{GDBN} will attempt to alter the contents 6610of memory, such as with assignment expressions in @code{print}. It 6611defaults to @code{on}. 6612 6613@item show may-write-memory 6614Show the current permission to write memory. 6615 6616@kindex may-insert-breakpoints 6617@item set may-insert-breakpoints on 6618@itemx set may-insert-breakpoints off 6619This controls whether @value{GDBN} will attempt to insert breakpoints. 6620This affects all breakpoints, including internal breakpoints defined 6621by @value{GDBN}. It defaults to @code{on}. 6622 6623@item show may-insert-breakpoints 6624Show the current permission to insert breakpoints. 6625 6626@kindex may-insert-tracepoints 6627@item set may-insert-tracepoints on 6628@itemx set may-insert-tracepoints off 6629This controls whether @value{GDBN} will attempt to insert (regular) 6630tracepoints at the beginning of a tracing experiment. It affects only 6631non-fast tracepoints, fast tracepoints being under the control of 6632@code{may-insert-fast-tracepoints}. It defaults to @code{on}. 6633 6634@item show may-insert-tracepoints 6635Show the current permission to insert tracepoints. 6636 6637@kindex may-insert-fast-tracepoints 6638@item set may-insert-fast-tracepoints on 6639@itemx set may-insert-fast-tracepoints off 6640This controls whether @value{GDBN} will attempt to insert fast 6641tracepoints at the beginning of a tracing experiment. It affects only 6642fast tracepoints, regular (non-fast) tracepoints being under the 6643control of @code{may-insert-tracepoints}. It defaults to @code{on}. 6644 6645@item show may-insert-fast-tracepoints 6646Show the current permission to insert fast tracepoints. 6647 6648@kindex may-interrupt 6649@item set may-interrupt on 6650@itemx set may-interrupt off 6651This controls whether @value{GDBN} will attempt to interrupt or stop 6652program execution. When this variable is @code{off}, the 6653@code{interrupt} command will have no effect, nor will 6654@kbd{Ctrl-c}. It defaults to @code{on}. 6655 6656@item show may-interrupt 6657Show the current permission to interrupt or stop the program. 6658 6659@end table 6660 6661@node Reverse Execution 6662@chapter Running programs backward 6663@cindex reverse execution 6664@cindex running programs backward 6665 6666When you are debugging a program, it is not unusual to realize that 6667you have gone too far, and some event of interest has already happened. 6668If the target environment supports it, @value{GDBN} can allow you to 6669``rewind'' the program by running it backward. 6670 6671A target environment that supports reverse execution should be able 6672to ``undo'' the changes in machine state that have taken place as the 6673program was executing normally. Variables, registers etc.@: should 6674revert to their previous values. Obviously this requires a great 6675deal of sophistication on the part of the target environment; not 6676all target environments can support reverse execution. 6677 6678When a program is executed in reverse, the instructions that 6679have most recently been executed are ``un-executed'', in reverse 6680order. The program counter runs backward, following the previous 6681thread of execution in reverse. As each instruction is ``un-executed'', 6682the values of memory and/or registers that were changed by that 6683instruction are reverted to their previous states. After executing 6684a piece of source code in reverse, all side effects of that code 6685should be ``undone'', and all variables should be returned to their 6686prior values@footnote{ 6687Note that some side effects are easier to undo than others. For instance, 6688memory and registers are relatively easy, but device I/O is hard. Some 6689targets may be able undo things like device I/O, and some may not. 6690 6691The contract between @value{GDBN} and the reverse executing target 6692requires only that the target do something reasonable when 6693@value{GDBN} tells it to execute backwards, and then report the 6694results back to @value{GDBN}. Whatever the target reports back to 6695@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN} 6696assumes that the memory and registers that the target reports are in a 6697consistant state, but @value{GDBN} accepts whatever it is given. 6698}. 6699 6700If you are debugging in a target environment that supports 6701reverse execution, @value{GDBN} provides the following commands. 6702 6703@table @code 6704@kindex reverse-continue 6705@kindex rc @r{(@code{reverse-continue})} 6706@item reverse-continue @r{[}@var{ignore-count}@r{]} 6707@itemx rc @r{[}@var{ignore-count}@r{]} 6708Beginning at the point where your program last stopped, start executing 6709in reverse. Reverse execution will stop for breakpoints and synchronous 6710exceptions (signals), just like normal execution. Behavior of 6711asynchronous signals depends on the target environment. 6712 6713@kindex reverse-step 6714@kindex rs @r{(@code{step})} 6715@item reverse-step @r{[}@var{count}@r{]} 6716Run the program backward until control reaches the start of a 6717different source line; then stop it, and return control to @value{GDBN}. 6718 6719Like the @code{step} command, @code{reverse-step} will only stop 6720at the beginning of a source line. It ``un-executes'' the previously 6721executed source line. If the previous source line included calls to 6722debuggable functions, @code{reverse-step} will step (backward) into 6723the called function, stopping at the beginning of the @emph{last} 6724statement in the called function (typically a return statement). 6725 6726Also, as with the @code{step} command, if non-debuggable functions are 6727called, @code{reverse-step} will run thru them backward without stopping. 6728 6729@kindex reverse-stepi 6730@kindex rsi @r{(@code{reverse-stepi})} 6731@item reverse-stepi @r{[}@var{count}@r{]} 6732Reverse-execute one machine instruction. Note that the instruction 6733to be reverse-executed is @emph{not} the one pointed to by the program 6734counter, but the instruction executed prior to that one. For instance, 6735if the last instruction was a jump, @code{reverse-stepi} will take you 6736back from the destination of the jump to the jump instruction itself. 6737 6738@kindex reverse-next 6739@kindex rn @r{(@code{reverse-next})} 6740@item reverse-next @r{[}@var{count}@r{]} 6741Run backward to the beginning of the previous line executed in 6742the current (innermost) stack frame. If the line contains function 6743calls, they will be ``un-executed'' without stopping. Starting from 6744the first line of a function, @code{reverse-next} will take you back 6745to the caller of that function, @emph{before} the function was called, 6746just as the normal @code{next} command would take you from the last 6747line of a function back to its return to its caller 6748@footnote{Unless the code is too heavily optimized.}. 6749 6750@kindex reverse-nexti 6751@kindex rni @r{(@code{reverse-nexti})} 6752@item reverse-nexti @r{[}@var{count}@r{]} 6753Like @code{nexti}, @code{reverse-nexti} executes a single instruction 6754in reverse, except that called functions are ``un-executed'' atomically. 6755That is, if the previously executed instruction was a return from 6756another function, @code{reverse-nexti} will continue to execute 6757in reverse until the call to that function (from the current stack 6758frame) is reached. 6759 6760@kindex reverse-finish 6761@item reverse-finish 6762Just as the @code{finish} command takes you to the point where the 6763current function returns, @code{reverse-finish} takes you to the point 6764where it was called. Instead of ending up at the end of the current 6765function invocation, you end up at the beginning. 6766 6767@kindex set exec-direction 6768@item set exec-direction 6769Set the direction of target execution. 6770@item set exec-direction reverse 6771@cindex execute forward or backward in time 6772@value{GDBN} will perform all execution commands in reverse, until the 6773exec-direction mode is changed to ``forward''. Affected commands include 6774@code{step, stepi, next, nexti, continue, and finish}. The @code{return} 6775command cannot be used in reverse mode. 6776@item set exec-direction forward 6777@value{GDBN} will perform all execution commands in the normal fashion. 6778This is the default. 6779@end table 6780 6781 6782@node Process Record and Replay 6783@chapter Recording Inferior's Execution and Replaying It 6784@cindex process record and replay 6785@cindex recording inferior's execution and replaying it 6786 6787On some platforms, @value{GDBN} provides a special @dfn{process record 6788and replay} target that can record a log of the process execution, and 6789replay it later with both forward and reverse execution commands. 6790 6791@cindex replay mode 6792When this target is in use, if the execution log includes the record 6793for the next instruction, @value{GDBN} will debug in @dfn{replay 6794mode}. In the replay mode, the inferior does not really execute code 6795instructions. Instead, all the events that normally happen during 6796code execution are taken from the execution log. While code is not 6797really executed in replay mode, the values of registers (including the 6798program counter register) and the memory of the inferior are still 6799changed as they normally would. Their contents are taken from the 6800execution log. 6801 6802@cindex record mode 6803If the record for the next instruction is not in the execution log, 6804@value{GDBN} will debug in @dfn{record mode}. In this mode, the 6805inferior executes normally, and @value{GDBN} records the execution log 6806for future replay. 6807 6808The process record and replay target supports reverse execution 6809(@pxref{Reverse Execution}), even if the platform on which the 6810inferior runs does not. However, the reverse execution is limited in 6811this case by the range of the instructions recorded in the execution 6812log. In other words, reverse execution on platforms that don't 6813support it directly can only be done in the replay mode. 6814 6815When debugging in the reverse direction, @value{GDBN} will work in 6816replay mode as long as the execution log includes the record for the 6817previous instruction; otherwise, it will work in record mode, if the 6818platform supports reverse execution, or stop if not. 6819 6820For architecture environments that support process record and replay, 6821@value{GDBN} provides the following commands: 6822 6823@table @code 6824@kindex target record 6825@kindex target record-full 6826@kindex target record-btrace 6827@kindex record 6828@kindex record full 6829@kindex record btrace 6830@kindex record btrace bts 6831@kindex record btrace pt 6832@kindex record bts 6833@kindex record pt 6834@kindex rec 6835@kindex rec full 6836@kindex rec btrace 6837@kindex rec btrace bts 6838@kindex rec btrace pt 6839@kindex rec bts 6840@kindex rec pt 6841@item record @var{method} 6842This command starts the process record and replay target. The 6843recording method can be specified as parameter. Without a parameter 6844the command uses the @code{full} recording method. The following 6845recording methods are available: 6846 6847@table @code 6848@item full 6849Full record/replay recording using @value{GDBN}'s software record and 6850replay implementation. This method allows replaying and reverse 6851execution. 6852 6853@item btrace @var{format} 6854Hardware-supported instruction recording. This method does not record 6855data. Further, the data is collected in a ring buffer so old data will 6856be overwritten when the buffer is full. It allows limited reverse 6857execution. Variables and registers are not available during reverse 6858execution. In remote debugging, recording continues on disconnect. 6859Recorded data can be inspected after reconnecting. The recording may 6860be stopped using @code{record stop}. 6861 6862The recording format can be specified as parameter. Without a parameter 6863the command chooses the recording format. The following recording 6864formats are available: 6865 6866@table @code 6867@item bts 6868@cindex branch trace store 6869Use the @dfn{Branch Trace Store} (@acronym{BTS}) recording format. In 6870this format, the processor stores a from/to record for each executed 6871branch in the btrace ring buffer. 6872 6873@item pt 6874@cindex Intel Processor Trace 6875Use the @dfn{Intel Processor Trace} recording format. In this 6876format, the processor stores the execution trace in a compressed form 6877that is afterwards decoded by @value{GDBN}. 6878 6879The trace can be recorded with very low overhead. The compressed 6880trace format also allows small trace buffers to already contain a big 6881number of instructions compared to @acronym{BTS}. 6882 6883Decoding the recorded execution trace, on the other hand, is more 6884expensive than decoding @acronym{BTS} trace. This is mostly due to the 6885increased number of instructions to process. You should increase the 6886buffer-size with care. 6887@end table 6888 6889Not all recording formats may be available on all processors. 6890@end table 6891 6892The process record and replay target can only debug a process that is 6893already running. Therefore, you need first to start the process with 6894the @kbd{run} or @kbd{start} commands, and then start the recording 6895with the @kbd{record @var{method}} command. 6896 6897@cindex displaced stepping, and process record and replay 6898Displaced stepping (@pxref{Maintenance Commands,, displaced stepping}) 6899will be automatically disabled when process record and replay target 6900is started. That's because the process record and replay target 6901doesn't support displaced stepping. 6902 6903@cindex non-stop mode, and process record and replay 6904@cindex asynchronous execution, and process record and replay 6905If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in 6906the asynchronous execution mode (@pxref{Background Execution}), not 6907all recording methods are available. The @code{full} recording method 6908does not support these two modes. 6909 6910@kindex record stop 6911@kindex rec s 6912@item record stop 6913Stop the process record and replay target. When process record and 6914replay target stops, the entire execution log will be deleted and the 6915inferior will either be terminated, or will remain in its final state. 6916 6917When you stop the process record and replay target in record mode (at 6918the end of the execution log), the inferior will be stopped at the 6919next instruction that would have been recorded. In other words, if 6920you record for a while and then stop recording, the inferior process 6921will be left in the same state as if the recording never happened. 6922 6923On the other hand, if the process record and replay target is stopped 6924while in replay mode (that is, not at the end of the execution log, 6925but at some earlier point), the inferior process will become ``live'' 6926at that earlier state, and it will then be possible to continue the 6927usual ``live'' debugging of the process from that state. 6928 6929When the inferior process exits, or @value{GDBN} detaches from it, 6930process record and replay target will automatically stop itself. 6931 6932@kindex record goto 6933@item record goto 6934Go to a specific location in the execution log. There are several 6935ways to specify the location to go to: 6936 6937@table @code 6938@item record goto begin 6939@itemx record goto start 6940Go to the beginning of the execution log. 6941 6942@item record goto end 6943Go to the end of the execution log. 6944 6945@item record goto @var{n} 6946Go to instruction number @var{n} in the execution log. 6947@end table 6948 6949@kindex record save 6950@item record save @var{filename} 6951Save the execution log to a file @file{@var{filename}}. 6952Default filename is @file{gdb_record.@var{process_id}}, where 6953@var{process_id} is the process ID of the inferior. 6954 6955This command may not be available for all recording methods. 6956 6957@kindex record restore 6958@item record restore @var{filename} 6959Restore the execution log from a file @file{@var{filename}}. 6960File must have been created with @code{record save}. 6961 6962@kindex set record full 6963@item set record full insn-number-max @var{limit} 6964@itemx set record full insn-number-max unlimited 6965Set the limit of instructions to be recorded for the @code{full} 6966recording method. Default value is 200000. 6967 6968If @var{limit} is a positive number, then @value{GDBN} will start 6969deleting instructions from the log once the number of the record 6970instructions becomes greater than @var{limit}. For every new recorded 6971instruction, @value{GDBN} will delete the earliest recorded 6972instruction to keep the number of recorded instructions at the limit. 6973(Since deleting recorded instructions loses information, @value{GDBN} 6974lets you control what happens when the limit is reached, by means of 6975the @code{stop-at-limit} option, described below.) 6976 6977If @var{limit} is @code{unlimited} or zero, @value{GDBN} will never 6978delete recorded instructions from the execution log. The number of 6979recorded instructions is limited only by the available memory. 6980 6981@kindex show record full 6982@item show record full insn-number-max 6983Show the limit of instructions to be recorded with the @code{full} 6984recording method. 6985 6986@item set record full stop-at-limit 6987Control the behavior of the @code{full} recording method when the 6988number of recorded instructions reaches the limit. If ON (the 6989default), @value{GDBN} will stop when the limit is reached for the 6990first time and ask you whether you want to stop the inferior or 6991continue running it and recording the execution log. If you decide 6992to continue recording, each new recorded instruction will cause the 6993oldest one to be deleted. 6994 6995If this option is OFF, @value{GDBN} will automatically delete the 6996oldest record to make room for each new one, without asking. 6997 6998@item show record full stop-at-limit 6999Show the current setting of @code{stop-at-limit}. 7000 7001@item set record full memory-query 7002Control the behavior when @value{GDBN} is unable to record memory 7003changes caused by an instruction for the @code{full} recording method. 7004If ON, @value{GDBN} will query whether to stop the inferior in that 7005case. 7006 7007If this option is OFF (the default), @value{GDBN} will automatically 7008ignore the effect of such instructions on memory. Later, when 7009@value{GDBN} replays this execution log, it will mark the log of this 7010instruction as not accessible, and it will not affect the replay 7011results. 7012 7013@item show record full memory-query 7014Show the current setting of @code{memory-query}. 7015 7016@kindex set record btrace 7017The @code{btrace} record target does not trace data. As a 7018convenience, when replaying, @value{GDBN} reads read-only memory off 7019the live program directly, assuming that the addresses of the 7020read-only areas don't change. This for example makes it possible to 7021disassemble code while replaying, but not to print variables. 7022In some cases, being able to inspect variables might be useful. 7023You can use the following command for that: 7024 7025@item set record btrace replay-memory-access 7026Control the behavior of the @code{btrace} recording method when 7027accessing memory during replay. If @code{read-only} (the default), 7028@value{GDBN} will only allow accesses to read-only memory. 7029If @code{read-write}, @value{GDBN} will allow accesses to read-only 7030and to read-write memory. Beware that the accessed memory corresponds 7031to the live target and not necessarily to the current replay 7032position. 7033 7034@item set record btrace cpu @var{identifier} 7035Set the processor to be used for enabling workarounds for processor 7036errata when decoding the trace. 7037 7038Processor errata are defects in processor operation, caused by its 7039design or manufacture. They can cause a trace not to match the 7040specification. This, in turn, may cause trace decode to fail. 7041@value{GDBN} can detect erroneous trace packets and correct them, thus 7042avoiding the decoding failures. These corrections are known as 7043@dfn{errata workarounds}, and are enabled based on the processor on 7044which the trace was recorded. 7045 7046By default, @value{GDBN} attempts to detect the processor 7047automatically, and apply the necessary workarounds for it. However, 7048you may need to specify the processor if @value{GDBN} does not yet 7049support it. This command allows you to do that, and also allows to 7050disable the workarounds. 7051 7052The argument @var{identifier} identifies the @sc{cpu} and is of the 7053form: @code{@var{vendor}:@var{procesor identifier}}. In addition, 7054there are two special identifiers, @code{none} and @code{auto} 7055(default). 7056 7057The following vendor identifiers and corresponding processor 7058identifiers are currently supported: 7059 7060@multitable @columnfractions .1 .9 7061 7062@item @code{intel} 7063@tab @var{family}/@var{model}[/@var{stepping}] 7064 7065@end multitable 7066 7067On GNU/Linux systems, the processor @var{family}, @var{model}, and 7068@var{stepping} can be obtained from @code{/proc/cpuinfo}. 7069 7070If @var{identifier} is @code{auto}, enable errata workarounds for the 7071processor on which the trace was recorded. If @var{identifier} is 7072@code{none}, errata workarounds are disabled. 7073 7074For example, when using an old @value{GDBN} on a new system, decode 7075may fail because @value{GDBN} does not support the new processor. It 7076often suffices to specify an older processor that @value{GDBN} 7077supports. 7078 7079@smallexample 7080(gdb) info record 7081Active record target: record-btrace 7082Recording format: Intel Processor Trace. 7083Buffer size: 16kB. 7084Failed to configure the Intel Processor Trace decoder: unknown cpu. 7085(gdb) set record btrace cpu intel:6/158 7086(gdb) info record 7087Active record target: record-btrace 7088Recording format: Intel Processor Trace. 7089Buffer size: 16kB. 7090Recorded 84872 instructions in 3189 functions (0 gaps) for thread 1 (...). 7091@end smallexample 7092 7093@kindex show record btrace 7094@item show record btrace replay-memory-access 7095Show the current setting of @code{replay-memory-access}. 7096 7097@item show record btrace cpu 7098Show the processor to be used for enabling trace decode errata 7099workarounds. 7100 7101@kindex set record btrace bts 7102@item set record btrace bts buffer-size @var{size} 7103@itemx set record btrace bts buffer-size unlimited 7104Set the requested ring buffer size for branch tracing in @acronym{BTS} 7105format. Default is 64KB. 7106 7107If @var{size} is a positive number, then @value{GDBN} will try to 7108allocate a buffer of at least @var{size} bytes for each new thread 7109that uses the btrace recording method and the @acronym{BTS} format. 7110The actually obtained buffer size may differ from the requested 7111@var{size}. Use the @code{info record} command to see the actual 7112buffer size for each thread that uses the btrace recording method and 7113the @acronym{BTS} format. 7114 7115If @var{limit} is @code{unlimited} or zero, @value{GDBN} will try to 7116allocate a buffer of 4MB. 7117 7118Bigger buffers mean longer traces. On the other hand, @value{GDBN} will 7119also need longer to process the branch trace data before it can be used. 7120 7121@item show record btrace bts buffer-size @var{size} 7122Show the current setting of the requested ring buffer size for branch 7123tracing in @acronym{BTS} format. 7124 7125@kindex set record btrace pt 7126@item set record btrace pt buffer-size @var{size} 7127@itemx set record btrace pt buffer-size unlimited 7128Set the requested ring buffer size for branch tracing in Intel 7129Processor Trace format. Default is 16KB. 7130 7131If @var{size} is a positive number, then @value{GDBN} will try to 7132allocate a buffer of at least @var{size} bytes for each new thread 7133that uses the btrace recording method and the Intel Processor Trace 7134format. The actually obtained buffer size may differ from the 7135requested @var{size}. Use the @code{info record} command to see the 7136actual buffer size for each thread. 7137 7138If @var{limit} is @code{unlimited} or zero, @value{GDBN} will try to 7139allocate a buffer of 4MB. 7140 7141Bigger buffers mean longer traces. On the other hand, @value{GDBN} will 7142also need longer to process the branch trace data before it can be used. 7143 7144@item show record btrace pt buffer-size @var{size} 7145Show the current setting of the requested ring buffer size for branch 7146tracing in Intel Processor Trace format. 7147 7148@kindex info record 7149@item info record 7150Show various statistics about the recording depending on the recording 7151method: 7152 7153@table @code 7154@item full 7155For the @code{full} recording method, it shows the state of process 7156record and its in-memory execution log buffer, including: 7157 7158@itemize @bullet 7159@item 7160Whether in record mode or replay mode. 7161@item 7162Lowest recorded instruction number (counting from when the current execution log started recording instructions). 7163@item 7164Highest recorded instruction number. 7165@item 7166Current instruction about to be replayed (if in replay mode). 7167@item 7168Number of instructions contained in the execution log. 7169@item 7170Maximum number of instructions that may be contained in the execution log. 7171@end itemize 7172 7173@item btrace 7174For the @code{btrace} recording method, it shows: 7175 7176@itemize @bullet 7177@item 7178Recording format. 7179@item 7180Number of instructions that have been recorded. 7181@item 7182Number of blocks of sequential control-flow formed by the recorded 7183instructions. 7184@item 7185Whether in record mode or replay mode. 7186@end itemize 7187 7188For the @code{bts} recording format, it also shows: 7189@itemize @bullet 7190@item 7191Size of the perf ring buffer. 7192@end itemize 7193 7194For the @code{pt} recording format, it also shows: 7195@itemize @bullet 7196@item 7197Size of the perf ring buffer. 7198@end itemize 7199@end table 7200 7201@kindex record delete 7202@kindex rec del 7203@item record delete 7204When record target runs in replay mode (``in the past''), delete the 7205subsequent execution log and begin to record a new execution log starting 7206from the current address. This means you will abandon the previously 7207recorded ``future'' and begin recording a new ``future''. 7208 7209@kindex record instruction-history 7210@kindex rec instruction-history 7211@item record instruction-history 7212Disassembles instructions from the recorded execution log. By 7213default, ten instructions are disassembled. This can be changed using 7214the @code{set record instruction-history-size} command. Instructions 7215are printed in execution order. 7216 7217It can also print mixed source+disassembly if you specify the the 7218@code{/m} or @code{/s} modifier, and print the raw instructions in hex 7219as well as in symbolic form by specifying the @code{/r} modifier. 7220 7221The current position marker is printed for the instruction at the 7222current program counter value. This instruction can appear multiple 7223times in the trace and the current position marker will be printed 7224every time. To omit the current position marker, specify the 7225@code{/p} modifier. 7226 7227To better align the printed instructions when the trace contains 7228instructions from more than one function, the function name may be 7229omitted by specifying the @code{/f} modifier. 7230 7231Speculatively executed instructions are prefixed with @samp{?}. This 7232feature is not available for all recording formats. 7233 7234There are several ways to specify what part of the execution log to 7235disassemble: 7236 7237@table @code 7238@item record instruction-history @var{insn} 7239Disassembles ten instructions starting from instruction number 7240@var{insn}. 7241 7242@item record instruction-history @var{insn}, +/-@var{n} 7243Disassembles @var{n} instructions around instruction number 7244@var{insn}. If @var{n} is preceded with @code{+}, disassembles 7245@var{n} instructions after instruction number @var{insn}. If 7246@var{n} is preceded with @code{-}, disassembles @var{n} 7247instructions before instruction number @var{insn}. 7248 7249@item record instruction-history 7250Disassembles ten more instructions after the last disassembly. 7251 7252@item record instruction-history - 7253Disassembles ten more instructions before the last disassembly. 7254 7255@item record instruction-history @var{begin}, @var{end} 7256Disassembles instructions beginning with instruction number 7257@var{begin} until instruction number @var{end}. The instruction 7258number @var{end} is included. 7259@end table 7260 7261This command may not be available for all recording methods. 7262 7263@kindex set record 7264@item set record instruction-history-size @var{size} 7265@itemx set record instruction-history-size unlimited 7266Define how many instructions to disassemble in the @code{record 7267instruction-history} command. The default value is 10. 7268A @var{size} of @code{unlimited} means unlimited instructions. 7269 7270@kindex show record 7271@item show record instruction-history-size 7272Show how many instructions to disassemble in the @code{record 7273instruction-history} command. 7274 7275@kindex record function-call-history 7276@kindex rec function-call-history 7277@item record function-call-history 7278Prints the execution history at function granularity. It prints one 7279line for each sequence of instructions that belong to the same 7280function giving the name of that function, the source lines 7281for this instruction sequence (if the @code{/l} modifier is 7282specified), and the instructions numbers that form the sequence (if 7283the @code{/i} modifier is specified). The function names are indented 7284to reflect the call stack depth if the @code{/c} modifier is 7285specified. The @code{/l}, @code{/i}, and @code{/c} modifiers can be 7286given together. 7287 7288@smallexample 7289(@value{GDBP}) @b{list 1, 10} 72901 void foo (void) 72912 @{ 72923 @} 72934 72945 void bar (void) 72956 @{ 72967 ... 72978 foo (); 72989 ... 729910 @} 7300(@value{GDBP}) @b{record function-call-history /ilc} 73011 bar inst 1,4 at foo.c:6,8 73022 foo inst 5,10 at foo.c:2,3 73033 bar inst 11,13 at foo.c:9,10 7304@end smallexample 7305 7306By default, ten lines are printed. This can be changed using the 7307@code{set record function-call-history-size} command. Functions are 7308printed in execution order. There are several ways to specify what 7309to print: 7310 7311@table @code 7312@item record function-call-history @var{func} 7313Prints ten functions starting from function number @var{func}. 7314 7315@item record function-call-history @var{func}, +/-@var{n} 7316Prints @var{n} functions around function number @var{func}. If 7317@var{n} is preceded with @code{+}, prints @var{n} functions after 7318function number @var{func}. If @var{n} is preceded with @code{-}, 7319prints @var{n} functions before function number @var{func}. 7320 7321@item record function-call-history 7322Prints ten more functions after the last ten-line print. 7323 7324@item record function-call-history - 7325Prints ten more functions before the last ten-line print. 7326 7327@item record function-call-history @var{begin}, @var{end} 7328Prints functions beginning with function number @var{begin} until 7329function number @var{end}. The function number @var{end} is included. 7330@end table 7331 7332This command may not be available for all recording methods. 7333 7334@item set record function-call-history-size @var{size} 7335@itemx set record function-call-history-size unlimited 7336Define how many lines to print in the 7337@code{record function-call-history} command. The default value is 10. 7338A size of @code{unlimited} means unlimited lines. 7339 7340@item show record function-call-history-size 7341Show how many lines to print in the 7342@code{record function-call-history} command. 7343@end table 7344 7345 7346@node Stack 7347@chapter Examining the Stack 7348 7349When your program has stopped, the first thing you need to know is where it 7350stopped and how it got there. 7351 7352@cindex call stack 7353Each time your program performs a function call, information about the call 7354is generated. 7355That information includes the location of the call in your program, 7356the arguments of the call, 7357and the local variables of the function being called. 7358The information is saved in a block of data called a @dfn{stack frame}. 7359The stack frames are allocated in a region of memory called the @dfn{call 7360stack}. 7361 7362When your program stops, the @value{GDBN} commands for examining the 7363stack allow you to see all of this information. 7364 7365@cindex selected frame 7366One of the stack frames is @dfn{selected} by @value{GDBN} and many 7367@value{GDBN} commands refer implicitly to the selected frame. In 7368particular, whenever you ask @value{GDBN} for the value of a variable in 7369your program, the value is found in the selected frame. There are 7370special @value{GDBN} commands to select whichever frame you are 7371interested in. @xref{Selection, ,Selecting a Frame}. 7372 7373When your program stops, @value{GDBN} automatically selects the 7374currently executing frame and describes it briefly, similar to the 7375@code{frame} command (@pxref{Frame Info, ,Information about a Frame}). 7376 7377@menu 7378* Frames:: Stack frames 7379* Backtrace:: Backtraces 7380* Selection:: Selecting a frame 7381* Frame Info:: Information on a frame 7382* Frame Apply:: Applying a command to several frames 7383* Frame Filter Management:: Managing frame filters 7384 7385@end menu 7386 7387@node Frames 7388@section Stack Frames 7389 7390@cindex frame, definition 7391@cindex stack frame 7392The call stack is divided up into contiguous pieces called @dfn{stack 7393frames}, or @dfn{frames} for short; each frame is the data associated 7394with one call to one function. The frame contains the arguments given 7395to the function, the function's local variables, and the address at 7396which the function is executing. 7397 7398@cindex initial frame 7399@cindex outermost frame 7400@cindex innermost frame 7401When your program is started, the stack has only one frame, that of the 7402function @code{main}. This is called the @dfn{initial} frame or the 7403@dfn{outermost} frame. Each time a function is called, a new frame is 7404made. Each time a function returns, the frame for that function invocation 7405is eliminated. If a function is recursive, there can be many frames for 7406the same function. The frame for the function in which execution is 7407actually occurring is called the @dfn{innermost} frame. This is the most 7408recently created of all the stack frames that still exist. 7409 7410@cindex frame pointer 7411Inside your program, stack frames are identified by their addresses. A 7412stack frame consists of many bytes, each of which has its own address; each 7413kind of computer has a convention for choosing one byte whose 7414address serves as the address of the frame. Usually this address is kept 7415in a register called the @dfn{frame pointer register} 7416(@pxref{Registers, $fp}) while execution is going on in that frame. 7417 7418@cindex frame level 7419@cindex frame number 7420@value{GDBN} labels each existing stack frame with a @dfn{level}, a 7421number that is zero for the innermost frame, one for the frame that 7422called it, and so on upward. These level numbers give you a way of 7423designating stack frames in @value{GDBN} commands. The terms 7424@dfn{frame number} and @dfn{frame level} can be used interchangeably to 7425describe this number. 7426 7427@c The -fomit-frame-pointer below perennially causes hbox overflow 7428@c underflow problems. 7429@cindex frameless execution 7430Some compilers provide a way to compile functions so that they operate 7431without stack frames. (For example, the @value{NGCC} option 7432@smallexample 7433@samp{-fomit-frame-pointer} 7434@end smallexample 7435generates functions without a frame.) 7436This is occasionally done with heavily used library functions to save 7437the frame setup time. @value{GDBN} has limited facilities for dealing 7438with these function invocations. If the innermost function invocation 7439has no stack frame, @value{GDBN} nevertheless regards it as though 7440it had a separate frame, which is numbered zero as usual, allowing 7441correct tracing of the function call chain. However, @value{GDBN} has 7442no provision for frameless functions elsewhere in the stack. 7443 7444@node Backtrace 7445@section Backtraces 7446 7447@cindex traceback 7448@cindex call stack traces 7449A backtrace is a summary of how your program got where it is. It shows one 7450line per frame, for many frames, starting with the currently executing 7451frame (frame zero), followed by its caller (frame one), and on up the 7452stack. 7453 7454@anchor{backtrace-command} 7455@kindex backtrace 7456@kindex bt @r{(@code{backtrace})} 7457To print a backtrace of the entire stack, use the @code{backtrace} 7458command, or its alias @code{bt}. This command will print one line per 7459frame for frames in the stack. By default, all stack frames are 7460printed. You can stop the backtrace at any time by typing the system 7461interrupt character, normally @kbd{Ctrl-c}. 7462 7463@table @code 7464@item backtrace [@var{args}@dots{}] 7465@itemx bt [@var{args}@dots{}] 7466Print the backtrace of the entire stack. The optional @var{args} can 7467be one of the following: 7468 7469@table @code 7470@item @var{n} 7471@itemx @var{n} 7472Print only the innermost @var{n} frames, where @var{n} is a positive 7473number. 7474 7475@item -@var{n} 7476@itemx -@var{n} 7477Print only the outermost @var{n} frames, where @var{n} is a positive 7478number. 7479 7480@item full 7481Print the values of the local variables also. This can be combined 7482with a number to limit the number of frames shown. 7483 7484@item no-filters 7485Do not run Python frame filters on this backtrace. @xref{Frame 7486Filter API}, for more information. Additionally use @ref{disable 7487frame-filter all} to turn off all frame filters. This is only 7488relevant when @value{GDBN} has been configured with @code{Python} 7489support. 7490 7491@item hide 7492A Python frame filter might decide to ``elide'' some frames. Normally 7493such elided frames are still printed, but they are indented relative 7494to the filtered frames that cause them to be elided. The @code{hide} 7495option causes elided frames to not be printed at all. 7496@end table 7497@end table 7498 7499@kindex where 7500@kindex info stack 7501The names @code{where} and @code{info stack} (abbreviated @code{info s}) 7502are additional aliases for @code{backtrace}. 7503 7504@cindex multiple threads, backtrace 7505In a multi-threaded program, @value{GDBN} by default shows the 7506backtrace only for the current thread. To display the backtrace for 7507several or all of the threads, use the command @code{thread apply} 7508(@pxref{Threads, thread apply}). For example, if you type @kbd{thread 7509apply all backtrace}, @value{GDBN} will display the backtrace for all 7510the threads; this is handy when you debug a core dump of a 7511multi-threaded program. 7512 7513Each line in the backtrace shows the frame number and the function name. 7514The program counter value is also shown---unless you use @code{set 7515print address off}. The backtrace also shows the source file name and 7516line number, as well as the arguments to the function. The program 7517counter value is omitted if it is at the beginning of the code for that 7518line number. 7519 7520Here is an example of a backtrace. It was made with the command 7521@samp{bt 3}, so it shows the innermost three frames. 7522 7523@smallexample 7524@group 7525#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 7526 at builtin.c:993 7527#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242 7528#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08) 7529 at macro.c:71 7530(More stack frames follow...) 7531@end group 7532@end smallexample 7533 7534@noindent 7535The display for frame zero does not begin with a program counter 7536value, indicating that your program has stopped at the beginning of the 7537code for line @code{993} of @code{builtin.c}. 7538 7539@noindent 7540The value of parameter @code{data} in frame 1 has been replaced by 7541@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter 7542only if it is a scalar (integer, pointer, enumeration, etc). See command 7543@kbd{set print frame-arguments} in @ref{Print Settings} for more details 7544on how to configure the way function parameter values are printed. 7545 7546@cindex optimized out, in backtrace 7547@cindex function call arguments, optimized out 7548If your program was compiled with optimizations, some compilers will 7549optimize away arguments passed to functions if those arguments are 7550never used after the call. Such optimizations generate code that 7551passes arguments through registers, but doesn't store those arguments 7552in the stack frame. @value{GDBN} has no way of displaying such 7553arguments in stack frames other than the innermost one. Here's what 7554such a backtrace might look like: 7555 7556@smallexample 7557@group 7558#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 7559 at builtin.c:993 7560#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242 7561#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08) 7562 at macro.c:71 7563(More stack frames follow...) 7564@end group 7565@end smallexample 7566 7567@noindent 7568The values of arguments that were not saved in their stack frames are 7569shown as @samp{<optimized out>}. 7570 7571If you need to display the values of such optimized-out arguments, 7572either deduce that from other variables whose values depend on the one 7573you are interested in, or recompile without optimizations. 7574 7575@cindex backtrace beyond @code{main} function 7576@cindex program entry point 7577@cindex startup code, and backtrace 7578Most programs have a standard user entry point---a place where system 7579libraries and startup code transition into user code. For C this is 7580@code{main}@footnote{ 7581Note that embedded programs (the so-called ``free-standing'' 7582environment) are not required to have a @code{main} function as the 7583entry point. They could even have multiple entry points.}. 7584When @value{GDBN} finds the entry function in a backtrace 7585it will terminate the backtrace, to avoid tracing into highly 7586system-specific (and generally uninteresting) code. 7587 7588If you need to examine the startup code, or limit the number of levels 7589in a backtrace, you can change this behavior: 7590 7591@table @code 7592@item set backtrace past-main 7593@itemx set backtrace past-main on 7594@kindex set backtrace 7595Backtraces will continue past the user entry point. 7596 7597@item set backtrace past-main off 7598Backtraces will stop when they encounter the user entry point. This is the 7599default. 7600 7601@item show backtrace past-main 7602@kindex show backtrace 7603Display the current user entry point backtrace policy. 7604 7605@item set backtrace past-entry 7606@itemx set backtrace past-entry on 7607Backtraces will continue past the internal entry point of an application. 7608This entry point is encoded by the linker when the application is built, 7609and is likely before the user entry point @code{main} (or equivalent) is called. 7610 7611@item set backtrace past-entry off 7612Backtraces will stop when they encounter the internal entry point of an 7613application. This is the default. 7614 7615@item show backtrace past-entry 7616Display the current internal entry point backtrace policy. 7617 7618@item set backtrace limit @var{n} 7619@itemx set backtrace limit 0 7620@itemx set backtrace limit unlimited 7621@cindex backtrace limit 7622Limit the backtrace to @var{n} levels. A value of @code{unlimited} 7623or zero means unlimited levels. 7624 7625@item show backtrace limit 7626Display the current limit on backtrace levels. 7627@end table 7628 7629You can control how file names are displayed. 7630 7631@table @code 7632@item set filename-display 7633@itemx set filename-display relative 7634@cindex filename-display 7635Display file names relative to the compilation directory. This is the default. 7636 7637@item set filename-display basename 7638Display only basename of a filename. 7639 7640@item set filename-display absolute 7641Display an absolute filename. 7642 7643@item show filename-display 7644Show the current way to display filenames. 7645@end table 7646 7647@node Selection 7648@section Selecting a Frame 7649 7650Most commands for examining the stack and other data in your program work on 7651whichever stack frame is selected at the moment. Here are the commands for 7652selecting a stack frame; all of them finish by printing a brief description 7653of the stack frame just selected. 7654 7655@table @code 7656@kindex frame@r{, selecting} 7657@kindex f @r{(@code{frame})} 7658@item frame @r{[} @var{frame-selection-spec} @r{]} 7659@item f @r{[} @var{frame-selection-spec} @r{]} 7660The @command{frame} command allows different stack frames to be 7661selected. The @var{frame-selection-spec} can be any of the following: 7662 7663@table @code 7664@kindex frame level 7665@item @var{num} 7666@item level @var{num} 7667Select frame level @var{num}. Recall that frame zero is the innermost 7668(currently executing) frame, frame one is the frame that called the 7669innermost one, and so on. The highest level frame is usually the one 7670for @code{main}. 7671 7672As this is the most common method of navigating the frame stack, the 7673string @command{level} can be omitted. For example, the following two 7674commands are equivalent: 7675 7676@smallexample 7677(@value{GDBP}) frame 3 7678(@value{GDBP}) frame level 3 7679@end smallexample 7680 7681@kindex frame address 7682@item address @var{stack-address} 7683Select the frame with stack address @var{stack-address}. The 7684@var{stack-address} for a frame can be seen in the output of 7685@command{info frame}, for example: 7686 7687@smallexample 7688(gdb) info frame 7689Stack level 1, frame at 0x7fffffffda30: 7690 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5 7691 tail call frame, caller of frame at 0x7fffffffda30 7692 source language c++. 7693 Arglist at unknown address. 7694 Locals at unknown address, Previous frame's sp is 0x7fffffffda30 7695@end smallexample 7696 7697The @var{stack-address} for this frame is @code{0x7fffffffda30} as 7698indicated by the line: 7699 7700@smallexample 7701Stack level 1, frame at 0x7fffffffda30: 7702@end smallexample 7703 7704@kindex frame function 7705@item function @var{function-name} 7706Select the stack frame for function @var{function-name}. If there are 7707multiple stack frames for function @var{function-name} then the inner 7708most stack frame is selected. 7709 7710@kindex frame view 7711@item view @var{stack-address} @r{[} @var{pc-addr} @r{]} 7712View a frame that is not part of @value{GDBN}'s backtrace. The frame 7713viewed has stack address @var{stack-addr}, and optionally, a program 7714counter address of @var{pc-addr}. 7715 7716This is useful mainly if the chaining of stack frames has been 7717damaged by a bug, making it impossible for @value{GDBN} to assign 7718numbers properly to all frames. In addition, this can be useful 7719when your program has multiple stacks and switches between them. 7720 7721When viewing a frame outside the current backtrace using 7722@command{frame view} then you can always return to the original 7723stack using one of the previous stack frame selection instructions, 7724for example @command{frame level 0}. 7725 7726@end table 7727 7728@kindex up 7729@item up @var{n} 7730Move @var{n} frames up the stack; @var{n} defaults to 1. For positive 7731numbers @var{n}, this advances toward the outermost frame, to higher 7732frame numbers, to frames that have existed longer. 7733 7734@kindex down 7735@kindex do @r{(@code{down})} 7736@item down @var{n} 7737Move @var{n} frames down the stack; @var{n} defaults to 1. For 7738positive numbers @var{n}, this advances toward the innermost frame, to 7739lower frame numbers, to frames that were created more recently. 7740You may abbreviate @code{down} as @code{do}. 7741@end table 7742 7743All of these commands end by printing two lines of output describing the 7744frame. The first line shows the frame number, the function name, the 7745arguments, and the source file and line number of execution in that 7746frame. The second line shows the text of that source line. 7747 7748@need 1000 7749For example: 7750 7751@smallexample 7752@group 7753(@value{GDBP}) up 7754#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc) 7755 at env.c:10 775610 read_input_file (argv[i]); 7757@end group 7758@end smallexample 7759 7760After such a printout, the @code{list} command with no arguments 7761prints ten lines centered on the point of execution in the frame. 7762You can also edit the program at the point of execution with your favorite 7763editing program by typing @code{edit}. 7764@xref{List, ,Printing Source Lines}, 7765for details. 7766 7767@table @code 7768@kindex select-frame 7769@item select-frame @r{[} @var{frame-selection-spec} @r{]} 7770The @code{select-frame} command is a variant of @code{frame} that does 7771not display the new frame after selecting it. This command is 7772intended primarily for use in @value{GDBN} command scripts, where the 7773output might be unnecessary and distracting. The 7774@var{frame-selection-spec} is as for the @command{frame} command 7775described in @ref{Selection, ,Selecting a Frame}. 7776 7777@kindex down-silently 7778@kindex up-silently 7779@item up-silently @var{n} 7780@itemx down-silently @var{n} 7781These two commands are variants of @code{up} and @code{down}, 7782respectively; they differ in that they do their work silently, without 7783causing display of the new frame. They are intended primarily for use 7784in @value{GDBN} command scripts, where the output might be unnecessary and 7785distracting. 7786@end table 7787 7788@node Frame Info 7789@section Information About a Frame 7790 7791There are several other commands to print information about the selected 7792stack frame. 7793 7794@table @code 7795@item frame 7796@itemx f 7797When used without any argument, this command does not change which 7798frame is selected, but prints a brief description of the currently 7799selected stack frame. It can be abbreviated @code{f}. With an 7800argument, this command is used to select a stack frame. 7801@xref{Selection, ,Selecting a Frame}. 7802 7803@kindex info frame 7804@kindex info f @r{(@code{info frame})} 7805@item info frame 7806@itemx info f 7807This command prints a verbose description of the selected stack frame, 7808including: 7809 7810@itemize @bullet 7811@item 7812the address of the frame 7813@item 7814the address of the next frame down (called by this frame) 7815@item 7816the address of the next frame up (caller of this frame) 7817@item 7818the language in which the source code corresponding to this frame is written 7819@item 7820the address of the frame's arguments 7821@item 7822the address of the frame's local variables 7823@item 7824the program counter saved in it (the address of execution in the caller frame) 7825@item 7826which registers were saved in the frame 7827@end itemize 7828 7829@noindent The verbose description is useful when 7830something has gone wrong that has made the stack format fail to fit 7831the usual conventions. 7832 7833@item info frame @r{[} @var{frame-selection-spec} @r{]} 7834@itemx info f @r{[} @var{frame-selection-spec} @r{]} 7835Print a verbose description of the frame selected by 7836@var{frame-selection-spec}. The @var{frame-selection-spec} is the 7837same as for the @command{frame} command (@pxref{Selection, ,Selecting 7838a Frame}). The selected frame remains unchanged by this command. 7839 7840@kindex info args 7841@item info args [-q] 7842Print the arguments of the selected frame, each on a separate line. 7843 7844The optional flag @samp{-q}, which stands for @samp{quiet}, disables 7845printing header information and messages explaining why no argument 7846have been printed. 7847 7848@item info args [-q] [-t @var{type_regexp}] [@var{regexp}] 7849Like @kbd{info args}, but only print the arguments selected 7850with the provided regexp(s). 7851 7852If @var{regexp} is provided, print only the arguments whose names 7853match the regular expression @var{regexp}. 7854 7855If @var{type_regexp} is provided, print only the arguments whose 7856types, as printed by the @code{whatis} command, match 7857the regular expression @var{type_regexp}. 7858If @var{type_regexp} contains space(s), it should be enclosed in 7859quote characters. If needed, use backslash to escape the meaning 7860of special characters or quotes. 7861 7862If both @var{regexp} and @var{type_regexp} are provided, an argument 7863is printed only if its name matches @var{regexp} and its type matches 7864@var{type_regexp}. 7865 7866@item info locals [-q] 7867@kindex info locals 7868Print the local variables of the selected frame, each on a separate 7869line. These are all variables (declared either static or automatic) 7870accessible at the point of execution of the selected frame. 7871 7872The optional flag @samp{-q}, which stands for @samp{quiet}, disables 7873printing header information and messages explaining why no local variables 7874have been printed. 7875 7876@item info locals [-q] [-t @var{type_regexp}] [@var{regexp}] 7877Like @kbd{info locals}, but only print the local variables selected 7878with the provided regexp(s). 7879 7880If @var{regexp} is provided, print only the local variables whose names 7881match the regular expression @var{regexp}. 7882 7883If @var{type_regexp} is provided, print only the local variables whose 7884types, as printed by the @code{whatis} command, match 7885the regular expression @var{type_regexp}. 7886If @var{type_regexp} contains space(s), it should be enclosed in 7887quote characters. If needed, use backslash to escape the meaning 7888of special characters or quotes. 7889 7890If both @var{regexp} and @var{type_regexp} are provided, a local variable 7891is printed only if its name matches @var{regexp} and its type matches 7892@var{type_regexp}. 7893 7894The command @kbd{info locals -q -t @var{type_regexp}} can usefully be 7895combined with the commands @kbd{frame apply} and @kbd{thread apply}. 7896For example, your program might use Resource Acquisition Is 7897Initialization types (RAII) such as @code{lock_something_t}: each 7898local variable of type @code{lock_something_t} automatically places a 7899lock that is destroyed when the variable goes out of scope. You can 7900then list all acquired locks in your program by doing 7901@smallexample 7902thread apply all -s frame apply all -s info locals -q -t lock_something_t 7903@end smallexample 7904@noindent 7905or the equivalent shorter form 7906@smallexample 7907tfaas i lo -q -t lock_something_t 7908@end smallexample 7909 7910@end table 7911 7912@node Frame Apply 7913@section Applying a Command to Several Frames. 7914@kindex frame apply 7915@cindex apply command to several frames 7916@table @code 7917@item frame apply [all | @var{count} | @var{-count} | level @var{level}@dots{}] [@var{flag}]@dots{} @var{command} 7918The @code{frame apply} command allows you to apply the named 7919@var{command} to one or more frames. 7920 7921@table @code 7922@item @code{all} 7923Specify @code{all} to apply @var{command} to all frames. 7924 7925@item @var{count} 7926Use @var{count} to apply @var{command} to the innermost @var{count} 7927frames, where @var{count} is a positive number. 7928 7929@item @var{-count} 7930Use @var{-count} to apply @var{command} to the outermost @var{count} 7931frames, where @var{count} is a positive number. 7932 7933@item @code{level} 7934Use @code{level} to apply @var{command} to the set of frames identified 7935by the @var{level} list. @var{level} is a frame level or a range of frame 7936levels as @var{level1}-@var{level2}. The frame level is the number shown 7937in the first field of the @samp{backtrace} command output. 7938E.g., @samp{2-4 6-8 3} indicates to apply @var{command} for the frames 7939at levels 2, 3, 4, 6, 7, 8, and then again on frame at level 3. 7940 7941@end table 7942 7943@end table 7944 7945Note that the frames on which @code{frame apply} applies a command are 7946also influenced by the @code{set backtrace} settings such as @code{set 7947backtrace past-main} and @code{set backtrace limit N}. See 7948@xref{Backtrace,,Backtraces}. 7949 7950The @var{flag} arguments control what output to produce and how to handle 7951errors raised when applying @var{command} to a frame. @var{flag} 7952must start with a @code{-} directly followed by one letter in 7953@code{qcs}. If several flags are provided, they must be given 7954individually, such as @code{-c -q}. 7955 7956By default, @value{GDBN} displays some frame information before the 7957output produced by @var{command}, and an error raised during the 7958execution of a @var{command} will abort @code{frame apply}. The 7959following flags can be used to fine-tune this behavior: 7960 7961@table @code 7962@item -c 7963The flag @code{-c}, which stands for @samp{continue}, causes any 7964errors in @var{command} to be displayed, and the execution of 7965@code{frame apply} then continues. 7966@item -s 7967The flag @code{-s}, which stands for @samp{silent}, causes any errors 7968or empty output produced by a @var{command} to be silently ignored. 7969That is, the execution continues, but the frame information and errors 7970are not printed. 7971@item -q 7972The flag @code{-q} (@samp{quiet}) disables printing the frame 7973information. 7974@end table 7975 7976The following example shows how the flags @code{-c} and @code{-s} are 7977working when applying the command @code{p j} to all frames, where 7978variable @code{j} can only be successfully printed in the outermost 7979@code{#1 main} frame. 7980 7981@smallexample 7982@group 7983(gdb) frame apply all p j 7984#0 some_function (i=5) at fun.c:4 7985No symbol "j" in current context. 7986(gdb) frame apply all -c p j 7987#0 some_function (i=5) at fun.c:4 7988No symbol "j" in current context. 7989#1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 7990$1 = 5 7991(gdb) frame apply all -s p j 7992#1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 7993$2 = 5 7994(gdb) 7995@end group 7996@end smallexample 7997 7998By default, @samp{frame apply}, prints the frame location 7999information before the command output: 8000 8001@smallexample 8002@group 8003(gdb) frame apply all p $sp 8004#0 some_function (i=5) at fun.c:4 8005$4 = (void *) 0xffffd1e0 8006#1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 8007$5 = (void *) 0xffffd1f0 8008(gdb) 8009@end group 8010@end smallexample 8011 8012If flag @code{-q} is given, no frame information is printed: 8013@smallexample 8014@group 8015(gdb) frame apply all -q p $sp 8016$12 = (void *) 0xffffd1e0 8017$13 = (void *) 0xffffd1f0 8018(gdb) 8019@end group 8020@end smallexample 8021 8022@table @code 8023 8024@kindex faas 8025@cindex apply a command to all frames (ignoring errors and empty output) 8026@item faas @var{command} 8027Shortcut for @code{frame apply all -s @var{command}}. 8028Applies @var{command} on all frames, ignoring errors and empty output. 8029 8030It can for example be used to print a local variable or a function 8031argument without knowing the frame where this variable or argument 8032is, using: 8033@smallexample 8034(@value{GDBP}) faas p some_local_var_i_do_not_remember_where_it_is 8035@end smallexample 8036 8037Note that the command @code{tfaas @var{command}} applies @var{command} 8038on all frames of all threads. See @xref{Threads,,Threads}. 8039@end table 8040 8041 8042@node Frame Filter Management 8043@section Management of Frame Filters. 8044@cindex managing frame filters 8045 8046Frame filters are Python based utilities to manage and decorate the 8047output of frames. @xref{Frame Filter API}, for further information. 8048 8049Managing frame filters is performed by several commands available 8050within @value{GDBN}, detailed here. 8051 8052@table @code 8053@kindex info frame-filter 8054@item info frame-filter 8055Print a list of installed frame filters from all dictionaries, showing 8056their name, priority and enabled status. 8057 8058@kindex disable frame-filter 8059@anchor{disable frame-filter all} 8060@item disable frame-filter @var{filter-dictionary} @var{filter-name} 8061Disable a frame filter in the dictionary matching 8062@var{filter-dictionary} and @var{filter-name}. The 8063@var{filter-dictionary} may be @code{all}, @code{global}, 8064@code{progspace}, or the name of the object file where the frame filter 8065dictionary resides. When @code{all} is specified, all frame filters 8066across all dictionaries are disabled. The @var{filter-name} is the name 8067of the frame filter and is used when @code{all} is not the option for 8068@var{filter-dictionary}. A disabled frame-filter is not deleted, it 8069may be enabled again later. 8070 8071@kindex enable frame-filter 8072@item enable frame-filter @var{filter-dictionary} @var{filter-name} 8073Enable a frame filter in the dictionary matching 8074@var{filter-dictionary} and @var{filter-name}. The 8075@var{filter-dictionary} may be @code{all}, @code{global}, 8076@code{progspace} or the name of the object file where the frame filter 8077dictionary resides. When @code{all} is specified, all frame filters across 8078all dictionaries are enabled. The @var{filter-name} is the name of the frame 8079filter and is used when @code{all} is not the option for 8080@var{filter-dictionary}. 8081 8082Example: 8083 8084@smallexample 8085(gdb) info frame-filter 8086 8087global frame-filters: 8088 Priority Enabled Name 8089 1000 No PrimaryFunctionFilter 8090 100 Yes Reverse 8091 8092progspace /build/test frame-filters: 8093 Priority Enabled Name 8094 100 Yes ProgspaceFilter 8095 8096objfile /build/test frame-filters: 8097 Priority Enabled Name 8098 999 Yes BuildProgra Filter 8099 8100(gdb) disable frame-filter /build/test BuildProgramFilter 8101(gdb) info frame-filter 8102 8103global frame-filters: 8104 Priority Enabled Name 8105 1000 No PrimaryFunctionFilter 8106 100 Yes Reverse 8107 8108progspace /build/test frame-filters: 8109 Priority Enabled Name 8110 100 Yes ProgspaceFilter 8111 8112objfile /build/test frame-filters: 8113 Priority Enabled Name 8114 999 No BuildProgramFilter 8115 8116(gdb) enable frame-filter global PrimaryFunctionFilter 8117(gdb) info frame-filter 8118 8119global frame-filters: 8120 Priority Enabled Name 8121 1000 Yes PrimaryFunctionFilter 8122 100 Yes Reverse 8123 8124progspace /build/test frame-filters: 8125 Priority Enabled Name 8126 100 Yes ProgspaceFilter 8127 8128objfile /build/test frame-filters: 8129 Priority Enabled Name 8130 999 No BuildProgramFilter 8131@end smallexample 8132 8133@kindex set frame-filter priority 8134@item set frame-filter priority @var{filter-dictionary} @var{filter-name} @var{priority} 8135Set the @var{priority} of a frame filter in the dictionary matching 8136@var{filter-dictionary}, and the frame filter name matching 8137@var{filter-name}. The @var{filter-dictionary} may be @code{global}, 8138@code{progspace} or the name of the object file where the frame filter 8139dictionary resides. The @var{priority} is an integer. 8140 8141@kindex show frame-filter priority 8142@item show frame-filter priority @var{filter-dictionary} @var{filter-name} 8143Show the @var{priority} of a frame filter in the dictionary matching 8144@var{filter-dictionary}, and the frame filter name matching 8145@var{filter-name}. The @var{filter-dictionary} may be @code{global}, 8146@code{progspace} or the name of the object file where the frame filter 8147dictionary resides. 8148 8149Example: 8150 8151@smallexample 8152(gdb) info frame-filter 8153 8154global frame-filters: 8155 Priority Enabled Name 8156 1000 Yes PrimaryFunctionFilter 8157 100 Yes Reverse 8158 8159progspace /build/test frame-filters: 8160 Priority Enabled Name 8161 100 Yes ProgspaceFilter 8162 8163objfile /build/test frame-filters: 8164 Priority Enabled Name 8165 999 No BuildProgramFilter 8166 8167(gdb) set frame-filter priority global Reverse 50 8168(gdb) info frame-filter 8169 8170global frame-filters: 8171 Priority Enabled Name 8172 1000 Yes PrimaryFunctionFilter 8173 50 Yes Reverse 8174 8175progspace /build/test frame-filters: 8176 Priority Enabled Name 8177 100 Yes ProgspaceFilter 8178 8179objfile /build/test frame-filters: 8180 Priority Enabled Name 8181 999 No BuildProgramFilter 8182@end smallexample 8183@end table 8184 8185@node Source 8186@chapter Examining Source Files 8187 8188@value{GDBN} can print parts of your program's source, since the debugging 8189information recorded in the program tells @value{GDBN} what source files were 8190used to build it. When your program stops, @value{GDBN} spontaneously prints 8191the line where it stopped. Likewise, when you select a stack frame 8192(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where 8193execution in that frame has stopped. You can print other portions of 8194source files by explicit command. 8195 8196If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may 8197prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using 8198@value{GDBN} under @sc{gnu} Emacs}. 8199 8200@menu 8201* List:: Printing source lines 8202* Specify Location:: How to specify code locations 8203* Edit:: Editing source files 8204* Search:: Searching source files 8205* Source Path:: Specifying source directories 8206* Machine Code:: Source and machine code 8207@end menu 8208 8209@node List 8210@section Printing Source Lines 8211 8212@kindex list 8213@kindex l @r{(@code{list})} 8214To print lines from a source file, use the @code{list} command 8215(abbreviated @code{l}). By default, ten lines are printed. 8216There are several ways to specify what part of the file you want to 8217print; see @ref{Specify Location}, for the full list. 8218 8219Here are the forms of the @code{list} command most commonly used: 8220 8221@table @code 8222@item list @var{linenum} 8223Print lines centered around line number @var{linenum} in the 8224current source file. 8225 8226@item list @var{function} 8227Print lines centered around the beginning of function 8228@var{function}. 8229 8230@item list 8231Print more lines. If the last lines printed were printed with a 8232@code{list} command, this prints lines following the last lines 8233printed; however, if the last line printed was a solitary line printed 8234as part of displaying a stack frame (@pxref{Stack, ,Examining the 8235Stack}), this prints lines centered around that line. 8236 8237@item list - 8238Print lines just before the lines last printed. 8239@end table 8240 8241@cindex @code{list}, how many lines to display 8242By default, @value{GDBN} prints ten source lines with any of these forms of 8243the @code{list} command. You can change this using @code{set listsize}: 8244 8245@table @code 8246@kindex set listsize 8247@item set listsize @var{count} 8248@itemx set listsize unlimited 8249Make the @code{list} command display @var{count} source lines (unless 8250the @code{list} argument explicitly specifies some other number). 8251Setting @var{count} to @code{unlimited} or 0 means there's no limit. 8252 8253@kindex show listsize 8254@item show listsize 8255Display the number of lines that @code{list} prints. 8256@end table 8257 8258Repeating a @code{list} command with @key{RET} discards the argument, 8259so it is equivalent to typing just @code{list}. This is more useful 8260than listing the same lines again. An exception is made for an 8261argument of @samp{-}; that argument is preserved in repetition so that 8262each repetition moves up in the source file. 8263 8264In general, the @code{list} command expects you to supply zero, one or two 8265@dfn{locations}. Locations specify source lines; there are several ways 8266of writing them (@pxref{Specify Location}), but the effect is always 8267to specify some source line. 8268 8269Here is a complete description of the possible arguments for @code{list}: 8270 8271@table @code 8272@item list @var{location} 8273Print lines centered around the line specified by @var{location}. 8274 8275@item list @var{first},@var{last} 8276Print lines from @var{first} to @var{last}. Both arguments are 8277locations. When a @code{list} command has two locations, and the 8278source file of the second location is omitted, this refers to 8279the same source file as the first location. 8280 8281@item list ,@var{last} 8282Print lines ending with @var{last}. 8283 8284@item list @var{first}, 8285Print lines starting with @var{first}. 8286 8287@item list + 8288Print lines just after the lines last printed. 8289 8290@item list - 8291Print lines just before the lines last printed. 8292 8293@item list 8294As described in the preceding table. 8295@end table 8296 8297@node Specify Location 8298@section Specifying a Location 8299@cindex specifying location 8300@cindex location 8301@cindex source location 8302 8303@menu 8304* Linespec Locations:: Linespec locations 8305* Explicit Locations:: Explicit locations 8306* Address Locations:: Address locations 8307@end menu 8308 8309Several @value{GDBN} commands accept arguments that specify a location 8310of your program's code. Since @value{GDBN} is a source-level 8311debugger, a location usually specifies some line in the source code. 8312Locations may be specified using three different formats: 8313linespec locations, explicit locations, or address locations. 8314 8315@node Linespec Locations 8316@subsection Linespec Locations 8317@cindex linespec locations 8318 8319A @dfn{linespec} is a colon-separated list of source location parameters such 8320as file name, function name, etc. Here are all the different ways of 8321specifying a linespec: 8322 8323@table @code 8324@item @var{linenum} 8325Specifies the line number @var{linenum} of the current source file. 8326 8327@item -@var{offset} 8328@itemx +@var{offset} 8329Specifies the line @var{offset} lines before or after the @dfn{current 8330line}. For the @code{list} command, the current line is the last one 8331printed; for the breakpoint commands, this is the line at which 8332execution stopped in the currently selected @dfn{stack frame} 8333(@pxref{Frames, ,Frames}, for a description of stack frames.) When 8334used as the second of the two linespecs in a @code{list} command, 8335this specifies the line @var{offset} lines up or down from the first 8336linespec. 8337 8338@item @var{filename}:@var{linenum} 8339Specifies the line @var{linenum} in the source file @var{filename}. 8340If @var{filename} is a relative file name, then it will match any 8341source file name with the same trailing components. For example, if 8342@var{filename} is @samp{gcc/expr.c}, then it will match source file 8343name of @file{/build/trunk/gcc/expr.c}, but not 8344@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}. 8345 8346@item @var{function} 8347Specifies the line that begins the body of the function @var{function}. 8348For example, in C, this is the line with the open brace. 8349 8350By default, in C@t{++} and Ada, @var{function} is interpreted as 8351specifying all functions named @var{function} in all scopes. For 8352C@t{++}, this means in all namespaces and classes. For Ada, this 8353means in all packages. 8354 8355For example, assuming a program with C@t{++} symbols named 8356@code{A::B::func} and @code{B::func}, both commands @w{@kbd{break 8357func}} and @w{@kbd{break B::func}} set a breakpoint on both symbols. 8358 8359Commands that accept a linespec let you override this with the 8360@code{-qualified} option. For example, @w{@kbd{break -qualified 8361func}} sets a breakpoint on a free-function named @code{func} ignoring 8362any C@t{++} class methods and namespace functions called @code{func}. 8363 8364@xref{Explicit Locations}. 8365 8366@item @var{function}:@var{label} 8367Specifies the line where @var{label} appears in @var{function}. 8368 8369@item @var{filename}:@var{function} 8370Specifies the line that begins the body of the function @var{function} 8371in the file @var{filename}. You only need the file name with a 8372function name to avoid ambiguity when there are identically named 8373functions in different source files. 8374 8375@item @var{label} 8376Specifies the line at which the label named @var{label} appears 8377in the function corresponding to the currently selected stack frame. 8378If there is no current selected stack frame (for instance, if the inferior 8379is not running), then @value{GDBN} will not search for a label. 8380 8381@cindex breakpoint at static probe point 8382@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name} 8383The @sc{gnu}/Linux tool @code{SystemTap} provides a way for 8384applications to embed static probes. @xref{Static Probe Points}, for more 8385information on finding and using static probes. This form of linespec 8386specifies the location of such a static probe. 8387 8388If @var{objfile} is given, only probes coming from that shared library 8389or executable matching @var{objfile} as a regular expression are considered. 8390If @var{provider} is given, then only probes from that provider are considered. 8391If several probes match the spec, @value{GDBN} will insert a breakpoint at 8392each one of those probes. 8393@end table 8394 8395@node Explicit Locations 8396@subsection Explicit Locations 8397@cindex explicit locations 8398 8399@dfn{Explicit locations} allow the user to directly specify the source 8400location's parameters using option-value pairs. 8401 8402Explicit locations are useful when several functions, labels, or 8403file names have the same name (base name for files) in the program's 8404sources. In these cases, explicit locations point to the source 8405line you meant more accurately and unambiguously. Also, using 8406explicit locations might be faster in large programs. 8407 8408For example, the linespec @samp{foo:bar} may refer to a function @code{bar} 8409defined in the file named @file{foo} or the label @code{bar} in a function 8410named @code{foo}. @value{GDBN} must search either the file system or 8411the symbol table to know. 8412 8413The list of valid explicit location options is summarized in the 8414following table: 8415 8416@table @code 8417@item -source @var{filename} 8418The value specifies the source file name. To differentiate between 8419files with the same base name, prepend as many directories as is necessary 8420to uniquely identify the desired file, e.g., @file{foo/bar/baz.c}. Otherwise 8421@value{GDBN} will use the first file it finds with the given base 8422name. This option requires the use of either @code{-function} or @code{-line}. 8423 8424@item -function @var{function} 8425The value specifies the name of a function. Operations 8426on function locations unmodified by other options (such as @code{-label} 8427or @code{-line}) refer to the line that begins the body of the function. 8428In C, for example, this is the line with the open brace. 8429 8430By default, in C@t{++} and Ada, @var{function} is interpreted as 8431specifying all functions named @var{function} in all scopes. For 8432C@t{++}, this means in all namespaces and classes. For Ada, this 8433means in all packages. 8434 8435For example, assuming a program with C@t{++} symbols named 8436@code{A::B::func} and @code{B::func}, both commands @w{@kbd{break 8437-function func}} and @w{@kbd{break -function B::func}} set a 8438breakpoint on both symbols. 8439 8440You can use the @kbd{-qualified} flag to override this (see below). 8441 8442@item -qualified 8443 8444This flag makes @value{GDBN} interpret a function name specified with 8445@kbd{-function} as a complete fully-qualified name. 8446 8447For example, assuming a C@t{++} program with symbols named 8448@code{A::B::func} and @code{B::func}, the @w{@kbd{break -qualified 8449-function B::func}} command sets a breakpoint on @code{B::func}, only. 8450 8451(Note: the @kbd{-qualified} option can precede a linespec as well 8452(@pxref{Linespec Locations}), so the particular example above could be 8453simplified as @w{@kbd{break -qualified B::func}}.) 8454 8455@item -label @var{label} 8456The value specifies the name of a label. When the function 8457name is not specified, the label is searched in the function of the currently 8458selected stack frame. 8459 8460@item -line @var{number} 8461The value specifies a line offset for the location. The offset may either 8462be absolute (@code{-line 3}) or relative (@code{-line +3}), depending on 8463the command. When specified without any other options, the line offset is 8464relative to the current line. 8465@end table 8466 8467Explicit location options may be abbreviated by omitting any non-unique 8468trailing characters from the option name, e.g., @w{@kbd{break -s main.c -li 3}}. 8469 8470@node Address Locations 8471@subsection Address Locations 8472@cindex address locations 8473 8474@dfn{Address locations} indicate a specific program address. They have 8475the generalized form *@var{address}. 8476 8477For line-oriented commands, such as @code{list} and @code{edit}, this 8478specifies a source line that contains @var{address}. For @code{break} and 8479other breakpoint-oriented commands, this can be used to set breakpoints in 8480parts of your program which do not have debugging information or 8481source files. 8482 8483Here @var{address} may be any expression valid in the current working 8484language (@pxref{Languages, working language}) that specifies a code 8485address. In addition, as a convenience, @value{GDBN} extends the 8486semantics of expressions used in locations to cover several situations 8487that frequently occur during debugging. Here are the various forms 8488of @var{address}: 8489 8490@table @code 8491@item @var{expression} 8492Any expression valid in the current working language. 8493 8494@item @var{funcaddr} 8495An address of a function or procedure derived from its name. In C, 8496C@t{++}, Objective-C, Fortran, minimal, and assembly, this is 8497simply the function's name @var{function} (and actually a special case 8498of a valid expression). In Pascal and Modula-2, this is 8499@code{&@var{function}}. In Ada, this is @code{@var{function}'Address} 8500(although the Pascal form also works). 8501 8502This form specifies the address of the function's first instruction, 8503before the stack frame and arguments have been set up. 8504 8505@item '@var{filename}':@var{funcaddr} 8506Like @var{funcaddr} above, but also specifies the name of the source 8507file explicitly. This is useful if the name of the function does not 8508specify the function unambiguously, e.g., if there are several 8509functions with identical names in different source files. 8510@end table 8511 8512@node Edit 8513@section Editing Source Files 8514@cindex editing source files 8515 8516@kindex edit 8517@kindex e @r{(@code{edit})} 8518To edit the lines in a source file, use the @code{edit} command. 8519The editing program of your choice 8520is invoked with the current line set to 8521the active line in the program. 8522Alternatively, there are several ways to specify what part of the file you 8523want to print if you want to see other parts of the program: 8524 8525@table @code 8526@item edit @var{location} 8527Edit the source file specified by @code{location}. Editing starts at 8528that @var{location}, e.g., at the specified source line of the 8529specified file. @xref{Specify Location}, for all the possible forms 8530of the @var{location} argument; here are the forms of the @code{edit} 8531command most commonly used: 8532 8533@table @code 8534@item edit @var{number} 8535Edit the current source file with @var{number} as the active line number. 8536 8537@item edit @var{function} 8538Edit the file containing @var{function} at the beginning of its definition. 8539@end table 8540 8541@end table 8542 8543@subsection Choosing your Editor 8544You can customize @value{GDBN} to use any editor you want 8545@footnote{ 8546The only restriction is that your editor (say @code{ex}), recognizes the 8547following command-line syntax: 8548@smallexample 8549ex +@var{number} file 8550@end smallexample 8551The optional numeric value +@var{number} specifies the number of the line in 8552the file where to start editing.}. 8553By default, it is @file{@value{EDITOR}}, but you can change this 8554by setting the environment variable @code{EDITOR} before using 8555@value{GDBN}. For example, to configure @value{GDBN} to use the 8556@code{vi} editor, you could use these commands with the @code{sh} shell: 8557@smallexample 8558EDITOR=/usr/bin/vi 8559export EDITOR 8560gdb @dots{} 8561@end smallexample 8562or in the @code{csh} shell, 8563@smallexample 8564setenv EDITOR /usr/bin/vi 8565gdb @dots{} 8566@end smallexample 8567 8568@node Search 8569@section Searching Source Files 8570@cindex searching source files 8571 8572There are two commands for searching through the current source file for a 8573regular expression. 8574 8575@table @code 8576@kindex search 8577@kindex forward-search 8578@kindex fo @r{(@code{forward-search})} 8579@item forward-search @var{regexp} 8580@itemx search @var{regexp} 8581The command @samp{forward-search @var{regexp}} checks each line, 8582starting with the one following the last line listed, for a match for 8583@var{regexp}. It lists the line that is found. You can use the 8584synonym @samp{search @var{regexp}} or abbreviate the command name as 8585@code{fo}. 8586 8587@kindex reverse-search 8588@item reverse-search @var{regexp} 8589The command @samp{reverse-search @var{regexp}} checks each line, starting 8590with the one before the last line listed and going backward, for a match 8591for @var{regexp}. It lists the line that is found. You can abbreviate 8592this command as @code{rev}. 8593@end table 8594 8595@node Source Path 8596@section Specifying Source Directories 8597 8598@cindex source path 8599@cindex directories for source files 8600Executable programs sometimes do not record the directories of the source 8601files from which they were compiled, just the names. Even when they do, 8602the directories could be moved between the compilation and your debugging 8603session. @value{GDBN} has a list of directories to search for source files; 8604this is called the @dfn{source path}. Each time @value{GDBN} wants a source file, 8605it tries all the directories in the list, in the order they are present 8606in the list, until it finds a file with the desired name. 8607 8608For example, suppose an executable references the file 8609@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is 8610@file{/mnt/cross}. The file is first looked up literally; if this 8611fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this 8612fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error 8613message is printed. @value{GDBN} does not look up the parts of the 8614source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}. 8615Likewise, the subdirectories of the source path are not searched: if 8616the source path is @file{/mnt/cross}, and the binary refers to 8617@file{foo.c}, @value{GDBN} would not find it under 8618@file{/mnt/cross/usr/src/foo-1.0/lib}. 8619 8620Plain file names, relative file names with leading directories, file 8621names containing dots, etc.@: are all treated as described above; for 8622instance, if the source path is @file{/mnt/cross}, and the source file 8623is recorded as @file{../lib/foo.c}, @value{GDBN} would first try 8624@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after 8625that---@file{/mnt/cross/foo.c}. 8626 8627Note that the executable search path is @emph{not} used to locate the 8628source files. 8629 8630Whenever you reset or rearrange the source path, @value{GDBN} clears out 8631any information it has cached about where source files are found and where 8632each line is in the file. 8633 8634@kindex directory 8635@kindex dir 8636When you start @value{GDBN}, its source path includes only @samp{cdir} 8637and @samp{cwd}, in that order. 8638To add other directories, use the @code{directory} command. 8639 8640The search path is used to find both program source files and @value{GDBN} 8641script files (read using the @samp{-command} option and @samp{source} command). 8642 8643In addition to the source path, @value{GDBN} provides a set of commands 8644that manage a list of source path substitution rules. A @dfn{substitution 8645rule} specifies how to rewrite source directories stored in the program's 8646debug information in case the sources were moved to a different 8647directory between compilation and debugging. A rule is made of 8648two strings, the first specifying what needs to be rewritten in 8649the path, and the second specifying how it should be rewritten. 8650In @ref{set substitute-path}, we name these two parts @var{from} and 8651@var{to} respectively. @value{GDBN} does a simple string replacement 8652of @var{from} with @var{to} at the start of the directory part of the 8653source file name, and uses that result instead of the original file 8654name to look up the sources. 8655 8656Using the previous example, suppose the @file{foo-1.0} tree has been 8657moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell 8658@value{GDBN} to replace @file{/usr/src} in all source path names with 8659@file{/mnt/cross}. The first lookup will then be 8660@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location 8661of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path 8662substitution rule, use the @code{set substitute-path} command 8663(@pxref{set substitute-path}). 8664 8665To avoid unexpected substitution results, a rule is applied only if the 8666@var{from} part of the directory name ends at a directory separator. 8667For instance, a rule substituting @file{/usr/source} into 8668@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but 8669not to @file{/usr/sourceware/foo-2.0}. And because the substitution 8670is applied only at the beginning of the directory name, this rule will 8671not be applied to @file{/root/usr/source/baz.c} either. 8672 8673In many cases, you can achieve the same result using the @code{directory} 8674command. However, @code{set substitute-path} can be more efficient in 8675the case where the sources are organized in a complex tree with multiple 8676subdirectories. With the @code{directory} command, you need to add each 8677subdirectory of your project. If you moved the entire tree while 8678preserving its internal organization, then @code{set substitute-path} 8679allows you to direct the debugger to all the sources with one single 8680command. 8681 8682@code{set substitute-path} is also more than just a shortcut command. 8683The source path is only used if the file at the original location no 8684longer exists. On the other hand, @code{set substitute-path} modifies 8685the debugger behavior to look at the rewritten location instead. So, if 8686for any reason a source file that is not relevant to your executable is 8687located at the original location, a substitution rule is the only 8688method available to point @value{GDBN} at the new location. 8689 8690@cindex @samp{--with-relocated-sources} 8691@cindex default source path substitution 8692You can configure a default source path substitution rule by 8693configuring @value{GDBN} with the 8694@samp{--with-relocated-sources=@var{dir}} option. The @var{dir} 8695should be the name of a directory under @value{GDBN}'s configured 8696prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and 8697directory names in debug information under @var{dir} will be adjusted 8698automatically if the installed @value{GDBN} is moved to a new 8699location. This is useful if @value{GDBN}, libraries or executables 8700with debug information and corresponding source code are being moved 8701together. 8702 8703@table @code 8704@item directory @var{dirname} @dots{} 8705@item dir @var{dirname} @dots{} 8706Add directory @var{dirname} to the front of the source path. Several 8707directory names may be given to this command, separated by @samp{:} 8708(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as 8709part of absolute file names) or 8710whitespace. You may specify a directory that is already in the source 8711path; this moves it forward, so @value{GDBN} searches it sooner. 8712 8713@kindex cdir 8714@kindex cwd 8715@vindex $cdir@r{, convenience variable} 8716@vindex $cwd@r{, convenience variable} 8717@cindex compilation directory 8718@cindex current directory 8719@cindex working directory 8720@cindex directory, current 8721@cindex directory, compilation 8722You can use the string @samp{$cdir} to refer to the compilation 8723directory (if one is recorded), and @samp{$cwd} to refer to the current 8724working directory. @samp{$cwd} is not the same as @samp{.}---the former 8725tracks the current working directory as it changes during your @value{GDBN} 8726session, while the latter is immediately expanded to the current 8727directory at the time you add an entry to the source path. 8728 8729@item directory 8730Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation. 8731 8732@c RET-repeat for @code{directory} is explicitly disabled, but since 8733@c repeating it would be a no-op we do not say that. (thanks to RMS) 8734 8735@item set directories @var{path-list} 8736@kindex set directories 8737Set the source path to @var{path-list}. 8738@samp{$cdir:$cwd} are added if missing. 8739 8740@item show directories 8741@kindex show directories 8742Print the source path: show which directories it contains. 8743 8744@anchor{set substitute-path} 8745@item set substitute-path @var{from} @var{to} 8746@kindex set substitute-path 8747Define a source path substitution rule, and add it at the end of the 8748current list of existing substitution rules. If a rule with the same 8749@var{from} was already defined, then the old rule is also deleted. 8750 8751For example, if the file @file{/foo/bar/baz.c} was moved to 8752@file{/mnt/cross/baz.c}, then the command 8753 8754@smallexample 8755(@value{GDBP}) set substitute-path /foo/bar /mnt/cross 8756@end smallexample 8757 8758@noindent 8759will tell @value{GDBN} to replace @samp{/foo/bar} with 8760@samp{/mnt/cross}, which will allow @value{GDBN} to find the file 8761@file{baz.c} even though it was moved. 8762 8763In the case when more than one substitution rule have been defined, 8764the rules are evaluated one by one in the order where they have been 8765defined. The first one matching, if any, is selected to perform 8766the substitution. 8767 8768For instance, if we had entered the following commands: 8769 8770@smallexample 8771(@value{GDBP}) set substitute-path /usr/src/include /mnt/include 8772(@value{GDBP}) set substitute-path /usr/src /mnt/src 8773@end smallexample 8774 8775@noindent 8776@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into 8777@file{/mnt/include/defs.h} by using the first rule. However, it would 8778use the second rule to rewrite @file{/usr/src/lib/foo.c} into 8779@file{/mnt/src/lib/foo.c}. 8780 8781 8782@item unset substitute-path [path] 8783@kindex unset substitute-path 8784If a path is specified, search the current list of substitution rules 8785for a rule that would rewrite that path. Delete that rule if found. 8786A warning is emitted by the debugger if no rule could be found. 8787 8788If no path is specified, then all substitution rules are deleted. 8789 8790@item show substitute-path [path] 8791@kindex show substitute-path 8792If a path is specified, then print the source path substitution rule 8793which would rewrite that path, if any. 8794 8795If no path is specified, then print all existing source path substitution 8796rules. 8797 8798@end table 8799 8800If your source path is cluttered with directories that are no longer of 8801interest, @value{GDBN} may sometimes cause confusion by finding the wrong 8802versions of source. You can correct the situation as follows: 8803 8804@enumerate 8805@item 8806Use @code{directory} with no argument to reset the source path to its default value. 8807 8808@item 8809Use @code{directory} with suitable arguments to reinstall the 8810directories you want in the source path. You can add all the 8811directories in one command. 8812@end enumerate 8813 8814@node Machine Code 8815@section Source and Machine Code 8816@cindex source line and its code address 8817 8818You can use the command @code{info line} to map source lines to program 8819addresses (and vice versa), and the command @code{disassemble} to display 8820a range of addresses as machine instructions. You can use the command 8821@code{set disassemble-next-line} to set whether to disassemble next 8822source line when execution stops. When run under @sc{gnu} Emacs 8823mode, the @code{info line} command causes the arrow to point to the 8824line specified. Also, @code{info line} prints addresses in symbolic form as 8825well as hex. 8826 8827@table @code 8828@kindex info line 8829@item info line 8830@itemx info line @var{location} 8831Print the starting and ending addresses of the compiled code for 8832source line @var{location}. You can specify source lines in any of 8833the ways documented in @ref{Specify Location}. With no @var{location} 8834information about the current source line is printed. 8835@end table 8836 8837For example, we can use @code{info line} to discover the location of 8838the object code for the first line of function 8839@code{m4_changequote}: 8840 8841@smallexample 8842(@value{GDBP}) info line m4_changequote 8843Line 895 of "builtin.c" starts at pc 0x634c <m4_changequote> and \ 8844 ends at 0x6350 <m4_changequote+4>. 8845@end smallexample 8846 8847@noindent 8848@cindex code address and its source line 8849We can also inquire (using @code{*@var{addr}} as the form for 8850@var{location}) what source line covers a particular address: 8851@smallexample 8852(@value{GDBP}) info line *0x63ff 8853Line 926 of "builtin.c" starts at pc 0x63e4 <m4_changequote+152> and \ 8854 ends at 0x6404 <m4_changequote+184>. 8855@end smallexample 8856 8857@cindex @code{$_} and @code{info line} 8858@cindex @code{x} command, default address 8859@kindex x@r{(examine), and} info line 8860After @code{info line}, the default address for the @code{x} command 8861is changed to the starting address of the line, so that @samp{x/i} is 8862sufficient to begin examining the machine code (@pxref{Memory, 8863,Examining Memory}). Also, this address is saved as the value of the 8864convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience 8865Variables}). 8866 8867@cindex info line, repeated calls 8868After @code{info line}, using @code{info line} again without 8869specifying a location will display information about the next source 8870line. 8871 8872@table @code 8873@kindex disassemble 8874@cindex assembly instructions 8875@cindex instructions, assembly 8876@cindex machine instructions 8877@cindex listing machine instructions 8878@item disassemble 8879@itemx disassemble /m 8880@itemx disassemble /s 8881@itemx disassemble /r 8882This specialized command dumps a range of memory as machine 8883instructions. It can also print mixed source+disassembly by specifying 8884the @code{/m} or @code{/s} modifier and print the raw instructions in hex 8885as well as in symbolic form by specifying the @code{/r} modifier. 8886The default memory range is the function surrounding the 8887program counter of the selected frame. A single argument to this 8888command is a program counter value; @value{GDBN} dumps the function 8889surrounding this value. When two arguments are given, they should 8890be separated by a comma, possibly surrounded by whitespace. The 8891arguments specify a range of addresses to dump, in one of two forms: 8892 8893@table @code 8894@item @var{start},@var{end} 8895the addresses from @var{start} (inclusive) to @var{end} (exclusive) 8896@item @var{start},+@var{length} 8897the addresses from @var{start} (inclusive) to 8898@code{@var{start}+@var{length}} (exclusive). 8899@end table 8900 8901@noindent 8902When 2 arguments are specified, the name of the function is also 8903printed (since there could be several functions in the given range). 8904 8905The argument(s) can be any expression yielding a numeric value, such as 8906@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}. 8907 8908If the range of memory being disassembled contains current program counter, 8909the instruction at that location is shown with a @code{=>} marker. 8910@end table 8911 8912The following example shows the disassembly of a range of addresses of 8913HP PA-RISC 2.0 code: 8914 8915@smallexample 8916(@value{GDBP}) disas 0x32c4, 0x32e4 8917Dump of assembler code from 0x32c4 to 0x32e4: 8918 0x32c4 <main+204>: addil 0,dp 8919 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26 8920 0x32cc <main+212>: ldil 0x3000,r31 8921 0x32d0 <main+216>: ble 0x3f8(sr4,r31) 8922 0x32d4 <main+220>: ldo 0(r31),rp 8923 0x32d8 <main+224>: addil -0x800,dp 8924 0x32dc <main+228>: ldo 0x588(r1),r26 8925 0x32e0 <main+232>: ldil 0x3000,r31 8926End of assembler dump. 8927@end smallexample 8928 8929Here is an example showing mixed source+assembly for Intel x86 8930with @code{/m} or @code{/s}, when the program is stopped just after 8931function prologue in a non-optimized function with no inline code. 8932 8933@smallexample 8934(@value{GDBP}) disas /m main 8935Dump of assembler code for function main: 89365 @{ 8937 0x08048330 <+0>: push %ebp 8938 0x08048331 <+1>: mov %esp,%ebp 8939 0x08048333 <+3>: sub $0x8,%esp 8940 0x08048336 <+6>: and $0xfffffff0,%esp 8941 0x08048339 <+9>: sub $0x10,%esp 8942 89436 printf ("Hello.\n"); 8944=> 0x0804833c <+12>: movl $0x8048440,(%esp) 8945 0x08048343 <+19>: call 0x8048284 <puts@@plt> 8946 89477 return 0; 89488 @} 8949 0x08048348 <+24>: mov $0x0,%eax 8950 0x0804834d <+29>: leave 8951 0x0804834e <+30>: ret 8952 8953End of assembler dump. 8954@end smallexample 8955 8956The @code{/m} option is deprecated as its output is not useful when 8957there is either inlined code or re-ordered code. 8958The @code{/s} option is the preferred choice. 8959Here is an example for AMD x86-64 showing the difference between 8960@code{/m} output and @code{/s} output. 8961This example has one inline function defined in a header file, 8962and the code is compiled with @samp{-O2} optimization. 8963Note how the @code{/m} output is missing the disassembly of 8964several instructions that are present in the @code{/s} output. 8965 8966@file{foo.h}: 8967 8968@smallexample 8969int 8970foo (int a) 8971@{ 8972 if (a < 0) 8973 return a * 2; 8974 if (a == 0) 8975 return 1; 8976 return a + 10; 8977@} 8978@end smallexample 8979 8980@file{foo.c}: 8981 8982@smallexample 8983#include "foo.h" 8984volatile int x, y; 8985int 8986main () 8987@{ 8988 x = foo (y); 8989 return 0; 8990@} 8991@end smallexample 8992 8993@smallexample 8994(@value{GDBP}) disas /m main 8995Dump of assembler code for function main: 89965 @{ 8997 89986 x = foo (y); 8999 0x0000000000400400 <+0>: mov 0x200c2e(%rip),%eax # 0x601034 <y> 9000 0x0000000000400417 <+23>: mov %eax,0x200c13(%rip) # 0x601030 <x> 9001 90027 return 0; 90038 @} 9004 0x000000000040041d <+29>: xor %eax,%eax 9005 0x000000000040041f <+31>: retq 9006 0x0000000000400420 <+32>: add %eax,%eax 9007 0x0000000000400422 <+34>: jmp 0x400417 <main+23> 9008 9009End of assembler dump. 9010(@value{GDBP}) disas /s main 9011Dump of assembler code for function main: 9012foo.c: 90135 @{ 90146 x = foo (y); 9015 0x0000000000400400 <+0>: mov 0x200c2e(%rip),%eax # 0x601034 <y> 9016 9017foo.h: 90184 if (a < 0) 9019 0x0000000000400406 <+6>: test %eax,%eax 9020 0x0000000000400408 <+8>: js 0x400420 <main+32> 9021 90226 if (a == 0) 90237 return 1; 90248 return a + 10; 9025 0x000000000040040a <+10>: lea 0xa(%rax),%edx 9026 0x000000000040040d <+13>: test %eax,%eax 9027 0x000000000040040f <+15>: mov $0x1,%eax 9028 0x0000000000400414 <+20>: cmovne %edx,%eax 9029 9030foo.c: 90316 x = foo (y); 9032 0x0000000000400417 <+23>: mov %eax,0x200c13(%rip) # 0x601030 <x> 9033 90347 return 0; 90358 @} 9036 0x000000000040041d <+29>: xor %eax,%eax 9037 0x000000000040041f <+31>: retq 9038 9039foo.h: 90405 return a * 2; 9041 0x0000000000400420 <+32>: add %eax,%eax 9042 0x0000000000400422 <+34>: jmp 0x400417 <main+23> 9043End of assembler dump. 9044@end smallexample 9045 9046Here is another example showing raw instructions in hex for AMD x86-64, 9047 9048@smallexample 9049(gdb) disas /r 0x400281,+10 9050Dump of assembler code from 0x400281 to 0x40028b: 9051 0x0000000000400281: 38 36 cmp %dh,(%rsi) 9052 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax 9053 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx) 9054 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al 9055End of assembler dump. 9056@end smallexample 9057 9058Addresses cannot be specified as a location (@pxref{Specify Location}). 9059So, for example, if you want to disassemble function @code{bar} 9060in file @file{foo.c}, you must type @samp{disassemble 'foo.c'::bar} 9061and not @samp{disassemble foo.c:bar}. 9062 9063Some architectures have more than one commonly-used set of instruction 9064mnemonics or other syntax. 9065 9066For programs that were dynamically linked and use shared libraries, 9067instructions that call functions or branch to locations in the shared 9068libraries might show a seemingly bogus location---it's actually a 9069location of the relocation table. On some architectures, @value{GDBN} 9070might be able to resolve these to actual function names. 9071 9072@table @code 9073@kindex set disassembler-options 9074@cindex disassembler options 9075@item set disassembler-options @var{option1}[,@var{option2}@dots{}] 9076This command controls the passing of target specific information to 9077the disassembler. For a list of valid options, please refer to the 9078@code{-M}/@code{--disassembler-options} section of the @samp{objdump} 9079manual and/or the output of @kbd{objdump --help} 9080(@pxref{objdump,,objdump,binutils,The GNU Binary Utilities}). 9081The default value is the empty string. 9082 9083If it is necessary to specify more than one disassembler option, then 9084multiple options can be placed together into a comma separated list. 9085Currently this command is only supported on targets ARM, MIPS, PowerPC 9086and S/390. 9087 9088@kindex show disassembler-options 9089@item show disassembler-options 9090Show the current setting of the disassembler options. 9091@end table 9092 9093@table @code 9094@kindex set disassembly-flavor 9095@cindex Intel disassembly flavor 9096@cindex AT&T disassembly flavor 9097@item set disassembly-flavor @var{instruction-set} 9098Select the instruction set to use when disassembling the 9099program via the @code{disassemble} or @code{x/i} commands. 9100 9101Currently this command is only defined for the Intel x86 family. You 9102can set @var{instruction-set} to either @code{intel} or @code{att}. 9103The default is @code{att}, the AT&T flavor used by default by Unix 9104assemblers for x86-based targets. 9105 9106@kindex show disassembly-flavor 9107@item show disassembly-flavor 9108Show the current setting of the disassembly flavor. 9109@end table 9110 9111@table @code 9112@kindex set disassemble-next-line 9113@kindex show disassemble-next-line 9114@item set disassemble-next-line 9115@itemx show disassemble-next-line 9116Control whether or not @value{GDBN} will disassemble the next source 9117line or instruction when execution stops. If ON, @value{GDBN} will 9118display disassembly of the next source line when execution of the 9119program being debugged stops. This is @emph{in addition} to 9120displaying the source line itself, which @value{GDBN} always does if 9121possible. If the next source line cannot be displayed for some reason 9122(e.g., if @value{GDBN} cannot find the source file, or there's no line 9123info in the debug info), @value{GDBN} will display disassembly of the 9124next @emph{instruction} instead of showing the next source line. If 9125AUTO, @value{GDBN} will display disassembly of next instruction only 9126if the source line cannot be displayed. This setting causes 9127@value{GDBN} to display some feedback when you step through a function 9128with no line info or whose source file is unavailable. The default is 9129OFF, which means never display the disassembly of the next line or 9130instruction. 9131@end table 9132 9133 9134@node Data 9135@chapter Examining Data 9136 9137@cindex printing data 9138@cindex examining data 9139@kindex print 9140@kindex inspect 9141The usual way to examine data in your program is with the @code{print} 9142command (abbreviated @code{p}), or its synonym @code{inspect}. It 9143evaluates and prints the value of an expression of the language your 9144program is written in (@pxref{Languages, ,Using @value{GDBN} with 9145Different Languages}). It may also print the expression using a 9146Python-based pretty-printer (@pxref{Pretty Printing}). 9147 9148@table @code 9149@item print @var{expr} 9150@itemx print /@var{f} @var{expr} 9151@var{expr} is an expression (in the source language). By default the 9152value of @var{expr} is printed in a format appropriate to its data type; 9153you can choose a different format by specifying @samp{/@var{f}}, where 9154@var{f} is a letter specifying the format; see @ref{Output Formats,,Output 9155Formats}. 9156 9157@item print 9158@itemx print /@var{f} 9159@cindex reprint the last value 9160If you omit @var{expr}, @value{GDBN} displays the last value again (from the 9161@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to 9162conveniently inspect the same value in an alternative format. 9163@end table 9164 9165A more low-level way of examining data is with the @code{x} command. 9166It examines data in memory at a specified address and prints it in a 9167specified format. @xref{Memory, ,Examining Memory}. 9168 9169If you are interested in information about types, or about how the 9170fields of a struct or a class are declared, use the @code{ptype @var{exp}} 9171command rather than @code{print}. @xref{Symbols, ,Examining the Symbol 9172Table}. 9173 9174@cindex exploring hierarchical data structures 9175@kindex explore 9176Another way of examining values of expressions and type information is 9177through the Python extension command @code{explore} (available only if 9178the @value{GDBN} build is configured with @code{--with-python}). It 9179offers an interactive way to start at the highest level (or, the most 9180abstract level) of the data type of an expression (or, the data type 9181itself) and explore all the way down to leaf scalar values/fields 9182embedded in the higher level data types. 9183 9184@table @code 9185@item explore @var{arg} 9186@var{arg} is either an expression (in the source language), or a type 9187visible in the current context of the program being debugged. 9188@end table 9189 9190The working of the @code{explore} command can be illustrated with an 9191example. If a data type @code{struct ComplexStruct} is defined in your 9192C program as 9193 9194@smallexample 9195struct SimpleStruct 9196@{ 9197 int i; 9198 double d; 9199@}; 9200 9201struct ComplexStruct 9202@{ 9203 struct SimpleStruct *ss_p; 9204 int arr[10]; 9205@}; 9206@end smallexample 9207 9208@noindent 9209followed by variable declarations as 9210 9211@smallexample 9212struct SimpleStruct ss = @{ 10, 1.11 @}; 9213struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @}; 9214@end smallexample 9215 9216@noindent 9217then, the value of the variable @code{cs} can be explored using the 9218@code{explore} command as follows. 9219 9220@smallexample 9221(gdb) explore cs 9222The value of `cs' is a struct/class of type `struct ComplexStruct' with 9223the following fields: 9224 9225 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'> 9226 arr = <Enter 1 to explore this field of type `int [10]'> 9227 9228Enter the field number of choice: 9229@end smallexample 9230 9231@noindent 9232Since the fields of @code{cs} are not scalar values, you are being 9233prompted to chose the field you want to explore. Let's say you choose 9234the field @code{ss_p} by entering @code{0}. Then, since this field is a 9235pointer, you will be asked if it is pointing to a single value. From 9236the declaration of @code{cs} above, it is indeed pointing to a single 9237value, hence you enter @code{y}. If you enter @code{n}, then you will 9238be asked if it were pointing to an array of values, in which case this 9239field will be explored as if it were an array. 9240 9241@smallexample 9242`cs.ss_p' is a pointer to a value of type `struct SimpleStruct' 9243Continue exploring it as a pointer to a single value [y/n]: y 9244The value of `*(cs.ss_p)' is a struct/class of type `struct 9245SimpleStruct' with the following fields: 9246 9247 i = 10 .. (Value of type `int') 9248 d = 1.1100000000000001 .. (Value of type `double') 9249 9250Press enter to return to parent value: 9251@end smallexample 9252 9253@noindent 9254If the field @code{arr} of @code{cs} was chosen for exploration by 9255entering @code{1} earlier, then since it is as array, you will be 9256prompted to enter the index of the element in the array that you want 9257to explore. 9258 9259@smallexample 9260`cs.arr' is an array of `int'. 9261Enter the index of the element you want to explore in `cs.arr': 5 9262 9263`(cs.arr)[5]' is a scalar value of type `int'. 9264 9265(cs.arr)[5] = 4 9266 9267Press enter to return to parent value: 9268@end smallexample 9269 9270In general, at any stage of exploration, you can go deeper towards the 9271leaf values by responding to the prompts appropriately, or hit the 9272return key to return to the enclosing data structure (the @i{higher} 9273level data structure). 9274 9275Similar to exploring values, you can use the @code{explore} command to 9276explore types. Instead of specifying a value (which is typically a 9277variable name or an expression valid in the current context of the 9278program being debugged), you specify a type name. If you consider the 9279same example as above, your can explore the type 9280@code{struct ComplexStruct} by passing the argument 9281@code{struct ComplexStruct} to the @code{explore} command. 9282 9283@smallexample 9284(gdb) explore struct ComplexStruct 9285@end smallexample 9286 9287@noindent 9288By responding to the prompts appropriately in the subsequent interactive 9289session, you can explore the type @code{struct ComplexStruct} in a 9290manner similar to how the value @code{cs} was explored in the above 9291example. 9292 9293The @code{explore} command also has two sub-commands, 9294@code{explore value} and @code{explore type}. The former sub-command is 9295a way to explicitly specify that value exploration of the argument is 9296being invoked, while the latter is a way to explicitly specify that type 9297exploration of the argument is being invoked. 9298 9299@table @code 9300@item explore value @var{expr} 9301@cindex explore value 9302This sub-command of @code{explore} explores the value of the 9303expression @var{expr} (if @var{expr} is an expression valid in the 9304current context of the program being debugged). The behavior of this 9305command is identical to that of the behavior of the @code{explore} 9306command being passed the argument @var{expr}. 9307 9308@item explore type @var{arg} 9309@cindex explore type 9310This sub-command of @code{explore} explores the type of @var{arg} (if 9311@var{arg} is a type visible in the current context of program being 9312debugged), or the type of the value/expression @var{arg} (if @var{arg} 9313is an expression valid in the current context of the program being 9314debugged). If @var{arg} is a type, then the behavior of this command is 9315identical to that of the @code{explore} command being passed the 9316argument @var{arg}. If @var{arg} is an expression, then the behavior of 9317this command will be identical to that of the @code{explore} command 9318being passed the type of @var{arg} as the argument. 9319@end table 9320 9321@menu 9322* Expressions:: Expressions 9323* Ambiguous Expressions:: Ambiguous Expressions 9324* Variables:: Program variables 9325* Arrays:: Artificial arrays 9326* Output Formats:: Output formats 9327* Memory:: Examining memory 9328* Auto Display:: Automatic display 9329* Print Settings:: Print settings 9330* Pretty Printing:: Python pretty printing 9331* Value History:: Value history 9332* Convenience Vars:: Convenience variables 9333* Convenience Funs:: Convenience functions 9334* Registers:: Registers 9335* Floating Point Hardware:: Floating point hardware 9336* Vector Unit:: Vector Unit 9337* OS Information:: Auxiliary data provided by operating system 9338* Memory Region Attributes:: Memory region attributes 9339* Dump/Restore Files:: Copy between memory and a file 9340* Core File Generation:: Cause a program dump its core 9341* Character Sets:: Debugging programs that use a different 9342 character set than GDB does 9343* Caching Target Data:: Data caching for targets 9344* Searching Memory:: Searching memory for a sequence of bytes 9345* Value Sizes:: Managing memory allocated for values 9346@end menu 9347 9348@node Expressions 9349@section Expressions 9350 9351@cindex expressions 9352@code{print} and many other @value{GDBN} commands accept an expression and 9353compute its value. Any kind of constant, variable or operator defined 9354by the programming language you are using is valid in an expression in 9355@value{GDBN}. This includes conditional expressions, function calls, 9356casts, and string constants. It also includes preprocessor macros, if 9357you compiled your program to include this information; see 9358@ref{Compilation}. 9359 9360@cindex arrays in expressions 9361@value{GDBN} supports array constants in expressions input by 9362the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example, 9363you can use the command @code{print @{1, 2, 3@}} to create an array 9364of three integers. If you pass an array to a function or assign it 9365to a program variable, @value{GDBN} copies the array to memory that 9366is @code{malloc}ed in the target program. 9367 9368Because C is so widespread, most of the expressions shown in examples in 9369this manual are in C. @xref{Languages, , Using @value{GDBN} with Different 9370Languages}, for information on how to use expressions in other 9371languages. 9372 9373In this section, we discuss operators that you can use in @value{GDBN} 9374expressions regardless of your programming language. 9375 9376@cindex casts, in expressions 9377Casts are supported in all languages, not just in C, because it is so 9378useful to cast a number into a pointer in order to examine a structure 9379at that address in memory. 9380@c FIXME: casts supported---Mod2 true? 9381 9382@value{GDBN} supports these operators, in addition to those common 9383to programming languages: 9384 9385@table @code 9386@item @@ 9387@samp{@@} is a binary operator for treating parts of memory as arrays. 9388@xref{Arrays, ,Artificial Arrays}, for more information. 9389 9390@item :: 9391@samp{::} allows you to specify a variable in terms of the file or 9392function where it is defined. @xref{Variables, ,Program Variables}. 9393 9394@cindex @{@var{type}@} 9395@cindex type casting memory 9396@cindex memory, viewing as typed object 9397@cindex casts, to view memory 9398@item @{@var{type}@} @var{addr} 9399Refers to an object of type @var{type} stored at address @var{addr} in 9400memory. The address @var{addr} may be any expression whose value is 9401an integer or pointer (but parentheses are required around binary 9402operators, just as in a cast). This construct is allowed regardless 9403of what kind of data is normally supposed to reside at @var{addr}. 9404@end table 9405 9406@node Ambiguous Expressions 9407@section Ambiguous Expressions 9408@cindex ambiguous expressions 9409 9410Expressions can sometimes contain some ambiguous elements. For instance, 9411some programming languages (notably Ada, C@t{++} and Objective-C) permit 9412a single function name to be defined several times, for application in 9413different contexts. This is called @dfn{overloading}. Another example 9414involving Ada is generics. A @dfn{generic package} is similar to C@t{++} 9415templates and is typically instantiated several times, resulting in 9416the same function name being defined in different contexts. 9417 9418In some cases and depending on the language, it is possible to adjust 9419the expression to remove the ambiguity. For instance in C@t{++}, you 9420can specify the signature of the function you want to break on, as in 9421@kbd{break @var{function}(@var{types})}. In Ada, using the fully 9422qualified name of your function often makes the expression unambiguous 9423as well. 9424 9425When an ambiguity that needs to be resolved is detected, the debugger 9426has the capability to display a menu of numbered choices for each 9427possibility, and then waits for the selection with the prompt @samp{>}. 9428The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}} 9429aborts the current command. If the command in which the expression was 9430used allows more than one choice to be selected, the next option in the 9431menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible 9432choices. 9433 9434For example, the following session excerpt shows an attempt to set a 9435breakpoint at the overloaded symbol @code{String::after}. 9436We choose three particular definitions of that function name: 9437 9438@c FIXME! This is likely to change to show arg type lists, at least 9439@smallexample 9440@group 9441(@value{GDBP}) b String::after 9442[0] cancel 9443[1] all 9444[2] file:String.cc; line number:867 9445[3] file:String.cc; line number:860 9446[4] file:String.cc; line number:875 9447[5] file:String.cc; line number:853 9448[6] file:String.cc; line number:846 9449[7] file:String.cc; line number:735 9450> 2 4 6 9451Breakpoint 1 at 0xb26c: file String.cc, line 867. 9452Breakpoint 2 at 0xb344: file String.cc, line 875. 9453Breakpoint 3 at 0xafcc: file String.cc, line 846. 9454Multiple breakpoints were set. 9455Use the "delete" command to delete unwanted 9456 breakpoints. 9457(@value{GDBP}) 9458@end group 9459@end smallexample 9460 9461@table @code 9462@kindex set multiple-symbols 9463@item set multiple-symbols @var{mode} 9464@cindex multiple-symbols menu 9465 9466This option allows you to adjust the debugger behavior when an expression 9467is ambiguous. 9468 9469By default, @var{mode} is set to @code{all}. If the command with which 9470the expression is used allows more than one choice, then @value{GDBN} 9471automatically selects all possible choices. For instance, inserting 9472a breakpoint on a function using an ambiguous name results in a breakpoint 9473inserted on each possible match. However, if a unique choice must be made, 9474then @value{GDBN} uses the menu to help you disambiguate the expression. 9475For instance, printing the address of an overloaded function will result 9476in the use of the menu. 9477 9478When @var{mode} is set to @code{ask}, the debugger always uses the menu 9479when an ambiguity is detected. 9480 9481Finally, when @var{mode} is set to @code{cancel}, the debugger reports 9482an error due to the ambiguity and the command is aborted. 9483 9484@kindex show multiple-symbols 9485@item show multiple-symbols 9486Show the current value of the @code{multiple-symbols} setting. 9487@end table 9488 9489@node Variables 9490@section Program Variables 9491 9492The most common kind of expression to use is the name of a variable 9493in your program. 9494 9495Variables in expressions are understood in the selected stack frame 9496(@pxref{Selection, ,Selecting a Frame}); they must be either: 9497 9498@itemize @bullet 9499@item 9500global (or file-static) 9501@end itemize 9502 9503@noindent or 9504 9505@itemize @bullet 9506@item 9507visible according to the scope rules of the 9508programming language from the point of execution in that frame 9509@end itemize 9510 9511@noindent This means that in the function 9512 9513@smallexample 9514foo (a) 9515 int a; 9516@{ 9517 bar (a); 9518 @{ 9519 int b = test (); 9520 bar (b); 9521 @} 9522@} 9523@end smallexample 9524 9525@noindent 9526you can examine and use the variable @code{a} whenever your program is 9527executing within the function @code{foo}, but you can only use or 9528examine the variable @code{b} while your program is executing inside 9529the block where @code{b} is declared. 9530 9531@cindex variable name conflict 9532There is an exception: you can refer to a variable or function whose 9533scope is a single source file even if the current execution point is not 9534in this file. But it is possible to have more than one such variable or 9535function with the same name (in different source files). If that 9536happens, referring to that name has unpredictable effects. If you wish, 9537you can specify a static variable in a particular function or file by 9538using the colon-colon (@code{::}) notation: 9539 9540@cindex colon-colon, context for variables/functions 9541@ifnotinfo 9542@c info cannot cope with a :: index entry, but why deprive hard copy readers? 9543@cindex @code{::}, context for variables/functions 9544@end ifnotinfo 9545@smallexample 9546@var{file}::@var{variable} 9547@var{function}::@var{variable} 9548@end smallexample 9549 9550@noindent 9551Here @var{file} or @var{function} is the name of the context for the 9552static @var{variable}. In the case of file names, you can use quotes to 9553make sure @value{GDBN} parses the file name as a single word---for example, 9554to print a global value of @code{x} defined in @file{f2.c}: 9555 9556@smallexample 9557(@value{GDBP}) p 'f2.c'::x 9558@end smallexample 9559 9560The @code{::} notation is normally used for referring to 9561static variables, since you typically disambiguate uses of local variables 9562in functions by selecting the appropriate frame and using the 9563simple name of the variable. However, you may also use this notation 9564to refer to local variables in frames enclosing the selected frame: 9565 9566@smallexample 9567void 9568foo (int a) 9569@{ 9570 if (a < 10) 9571 bar (a); 9572 else 9573 process (a); /* Stop here */ 9574@} 9575 9576int 9577bar (int a) 9578@{ 9579 foo (a + 5); 9580@} 9581@end smallexample 9582 9583@noindent 9584For example, if there is a breakpoint at the commented line, 9585here is what you might see 9586when the program stops after executing the call @code{bar(0)}: 9587 9588@smallexample 9589(@value{GDBP}) p a 9590$1 = 10 9591(@value{GDBP}) p bar::a 9592$2 = 5 9593(@value{GDBP}) up 2 9594#2 0x080483d0 in foo (a=5) at foobar.c:12 9595(@value{GDBP}) p a 9596$3 = 5 9597(@value{GDBP}) p bar::a 9598$4 = 0 9599@end smallexample 9600 9601@cindex C@t{++} scope resolution 9602These uses of @samp{::} are very rarely in conflict with the very 9603similar use of the same notation in C@t{++}. When they are in 9604conflict, the C@t{++} meaning takes precedence; however, this can be 9605overridden by quoting the file or function name with single quotes. 9606 9607For example, suppose the program is stopped in a method of a class 9608that has a field named @code{includefile}, and there is also an 9609include file named @file{includefile} that defines a variable, 9610@code{some_global}. 9611 9612@smallexample 9613(@value{GDBP}) p includefile 9614$1 = 23 9615(@value{GDBP}) p includefile::some_global 9616A syntax error in expression, near `'. 9617(@value{GDBP}) p 'includefile'::some_global 9618$2 = 27 9619@end smallexample 9620 9621@cindex wrong values 9622@cindex variable values, wrong 9623@cindex function entry/exit, wrong values of variables 9624@cindex optimized code, wrong values of variables 9625@quotation 9626@emph{Warning:} Occasionally, a local variable may appear to have the 9627wrong value at certain points in a function---just after entry to a new 9628scope, and just before exit. 9629@end quotation 9630You may see this problem when you are stepping by machine instructions. 9631This is because, on most machines, it takes more than one instruction to 9632set up a stack frame (including local variable definitions); if you are 9633stepping by machine instructions, variables may appear to have the wrong 9634values until the stack frame is completely built. On exit, it usually 9635also takes more than one machine instruction to destroy a stack frame; 9636after you begin stepping through that group of instructions, local 9637variable definitions may be gone. 9638 9639This may also happen when the compiler does significant optimizations. 9640To be sure of always seeing accurate values, turn off all optimization 9641when compiling. 9642 9643@cindex ``No symbol "foo" in current context'' 9644Another possible effect of compiler optimizations is to optimize 9645unused variables out of existence, or assign variables to registers (as 9646opposed to memory addresses). Depending on the support for such cases 9647offered by the debug info format used by the compiler, @value{GDBN} 9648might not be able to display values for such local variables. If that 9649happens, @value{GDBN} will print a message like this: 9650 9651@smallexample 9652No symbol "foo" in current context. 9653@end smallexample 9654 9655To solve such problems, either recompile without optimizations, or use a 9656different debug info format, if the compiler supports several such 9657formats. @xref{Compilation}, for more information on choosing compiler 9658options. @xref{C, ,C and C@t{++}}, for more information about debug 9659info formats that are best suited to C@t{++} programs. 9660 9661If you ask to print an object whose contents are unknown to 9662@value{GDBN}, e.g., because its data type is not completely specified 9663by the debug information, @value{GDBN} will say @samp{<incomplete 9664type>}. @xref{Symbols, incomplete type}, for more about this. 9665 9666@cindex no debug info variables 9667If you try to examine or use the value of a (global) variable for 9668which @value{GDBN} has no type information, e.g., because the program 9669includes no debug information, @value{GDBN} displays an error message. 9670@xref{Symbols, unknown type}, for more about unknown types. If you 9671cast the variable to its declared type, @value{GDBN} gets the 9672variable's value using the cast-to type as the variable's type. For 9673example, in a C program: 9674 9675@smallexample 9676 (@value{GDBP}) p var 9677 'var' has unknown type; cast it to its declared type 9678 (@value{GDBP}) p (float) var 9679 $1 = 3.14 9680@end smallexample 9681 9682If you append @kbd{@@entry} string to a function parameter name you get its 9683value at the time the function got called. If the value is not available an 9684error message is printed. Entry values are available only with some compilers. 9685Entry values are normally also printed at the function parameter list according 9686to @ref{set print entry-values}. 9687 9688@smallexample 9689Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29 969029 i++; 9691(gdb) next 969230 e (i); 9693(gdb) print i 9694$1 = 31 9695(gdb) print i@@entry 9696$2 = 30 9697@end smallexample 9698 9699Strings are identified as arrays of @code{char} values without specified 9700signedness. Arrays of either @code{signed char} or @code{unsigned char} get 9701printed as arrays of 1 byte sized integers. @code{-fsigned-char} or 9702@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN} 9703defines literal string type @code{"char"} as @code{char} without a sign. 9704For program code 9705 9706@smallexample 9707char var0[] = "A"; 9708signed char var1[] = "A"; 9709@end smallexample 9710 9711You get during debugging 9712@smallexample 9713(gdb) print var0 9714$1 = "A" 9715(gdb) print var1 9716$2 = @{65 'A', 0 '\0'@} 9717@end smallexample 9718 9719@node Arrays 9720@section Artificial Arrays 9721 9722@cindex artificial array 9723@cindex arrays 9724@kindex @@@r{, referencing memory as an array} 9725It is often useful to print out several successive objects of the 9726same type in memory; a section of an array, or an array of 9727dynamically determined size for which only a pointer exists in the 9728program. 9729 9730You can do this by referring to a contiguous span of memory as an 9731@dfn{artificial array}, using the binary operator @samp{@@}. The left 9732operand of @samp{@@} should be the first element of the desired array 9733and be an individual object. The right operand should be the desired length 9734of the array. The result is an array value whose elements are all of 9735the type of the left argument. The first element is actually the left 9736argument; the second element comes from bytes of memory immediately 9737following those that hold the first element, and so on. Here is an 9738example. If a program says 9739 9740@smallexample 9741int *array = (int *) malloc (len * sizeof (int)); 9742@end smallexample 9743 9744@noindent 9745you can print the contents of @code{array} with 9746 9747@smallexample 9748p *array@@len 9749@end smallexample 9750 9751The left operand of @samp{@@} must reside in memory. Array values made 9752with @samp{@@} in this way behave just like other arrays in terms of 9753subscripting, and are coerced to pointers when used in expressions. 9754Artificial arrays most often appear in expressions via the value history 9755(@pxref{Value History, ,Value History}), after printing one out. 9756 9757Another way to create an artificial array is to use a cast. 9758This re-interprets a value as if it were an array. 9759The value need not be in memory: 9760@smallexample 9761(@value{GDBP}) p/x (short[2])0x12345678 9762$1 = @{0x1234, 0x5678@} 9763@end smallexample 9764 9765As a convenience, if you leave the array length out (as in 9766@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill 9767the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}: 9768@smallexample 9769(@value{GDBP}) p/x (short[])0x12345678 9770$2 = @{0x1234, 0x5678@} 9771@end smallexample 9772 9773Sometimes the artificial array mechanism is not quite enough; in 9774moderately complex data structures, the elements of interest may not 9775actually be adjacent---for example, if you are interested in the values 9776of pointers in an array. One useful work-around in this situation is 9777to use a convenience variable (@pxref{Convenience Vars, ,Convenience 9778Variables}) as a counter in an expression that prints the first 9779interesting value, and then repeat that expression via @key{RET}. For 9780instance, suppose you have an array @code{dtab} of pointers to 9781structures, and you are interested in the values of a field @code{fv} 9782in each structure. Here is an example of what you might type: 9783 9784@smallexample 9785set $i = 0 9786p dtab[$i++]->fv 9787@key{RET} 9788@key{RET} 9789@dots{} 9790@end smallexample 9791 9792@node Output Formats 9793@section Output Formats 9794 9795@cindex formatted output 9796@cindex output formats 9797By default, @value{GDBN} prints a value according to its data type. Sometimes 9798this is not what you want. For example, you might want to print a number 9799in hex, or a pointer in decimal. Or you might want to view data in memory 9800at a certain address as a character string or as an instruction. To do 9801these things, specify an @dfn{output format} when you print a value. 9802 9803The simplest use of output formats is to say how to print a value 9804already computed. This is done by starting the arguments of the 9805@code{print} command with a slash and a format letter. The format 9806letters supported are: 9807 9808@table @code 9809@item x 9810Regard the bits of the value as an integer, and print the integer in 9811hexadecimal. 9812 9813@item d 9814Print as integer in signed decimal. 9815 9816@item u 9817Print as integer in unsigned decimal. 9818 9819@item o 9820Print as integer in octal. 9821 9822@item t 9823Print as integer in binary. The letter @samp{t} stands for ``two''. 9824@footnote{@samp{b} cannot be used because these format letters are also 9825used with the @code{x} command, where @samp{b} stands for ``byte''; 9826see @ref{Memory,,Examining Memory}.} 9827 9828@item a 9829@cindex unknown address, locating 9830@cindex locate address 9831Print as an address, both absolute in hexadecimal and as an offset from 9832the nearest preceding symbol. You can use this format used to discover 9833where (in what function) an unknown address is located: 9834 9835@smallexample 9836(@value{GDBP}) p/a 0x54320 9837$3 = 0x54320 <_initialize_vx+396> 9838@end smallexample 9839 9840@noindent 9841The command @code{info symbol 0x54320} yields similar results. 9842@xref{Symbols, info symbol}. 9843 9844@item c 9845Regard as an integer and print it as a character constant. This 9846prints both the numerical value and its character representation. The 9847character representation is replaced with the octal escape @samp{\nnn} 9848for characters outside the 7-bit @sc{ascii} range. 9849 9850Without this format, @value{GDBN} displays @code{char}, 9851@w{@code{unsigned char}}, and @w{@code{signed char}} data as character 9852constants. Single-byte members of vectors are displayed as integer 9853data. 9854 9855@item f 9856Regard the bits of the value as a floating point number and print 9857using typical floating point syntax. 9858 9859@item s 9860@cindex printing strings 9861@cindex printing byte arrays 9862Regard as a string, if possible. With this format, pointers to single-byte 9863data are displayed as null-terminated strings and arrays of single-byte data 9864are displayed as fixed-length strings. Other values are displayed in their 9865natural types. 9866 9867Without this format, @value{GDBN} displays pointers to and arrays of 9868@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as 9869strings. Single-byte members of a vector are displayed as an integer 9870array. 9871 9872@item z 9873Like @samp{x} formatting, the value is treated as an integer and 9874printed as hexadecimal, but leading zeros are printed to pad the value 9875to the size of the integer type. 9876 9877@item r 9878@cindex raw printing 9879Print using the @samp{raw} formatting. By default, @value{GDBN} will 9880use a Python-based pretty-printer, if one is available (@pxref{Pretty 9881Printing}). This typically results in a higher-level display of the 9882value's contents. The @samp{r} format bypasses any Python 9883pretty-printer which might exist. 9884@end table 9885 9886For example, to print the program counter in hex (@pxref{Registers}), type 9887 9888@smallexample 9889p/x $pc 9890@end smallexample 9891 9892@noindent 9893Note that no space is required before the slash; this is because command 9894names in @value{GDBN} cannot contain a slash. 9895 9896To reprint the last value in the value history with a different format, 9897you can use the @code{print} command with just a format and no 9898expression. For example, @samp{p/x} reprints the last value in hex. 9899 9900@node Memory 9901@section Examining Memory 9902 9903You can use the command @code{x} (for ``examine'') to examine memory in 9904any of several formats, independently of your program's data types. 9905 9906@cindex examining memory 9907@table @code 9908@kindex x @r{(examine memory)} 9909@item x/@var{nfu} @var{addr} 9910@itemx x @var{addr} 9911@itemx x 9912Use the @code{x} command to examine memory. 9913@end table 9914 9915@var{n}, @var{f}, and @var{u} are all optional parameters that specify how 9916much memory to display and how to format it; @var{addr} is an 9917expression giving the address where you want to start displaying memory. 9918If you use defaults for @var{nfu}, you need not type the slash @samp{/}. 9919Several commands set convenient defaults for @var{addr}. 9920 9921@table @r 9922@item @var{n}, the repeat count 9923The repeat count is a decimal integer; the default is 1. It specifies 9924how much memory (counting by units @var{u}) to display. If a negative 9925number is specified, memory is examined backward from @var{addr}. 9926@c This really is **decimal**; unaffected by 'set radix' as of GDB 9927@c 4.1.2. 9928 9929@item @var{f}, the display format 9930The display format is one of the formats used by @code{print} 9931(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c}, 9932@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions). 9933The default is @samp{x} (hexadecimal) initially. The default changes 9934each time you use either @code{x} or @code{print}. 9935 9936@item @var{u}, the unit size 9937The unit size is any of 9938 9939@table @code 9940@item b 9941Bytes. 9942@item h 9943Halfwords (two bytes). 9944@item w 9945Words (four bytes). This is the initial default. 9946@item g 9947Giant words (eight bytes). 9948@end table 9949 9950Each time you specify a unit size with @code{x}, that size becomes the 9951default unit the next time you use @code{x}. For the @samp{i} format, 9952the unit size is ignored and is normally not written. For the @samp{s} format, 9953the unit size defaults to @samp{b}, unless it is explicitly given. 9954Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display 995532-bit strings. The next use of @kbd{x /s} will again display 8-bit strings. 9956Note that the results depend on the programming language of the 9957current compilation unit. If the language is C, the @samp{s} 9958modifier will use the UTF-16 encoding while @samp{w} will use 9959UTF-32. The encoding is set by the programming language and cannot 9960be altered. 9961 9962@item @var{addr}, starting display address 9963@var{addr} is the address where you want @value{GDBN} to begin displaying 9964memory. The expression need not have a pointer value (though it may); 9965it is always interpreted as an integer address of a byte of memory. 9966@xref{Expressions, ,Expressions}, for more information on expressions. The default for 9967@var{addr} is usually just after the last address examined---but several 9968other commands also set the default address: @code{info breakpoints} (to 9969the address of the last breakpoint listed), @code{info line} (to the 9970starting address of a line), and @code{print} (if you use it to display 9971a value from memory). 9972@end table 9973 9974For example, @samp{x/3uh 0x54320} is a request to display three halfwords 9975(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}), 9976starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four 9977words (@samp{w}) of memory above the stack pointer (here, @samp{$sp}; 9978@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}). 9979 9980You can also specify a negative repeat count to examine memory backward 9981from the given address. For example, @samp{x/-3uh 0x54320} prints three 9982halfwords (@code{h}) at @code{0x54314}, @code{0x54328}, and @code{0x5431c}. 9983 9984Since the letters indicating unit sizes are all distinct from the 9985letters specifying output formats, you do not have to remember whether 9986unit size or format comes first; either order works. The output 9987specifications @samp{4xw} and @samp{4wx} mean exactly the same thing. 9988(However, the count @var{n} must come first; @samp{wx4} does not work.) 9989 9990Even though the unit size @var{u} is ignored for the formats @samp{s} 9991and @samp{i}, you might still want to use a count @var{n}; for example, 9992@samp{3i} specifies that you want to see three machine instructions, 9993including any operands. For convenience, especially when used with 9994the @code{display} command, the @samp{i} format also prints branch delay 9995slot instructions, if any, beyond the count specified, which immediately 9996follow the last instruction that is within the count. The command 9997@code{disassemble} gives an alternative way of inspecting machine 9998instructions; see @ref{Machine Code,,Source and Machine Code}. 9999 10000If a negative repeat count is specified for the formats @samp{s} or @samp{i}, 10001the command displays null-terminated strings or instructions before the given 10002address as many as the absolute value of the given number. For the @samp{i} 10003format, we use line number information in the debug info to accurately locate 10004instruction boundaries while disassembling backward. If line info is not 10005available, the command stops examining memory with an error message. 10006 10007All the defaults for the arguments to @code{x} are designed to make it 10008easy to continue scanning memory with minimal specifications each time 10009you use @code{x}. For example, after you have inspected three machine 10010instructions with @samp{x/3i @var{addr}}, you can inspect the next seven 10011with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command, 10012the repeat count @var{n} is used again; the other arguments default as 10013for successive uses of @code{x}. 10014 10015When examining machine instructions, the instruction at current program 10016counter is shown with a @code{=>} marker. For example: 10017 10018@smallexample 10019(@value{GDBP}) x/5i $pc-6 10020 0x804837f <main+11>: mov %esp,%ebp 10021 0x8048381 <main+13>: push %ecx 10022 0x8048382 <main+14>: sub $0x4,%esp 10023=> 0x8048385 <main+17>: movl $0x8048460,(%esp) 10024 0x804838c <main+24>: call 0x80482d4 <puts@@plt> 10025@end smallexample 10026 10027@cindex @code{$_}, @code{$__}, and value history 10028The addresses and contents printed by the @code{x} command are not saved 10029in the value history because there is often too much of them and they 10030would get in the way. Instead, @value{GDBN} makes these values available for 10031subsequent use in expressions as values of the convenience variables 10032@code{$_} and @code{$__}. After an @code{x} command, the last address 10033examined is available for use in expressions in the convenience variable 10034@code{$_}. The contents of that address, as examined, are available in 10035the convenience variable @code{$__}. 10036 10037If the @code{x} command has a repeat count, the address and contents saved 10038are from the last memory unit printed; this is not the same as the last 10039address printed if several units were printed on the last line of output. 10040 10041@anchor{addressable memory unit} 10042@cindex addressable memory unit 10043Most targets have an addressable memory unit size of 8 bits. This means 10044that to each memory address are associated 8 bits of data. Some 10045targets, however, have other addressable memory unit sizes. 10046Within @value{GDBN} and this document, the term 10047@dfn{addressable memory unit} (or @dfn{memory unit} for short) is used 10048when explicitly referring to a chunk of data of that size. The word 10049@dfn{byte} is used to refer to a chunk of data of 8 bits, regardless of 10050the addressable memory unit size of the target. For most systems, 10051addressable memory unit is a synonym of byte. 10052 10053@cindex remote memory comparison 10054@cindex target memory comparison 10055@cindex verify remote memory image 10056@cindex verify target memory image 10057When you are debugging a program running on a remote target machine 10058(@pxref{Remote Debugging}), you may wish to verify the program's image 10059in the remote machine's memory against the executable file you 10060downloaded to the target. Or, on any target, you may want to check 10061whether the program has corrupted its own read-only sections. The 10062@code{compare-sections} command is provided for such situations. 10063 10064@table @code 10065@kindex compare-sections 10066@item compare-sections @r{[}@var{section-name}@r{|}@code{-r}@r{]} 10067Compare the data of a loadable section @var{section-name} in the 10068executable file of the program being debugged with the same section in 10069the target machine's memory, and report any mismatches. With no 10070arguments, compares all loadable sections. With an argument of 10071@code{-r}, compares all loadable read-only sections. 10072 10073Note: for remote targets, this command can be accelerated if the 10074target supports computing the CRC checksum of a block of memory 10075(@pxref{qCRC packet}). 10076@end table 10077 10078@node Auto Display 10079@section Automatic Display 10080@cindex automatic display 10081@cindex display of expressions 10082 10083If you find that you want to print the value of an expression frequently 10084(to see how it changes), you might want to add it to the @dfn{automatic 10085display list} so that @value{GDBN} prints its value each time your program stops. 10086Each expression added to the list is given a number to identify it; 10087to remove an expression from the list, you specify that number. 10088The automatic display looks like this: 10089 10090@smallexample 100912: foo = 38 100923: bar[5] = (struct hack *) 0x3804 10093@end smallexample 10094 10095@noindent 10096This display shows item numbers, expressions and their current values. As with 10097displays you request manually using @code{x} or @code{print}, you can 10098specify the output format you prefer; in fact, @code{display} decides 10099whether to use @code{print} or @code{x} depending your format 10100specification---it uses @code{x} if you specify either the @samp{i} 10101or @samp{s} format, or a unit size; otherwise it uses @code{print}. 10102 10103@table @code 10104@kindex display 10105@item display @var{expr} 10106Add the expression @var{expr} to the list of expressions to display 10107each time your program stops. @xref{Expressions, ,Expressions}. 10108 10109@code{display} does not repeat if you press @key{RET} again after using it. 10110 10111@item display/@var{fmt} @var{expr} 10112For @var{fmt} specifying only a display format and not a size or 10113count, add the expression @var{expr} to the auto-display list but 10114arrange to display it each time in the specified format @var{fmt}. 10115@xref{Output Formats,,Output Formats}. 10116 10117@item display/@var{fmt} @var{addr} 10118For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a 10119number of units, add the expression @var{addr} as a memory address to 10120be examined each time your program stops. Examining means in effect 10121doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}. 10122@end table 10123 10124For example, @samp{display/i $pc} can be helpful, to see the machine 10125instruction about to be executed each time execution stops (@samp{$pc} 10126is a common name for the program counter; @pxref{Registers, ,Registers}). 10127 10128@table @code 10129@kindex delete display 10130@kindex undisplay 10131@item undisplay @var{dnums}@dots{} 10132@itemx delete display @var{dnums}@dots{} 10133Remove items from the list of expressions to display. Specify the 10134numbers of the displays that you want affected with the command 10135argument @var{dnums}. It can be a single display number, one of the 10136numbers shown in the first field of the @samp{info display} display; 10137or it could be a range of display numbers, as in @code{2-4}. 10138 10139@code{undisplay} does not repeat if you press @key{RET} after using it. 10140(Otherwise you would just get the error @samp{No display number @dots{}}.) 10141 10142@kindex disable display 10143@item disable display @var{dnums}@dots{} 10144Disable the display of item numbers @var{dnums}. A disabled display 10145item is not printed automatically, but is not forgotten. It may be 10146enabled again later. Specify the numbers of the displays that you 10147want affected with the command argument @var{dnums}. It can be a 10148single display number, one of the numbers shown in the first field of 10149the @samp{info display} display; or it could be a range of display 10150numbers, as in @code{2-4}. 10151 10152@kindex enable display 10153@item enable display @var{dnums}@dots{} 10154Enable display of item numbers @var{dnums}. It becomes effective once 10155again in auto display of its expression, until you specify otherwise. 10156Specify the numbers of the displays that you want affected with the 10157command argument @var{dnums}. It can be a single display number, one 10158of the numbers shown in the first field of the @samp{info display} 10159display; or it could be a range of display numbers, as in @code{2-4}. 10160 10161@item display 10162Display the current values of the expressions on the list, just as is 10163done when your program stops. 10164 10165@kindex info display 10166@item info display 10167Print the list of expressions previously set up to display 10168automatically, each one with its item number, but without showing the 10169values. This includes disabled expressions, which are marked as such. 10170It also includes expressions which would not be displayed right now 10171because they refer to automatic variables not currently available. 10172@end table 10173 10174@cindex display disabled out of scope 10175If a display expression refers to local variables, then it does not make 10176sense outside the lexical context for which it was set up. Such an 10177expression is disabled when execution enters a context where one of its 10178variables is not defined. For example, if you give the command 10179@code{display last_char} while inside a function with an argument 10180@code{last_char}, @value{GDBN} displays this argument while your program 10181continues to stop inside that function. When it stops elsewhere---where 10182there is no variable @code{last_char}---the display is disabled 10183automatically. The next time your program stops where @code{last_char} 10184is meaningful, you can enable the display expression once again. 10185 10186@node Print Settings 10187@section Print Settings 10188 10189@cindex format options 10190@cindex print settings 10191@value{GDBN} provides the following ways to control how arrays, structures, 10192and symbols are printed. 10193 10194@noindent 10195These settings are useful for debugging programs in any language: 10196 10197@table @code 10198@kindex set print 10199@item set print address 10200@itemx set print address on 10201@cindex print/don't print memory addresses 10202@value{GDBN} prints memory addresses showing the location of stack 10203traces, structure values, pointer values, breakpoints, and so forth, 10204even when it also displays the contents of those addresses. The default 10205is @code{on}. For example, this is what a stack frame display looks like with 10206@code{set print address on}: 10207 10208@smallexample 10209@group 10210(@value{GDBP}) f 10211#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") 10212 at input.c:530 10213530 if (lquote != def_lquote) 10214@end group 10215@end smallexample 10216 10217@item set print address off 10218Do not print addresses when displaying their contents. For example, 10219this is the same stack frame displayed with @code{set print address off}: 10220 10221@smallexample 10222@group 10223(@value{GDBP}) set print addr off 10224(@value{GDBP}) f 10225#0 set_quotes (lq="<<", rq=">>") at input.c:530 10226530 if (lquote != def_lquote) 10227@end group 10228@end smallexample 10229 10230You can use @samp{set print address off} to eliminate all machine 10231dependent displays from the @value{GDBN} interface. For example, with 10232@code{print address off}, you should get the same text for backtraces on 10233all machines---whether or not they involve pointer arguments. 10234 10235@kindex show print 10236@item show print address 10237Show whether or not addresses are to be printed. 10238@end table 10239 10240When @value{GDBN} prints a symbolic address, it normally prints the 10241closest earlier symbol plus an offset. If that symbol does not uniquely 10242identify the address (for example, it is a name whose scope is a single 10243source file), you may need to clarify. One way to do this is with 10244@code{info line}, for example @samp{info line *0x4537}. Alternately, 10245you can set @value{GDBN} to print the source file and line number when 10246it prints a symbolic address: 10247 10248@table @code 10249@item set print symbol-filename on 10250@cindex source file and line of a symbol 10251@cindex symbol, source file and line 10252Tell @value{GDBN} to print the source file name and line number of a 10253symbol in the symbolic form of an address. 10254 10255@item set print symbol-filename off 10256Do not print source file name and line number of a symbol. This is the 10257default. 10258 10259@item show print symbol-filename 10260Show whether or not @value{GDBN} will print the source file name and 10261line number of a symbol in the symbolic form of an address. 10262@end table 10263 10264Another situation where it is helpful to show symbol filenames and line 10265numbers is when disassembling code; @value{GDBN} shows you the line 10266number and source file that corresponds to each instruction. 10267 10268Also, you may wish to see the symbolic form only if the address being 10269printed is reasonably close to the closest earlier symbol: 10270 10271@table @code 10272@item set print max-symbolic-offset @var{max-offset} 10273@itemx set print max-symbolic-offset unlimited 10274@cindex maximum value for offset of closest symbol 10275Tell @value{GDBN} to only display the symbolic form of an address if the 10276offset between the closest earlier symbol and the address is less than 10277@var{max-offset}. The default is @code{unlimited}, which tells @value{GDBN} 10278to always print the symbolic form of an address if any symbol precedes 10279it. Zero is equivalent to @code{unlimited}. 10280 10281@item show print max-symbolic-offset 10282Ask how large the maximum offset is that @value{GDBN} prints in a 10283symbolic address. 10284@end table 10285 10286@cindex wild pointer, interpreting 10287@cindex pointer, finding referent 10288If you have a pointer and you are not sure where it points, try 10289@samp{set print symbol-filename on}. Then you can determine the name 10290and source file location of the variable where it points, using 10291@samp{p/a @var{pointer}}. This interprets the address in symbolic form. 10292For example, here @value{GDBN} shows that a variable @code{ptt} points 10293at another variable @code{t}, defined in @file{hi2.c}: 10294 10295@smallexample 10296(@value{GDBP}) set print symbol-filename on 10297(@value{GDBP}) p/a ptt 10298$4 = 0xe008 <t in hi2.c> 10299@end smallexample 10300 10301@quotation 10302@emph{Warning:} For pointers that point to a local variable, @samp{p/a} 10303does not show the symbol name and filename of the referent, even with 10304the appropriate @code{set print} options turned on. 10305@end quotation 10306 10307You can also enable @samp{/a}-like formatting all the time using 10308@samp{set print symbol on}: 10309 10310@table @code 10311@item set print symbol on 10312Tell @value{GDBN} to print the symbol corresponding to an address, if 10313one exists. 10314 10315@item set print symbol off 10316Tell @value{GDBN} not to print the symbol corresponding to an 10317address. In this mode, @value{GDBN} will still print the symbol 10318corresponding to pointers to functions. This is the default. 10319 10320@item show print symbol 10321Show whether @value{GDBN} will display the symbol corresponding to an 10322address. 10323@end table 10324 10325Other settings control how different kinds of objects are printed: 10326 10327@table @code 10328@item set print array 10329@itemx set print array on 10330@cindex pretty print arrays 10331Pretty print arrays. This format is more convenient to read, 10332but uses more space. The default is off. 10333 10334@item set print array off 10335Return to compressed format for arrays. 10336 10337@item show print array 10338Show whether compressed or pretty format is selected for displaying 10339arrays. 10340 10341@cindex print array indexes 10342@item set print array-indexes 10343@itemx set print array-indexes on 10344Print the index of each element when displaying arrays. May be more 10345convenient to locate a given element in the array or quickly find the 10346index of a given element in that printed array. The default is off. 10347 10348@item set print array-indexes off 10349Stop printing element indexes when displaying arrays. 10350 10351@item show print array-indexes 10352Show whether the index of each element is printed when displaying 10353arrays. 10354 10355@item set print elements @var{number-of-elements} 10356@itemx set print elements unlimited 10357@cindex number of array elements to print 10358@cindex limit on number of printed array elements 10359Set a limit on how many elements of an array @value{GDBN} will print. 10360If @value{GDBN} is printing a large array, it stops printing after it has 10361printed the number of elements set by the @code{set print elements} command. 10362This limit also applies to the display of strings. 10363When @value{GDBN} starts, this limit is set to 200. 10364Setting @var{number-of-elements} to @code{unlimited} or zero means 10365that the number of elements to print is unlimited. 10366 10367@item show print elements 10368Display the number of elements of a large array that @value{GDBN} will print. 10369If the number is 0, then the printing is unlimited. 10370 10371@item set print frame-arguments @var{value} 10372@kindex set print frame-arguments 10373@cindex printing frame argument values 10374@cindex print all frame argument values 10375@cindex print frame argument values for scalars only 10376@cindex do not print frame argument values 10377This command allows to control how the values of arguments are printed 10378when the debugger prints a frame (@pxref{Frames}). The possible 10379values are: 10380 10381@table @code 10382@item all 10383The values of all arguments are printed. 10384 10385@item scalars 10386Print the value of an argument only if it is a scalar. The value of more 10387complex arguments such as arrays, structures, unions, etc, is replaced 10388by @code{@dots{}}. This is the default. Here is an example where 10389only scalar arguments are shown: 10390 10391@smallexample 10392#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green) 10393 at frame-args.c:23 10394@end smallexample 10395 10396@item none 10397None of the argument values are printed. Instead, the value of each argument 10398is replaced by @code{@dots{}}. In this case, the example above now becomes: 10399 10400@smallexample 10401#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{}) 10402 at frame-args.c:23 10403@end smallexample 10404@end table 10405 10406By default, only scalar arguments are printed. This command can be used 10407to configure the debugger to print the value of all arguments, regardless 10408of their type. However, it is often advantageous to not print the value 10409of more complex parameters. For instance, it reduces the amount of 10410information printed in each frame, making the backtrace more readable. 10411Also, it improves performance when displaying Ada frames, because 10412the computation of large arguments can sometimes be CPU-intensive, 10413especially in large applications. Setting @code{print frame-arguments} 10414to @code{scalars} (the default) or @code{none} avoids this computation, 10415thus speeding up the display of each Ada frame. 10416 10417@item show print frame-arguments 10418Show how the value of arguments should be displayed when printing a frame. 10419 10420@item set print raw frame-arguments on 10421Print frame arguments in raw, non pretty-printed, form. 10422 10423@item set print raw frame-arguments off 10424Print frame arguments in pretty-printed form, if there is a pretty-printer 10425for the value (@pxref{Pretty Printing}), 10426otherwise print the value in raw form. 10427This is the default. 10428 10429@item show print raw frame-arguments 10430Show whether to print frame arguments in raw form. 10431 10432@anchor{set print entry-values} 10433@item set print entry-values @var{value} 10434@kindex set print entry-values 10435Set printing of frame argument values at function entry. In some cases 10436@value{GDBN} can determine the value of function argument which was passed by 10437the function caller, even if the value was modified inside the called function 10438and therefore is different. With optimized code, the current value could be 10439unavailable, but the entry value may still be known. 10440 10441The default value is @code{default} (see below for its description). Older 10442@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting 10443this feature will behave in the @code{default} setting the same way as with the 10444@code{no} setting. 10445 10446This functionality is currently supported only by DWARF 2 debugging format and 10447the compiler has to produce @samp{DW_TAG_call_site} tags. With 10448@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 10449this information. 10450 10451The @var{value} parameter can be one of the following: 10452 10453@table @code 10454@item no 10455Print only actual parameter values, never print values from function entry 10456point. 10457@smallexample 10458#0 equal (val=5) 10459#0 different (val=6) 10460#0 lost (val=<optimized out>) 10461#0 born (val=10) 10462#0 invalid (val=<optimized out>) 10463@end smallexample 10464 10465@item only 10466Print only parameter values from function entry point. The actual parameter 10467values are never printed. 10468@smallexample 10469#0 equal (val@@entry=5) 10470#0 different (val@@entry=5) 10471#0 lost (val@@entry=5) 10472#0 born (val@@entry=<optimized out>) 10473#0 invalid (val@@entry=<optimized out>) 10474@end smallexample 10475 10476@item preferred 10477Print only parameter values from function entry point. If value from function 10478entry point is not known while the actual value is known, print the actual 10479value for such parameter. 10480@smallexample 10481#0 equal (val@@entry=5) 10482#0 different (val@@entry=5) 10483#0 lost (val@@entry=5) 10484#0 born (val=10) 10485#0 invalid (val@@entry=<optimized out>) 10486@end smallexample 10487 10488@item if-needed 10489Print actual parameter values. If actual parameter value is not known while 10490value from function entry point is known, print the entry point value for such 10491parameter. 10492@smallexample 10493#0 equal (val=5) 10494#0 different (val=6) 10495#0 lost (val@@entry=5) 10496#0 born (val=10) 10497#0 invalid (val=<optimized out>) 10498@end smallexample 10499 10500@item both 10501Always print both the actual parameter value and its value from function entry 10502point, even if values of one or both are not available due to compiler 10503optimizations. 10504@smallexample 10505#0 equal (val=5, val@@entry=5) 10506#0 different (val=6, val@@entry=5) 10507#0 lost (val=<optimized out>, val@@entry=5) 10508#0 born (val=10, val@@entry=<optimized out>) 10509#0 invalid (val=<optimized out>, val@@entry=<optimized out>) 10510@end smallexample 10511 10512@item compact 10513Print the actual parameter value if it is known and also its value from 10514function entry point if it is known. If neither is known, print for the actual 10515value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both 10516values are known and identical, print the shortened 10517@code{param=param@@entry=VALUE} notation. 10518@smallexample 10519#0 equal (val=val@@entry=5) 10520#0 different (val=6, val@@entry=5) 10521#0 lost (val@@entry=5) 10522#0 born (val=10) 10523#0 invalid (val=<optimized out>) 10524@end smallexample 10525 10526@item default 10527Always print the actual parameter value. Print also its value from function 10528entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and 10529if both values are known and identical, print the shortened 10530@code{param=param@@entry=VALUE} notation. 10531@smallexample 10532#0 equal (val=val@@entry=5) 10533#0 different (val=6, val@@entry=5) 10534#0 lost (val=<optimized out>, val@@entry=5) 10535#0 born (val=10) 10536#0 invalid (val=<optimized out>) 10537@end smallexample 10538@end table 10539 10540For analysis messages on possible failures of frame argument values at function 10541entry resolution see @ref{set debug entry-values}. 10542 10543@item show print entry-values 10544Show the method being used for printing of frame argument values at function 10545entry. 10546 10547@item set print repeats @var{number-of-repeats} 10548@itemx set print repeats unlimited 10549@cindex repeated array elements 10550Set the threshold for suppressing display of repeated array 10551elements. When the number of consecutive identical elements of an 10552array exceeds the threshold, @value{GDBN} prints the string 10553@code{"<repeats @var{n} times>"}, where @var{n} is the number of 10554identical repetitions, instead of displaying the identical elements 10555themselves. Setting the threshold to @code{unlimited} or zero will 10556cause all elements to be individually printed. The default threshold 10557is 10. 10558 10559@item show print repeats 10560Display the current threshold for printing repeated identical 10561elements. 10562 10563@item set print null-stop 10564@cindex @sc{null} elements in arrays 10565Cause @value{GDBN} to stop printing the characters of an array when the first 10566@sc{null} is encountered. This is useful when large arrays actually 10567contain only short strings. 10568The default is off. 10569 10570@item show print null-stop 10571Show whether @value{GDBN} stops printing an array on the first 10572@sc{null} character. 10573 10574@item set print pretty on 10575@cindex print structures in indented form 10576@cindex indentation in structure display 10577Cause @value{GDBN} to print structures in an indented format with one member 10578per line, like this: 10579 10580@smallexample 10581@group 10582$1 = @{ 10583 next = 0x0, 10584 flags = @{ 10585 sweet = 1, 10586 sour = 1 10587 @}, 10588 meat = 0x54 "Pork" 10589@} 10590@end group 10591@end smallexample 10592 10593@item set print pretty off 10594Cause @value{GDBN} to print structures in a compact format, like this: 10595 10596@smallexample 10597@group 10598$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \ 10599meat = 0x54 "Pork"@} 10600@end group 10601@end smallexample 10602 10603@noindent 10604This is the default format. 10605 10606@item show print pretty 10607Show which format @value{GDBN} is using to print structures. 10608 10609@item set print sevenbit-strings on 10610@cindex eight-bit characters in strings 10611@cindex octal escapes in strings 10612Print using only seven-bit characters; if this option is set, 10613@value{GDBN} displays any eight-bit characters (in strings or 10614character values) using the notation @code{\}@var{nnn}. This setting is 10615best if you are working in English (@sc{ascii}) and you use the 10616high-order bit of characters as a marker or ``meta'' bit. 10617 10618@item set print sevenbit-strings off 10619Print full eight-bit characters. This allows the use of more 10620international character sets, and is the default. 10621 10622@item show print sevenbit-strings 10623Show whether or not @value{GDBN} is printing only seven-bit characters. 10624 10625@item set print union on 10626@cindex unions in structures, printing 10627Tell @value{GDBN} to print unions which are contained in structures 10628and other unions. This is the default setting. 10629 10630@item set print union off 10631Tell @value{GDBN} not to print unions which are contained in 10632structures and other unions. @value{GDBN} will print @code{"@{...@}"} 10633instead. 10634 10635@item show print union 10636Ask @value{GDBN} whether or not it will print unions which are contained in 10637structures and other unions. 10638 10639For example, given the declarations 10640 10641@smallexample 10642typedef enum @{Tree, Bug@} Species; 10643typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms; 10644typedef enum @{Caterpillar, Cocoon, Butterfly@} 10645 Bug_forms; 10646 10647struct thing @{ 10648 Species it; 10649 union @{ 10650 Tree_forms tree; 10651 Bug_forms bug; 10652 @} form; 10653@}; 10654 10655struct thing foo = @{Tree, @{Acorn@}@}; 10656@end smallexample 10657 10658@noindent 10659with @code{set print union on} in effect @samp{p foo} would print 10660 10661@smallexample 10662$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@} 10663@end smallexample 10664 10665@noindent 10666and with @code{set print union off} in effect it would print 10667 10668@smallexample 10669$1 = @{it = Tree, form = @{...@}@} 10670@end smallexample 10671 10672@noindent 10673@code{set print union} affects programs written in C-like languages 10674and in Pascal. 10675@end table 10676 10677@need 1000 10678@noindent 10679These settings are of interest when debugging C@t{++} programs: 10680 10681@table @code 10682@cindex demangling C@t{++} names 10683@item set print demangle 10684@itemx set print demangle on 10685Print C@t{++} names in their source form rather than in the encoded 10686(``mangled'') form passed to the assembler and linker for type-safe 10687linkage. The default is on. 10688 10689@item show print demangle 10690Show whether C@t{++} names are printed in mangled or demangled form. 10691 10692@item set print asm-demangle 10693@itemx set print asm-demangle on 10694Print C@t{++} names in their source form rather than their mangled form, even 10695in assembler code printouts such as instruction disassemblies. 10696The default is off. 10697 10698@item show print asm-demangle 10699Show whether C@t{++} names in assembly listings are printed in mangled 10700or demangled form. 10701 10702@cindex C@t{++} symbol decoding style 10703@cindex symbol decoding style, C@t{++} 10704@kindex set demangle-style 10705@item set demangle-style @var{style} 10706Choose among several encoding schemes used by different compilers to represent 10707C@t{++} names. If you omit @var{style}, you will see a list of possible 10708formats. The default value is @var{auto}, which lets @value{GDBN} choose a 10709decoding style by inspecting your program. 10710 10711@item show demangle-style 10712Display the encoding style currently in use for decoding C@t{++} symbols. 10713 10714@item set print object 10715@itemx set print object on 10716@cindex derived type of an object, printing 10717@cindex display derived types 10718When displaying a pointer to an object, identify the @emph{actual} 10719(derived) type of the object rather than the @emph{declared} type, using 10720the virtual function table. Note that the virtual function table is 10721required---this feature can only work for objects that have run-time 10722type identification; a single virtual method in the object's declared 10723type is sufficient. Note that this setting is also taken into account when 10724working with variable objects via MI (@pxref{GDB/MI}). 10725 10726@item set print object off 10727Display only the declared type of objects, without reference to the 10728virtual function table. This is the default setting. 10729 10730@item show print object 10731Show whether actual, or declared, object types are displayed. 10732 10733@item set print static-members 10734@itemx set print static-members on 10735@cindex static members of C@t{++} objects 10736Print static members when displaying a C@t{++} object. The default is on. 10737 10738@item set print static-members off 10739Do not print static members when displaying a C@t{++} object. 10740 10741@item show print static-members 10742Show whether C@t{++} static members are printed or not. 10743 10744@item set print pascal_static-members 10745@itemx set print pascal_static-members on 10746@cindex static members of Pascal objects 10747@cindex Pascal objects, static members display 10748Print static members when displaying a Pascal object. The default is on. 10749 10750@item set print pascal_static-members off 10751Do not print static members when displaying a Pascal object. 10752 10753@item show print pascal_static-members 10754Show whether Pascal static members are printed or not. 10755 10756@c These don't work with HP ANSI C++ yet. 10757@item set print vtbl 10758@itemx set print vtbl on 10759@cindex pretty print C@t{++} virtual function tables 10760@cindex virtual functions (C@t{++}) display 10761@cindex VTBL display 10762Pretty print C@t{++} virtual function tables. The default is off. 10763(The @code{vtbl} commands do not work on programs compiled with the HP 10764ANSI C@t{++} compiler (@code{aCC}).) 10765 10766@item set print vtbl off 10767Do not pretty print C@t{++} virtual function tables. 10768 10769@item show print vtbl 10770Show whether C@t{++} virtual function tables are pretty printed, or not. 10771@end table 10772 10773@node Pretty Printing 10774@section Pretty Printing 10775 10776@value{GDBN} provides a mechanism to allow pretty-printing of values using 10777Python code. It greatly simplifies the display of complex objects. This 10778mechanism works for both MI and the CLI. 10779 10780@menu 10781* Pretty-Printer Introduction:: Introduction to pretty-printers 10782* Pretty-Printer Example:: An example pretty-printer 10783* Pretty-Printer Commands:: Pretty-printer commands 10784@end menu 10785 10786@node Pretty-Printer Introduction 10787@subsection Pretty-Printer Introduction 10788 10789When @value{GDBN} prints a value, it first sees if there is a pretty-printer 10790registered for the value. If there is then @value{GDBN} invokes the 10791pretty-printer to print the value. Otherwise the value is printed normally. 10792 10793Pretty-printers are normally named. This makes them easy to manage. 10794The @samp{info pretty-printer} command will list all the installed 10795pretty-printers with their names. 10796If a pretty-printer can handle multiple data types, then its 10797@dfn{subprinters} are the printers for the individual data types. 10798Each such subprinter has its own name. 10799The format of the name is @var{printer-name};@var{subprinter-name}. 10800 10801Pretty-printers are installed by @dfn{registering} them with @value{GDBN}. 10802Typically they are automatically loaded and registered when the corresponding 10803debug information is loaded, thus making them available without having to 10804do anything special. 10805 10806There are three places where a pretty-printer can be registered. 10807 10808@itemize @bullet 10809@item 10810Pretty-printers registered globally are available when debugging 10811all inferiors. 10812 10813@item 10814Pretty-printers registered with a program space are available only 10815when debugging that program. 10816@xref{Progspaces In Python}, for more details on program spaces in Python. 10817 10818@item 10819Pretty-printers registered with an objfile are loaded and unloaded 10820with the corresponding objfile (e.g., shared library). 10821@xref{Objfiles In Python}, for more details on objfiles in Python. 10822@end itemize 10823 10824@xref{Selecting Pretty-Printers}, for further information on how 10825pretty-printers are selected, 10826 10827@xref{Writing a Pretty-Printer}, for implementing pretty printers 10828for new types. 10829 10830@node Pretty-Printer Example 10831@subsection Pretty-Printer Example 10832 10833Here is how a C@t{++} @code{std::string} looks without a pretty-printer: 10834 10835@smallexample 10836(@value{GDBP}) print s 10837$1 = @{ 10838 static npos = 4294967295, 10839 _M_dataplus = @{ 10840 <std::allocator<char>> = @{ 10841 <__gnu_cxx::new_allocator<char>> = @{ 10842 <No data fields>@}, <No data fields> 10843 @}, 10844 members of std::basic_string<char, std::char_traits<char>, 10845 std::allocator<char> >::_Alloc_hider: 10846 _M_p = 0x804a014 "abcd" 10847 @} 10848@} 10849@end smallexample 10850 10851With a pretty-printer for @code{std::string} only the contents are printed: 10852 10853@smallexample 10854(@value{GDBP}) print s 10855$2 = "abcd" 10856@end smallexample 10857 10858@node Pretty-Printer Commands 10859@subsection Pretty-Printer Commands 10860@cindex pretty-printer commands 10861 10862@table @code 10863@kindex info pretty-printer 10864@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]] 10865Print the list of installed pretty-printers. 10866This includes disabled pretty-printers, which are marked as such. 10867 10868@var{object-regexp} is a regular expression matching the objects 10869whose pretty-printers to list. 10870Objects can be @code{global}, the program space's file 10871(@pxref{Progspaces In Python}), 10872and the object files within that program space (@pxref{Objfiles In Python}). 10873@xref{Selecting Pretty-Printers}, for details on how @value{GDBN} 10874looks up a printer from these three objects. 10875 10876@var{name-regexp} is a regular expression matching the name of the printers 10877to list. 10878 10879@kindex disable pretty-printer 10880@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 10881Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 10882A disabled pretty-printer is not forgotten, it may be enabled again later. 10883 10884@kindex enable pretty-printer 10885@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 10886Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 10887@end table 10888 10889Example: 10890 10891Suppose we have three pretty-printers installed: one from library1.so 10892named @code{foo} that prints objects of type @code{foo}, and 10893another from library2.so named @code{bar} that prints two types of objects, 10894@code{bar1} and @code{bar2}. 10895 10896@smallexample 10897(gdb) info pretty-printer 10898library1.so: 10899 foo 10900library2.so: 10901 bar 10902 bar1 10903 bar2 10904(gdb) info pretty-printer library2 10905library2.so: 10906 bar 10907 bar1 10908 bar2 10909(gdb) disable pretty-printer library1 109101 printer disabled 109112 of 3 printers enabled 10912(gdb) info pretty-printer 10913library1.so: 10914 foo [disabled] 10915library2.so: 10916 bar 10917 bar1 10918 bar2 10919(gdb) disable pretty-printer library2 bar;bar1 109201 printer disabled 109211 of 3 printers enabled 10922(gdb) info pretty-printer library2 10923library1.so: 10924 foo [disabled] 10925library2.so: 10926 bar 10927 bar1 [disabled] 10928 bar2 10929(gdb) disable pretty-printer library2 bar 109301 printer disabled 109310 of 3 printers enabled 10932(gdb) info pretty-printer library2 10933library1.so: 10934 foo [disabled] 10935library2.so: 10936 bar [disabled] 10937 bar1 [disabled] 10938 bar2 10939@end smallexample 10940 10941Note that for @code{bar} the entire printer can be disabled, 10942as can each individual subprinter. 10943 10944@node Value History 10945@section Value History 10946 10947@cindex value history 10948@cindex history of values printed by @value{GDBN} 10949Values printed by the @code{print} command are saved in the @value{GDBN} 10950@dfn{value history}. This allows you to refer to them in other expressions. 10951Values are kept until the symbol table is re-read or discarded 10952(for example with the @code{file} or @code{symbol-file} commands). 10953When the symbol table changes, the value history is discarded, 10954since the values may contain pointers back to the types defined in the 10955symbol table. 10956 10957@cindex @code{$} 10958@cindex @code{$$} 10959@cindex history number 10960The values printed are given @dfn{history numbers} by which you can 10961refer to them. These are successive integers starting with one. 10962@code{print} shows you the history number assigned to a value by 10963printing @samp{$@var{num} = } before the value; here @var{num} is the 10964history number. 10965 10966To refer to any previous value, use @samp{$} followed by the value's 10967history number. The way @code{print} labels its output is designed to 10968remind you of this. Just @code{$} refers to the most recent value in 10969the history, and @code{$$} refers to the value before that. 10970@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2} 10971is the value just prior to @code{$$}, @code{$$1} is equivalent to 10972@code{$$}, and @code{$$0} is equivalent to @code{$}. 10973 10974For example, suppose you have just printed a pointer to a structure and 10975want to see the contents of the structure. It suffices to type 10976 10977@smallexample 10978p *$ 10979@end smallexample 10980 10981If you have a chain of structures where the component @code{next} points 10982to the next one, you can print the contents of the next one with this: 10983 10984@smallexample 10985p *$.next 10986@end smallexample 10987 10988@noindent 10989You can print successive links in the chain by repeating this 10990command---which you can do by just typing @key{RET}. 10991 10992Note that the history records values, not expressions. If the value of 10993@code{x} is 4 and you type these commands: 10994 10995@smallexample 10996print x 10997set x=5 10998@end smallexample 10999 11000@noindent 11001then the value recorded in the value history by the @code{print} command 11002remains 4 even though the value of @code{x} has changed. 11003 11004@table @code 11005@kindex show values 11006@item show values 11007Print the last ten values in the value history, with their item numbers. 11008This is like @samp{p@ $$9} repeated ten times, except that @code{show 11009values} does not change the history. 11010 11011@item show values @var{n} 11012Print ten history values centered on history item number @var{n}. 11013 11014@item show values + 11015Print ten history values just after the values last printed. If no more 11016values are available, @code{show values +} produces no display. 11017@end table 11018 11019Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the 11020same effect as @samp{show values +}. 11021 11022@node Convenience Vars 11023@section Convenience Variables 11024 11025@cindex convenience variables 11026@cindex user-defined variables 11027@value{GDBN} provides @dfn{convenience variables} that you can use within 11028@value{GDBN} to hold on to a value and refer to it later. These variables 11029exist entirely within @value{GDBN}; they are not part of your program, and 11030setting a convenience variable has no direct effect on further execution 11031of your program. That is why you can use them freely. 11032 11033Convenience variables are prefixed with @samp{$}. Any name preceded by 11034@samp{$} can be used for a convenience variable, unless it is one of 11035the predefined machine-specific register names (@pxref{Registers, ,Registers}). 11036(Value history references, in contrast, are @emph{numbers} preceded 11037by @samp{$}. @xref{Value History, ,Value History}.) 11038 11039You can save a value in a convenience variable with an assignment 11040expression, just as you would set a variable in your program. 11041For example: 11042 11043@smallexample 11044set $foo = *object_ptr 11045@end smallexample 11046 11047@noindent 11048would save in @code{$foo} the value contained in the object pointed to by 11049@code{object_ptr}. 11050 11051Using a convenience variable for the first time creates it, but its 11052value is @code{void} until you assign a new value. You can alter the 11053value with another assignment at any time. 11054 11055Convenience variables have no fixed types. You can assign a convenience 11056variable any type of value, including structures and arrays, even if 11057that variable already has a value of a different type. The convenience 11058variable, when used as an expression, has the type of its current value. 11059 11060@table @code 11061@kindex show convenience 11062@cindex show all user variables and functions 11063@item show convenience 11064Print a list of convenience variables used so far, and their values, 11065as well as a list of the convenience functions. 11066Abbreviated @code{show conv}. 11067 11068@kindex init-if-undefined 11069@cindex convenience variables, initializing 11070@item init-if-undefined $@var{variable} = @var{expression} 11071Set a convenience variable if it has not already been set. This is useful 11072for user-defined commands that keep some state. It is similar, in concept, 11073to using local static variables with initializers in C (except that 11074convenience variables are global). It can also be used to allow users to 11075override default values used in a command script. 11076 11077If the variable is already defined then the expression is not evaluated so 11078any side-effects do not occur. 11079@end table 11080 11081One of the ways to use a convenience variable is as a counter to be 11082incremented or a pointer to be advanced. For example, to print 11083a field from successive elements of an array of structures: 11084 11085@smallexample 11086set $i = 0 11087print bar[$i++]->contents 11088@end smallexample 11089 11090@noindent 11091Repeat that command by typing @key{RET}. 11092 11093Some convenience variables are created automatically by @value{GDBN} and given 11094values likely to be useful. 11095 11096@table @code 11097@vindex $_@r{, convenience variable} 11098@item $_ 11099The variable @code{$_} is automatically set by the @code{x} command to 11100the last address examined (@pxref{Memory, ,Examining Memory}). Other 11101commands which provide a default address for @code{x} to examine also 11102set @code{$_} to that address; these commands include @code{info line} 11103and @code{info breakpoint}. The type of @code{$_} is @code{void *} 11104except when set by the @code{x} command, in which case it is a pointer 11105to the type of @code{$__}. 11106 11107@vindex $__@r{, convenience variable} 11108@item $__ 11109The variable @code{$__} is automatically set by the @code{x} command 11110to the value found in the last address examined. Its type is chosen 11111to match the format in which the data was printed. 11112 11113@item $_exitcode 11114@vindex $_exitcode@r{, convenience variable} 11115When the program being debugged terminates normally, @value{GDBN} 11116automatically sets this variable to the exit code of the program, and 11117resets @code{$_exitsignal} to @code{void}. 11118 11119@item $_exitsignal 11120@vindex $_exitsignal@r{, convenience variable} 11121When the program being debugged dies due to an uncaught signal, 11122@value{GDBN} automatically sets this variable to that signal's number, 11123and resets @code{$_exitcode} to @code{void}. 11124 11125To distinguish between whether the program being debugged has exited 11126(i.e., @code{$_exitcode} is not @code{void}) or signalled (i.e., 11127@code{$_exitsignal} is not @code{void}), the convenience function 11128@code{$_isvoid} can be used (@pxref{Convenience Funs,, Convenience 11129Functions}). For example, considering the following source code: 11130 11131@smallexample 11132#include <signal.h> 11133 11134int 11135main (int argc, char *argv[]) 11136@{ 11137 raise (SIGALRM); 11138 return 0; 11139@} 11140@end smallexample 11141 11142A valid way of telling whether the program being debugged has exited 11143or signalled would be: 11144 11145@smallexample 11146(@value{GDBP}) define has_exited_or_signalled 11147Type commands for definition of ``has_exited_or_signalled''. 11148End with a line saying just ``end''. 11149>if $_isvoid ($_exitsignal) 11150 >echo The program has exited\n 11151 >else 11152 >echo The program has signalled\n 11153 >end 11154>end 11155(@value{GDBP}) run 11156Starting program: 11157 11158Program terminated with signal SIGALRM, Alarm clock. 11159The program no longer exists. 11160(@value{GDBP}) has_exited_or_signalled 11161The program has signalled 11162@end smallexample 11163 11164As can be seen, @value{GDBN} correctly informs that the program being 11165debugged has signalled, since it calls @code{raise} and raises a 11166@code{SIGALRM} signal. If the program being debugged had not called 11167@code{raise}, then @value{GDBN} would report a normal exit: 11168 11169@smallexample 11170(@value{GDBP}) has_exited_or_signalled 11171The program has exited 11172@end smallexample 11173 11174@item $_exception 11175The variable @code{$_exception} is set to the exception object being 11176thrown at an exception-related catchpoint. @xref{Set Catchpoints}. 11177 11178@item $_probe_argc 11179@itemx $_probe_arg0@dots{}$_probe_arg11 11180Arguments to a static probe. @xref{Static Probe Points}. 11181 11182@item $_sdata 11183@vindex $_sdata@r{, inspect, convenience variable} 11184The variable @code{$_sdata} contains extra collected static tracepoint 11185data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that 11186@code{$_sdata} could be empty, if not inspecting a trace buffer, or 11187if extra static tracepoint data has not been collected. 11188 11189@item $_siginfo 11190@vindex $_siginfo@r{, convenience variable} 11191The variable @code{$_siginfo} contains extra signal information 11192(@pxref{extra signal information}). Note that @code{$_siginfo} 11193could be empty, if the application has not yet received any signals. 11194For example, it will be empty before you execute the @code{run} command. 11195 11196@item $_tlb 11197@vindex $_tlb@r{, convenience variable} 11198The variable @code{$_tlb} is automatically set when debugging 11199applications running on MS-Windows in native mode or connected to 11200gdbserver that supports the @code{qGetTIBAddr} request. 11201@xref{General Query Packets}. 11202This variable contains the address of the thread information block. 11203 11204@item $_inferior 11205The number of the current inferior. @xref{Inferiors and 11206Programs, ,Debugging Multiple Inferiors and Programs}. 11207 11208@item $_thread 11209The thread number of the current thread. @xref{thread numbers}. 11210 11211@item $_gthread 11212The global number of the current thread. @xref{global thread numbers}. 11213 11214@end table 11215 11216@node Convenience Funs 11217@section Convenience Functions 11218 11219@cindex convenience functions 11220@value{GDBN} also supplies some @dfn{convenience functions}. These 11221have a syntax similar to convenience variables. A convenience 11222function can be used in an expression just like an ordinary function; 11223however, a convenience function is implemented internally to 11224@value{GDBN}. 11225 11226These functions do not require @value{GDBN} to be configured with 11227@code{Python} support, which means that they are always available. 11228 11229@table @code 11230 11231@item $_isvoid (@var{expr}) 11232@findex $_isvoid@r{, convenience function} 11233Return one if the expression @var{expr} is @code{void}. Otherwise it 11234returns zero. 11235 11236A @code{void} expression is an expression where the type of the result 11237is @code{void}. For example, you can examine a convenience variable 11238(see @ref{Convenience Vars,, Convenience Variables}) to check whether 11239it is @code{void}: 11240 11241@smallexample 11242(@value{GDBP}) print $_exitcode 11243$1 = void 11244(@value{GDBP}) print $_isvoid ($_exitcode) 11245$2 = 1 11246(@value{GDBP}) run 11247Starting program: ./a.out 11248[Inferior 1 (process 29572) exited normally] 11249(@value{GDBP}) print $_exitcode 11250$3 = 0 11251(@value{GDBP}) print $_isvoid ($_exitcode) 11252$4 = 0 11253@end smallexample 11254 11255In the example above, we used @code{$_isvoid} to check whether 11256@code{$_exitcode} is @code{void} before and after the execution of the 11257program being debugged. Before the execution there is no exit code to 11258be examined, therefore @code{$_exitcode} is @code{void}. After the 11259execution the program being debugged returned zero, therefore 11260@code{$_exitcode} is zero, which means that it is not @code{void} 11261anymore. 11262 11263The @code{void} expression can also be a call of a function from the 11264program being debugged. For example, given the following function: 11265 11266@smallexample 11267void 11268foo (void) 11269@{ 11270@} 11271@end smallexample 11272 11273The result of calling it inside @value{GDBN} is @code{void}: 11274 11275@smallexample 11276(@value{GDBP}) print foo () 11277$1 = void 11278(@value{GDBP}) print $_isvoid (foo ()) 11279$2 = 1 11280(@value{GDBP}) set $v = foo () 11281(@value{GDBP}) print $v 11282$3 = void 11283(@value{GDBP}) print $_isvoid ($v) 11284$4 = 1 11285@end smallexample 11286 11287@end table 11288 11289These functions require @value{GDBN} to be configured with 11290@code{Python} support. 11291 11292@table @code 11293 11294@item $_memeq(@var{buf1}, @var{buf2}, @var{length}) 11295@findex $_memeq@r{, convenience function} 11296Returns one if the @var{length} bytes at the addresses given by 11297@var{buf1} and @var{buf2} are equal. 11298Otherwise it returns zero. 11299 11300@item $_regex(@var{str}, @var{regex}) 11301@findex $_regex@r{, convenience function} 11302Returns one if the string @var{str} matches the regular expression 11303@var{regex}. Otherwise it returns zero. 11304The syntax of the regular expression is that specified by @code{Python}'s 11305regular expression support. 11306 11307@item $_streq(@var{str1}, @var{str2}) 11308@findex $_streq@r{, convenience function} 11309Returns one if the strings @var{str1} and @var{str2} are equal. 11310Otherwise it returns zero. 11311 11312@item $_strlen(@var{str}) 11313@findex $_strlen@r{, convenience function} 11314Returns the length of string @var{str}. 11315 11316@item $_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]}) 11317@findex $_caller_is@r{, convenience function} 11318Returns one if the calling function's name is equal to @var{name}. 11319Otherwise it returns zero. 11320 11321If the optional argument @var{number_of_frames} is provided, 11322it is the number of frames up in the stack to look. 11323The default is 1. 11324 11325Example: 11326 11327@smallexample 11328(gdb) backtrace 11329#0 bottom_func () 11330 at testsuite/gdb.python/py-caller-is.c:21 11331#1 0x00000000004005a0 in middle_func () 11332 at testsuite/gdb.python/py-caller-is.c:27 11333#2 0x00000000004005ab in top_func () 11334 at testsuite/gdb.python/py-caller-is.c:33 11335#3 0x00000000004005b6 in main () 11336 at testsuite/gdb.python/py-caller-is.c:39 11337(gdb) print $_caller_is ("middle_func") 11338$1 = 1 11339(gdb) print $_caller_is ("top_func", 2) 11340$1 = 1 11341@end smallexample 11342 11343@item $_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]}) 11344@findex $_caller_matches@r{, convenience function} 11345Returns one if the calling function's name matches the regular expression 11346@var{regexp}. Otherwise it returns zero. 11347 11348If the optional argument @var{number_of_frames} is provided, 11349it is the number of frames up in the stack to look. 11350The default is 1. 11351 11352@item $_any_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]}) 11353@findex $_any_caller_is@r{, convenience function} 11354Returns one if any calling function's name is equal to @var{name}. 11355Otherwise it returns zero. 11356 11357If the optional argument @var{number_of_frames} is provided, 11358it is the number of frames up in the stack to look. 11359The default is 1. 11360 11361This function differs from @code{$_caller_is} in that this function 11362checks all stack frames from the immediate caller to the frame specified 11363by @var{number_of_frames}, whereas @code{$_caller_is} only checks the 11364frame specified by @var{number_of_frames}. 11365 11366@item $_any_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]}) 11367@findex $_any_caller_matches@r{, convenience function} 11368Returns one if any calling function's name matches the regular expression 11369@var{regexp}. Otherwise it returns zero. 11370 11371If the optional argument @var{number_of_frames} is provided, 11372it is the number of frames up in the stack to look. 11373The default is 1. 11374 11375This function differs from @code{$_caller_matches} in that this function 11376checks all stack frames from the immediate caller to the frame specified 11377by @var{number_of_frames}, whereas @code{$_caller_matches} only checks the 11378frame specified by @var{number_of_frames}. 11379 11380@item $_as_string(@var{value}) 11381@findex $_as_string@r{, convenience function} 11382Return the string representation of @var{value}. 11383 11384This function is useful to obtain the textual label (enumerator) of an 11385enumeration value. For example, assuming the variable @var{node} is of 11386an enumerated type: 11387 11388@smallexample 11389(gdb) printf "Visiting node of type %s\n", $_as_string(node) 11390Visiting node of type NODE_INTEGER 11391@end smallexample 11392 11393@end table 11394 11395@value{GDBN} provides the ability to list and get help on 11396convenience functions. 11397 11398@table @code 11399@item help function 11400@kindex help function 11401@cindex show all convenience functions 11402Print a list of all convenience functions. 11403@end table 11404 11405@node Registers 11406@section Registers 11407 11408@cindex registers 11409You can refer to machine register contents, in expressions, as variables 11410with names starting with @samp{$}. The names of registers are different 11411for each machine; use @code{info registers} to see the names used on 11412your machine. 11413 11414@table @code 11415@kindex info registers 11416@item info registers 11417Print the names and values of all registers except floating-point 11418and vector registers (in the selected stack frame). 11419 11420@kindex info all-registers 11421@cindex floating point registers 11422@item info all-registers 11423Print the names and values of all registers, including floating-point 11424and vector registers (in the selected stack frame). 11425 11426@item info registers @var{reggroup} @dots{} 11427Print the name and value of the registers in each of the specified 11428@var{reggroup}s. The @var{reggoup} can be any of those returned by 11429@code{maint print reggroups} (@pxref{Maintenance Commands}). 11430 11431@item info registers @var{regname} @dots{} 11432Print the @dfn{relativized} value of each specified register @var{regname}. 11433As discussed in detail below, register values are normally relative to 11434the selected stack frame. The @var{regname} may be any register name valid on 11435the machine you are using, with or without the initial @samp{$}. 11436@end table 11437 11438@anchor{standard registers} 11439@cindex stack pointer register 11440@cindex program counter register 11441@cindex process status register 11442@cindex frame pointer register 11443@cindex standard registers 11444@value{GDBN} has four ``standard'' register names that are available (in 11445expressions) on most machines---whenever they do not conflict with an 11446architecture's canonical mnemonics for registers. The register names 11447@code{$pc} and @code{$sp} are used for the program counter register and 11448the stack pointer. @code{$fp} is used for a register that contains a 11449pointer to the current stack frame, and @code{$ps} is used for a 11450register that contains the processor status. For example, 11451you could print the program counter in hex with 11452 11453@smallexample 11454p/x $pc 11455@end smallexample 11456 11457@noindent 11458or print the instruction to be executed next with 11459 11460@smallexample 11461x/i $pc 11462@end smallexample 11463 11464@noindent 11465or add four to the stack pointer@footnote{This is a way of removing 11466one word from the stack, on machines where stacks grow downward in 11467memory (most machines, nowadays). This assumes that the innermost 11468stack frame is selected; setting @code{$sp} is not allowed when other 11469stack frames are selected. To pop entire frames off the stack, 11470regardless of machine architecture, use @code{return}; 11471see @ref{Returning, ,Returning from a Function}.} with 11472 11473@smallexample 11474set $sp += 4 11475@end smallexample 11476 11477Whenever possible, these four standard register names are available on 11478your machine even though the machine has different canonical mnemonics, 11479so long as there is no conflict. The @code{info registers} command 11480shows the canonical names. For example, on the SPARC, @code{info 11481registers} displays the processor status register as @code{$psr} but you 11482can also refer to it as @code{$ps}; and on x86-based machines @code{$ps} 11483is an alias for the @sc{eflags} register. 11484 11485@value{GDBN} always considers the contents of an ordinary register as an 11486integer when the register is examined in this way. Some machines have 11487special registers which can hold nothing but floating point; these 11488registers are considered to have floating point values. There is no way 11489to refer to the contents of an ordinary register as floating point value 11490(although you can @emph{print} it as a floating point value with 11491@samp{print/f $@var{regname}}). 11492 11493Some registers have distinct ``raw'' and ``virtual'' data formats. This 11494means that the data format in which the register contents are saved by 11495the operating system is not the same one that your program normally 11496sees. For example, the registers of the 68881 floating point 11497coprocessor are always saved in ``extended'' (raw) format, but all C 11498programs expect to work with ``double'' (virtual) format. In such 11499cases, @value{GDBN} normally works with the virtual format only (the format 11500that makes sense for your program), but the @code{info registers} command 11501prints the data in both formats. 11502 11503@cindex SSE registers (x86) 11504@cindex MMX registers (x86) 11505Some machines have special registers whose contents can be interpreted 11506in several different ways. For example, modern x86-based machines 11507have SSE and MMX registers that can hold several values packed 11508together in several different formats. @value{GDBN} refers to such 11509registers in @code{struct} notation: 11510 11511@smallexample 11512(@value{GDBP}) print $xmm1 11513$1 = @{ 11514 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@}, 11515 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@}, 11516 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000", 11517 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@}, 11518 v4_int32 = @{0, 20657912, 11, 13@}, 11519 v2_int64 = @{88725056443645952, 55834574859@}, 11520 uint128 = 0x0000000d0000000b013b36f800000000 11521@} 11522@end smallexample 11523 11524@noindent 11525To set values of such registers, you need to tell @value{GDBN} which 11526view of the register you wish to change, as if you were assigning 11527value to a @code{struct} member: 11528 11529@smallexample 11530 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF 11531@end smallexample 11532 11533Normally, register values are relative to the selected stack frame 11534(@pxref{Selection, ,Selecting a Frame}). This means that you get the 11535value that the register would contain if all stack frames farther in 11536were exited and their saved registers restored. In order to see the 11537true contents of hardware registers, you must select the innermost 11538frame (with @samp{frame 0}). 11539 11540@cindex caller-saved registers 11541@cindex call-clobbered registers 11542@cindex volatile registers 11543@cindex <not saved> values 11544Usually ABIs reserve some registers as not needed to be saved by the 11545callee (a.k.a.: ``caller-saved'', ``call-clobbered'' or ``volatile'' 11546registers). It may therefore not be possible for @value{GDBN} to know 11547the value a register had before the call (in other words, in the outer 11548frame), if the register value has since been changed by the callee. 11549@value{GDBN} tries to deduce where the inner frame saved 11550(``callee-saved'') registers, from the debug info, unwind info, or the 11551machine code generated by your compiler. If some register is not 11552saved, and @value{GDBN} knows the register is ``caller-saved'' (via 11553its own knowledge of the ABI, or because the debug/unwind info 11554explicitly says the register's value is undefined), @value{GDBN} 11555displays @w{@samp{<not saved>}} as the register's value. With targets 11556that @value{GDBN} has no knowledge of the register saving convention, 11557if a register was not saved by the callee, then its value and location 11558in the outer frame are assumed to be the same of the inner frame. 11559This is usually harmless, because if the register is call-clobbered, 11560the caller either does not care what is in the register after the 11561call, or has code to restore the value that it does care about. Note, 11562however, that if you change such a register in the outer frame, you 11563may also be affecting the inner frame. Also, the more ``outer'' the 11564frame is you're looking at, the more likely a call-clobbered 11565register's value is to be wrong, in the sense that it doesn't actually 11566represent the value the register had just before the call. 11567 11568@node Floating Point Hardware 11569@section Floating Point Hardware 11570@cindex floating point 11571 11572Depending on the configuration, @value{GDBN} may be able to give 11573you more information about the status of the floating point hardware. 11574 11575@table @code 11576@kindex info float 11577@item info float 11578Display hardware-dependent information about the floating 11579point unit. The exact contents and layout vary depending on the 11580floating point chip. Currently, @samp{info float} is supported on 11581the ARM and x86 machines. 11582@end table 11583 11584@node Vector Unit 11585@section Vector Unit 11586@cindex vector unit 11587 11588Depending on the configuration, @value{GDBN} may be able to give you 11589more information about the status of the vector unit. 11590 11591@table @code 11592@kindex info vector 11593@item info vector 11594Display information about the vector unit. The exact contents and 11595layout vary depending on the hardware. 11596@end table 11597 11598@node OS Information 11599@section Operating System Auxiliary Information 11600@cindex OS information 11601 11602@value{GDBN} provides interfaces to useful OS facilities that can help 11603you debug your program. 11604 11605@cindex auxiliary vector 11606@cindex vector, auxiliary 11607Some operating systems supply an @dfn{auxiliary vector} to programs at 11608startup. This is akin to the arguments and environment that you 11609specify for a program, but contains a system-dependent variety of 11610binary values that tell system libraries important details about the 11611hardware, operating system, and process. Each value's purpose is 11612identified by an integer tag; the meanings are well-known but system-specific. 11613Depending on the configuration and operating system facilities, 11614@value{GDBN} may be able to show you this information. For remote 11615targets, this functionality may further depend on the remote stub's 11616support of the @samp{qXfer:auxv:read} packet, see 11617@ref{qXfer auxiliary vector read}. 11618 11619@table @code 11620@kindex info auxv 11621@item info auxv 11622Display the auxiliary vector of the inferior, which can be either a 11623live process or a core dump file. @value{GDBN} prints each tag value 11624numerically, and also shows names and text descriptions for recognized 11625tags. Some values in the vector are numbers, some bit masks, and some 11626pointers to strings or other data. @value{GDBN} displays each value in the 11627most appropriate form for a recognized tag, and in hexadecimal for 11628an unrecognized tag. 11629@end table 11630 11631On some targets, @value{GDBN} can access operating system-specific 11632information and show it to you. The types of information available 11633will differ depending on the type of operating system running on the 11634target. The mechanism used to fetch the data is described in 11635@ref{Operating System Information}. For remote targets, this 11636functionality depends on the remote stub's support of the 11637@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}. 11638 11639@table @code 11640@kindex info os 11641@item info os @var{infotype} 11642 11643Display OS information of the requested type. 11644 11645On @sc{gnu}/Linux, the following values of @var{infotype} are valid: 11646 11647@anchor{linux info os infotypes} 11648@table @code 11649@kindex info os cpus 11650@item cpus 11651Display the list of all CPUs/cores. For each CPU/core, @value{GDBN} prints 11652the available fields from /proc/cpuinfo. For each supported architecture 11653different fields are available. Two common entries are processor which gives 11654CPU number and bogomips; a system constant that is calculated during 11655kernel initialization. 11656 11657@kindex info os files 11658@item files 11659Display the list of open file descriptors on the target. For each 11660file descriptor, @value{GDBN} prints the identifier of the process 11661owning the descriptor, the command of the owning process, the value 11662of the descriptor, and the target of the descriptor. 11663 11664@kindex info os modules 11665@item modules 11666Display the list of all loaded kernel modules on the target. For each 11667module, @value{GDBN} prints the module name, the size of the module in 11668bytes, the number of times the module is used, the dependencies of the 11669module, the status of the module, and the address of the loaded module 11670in memory. 11671 11672@kindex info os msg 11673@item msg 11674Display the list of all System V message queues on the target. For each 11675message queue, @value{GDBN} prints the message queue key, the message 11676queue identifier, the access permissions, the current number of bytes 11677on the queue, the current number of messages on the queue, the processes 11678that last sent and received a message on the queue, the user and group 11679of the owner and creator of the message queue, the times at which a 11680message was last sent and received on the queue, and the time at which 11681the message queue was last changed. 11682 11683@kindex info os processes 11684@item processes 11685Display the list of processes on the target. For each process, 11686@value{GDBN} prints the process identifier, the name of the user, the 11687command corresponding to the process, and the list of processor cores 11688that the process is currently running on. (To understand what these 11689properties mean, for this and the following info types, please consult 11690the general @sc{gnu}/Linux documentation.) 11691 11692@kindex info os procgroups 11693@item procgroups 11694Display the list of process groups on the target. For each process, 11695@value{GDBN} prints the identifier of the process group that it belongs 11696to, the command corresponding to the process group leader, the process 11697identifier, and the command line of the process. The list is sorted 11698first by the process group identifier, then by the process identifier, 11699so that processes belonging to the same process group are grouped together 11700and the process group leader is listed first. 11701 11702@kindex info os semaphores 11703@item semaphores 11704Display the list of all System V semaphore sets on the target. For each 11705semaphore set, @value{GDBN} prints the semaphore set key, the semaphore 11706set identifier, the access permissions, the number of semaphores in the 11707set, the user and group of the owner and creator of the semaphore set, 11708and the times at which the semaphore set was operated upon and changed. 11709 11710@kindex info os shm 11711@item shm 11712Display the list of all System V shared-memory regions on the target. 11713For each shared-memory region, @value{GDBN} prints the region key, 11714the shared-memory identifier, the access permissions, the size of the 11715region, the process that created the region, the process that last 11716attached to or detached from the region, the current number of live 11717attaches to the region, and the times at which the region was last 11718attached to, detach from, and changed. 11719 11720@kindex info os sockets 11721@item sockets 11722Display the list of Internet-domain sockets on the target. For each 11723socket, @value{GDBN} prints the address and port of the local and 11724remote endpoints, the current state of the connection, the creator of 11725the socket, the IP address family of the socket, and the type of the 11726connection. 11727 11728@kindex info os threads 11729@item threads 11730Display the list of threads running on the target. For each thread, 11731@value{GDBN} prints the identifier of the process that the thread 11732belongs to, the command of the process, the thread identifier, and the 11733processor core that it is currently running on. The main thread of a 11734process is not listed. 11735@end table 11736 11737@item info os 11738If @var{infotype} is omitted, then list the possible values for 11739@var{infotype} and the kind of OS information available for each 11740@var{infotype}. If the target does not return a list of possible 11741types, this command will report an error. 11742@end table 11743 11744@node Memory Region Attributes 11745@section Memory Region Attributes 11746@cindex memory region attributes 11747 11748@dfn{Memory region attributes} allow you to describe special handling 11749required by regions of your target's memory. @value{GDBN} uses 11750attributes to determine whether to allow certain types of memory 11751accesses; whether to use specific width accesses; and whether to cache 11752target memory. By default the description of memory regions is 11753fetched from the target (if the current target supports this), but the 11754user can override the fetched regions. 11755 11756Defined memory regions can be individually enabled and disabled. When a 11757memory region is disabled, @value{GDBN} uses the default attributes when 11758accessing memory in that region. Similarly, if no memory regions have 11759been defined, @value{GDBN} uses the default attributes when accessing 11760all memory. 11761 11762When a memory region is defined, it is given a number to identify it; 11763to enable, disable, or remove a memory region, you specify that number. 11764 11765@table @code 11766@kindex mem 11767@item mem @var{lower} @var{upper} @var{attributes}@dots{} 11768Define a memory region bounded by @var{lower} and @var{upper} with 11769attributes @var{attributes}@dots{}, and add it to the list of regions 11770monitored by @value{GDBN}. Note that @var{upper} == 0 is a special 11771case: it is treated as the target's maximum memory address. 11772(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.) 11773 11774@item mem auto 11775Discard any user changes to the memory regions and use target-supplied 11776regions, if available, or no regions if the target does not support. 11777 11778@kindex delete mem 11779@item delete mem @var{nums}@dots{} 11780Remove memory regions @var{nums}@dots{} from the list of regions 11781monitored by @value{GDBN}. 11782 11783@kindex disable mem 11784@item disable mem @var{nums}@dots{} 11785Disable monitoring of memory regions @var{nums}@dots{}. 11786A disabled memory region is not forgotten. 11787It may be enabled again later. 11788 11789@kindex enable mem 11790@item enable mem @var{nums}@dots{} 11791Enable monitoring of memory regions @var{nums}@dots{}. 11792 11793@kindex info mem 11794@item info mem 11795Print a table of all defined memory regions, with the following columns 11796for each region: 11797 11798@table @emph 11799@item Memory Region Number 11800@item Enabled or Disabled. 11801Enabled memory regions are marked with @samp{y}. 11802Disabled memory regions are marked with @samp{n}. 11803 11804@item Lo Address 11805The address defining the inclusive lower bound of the memory region. 11806 11807@item Hi Address 11808The address defining the exclusive upper bound of the memory region. 11809 11810@item Attributes 11811The list of attributes set for this memory region. 11812@end table 11813@end table 11814 11815 11816@subsection Attributes 11817 11818@subsubsection Memory Access Mode 11819The access mode attributes set whether @value{GDBN} may make read or 11820write accesses to a memory region. 11821 11822While these attributes prevent @value{GDBN} from performing invalid 11823memory accesses, they do nothing to prevent the target system, I/O DMA, 11824etc.@: from accessing memory. 11825 11826@table @code 11827@item ro 11828Memory is read only. 11829@item wo 11830Memory is write only. 11831@item rw 11832Memory is read/write. This is the default. 11833@end table 11834 11835@subsubsection Memory Access Size 11836The access size attribute tells @value{GDBN} to use specific sized 11837accesses in the memory region. Often memory mapped device registers 11838require specific sized accesses. If no access size attribute is 11839specified, @value{GDBN} may use accesses of any size. 11840 11841@table @code 11842@item 8 11843Use 8 bit memory accesses. 11844@item 16 11845Use 16 bit memory accesses. 11846@item 32 11847Use 32 bit memory accesses. 11848@item 64 11849Use 64 bit memory accesses. 11850@end table 11851 11852@c @subsubsection Hardware/Software Breakpoints 11853@c The hardware/software breakpoint attributes set whether @value{GDBN} 11854@c will use hardware or software breakpoints for the internal breakpoints 11855@c used by the step, next, finish, until, etc. commands. 11856@c 11857@c @table @code 11858@c @item hwbreak 11859@c Always use hardware breakpoints 11860@c @item swbreak (default) 11861@c @end table 11862 11863@subsubsection Data Cache 11864The data cache attributes set whether @value{GDBN} will cache target 11865memory. While this generally improves performance by reducing debug 11866protocol overhead, it can lead to incorrect results because @value{GDBN} 11867does not know about volatile variables or memory mapped device 11868registers. 11869 11870@table @code 11871@item cache 11872Enable @value{GDBN} to cache target memory. 11873@item nocache 11874Disable @value{GDBN} from caching target memory. This is the default. 11875@end table 11876 11877@subsection Memory Access Checking 11878@value{GDBN} can be instructed to refuse accesses to memory that is 11879not explicitly described. This can be useful if accessing such 11880regions has undesired effects for a specific target, or to provide 11881better error checking. The following commands control this behaviour. 11882 11883@table @code 11884@kindex set mem inaccessible-by-default 11885@item set mem inaccessible-by-default [on|off] 11886If @code{on} is specified, make @value{GDBN} treat memory not 11887explicitly described by the memory ranges as non-existent and refuse accesses 11888to such memory. The checks are only performed if there's at least one 11889memory range defined. If @code{off} is specified, make @value{GDBN} 11890treat the memory not explicitly described by the memory ranges as RAM. 11891The default value is @code{on}. 11892@kindex show mem inaccessible-by-default 11893@item show mem inaccessible-by-default 11894Show the current handling of accesses to unknown memory. 11895@end table 11896 11897 11898@c @subsubsection Memory Write Verification 11899@c The memory write verification attributes set whether @value{GDBN} 11900@c will re-reads data after each write to verify the write was successful. 11901@c 11902@c @table @code 11903@c @item verify 11904@c @item noverify (default) 11905@c @end table 11906 11907@node Dump/Restore Files 11908@section Copy Between Memory and a File 11909@cindex dump/restore files 11910@cindex append data to a file 11911@cindex dump data to a file 11912@cindex restore data from a file 11913 11914You can use the commands @code{dump}, @code{append}, and 11915@code{restore} to copy data between target memory and a file. The 11916@code{dump} and @code{append} commands write data to a file, and the 11917@code{restore} command reads data from a file back into the inferior's 11918memory. Files may be in binary, Motorola S-record, Intel hex, 11919Tektronix Hex, or Verilog Hex format; however, @value{GDBN} can only 11920append to binary files, and cannot read from Verilog Hex files. 11921 11922@table @code 11923 11924@kindex dump 11925@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 11926@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr} 11927Dump the contents of memory from @var{start_addr} to @var{end_addr}, 11928or the value of @var{expr}, to @var{filename} in the given format. 11929 11930The @var{format} parameter may be any one of: 11931@table @code 11932@item binary 11933Raw binary form. 11934@item ihex 11935Intel hex format. 11936@item srec 11937Motorola S-record format. 11938@item tekhex 11939Tektronix Hex format. 11940@item verilog 11941Verilog Hex format. 11942@end table 11943 11944@value{GDBN} uses the same definitions of these formats as the 11945@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If 11946@var{format} is omitted, @value{GDBN} dumps the data in raw binary 11947form. 11948 11949@kindex append 11950@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 11951@itemx append @r{[}binary@r{]} value @var{filename} @var{expr} 11952Append the contents of memory from @var{start_addr} to @var{end_addr}, 11953or the value of @var{expr}, to the file @var{filename}, in raw binary form. 11954(@value{GDBN} can only append data to files in raw binary form.) 11955 11956@kindex restore 11957@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end} 11958Restore the contents of file @var{filename} into memory. The 11959@code{restore} command can automatically recognize any known @sc{bfd} 11960file format, except for raw binary. To restore a raw binary file you 11961must specify the optional keyword @code{binary} after the filename. 11962 11963If @var{bias} is non-zero, its value will be added to the addresses 11964contained in the file. Binary files always start at address zero, so 11965they will be restored at address @var{bias}. Other bfd files have 11966a built-in location; they will be restored at offset @var{bias} 11967from that location. 11968 11969If @var{start} and/or @var{end} are non-zero, then only data between 11970file offset @var{start} and file offset @var{end} will be restored. 11971These offsets are relative to the addresses in the file, before 11972the @var{bias} argument is applied. 11973 11974@end table 11975 11976@node Core File Generation 11977@section How to Produce a Core File from Your Program 11978@cindex dump core from inferior 11979 11980A @dfn{core file} or @dfn{core dump} is a file that records the memory 11981image of a running process and its process status (register values 11982etc.). Its primary use is post-mortem debugging of a program that 11983crashed while it ran outside a debugger. A program that crashes 11984automatically produces a core file, unless this feature is disabled by 11985the user. @xref{Files}, for information on invoking @value{GDBN} in 11986the post-mortem debugging mode. 11987 11988Occasionally, you may wish to produce a core file of the program you 11989are debugging in order to preserve a snapshot of its state. 11990@value{GDBN} has a special command for that. 11991 11992@table @code 11993@kindex gcore 11994@kindex generate-core-file 11995@item generate-core-file [@var{file}] 11996@itemx gcore [@var{file}] 11997Produce a core dump of the inferior process. The optional argument 11998@var{file} specifies the file name where to put the core dump. If not 11999specified, the file name defaults to @file{core.@var{pid}}, where 12000@var{pid} is the inferior process ID. 12001 12002Note that this command is implemented only for some systems (as of 12003this writing, @sc{gnu}/Linux, FreeBSD, Solaris, and S390). 12004 12005On @sc{gnu}/Linux, this command can take into account the value of the 12006file @file{/proc/@var{pid}/coredump_filter} when generating the core 12007dump (@pxref{set use-coredump-filter}), and by default honors the 12008@code{VM_DONTDUMP} flag for mappings where it is present in the file 12009@file{/proc/@var{pid}/smaps} (@pxref{set dump-excluded-mappings}). 12010 12011@kindex set use-coredump-filter 12012@anchor{set use-coredump-filter} 12013@item set use-coredump-filter on 12014@itemx set use-coredump-filter off 12015Enable or disable the use of the file 12016@file{/proc/@var{pid}/coredump_filter} when generating core dump 12017files. This file is used by the Linux kernel to decide what types of 12018memory mappings will be dumped or ignored when generating a core dump 12019file. @var{pid} is the process ID of a currently running process. 12020 12021To make use of this feature, you have to write in the 12022@file{/proc/@var{pid}/coredump_filter} file a value, in hexadecimal, 12023which is a bit mask representing the memory mapping types. If a bit 12024is set in the bit mask, then the memory mappings of the corresponding 12025types will be dumped; otherwise, they will be ignored. This 12026configuration is inherited by child processes. For more information 12027about the bits that can be set in the 12028@file{/proc/@var{pid}/coredump_filter} file, please refer to the 12029manpage of @code{core(5)}. 12030 12031By default, this option is @code{on}. If this option is turned 12032@code{off}, @value{GDBN} does not read the @file{coredump_filter} file 12033and instead uses the same default value as the Linux kernel in order 12034to decide which pages will be dumped in the core dump file. This 12035value is currently @code{0x33}, which means that bits @code{0} 12036(anonymous private mappings), @code{1} (anonymous shared mappings), 12037@code{4} (ELF headers) and @code{5} (private huge pages) are active. 12038This will cause these memory mappings to be dumped automatically. 12039 12040@kindex set dump-excluded-mappings 12041@anchor{set dump-excluded-mappings} 12042@item set dump-excluded-mappings on 12043@itemx set dump-excluded-mappings off 12044If @code{on} is specified, @value{GDBN} will dump memory mappings 12045marked with the @code{VM_DONTDUMP} flag. This flag is represented in 12046the file @file{/proc/@var{pid}/smaps} with the acronym @code{dd}. 12047 12048The default value is @code{off}. 12049@end table 12050 12051@node Character Sets 12052@section Character Sets 12053@cindex character sets 12054@cindex charset 12055@cindex translating between character sets 12056@cindex host character set 12057@cindex target character set 12058 12059If the program you are debugging uses a different character set to 12060represent characters and strings than the one @value{GDBN} uses itself, 12061@value{GDBN} can automatically translate between the character sets for 12062you. The character set @value{GDBN} uses we call the @dfn{host 12063character set}; the one the inferior program uses we call the 12064@dfn{target character set}. 12065 12066For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which 12067uses the ISO Latin 1 character set, but you are using @value{GDBN}'s 12068remote protocol (@pxref{Remote Debugging}) to debug a program 12069running on an IBM mainframe, which uses the @sc{ebcdic} character set, 12070then the host character set is Latin-1, and the target character set is 12071@sc{ebcdic}. If you give @value{GDBN} the command @code{set 12072target-charset EBCDIC-US}, then @value{GDBN} translates between 12073@sc{ebcdic} and Latin 1 as you print character or string values, or use 12074character and string literals in expressions. 12075 12076@value{GDBN} has no way to automatically recognize which character set 12077the inferior program uses; you must tell it, using the @code{set 12078target-charset} command, described below. 12079 12080Here are the commands for controlling @value{GDBN}'s character set 12081support: 12082 12083@table @code 12084@item set target-charset @var{charset} 12085@kindex set target-charset 12086Set the current target character set to @var{charset}. To display the 12087list of supported target character sets, type 12088@kbd{@w{set target-charset @key{TAB}@key{TAB}}}. 12089 12090@item set host-charset @var{charset} 12091@kindex set host-charset 12092Set the current host character set to @var{charset}. 12093 12094By default, @value{GDBN} uses a host character set appropriate to the 12095system it is running on; you can override that default using the 12096@code{set host-charset} command. On some systems, @value{GDBN} cannot 12097automatically determine the appropriate host character set. In this 12098case, @value{GDBN} uses @samp{UTF-8}. 12099 12100@value{GDBN} can only use certain character sets as its host character 12101set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}}, 12102@value{GDBN} will list the host character sets it supports. 12103 12104@item set charset @var{charset} 12105@kindex set charset 12106Set the current host and target character sets to @var{charset}. As 12107above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}}, 12108@value{GDBN} will list the names of the character sets that can be used 12109for both host and target. 12110 12111@item show charset 12112@kindex show charset 12113Show the names of the current host and target character sets. 12114 12115@item show host-charset 12116@kindex show host-charset 12117Show the name of the current host character set. 12118 12119@item show target-charset 12120@kindex show target-charset 12121Show the name of the current target character set. 12122 12123@item set target-wide-charset @var{charset} 12124@kindex set target-wide-charset 12125Set the current target's wide character set to @var{charset}. This is 12126the character set used by the target's @code{wchar_t} type. To 12127display the list of supported wide character sets, type 12128@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}. 12129 12130@item show target-wide-charset 12131@kindex show target-wide-charset 12132Show the name of the current target's wide character set. 12133@end table 12134 12135Here is an example of @value{GDBN}'s character set support in action. 12136Assume that the following source code has been placed in the file 12137@file{charset-test.c}: 12138 12139@smallexample 12140#include <stdio.h> 12141 12142char ascii_hello[] 12143 = @{72, 101, 108, 108, 111, 44, 32, 119, 12144 111, 114, 108, 100, 33, 10, 0@}; 12145char ibm1047_hello[] 12146 = @{200, 133, 147, 147, 150, 107, 64, 166, 12147 150, 153, 147, 132, 90, 37, 0@}; 12148 12149main () 12150@{ 12151 printf ("Hello, world!\n"); 12152@} 12153@end smallexample 12154 12155In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays 12156containing the string @samp{Hello, world!} followed by a newline, 12157encoded in the @sc{ascii} and @sc{ibm1047} character sets. 12158 12159We compile the program, and invoke the debugger on it: 12160 12161@smallexample 12162$ gcc -g charset-test.c -o charset-test 12163$ gdb -nw charset-test 12164GNU gdb 2001-12-19-cvs 12165Copyright 2001 Free Software Foundation, Inc. 12166@dots{} 12167(@value{GDBP}) 12168@end smallexample 12169 12170We can use the @code{show charset} command to see what character sets 12171@value{GDBN} is currently using to interpret and display characters and 12172strings: 12173 12174@smallexample 12175(@value{GDBP}) show charset 12176The current host and target character set is `ISO-8859-1'. 12177(@value{GDBP}) 12178@end smallexample 12179 12180For the sake of printing this manual, let's use @sc{ascii} as our 12181initial character set: 12182@smallexample 12183(@value{GDBP}) set charset ASCII 12184(@value{GDBP}) show charset 12185The current host and target character set is `ASCII'. 12186(@value{GDBP}) 12187@end smallexample 12188 12189Let's assume that @sc{ascii} is indeed the correct character set for our 12190host system --- in other words, let's assume that if @value{GDBN} prints 12191characters using the @sc{ascii} character set, our terminal will display 12192them properly. Since our current target character set is also 12193@sc{ascii}, the contents of @code{ascii_hello} print legibly: 12194 12195@smallexample 12196(@value{GDBP}) print ascii_hello 12197$1 = 0x401698 "Hello, world!\n" 12198(@value{GDBP}) print ascii_hello[0] 12199$2 = 72 'H' 12200(@value{GDBP}) 12201@end smallexample 12202 12203@value{GDBN} uses the target character set for character and string 12204literals you use in expressions: 12205 12206@smallexample 12207(@value{GDBP}) print '+' 12208$3 = 43 '+' 12209(@value{GDBP}) 12210@end smallexample 12211 12212The @sc{ascii} character set uses the number 43 to encode the @samp{+} 12213character. 12214 12215@value{GDBN} relies on the user to tell it which character set the 12216target program uses. If we print @code{ibm1047_hello} while our target 12217character set is still @sc{ascii}, we get jibberish: 12218 12219@smallexample 12220(@value{GDBP}) print ibm1047_hello 12221$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%" 12222(@value{GDBP}) print ibm1047_hello[0] 12223$5 = 200 '\310' 12224(@value{GDBP}) 12225@end smallexample 12226 12227If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB}, 12228@value{GDBN} tells us the character sets it supports: 12229 12230@smallexample 12231(@value{GDBP}) set target-charset 12232ASCII EBCDIC-US IBM1047 ISO-8859-1 12233(@value{GDBP}) set target-charset 12234@end smallexample 12235 12236We can select @sc{ibm1047} as our target character set, and examine the 12237program's strings again. Now the @sc{ascii} string is wrong, but 12238@value{GDBN} translates the contents of @code{ibm1047_hello} from the 12239target character set, @sc{ibm1047}, to the host character set, 12240@sc{ascii}, and they display correctly: 12241 12242@smallexample 12243(@value{GDBP}) set target-charset IBM1047 12244(@value{GDBP}) show charset 12245The current host character set is `ASCII'. 12246The current target character set is `IBM1047'. 12247(@value{GDBP}) print ascii_hello 12248$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012" 12249(@value{GDBP}) print ascii_hello[0] 12250$7 = 72 '\110' 12251(@value{GDBP}) print ibm1047_hello 12252$8 = 0x4016a8 "Hello, world!\n" 12253(@value{GDBP}) print ibm1047_hello[0] 12254$9 = 200 'H' 12255(@value{GDBP}) 12256@end smallexample 12257 12258As above, @value{GDBN} uses the target character set for character and 12259string literals you use in expressions: 12260 12261@smallexample 12262(@value{GDBP}) print '+' 12263$10 = 78 '+' 12264(@value{GDBP}) 12265@end smallexample 12266 12267The @sc{ibm1047} character set uses the number 78 to encode the @samp{+} 12268character. 12269 12270@node Caching Target Data 12271@section Caching Data of Targets 12272@cindex caching data of targets 12273 12274@value{GDBN} caches data exchanged between the debugger and a target. 12275Each cache is associated with the address space of the inferior. 12276@xref{Inferiors and Programs}, about inferior and address space. 12277Such caching generally improves performance in remote debugging 12278(@pxref{Remote Debugging}), because it reduces the overhead of the 12279remote protocol by bundling memory reads and writes into large chunks. 12280Unfortunately, simply caching everything would lead to incorrect results, 12281since @value{GDBN} does not necessarily know anything about volatile 12282values, memory-mapped I/O addresses, etc. Furthermore, in non-stop mode 12283(@pxref{Non-Stop Mode}) memory can be changed @emph{while} a gdb command 12284is executing. 12285Therefore, by default, @value{GDBN} only caches data 12286known to be on the stack@footnote{In non-stop mode, it is moderately 12287rare for a running thread to modify the stack of a stopped thread 12288in a way that would interfere with a backtrace, and caching of 12289stack reads provides a significant speed up of remote backtraces.} or 12290in the code segment. 12291Other regions of memory can be explicitly marked as 12292cacheable; @pxref{Memory Region Attributes}. 12293 12294@table @code 12295@kindex set remotecache 12296@item set remotecache on 12297@itemx set remotecache off 12298This option no longer does anything; it exists for compatibility 12299with old scripts. 12300 12301@kindex show remotecache 12302@item show remotecache 12303Show the current state of the obsolete remotecache flag. 12304 12305@kindex set stack-cache 12306@item set stack-cache on 12307@itemx set stack-cache off 12308Enable or disable caching of stack accesses. When @code{on}, use 12309caching. By default, this option is @code{on}. 12310 12311@kindex show stack-cache 12312@item show stack-cache 12313Show the current state of data caching for memory accesses. 12314 12315@kindex set code-cache 12316@item set code-cache on 12317@itemx set code-cache off 12318Enable or disable caching of code segment accesses. When @code{on}, 12319use caching. By default, this option is @code{on}. This improves 12320performance of disassembly in remote debugging. 12321 12322@kindex show code-cache 12323@item show code-cache 12324Show the current state of target memory cache for code segment 12325accesses. 12326 12327@kindex info dcache 12328@item info dcache @r{[}line@r{]} 12329Print the information about the performance of data cache of the 12330current inferior's address space. The information displayed 12331includes the dcache width and depth, and for each cache line, its 12332number, address, and how many times it was referenced. This 12333command is useful for debugging the data cache operation. 12334 12335If a line number is specified, the contents of that line will be 12336printed in hex. 12337 12338@item set dcache size @var{size} 12339@cindex dcache size 12340@kindex set dcache size 12341Set maximum number of entries in dcache (dcache depth above). 12342 12343@item set dcache line-size @var{line-size} 12344@cindex dcache line-size 12345@kindex set dcache line-size 12346Set number of bytes each dcache entry caches (dcache width above). 12347Must be a power of 2. 12348 12349@item show dcache size 12350@kindex show dcache size 12351Show maximum number of dcache entries. @xref{Caching Target Data, info dcache}. 12352 12353@item show dcache line-size 12354@kindex show dcache line-size 12355Show default size of dcache lines. 12356 12357@end table 12358 12359@node Searching Memory 12360@section Search Memory 12361@cindex searching memory 12362 12363Memory can be searched for a particular sequence of bytes with the 12364@code{find} command. 12365 12366@table @code 12367@kindex find 12368@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 12369@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 12370Search memory for the sequence of bytes specified by @var{val1}, @var{val2}, 12371etc. The search begins at address @var{start_addr} and continues for either 12372@var{len} bytes or through to @var{end_addr} inclusive. 12373@end table 12374 12375@var{s} and @var{n} are optional parameters. 12376They may be specified in either order, apart or together. 12377 12378@table @r 12379@item @var{s}, search query size 12380The size of each search query value. 12381 12382@table @code 12383@item b 12384bytes 12385@item h 12386halfwords (two bytes) 12387@item w 12388words (four bytes) 12389@item g 12390giant words (eight bytes) 12391@end table 12392 12393All values are interpreted in the current language. 12394This means, for example, that if the current source language is C/C@t{++} 12395then searching for the string ``hello'' includes the trailing '\0'. 12396The null terminator can be removed from searching by using casts, 12397e.g.: @samp{@{char[5]@}"hello"}. 12398 12399If the value size is not specified, it is taken from the 12400value's type in the current language. 12401This is useful when one wants to specify the search 12402pattern as a mixture of types. 12403Note that this means, for example, that in the case of C-like languages 12404a search for an untyped 0x42 will search for @samp{(int) 0x42} 12405which is typically four bytes. 12406 12407@item @var{n}, maximum number of finds 12408The maximum number of matches to print. The default is to print all finds. 12409@end table 12410 12411You can use strings as search values. Quote them with double-quotes 12412 (@code{"}). 12413The string value is copied into the search pattern byte by byte, 12414regardless of the endianness of the target and the size specification. 12415 12416The address of each match found is printed as well as a count of the 12417number of matches found. 12418 12419The address of the last value found is stored in convenience variable 12420@samp{$_}. 12421A count of the number of matches is stored in @samp{$numfound}. 12422 12423For example, if stopped at the @code{printf} in this function: 12424 12425@smallexample 12426void 12427hello () 12428@{ 12429 static char hello[] = "hello-hello"; 12430 static struct @{ char c; short s; int i; @} 12431 __attribute__ ((packed)) mixed 12432 = @{ 'c', 0x1234, 0x87654321 @}; 12433 printf ("%s\n", hello); 12434@} 12435@end smallexample 12436 12437@noindent 12438you get during debugging: 12439 12440@smallexample 12441(gdb) find &hello[0], +sizeof(hello), "hello" 124420x804956d <hello.1620+6> 124431 pattern found 12444(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o' 124450x8049567 <hello.1620> 124460x804956d <hello.1620+6> 124472 patterns found. 12448(gdb) find &hello[0], +sizeof(hello), @{char[5]@}"hello" 124490x8049567 <hello.1620> 124500x804956d <hello.1620+6> 124512 patterns found. 12452(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l' 124530x8049567 <hello.1620> 124541 pattern found 12455(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321 124560x8049560 <mixed.1625> 124571 pattern found 12458(gdb) print $numfound 12459$1 = 1 12460(gdb) print $_ 12461$2 = (void *) 0x8049560 12462@end smallexample 12463 12464@node Value Sizes 12465@section Value Sizes 12466 12467Whenever @value{GDBN} prints a value memory will be allocated within 12468@value{GDBN} to hold the contents of the value. It is possible in 12469some languages with dynamic typing systems, that an invalid program 12470may indicate a value that is incorrectly large, this in turn may cause 12471@value{GDBN} to try and allocate an overly large ammount of memory. 12472 12473@table @code 12474@kindex set max-value-size 12475@item set max-value-size @var{bytes} 12476@itemx set max-value-size unlimited 12477Set the maximum size of memory that @value{GDBN} will allocate for the 12478contents of a value to @var{bytes}, trying to display a value that 12479requires more memory than that will result in an error. 12480 12481Setting this variable does not effect values that have already been 12482allocated within @value{GDBN}, only future allocations. 12483 12484There's a minimum size that @code{max-value-size} can be set to in 12485order that @value{GDBN} can still operate correctly, this minimum is 12486currently 16 bytes. 12487 12488The limit applies to the results of some subexpressions as well as to 12489complete expressions. For example, an expression denoting a simple 12490integer component, such as @code{x.y.z}, may fail if the size of 12491@var{x.y} is dynamic and exceeds @var{bytes}. On the other hand, 12492@value{GDBN} is sometimes clever; the expression @code{A[i]}, where 12493@var{A} is an array variable with non-constant size, will generally 12494succeed regardless of the bounds on @var{A}, as long as the component 12495size is less than @var{bytes}. 12496 12497The default value of @code{max-value-size} is currently 64k. 12498 12499@kindex show max-value-size 12500@item show max-value-size 12501Show the maximum size of memory, in bytes, that @value{GDBN} will 12502allocate for the contents of a value. 12503@end table 12504 12505@node Optimized Code 12506@chapter Debugging Optimized Code 12507@cindex optimized code, debugging 12508@cindex debugging optimized code 12509 12510Almost all compilers support optimization. With optimization 12511disabled, the compiler generates assembly code that corresponds 12512directly to your source code, in a simplistic way. As the compiler 12513applies more powerful optimizations, the generated assembly code 12514diverges from your original source code. With help from debugging 12515information generated by the compiler, @value{GDBN} can map from 12516the running program back to constructs from your original source. 12517 12518@value{GDBN} is more accurate with optimization disabled. If you 12519can recompile without optimization, it is easier to follow the 12520progress of your program during debugging. But, there are many cases 12521where you may need to debug an optimized version. 12522 12523When you debug a program compiled with @samp{-g -O}, remember that the 12524optimizer has rearranged your code; the debugger shows you what is 12525really there. Do not be too surprised when the execution path does not 12526exactly match your source file! An extreme example: if you define a 12527variable, but never use it, @value{GDBN} never sees that 12528variable---because the compiler optimizes it out of existence. 12529 12530Some things do not work as well with @samp{-g -O} as with just 12531@samp{-g}, particularly on machines with instruction scheduling. If in 12532doubt, recompile with @samp{-g} alone, and if this fixes the problem, 12533please report it to us as a bug (including a test case!). 12534@xref{Variables}, for more information about debugging optimized code. 12535 12536@menu 12537* Inline Functions:: How @value{GDBN} presents inlining 12538* Tail Call Frames:: @value{GDBN} analysis of jumps to functions 12539@end menu 12540 12541@node Inline Functions 12542@section Inline Functions 12543@cindex inline functions, debugging 12544 12545@dfn{Inlining} is an optimization that inserts a copy of the function 12546body directly at each call site, instead of jumping to a shared 12547routine. @value{GDBN} displays inlined functions just like 12548non-inlined functions. They appear in backtraces. You can view their 12549arguments and local variables, step into them with @code{step}, skip 12550them with @code{next}, and escape from them with @code{finish}. 12551You can check whether a function was inlined by using the 12552@code{info frame} command. 12553 12554For @value{GDBN} to support inlined functions, the compiler must 12555record information about inlining in the debug information --- 12556@value{NGCC} using the @sc{dwarf 2} format does this, and several 12557other compilers do also. @value{GDBN} only supports inlined functions 12558when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1 12559do not emit two required attributes (@samp{DW_AT_call_file} and 12560@samp{DW_AT_call_line}); @value{GDBN} does not display inlined 12561function calls with earlier versions of @value{NGCC}. It instead 12562displays the arguments and local variables of inlined functions as 12563local variables in the caller. 12564 12565The body of an inlined function is directly included at its call site; 12566unlike a non-inlined function, there are no instructions devoted to 12567the call. @value{GDBN} still pretends that the call site and the 12568start of the inlined function are different instructions. Stepping to 12569the call site shows the call site, and then stepping again shows 12570the first line of the inlined function, even though no additional 12571instructions are executed. 12572 12573This makes source-level debugging much clearer; you can see both the 12574context of the call and then the effect of the call. Only stepping by 12575a single instruction using @code{stepi} or @code{nexti} does not do 12576this; single instruction steps always show the inlined body. 12577 12578There are some ways that @value{GDBN} does not pretend that inlined 12579function calls are the same as normal calls: 12580 12581@itemize @bullet 12582@item 12583Setting breakpoints at the call site of an inlined function may not 12584work, because the call site does not contain any code. @value{GDBN} 12585may incorrectly move the breakpoint to the next line of the enclosing 12586function, after the call. This limitation will be removed in a future 12587version of @value{GDBN}; until then, set a breakpoint on an earlier line 12588or inside the inlined function instead. 12589 12590@item 12591@value{GDBN} cannot locate the return value of inlined calls after 12592using the @code{finish} command. This is a limitation of compiler-generated 12593debugging information; after @code{finish}, you can step to the next line 12594and print a variable where your program stored the return value. 12595 12596@end itemize 12597 12598@node Tail Call Frames 12599@section Tail Call Frames 12600@cindex tail call frames, debugging 12601 12602Function @code{B} can call function @code{C} in its very last statement. In 12603unoptimized compilation the call of @code{C} is immediately followed by return 12604instruction at the end of @code{B} code. Optimizing compiler may replace the 12605call and return in function @code{B} into one jump to function @code{C} 12606instead. Such use of a jump instruction is called @dfn{tail call}. 12607 12608During execution of function @code{C}, there will be no indication in the 12609function call stack frames that it was tail-called from @code{B}. If function 12610@code{A} regularly calls function @code{B} which tail-calls function @code{C}, 12611then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in 12612some cases @value{GDBN} can determine that @code{C} was tail-called from 12613@code{B}, and it will then create fictitious call frame for that, with the 12614return address set up as if @code{B} called @code{C} normally. 12615 12616This functionality is currently supported only by DWARF 2 debugging format and 12617the compiler has to produce @samp{DW_TAG_call_site} tags. With 12618@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 12619this information. 12620 12621@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame 12622kind by text @code{tail call frame} such as in this sample @value{GDBN} output: 12623 12624@smallexample 12625(gdb) x/i $pc - 2 12626 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)> 12627(gdb) info frame 12628Stack level 1, frame at 0x7fffffffda30: 12629 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5 12630 tail call frame, caller of frame at 0x7fffffffda30 12631 source language c++. 12632 Arglist at unknown address. 12633 Locals at unknown address, Previous frame's sp is 0x7fffffffda30 12634@end smallexample 12635 12636The detection of all the possible code path executions can find them ambiguous. 12637There is no execution history stored (possible @ref{Reverse Execution} is never 12638used for this purpose) and the last known caller could have reached the known 12639callee by multiple different jump sequences. In such case @value{GDBN} still 12640tries to show at least all the unambiguous top tail callers and all the 12641unambiguous bottom tail calees, if any. 12642 12643@table @code 12644@anchor{set debug entry-values} 12645@item set debug entry-values 12646@kindex set debug entry-values 12647When set to on, enables printing of analysis messages for both frame argument 12648values at function entry and tail calls. It will show all the possible valid 12649tail calls code paths it has considered. It will also print the intersection 12650of them with the final unambiguous (possibly partial or even empty) code path 12651result. 12652 12653@item show debug entry-values 12654@kindex show debug entry-values 12655Show the current state of analysis messages printing for both frame argument 12656values at function entry and tail calls. 12657@end table 12658 12659The analysis messages for tail calls can for example show why the virtual tail 12660call frame for function @code{c} has not been recognized (due to the indirect 12661reference by variable @code{x}): 12662 12663@smallexample 12664static void __attribute__((noinline, noclone)) c (void); 12665void (*x) (void) = c; 12666static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 12667static void __attribute__((noinline, noclone)) c (void) @{ a (); @} 12668int main (void) @{ x (); return 0; @} 12669 12670Breakpoint 1, DW_OP_entry_value resolving cannot find 12671DW_TAG_call_site 0x40039a in main 12672a () at t.c:3 126733 static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 12674(gdb) bt 12675#0 a () at t.c:3 12676#1 0x000000000040039a in main () at t.c:5 12677@end smallexample 12678 12679Another possibility is an ambiguous virtual tail call frames resolution: 12680 12681@smallexample 12682int i; 12683static void __attribute__((noinline, noclone)) f (void) @{ i++; @} 12684static void __attribute__((noinline, noclone)) e (void) @{ f (); @} 12685static void __attribute__((noinline, noclone)) d (void) @{ f (); @} 12686static void __attribute__((noinline, noclone)) c (void) @{ d (); @} 12687static void __attribute__((noinline, noclone)) b (void) 12688@{ if (i) c (); else e (); @} 12689static void __attribute__((noinline, noclone)) a (void) @{ b (); @} 12690int main (void) @{ a (); return 0; @} 12691 12692tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d) 12693tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e) 12694tailcall: reduced: 0x4004d2(a) | 12695(gdb) bt 12696#0 f () at t.c:2 12697#1 0x00000000004004d2 in a () at t.c:8 12698#2 0x0000000000400395 in main () at t.c:9 12699@end smallexample 12700 12701@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f} 12702@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f} 12703 12704@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK. 12705@ifset HAVE_MAKEINFO_CLICK 12706@set ARROW @click{} 12707@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}} 12708@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}} 12709@end ifset 12710@ifclear HAVE_MAKEINFO_CLICK 12711@set ARROW -> 12712@set CALLSEQ1B @value{CALLSEQ1A} 12713@set CALLSEQ2B @value{CALLSEQ2A} 12714@end ifclear 12715 12716Frames #0 and #2 are real, #1 is a virtual tail call frame. 12717The code can have possible execution paths @value{CALLSEQ1B} or 12718@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state. 12719 12720@code{initial:} state shows some random possible calling sequence @value{GDBN} 12721has found. It then finds another possible calling sequcen - that one is 12722prefixed by @code{compare:}. The non-ambiguous intersection of these two is 12723printed as the @code{reduced:} calling sequence. That one could have many 12724futher @code{compare:} and @code{reduced:} statements as long as there remain 12725any non-ambiguous sequence entries. 12726 12727For the frame of function @code{b} in both cases there are different possible 12728@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is 12729also ambigous. The only non-ambiguous frame is the one for function @code{a}, 12730therefore this one is displayed to the user while the ambiguous frames are 12731omitted. 12732 12733There can be also reasons why printing of frame argument values at function 12734entry may fail: 12735 12736@smallexample 12737int v; 12738static void __attribute__((noinline, noclone)) c (int i) @{ v++; @} 12739static void __attribute__((noinline, noclone)) a (int i); 12740static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @} 12741static void __attribute__((noinline, noclone)) a (int i) 12742@{ if (i) b (i - 1); else c (0); @} 12743int main (void) @{ a (5); return 0; @} 12744 12745(gdb) bt 12746#0 c (i=i@@entry=0) at t.c:2 12747#1 0x0000000000400428 in a (DW_OP_entry_value resolving has found 12748function "a" at 0x400420 can call itself via tail calls 12749i=<optimized out>) at t.c:6 12750#2 0x000000000040036e in main () at t.c:7 12751@end smallexample 12752 12753@value{GDBN} cannot find out from the inferior state if and how many times did 12754function @code{a} call itself (via function @code{b}) as these calls would be 12755tail calls. Such tail calls would modify thue @code{i} variable, therefore 12756@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN} 12757prints @code{<optimized out>} instead. 12758 12759@node Macros 12760@chapter C Preprocessor Macros 12761 12762Some languages, such as C and C@t{++}, provide a way to define and invoke 12763``preprocessor macros'' which expand into strings of tokens. 12764@value{GDBN} can evaluate expressions containing macro invocations, show 12765the result of macro expansion, and show a macro's definition, including 12766where it was defined. 12767 12768You may need to compile your program specially to provide @value{GDBN} 12769with information about preprocessor macros. Most compilers do not 12770include macros in their debugging information, even when you compile 12771with the @option{-g} flag. @xref{Compilation}. 12772 12773A program may define a macro at one point, remove that definition later, 12774and then provide a different definition after that. Thus, at different 12775points in the program, a macro may have different definitions, or have 12776no definition at all. If there is a current stack frame, @value{GDBN} 12777uses the macros in scope at that frame's source code line. Otherwise, 12778@value{GDBN} uses the macros in scope at the current listing location; 12779see @ref{List}. 12780 12781Whenever @value{GDBN} evaluates an expression, it always expands any 12782macro invocations present in the expression. @value{GDBN} also provides 12783the following commands for working with macros explicitly. 12784 12785@table @code 12786 12787@kindex macro expand 12788@cindex macro expansion, showing the results of preprocessor 12789@cindex preprocessor macro expansion, showing the results of 12790@cindex expanding preprocessor macros 12791@item macro expand @var{expression} 12792@itemx macro exp @var{expression} 12793Show the results of expanding all preprocessor macro invocations in 12794@var{expression}. Since @value{GDBN} simply expands macros, but does 12795not parse the result, @var{expression} need not be a valid expression; 12796it can be any string of tokens. 12797 12798@kindex macro exp1 12799@item macro expand-once @var{expression} 12800@itemx macro exp1 @var{expression} 12801@cindex expand macro once 12802@i{(This command is not yet implemented.)} Show the results of 12803expanding those preprocessor macro invocations that appear explicitly in 12804@var{expression}. Macro invocations appearing in that expansion are 12805left unchanged. This command allows you to see the effect of a 12806particular macro more clearly, without being confused by further 12807expansions. Since @value{GDBN} simply expands macros, but does not 12808parse the result, @var{expression} need not be a valid expression; it 12809can be any string of tokens. 12810 12811@kindex info macro 12812@cindex macro definition, showing 12813@cindex definition of a macro, showing 12814@cindex macros, from debug info 12815@item info macro [-a|-all] [--] @var{macro} 12816Show the current definition or all definitions of the named @var{macro}, 12817and describe the source location or compiler command-line where that 12818definition was established. The optional double dash is to signify the end of 12819argument processing and the beginning of @var{macro} for non C-like macros where 12820the macro may begin with a hyphen. 12821 12822@kindex info macros 12823@item info macros @var{location} 12824Show all macro definitions that are in effect at the location specified 12825by @var{location}, and describe the source location or compiler 12826command-line where those definitions were established. 12827 12828@kindex macro define 12829@cindex user-defined macros 12830@cindex defining macros interactively 12831@cindex macros, user-defined 12832@item macro define @var{macro} @var{replacement-list} 12833@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list} 12834Introduce a definition for a preprocessor macro named @var{macro}, 12835invocations of which are replaced by the tokens given in 12836@var{replacement-list}. The first form of this command defines an 12837``object-like'' macro, which takes no arguments; the second form 12838defines a ``function-like'' macro, which takes the arguments given in 12839@var{arglist}. 12840 12841A definition introduced by this command is in scope in every 12842expression evaluated in @value{GDBN}, until it is removed with the 12843@code{macro undef} command, described below. The definition overrides 12844all definitions for @var{macro} present in the program being debugged, 12845as well as any previous user-supplied definition. 12846 12847@kindex macro undef 12848@item macro undef @var{macro} 12849Remove any user-supplied definition for the macro named @var{macro}. 12850This command only affects definitions provided with the @code{macro 12851define} command, described above; it cannot remove definitions present 12852in the program being debugged. 12853 12854@kindex macro list 12855@item macro list 12856List all the macros defined using the @code{macro define} command. 12857@end table 12858 12859@cindex macros, example of debugging with 12860Here is a transcript showing the above commands in action. First, we 12861show our source files: 12862 12863@smallexample 12864$ cat sample.c 12865#include <stdio.h> 12866#include "sample.h" 12867 12868#define M 42 12869#define ADD(x) (M + x) 12870 12871main () 12872@{ 12873#define N 28 12874 printf ("Hello, world!\n"); 12875#undef N 12876 printf ("We're so creative.\n"); 12877#define N 1729 12878 printf ("Goodbye, world!\n"); 12879@} 12880$ cat sample.h 12881#define Q < 12882$ 12883@end smallexample 12884 12885Now, we compile the program using the @sc{gnu} C compiler, 12886@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the 12887minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3} 12888and @option{-gdwarf-4}; we recommend always choosing the most recent 12889version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler 12890includes information about preprocessor macros in the debugging 12891information. 12892 12893@smallexample 12894$ gcc -gdwarf-2 -g3 sample.c -o sample 12895$ 12896@end smallexample 12897 12898Now, we start @value{GDBN} on our sample program: 12899 12900@smallexample 12901$ gdb -nw sample 12902GNU gdb 2002-05-06-cvs 12903Copyright 2002 Free Software Foundation, Inc. 12904GDB is free software, @dots{} 12905(@value{GDBP}) 12906@end smallexample 12907 12908We can expand macros and examine their definitions, even when the 12909program is not running. @value{GDBN} uses the current listing position 12910to decide which macro definitions are in scope: 12911 12912@smallexample 12913(@value{GDBP}) list main 129143 129154 #define M 42 129165 #define ADD(x) (M + x) 129176 129187 main () 129198 @{ 129209 #define N 28 1292110 printf ("Hello, world!\n"); 1292211 #undef N 1292312 printf ("We're so creative.\n"); 12924(@value{GDBP}) info macro ADD 12925Defined at /home/jimb/gdb/macros/play/sample.c:5 12926#define ADD(x) (M + x) 12927(@value{GDBP}) info macro Q 12928Defined at /home/jimb/gdb/macros/play/sample.h:1 12929 included at /home/jimb/gdb/macros/play/sample.c:2 12930#define Q < 12931(@value{GDBP}) macro expand ADD(1) 12932expands to: (42 + 1) 12933(@value{GDBP}) macro expand-once ADD(1) 12934expands to: once (M + 1) 12935(@value{GDBP}) 12936@end smallexample 12937 12938In the example above, note that @code{macro expand-once} expands only 12939the macro invocation explicit in the original text --- the invocation of 12940@code{ADD} --- but does not expand the invocation of the macro @code{M}, 12941which was introduced by @code{ADD}. 12942 12943Once the program is running, @value{GDBN} uses the macro definitions in 12944force at the source line of the current stack frame: 12945 12946@smallexample 12947(@value{GDBP}) break main 12948Breakpoint 1 at 0x8048370: file sample.c, line 10. 12949(@value{GDBP}) run 12950Starting program: /home/jimb/gdb/macros/play/sample 12951 12952Breakpoint 1, main () at sample.c:10 1295310 printf ("Hello, world!\n"); 12954(@value{GDBP}) 12955@end smallexample 12956 12957At line 10, the definition of the macro @code{N} at line 9 is in force: 12958 12959@smallexample 12960(@value{GDBP}) info macro N 12961Defined at /home/jimb/gdb/macros/play/sample.c:9 12962#define N 28 12963(@value{GDBP}) macro expand N Q M 12964expands to: 28 < 42 12965(@value{GDBP}) print N Q M 12966$1 = 1 12967(@value{GDBP}) 12968@end smallexample 12969 12970As we step over directives that remove @code{N}'s definition, and then 12971give it a new definition, @value{GDBN} finds the definition (or lack 12972thereof) in force at each point: 12973 12974@smallexample 12975(@value{GDBP}) next 12976Hello, world! 1297712 printf ("We're so creative.\n"); 12978(@value{GDBP}) info macro N 12979The symbol `N' has no definition as a C/C++ preprocessor macro 12980at /home/jimb/gdb/macros/play/sample.c:12 12981(@value{GDBP}) next 12982We're so creative. 1298314 printf ("Goodbye, world!\n"); 12984(@value{GDBP}) info macro N 12985Defined at /home/jimb/gdb/macros/play/sample.c:13 12986#define N 1729 12987(@value{GDBP}) macro expand N Q M 12988expands to: 1729 < 42 12989(@value{GDBP}) print N Q M 12990$2 = 0 12991(@value{GDBP}) 12992@end smallexample 12993 12994In addition to source files, macros can be defined on the compilation command 12995line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in 12996such a way, @value{GDBN} displays the location of their definition as line zero 12997of the source file submitted to the compiler. 12998 12999@smallexample 13000(@value{GDBP}) info macro __STDC__ 13001Defined at /home/jimb/gdb/macros/play/sample.c:0 13002-D__STDC__=1 13003(@value{GDBP}) 13004@end smallexample 13005 13006 13007@node Tracepoints 13008@chapter Tracepoints 13009@c This chapter is based on the documentation written by Michael 13010@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni. 13011 13012@cindex tracepoints 13013In some applications, it is not feasible for the debugger to interrupt 13014the program's execution long enough for the developer to learn 13015anything helpful about its behavior. If the program's correctness 13016depends on its real-time behavior, delays introduced by a debugger 13017might cause the program to change its behavior drastically, or perhaps 13018fail, even when the code itself is correct. It is useful to be able 13019to observe the program's behavior without interrupting it. 13020 13021Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can 13022specify locations in the program, called @dfn{tracepoints}, and 13023arbitrary expressions to evaluate when those tracepoints are reached. 13024Later, using the @code{tfind} command, you can examine the values 13025those expressions had when the program hit the tracepoints. The 13026expressions may also denote objects in memory---structures or arrays, 13027for example---whose values @value{GDBN} should record; while visiting 13028a particular tracepoint, you may inspect those objects as if they were 13029in memory at that moment. However, because @value{GDBN} records these 13030values without interacting with you, it can do so quickly and 13031unobtrusively, hopefully not disturbing the program's behavior. 13032 13033The tracepoint facility is currently available only for remote 13034targets. @xref{Targets}. In addition, your remote target must know 13035how to collect trace data. This functionality is implemented in the 13036remote stub; however, none of the stubs distributed with @value{GDBN} 13037support tracepoints as of this writing. The format of the remote 13038packets used to implement tracepoints are described in @ref{Tracepoint 13039Packets}. 13040 13041It is also possible to get trace data from a file, in a manner reminiscent 13042of corefiles; you specify the filename, and use @code{tfind} to search 13043through the file. @xref{Trace Files}, for more details. 13044 13045This chapter describes the tracepoint commands and features. 13046 13047@menu 13048* Set Tracepoints:: 13049* Analyze Collected Data:: 13050* Tracepoint Variables:: 13051* Trace Files:: 13052@end menu 13053 13054@node Set Tracepoints 13055@section Commands to Set Tracepoints 13056 13057Before running such a @dfn{trace experiment}, an arbitrary number of 13058tracepoints can be set. A tracepoint is actually a special type of 13059breakpoint (@pxref{Set Breaks}), so you can manipulate it using 13060standard breakpoint commands. For instance, as with breakpoints, 13061tracepoint numbers are successive integers starting from one, and many 13062of the commands associated with tracepoints take the tracepoint number 13063as their argument, to identify which tracepoint to work on. 13064 13065For each tracepoint, you can specify, in advance, some arbitrary set 13066of data that you want the target to collect in the trace buffer when 13067it hits that tracepoint. The collected data can include registers, 13068local variables, or global data. Later, you can use @value{GDBN} 13069commands to examine the values these data had at the time the 13070tracepoint was hit. 13071 13072Tracepoints do not support every breakpoint feature. Ignore counts on 13073tracepoints have no effect, and tracepoints cannot run @value{GDBN} 13074commands when they are hit. Tracepoints may not be thread-specific 13075either. 13076 13077@cindex fast tracepoints 13078Some targets may support @dfn{fast tracepoints}, which are inserted in 13079a different way (such as with a jump instead of a trap), that is 13080faster but possibly restricted in where they may be installed. 13081 13082@cindex static tracepoints 13083@cindex markers, static tracepoints 13084@cindex probing markers, static tracepoints 13085Regular and fast tracepoints are dynamic tracing facilities, meaning 13086that they can be used to insert tracepoints at (almost) any location 13087in the target. Some targets may also support controlling @dfn{static 13088tracepoints} from @value{GDBN}. With static tracing, a set of 13089instrumentation points, also known as @dfn{markers}, are embedded in 13090the target program, and can be activated or deactivated by name or 13091address. These are usually placed at locations which facilitate 13092investigating what the target is actually doing. @value{GDBN}'s 13093support for static tracing includes being able to list instrumentation 13094points, and attach them with @value{GDBN} defined high level 13095tracepoints that expose the whole range of convenience of 13096@value{GDBN}'s tracepoints support. Namely, support for collecting 13097registers values and values of global or local (to the instrumentation 13098point) variables; tracepoint conditions and trace state variables. 13099The act of installing a @value{GDBN} static tracepoint on an 13100instrumentation point, or marker, is referred to as @dfn{probing} a 13101static tracepoint marker. 13102 13103@code{gdbserver} supports tracepoints on some target systems. 13104@xref{Server,,Tracepoints support in @code{gdbserver}}. 13105 13106This section describes commands to set tracepoints and associated 13107conditions and actions. 13108 13109@menu 13110* Create and Delete Tracepoints:: 13111* Enable and Disable Tracepoints:: 13112* Tracepoint Passcounts:: 13113* Tracepoint Conditions:: 13114* Trace State Variables:: 13115* Tracepoint Actions:: 13116* Listing Tracepoints:: 13117* Listing Static Tracepoint Markers:: 13118* Starting and Stopping Trace Experiments:: 13119* Tracepoint Restrictions:: 13120@end menu 13121 13122@node Create and Delete Tracepoints 13123@subsection Create and Delete Tracepoints 13124 13125@table @code 13126@cindex set tracepoint 13127@kindex trace 13128@item trace @var{location} 13129The @code{trace} command is very similar to the @code{break} command. 13130Its argument @var{location} can be any valid location. 13131@xref{Specify Location}. The @code{trace} command defines a tracepoint, 13132which is a point in the target program where the debugger will briefly stop, 13133collect some data, and then allow the program to continue. Setting a tracepoint 13134or changing its actions takes effect immediately if the remote stub 13135supports the @samp{InstallInTrace} feature (@pxref{install tracepoint 13136in tracing}). 13137If remote stub doesn't support the @samp{InstallInTrace} feature, all 13138these changes don't take effect until the next @code{tstart} 13139command, and once a trace experiment is running, further changes will 13140not have any effect until the next trace experiment starts. In addition, 13141@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose 13142address is not yet resolved. (This is similar to pending breakpoints.) 13143Pending tracepoints are not downloaded to the target and not installed 13144until they are resolved. The resolution of pending tracepoints requires 13145@value{GDBN} support---when debugging with the remote target, and 13146@value{GDBN} disconnects from the remote stub (@pxref{disconnected 13147tracing}), pending tracepoints can not be resolved (and downloaded to 13148the remote stub) while @value{GDBN} is disconnected. 13149 13150Here are some examples of using the @code{trace} command: 13151 13152@smallexample 13153(@value{GDBP}) @b{trace foo.c:121} // a source file and line number 13154 13155(@value{GDBP}) @b{trace +2} // 2 lines forward 13156 13157(@value{GDBP}) @b{trace my_function} // first source line of function 13158 13159(@value{GDBP}) @b{trace *my_function} // EXACT start address of function 13160 13161(@value{GDBP}) @b{trace *0x2117c4} // an address 13162@end smallexample 13163 13164@noindent 13165You can abbreviate @code{trace} as @code{tr}. 13166 13167@item trace @var{location} if @var{cond} 13168Set a tracepoint with condition @var{cond}; evaluate the expression 13169@var{cond} each time the tracepoint is reached, and collect data only 13170if the value is nonzero---that is, if @var{cond} evaluates as true. 13171@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more 13172information on tracepoint conditions. 13173 13174@item ftrace @var{location} [ if @var{cond} ] 13175@cindex set fast tracepoint 13176@cindex fast tracepoints, setting 13177@kindex ftrace 13178The @code{ftrace} command sets a fast tracepoint. For targets that 13179support them, fast tracepoints will use a more efficient but possibly 13180less general technique to trigger data collection, such as a jump 13181instruction instead of a trap, or some sort of hardware support. It 13182may not be possible to create a fast tracepoint at the desired 13183location, in which case the command will exit with an explanatory 13184message. 13185 13186@value{GDBN} handles arguments to @code{ftrace} exactly as for 13187@code{trace}. 13188 13189On 32-bit x86-architecture systems, fast tracepoints normally need to 13190be placed at an instruction that is 5 bytes or longer, but can be 13191placed at 4-byte instructions if the low 64K of memory of the target 13192program is available to install trampolines. Some Unix-type systems, 13193such as @sc{gnu}/Linux, exclude low addresses from the program's 13194address space; but for instance with the Linux kernel it is possible 13195to let @value{GDBN} use this area by doing a @command{sysctl} command 13196to set the @code{mmap_min_addr} kernel parameter, as in 13197 13198@example 13199sudo sysctl -w vm.mmap_min_addr=32768 13200@end example 13201 13202@noindent 13203which sets the low address to 32K, which leaves plenty of room for 13204trampolines. The minimum address should be set to a page boundary. 13205 13206@item strace @var{location} [ if @var{cond} ] 13207@cindex set static tracepoint 13208@cindex static tracepoints, setting 13209@cindex probe static tracepoint marker 13210@kindex strace 13211The @code{strace} command sets a static tracepoint. For targets that 13212support it, setting a static tracepoint probes a static 13213instrumentation point, or marker, found at @var{location}. It may not 13214be possible to set a static tracepoint at the desired location, in 13215which case the command will exit with an explanatory message. 13216 13217@value{GDBN} handles arguments to @code{strace} exactly as for 13218@code{trace}, with the addition that the user can also specify 13219@code{-m @var{marker}} as @var{location}. This probes the marker 13220identified by the @var{marker} string identifier. This identifier 13221depends on the static tracepoint backend library your program is 13222using. You can find all the marker identifiers in the @samp{ID} field 13223of the @code{info static-tracepoint-markers} command output. 13224@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint 13225Markers}. For example, in the following small program using the UST 13226tracing engine: 13227 13228@smallexample 13229main () 13230@{ 13231 trace_mark(ust, bar33, "str %s", "FOOBAZ"); 13232@} 13233@end smallexample 13234 13235@noindent 13236the marker id is composed of joining the first two arguments to the 13237@code{trace_mark} call with a slash, which translates to: 13238 13239@smallexample 13240(@value{GDBP}) info static-tracepoint-markers 13241Cnt Enb ID Address What 132421 n ust/bar33 0x0000000000400ddc in main at stexample.c:22 13243 Data: "str %s" 13244[etc...] 13245@end smallexample 13246 13247@noindent 13248so you may probe the marker above with: 13249 13250@smallexample 13251(@value{GDBP}) strace -m ust/bar33 13252@end smallexample 13253 13254Static tracepoints accept an extra collect action --- @code{collect 13255$_sdata}. This collects arbitrary user data passed in the probe point 13256call to the tracing library. In the UST example above, you'll see 13257that the third argument to @code{trace_mark} is a printf-like format 13258string. The user data is then the result of running that formating 13259string against the following arguments. Note that @code{info 13260static-tracepoint-markers} command output lists that format string in 13261the @samp{Data:} field. 13262 13263You can inspect this data when analyzing the trace buffer, by printing 13264the $_sdata variable like any other variable available to 13265@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}. 13266 13267@vindex $tpnum 13268@cindex last tracepoint number 13269@cindex recent tracepoint number 13270@cindex tracepoint number 13271The convenience variable @code{$tpnum} records the tracepoint number 13272of the most recently set tracepoint. 13273 13274@kindex delete tracepoint 13275@cindex tracepoint deletion 13276@item delete tracepoint @r{[}@var{num}@r{]} 13277Permanently delete one or more tracepoints. With no argument, the 13278default is to delete all tracepoints. Note that the regular 13279@code{delete} command can remove tracepoints also. 13280 13281Examples: 13282 13283@smallexample 13284(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints 13285 13286(@value{GDBP}) @b{delete trace} // remove all tracepoints 13287@end smallexample 13288 13289@noindent 13290You can abbreviate this command as @code{del tr}. 13291@end table 13292 13293@node Enable and Disable Tracepoints 13294@subsection Enable and Disable Tracepoints 13295 13296These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}. 13297 13298@table @code 13299@kindex disable tracepoint 13300@item disable tracepoint @r{[}@var{num}@r{]} 13301Disable tracepoint @var{num}, or all tracepoints if no argument 13302@var{num} is given. A disabled tracepoint will have no effect during 13303a trace experiment, but it is not forgotten. You can re-enable 13304a disabled tracepoint using the @code{enable tracepoint} command. 13305If the command is issued during a trace experiment and the debug target 13306has support for disabling tracepoints during a trace experiment, then the 13307change will be effective immediately. Otherwise, it will be applied to the 13308next trace experiment. 13309 13310@kindex enable tracepoint 13311@item enable tracepoint @r{[}@var{num}@r{]} 13312Enable tracepoint @var{num}, or all tracepoints. If this command is 13313issued during a trace experiment and the debug target supports enabling 13314tracepoints during a trace experiment, then the enabled tracepoints will 13315become effective immediately. Otherwise, they will become effective the 13316next time a trace experiment is run. 13317@end table 13318 13319@node Tracepoint Passcounts 13320@subsection Tracepoint Passcounts 13321 13322@table @code 13323@kindex passcount 13324@cindex tracepoint pass count 13325@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]} 13326Set the @dfn{passcount} of a tracepoint. The passcount is a way to 13327automatically stop a trace experiment. If a tracepoint's passcount is 13328@var{n}, then the trace experiment will be automatically stopped on 13329the @var{n}'th time that tracepoint is hit. If the tracepoint number 13330@var{num} is not specified, the @code{passcount} command sets the 13331passcount of the most recently defined tracepoint. If no passcount is 13332given, the trace experiment will run until stopped explicitly by the 13333user. 13334 13335Examples: 13336 13337@smallexample 13338(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of 13339@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2} 13340 13341(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the 13342@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.} 13343(@value{GDBP}) @b{trace foo} 13344(@value{GDBP}) @b{pass 3} 13345(@value{GDBP}) @b{trace bar} 13346(@value{GDBP}) @b{pass 2} 13347(@value{GDBP}) @b{trace baz} 13348(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been 13349@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has} 13350@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times} 13351@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.} 13352@end smallexample 13353@end table 13354 13355@node Tracepoint Conditions 13356@subsection Tracepoint Conditions 13357@cindex conditional tracepoints 13358@cindex tracepoint conditions 13359 13360The simplest sort of tracepoint collects data every time your program 13361reaches a specified place. You can also specify a @dfn{condition} for 13362a tracepoint. A condition is just a Boolean expression in your 13363programming language (@pxref{Expressions, ,Expressions}). A 13364tracepoint with a condition evaluates the expression each time your 13365program reaches it, and data collection happens only if the condition 13366is true. 13367 13368Tracepoint conditions can be specified when a tracepoint is set, by 13369using @samp{if} in the arguments to the @code{trace} command. 13370@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can 13371also be set or changed at any time with the @code{condition} command, 13372just as with breakpoints. 13373 13374Unlike breakpoint conditions, @value{GDBN} does not actually evaluate 13375the conditional expression itself. Instead, @value{GDBN} encodes the 13376expression into an agent expression (@pxref{Agent Expressions}) 13377suitable for execution on the target, independently of @value{GDBN}. 13378Global variables become raw memory locations, locals become stack 13379accesses, and so forth. 13380 13381For instance, suppose you have a function that is usually called 13382frequently, but should not be called after an error has occurred. You 13383could use the following tracepoint command to collect data about calls 13384of that function that happen while the error code is propagating 13385through the program; an unconditional tracepoint could end up 13386collecting thousands of useless trace frames that you would have to 13387search through. 13388 13389@smallexample 13390(@value{GDBP}) @kbd{trace normal_operation if errcode > 0} 13391@end smallexample 13392 13393@node Trace State Variables 13394@subsection Trace State Variables 13395@cindex trace state variables 13396 13397A @dfn{trace state variable} is a special type of variable that is 13398created and managed by target-side code. The syntax is the same as 13399that for GDB's convenience variables (a string prefixed with ``$''), 13400but they are stored on the target. They must be created explicitly, 13401using a @code{tvariable} command. They are always 64-bit signed 13402integers. 13403 13404Trace state variables are remembered by @value{GDBN}, and downloaded 13405to the target along with tracepoint information when the trace 13406experiment starts. There are no intrinsic limits on the number of 13407trace state variables, beyond memory limitations of the target. 13408 13409@cindex convenience variables, and trace state variables 13410Although trace state variables are managed by the target, you can use 13411them in print commands and expressions as if they were convenience 13412variables; @value{GDBN} will get the current value from the target 13413while the trace experiment is running. Trace state variables share 13414the same namespace as other ``$'' variables, which means that you 13415cannot have trace state variables with names like @code{$23} or 13416@code{$pc}, nor can you have a trace state variable and a convenience 13417variable with the same name. 13418 13419@table @code 13420 13421@item tvariable $@var{name} [ = @var{expression} ] 13422@kindex tvariable 13423The @code{tvariable} command creates a new trace state variable named 13424@code{$@var{name}}, and optionally gives it an initial value of 13425@var{expression}. The @var{expression} is evaluated when this command is 13426entered; the result will be converted to an integer if possible, 13427otherwise @value{GDBN} will report an error. A subsequent 13428@code{tvariable} command specifying the same name does not create a 13429variable, but instead assigns the supplied initial value to the 13430existing variable of that name, overwriting any previous initial 13431value. The default initial value is 0. 13432 13433@item info tvariables 13434@kindex info tvariables 13435List all the trace state variables along with their initial values. 13436Their current values may also be displayed, if the trace experiment is 13437currently running. 13438 13439@item delete tvariable @r{[} $@var{name} @dots{} @r{]} 13440@kindex delete tvariable 13441Delete the given trace state variables, or all of them if no arguments 13442are specified. 13443 13444@end table 13445 13446@node Tracepoint Actions 13447@subsection Tracepoint Action Lists 13448 13449@table @code 13450@kindex actions 13451@cindex tracepoint actions 13452@item actions @r{[}@var{num}@r{]} 13453This command will prompt for a list of actions to be taken when the 13454tracepoint is hit. If the tracepoint number @var{num} is not 13455specified, this command sets the actions for the one that was most 13456recently defined (so that you can define a tracepoint and then say 13457@code{actions} without bothering about its number). You specify the 13458actions themselves on the following lines, one action at a time, and 13459terminate the actions list with a line containing just @code{end}. So 13460far, the only defined actions are @code{collect}, @code{teval}, and 13461@code{while-stepping}. 13462 13463@code{actions} is actually equivalent to @code{commands} (@pxref{Break 13464Commands, ,Breakpoint Command Lists}), except that only the defined 13465actions are allowed; any other @value{GDBN} command is rejected. 13466 13467@cindex remove actions from a tracepoint 13468To remove all actions from a tracepoint, type @samp{actions @var{num}} 13469and follow it immediately with @samp{end}. 13470 13471@smallexample 13472(@value{GDBP}) @b{collect @var{data}} // collect some data 13473 13474(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data 13475 13476(@value{GDBP}) @b{end} // signals the end of actions. 13477@end smallexample 13478 13479In the following example, the action list begins with @code{collect} 13480commands indicating the things to be collected when the tracepoint is 13481hit. Then, in order to single-step and collect additional data 13482following the tracepoint, a @code{while-stepping} command is used, 13483followed by the list of things to be collected after each step in a 13484sequence of single steps. The @code{while-stepping} command is 13485terminated by its own separate @code{end} command. Lastly, the action 13486list is terminated by an @code{end} command. 13487 13488@smallexample 13489(@value{GDBP}) @b{trace foo} 13490(@value{GDBP}) @b{actions} 13491Enter actions for tracepoint 1, one per line: 13492> collect bar,baz 13493> collect $regs 13494> while-stepping 12 13495 > collect $pc, arr[i] 13496 > end 13497end 13498@end smallexample 13499 13500@kindex collect @r{(tracepoints)} 13501@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{} 13502Collect values of the given expressions when the tracepoint is hit. 13503This command accepts a comma-separated list of any valid expressions. 13504In addition to global, static, or local variables, the following 13505special arguments are supported: 13506 13507@table @code 13508@item $regs 13509Collect all registers. 13510 13511@item $args 13512Collect all function arguments. 13513 13514@item $locals 13515Collect all local variables. 13516 13517@item $_ret 13518Collect the return address. This is helpful if you want to see more 13519of a backtrace. 13520 13521@emph{Note:} The return address location can not always be reliably 13522determined up front, and the wrong address / registers may end up 13523collected instead. On some architectures the reliability is higher 13524for tracepoints at function entry, while on others it's the opposite. 13525When this happens, backtracing will stop because the return address is 13526found unavailable (unless another collect rule happened to match it). 13527 13528@item $_probe_argc 13529Collects the number of arguments from the static probe at which the 13530tracepoint is located. 13531@xref{Static Probe Points}. 13532 13533@item $_probe_arg@var{n} 13534@var{n} is an integer between 0 and 11. Collects the @var{n}th argument 13535from the static probe at which the tracepoint is located. 13536@xref{Static Probe Points}. 13537 13538@item $_sdata 13539@vindex $_sdata@r{, collect} 13540Collect static tracepoint marker specific data. Only available for 13541static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action 13542Lists}. On the UST static tracepoints library backend, an 13543instrumentation point resembles a @code{printf} function call. The 13544tracing library is able to collect user specified data formatted to a 13545character string using the format provided by the programmer that 13546instrumented the program. Other backends have similar mechanisms. 13547Here's an example of a UST marker call: 13548 13549@smallexample 13550 const char master_name[] = "$your_name"; 13551 trace_mark(channel1, marker1, "hello %s", master_name) 13552@end smallexample 13553 13554In this case, collecting @code{$_sdata} collects the string 13555@samp{hello $yourname}. When analyzing the trace buffer, you can 13556inspect @samp{$_sdata} like any other variable available to 13557@value{GDBN}. 13558@end table 13559 13560You can give several consecutive @code{collect} commands, each one 13561with a single argument, or one @code{collect} command with several 13562arguments separated by commas; the effect is the same. 13563 13564The optional @var{mods} changes the usual handling of the arguments. 13565@code{s} requests that pointers to chars be handled as strings, in 13566particular collecting the contents of the memory being pointed at, up 13567to the first zero. The upper bound is by default the value of the 13568@code{print elements} variable; if @code{s} is followed by a decimal 13569number, that is the upper bound instead. So for instance 13570@samp{collect/s25 mystr} collects as many as 25 characters at 13571@samp{mystr}. 13572 13573The command @code{info scope} (@pxref{Symbols, info scope}) is 13574particularly useful for figuring out what data to collect. 13575 13576@kindex teval @r{(tracepoints)} 13577@item teval @var{expr1}, @var{expr2}, @dots{} 13578Evaluate the given expressions when the tracepoint is hit. This 13579command accepts a comma-separated list of expressions. The results 13580are discarded, so this is mainly useful for assigning values to trace 13581state variables (@pxref{Trace State Variables}) without adding those 13582values to the trace buffer, as would be the case if the @code{collect} 13583action were used. 13584 13585@kindex while-stepping @r{(tracepoints)} 13586@item while-stepping @var{n} 13587Perform @var{n} single-step instruction traces after the tracepoint, 13588collecting new data after each step. The @code{while-stepping} 13589command is followed by the list of what to collect while stepping 13590(followed by its own @code{end} command): 13591 13592@smallexample 13593> while-stepping 12 13594 > collect $regs, myglobal 13595 > end 13596> 13597@end smallexample 13598 13599@noindent 13600Note that @code{$pc} is not automatically collected by 13601@code{while-stepping}; you need to explicitly collect that register if 13602you need it. You may abbreviate @code{while-stepping} as @code{ws} or 13603@code{stepping}. 13604 13605@item set default-collect @var{expr1}, @var{expr2}, @dots{} 13606@kindex set default-collect 13607@cindex default collection action 13608This variable is a list of expressions to collect at each tracepoint 13609hit. It is effectively an additional @code{collect} action prepended 13610to every tracepoint action list. The expressions are parsed 13611individually for each tracepoint, so for instance a variable named 13612@code{xyz} may be interpreted as a global for one tracepoint, and a 13613local for another, as appropriate to the tracepoint's location. 13614 13615@item show default-collect 13616@kindex show default-collect 13617Show the list of expressions that are collected by default at each 13618tracepoint hit. 13619 13620@end table 13621 13622@node Listing Tracepoints 13623@subsection Listing Tracepoints 13624 13625@table @code 13626@kindex info tracepoints @r{[}@var{n}@dots{}@r{]} 13627@kindex info tp @r{[}@var{n}@dots{}@r{]} 13628@cindex information about tracepoints 13629@item info tracepoints @r{[}@var{num}@dots{}@r{]} 13630Display information about the tracepoint @var{num}. If you don't 13631specify a tracepoint number, displays information about all the 13632tracepoints defined so far. The format is similar to that used for 13633@code{info breakpoints}; in fact, @code{info tracepoints} is the same 13634command, simply restricting itself to tracepoints. 13635 13636A tracepoint's listing may include additional information specific to 13637tracing: 13638 13639@itemize @bullet 13640@item 13641its passcount as given by the @code{passcount @var{n}} command 13642 13643@item 13644the state about installed on target of each location 13645@end itemize 13646 13647@smallexample 13648(@value{GDBP}) @b{info trace} 13649Num Type Disp Enb Address What 136501 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7 13651 while-stepping 20 13652 collect globfoo, $regs 13653 end 13654 collect globfoo2 13655 end 13656 pass count 1200 136572 tracepoint keep y <MULTIPLE> 13658 collect $eip 136592.1 y 0x0804859c in func4 at change-loc.h:35 13660 installed on target 136612.2 y 0xb7ffc480 in func4 at change-loc.h:35 13662 installed on target 136632.3 y <PENDING> set_tracepoint 136643 tracepoint keep y 0x080485b1 in foo at change-loc.c:29 13665 not installed on target 13666(@value{GDBP}) 13667@end smallexample 13668 13669@noindent 13670This command can be abbreviated @code{info tp}. 13671@end table 13672 13673@node Listing Static Tracepoint Markers 13674@subsection Listing Static Tracepoint Markers 13675 13676@table @code 13677@kindex info static-tracepoint-markers 13678@cindex information about static tracepoint markers 13679@item info static-tracepoint-markers 13680Display information about all static tracepoint markers defined in the 13681program. 13682 13683For each marker, the following columns are printed: 13684 13685@table @emph 13686@item Count 13687An incrementing counter, output to help readability. This is not a 13688stable identifier. 13689@item ID 13690The marker ID, as reported by the target. 13691@item Enabled or Disabled 13692Probed markers are tagged with @samp{y}. @samp{n} identifies marks 13693that are not enabled. 13694@item Address 13695Where the marker is in your program, as a memory address. 13696@item What 13697Where the marker is in the source for your program, as a file and line 13698number. If the debug information included in the program does not 13699allow @value{GDBN} to locate the source of the marker, this column 13700will be left blank. 13701@end table 13702 13703@noindent 13704In addition, the following information may be printed for each marker: 13705 13706@table @emph 13707@item Data 13708User data passed to the tracing library by the marker call. In the 13709UST backend, this is the format string passed as argument to the 13710marker call. 13711@item Static tracepoints probing the marker 13712The list of static tracepoints attached to the marker. 13713@end table 13714 13715@smallexample 13716(@value{GDBP}) info static-tracepoint-markers 13717Cnt ID Enb Address What 137181 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25 13719 Data: number1 %d number2 %d 13720 Probed by static tracepoints: #2 137212 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24 13722 Data: str %s 13723(@value{GDBP}) 13724@end smallexample 13725@end table 13726 13727@node Starting and Stopping Trace Experiments 13728@subsection Starting and Stopping Trace Experiments 13729 13730@table @code 13731@kindex tstart [ @var{notes} ] 13732@cindex start a new trace experiment 13733@cindex collected data discarded 13734@item tstart 13735This command starts the trace experiment, and begins collecting data. 13736It has the side effect of discarding all the data collected in the 13737trace buffer during the previous trace experiment. If any arguments 13738are supplied, they are taken as a note and stored with the trace 13739experiment's state. The notes may be arbitrary text, and are 13740especially useful with disconnected tracing in a multi-user context; 13741the notes can explain what the trace is doing, supply user contact 13742information, and so forth. 13743 13744@kindex tstop [ @var{notes} ] 13745@cindex stop a running trace experiment 13746@item tstop 13747This command stops the trace experiment. If any arguments are 13748supplied, they are recorded with the experiment as a note. This is 13749useful if you are stopping a trace started by someone else, for 13750instance if the trace is interfering with the system's behavior and 13751needs to be stopped quickly. 13752 13753@strong{Note}: a trace experiment and data collection may stop 13754automatically if any tracepoint's passcount is reached 13755(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full. 13756 13757@kindex tstatus 13758@cindex status of trace data collection 13759@cindex trace experiment, status of 13760@item tstatus 13761This command displays the status of the current trace data 13762collection. 13763@end table 13764 13765Here is an example of the commands we described so far: 13766 13767@smallexample 13768(@value{GDBP}) @b{trace gdb_c_test} 13769(@value{GDBP}) @b{actions} 13770Enter actions for tracepoint #1, one per line. 13771> collect $regs,$locals,$args 13772> while-stepping 11 13773 > collect $regs 13774 > end 13775> end 13776(@value{GDBP}) @b{tstart} 13777 [time passes @dots{}] 13778(@value{GDBP}) @b{tstop} 13779@end smallexample 13780 13781@anchor{disconnected tracing} 13782@cindex disconnected tracing 13783You can choose to continue running the trace experiment even if 13784@value{GDBN} disconnects from the target, voluntarily or 13785involuntarily. For commands such as @code{detach}, the debugger will 13786ask what you want to do with the trace. But for unexpected 13787terminations (@value{GDBN} crash, network outage), it would be 13788unfortunate to lose hard-won trace data, so the variable 13789@code{disconnected-tracing} lets you decide whether the trace should 13790continue running without @value{GDBN}. 13791 13792@table @code 13793@item set disconnected-tracing on 13794@itemx set disconnected-tracing off 13795@kindex set disconnected-tracing 13796Choose whether a tracing run should continue to run if @value{GDBN} 13797has disconnected from the target. Note that @code{detach} or 13798@code{quit} will ask you directly what to do about a running trace no 13799matter what this variable's setting, so the variable is mainly useful 13800for handling unexpected situations, such as loss of the network. 13801 13802@item show disconnected-tracing 13803@kindex show disconnected-tracing 13804Show the current choice for disconnected tracing. 13805 13806@end table 13807 13808When you reconnect to the target, the trace experiment may or may not 13809still be running; it might have filled the trace buffer in the 13810meantime, or stopped for one of the other reasons. If it is running, 13811it will continue after reconnection. 13812 13813Upon reconnection, the target will upload information about the 13814tracepoints in effect. @value{GDBN} will then compare that 13815information to the set of tracepoints currently defined, and attempt 13816to match them up, allowing for the possibility that the numbers may 13817have changed due to creation and deletion in the meantime. If one of 13818the target's tracepoints does not match any in @value{GDBN}, the 13819debugger will create a new tracepoint, so that you have a number with 13820which to specify that tracepoint. This matching-up process is 13821necessarily heuristic, and it may result in useless tracepoints being 13822created; you may simply delete them if they are of no use. 13823 13824@cindex circular trace buffer 13825If your target agent supports a @dfn{circular trace buffer}, then you 13826can run a trace experiment indefinitely without filling the trace 13827buffer; when space runs out, the agent deletes already-collected trace 13828frames, oldest first, until there is enough room to continue 13829collecting. This is especially useful if your tracepoints are being 13830hit too often, and your trace gets terminated prematurely because the 13831buffer is full. To ask for a circular trace buffer, simply set 13832@samp{circular-trace-buffer} to on. You can set this at any time, 13833including during tracing; if the agent can do it, it will change 13834buffer handling on the fly, otherwise it will not take effect until 13835the next run. 13836 13837@table @code 13838@item set circular-trace-buffer on 13839@itemx set circular-trace-buffer off 13840@kindex set circular-trace-buffer 13841Choose whether a tracing run should use a linear or circular buffer 13842for trace data. A linear buffer will not lose any trace data, but may 13843fill up prematurely, while a circular buffer will discard old trace 13844data, but it will have always room for the latest tracepoint hits. 13845 13846@item show circular-trace-buffer 13847@kindex show circular-trace-buffer 13848Show the current choice for the trace buffer. Note that this may not 13849match the agent's current buffer handling, nor is it guaranteed to 13850match the setting that might have been in effect during a past run, 13851for instance if you are looking at frames from a trace file. 13852 13853@end table 13854 13855@table @code 13856@item set trace-buffer-size @var{n} 13857@itemx set trace-buffer-size unlimited 13858@kindex set trace-buffer-size 13859Request that the target use a trace buffer of @var{n} bytes. Not all 13860targets will honor the request; they may have a compiled-in size for 13861the trace buffer, or some other limitation. Set to a value of 13862@code{unlimited} or @code{-1} to let the target use whatever size it 13863likes. This is also the default. 13864 13865@item show trace-buffer-size 13866@kindex show trace-buffer-size 13867Show the current requested size for the trace buffer. Note that this 13868will only match the actual size if the target supports size-setting, 13869and was able to handle the requested size. For instance, if the 13870target can only change buffer size between runs, this variable will 13871not reflect the change until the next run starts. Use @code{tstatus} 13872to get a report of the actual buffer size. 13873@end table 13874 13875@table @code 13876@item set trace-user @var{text} 13877@kindex set trace-user 13878 13879@item show trace-user 13880@kindex show trace-user 13881 13882@item set trace-notes @var{text} 13883@kindex set trace-notes 13884Set the trace run's notes. 13885 13886@item show trace-notes 13887@kindex show trace-notes 13888Show the trace run's notes. 13889 13890@item set trace-stop-notes @var{text} 13891@kindex set trace-stop-notes 13892Set the trace run's stop notes. The handling of the note is as for 13893@code{tstop} arguments; the set command is convenient way to fix a 13894stop note that is mistaken or incomplete. 13895 13896@item show trace-stop-notes 13897@kindex show trace-stop-notes 13898Show the trace run's stop notes. 13899 13900@end table 13901 13902@node Tracepoint Restrictions 13903@subsection Tracepoint Restrictions 13904 13905@cindex tracepoint restrictions 13906There are a number of restrictions on the use of tracepoints. As 13907described above, tracepoint data gathering occurs on the target 13908without interaction from @value{GDBN}. Thus the full capabilities of 13909the debugger are not available during data gathering, and then at data 13910examination time, you will be limited by only having what was 13911collected. The following items describe some common problems, but it 13912is not exhaustive, and you may run into additional difficulties not 13913mentioned here. 13914 13915@itemize @bullet 13916 13917@item 13918Tracepoint expressions are intended to gather objects (lvalues). Thus 13919the full flexibility of GDB's expression evaluator is not available. 13920You cannot call functions, cast objects to aggregate types, access 13921convenience variables or modify values (except by assignment to trace 13922state variables). Some language features may implicitly call 13923functions (for instance Objective-C fields with accessors), and therefore 13924cannot be collected either. 13925 13926@item 13927Collection of local variables, either individually or in bulk with 13928@code{$locals} or @code{$args}, during @code{while-stepping} may 13929behave erratically. The stepping action may enter a new scope (for 13930instance by stepping into a function), or the location of the variable 13931may change (for instance it is loaded into a register). The 13932tracepoint data recorded uses the location information for the 13933variables that is correct for the tracepoint location. When the 13934tracepoint is created, it is not possible, in general, to determine 13935where the steps of a @code{while-stepping} sequence will advance the 13936program---particularly if a conditional branch is stepped. 13937 13938@item 13939Collection of an incompletely-initialized or partially-destroyed object 13940may result in something that @value{GDBN} cannot display, or displays 13941in a misleading way. 13942 13943@item 13944When @value{GDBN} displays a pointer to character it automatically 13945dereferences the pointer to also display characters of the string 13946being pointed to. However, collecting the pointer during tracing does 13947not automatically collect the string. You need to explicitly 13948dereference the pointer and provide size information if you want to 13949collect not only the pointer, but the memory pointed to. For example, 13950@code{*ptr@@50} can be used to collect the 50 element array pointed to 13951by @code{ptr}. 13952 13953@item 13954It is not possible to collect a complete stack backtrace at a 13955tracepoint. Instead, you may collect the registers and a few hundred 13956bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300} 13957(adjust to use the name of the actual stack pointer register on your 13958target architecture, and the amount of stack you wish to capture). 13959Then the @code{backtrace} command will show a partial backtrace when 13960using a trace frame. The number of stack frames that can be examined 13961depends on the sizes of the frames in the collected stack. Note that 13962if you ask for a block so large that it goes past the bottom of the 13963stack, the target agent may report an error trying to read from an 13964invalid address. 13965 13966@item 13967If you do not collect registers at a tracepoint, @value{GDBN} can 13968infer that the value of @code{$pc} must be the same as the address of 13969the tracepoint and use that when you are looking at a trace frame 13970for that tracepoint. However, this cannot work if the tracepoint has 13971multiple locations (for instance if it was set in a function that was 13972inlined), or if it has a @code{while-stepping} loop. In those cases 13973@value{GDBN} will warn you that it can't infer @code{$pc}, and default 13974it to zero. 13975 13976@end itemize 13977 13978@node Analyze Collected Data 13979@section Using the Collected Data 13980 13981After the tracepoint experiment ends, you use @value{GDBN} commands 13982for examining the trace data. The basic idea is that each tracepoint 13983collects a trace @dfn{snapshot} every time it is hit and another 13984snapshot every time it single-steps. All these snapshots are 13985consecutively numbered from zero and go into a buffer, and you can 13986examine them later. The way you examine them is to @dfn{focus} on a 13987specific trace snapshot. When the remote stub is focused on a trace 13988snapshot, it will respond to all @value{GDBN} requests for memory and 13989registers by reading from the buffer which belongs to that snapshot, 13990rather than from @emph{real} memory or registers of the program being 13991debugged. This means that @strong{all} @value{GDBN} commands 13992(@code{print}, @code{info registers}, @code{backtrace}, etc.) will 13993behave as if we were currently debugging the program state as it was 13994when the tracepoint occurred. Any requests for data that are not in 13995the buffer will fail. 13996 13997@menu 13998* tfind:: How to select a trace snapshot 13999* tdump:: How to display all data for a snapshot 14000* save tracepoints:: How to save tracepoints for a future run 14001@end menu 14002 14003@node tfind 14004@subsection @code{tfind @var{n}} 14005 14006@kindex tfind 14007@cindex select trace snapshot 14008@cindex find trace snapshot 14009The basic command for selecting a trace snapshot from the buffer is 14010@code{tfind @var{n}}, which finds trace snapshot number @var{n}, 14011counting from zero. If no argument @var{n} is given, the next 14012snapshot is selected. 14013 14014Here are the various forms of using the @code{tfind} command. 14015 14016@table @code 14017@item tfind start 14018Find the first snapshot in the buffer. This is a synonym for 14019@code{tfind 0} (since 0 is the number of the first snapshot). 14020 14021@item tfind none 14022Stop debugging trace snapshots, resume @emph{live} debugging. 14023 14024@item tfind end 14025Same as @samp{tfind none}. 14026 14027@item tfind 14028No argument means find the next trace snapshot or find the first 14029one if no trace snapshot is selected. 14030 14031@item tfind - 14032Find the previous trace snapshot before the current one. This permits 14033retracing earlier steps. 14034 14035@item tfind tracepoint @var{num} 14036Find the next snapshot associated with tracepoint @var{num}. Search 14037proceeds forward from the last examined trace snapshot. If no 14038argument @var{num} is given, it means find the next snapshot collected 14039for the same tracepoint as the current snapshot. 14040 14041@item tfind pc @var{addr} 14042Find the next snapshot associated with the value @var{addr} of the 14043program counter. Search proceeds forward from the last examined trace 14044snapshot. If no argument @var{addr} is given, it means find the next 14045snapshot with the same value of PC as the current snapshot. 14046 14047@item tfind outside @var{addr1}, @var{addr2} 14048Find the next snapshot whose PC is outside the given range of 14049addresses (exclusive). 14050 14051@item tfind range @var{addr1}, @var{addr2} 14052Find the next snapshot whose PC is between @var{addr1} and 14053@var{addr2} (inclusive). 14054 14055@item tfind line @r{[}@var{file}:@r{]}@var{n} 14056Find the next snapshot associated with the source line @var{n}. If 14057the optional argument @var{file} is given, refer to line @var{n} in 14058that source file. Search proceeds forward from the last examined 14059trace snapshot. If no argument @var{n} is given, it means find the 14060next line other than the one currently being examined; thus saying 14061@code{tfind line} repeatedly can appear to have the same effect as 14062stepping from line to line in a @emph{live} debugging session. 14063@end table 14064 14065The default arguments for the @code{tfind} commands are specifically 14066designed to make it easy to scan through the trace buffer. For 14067instance, @code{tfind} with no argument selects the next trace 14068snapshot, and @code{tfind -} with no argument selects the previous 14069trace snapshot. So, by giving one @code{tfind} command, and then 14070simply hitting @key{RET} repeatedly you can examine all the trace 14071snapshots in order. Or, by saying @code{tfind -} and then hitting 14072@key{RET} repeatedly you can examine the snapshots in reverse order. 14073The @code{tfind line} command with no argument selects the snapshot 14074for the next source line executed. The @code{tfind pc} command with 14075no argument selects the next snapshot with the same program counter 14076(PC) as the current frame. The @code{tfind tracepoint} command with 14077no argument selects the next trace snapshot collected by the same 14078tracepoint as the current one. 14079 14080In addition to letting you scan through the trace buffer manually, 14081these commands make it easy to construct @value{GDBN} scripts that 14082scan through the trace buffer and print out whatever collected data 14083you are interested in. Thus, if we want to examine the PC, FP, and SP 14084registers from each trace frame in the buffer, we can say this: 14085 14086@smallexample 14087(@value{GDBP}) @b{tfind start} 14088(@value{GDBP}) @b{while ($trace_frame != -1)} 14089> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \ 14090 $trace_frame, $pc, $sp, $fp 14091> tfind 14092> end 14093 14094Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44 14095Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44 14096Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44 14097Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44 14098Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44 14099Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44 14100Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44 14101Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44 14102Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44 14103Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44 14104Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14 14105@end smallexample 14106 14107Or, if we want to examine the variable @code{X} at each source line in 14108the buffer: 14109 14110@smallexample 14111(@value{GDBP}) @b{tfind start} 14112(@value{GDBP}) @b{while ($trace_frame != -1)} 14113> printf "Frame %d, X == %d\n", $trace_frame, X 14114> tfind line 14115> end 14116 14117Frame 0, X = 1 14118Frame 7, X = 2 14119Frame 13, X = 255 14120@end smallexample 14121 14122@node tdump 14123@subsection @code{tdump} 14124@kindex tdump 14125@cindex dump all data collected at tracepoint 14126@cindex tracepoint data, display 14127 14128This command takes no arguments. It prints all the data collected at 14129the current trace snapshot. 14130 14131@smallexample 14132(@value{GDBP}) @b{trace 444} 14133(@value{GDBP}) @b{actions} 14134Enter actions for tracepoint #2, one per line: 14135> collect $regs, $locals, $args, gdb_long_test 14136> end 14137 14138(@value{GDBP}) @b{tstart} 14139 14140(@value{GDBP}) @b{tfind line 444} 14141#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66) 14142at gdb_test.c:444 14143444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", ) 14144 14145(@value{GDBP}) @b{tdump} 14146Data collected at tracepoint 2, trace frame 1: 14147d0 0xc4aa0085 -995491707 14148d1 0x18 24 14149d2 0x80 128 14150d3 0x33 51 14151d4 0x71aea3d 119204413 14152d5 0x22 34 14153d6 0xe0 224 14154d7 0x380035 3670069 14155a0 0x19e24a 1696330 14156a1 0x3000668 50333288 14157a2 0x100 256 14158a3 0x322000 3284992 14159a4 0x3000698 50333336 14160a5 0x1ad3cc 1758156 14161fp 0x30bf3c 0x30bf3c 14162sp 0x30bf34 0x30bf34 14163ps 0x0 0 14164pc 0x20b2c8 0x20b2c8 14165fpcontrol 0x0 0 14166fpstatus 0x0 0 14167fpiaddr 0x0 0 14168p = 0x20e5b4 "gdb-test" 14169p1 = (void *) 0x11 14170p2 = (void *) 0x22 14171p3 = (void *) 0x33 14172p4 = (void *) 0x44 14173p5 = (void *) 0x55 14174p6 = (void *) 0x66 14175gdb_long_test = 17 '\021' 14176 14177(@value{GDBP}) 14178@end smallexample 14179 14180@code{tdump} works by scanning the tracepoint's current collection 14181actions and printing the value of each expression listed. So 14182@code{tdump} can fail, if after a run, you change the tracepoint's 14183actions to mention variables that were not collected during the run. 14184 14185Also, for tracepoints with @code{while-stepping} loops, @code{tdump} 14186uses the collected value of @code{$pc} to distinguish between trace 14187frames that were collected at the tracepoint hit, and frames that were 14188collected while stepping. This allows it to correctly choose whether 14189to display the basic list of collections, or the collections from the 14190body of the while-stepping loop. However, if @code{$pc} was not collected, 14191then @code{tdump} will always attempt to dump using the basic collection 14192list, and may fail if a while-stepping frame does not include all the 14193same data that is collected at the tracepoint hit. 14194@c This is getting pretty arcane, example would be good. 14195 14196@node save tracepoints 14197@subsection @code{save tracepoints @var{filename}} 14198@kindex save tracepoints 14199@kindex save-tracepoints 14200@cindex save tracepoints for future sessions 14201 14202This command saves all current tracepoint definitions together with 14203their actions and passcounts, into a file @file{@var{filename}} 14204suitable for use in a later debugging session. To read the saved 14205tracepoint definitions, use the @code{source} command (@pxref{Command 14206Files}). The @w{@code{save-tracepoints}} command is a deprecated 14207alias for @w{@code{save tracepoints}} 14208 14209@node Tracepoint Variables 14210@section Convenience Variables for Tracepoints 14211@cindex tracepoint variables 14212@cindex convenience variables for tracepoints 14213 14214@table @code 14215@vindex $trace_frame 14216@item (int) $trace_frame 14217The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no 14218snapshot is selected. 14219 14220@vindex $tracepoint 14221@item (int) $tracepoint 14222The tracepoint for the current trace snapshot. 14223 14224@vindex $trace_line 14225@item (int) $trace_line 14226The line number for the current trace snapshot. 14227 14228@vindex $trace_file 14229@item (char []) $trace_file 14230The source file for the current trace snapshot. 14231 14232@vindex $trace_func 14233@item (char []) $trace_func 14234The name of the function containing @code{$tracepoint}. 14235@end table 14236 14237Note: @code{$trace_file} is not suitable for use in @code{printf}, 14238use @code{output} instead. 14239 14240Here's a simple example of using these convenience variables for 14241stepping through all the trace snapshots and printing some of their 14242data. Note that these are not the same as trace state variables, 14243which are managed by the target. 14244 14245@smallexample 14246(@value{GDBP}) @b{tfind start} 14247 14248(@value{GDBP}) @b{while $trace_frame != -1} 14249> output $trace_file 14250> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint 14251> tfind 14252> end 14253@end smallexample 14254 14255@node Trace Files 14256@section Using Trace Files 14257@cindex trace files 14258 14259In some situations, the target running a trace experiment may no 14260longer be available; perhaps it crashed, or the hardware was needed 14261for a different activity. To handle these cases, you can arrange to 14262dump the trace data into a file, and later use that file as a source 14263of trace data, via the @code{target tfile} command. 14264 14265@table @code 14266 14267@kindex tsave 14268@item tsave [ -r ] @var{filename} 14269@itemx tsave [-ctf] @var{dirname} 14270Save the trace data to @var{filename}. By default, this command 14271assumes that @var{filename} refers to the host filesystem, so if 14272necessary @value{GDBN} will copy raw trace data up from the target and 14273then save it. If the target supports it, you can also supply the 14274optional argument @code{-r} (``remote'') to direct the target to save 14275the data directly into @var{filename} in its own filesystem, which may be 14276more efficient if the trace buffer is very large. (Note, however, that 14277@code{target tfile} can only read from files accessible to the host.) 14278By default, this command will save trace frame in tfile format. 14279You can supply the optional argument @code{-ctf} to save data in CTF 14280format. The @dfn{Common Trace Format} (CTF) is proposed as a trace format 14281that can be shared by multiple debugging and tracing tools. Please go to 14282@indicateurl{http://www.efficios.com/ctf} to get more information. 14283 14284@kindex target tfile 14285@kindex tfile 14286@kindex target ctf 14287@kindex ctf 14288@item target tfile @var{filename} 14289@itemx target ctf @var{dirname} 14290Use the file named @var{filename} or directory named @var{dirname} as 14291a source of trace data. Commands that examine data work as they do with 14292a live target, but it is not possible to run any new trace experiments. 14293@code{tstatus} will report the state of the trace run at the moment 14294the data was saved, as well as the current trace frame you are examining. 14295Both @var{filename} and @var{dirname} must be on a filesystem accessible to 14296the host. 14297 14298@smallexample 14299(@value{GDBP}) target ctf ctf.ctf 14300(@value{GDBP}) tfind 14301Found trace frame 0, tracepoint 2 1430239 ++a; /* set tracepoint 1 here */ 14303(@value{GDBP}) tdump 14304Data collected at tracepoint 2, trace frame 0: 14305i = 0 14306a = 0 14307b = 1 '\001' 14308c = @{"123", "456", "789", "123", "456", "789"@} 14309d = @{@{@{a = 1, b = 2@}, @{a = 3, b = 4@}@}, @{@{a = 5, b = 6@}, @{a = 7, b = 8@}@}@} 14310(@value{GDBP}) p b 14311$1 = 1 14312@end smallexample 14313 14314@end table 14315 14316@node Overlays 14317@chapter Debugging Programs That Use Overlays 14318@cindex overlays 14319 14320If your program is too large to fit completely in your target system's 14321memory, you can sometimes use @dfn{overlays} to work around this 14322problem. @value{GDBN} provides some support for debugging programs that 14323use overlays. 14324 14325@menu 14326* How Overlays Work:: A general explanation of overlays. 14327* Overlay Commands:: Managing overlays in @value{GDBN}. 14328* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are 14329 mapped by asking the inferior. 14330* Overlay Sample Program:: A sample program using overlays. 14331@end menu 14332 14333@node How Overlays Work 14334@section How Overlays Work 14335@cindex mapped overlays 14336@cindex unmapped overlays 14337@cindex load address, overlay's 14338@cindex mapped address 14339@cindex overlay area 14340 14341Suppose you have a computer whose instruction address space is only 64 14342kilobytes long, but which has much more memory which can be accessed by 14343other means: special instructions, segment registers, or memory 14344management hardware, for example. Suppose further that you want to 14345adapt a program which is larger than 64 kilobytes to run on this system. 14346 14347One solution is to identify modules of your program which are relatively 14348independent, and need not call each other directly; call these modules 14349@dfn{overlays}. Separate the overlays from the main program, and place 14350their machine code in the larger memory. Place your main program in 14351instruction memory, but leave at least enough space there to hold the 14352largest overlay as well. 14353 14354Now, to call a function located in an overlay, you must first copy that 14355overlay's machine code from the large memory into the space set aside 14356for it in the instruction memory, and then jump to its entry point 14357there. 14358 14359@c NB: In the below the mapped area's size is greater or equal to the 14360@c size of all overlays. This is intentional to remind the developer 14361@c that overlays don't necessarily need to be the same size. 14362 14363@smallexample 14364@group 14365 Data Instruction Larger 14366Address Space Address Space Address Space 14367+-----------+ +-----------+ +-----------+ 14368| | | | | | 14369+-----------+ +-----------+ +-----------+<-- overlay 1 14370| program | | main | .----| overlay 1 | load address 14371| variables | | program | | +-----------+ 14372| and heap | | | | | | 14373+-----------+ | | | +-----------+<-- overlay 2 14374| | +-----------+ | | | load address 14375+-----------+ | | | .-| overlay 2 | 14376 | | | | | | 14377 mapped --->+-----------+ | | +-----------+ 14378 address | | | | | | 14379 | overlay | <-' | | | 14380 | area | <---' +-----------+<-- overlay 3 14381 | | <---. | | load address 14382 +-----------+ `--| overlay 3 | 14383 | | | | 14384 +-----------+ | | 14385 +-----------+ 14386 | | 14387 +-----------+ 14388 14389 @anchor{A code overlay}A code overlay 14390@end group 14391@end smallexample 14392 14393The diagram (@pxref{A code overlay}) shows a system with separate data 14394and instruction address spaces. To map an overlay, the program copies 14395its code from the larger address space to the instruction address space. 14396Since the overlays shown here all use the same mapped address, only one 14397may be mapped at a time. For a system with a single address space for 14398data and instructions, the diagram would be similar, except that the 14399program variables and heap would share an address space with the main 14400program and the overlay area. 14401 14402An overlay loaded into instruction memory and ready for use is called a 14403@dfn{mapped} overlay; its @dfn{mapped address} is its address in the 14404instruction memory. An overlay not present (or only partially present) 14405in instruction memory is called @dfn{unmapped}; its @dfn{load address} 14406is its address in the larger memory. The mapped address is also called 14407the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also 14408called the @dfn{load memory address}, or @dfn{LMA}. 14409 14410Unfortunately, overlays are not a completely transparent way to adapt a 14411program to limited instruction memory. They introduce a new set of 14412global constraints you must keep in mind as you design your program: 14413 14414@itemize @bullet 14415 14416@item 14417Before calling or returning to a function in an overlay, your program 14418must make sure that overlay is actually mapped. Otherwise, the call or 14419return will transfer control to the right address, but in the wrong 14420overlay, and your program will probably crash. 14421 14422@item 14423If the process of mapping an overlay is expensive on your system, you 14424will need to choose your overlays carefully to minimize their effect on 14425your program's performance. 14426 14427@item 14428The executable file you load onto your system must contain each 14429overlay's instructions, appearing at the overlay's load address, not its 14430mapped address. However, each overlay's instructions must be relocated 14431and its symbols defined as if the overlay were at its mapped address. 14432You can use GNU linker scripts to specify different load and relocation 14433addresses for pieces of your program; see @ref{Overlay Description,,, 14434ld.info, Using ld: the GNU linker}. 14435 14436@item 14437The procedure for loading executable files onto your system must be able 14438to load their contents into the larger address space as well as the 14439instruction and data spaces. 14440 14441@end itemize 14442 14443The overlay system described above is rather simple, and could be 14444improved in many ways: 14445 14446@itemize @bullet 14447 14448@item 14449If your system has suitable bank switch registers or memory management 14450hardware, you could use those facilities to make an overlay's load area 14451contents simply appear at their mapped address in instruction space. 14452This would probably be faster than copying the overlay to its mapped 14453area in the usual way. 14454 14455@item 14456If your overlays are small enough, you could set aside more than one 14457overlay area, and have more than one overlay mapped at a time. 14458 14459@item 14460You can use overlays to manage data, as well as instructions. In 14461general, data overlays are even less transparent to your design than 14462code overlays: whereas code overlays only require care when you call or 14463return to functions, data overlays require care every time you access 14464the data. Also, if you change the contents of a data overlay, you 14465must copy its contents back out to its load address before you can copy a 14466different data overlay into the same mapped area. 14467 14468@end itemize 14469 14470 14471@node Overlay Commands 14472@section Overlay Commands 14473 14474To use @value{GDBN}'s overlay support, each overlay in your program must 14475correspond to a separate section of the executable file. The section's 14476virtual memory address and load memory address must be the overlay's 14477mapped and load addresses. Identifying overlays with sections allows 14478@value{GDBN} to determine the appropriate address of a function or 14479variable, depending on whether the overlay is mapped or not. 14480 14481@value{GDBN}'s overlay commands all start with the word @code{overlay}; 14482you can abbreviate this as @code{ov} or @code{ovly}. The commands are: 14483 14484@table @code 14485@item overlay off 14486@kindex overlay 14487Disable @value{GDBN}'s overlay support. When overlay support is 14488disabled, @value{GDBN} assumes that all functions and variables are 14489always present at their mapped addresses. By default, @value{GDBN}'s 14490overlay support is disabled. 14491 14492@item overlay manual 14493@cindex manual overlay debugging 14494Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN} 14495relies on you to tell it which overlays are mapped, and which are not, 14496using the @code{overlay map-overlay} and @code{overlay unmap-overlay} 14497commands described below. 14498 14499@item overlay map-overlay @var{overlay} 14500@itemx overlay map @var{overlay} 14501@cindex map an overlay 14502Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must 14503be the name of the object file section containing the overlay. When an 14504overlay is mapped, @value{GDBN} assumes it can find the overlay's 14505functions and variables at their mapped addresses. @value{GDBN} assumes 14506that any other overlays whose mapped ranges overlap that of 14507@var{overlay} are now unmapped. 14508 14509@item overlay unmap-overlay @var{overlay} 14510@itemx overlay unmap @var{overlay} 14511@cindex unmap an overlay 14512Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay} 14513must be the name of the object file section containing the overlay. 14514When an overlay is unmapped, @value{GDBN} assumes it can find the 14515overlay's functions and variables at their load addresses. 14516 14517@item overlay auto 14518Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN} 14519consults a data structure the overlay manager maintains in the inferior 14520to see which overlays are mapped. For details, see @ref{Automatic 14521Overlay Debugging}. 14522 14523@item overlay load-target 14524@itemx overlay load 14525@cindex reloading the overlay table 14526Re-read the overlay table from the inferior. Normally, @value{GDBN} 14527re-reads the table @value{GDBN} automatically each time the inferior 14528stops, so this command should only be necessary if you have changed the 14529overlay mapping yourself using @value{GDBN}. This command is only 14530useful when using automatic overlay debugging. 14531 14532@item overlay list-overlays 14533@itemx overlay list 14534@cindex listing mapped overlays 14535Display a list of the overlays currently mapped, along with their mapped 14536addresses, load addresses, and sizes. 14537 14538@end table 14539 14540Normally, when @value{GDBN} prints a code address, it includes the name 14541of the function the address falls in: 14542 14543@smallexample 14544(@value{GDBP}) print main 14545$3 = @{int ()@} 0x11a0 <main> 14546@end smallexample 14547@noindent 14548When overlay debugging is enabled, @value{GDBN} recognizes code in 14549unmapped overlays, and prints the names of unmapped functions with 14550asterisks around them. For example, if @code{foo} is a function in an 14551unmapped overlay, @value{GDBN} prints it this way: 14552 14553@smallexample 14554(@value{GDBP}) overlay list 14555No sections are mapped. 14556(@value{GDBP}) print foo 14557$5 = @{int (int)@} 0x100000 <*foo*> 14558@end smallexample 14559@noindent 14560When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's 14561name normally: 14562 14563@smallexample 14564(@value{GDBP}) overlay list 14565Section .ov.foo.text, loaded at 0x100000 - 0x100034, 14566 mapped at 0x1016 - 0x104a 14567(@value{GDBP}) print foo 14568$6 = @{int (int)@} 0x1016 <foo> 14569@end smallexample 14570 14571When overlay debugging is enabled, @value{GDBN} can find the correct 14572address for functions and variables in an overlay, whether or not the 14573overlay is mapped. This allows most @value{GDBN} commands, like 14574@code{break} and @code{disassemble}, to work normally, even on unmapped 14575code. However, @value{GDBN}'s breakpoint support has some limitations: 14576 14577@itemize @bullet 14578@item 14579@cindex breakpoints in overlays 14580@cindex overlays, setting breakpoints in 14581You can set breakpoints in functions in unmapped overlays, as long as 14582@value{GDBN} can write to the overlay at its load address. 14583@item 14584@value{GDBN} can not set hardware or simulator-based breakpoints in 14585unmapped overlays. However, if you set a breakpoint at the end of your 14586overlay manager (and tell @value{GDBN} which overlays are now mapped, if 14587you are using manual overlay management), @value{GDBN} will re-set its 14588breakpoints properly. 14589@end itemize 14590 14591 14592@node Automatic Overlay Debugging 14593@section Automatic Overlay Debugging 14594@cindex automatic overlay debugging 14595 14596@value{GDBN} can automatically track which overlays are mapped and which 14597are not, given some simple co-operation from the overlay manager in the 14598inferior. If you enable automatic overlay debugging with the 14599@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN} 14600looks in the inferior's memory for certain variables describing the 14601current state of the overlays. 14602 14603Here are the variables your overlay manager must define to support 14604@value{GDBN}'s automatic overlay debugging: 14605 14606@table @asis 14607 14608@item @code{_ovly_table}: 14609This variable must be an array of the following structures: 14610 14611@smallexample 14612struct 14613@{ 14614 /* The overlay's mapped address. */ 14615 unsigned long vma; 14616 14617 /* The size of the overlay, in bytes. */ 14618 unsigned long size; 14619 14620 /* The overlay's load address. */ 14621 unsigned long lma; 14622 14623 /* Non-zero if the overlay is currently mapped; 14624 zero otherwise. */ 14625 unsigned long mapped; 14626@} 14627@end smallexample 14628 14629@item @code{_novlys}: 14630This variable must be a four-byte signed integer, holding the total 14631number of elements in @code{_ovly_table}. 14632 14633@end table 14634 14635To decide whether a particular overlay is mapped or not, @value{GDBN} 14636looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and 14637@code{lma} members equal the VMA and LMA of the overlay's section in the 14638executable file. When @value{GDBN} finds a matching entry, it consults 14639the entry's @code{mapped} member to determine whether the overlay is 14640currently mapped. 14641 14642In addition, your overlay manager may define a function called 14643@code{_ovly_debug_event}. If this function is defined, @value{GDBN} 14644will silently set a breakpoint there. If the overlay manager then 14645calls this function whenever it has changed the overlay table, this 14646will enable @value{GDBN} to accurately keep track of which overlays 14647are in program memory, and update any breakpoints that may be set 14648in overlays. This will allow breakpoints to work even if the 14649overlays are kept in ROM or other non-writable memory while they 14650are not being executed. 14651 14652@node Overlay Sample Program 14653@section Overlay Sample Program 14654@cindex overlay example program 14655 14656When linking a program which uses overlays, you must place the overlays 14657at their load addresses, while relocating them to run at their mapped 14658addresses. To do this, you must write a linker script (@pxref{Overlay 14659Description,,, ld.info, Using ld: the GNU linker}). Unfortunately, 14660since linker scripts are specific to a particular host system, target 14661architecture, and target memory layout, this manual cannot provide 14662portable sample code demonstrating @value{GDBN}'s overlay support. 14663 14664However, the @value{GDBN} source distribution does contain an overlaid 14665program, with linker scripts for a few systems, as part of its test 14666suite. The program consists of the following files from 14667@file{gdb/testsuite/gdb.base}: 14668 14669@table @file 14670@item overlays.c 14671The main program file. 14672@item ovlymgr.c 14673A simple overlay manager, used by @file{overlays.c}. 14674@item foo.c 14675@itemx bar.c 14676@itemx baz.c 14677@itemx grbx.c 14678Overlay modules, loaded and used by @file{overlays.c}. 14679@item d10v.ld 14680@itemx m32r.ld 14681Linker scripts for linking the test program on the @code{d10v-elf} 14682and @code{m32r-elf} targets. 14683@end table 14684 14685You can build the test program using the @code{d10v-elf} GCC 14686cross-compiler like this: 14687 14688@smallexample 14689$ d10v-elf-gcc -g -c overlays.c 14690$ d10v-elf-gcc -g -c ovlymgr.c 14691$ d10v-elf-gcc -g -c foo.c 14692$ d10v-elf-gcc -g -c bar.c 14693$ d10v-elf-gcc -g -c baz.c 14694$ d10v-elf-gcc -g -c grbx.c 14695$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \ 14696 baz.o grbx.o -Wl,-Td10v.ld -o overlays 14697@end smallexample 14698 14699The build process is identical for any other architecture, except that 14700you must substitute the appropriate compiler and linker script for the 14701target system for @code{d10v-elf-gcc} and @code{d10v.ld}. 14702 14703 14704@node Languages 14705@chapter Using @value{GDBN} with Different Languages 14706@cindex languages 14707 14708Although programming languages generally have common aspects, they are 14709rarely expressed in the same manner. For instance, in ANSI C, 14710dereferencing a pointer @code{p} is accomplished by @code{*p}, but in 14711Modula-2, it is accomplished by @code{p^}. Values can also be 14712represented (and displayed) differently. Hex numbers in C appear as 14713@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}. 14714 14715@cindex working language 14716Language-specific information is built into @value{GDBN} for some languages, 14717allowing you to express operations like the above in your program's 14718native language, and allowing @value{GDBN} to output values in a manner 14719consistent with the syntax of your program's native language. The 14720language you use to build expressions is called the @dfn{working 14721language}. 14722 14723@menu 14724* Setting:: Switching between source languages 14725* Show:: Displaying the language 14726* Checks:: Type and range checks 14727* Supported Languages:: Supported languages 14728* Unsupported Languages:: Unsupported languages 14729@end menu 14730 14731@node Setting 14732@section Switching Between Source Languages 14733 14734There are two ways to control the working language---either have @value{GDBN} 14735set it automatically, or select it manually yourself. You can use the 14736@code{set language} command for either purpose. On startup, @value{GDBN} 14737defaults to setting the language automatically. The working language is 14738used to determine how expressions you type are interpreted, how values 14739are printed, etc. 14740 14741In addition to the working language, every source file that 14742@value{GDBN} knows about has its own working language. For some object 14743file formats, the compiler might indicate which language a particular 14744source file is in. However, most of the time @value{GDBN} infers the 14745language from the name of the file. The language of a source file 14746controls whether C@t{++} names are demangled---this way @code{backtrace} can 14747show each frame appropriately for its own language. There is no way to 14748set the language of a source file from within @value{GDBN}, but you can 14749set the language associated with a filename extension. @xref{Show, , 14750Displaying the Language}. 14751 14752This is most commonly a problem when you use a program, such 14753as @code{cfront} or @code{f2c}, that generates C but is written in 14754another language. In that case, make the 14755program use @code{#line} directives in its C output; that way 14756@value{GDBN} will know the correct language of the source code of the original 14757program, and will display that source code, not the generated C code. 14758 14759@menu 14760* Filenames:: Filename extensions and languages. 14761* Manually:: Setting the working language manually 14762* Automatically:: Having @value{GDBN} infer the source language 14763@end menu 14764 14765@node Filenames 14766@subsection List of Filename Extensions and Languages 14767 14768If a source file name ends in one of the following extensions, then 14769@value{GDBN} infers that its language is the one indicated. 14770 14771@table @file 14772@item .ada 14773@itemx .ads 14774@itemx .adb 14775@itemx .a 14776Ada source file. 14777 14778@item .c 14779C source file 14780 14781@item .C 14782@itemx .cc 14783@itemx .cp 14784@itemx .cpp 14785@itemx .cxx 14786@itemx .c++ 14787C@t{++} source file 14788 14789@item .d 14790D source file 14791 14792@item .m 14793Objective-C source file 14794 14795@item .f 14796@itemx .F 14797Fortran source file 14798 14799@item .mod 14800Modula-2 source file 14801 14802@item .s 14803@itemx .S 14804Assembler source file. This actually behaves almost like C, but 14805@value{GDBN} does not skip over function prologues when stepping. 14806@end table 14807 14808In addition, you may set the language associated with a filename 14809extension. @xref{Show, , Displaying the Language}. 14810 14811@node Manually 14812@subsection Setting the Working Language 14813 14814If you allow @value{GDBN} to set the language automatically, 14815expressions are interpreted the same way in your debugging session and 14816your program. 14817 14818@kindex set language 14819If you wish, you may set the language manually. To do this, issue the 14820command @samp{set language @var{lang}}, where @var{lang} is the name of 14821a language, such as 14822@code{c} or @code{modula-2}. 14823For a list of the supported languages, type @samp{set language}. 14824 14825Setting the language manually prevents @value{GDBN} from updating the working 14826language automatically. This can lead to confusion if you try 14827to debug a program when the working language is not the same as the 14828source language, when an expression is acceptable to both 14829languages---but means different things. For instance, if the current 14830source file were written in C, and @value{GDBN} was parsing Modula-2, a 14831command such as: 14832 14833@smallexample 14834print a = b + c 14835@end smallexample 14836 14837@noindent 14838might not have the effect you intended. In C, this means to add 14839@code{b} and @code{c} and place the result in @code{a}. The result 14840printed would be the value of @code{a}. In Modula-2, this means to compare 14841@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value. 14842 14843@node Automatically 14844@subsection Having @value{GDBN} Infer the Source Language 14845 14846To have @value{GDBN} set the working language automatically, use 14847@samp{set language local} or @samp{set language auto}. @value{GDBN} 14848then infers the working language. That is, when your program stops in a 14849frame (usually by encountering a breakpoint), @value{GDBN} sets the 14850working language to the language recorded for the function in that 14851frame. If the language for a frame is unknown (that is, if the function 14852or block corresponding to the frame was defined in a source file that 14853does not have a recognized extension), the current working language is 14854not changed, and @value{GDBN} issues a warning. 14855 14856This may not seem necessary for most programs, which are written 14857entirely in one source language. However, program modules and libraries 14858written in one source language can be used by a main program written in 14859a different source language. Using @samp{set language auto} in this 14860case frees you from having to set the working language manually. 14861 14862@node Show 14863@section Displaying the Language 14864 14865The following commands help you find out which language is the 14866working language, and also what language source files were written in. 14867 14868@table @code 14869@item show language 14870@anchor{show language} 14871@kindex show language 14872Display the current working language. This is the 14873language you can use with commands such as @code{print} to 14874build and compute expressions that may involve variables in your program. 14875 14876@item info frame 14877@kindex info frame@r{, show the source language} 14878Display the source language for this frame. This language becomes the 14879working language if you use an identifier from this frame. 14880@xref{Frame Info, ,Information about a Frame}, to identify the other 14881information listed here. 14882 14883@item info source 14884@kindex info source@r{, show the source language} 14885Display the source language of this source file. 14886@xref{Symbols, ,Examining the Symbol Table}, to identify the other 14887information listed here. 14888@end table 14889 14890In unusual circumstances, you may have source files with extensions 14891not in the standard list. You can then set the extension associated 14892with a language explicitly: 14893 14894@table @code 14895@item set extension-language @var{ext} @var{language} 14896@kindex set extension-language 14897Tell @value{GDBN} that source files with extension @var{ext} are to be 14898assumed as written in the source language @var{language}. 14899 14900@item info extensions 14901@kindex info extensions 14902List all the filename extensions and the associated languages. 14903@end table 14904 14905@node Checks 14906@section Type and Range Checking 14907 14908Some languages are designed to guard you against making seemingly common 14909errors through a series of compile- and run-time checks. These include 14910checking the type of arguments to functions and operators and making 14911sure mathematical overflows are caught at run time. Checks such as 14912these help to ensure a program's correctness once it has been compiled 14913by eliminating type mismatches and providing active checks for range 14914errors when your program is running. 14915 14916By default @value{GDBN} checks for these errors according to the 14917rules of the current source language. Although @value{GDBN} does not check 14918the statements in your program, it can check expressions entered directly 14919into @value{GDBN} for evaluation via the @code{print} command, for example. 14920 14921@menu 14922* Type Checking:: An overview of type checking 14923* Range Checking:: An overview of range checking 14924@end menu 14925 14926@cindex type checking 14927@cindex checks, type 14928@node Type Checking 14929@subsection An Overview of Type Checking 14930 14931Some languages, such as C and C@t{++}, are strongly typed, meaning that the 14932arguments to operators and functions have to be of the correct type, 14933otherwise an error occurs. These checks prevent type mismatch 14934errors from ever causing any run-time problems. For example, 14935 14936@smallexample 14937int klass::my_method(char *b) @{ return b ? 1 : 2; @} 14938 14939(@value{GDBP}) print obj.my_method (0) 14940$1 = 2 14941@exdent but 14942(@value{GDBP}) print obj.my_method (0x1234) 14943Cannot resolve method klass::my_method to any overloaded instance 14944@end smallexample 14945 14946The second example fails because in C@t{++} the integer constant 14947@samp{0x1234} is not type-compatible with the pointer parameter type. 14948 14949For the expressions you use in @value{GDBN} commands, you can tell 14950@value{GDBN} to not enforce strict type checking or 14951to treat any mismatches as errors and abandon the expression; 14952When type checking is disabled, @value{GDBN} successfully evaluates 14953expressions like the second example above. 14954 14955Even if type checking is off, there may be other reasons 14956related to type that prevent @value{GDBN} from evaluating an expression. 14957For instance, @value{GDBN} does not know how to add an @code{int} and 14958a @code{struct foo}. These particular type errors have nothing to do 14959with the language in use and usually arise from expressions which make 14960little sense to evaluate anyway. 14961 14962@value{GDBN} provides some additional commands for controlling type checking: 14963 14964@kindex set check type 14965@kindex show check type 14966@table @code 14967@item set check type on 14968@itemx set check type off 14969Set strict type checking on or off. If any type mismatches occur in 14970evaluating an expression while type checking is on, @value{GDBN} prints a 14971message and aborts evaluation of the expression. 14972 14973@item show check type 14974Show the current setting of type checking and whether @value{GDBN} 14975is enforcing strict type checking rules. 14976@end table 14977 14978@cindex range checking 14979@cindex checks, range 14980@node Range Checking 14981@subsection An Overview of Range Checking 14982 14983In some languages (such as Modula-2), it is an error to exceed the 14984bounds of a type; this is enforced with run-time checks. Such range 14985checking is meant to ensure program correctness by making sure 14986computations do not overflow, or indices on an array element access do 14987not exceed the bounds of the array. 14988 14989For expressions you use in @value{GDBN} commands, you can tell 14990@value{GDBN} to treat range errors in one of three ways: ignore them, 14991always treat them as errors and abandon the expression, or issue 14992warnings but evaluate the expression anyway. 14993 14994A range error can result from numerical overflow, from exceeding an 14995array index bound, or when you type a constant that is not a member 14996of any type. Some languages, however, do not treat overflows as an 14997error. In many implementations of C, mathematical overflow causes the 14998result to ``wrap around'' to lower values---for example, if @var{m} is 14999the largest integer value, and @var{s} is the smallest, then 15000 15001@smallexample 15002@var{m} + 1 @result{} @var{s} 15003@end smallexample 15004 15005This, too, is specific to individual languages, and in some cases 15006specific to individual compilers or machines. @xref{Supported Languages, , 15007Supported Languages}, for further details on specific languages. 15008 15009@value{GDBN} provides some additional commands for controlling the range checker: 15010 15011@kindex set check range 15012@kindex show check range 15013@table @code 15014@item set check range auto 15015Set range checking on or off based on the current working language. 15016@xref{Supported Languages, ,Supported Languages}, for the default settings for 15017each language. 15018 15019@item set check range on 15020@itemx set check range off 15021Set range checking on or off, overriding the default setting for the 15022current working language. A warning is issued if the setting does not 15023match the language default. If a range error occurs and range checking is on, 15024then a message is printed and evaluation of the expression is aborted. 15025 15026@item set check range warn 15027Output messages when the @value{GDBN} range checker detects a range error, 15028but attempt to evaluate the expression anyway. Evaluating the 15029expression may still be impossible for other reasons, such as accessing 15030memory that the process does not own (a typical example from many Unix 15031systems). 15032 15033@item show range 15034Show the current setting of the range checker, and whether or not it is 15035being set automatically by @value{GDBN}. 15036@end table 15037 15038@node Supported Languages 15039@section Supported Languages 15040 15041@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, 15042OpenCL C, Pascal, Rust, assembly, Modula-2, and Ada. 15043@c This is false ... 15044Some @value{GDBN} features may be used in expressions regardless of the 15045language you use: the @value{GDBN} @code{@@} and @code{::} operators, 15046and the @samp{@{type@}addr} construct (@pxref{Expressions, 15047,Expressions}) can be used with the constructs of any supported 15048language. 15049 15050The following sections detail to what degree each source language is 15051supported by @value{GDBN}. These sections are not meant to be language 15052tutorials or references, but serve only as a reference guide to what the 15053@value{GDBN} expression parser accepts, and what input and output 15054formats should look like for different languages. There are many good 15055books written on each of these languages; please look to these for a 15056language reference or tutorial. 15057 15058@menu 15059* C:: C and C@t{++} 15060* D:: D 15061* Go:: Go 15062* Objective-C:: Objective-C 15063* OpenCL C:: OpenCL C 15064* Fortran:: Fortran 15065* Pascal:: Pascal 15066* Rust:: Rust 15067* Modula-2:: Modula-2 15068* Ada:: Ada 15069@end menu 15070 15071@node C 15072@subsection C and C@t{++} 15073 15074@cindex C and C@t{++} 15075@cindex expressions in C or C@t{++} 15076 15077Since C and C@t{++} are so closely related, many features of @value{GDBN} apply 15078to both languages. Whenever this is the case, we discuss those languages 15079together. 15080 15081@cindex C@t{++} 15082@cindex @code{g++}, @sc{gnu} C@t{++} compiler 15083@cindex @sc{gnu} C@t{++} 15084The C@t{++} debugging facilities are jointly implemented by the C@t{++} 15085compiler and @value{GDBN}. Therefore, to debug your C@t{++} code 15086effectively, you must compile your C@t{++} programs with a supported 15087C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++} 15088compiler (@code{aCC}). 15089 15090@menu 15091* C Operators:: C and C@t{++} operators 15092* C Constants:: C and C@t{++} constants 15093* C Plus Plus Expressions:: C@t{++} expressions 15094* C Defaults:: Default settings for C and C@t{++} 15095* C Checks:: C and C@t{++} type and range checks 15096* Debugging C:: @value{GDBN} and C 15097* Debugging C Plus Plus:: @value{GDBN} features for C@t{++} 15098* Decimal Floating Point:: Numbers in Decimal Floating Point format 15099@end menu 15100 15101@node C Operators 15102@subsubsection C and C@t{++} Operators 15103 15104@cindex C and C@t{++} operators 15105 15106Operators must be defined on values of specific types. For instance, 15107@code{+} is defined on numbers, but not on structures. Operators are 15108often defined on groups of types. 15109 15110For the purposes of C and C@t{++}, the following definitions hold: 15111 15112@itemize @bullet 15113 15114@item 15115@emph{Integral types} include @code{int} with any of its storage-class 15116specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}. 15117 15118@item 15119@emph{Floating-point types} include @code{float}, @code{double}, and 15120@code{long double} (if supported by the target platform). 15121 15122@item 15123@emph{Pointer types} include all types defined as @code{(@var{type} *)}. 15124 15125@item 15126@emph{Scalar types} include all of the above. 15127 15128@end itemize 15129 15130@noindent 15131The following operators are supported. They are listed here 15132in order of increasing precedence: 15133 15134@table @code 15135@item , 15136The comma or sequencing operator. Expressions in a comma-separated list 15137are evaluated from left to right, with the result of the entire 15138expression being the last expression evaluated. 15139 15140@item = 15141Assignment. The value of an assignment expression is the value 15142assigned. Defined on scalar types. 15143 15144@item @var{op}= 15145Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}}, 15146and translated to @w{@code{@var{a} = @var{a op b}}}. 15147@w{@code{@var{op}=}} and @code{=} have the same precedence. The operator 15148@var{op} is any one of the operators @code{|}, @code{^}, @code{&}, 15149@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}. 15150 15151@item ?: 15152The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought 15153of as: if @var{a} then @var{b} else @var{c}. The argument @var{a} 15154should be of an integral type. 15155 15156@item || 15157Logical @sc{or}. Defined on integral types. 15158 15159@item && 15160Logical @sc{and}. Defined on integral types. 15161 15162@item | 15163Bitwise @sc{or}. Defined on integral types. 15164 15165@item ^ 15166Bitwise exclusive-@sc{or}. Defined on integral types. 15167 15168@item & 15169Bitwise @sc{and}. Defined on integral types. 15170 15171@item ==@r{, }!= 15172Equality and inequality. Defined on scalar types. The value of these 15173expressions is 0 for false and non-zero for true. 15174 15175@item <@r{, }>@r{, }<=@r{, }>= 15176Less than, greater than, less than or equal, greater than or equal. 15177Defined on scalar types. The value of these expressions is 0 for false 15178and non-zero for true. 15179 15180@item <<@r{, }>> 15181left shift, and right shift. Defined on integral types. 15182 15183@item @@ 15184The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 15185 15186@item +@r{, }- 15187Addition and subtraction. Defined on integral types, floating-point types and 15188pointer types. 15189 15190@item *@r{, }/@r{, }% 15191Multiplication, division, and modulus. Multiplication and division are 15192defined on integral and floating-point types. Modulus is defined on 15193integral types. 15194 15195@item ++@r{, }-- 15196Increment and decrement. When appearing before a variable, the 15197operation is performed before the variable is used in an expression; 15198when appearing after it, the variable's value is used before the 15199operation takes place. 15200 15201@item * 15202Pointer dereferencing. Defined on pointer types. Same precedence as 15203@code{++}. 15204 15205@item & 15206Address operator. Defined on variables. Same precedence as @code{++}. 15207 15208For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is 15209allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})} 15210to examine the address 15211where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is 15212stored. 15213 15214@item - 15215Negative. Defined on integral and floating-point types. Same 15216precedence as @code{++}. 15217 15218@item ! 15219Logical negation. Defined on integral types. Same precedence as 15220@code{++}. 15221 15222@item ~ 15223Bitwise complement operator. Defined on integral types. Same precedence as 15224@code{++}. 15225 15226 15227@item .@r{, }-> 15228Structure member, and pointer-to-structure member. For convenience, 15229@value{GDBN} regards the two as equivalent, choosing whether to dereference a 15230pointer based on the stored type information. 15231Defined on @code{struct} and @code{union} data. 15232 15233@item .*@r{, }->* 15234Dereferences of pointers to members. 15235 15236@item [] 15237Array indexing. @code{@var{a}[@var{i}]} is defined as 15238@code{*(@var{a}+@var{i})}. Same precedence as @code{->}. 15239 15240@item () 15241Function parameter list. Same precedence as @code{->}. 15242 15243@item :: 15244C@t{++} scope resolution operator. Defined on @code{struct}, @code{union}, 15245and @code{class} types. 15246 15247@item :: 15248Doubled colons also represent the @value{GDBN} scope operator 15249(@pxref{Expressions, ,Expressions}). Same precedence as @code{::}, 15250above. 15251@end table 15252 15253If an operator is redefined in the user code, @value{GDBN} usually 15254attempts to invoke the redefined version instead of using the operator's 15255predefined meaning. 15256 15257@node C Constants 15258@subsubsection C and C@t{++} Constants 15259 15260@cindex C and C@t{++} constants 15261 15262@value{GDBN} allows you to express the constants of C and C@t{++} in the 15263following ways: 15264 15265@itemize @bullet 15266@item 15267Integer constants are a sequence of digits. Octal constants are 15268specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants 15269by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter 15270@samp{l}, specifying that the constant should be treated as a 15271@code{long} value. 15272 15273@item 15274Floating point constants are a sequence of digits, followed by a decimal 15275point, followed by a sequence of digits, and optionally followed by an 15276exponent. An exponent is of the form: 15277@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another 15278sequence of digits. The @samp{+} is optional for positive exponents. 15279A floating-point constant may also end with a letter @samp{f} or 15280@samp{F}, specifying that the constant should be treated as being of 15281the @code{float} (as opposed to the default @code{double}) type; or with 15282a letter @samp{l} or @samp{L}, which specifies a @code{long double} 15283constant. 15284 15285@item 15286Enumerated constants consist of enumerated identifiers, or their 15287integral equivalents. 15288 15289@item 15290Character constants are a single character surrounded by single quotes 15291(@code{'}), or a number---the ordinal value of the corresponding character 15292(usually its @sc{ascii} value). Within quotes, the single character may 15293be represented by a letter or by @dfn{escape sequences}, which are of 15294the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation 15295of the character's ordinal value; or of the form @samp{\@var{x}}, where 15296@samp{@var{x}} is a predefined special character---for example, 15297@samp{\n} for newline. 15298 15299Wide character constants can be written by prefixing a character 15300constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide 15301form of @samp{x}. The target wide character set is used when 15302computing the value of this constant (@pxref{Character Sets}). 15303 15304@item 15305String constants are a sequence of character constants surrounded by 15306double quotes (@code{"}). Any valid character constant (as described 15307above) may appear. Double quotes within the string must be preceded by 15308a backslash, so for instance @samp{"a\"b'c"} is a string of five 15309characters. 15310 15311Wide string constants can be written by prefixing a string constant 15312with @samp{L}, as in C. The target wide character set is used when 15313computing the value of this constant (@pxref{Character Sets}). 15314 15315@item 15316Pointer constants are an integral value. You can also write pointers 15317to constants using the C operator @samp{&}. 15318 15319@item 15320Array constants are comma-separated lists surrounded by braces @samp{@{} 15321and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of 15322integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array, 15323and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers. 15324@end itemize 15325 15326@node C Plus Plus Expressions 15327@subsubsection C@t{++} Expressions 15328 15329@cindex expressions in C@t{++} 15330@value{GDBN} expression handling can interpret most C@t{++} expressions. 15331 15332@cindex debugging C@t{++} programs 15333@cindex C@t{++} compilers 15334@cindex debug formats and C@t{++} 15335@cindex @value{NGCC} and C@t{++} 15336@quotation 15337@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use 15338the proper compiler and the proper debug format. Currently, 15339@value{GDBN} works best when debugging C@t{++} code that is compiled 15340with the most recent version of @value{NGCC} possible. The DWARF 15341debugging format is preferred; @value{NGCC} defaults to this on most 15342popular platforms. Other compilers and/or debug formats are likely to 15343work badly or not at all when using @value{GDBN} to debug C@t{++} 15344code. @xref{Compilation}. 15345@end quotation 15346 15347@enumerate 15348 15349@cindex member functions 15350@item 15351Member function calls are allowed; you can use expressions like 15352 15353@smallexample 15354count = aml->GetOriginal(x, y) 15355@end smallexample 15356 15357@vindex this@r{, inside C@t{++} member functions} 15358@cindex namespace in C@t{++} 15359@item 15360While a member function is active (in the selected stack frame), your 15361expressions have the same namespace available as the member function; 15362that is, @value{GDBN} allows implicit references to the class instance 15363pointer @code{this} following the same rules as C@t{++}. @code{using} 15364declarations in the current scope are also respected by @value{GDBN}. 15365 15366@cindex call overloaded functions 15367@cindex overloaded functions, calling 15368@cindex type conversions in C@t{++} 15369@item 15370You can call overloaded functions; @value{GDBN} resolves the function 15371call to the right definition, with some restrictions. @value{GDBN} does not 15372perform overload resolution involving user-defined type conversions, 15373calls to constructors, or instantiations of templates that do not exist 15374in the program. It also cannot handle ellipsis argument lists or 15375default arguments. 15376 15377It does perform integral conversions and promotions, floating-point 15378promotions, arithmetic conversions, pointer conversions, conversions of 15379class objects to base classes, and standard conversions such as those of 15380functions or arrays to pointers; it requires an exact match on the 15381number of function arguments. 15382 15383Overload resolution is always performed, unless you have specified 15384@code{set overload-resolution off}. @xref{Debugging C Plus Plus, 15385,@value{GDBN} Features for C@t{++}}. 15386 15387You must specify @code{set overload-resolution off} in order to use an 15388explicit function signature to call an overloaded function, as in 15389@smallexample 15390p 'foo(char,int)'('x', 13) 15391@end smallexample 15392 15393The @value{GDBN} command-completion facility can simplify this; 15394see @ref{Completion, ,Command Completion}. 15395 15396@cindex reference declarations 15397@item 15398@value{GDBN} understands variables declared as C@t{++} lvalue or rvalue 15399references; you can use them in expressions just as you do in C@t{++} 15400source---they are automatically dereferenced. 15401 15402In the parameter list shown when @value{GDBN} displays a frame, the values of 15403reference variables are not displayed (unlike other variables); this 15404avoids clutter, since references are often used for large structures. 15405The @emph{address} of a reference variable is always shown, unless 15406you have specified @samp{set print address off}. 15407 15408@item 15409@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your 15410expressions can use it just as expressions in your program do. Since 15411one scope may be defined in another, you can use @code{::} repeatedly if 15412necessary, for example in an expression like 15413@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows 15414resolving name scope by reference to source files, in both C and C@t{++} 15415debugging (@pxref{Variables, ,Program Variables}). 15416 15417@item 15418@value{GDBN} performs argument-dependent lookup, following the C@t{++} 15419specification. 15420@end enumerate 15421 15422@node C Defaults 15423@subsubsection C and C@t{++} Defaults 15424 15425@cindex C and C@t{++} defaults 15426 15427If you allow @value{GDBN} to set range checking automatically, it 15428defaults to @code{off} whenever the working language changes to 15429C or C@t{++}. This happens regardless of whether you or @value{GDBN} 15430selects the working language. 15431 15432If you allow @value{GDBN} to set the language automatically, it 15433recognizes source files whose names end with @file{.c}, @file{.C}, or 15434@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of 15435these files, it sets the working language to C or C@t{++}. 15436@xref{Automatically, ,Having @value{GDBN} Infer the Source Language}, 15437for further details. 15438 15439@node C Checks 15440@subsubsection C and C@t{++} Type and Range Checks 15441 15442@cindex C and C@t{++} checks 15443 15444By default, when @value{GDBN} parses C or C@t{++} expressions, strict type 15445checking is used. However, if you turn type checking off, @value{GDBN} 15446will allow certain non-standard conversions, such as promoting integer 15447constants to pointers. 15448 15449Range checking, if turned on, is done on mathematical operations. Array 15450indices are not checked, since they are often used to index a pointer 15451that is not itself an array. 15452 15453@node Debugging C 15454@subsubsection @value{GDBN} and C 15455 15456The @code{set print union} and @code{show print union} commands apply to 15457the @code{union} type. When set to @samp{on}, any @code{union} that is 15458inside a @code{struct} or @code{class} is also printed. Otherwise, it 15459appears as @samp{@{...@}}. 15460 15461The @code{@@} operator aids in the debugging of dynamic arrays, formed 15462with pointers and a memory allocation function. @xref{Expressions, 15463,Expressions}. 15464 15465@node Debugging C Plus Plus 15466@subsubsection @value{GDBN} Features for C@t{++} 15467 15468@cindex commands for C@t{++} 15469 15470Some @value{GDBN} commands are particularly useful with C@t{++}, and some are 15471designed specifically for use with C@t{++}. Here is a summary: 15472 15473@table @code 15474@cindex break in overloaded functions 15475@item @r{breakpoint menus} 15476When you want a breakpoint in a function whose name is overloaded, 15477@value{GDBN} has the capability to display a menu of possible breakpoint 15478locations to help you specify which function definition you want. 15479@xref{Ambiguous Expressions,,Ambiguous Expressions}. 15480 15481@cindex overloading in C@t{++} 15482@item rbreak @var{regex} 15483Setting breakpoints using regular expressions is helpful for setting 15484breakpoints on overloaded functions that are not members of any special 15485classes. 15486@xref{Set Breaks, ,Setting Breakpoints}. 15487 15488@cindex C@t{++} exception handling 15489@item catch throw 15490@itemx catch rethrow 15491@itemx catch catch 15492Debug C@t{++} exception handling using these commands. @xref{Set 15493Catchpoints, , Setting Catchpoints}. 15494 15495@cindex inheritance 15496@item ptype @var{typename} 15497Print inheritance relationships as well as other information for type 15498@var{typename}. 15499@xref{Symbols, ,Examining the Symbol Table}. 15500 15501@item info vtbl @var{expression}. 15502The @code{info vtbl} command can be used to display the virtual 15503method tables of the object computed by @var{expression}. This shows 15504one entry per virtual table; there may be multiple virtual tables when 15505multiple inheritance is in use. 15506 15507@cindex C@t{++} demangling 15508@item demangle @var{name} 15509Demangle @var{name}. 15510@xref{Symbols}, for a more complete description of the @code{demangle} command. 15511 15512@cindex C@t{++} symbol display 15513@item set print demangle 15514@itemx show print demangle 15515@itemx set print asm-demangle 15516@itemx show print asm-demangle 15517Control whether C@t{++} symbols display in their source form, both when 15518displaying code as C@t{++} source and when displaying disassemblies. 15519@xref{Print Settings, ,Print Settings}. 15520 15521@item set print object 15522@itemx show print object 15523Choose whether to print derived (actual) or declared types of objects. 15524@xref{Print Settings, ,Print Settings}. 15525 15526@item set print vtbl 15527@itemx show print vtbl 15528Control the format for printing virtual function tables. 15529@xref{Print Settings, ,Print Settings}. 15530(The @code{vtbl} commands do not work on programs compiled with the HP 15531ANSI C@t{++} compiler (@code{aCC}).) 15532 15533@kindex set overload-resolution 15534@cindex overloaded functions, overload resolution 15535@item set overload-resolution on 15536Enable overload resolution for C@t{++} expression evaluation. The default 15537is on. For overloaded functions, @value{GDBN} evaluates the arguments 15538and searches for a function whose signature matches the argument types, 15539using the standard C@t{++} conversion rules (see @ref{C Plus Plus 15540Expressions, ,C@t{++} Expressions}, for details). 15541If it cannot find a match, it emits a message. 15542 15543@item set overload-resolution off 15544Disable overload resolution for C@t{++} expression evaluation. For 15545overloaded functions that are not class member functions, @value{GDBN} 15546chooses the first function of the specified name that it finds in the 15547symbol table, whether or not its arguments are of the correct type. For 15548overloaded functions that are class member functions, @value{GDBN} 15549searches for a function whose signature @emph{exactly} matches the 15550argument types. 15551 15552@kindex show overload-resolution 15553@item show overload-resolution 15554Show the current setting of overload resolution. 15555 15556@item @r{Overloaded symbol names} 15557You can specify a particular definition of an overloaded symbol, using 15558the same notation that is used to declare such symbols in C@t{++}: type 15559@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can 15560also use the @value{GDBN} command-line word completion facilities to list the 15561available choices, or to finish the type list for you. 15562@xref{Completion,, Command Completion}, for details on how to do this. 15563 15564@item @r{Breakpoints in functions with ABI tags} 15565 15566The GNU C@t{++} compiler introduced the notion of ABI ``tags'', which 15567correspond to changes in the ABI of a type, function, or variable that 15568would not otherwise be reflected in a mangled name. See 15569@url{https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/} 15570for more detail. 15571 15572The ABI tags are visible in C@t{++} demangled names. For example, a 15573function that returns a std::string: 15574 15575@smallexample 15576std::string function(int); 15577@end smallexample 15578 15579@noindent 15580when compiled for the C++11 ABI is marked with the @code{cxx11} ABI 15581tag, and @value{GDBN} displays the symbol like this: 15582 15583@smallexample 15584function[abi:cxx11](int) 15585@end smallexample 15586 15587You can set a breakpoint on such functions simply as if they had no 15588tag. For example: 15589 15590@smallexample 15591(gdb) b function(int) 15592Breakpoint 2 at 0x40060d: file main.cc, line 10. 15593(gdb) info breakpoints 15594Num Type Disp Enb Address What 155951 breakpoint keep y 0x0040060d in function[abi:cxx11](int) 15596 at main.cc:10 15597@end smallexample 15598 15599On the rare occasion you need to disambiguate between different ABI 15600tags, you can do so by simply including the ABI tag in the function 15601name, like: 15602 15603@smallexample 15604(@value{GDBP}) b ambiguous[abi:other_tag](int) 15605@end smallexample 15606@end table 15607 15608@node Decimal Floating Point 15609@subsubsection Decimal Floating Point format 15610@cindex decimal floating point format 15611 15612@value{GDBN} can examine, set and perform computations with numbers in 15613decimal floating point format, which in the C language correspond to the 15614@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as 15615specified by the extension to support decimal floating-point arithmetic. 15616 15617There are two encodings in use, depending on the architecture: BID (Binary 15618Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for 15619PowerPC and S/390. @value{GDBN} will use the appropriate encoding for the 15620configured target. 15621 15622Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN} 15623to manipulate decimal floating point numbers, it is not possible to convert 15624(using a cast, for example) integers wider than 32-bit to decimal float. 15625 15626In addition, in order to imitate @value{GDBN}'s behaviour with binary floating 15627point computations, error checking in decimal float operations ignores 15628underflow, overflow and divide by zero exceptions. 15629 15630In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers 15631to inspect @code{_Decimal128} values stored in floating point registers. 15632See @ref{PowerPC,,PowerPC} for more details. 15633 15634@node D 15635@subsection D 15636 15637@cindex D 15638@value{GDBN} can be used to debug programs written in D and compiled with 15639GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D 15640specific feature --- dynamic arrays. 15641 15642@node Go 15643@subsection Go 15644 15645@cindex Go (programming language) 15646@value{GDBN} can be used to debug programs written in Go and compiled with 15647@file{gccgo} or @file{6g} compilers. 15648 15649Here is a summary of the Go-specific features and restrictions: 15650 15651@table @code 15652@cindex current Go package 15653@item The current Go package 15654The name of the current package does not need to be specified when 15655specifying global variables and functions. 15656 15657For example, given the program: 15658 15659@example 15660package main 15661var myglob = "Shall we?" 15662func main () @{ 15663 // ... 15664@} 15665@end example 15666 15667When stopped inside @code{main} either of these work: 15668 15669@example 15670(gdb) p myglob 15671(gdb) p main.myglob 15672@end example 15673 15674@cindex builtin Go types 15675@item Builtin Go types 15676The @code{string} type is recognized by @value{GDBN} and is printed 15677as a string. 15678 15679@cindex builtin Go functions 15680@item Builtin Go functions 15681The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof} 15682function and handles it internally. 15683 15684@cindex restrictions on Go expressions 15685@item Restrictions on Go expressions 15686All Go operators are supported except @code{&^}. 15687The Go @code{_} ``blank identifier'' is not supported. 15688Automatic dereferencing of pointers is not supported. 15689@end table 15690 15691@node Objective-C 15692@subsection Objective-C 15693 15694@cindex Objective-C 15695This section provides information about some commands and command 15696options that are useful for debugging Objective-C code. See also 15697@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a 15698few more commands specific to Objective-C support. 15699 15700@menu 15701* Method Names in Commands:: 15702* The Print Command with Objective-C:: 15703@end menu 15704 15705@node Method Names in Commands 15706@subsubsection Method Names in Commands 15707 15708The following commands have been extended to accept Objective-C method 15709names as line specifications: 15710 15711@kindex clear@r{, and Objective-C} 15712@kindex break@r{, and Objective-C} 15713@kindex info line@r{, and Objective-C} 15714@kindex jump@r{, and Objective-C} 15715@kindex list@r{, and Objective-C} 15716@itemize 15717@item @code{clear} 15718@item @code{break} 15719@item @code{info line} 15720@item @code{jump} 15721@item @code{list} 15722@end itemize 15723 15724A fully qualified Objective-C method name is specified as 15725 15726@smallexample 15727-[@var{Class} @var{methodName}] 15728@end smallexample 15729 15730where the minus sign is used to indicate an instance method and a 15731plus sign (not shown) is used to indicate a class method. The class 15732name @var{Class} and method name @var{methodName} are enclosed in 15733brackets, similar to the way messages are specified in Objective-C 15734source code. For example, to set a breakpoint at the @code{create} 15735instance method of class @code{Fruit} in the program currently being 15736debugged, enter: 15737 15738@smallexample 15739break -[Fruit create] 15740@end smallexample 15741 15742To list ten program lines around the @code{initialize} class method, 15743enter: 15744 15745@smallexample 15746list +[NSText initialize] 15747@end smallexample 15748 15749In the current version of @value{GDBN}, the plus or minus sign is 15750required. In future versions of @value{GDBN}, the plus or minus 15751sign will be optional, but you can use it to narrow the search. It 15752is also possible to specify just a method name: 15753 15754@smallexample 15755break create 15756@end smallexample 15757 15758You must specify the complete method name, including any colons. If 15759your program's source files contain more than one @code{create} method, 15760you'll be presented with a numbered list of classes that implement that 15761method. Indicate your choice by number, or type @samp{0} to exit if 15762none apply. 15763 15764As another example, to clear a breakpoint established at the 15765@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter: 15766 15767@smallexample 15768clear -[NSWindow makeKeyAndOrderFront:] 15769@end smallexample 15770 15771@node The Print Command with Objective-C 15772@subsubsection The Print Command With Objective-C 15773@cindex Objective-C, print objects 15774@kindex print-object 15775@kindex po @r{(@code{print-object})} 15776 15777The print command has also been extended to accept methods. For example: 15778 15779@smallexample 15780print -[@var{object} hash] 15781@end smallexample 15782 15783@cindex print an Objective-C object description 15784@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects 15785@noindent 15786will tell @value{GDBN} to send the @code{hash} message to @var{object} 15787and print the result. Also, an additional command has been added, 15788@code{print-object} or @code{po} for short, which is meant to print 15789the description of an object. However, this command may only work 15790with certain Objective-C libraries that have a particular hook 15791function, @code{_NSPrintForDebugger}, defined. 15792 15793@node OpenCL C 15794@subsection OpenCL C 15795 15796@cindex OpenCL C 15797This section provides information about @value{GDBN}s OpenCL C support. 15798 15799@menu 15800* OpenCL C Datatypes:: 15801* OpenCL C Expressions:: 15802* OpenCL C Operators:: 15803@end menu 15804 15805@node OpenCL C Datatypes 15806@subsubsection OpenCL C Datatypes 15807 15808@cindex OpenCL C Datatypes 15809@value{GDBN} supports the builtin scalar and vector datatypes specified 15810by OpenCL 1.1. In addition the half- and double-precision floating point 15811data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL 15812extensions are also known to @value{GDBN}. 15813 15814@node OpenCL C Expressions 15815@subsubsection OpenCL C Expressions 15816 15817@cindex OpenCL C Expressions 15818@value{GDBN} supports accesses to vector components including the access as 15819lvalue where possible. Since OpenCL C is based on C99 most C expressions 15820supported by @value{GDBN} can be used as well. 15821 15822@node OpenCL C Operators 15823@subsubsection OpenCL C Operators 15824 15825@cindex OpenCL C Operators 15826@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and 15827vector data types. 15828 15829@node Fortran 15830@subsection Fortran 15831@cindex Fortran-specific support in @value{GDBN} 15832 15833@value{GDBN} can be used to debug programs written in Fortran, but it 15834currently supports only the features of Fortran 77 language. 15835 15836@cindex trailing underscore, in Fortran symbols 15837Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers 15838among them) append an underscore to the names of variables and 15839functions. When you debug programs compiled by those compilers, you 15840will need to refer to variables and functions with a trailing 15841underscore. 15842 15843@menu 15844* Fortran Operators:: Fortran operators and expressions 15845* Fortran Defaults:: Default settings for Fortran 15846* Special Fortran Commands:: Special @value{GDBN} commands for Fortran 15847@end menu 15848 15849@node Fortran Operators 15850@subsubsection Fortran Operators and Expressions 15851 15852@cindex Fortran operators and expressions 15853 15854Operators must be defined on values of specific types. For instance, 15855@code{+} is defined on numbers, but not on characters or other non- 15856arithmetic types. Operators are often defined on groups of types. 15857 15858@table @code 15859@item ** 15860The exponentiation operator. It raises the first operand to the power 15861of the second one. 15862 15863@item : 15864The range operator. Normally used in the form of array(low:high) to 15865represent a section of array. 15866 15867@item % 15868The access component operator. Normally used to access elements in derived 15869types. Also suitable for unions. As unions aren't part of regular Fortran, 15870this can only happen when accessing a register that uses a gdbarch-defined 15871union type. 15872@end table 15873 15874@node Fortran Defaults 15875@subsubsection Fortran Defaults 15876 15877@cindex Fortran Defaults 15878 15879Fortran symbols are usually case-insensitive, so @value{GDBN} by 15880default uses case-insensitive matches for Fortran symbols. You can 15881change that with the @samp{set case-insensitive} command, see 15882@ref{Symbols}, for the details. 15883 15884@node Special Fortran Commands 15885@subsubsection Special Fortran Commands 15886 15887@cindex Special Fortran commands 15888 15889@value{GDBN} has some commands to support Fortran-specific features, 15890such as displaying common blocks. 15891 15892@table @code 15893@cindex @code{COMMON} blocks, Fortran 15894@kindex info common 15895@item info common @r{[}@var{common-name}@r{]} 15896This command prints the values contained in the Fortran @code{COMMON} 15897block whose name is @var{common-name}. With no argument, the names of 15898all @code{COMMON} blocks visible at the current program location are 15899printed. 15900@end table 15901 15902@node Pascal 15903@subsection Pascal 15904 15905@cindex Pascal support in @value{GDBN}, limitations 15906Debugging Pascal programs which use sets, subranges, file variables, or 15907nested functions does not currently work. @value{GDBN} does not support 15908entering expressions, printing values, or similar features using Pascal 15909syntax. 15910 15911The Pascal-specific command @code{set print pascal_static-members} 15912controls whether static members of Pascal objects are displayed. 15913@xref{Print Settings, pascal_static-members}. 15914 15915@node Rust 15916@subsection Rust 15917 15918@value{GDBN} supports the @url{https://www.rust-lang.org/, Rust 15919Programming Language}. Type- and value-printing, and expression 15920parsing, are reasonably complete. However, there are a few 15921peculiarities and holes to be aware of. 15922 15923@itemize @bullet 15924@item 15925Linespecs (@pxref{Specify Location}) are never relative to the current 15926crate. Instead, they act as if there were a global namespace of 15927crates, somewhat similar to the way @code{extern crate} behaves. 15928 15929That is, if @value{GDBN} is stopped at a breakpoint in a function in 15930crate @samp{A}, module @samp{B}, then @code{break B::f} will attempt 15931to set a breakpoint in a function named @samp{f} in a crate named 15932@samp{B}. 15933 15934As a consequence of this approach, linespecs also cannot refer to 15935items using @samp{self::} or @samp{super::}. 15936 15937@item 15938Because @value{GDBN} implements Rust name-lookup semantics in 15939expressions, it will sometimes prepend the current crate to a name. 15940For example, if @value{GDBN} is stopped at a breakpoint in the crate 15941@samp{K}, then @code{print ::x::y} will try to find the symbol 15942@samp{K::x::y}. 15943 15944However, since it is useful to be able to refer to other crates when 15945debugging, @value{GDBN} provides the @code{extern} extension to 15946circumvent this. To use the extension, just put @code{extern} before 15947a path expression to refer to the otherwise unavailable ``global'' 15948scope. 15949 15950In the above example, if you wanted to refer to the symbol @samp{y} in 15951the crate @samp{x}, you would use @code{print extern x::y}. 15952 15953@item 15954The Rust expression evaluator does not support ``statement-like'' 15955expressions such as @code{if} or @code{match}, or lambda expressions. 15956 15957@item 15958Tuple expressions are not implemented. 15959 15960@item 15961The Rust expression evaluator does not currently implement the 15962@code{Drop} trait. Objects that may be created by the evaluator will 15963never be destroyed. 15964 15965@item 15966@value{GDBN} does not implement type inference for generics. In order 15967to call generic functions or otherwise refer to generic items, you 15968will have to specify the type parameters manually. 15969 15970@item 15971@value{GDBN} currently uses the C@t{++} demangler for Rust. In most 15972cases this does not cause any problems. However, in an expression 15973context, completing a generic function name will give syntactically 15974invalid results. This happens because Rust requires the @samp{::} 15975operator between the function name and its generic arguments. For 15976example, @value{GDBN} might provide a completion like 15977@code{crate::f<u32>}, where the parser would require 15978@code{crate::f::<u32>}. 15979 15980@item 15981As of this writing, the Rust compiler (version 1.8) has a few holes in 15982the debugging information it generates. These holes prevent certain 15983features from being implemented by @value{GDBN}: 15984@itemize @bullet 15985 15986@item 15987Method calls cannot be made via traits. 15988 15989@item 15990Operator overloading is not implemented. 15991 15992@item 15993When debugging in a monomorphized function, you cannot use the generic 15994type names. 15995 15996@item 15997The type @code{Self} is not available. 15998 15999@item 16000@code{use} statements are not available, so some names may not be 16001available in the crate. 16002@end itemize 16003@end itemize 16004 16005@node Modula-2 16006@subsection Modula-2 16007 16008@cindex Modula-2, @value{GDBN} support 16009 16010The extensions made to @value{GDBN} to support Modula-2 only support 16011output from the @sc{gnu} Modula-2 compiler (which is currently being 16012developed). Other Modula-2 compilers are not currently supported, and 16013attempting to debug executables produced by them is most likely 16014to give an error as @value{GDBN} reads in the executable's symbol 16015table. 16016 16017@cindex expressions in Modula-2 16018@menu 16019* M2 Operators:: Built-in operators 16020* Built-In Func/Proc:: Built-in functions and procedures 16021* M2 Constants:: Modula-2 constants 16022* M2 Types:: Modula-2 types 16023* M2 Defaults:: Default settings for Modula-2 16024* Deviations:: Deviations from standard Modula-2 16025* M2 Checks:: Modula-2 type and range checks 16026* M2 Scope:: The scope operators @code{::} and @code{.} 16027* GDB/M2:: @value{GDBN} and Modula-2 16028@end menu 16029 16030@node M2 Operators 16031@subsubsection Operators 16032@cindex Modula-2 operators 16033 16034Operators must be defined on values of specific types. For instance, 16035@code{+} is defined on numbers, but not on structures. Operators are 16036often defined on groups of types. For the purposes of Modula-2, the 16037following definitions hold: 16038 16039@itemize @bullet 16040 16041@item 16042@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and 16043their subranges. 16044 16045@item 16046@emph{Character types} consist of @code{CHAR} and its subranges. 16047 16048@item 16049@emph{Floating-point types} consist of @code{REAL}. 16050 16051@item 16052@emph{Pointer types} consist of anything declared as @code{POINTER TO 16053@var{type}}. 16054 16055@item 16056@emph{Scalar types} consist of all of the above. 16057 16058@item 16059@emph{Set types} consist of @code{SET} and @code{BITSET} types. 16060 16061@item 16062@emph{Boolean types} consist of @code{BOOLEAN}. 16063@end itemize 16064 16065@noindent 16066The following operators are supported, and appear in order of 16067increasing precedence: 16068 16069@table @code 16070@item , 16071Function argument or array index separator. 16072 16073@item := 16074Assignment. The value of @var{var} @code{:=} @var{value} is 16075@var{value}. 16076 16077@item <@r{, }> 16078Less than, greater than on integral, floating-point, or enumerated 16079types. 16080 16081@item <=@r{, }>= 16082Less than or equal to, greater than or equal to 16083on integral, floating-point and enumerated types, or set inclusion on 16084set types. Same precedence as @code{<}. 16085 16086@item =@r{, }<>@r{, }# 16087Equality and two ways of expressing inequality, valid on scalar types. 16088Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is 16089available for inequality, since @code{#} conflicts with the script 16090comment character. 16091 16092@item IN 16093Set membership. Defined on set types and the types of their members. 16094Same precedence as @code{<}. 16095 16096@item OR 16097Boolean disjunction. Defined on boolean types. 16098 16099@item AND@r{, }& 16100Boolean conjunction. Defined on boolean types. 16101 16102@item @@ 16103The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 16104 16105@item +@r{, }- 16106Addition and subtraction on integral and floating-point types, or union 16107and difference on set types. 16108 16109@item * 16110Multiplication on integral and floating-point types, or set intersection 16111on set types. 16112 16113@item / 16114Division on floating-point types, or symmetric set difference on set 16115types. Same precedence as @code{*}. 16116 16117@item DIV@r{, }MOD 16118Integer division and remainder. Defined on integral types. Same 16119precedence as @code{*}. 16120 16121@item - 16122Negative. Defined on @code{INTEGER} and @code{REAL} data. 16123 16124@item ^ 16125Pointer dereferencing. Defined on pointer types. 16126 16127@item NOT 16128Boolean negation. Defined on boolean types. Same precedence as 16129@code{^}. 16130 16131@item . 16132@code{RECORD} field selector. Defined on @code{RECORD} data. Same 16133precedence as @code{^}. 16134 16135@item [] 16136Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}. 16137 16138@item () 16139Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence 16140as @code{^}. 16141 16142@item ::@r{, }. 16143@value{GDBN} and Modula-2 scope operators. 16144@end table 16145 16146@quotation 16147@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN} 16148treats the use of the operator @code{IN}, or the use of operators 16149@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#}, 16150@code{<=}, and @code{>=} on sets as an error. 16151@end quotation 16152 16153 16154@node Built-In Func/Proc 16155@subsubsection Built-in Functions and Procedures 16156@cindex Modula-2 built-ins 16157 16158Modula-2 also makes available several built-in procedures and functions. 16159In describing these, the following metavariables are used: 16160 16161@table @var 16162 16163@item a 16164represents an @code{ARRAY} variable. 16165 16166@item c 16167represents a @code{CHAR} constant or variable. 16168 16169@item i 16170represents a variable or constant of integral type. 16171 16172@item m 16173represents an identifier that belongs to a set. Generally used in the 16174same function with the metavariable @var{s}. The type of @var{s} should 16175be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}). 16176 16177@item n 16178represents a variable or constant of integral or floating-point type. 16179 16180@item r 16181represents a variable or constant of floating-point type. 16182 16183@item t 16184represents a type. 16185 16186@item v 16187represents a variable. 16188 16189@item x 16190represents a variable or constant of one of many types. See the 16191explanation of the function for details. 16192@end table 16193 16194All Modula-2 built-in procedures also return a result, described below. 16195 16196@table @code 16197@item ABS(@var{n}) 16198Returns the absolute value of @var{n}. 16199 16200@item CAP(@var{c}) 16201If @var{c} is a lower case letter, it returns its upper case 16202equivalent, otherwise it returns its argument. 16203 16204@item CHR(@var{i}) 16205Returns the character whose ordinal value is @var{i}. 16206 16207@item DEC(@var{v}) 16208Decrements the value in the variable @var{v} by one. Returns the new value. 16209 16210@item DEC(@var{v},@var{i}) 16211Decrements the value in the variable @var{v} by @var{i}. Returns the 16212new value. 16213 16214@item EXCL(@var{m},@var{s}) 16215Removes the element @var{m} from the set @var{s}. Returns the new 16216set. 16217 16218@item FLOAT(@var{i}) 16219Returns the floating point equivalent of the integer @var{i}. 16220 16221@item HIGH(@var{a}) 16222Returns the index of the last member of @var{a}. 16223 16224@item INC(@var{v}) 16225Increments the value in the variable @var{v} by one. Returns the new value. 16226 16227@item INC(@var{v},@var{i}) 16228Increments the value in the variable @var{v} by @var{i}. Returns the 16229new value. 16230 16231@item INCL(@var{m},@var{s}) 16232Adds the element @var{m} to the set @var{s} if it is not already 16233there. Returns the new set. 16234 16235@item MAX(@var{t}) 16236Returns the maximum value of the type @var{t}. 16237 16238@item MIN(@var{t}) 16239Returns the minimum value of the type @var{t}. 16240 16241@item ODD(@var{i}) 16242Returns boolean TRUE if @var{i} is an odd number. 16243 16244@item ORD(@var{x}) 16245Returns the ordinal value of its argument. For example, the ordinal 16246value of a character is its @sc{ascii} value (on machines supporting 16247the @sc{ascii} character set). The argument @var{x} must be of an 16248ordered type, which include integral, character and enumerated types. 16249 16250@item SIZE(@var{x}) 16251Returns the size of its argument. The argument @var{x} can be a 16252variable or a type. 16253 16254@item TRUNC(@var{r}) 16255Returns the integral part of @var{r}. 16256 16257@item TSIZE(@var{x}) 16258Returns the size of its argument. The argument @var{x} can be a 16259variable or a type. 16260 16261@item VAL(@var{t},@var{i}) 16262Returns the member of the type @var{t} whose ordinal value is @var{i}. 16263@end table 16264 16265@quotation 16266@emph{Warning:} Sets and their operations are not yet supported, so 16267@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as 16268an error. 16269@end quotation 16270 16271@cindex Modula-2 constants 16272@node M2 Constants 16273@subsubsection Constants 16274 16275@value{GDBN} allows you to express the constants of Modula-2 in the following 16276ways: 16277 16278@itemize @bullet 16279 16280@item 16281Integer constants are simply a sequence of digits. When used in an 16282expression, a constant is interpreted to be type-compatible with the 16283rest of the expression. Hexadecimal integers are specified by a 16284trailing @samp{H}, and octal integers by a trailing @samp{B}. 16285 16286@item 16287Floating point constants appear as a sequence of digits, followed by a 16288decimal point and another sequence of digits. An optional exponent can 16289then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where 16290@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the 16291digits of the floating point constant must be valid decimal (base 10) 16292digits. 16293 16294@item 16295Character constants consist of a single character enclosed by a pair of 16296like quotes, either single (@code{'}) or double (@code{"}). They may 16297also be expressed by their ordinal value (their @sc{ascii} value, usually) 16298followed by a @samp{C}. 16299 16300@item 16301String constants consist of a sequence of characters enclosed by a 16302pair of like quotes, either single (@code{'}) or double (@code{"}). 16303Escape sequences in the style of C are also allowed. @xref{C 16304Constants, ,C and C@t{++} Constants}, for a brief explanation of escape 16305sequences. 16306 16307@item 16308Enumerated constants consist of an enumerated identifier. 16309 16310@item 16311Boolean constants consist of the identifiers @code{TRUE} and 16312@code{FALSE}. 16313 16314@item 16315Pointer constants consist of integral values only. 16316 16317@item 16318Set constants are not yet supported. 16319@end itemize 16320 16321@node M2 Types 16322@subsubsection Modula-2 Types 16323@cindex Modula-2 types 16324 16325Currently @value{GDBN} can print the following data types in Modula-2 16326syntax: array types, record types, set types, pointer types, procedure 16327types, enumerated types, subrange types and base types. You can also 16328print the contents of variables declared using these type. 16329This section gives a number of simple source code examples together with 16330sample @value{GDBN} sessions. 16331 16332The first example contains the following section of code: 16333 16334@smallexample 16335VAR 16336 s: SET OF CHAR ; 16337 r: [20..40] ; 16338@end smallexample 16339 16340@noindent 16341and you can request @value{GDBN} to interrogate the type and value of 16342@code{r} and @code{s}. 16343 16344@smallexample 16345(@value{GDBP}) print s 16346@{'A'..'C', 'Z'@} 16347(@value{GDBP}) ptype s 16348SET OF CHAR 16349(@value{GDBP}) print r 1635021 16351(@value{GDBP}) ptype r 16352[20..40] 16353@end smallexample 16354 16355@noindent 16356Likewise if your source code declares @code{s} as: 16357 16358@smallexample 16359VAR 16360 s: SET ['A'..'Z'] ; 16361@end smallexample 16362 16363@noindent 16364then you may query the type of @code{s} by: 16365 16366@smallexample 16367(@value{GDBP}) ptype s 16368type = SET ['A'..'Z'] 16369@end smallexample 16370 16371@noindent 16372Note that at present you cannot interactively manipulate set 16373expressions using the debugger. 16374 16375The following example shows how you might declare an array in Modula-2 16376and how you can interact with @value{GDBN} to print its type and contents: 16377 16378@smallexample 16379VAR 16380 s: ARRAY [-10..10] OF CHAR ; 16381@end smallexample 16382 16383@smallexample 16384(@value{GDBP}) ptype s 16385ARRAY [-10..10] OF CHAR 16386@end smallexample 16387 16388Note that the array handling is not yet complete and although the type 16389is printed correctly, expression handling still assumes that all 16390arrays have a lower bound of zero and not @code{-10} as in the example 16391above. 16392 16393Here are some more type related Modula-2 examples: 16394 16395@smallexample 16396TYPE 16397 colour = (blue, red, yellow, green) ; 16398 t = [blue..yellow] ; 16399VAR 16400 s: t ; 16401BEGIN 16402 s := blue ; 16403@end smallexample 16404 16405@noindent 16406The @value{GDBN} interaction shows how you can query the data type 16407and value of a variable. 16408 16409@smallexample 16410(@value{GDBP}) print s 16411$1 = blue 16412(@value{GDBP}) ptype t 16413type = [blue..yellow] 16414@end smallexample 16415 16416@noindent 16417In this example a Modula-2 array is declared and its contents 16418displayed. Observe that the contents are written in the same way as 16419their @code{C} counterparts. 16420 16421@smallexample 16422VAR 16423 s: ARRAY [1..5] OF CARDINAL ; 16424BEGIN 16425 s[1] := 1 ; 16426@end smallexample 16427 16428@smallexample 16429(@value{GDBP}) print s 16430$1 = @{1, 0, 0, 0, 0@} 16431(@value{GDBP}) ptype s 16432type = ARRAY [1..5] OF CARDINAL 16433@end smallexample 16434 16435The Modula-2 language interface to @value{GDBN} also understands 16436pointer types as shown in this example: 16437 16438@smallexample 16439VAR 16440 s: POINTER TO ARRAY [1..5] OF CARDINAL ; 16441BEGIN 16442 NEW(s) ; 16443 s^[1] := 1 ; 16444@end smallexample 16445 16446@noindent 16447and you can request that @value{GDBN} describes the type of @code{s}. 16448 16449@smallexample 16450(@value{GDBP}) ptype s 16451type = POINTER TO ARRAY [1..5] OF CARDINAL 16452@end smallexample 16453 16454@value{GDBN} handles compound types as we can see in this example. 16455Here we combine array types, record types, pointer types and subrange 16456types: 16457 16458@smallexample 16459TYPE 16460 foo = RECORD 16461 f1: CARDINAL ; 16462 f2: CHAR ; 16463 f3: myarray ; 16464 END ; 16465 16466 myarray = ARRAY myrange OF CARDINAL ; 16467 myrange = [-2..2] ; 16468VAR 16469 s: POINTER TO ARRAY myrange OF foo ; 16470@end smallexample 16471 16472@noindent 16473and you can ask @value{GDBN} to describe the type of @code{s} as shown 16474below. 16475 16476@smallexample 16477(@value{GDBP}) ptype s 16478type = POINTER TO ARRAY [-2..2] OF foo = RECORD 16479 f1 : CARDINAL; 16480 f2 : CHAR; 16481 f3 : ARRAY [-2..2] OF CARDINAL; 16482END 16483@end smallexample 16484 16485@node M2 Defaults 16486@subsubsection Modula-2 Defaults 16487@cindex Modula-2 defaults 16488 16489If type and range checking are set automatically by @value{GDBN}, they 16490both default to @code{on} whenever the working language changes to 16491Modula-2. This happens regardless of whether you or @value{GDBN} 16492selected the working language. 16493 16494If you allow @value{GDBN} to set the language automatically, then entering 16495code compiled from a file whose name ends with @file{.mod} sets the 16496working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} 16497Infer the Source Language}, for further details. 16498 16499@node Deviations 16500@subsubsection Deviations from Standard Modula-2 16501@cindex Modula-2, deviations from 16502 16503A few changes have been made to make Modula-2 programs easier to debug. 16504This is done primarily via loosening its type strictness: 16505 16506@itemize @bullet 16507@item 16508Unlike in standard Modula-2, pointer constants can be formed by 16509integers. This allows you to modify pointer variables during 16510debugging. (In standard Modula-2, the actual address contained in a 16511pointer variable is hidden from you; it can only be modified 16512through direct assignment to another pointer variable or expression that 16513returned a pointer.) 16514 16515@item 16516C escape sequences can be used in strings and characters to represent 16517non-printable characters. @value{GDBN} prints out strings with these 16518escape sequences embedded. Single non-printable characters are 16519printed using the @samp{CHR(@var{nnn})} format. 16520 16521@item 16522The assignment operator (@code{:=}) returns the value of its right-hand 16523argument. 16524 16525@item 16526All built-in procedures both modify @emph{and} return their argument. 16527@end itemize 16528 16529@node M2 Checks 16530@subsubsection Modula-2 Type and Range Checks 16531@cindex Modula-2 checks 16532 16533@quotation 16534@emph{Warning:} in this release, @value{GDBN} does not yet perform type or 16535range checking. 16536@end quotation 16537@c FIXME remove warning when type/range checks added 16538 16539@value{GDBN} considers two Modula-2 variables type equivalent if: 16540 16541@itemize @bullet 16542@item 16543They are of types that have been declared equivalent via a @code{TYPE 16544@var{t1} = @var{t2}} statement 16545 16546@item 16547They have been declared on the same line. (Note: This is true of the 16548@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.) 16549@end itemize 16550 16551As long as type checking is enabled, any attempt to combine variables 16552whose types are not equivalent is an error. 16553 16554Range checking is done on all mathematical operations, assignment, array 16555index bounds, and all built-in functions and procedures. 16556 16557@node M2 Scope 16558@subsubsection The Scope Operators @code{::} and @code{.} 16559@cindex scope 16560@cindex @code{.}, Modula-2 scope operator 16561@cindex colon, doubled as scope operator 16562@ifinfo 16563@vindex colon-colon@r{, in Modula-2} 16564@c Info cannot handle :: but TeX can. 16565@end ifinfo 16566@ifnotinfo 16567@vindex ::@r{, in Modula-2} 16568@end ifnotinfo 16569 16570There are a few subtle differences between the Modula-2 scope operator 16571(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have 16572similar syntax: 16573 16574@smallexample 16575 16576@var{module} . @var{id} 16577@var{scope} :: @var{id} 16578@end smallexample 16579 16580@noindent 16581where @var{scope} is the name of a module or a procedure, 16582@var{module} the name of a module, and @var{id} is any declared 16583identifier within your program, except another module. 16584 16585Using the @code{::} operator makes @value{GDBN} search the scope 16586specified by @var{scope} for the identifier @var{id}. If it is not 16587found in the specified scope, then @value{GDBN} searches all scopes 16588enclosing the one specified by @var{scope}. 16589 16590Using the @code{.} operator makes @value{GDBN} search the current scope for 16591the identifier specified by @var{id} that was imported from the 16592definition module specified by @var{module}. With this operator, it is 16593an error if the identifier @var{id} was not imported from definition 16594module @var{module}, or if @var{id} is not an identifier in 16595@var{module}. 16596 16597@node GDB/M2 16598@subsubsection @value{GDBN} and Modula-2 16599 16600Some @value{GDBN} commands have little use when debugging Modula-2 programs. 16601Five subcommands of @code{set print} and @code{show print} apply 16602specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle}, 16603@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four 16604apply to C@t{++}, and the last to the C @code{union} type, which has no direct 16605analogue in Modula-2. 16606 16607The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available 16608with any language, is not useful with Modula-2. Its 16609intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be 16610created in Modula-2 as they can in C or C@t{++}. However, because an 16611address can be specified by an integral constant, the construct 16612@samp{@{@var{type}@}@var{adrexp}} is still useful. 16613 16614@cindex @code{#} in Modula-2 16615In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is 16616interpreted as the beginning of a comment. Use @code{<>} instead. 16617 16618@node Ada 16619@subsection Ada 16620@cindex Ada 16621 16622The extensions made to @value{GDBN} for Ada only support 16623output from the @sc{gnu} Ada (GNAT) compiler. 16624Other Ada compilers are not currently supported, and 16625attempting to debug executables produced by them is most likely 16626to be difficult. 16627 16628 16629@cindex expressions in Ada 16630@menu 16631* Ada Mode Intro:: General remarks on the Ada syntax 16632 and semantics supported by Ada mode 16633 in @value{GDBN}. 16634* Omissions from Ada:: Restrictions on the Ada expression syntax. 16635* Additions to Ada:: Extensions of the Ada expression syntax. 16636* Overloading support for Ada:: Support for expressions involving overloaded 16637 subprograms. 16638* Stopping Before Main Program:: Debugging the program during elaboration. 16639* Ada Exceptions:: Ada Exceptions 16640* Ada Tasks:: Listing and setting breakpoints in tasks. 16641* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files 16642* Ravenscar Profile:: Tasking Support when using the Ravenscar 16643 Profile 16644* Ada Settings:: New settable GDB parameters for Ada. 16645* Ada Glitches:: Known peculiarities of Ada mode. 16646@end menu 16647 16648@node Ada Mode Intro 16649@subsubsection Introduction 16650@cindex Ada mode, general 16651 16652The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression 16653syntax, with some extensions. 16654The philosophy behind the design of this subset is 16655 16656@itemize @bullet 16657@item 16658That @value{GDBN} should provide basic literals and access to operations for 16659arithmetic, dereferencing, field selection, indexing, and subprogram calls, 16660leaving more sophisticated computations to subprograms written into the 16661program (which therefore may be called from @value{GDBN}). 16662 16663@item 16664That type safety and strict adherence to Ada language restrictions 16665are not particularly important to the @value{GDBN} user. 16666 16667@item 16668That brevity is important to the @value{GDBN} user. 16669@end itemize 16670 16671Thus, for brevity, the debugger acts as if all names declared in 16672user-written packages are directly visible, even if they are not visible 16673according to Ada rules, thus making it unnecessary to fully qualify most 16674names with their packages, regardless of context. Where this causes 16675ambiguity, @value{GDBN} asks the user's intent. 16676 16677The debugger will start in Ada mode if it detects an Ada main program. 16678As for other languages, it will enter Ada mode when stopped in a program that 16679was translated from an Ada source file. 16680 16681While in Ada mode, you may use `@t{--}' for comments. This is useful 16682mostly for documenting command files. The standard @value{GDBN} comment 16683(@samp{#}) still works at the beginning of a line in Ada mode, but not in the 16684middle (to allow based literals). 16685 16686@node Omissions from Ada 16687@subsubsection Omissions from Ada 16688@cindex Ada, omissions from 16689 16690Here are the notable omissions from the subset: 16691 16692@itemize @bullet 16693@item 16694Only a subset of the attributes are supported: 16695 16696@itemize @minus 16697@item 16698@t{'First}, @t{'Last}, and @t{'Length} 16699 on array objects (not on types and subtypes). 16700 16701@item 16702@t{'Min} and @t{'Max}. 16703 16704@item 16705@t{'Pos} and @t{'Val}. 16706 16707@item 16708@t{'Tag}. 16709 16710@item 16711@t{'Range} on array objects (not subtypes), but only as the right 16712operand of the membership (@code{in}) operator. 16713 16714@item 16715@t{'Access}, @t{'Unchecked_Access}, and 16716@t{'Unrestricted_Access} (a GNAT extension). 16717 16718@item 16719@t{'Address}. 16720@end itemize 16721 16722@item 16723The names in 16724@code{Characters.Latin_1} are not available and 16725concatenation is not implemented. Thus, escape characters in strings are 16726not currently available. 16727 16728@item 16729Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise 16730equality of representations. They will generally work correctly 16731for strings and arrays whose elements have integer or enumeration types. 16732They may not work correctly for arrays whose element 16733types have user-defined equality, for arrays of real values 16734(in particular, IEEE-conformant floating point, because of negative 16735zeroes and NaNs), and for arrays whose elements contain unused bits with 16736indeterminate values. 16737 16738@item 16739The other component-by-component array operations (@code{and}, @code{or}, 16740@code{xor}, @code{not}, and relational tests other than equality) 16741are not implemented. 16742 16743@item 16744@cindex array aggregates (Ada) 16745@cindex record aggregates (Ada) 16746@cindex aggregates (Ada) 16747There is limited support for array and record aggregates. They are 16748permitted only on the right sides of assignments, as in these examples: 16749 16750@smallexample 16751(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6) 16752(@value{GDBP}) set An_Array := (1, others => 0) 16753(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6) 16754(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9)) 16755(@value{GDBP}) set A_Record := (1, "Peter", True); 16756(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True) 16757@end smallexample 16758 16759Changing a 16760discriminant's value by assigning an aggregate has an 16761undefined effect if that discriminant is used within the record. 16762However, you can first modify discriminants by directly assigning to 16763them (which normally would not be allowed in Ada), and then performing an 16764aggregate assignment. For example, given a variable @code{A_Rec} 16765declared to have a type such as: 16766 16767@smallexample 16768type Rec (Len : Small_Integer := 0) is record 16769 Id : Integer; 16770 Vals : IntArray (1 .. Len); 16771end record; 16772@end smallexample 16773 16774you can assign a value with a different size of @code{Vals} with two 16775assignments: 16776 16777@smallexample 16778(@value{GDBP}) set A_Rec.Len := 4 16779(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4)) 16780@end smallexample 16781 16782As this example also illustrates, @value{GDBN} is very loose about the usual 16783rules concerning aggregates. You may leave out some of the 16784components of an array or record aggregate (such as the @code{Len} 16785component in the assignment to @code{A_Rec} above); they will retain their 16786original values upon assignment. You may freely use dynamic values as 16787indices in component associations. You may even use overlapping or 16788redundant component associations, although which component values are 16789assigned in such cases is not defined. 16790 16791@item 16792Calls to dispatching subprograms are not implemented. 16793 16794@item 16795The overloading algorithm is much more limited (i.e., less selective) 16796than that of real Ada. It makes only limited use of the context in 16797which a subexpression appears to resolve its meaning, and it is much 16798looser in its rules for allowing type matches. As a result, some 16799function calls will be ambiguous, and the user will be asked to choose 16800the proper resolution. 16801 16802@item 16803The @code{new} operator is not implemented. 16804 16805@item 16806Entry calls are not implemented. 16807 16808@item 16809Aside from printing, arithmetic operations on the native VAX floating-point 16810formats are not supported. 16811 16812@item 16813It is not possible to slice a packed array. 16814 16815@item 16816The names @code{True} and @code{False}, when not part of a qualified name, 16817are interpreted as if implicitly prefixed by @code{Standard}, regardless of 16818context. 16819Should your program 16820redefine these names in a package or procedure (at best a dubious practice), 16821you will have to use fully qualified names to access their new definitions. 16822@end itemize 16823 16824@node Additions to Ada 16825@subsubsection Additions to Ada 16826@cindex Ada, deviations from 16827 16828As it does for other languages, @value{GDBN} makes certain generic 16829extensions to Ada (@pxref{Expressions}): 16830 16831@itemize @bullet 16832@item 16833If the expression @var{E} is a variable residing in memory (typically 16834a local variable or array element) and @var{N} is a positive integer, 16835then @code{@var{E}@@@var{N}} displays the values of @var{E} and the 16836@var{N}-1 adjacent variables following it in memory as an array. In 16837Ada, this operator is generally not necessary, since its prime use is 16838in displaying parts of an array, and slicing will usually do this in 16839Ada. However, there are occasional uses when debugging programs in 16840which certain debugging information has been optimized away. 16841 16842@item 16843@code{@var{B}::@var{var}} means ``the variable named @var{var} that 16844appears in function or file @var{B}.'' When @var{B} is a file name, 16845you must typically surround it in single quotes. 16846 16847@item 16848The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type 16849@var{type} that appears at address @var{addr}.'' 16850 16851@item 16852A name starting with @samp{$} is a convenience variable 16853(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}). 16854@end itemize 16855 16856In addition, @value{GDBN} provides a few other shortcuts and outright 16857additions specific to Ada: 16858 16859@itemize @bullet 16860@item 16861The assignment statement is allowed as an expression, returning 16862its right-hand operand as its value. Thus, you may enter 16863 16864@smallexample 16865(@value{GDBP}) set x := y + 3 16866(@value{GDBP}) print A(tmp := y + 1) 16867@end smallexample 16868 16869@item 16870The semicolon is allowed as an ``operator,'' returning as its value 16871the value of its right-hand operand. 16872This allows, for example, 16873complex conditional breaks: 16874 16875@smallexample 16876(@value{GDBP}) break f 16877(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100) 16878@end smallexample 16879 16880@item 16881Rather than use catenation and symbolic character names to introduce special 16882characters into strings, one may instead use a special bracket notation, 16883which is also used to print strings. A sequence of characters of the form 16884@samp{["@var{XX}"]} within a string or character literal denotes the 16885(single) character whose numeric encoding is @var{XX} in hexadecimal. The 16886sequence of characters @samp{["""]} also denotes a single quotation mark 16887in strings. For example, 16888@smallexample 16889 "One line.["0a"]Next line.["0a"]" 16890@end smallexample 16891@noindent 16892contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF}) 16893after each period. 16894 16895@item 16896The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and 16897@t{'Max} is optional (and is ignored in any case). For example, it is valid 16898to write 16899 16900@smallexample 16901(@value{GDBP}) print 'max(x, y) 16902@end smallexample 16903 16904@item 16905When printing arrays, @value{GDBN} uses positional notation when the 16906array has a lower bound of 1, and uses a modified named notation otherwise. 16907For example, a one-dimensional array of three integers with a lower bound 16908of 3 might print as 16909 16910@smallexample 16911(3 => 10, 17, 1) 16912@end smallexample 16913 16914@noindent 16915That is, in contrast to valid Ada, only the first component has a @code{=>} 16916clause. 16917 16918@item 16919You may abbreviate attributes in expressions with any unique, 16920multi-character subsequence of 16921their names (an exact match gets preference). 16922For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh} 16923in place of @t{a'length}. 16924 16925@item 16926@cindex quoting Ada internal identifiers 16927Since Ada is case-insensitive, the debugger normally maps identifiers you type 16928to lower case. The GNAT compiler uses upper-case characters for 16929some of its internal identifiers, which are normally of no interest to users. 16930For the rare occasions when you actually have to look at them, 16931enclose them in angle brackets to avoid the lower-case mapping. 16932For example, 16933@smallexample 16934(@value{GDBP}) print <JMPBUF_SAVE>[0] 16935@end smallexample 16936 16937@item 16938Printing an object of class-wide type or dereferencing an 16939access-to-class-wide value will display all the components of the object's 16940specific type (as indicated by its run-time tag). Likewise, component 16941selection on such a value will operate on the specific type of the 16942object. 16943 16944@end itemize 16945 16946@node Overloading support for Ada 16947@subsubsection Overloading support for Ada 16948@cindex overloading, Ada 16949 16950The debugger supports limited overloading. Given a subprogram call in which 16951the function symbol has multiple definitions, it will use the number of 16952actual parameters and some information about their types to attempt to narrow 16953the set of definitions. It also makes very limited use of context, preferring 16954procedures to functions in the context of the @code{call} command, and 16955functions to procedures elsewhere. 16956 16957If, after narrowing, the set of matching definitions still contains more than 16958one definition, @value{GDBN} will display a menu to query which one it should 16959use, for instance: 16960 16961@smallexample 16962(@value{GDBP}) print f(1) 16963Multiple matches for f 16964[0] cancel 16965[1] foo.f (integer) return boolean at foo.adb:23 16966[2] foo.f (foo.new_integer) return boolean at foo.adb:28 16967> 16968@end smallexample 16969 16970In this case, just select one menu entry either to cancel expression evaluation 16971(type @kbd{0} and press @key{RET}) or to continue evaluation with a specific 16972instance (type the corresponding number and press @key{RET}). 16973 16974Here are a couple of commands to customize @value{GDBN}'s behavior in this 16975case: 16976 16977@table @code 16978 16979@kindex set ada print-signatures 16980@item set ada print-signatures 16981Control whether parameter types and return types are displayed in overloads 16982selection menus. It is @code{on} by default. 16983@xref{Overloading support for Ada}. 16984 16985@kindex show ada print-signatures 16986@item show ada print-signatures 16987Show the current setting for displaying parameter types and return types in 16988overloads selection menu. 16989@xref{Overloading support for Ada}. 16990 16991@end table 16992 16993@node Stopping Before Main Program 16994@subsubsection Stopping at the Very Beginning 16995 16996@cindex breakpointing Ada elaboration code 16997It is sometimes necessary to debug the program during elaboration, and 16998before reaching the main procedure. 16999As defined in the Ada Reference 17000Manual, the elaboration code is invoked from a procedure called 17001@code{adainit}. To run your program up to the beginning of 17002elaboration, simply use the following two commands: 17003@code{tbreak adainit} and @code{run}. 17004 17005@node Ada Exceptions 17006@subsubsection Ada Exceptions 17007 17008A command is provided to list all Ada exceptions: 17009 17010@table @code 17011@kindex info exceptions 17012@item info exceptions 17013@itemx info exceptions @var{regexp} 17014The @code{info exceptions} command allows you to list all Ada exceptions 17015defined within the program being debugged, as well as their addresses. 17016With a regular expression, @var{regexp}, as argument, only those exceptions 17017whose names match @var{regexp} are listed. 17018@end table 17019 17020Below is a small example, showing how the command can be used, first 17021without argument, and next with a regular expression passed as an 17022argument. 17023 17024@smallexample 17025(@value{GDBP}) info exceptions 17026All defined Ada exceptions: 17027constraint_error: 0x613da0 17028program_error: 0x613d20 17029storage_error: 0x613ce0 17030tasking_error: 0x613ca0 17031const.aint_global_e: 0x613b00 17032(@value{GDBP}) info exceptions const.aint 17033All Ada exceptions matching regular expression "const.aint": 17034constraint_error: 0x613da0 17035const.aint_global_e: 0x613b00 17036@end smallexample 17037 17038It is also possible to ask @value{GDBN} to stop your program's execution 17039when an exception is raised. For more details, see @ref{Set Catchpoints}. 17040 17041@node Ada Tasks 17042@subsubsection Extensions for Ada Tasks 17043@cindex Ada, tasking 17044 17045Support for Ada tasks is analogous to that for threads (@pxref{Threads}). 17046@value{GDBN} provides the following task-related commands: 17047 17048@table @code 17049@kindex info tasks 17050@item info tasks 17051This command shows a list of current Ada tasks, as in the following example: 17052 17053 17054@smallexample 17055@iftex 17056@leftskip=0.5cm 17057@end iftex 17058(@value{GDBP}) info tasks 17059 ID TID P-ID Pri State Name 17060 1 8088000 0 15 Child Activation Wait main_task 17061 2 80a4000 1 15 Accept Statement b 17062 3 809a800 1 15 Child Activation Wait a 17063* 4 80ae800 3 15 Runnable c 17064 17065@end smallexample 17066 17067@noindent 17068In this listing, the asterisk before the last task indicates it to be the 17069task currently being inspected. 17070 17071@table @asis 17072@item ID 17073Represents @value{GDBN}'s internal task number. 17074 17075@item TID 17076The Ada task ID. 17077 17078@item P-ID 17079The parent's task ID (@value{GDBN}'s internal task number). 17080 17081@item Pri 17082The base priority of the task. 17083 17084@item State 17085Current state of the task. 17086 17087@table @code 17088@item Unactivated 17089The task has been created but has not been activated. It cannot be 17090executing. 17091 17092@item Runnable 17093The task is not blocked for any reason known to Ada. (It may be waiting 17094for a mutex, though.) It is conceptually "executing" in normal mode. 17095 17096@item Terminated 17097The task is terminated, in the sense of ARM 9.3 (5). Any dependents 17098that were waiting on terminate alternatives have been awakened and have 17099terminated themselves. 17100 17101@item Child Activation Wait 17102The task is waiting for created tasks to complete activation. 17103 17104@item Accept Statement 17105The task is waiting on an accept or selective wait statement. 17106 17107@item Waiting on entry call 17108The task is waiting on an entry call. 17109 17110@item Async Select Wait 17111The task is waiting to start the abortable part of an asynchronous 17112select statement. 17113 17114@item Delay Sleep 17115The task is waiting on a select statement with only a delay 17116alternative open. 17117 17118@item Child Termination Wait 17119The task is sleeping having completed a master within itself, and is 17120waiting for the tasks dependent on that master to become terminated or 17121waiting on a terminate Phase. 17122 17123@item Wait Child in Term Alt 17124The task is sleeping waiting for tasks on terminate alternatives to 17125finish terminating. 17126 17127@item Accepting RV with @var{taskno} 17128The task is accepting a rendez-vous with the task @var{taskno}. 17129@end table 17130 17131@item Name 17132Name of the task in the program. 17133 17134@end table 17135 17136@kindex info task @var{taskno} 17137@item info task @var{taskno} 17138This command shows detailled informations on the specified task, as in 17139the following example: 17140@smallexample 17141@iftex 17142@leftskip=0.5cm 17143@end iftex 17144(@value{GDBP}) info tasks 17145 ID TID P-ID Pri State Name 17146 1 8077880 0 15 Child Activation Wait main_task 17147* 2 807c468 1 15 Runnable task_1 17148(@value{GDBP}) info task 2 17149Ada Task: 0x807c468 17150Name: task_1 17151Thread: 0 17152LWP: 0x1fac 17153Parent: 1 (main_task) 17154Base Priority: 15 17155State: Runnable 17156@end smallexample 17157 17158@item task 17159@kindex task@r{ (Ada)} 17160@cindex current Ada task ID 17161This command prints the ID of the current task. 17162 17163@smallexample 17164@iftex 17165@leftskip=0.5cm 17166@end iftex 17167(@value{GDBP}) info tasks 17168 ID TID P-ID Pri State Name 17169 1 8077870 0 15 Child Activation Wait main_task 17170* 2 807c458 1 15 Runnable t 17171(@value{GDBP}) task 17172[Current task is 2] 17173@end smallexample 17174 17175@item task @var{taskno} 17176@cindex Ada task switching 17177This command is like the @code{thread @var{thread-id}} 17178command (@pxref{Threads}). It switches the context of debugging 17179from the current task to the given task. 17180 17181@smallexample 17182@iftex 17183@leftskip=0.5cm 17184@end iftex 17185(@value{GDBP}) info tasks 17186 ID TID P-ID Pri State Name 17187 1 8077870 0 15 Child Activation Wait main_task 17188* 2 807c458 1 15 Runnable t 17189(@value{GDBP}) task 1 17190[Switching to task 1] 17191#0 0x8067726 in pthread_cond_wait () 17192(@value{GDBP}) bt 17193#0 0x8067726 in pthread_cond_wait () 17194#1 0x8056714 in system.os_interface.pthread_cond_wait () 17195#2 0x805cb63 in system.task_primitives.operations.sleep () 17196#3 0x806153e in system.tasking.stages.activate_tasks () 17197#4 0x804aacc in un () at un.adb:5 17198@end smallexample 17199 17200@item break @var{location} task @var{taskno} 17201@itemx break @var{location} task @var{taskno} if @dots{} 17202@cindex breakpoints and tasks, in Ada 17203@cindex task breakpoints, in Ada 17204@kindex break @dots{} task @var{taskno}@r{ (Ada)} 17205These commands are like the @code{break @dots{} thread @dots{}} 17206command (@pxref{Thread Stops}). The 17207@var{location} argument specifies source lines, as described 17208in @ref{Specify Location}. 17209 17210Use the qualifier @samp{task @var{taskno}} with a breakpoint command 17211to specify that you only want @value{GDBN} to stop the program when a 17212particular Ada task reaches this breakpoint. The @var{taskno} is one of the 17213numeric task identifiers assigned by @value{GDBN}, shown in the first 17214column of the @samp{info tasks} display. 17215 17216If you do not specify @samp{task @var{taskno}} when you set a 17217breakpoint, the breakpoint applies to @emph{all} tasks of your 17218program. 17219 17220You can use the @code{task} qualifier on conditional breakpoints as 17221well; in this case, place @samp{task @var{taskno}} before the 17222breakpoint condition (before the @code{if}). 17223 17224For example, 17225 17226@smallexample 17227@iftex 17228@leftskip=0.5cm 17229@end iftex 17230(@value{GDBP}) info tasks 17231 ID TID P-ID Pri State Name 17232 1 140022020 0 15 Child Activation Wait main_task 17233 2 140045060 1 15 Accept/Select Wait t2 17234 3 140044840 1 15 Runnable t1 17235* 4 140056040 1 15 Runnable t3 17236(@value{GDBP}) b 15 task 2 17237Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15. 17238(@value{GDBP}) cont 17239Continuing. 17240task # 1 running 17241task # 2 running 17242 17243Breakpoint 5, test_task_debug () at test_task_debug.adb:15 1724415 flush; 17245(@value{GDBP}) info tasks 17246 ID TID P-ID Pri State Name 17247 1 140022020 0 15 Child Activation Wait main_task 17248* 2 140045060 1 15 Runnable t2 17249 3 140044840 1 15 Runnable t1 17250 4 140056040 1 15 Delay Sleep t3 17251@end smallexample 17252@end table 17253 17254@node Ada Tasks and Core Files 17255@subsubsection Tasking Support when Debugging Core Files 17256@cindex Ada tasking and core file debugging 17257 17258When inspecting a core file, as opposed to debugging a live program, 17259tasking support may be limited or even unavailable, depending on 17260the platform being used. 17261For instance, on x86-linux, the list of tasks is available, but task 17262switching is not supported. 17263 17264On certain platforms, the debugger needs to perform some 17265memory writes in order to provide Ada tasking support. When inspecting 17266a core file, this means that the core file must be opened with read-write 17267privileges, using the command @samp{"set write on"} (@pxref{Patching}). 17268Under these circumstances, you should make a backup copy of the core 17269file before inspecting it with @value{GDBN}. 17270 17271@node Ravenscar Profile 17272@subsubsection Tasking Support when using the Ravenscar Profile 17273@cindex Ravenscar Profile 17274 17275The @dfn{Ravenscar Profile} is a subset of the Ada tasking features, 17276specifically designed for systems with safety-critical real-time 17277requirements. 17278 17279@table @code 17280@kindex set ravenscar task-switching on 17281@cindex task switching with program using Ravenscar Profile 17282@item set ravenscar task-switching on 17283Allows task switching when debugging a program that uses the Ravenscar 17284Profile. This is the default. 17285 17286@kindex set ravenscar task-switching off 17287@item set ravenscar task-switching off 17288Turn off task switching when debugging a program that uses the Ravenscar 17289Profile. This is mostly intended to disable the code that adds support 17290for the Ravenscar Profile, in case a bug in either @value{GDBN} or in 17291the Ravenscar runtime is preventing @value{GDBN} from working properly. 17292To be effective, this command should be run before the program is started. 17293 17294@kindex show ravenscar task-switching 17295@item show ravenscar task-switching 17296Show whether it is possible to switch from task to task in a program 17297using the Ravenscar Profile. 17298 17299@end table 17300 17301@node Ada Settings 17302@subsubsection Ada Settings 17303@cindex Ada settings 17304 17305@table @code 17306@kindex set varsize-limit 17307@item set varsize-limit @var{size} 17308Prevent @value{GDBN} from attempting to evaluate objects whose size 17309is above the given limit (@var{size}) when those sizes are computed 17310from run-time quantities. This is typically the case when the object 17311has a variable size, such as an array whose bounds are not known at 17312compile time for example. Setting @var{size} to @code{unlimited} 17313removes the size limitation. By default, the limit is about 65KB. 17314 17315The purpose of having such a limit is to prevent @value{GDBN} from 17316trying to grab enormous chunks of virtual memory when asked to evaluate 17317a quantity whose bounds have been corrupted or have not yet been fully 17318initialized. The limit applies to the results of some subexpressions 17319as well as to complete expressions. For example, an expression denoting 17320a simple integer component, such as @code{x.y.z}, may fail if the size of 17321@code{x.y} is variable and exceeds @code{size}. On the other hand, 17322@value{GDBN} is sometimes clever; the expression @code{A(i)}, where 17323@code{A} is an array variable with non-constant size, will generally 17324succeed regardless of the bounds on @code{A}, as long as the component 17325size is less than @var{size}. 17326 17327@kindex show varsize-limit 17328@item show varsize-limit 17329Show the limit on types whose size is determined by run-time quantities. 17330@end table 17331 17332@node Ada Glitches 17333@subsubsection Known Peculiarities of Ada Mode 17334@cindex Ada, problems 17335 17336Besides the omissions listed previously (@pxref{Omissions from Ada}), 17337we know of several problems with and limitations of Ada mode in 17338@value{GDBN}, 17339some of which will be fixed with planned future releases of the debugger 17340and the GNU Ada compiler. 17341 17342@itemize @bullet 17343@item 17344Static constants that the compiler chooses not to materialize as objects in 17345storage are invisible to the debugger. 17346 17347@item 17348Named parameter associations in function argument lists are ignored (the 17349argument lists are treated as positional). 17350 17351@item 17352Many useful library packages are currently invisible to the debugger. 17353 17354@item 17355Fixed-point arithmetic, conversions, input, and output is carried out using 17356floating-point arithmetic, and may give results that only approximate those on 17357the host machine. 17358 17359@item 17360The GNAT compiler never generates the prefix @code{Standard} for any of 17361the standard symbols defined by the Ada language. @value{GDBN} knows about 17362this: it will strip the prefix from names when you use it, and will never 17363look for a name you have so qualified among local symbols, nor match against 17364symbols in other packages or subprograms. If you have 17365defined entities anywhere in your program other than parameters and 17366local variables whose simple names match names in @code{Standard}, 17367GNAT's lack of qualification here can cause confusion. When this happens, 17368you can usually resolve the confusion 17369by qualifying the problematic names with package 17370@code{Standard} explicitly. 17371@end itemize 17372 17373Older versions of the compiler sometimes generate erroneous debugging 17374information, resulting in the debugger incorrectly printing the value 17375of affected entities. In some cases, the debugger is able to work 17376around an issue automatically. In other cases, the debugger is able 17377to work around the issue, but the work-around has to be specifically 17378enabled. 17379 17380@kindex set ada trust-PAD-over-XVS 17381@kindex show ada trust-PAD-over-XVS 17382@table @code 17383 17384@item set ada trust-PAD-over-XVS on 17385Configure GDB to strictly follow the GNAT encoding when computing the 17386value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS} 17387types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for 17388a complete description of the encoding used by the GNAT compiler). 17389This is the default. 17390 17391@item set ada trust-PAD-over-XVS off 17392This is related to the encoding using by the GNAT compiler. If @value{GDBN} 17393sometimes prints the wrong value for certain entities, changing @code{ada 17394trust-PAD-over-XVS} to @code{off} activates a work-around which may fix 17395the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to 17396@code{off}, but this incurs a slight performance penalty, so it is 17397recommended to leave this setting to @code{on} unless necessary. 17398 17399@end table 17400 17401@cindex GNAT descriptive types 17402@cindex GNAT encoding 17403Internally, the debugger also relies on the compiler following a number 17404of conventions known as the @samp{GNAT Encoding}, all documented in 17405@file{gcc/ada/exp_dbug.ads} in the GCC sources. This encoding describes 17406how the debugging information should be generated for certain types. 17407In particular, this convention makes use of @dfn{descriptive types}, 17408which are artificial types generated purely to help the debugger. 17409 17410These encodings were defined at a time when the debugging information 17411format used was not powerful enough to describe some of the more complex 17412types available in Ada. Since DWARF allows us to express nearly all 17413Ada features, the long-term goal is to slowly replace these descriptive 17414types by their pure DWARF equivalent. To facilitate that transition, 17415a new maintenance option is available to force the debugger to ignore 17416those descriptive types. It allows the user to quickly evaluate how 17417well @value{GDBN} works without them. 17418 17419@table @code 17420 17421@kindex maint ada set ignore-descriptive-types 17422@item maintenance ada set ignore-descriptive-types [on|off] 17423Control whether the debugger should ignore descriptive types. 17424The default is not to ignore descriptives types (@code{off}). 17425 17426@kindex maint ada show ignore-descriptive-types 17427@item maintenance ada show ignore-descriptive-types 17428Show if descriptive types are ignored by @value{GDBN}. 17429 17430@end table 17431 17432@node Unsupported Languages 17433@section Unsupported Languages 17434 17435@cindex unsupported languages 17436@cindex minimal language 17437In addition to the other fully-supported programming languages, 17438@value{GDBN} also provides a pseudo-language, called @code{minimal}. 17439It does not represent a real programming language, but provides a set 17440of capabilities close to what the C or assembly languages provide. 17441This should allow most simple operations to be performed while debugging 17442an application that uses a language currently not supported by @value{GDBN}. 17443 17444If the language is set to @code{auto}, @value{GDBN} will automatically 17445select this language if the current frame corresponds to an unsupported 17446language. 17447 17448@node Symbols 17449@chapter Examining the Symbol Table 17450 17451The commands described in this chapter allow you to inquire about the 17452symbols (names of variables, functions and types) defined in your 17453program. This information is inherent in the text of your program and 17454does not change as your program executes. @value{GDBN} finds it in your 17455program's symbol table, in the file indicated when you started @value{GDBN} 17456(@pxref{File Options, ,Choosing Files}), or by one of the 17457file-management commands (@pxref{Files, ,Commands to Specify Files}). 17458 17459@cindex symbol names 17460@cindex names of symbols 17461@cindex quoting names 17462@anchor{quoting names} 17463Occasionally, you may need to refer to symbols that contain unusual 17464characters, which @value{GDBN} ordinarily treats as word delimiters. The 17465most frequent case is in referring to static variables in other 17466source files (@pxref{Variables,,Program Variables}). File names 17467are recorded in object files as debugging symbols, but @value{GDBN} would 17468ordinarily parse a typical file name, like @file{foo.c}, as the three words 17469@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize 17470@samp{foo.c} as a single symbol, enclose it in single quotes; for example, 17471 17472@smallexample 17473p 'foo.c'::x 17474@end smallexample 17475 17476@noindent 17477looks up the value of @code{x} in the scope of the file @file{foo.c}. 17478 17479@table @code 17480@cindex case-insensitive symbol names 17481@cindex case sensitivity in symbol names 17482@kindex set case-sensitive 17483@item set case-sensitive on 17484@itemx set case-sensitive off 17485@itemx set case-sensitive auto 17486Normally, when @value{GDBN} looks up symbols, it matches their names 17487with case sensitivity determined by the current source language. 17488Occasionally, you may wish to control that. The command @code{set 17489case-sensitive} lets you do that by specifying @code{on} for 17490case-sensitive matches or @code{off} for case-insensitive ones. If 17491you specify @code{auto}, case sensitivity is reset to the default 17492suitable for the source language. The default is case-sensitive 17493matches for all languages except for Fortran, for which the default is 17494case-insensitive matches. 17495 17496@kindex show case-sensitive 17497@item show case-sensitive 17498This command shows the current setting of case sensitivity for symbols 17499lookups. 17500 17501@kindex set print type methods 17502@item set print type methods 17503@itemx set print type methods on 17504@itemx set print type methods off 17505Normally, when @value{GDBN} prints a class, it displays any methods 17506declared in that class. You can control this behavior either by 17507passing the appropriate flag to @code{ptype}, or using @command{set 17508print type methods}. Specifying @code{on} will cause @value{GDBN} to 17509display the methods; this is the default. Specifying @code{off} will 17510cause @value{GDBN} to omit the methods. 17511 17512@kindex show print type methods 17513@item show print type methods 17514This command shows the current setting of method display when printing 17515classes. 17516 17517@kindex set print type nested-type-limit 17518@item set print type nested-type-limit @var{limit} 17519@itemx set print type nested-type-limit unlimited 17520Set the limit of displayed nested types that the type printer will 17521show. A @var{limit} of @code{unlimited} or @code{-1} will show all 17522nested definitions. By default, the type printer will not show any nested 17523types defined in classes. 17524 17525@kindex show print type nested-type-limit 17526@item show print type nested-type-limit 17527This command shows the current display limit of nested types when 17528printing classes. 17529 17530@kindex set print type typedefs 17531@item set print type typedefs 17532@itemx set print type typedefs on 17533@itemx set print type typedefs off 17534 17535Normally, when @value{GDBN} prints a class, it displays any typedefs 17536defined in that class. You can control this behavior either by 17537passing the appropriate flag to @code{ptype}, or using @command{set 17538print type typedefs}. Specifying @code{on} will cause @value{GDBN} to 17539display the typedef definitions; this is the default. Specifying 17540@code{off} will cause @value{GDBN} to omit the typedef definitions. 17541Note that this controls whether the typedef definition itself is 17542printed, not whether typedef names are substituted when printing other 17543types. 17544 17545@kindex show print type typedefs 17546@item show print type typedefs 17547This command shows the current setting of typedef display when 17548printing classes. 17549 17550@kindex info address 17551@cindex address of a symbol 17552@item info address @var{symbol} 17553Describe where the data for @var{symbol} is stored. For a register 17554variable, this says which register it is kept in. For a non-register 17555local variable, this prints the stack-frame offset at which the variable 17556is always stored. 17557 17558Note the contrast with @samp{print &@var{symbol}}, which does not work 17559at all for a register variable, and for a stack local variable prints 17560the exact address of the current instantiation of the variable. 17561 17562@kindex info symbol 17563@cindex symbol from address 17564@cindex closest symbol and offset for an address 17565@item info symbol @var{addr} 17566Print the name of a symbol which is stored at the address @var{addr}. 17567If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the 17568nearest symbol and an offset from it: 17569 17570@smallexample 17571(@value{GDBP}) info symbol 0x54320 17572_initialize_vx + 396 in section .text 17573@end smallexample 17574 17575@noindent 17576This is the opposite of the @code{info address} command. You can use 17577it to find out the name of a variable or a function given its address. 17578 17579For dynamically linked executables, the name of executable or shared 17580library containing the symbol is also printed: 17581 17582@smallexample 17583(@value{GDBP}) info symbol 0x400225 17584_start + 5 in section .text of /tmp/a.out 17585(@value{GDBP}) info symbol 0x2aaaac2811cf 17586__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6 17587@end smallexample 17588 17589@kindex demangle 17590@cindex demangle 17591@item demangle @r{[}-l @var{language}@r{]} @r{[}@var{--}@r{]} @var{name} 17592Demangle @var{name}. 17593If @var{language} is provided it is the name of the language to demangle 17594@var{name} in. Otherwise @var{name} is demangled in the current language. 17595 17596The @samp{--} option specifies the end of options, 17597and is useful when @var{name} begins with a dash. 17598 17599The parameter @code{demangle-style} specifies how to interpret the kind 17600of mangling used. @xref{Print Settings}. 17601 17602@kindex whatis 17603@item whatis[/@var{flags}] [@var{arg}] 17604Print the data type of @var{arg}, which can be either an expression 17605or a name of a data type. With no argument, print the data type of 17606@code{$}, the last value in the value history. 17607 17608If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it 17609is not actually evaluated, and any side-effecting operations (such as 17610assignments or function calls) inside it do not take place. 17611 17612If @var{arg} is a variable or an expression, @code{whatis} prints its 17613literal type as it is used in the source code. If the type was 17614defined using a @code{typedef}, @code{whatis} will @emph{not} print 17615the data type underlying the @code{typedef}. If the type of the 17616variable or the expression is a compound data type, such as 17617@code{struct} or @code{class}, @code{whatis} never prints their 17618fields or methods. It just prints the @code{struct}/@code{class} 17619name (a.k.a.@: its @dfn{tag}). If you want to see the members of 17620such a compound data type, use @code{ptype}. 17621 17622If @var{arg} is a type name that was defined using @code{typedef}, 17623@code{whatis} @dfn{unrolls} only one level of that @code{typedef}. 17624Unrolling means that @code{whatis} will show the underlying type used 17625in the @code{typedef} declaration of @var{arg}. However, if that 17626underlying type is also a @code{typedef}, @code{whatis} will not 17627unroll it. 17628 17629For C code, the type names may also have the form @samp{class 17630@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union 17631@var{union-tag}} or @samp{enum @var{enum-tag}}. 17632 17633@var{flags} can be used to modify how the type is displayed. 17634Available flags are: 17635 17636@table @code 17637@item r 17638Display in ``raw'' form. Normally, @value{GDBN} substitutes template 17639parameters and typedefs defined in a class when printing the class' 17640members. The @code{/r} flag disables this. 17641 17642@item m 17643Do not print methods defined in the class. 17644 17645@item M 17646Print methods defined in the class. This is the default, but the flag 17647exists in case you change the default with @command{set print type methods}. 17648 17649@item t 17650Do not print typedefs defined in the class. Note that this controls 17651whether the typedef definition itself is printed, not whether typedef 17652names are substituted when printing other types. 17653 17654@item T 17655Print typedefs defined in the class. This is the default, but the flag 17656exists in case you change the default with @command{set print type typedefs}. 17657 17658@item o 17659Print the offsets and sizes of fields in a struct, similar to what the 17660@command{pahole} tool does. This option implies the @code{/tm} flags. 17661 17662For example, given the following declarations: 17663 17664@smallexample 17665struct tuv 17666@{ 17667 int a1; 17668 char *a2; 17669 int a3; 17670@}; 17671 17672struct xyz 17673@{ 17674 int f1; 17675 char f2; 17676 void *f3; 17677 struct tuv f4; 17678@}; 17679 17680union qwe 17681@{ 17682 struct tuv fff1; 17683 struct xyz fff2; 17684@}; 17685 17686struct tyu 17687@{ 17688 int a1 : 1; 17689 int a2 : 3; 17690 int a3 : 23; 17691 char a4 : 2; 17692 int64_t a5; 17693 int a6 : 5; 17694 int64_t a7 : 3; 17695@}; 17696@end smallexample 17697 17698Issuing a @kbd{ptype /o struct tuv} command would print: 17699 17700@smallexample 17701(@value{GDBP}) ptype /o struct tuv 17702/* offset | size */ type = struct tuv @{ 17703/* 0 | 4 */ int a1; 17704/* XXX 4-byte hole */ 17705/* 8 | 8 */ char *a2; 17706/* 16 | 4 */ int a3; 17707 17708 /* total size (bytes): 24 */ 17709 @} 17710@end smallexample 17711 17712Notice the format of the first column of comments. There, you can 17713find two parts separated by the @samp{|} character: the @emph{offset}, 17714which indicates where the field is located inside the struct, in 17715bytes, and the @emph{size} of the field. Another interesting line is 17716the marker of a @emph{hole} in the struct, indicating that it may be 17717possible to pack the struct and make it use less space by reorganizing 17718its fields. 17719 17720It is also possible to print offsets inside an union: 17721 17722@smallexample 17723(@value{GDBP}) ptype /o union qwe 17724/* offset | size */ type = union qwe @{ 17725/* 24 */ struct tuv @{ 17726/* 0 | 4 */ int a1; 17727/* XXX 4-byte hole */ 17728/* 8 | 8 */ char *a2; 17729/* 16 | 4 */ int a3; 17730 17731 /* total size (bytes): 24 */ 17732 @} fff1; 17733/* 40 */ struct xyz @{ 17734/* 0 | 4 */ int f1; 17735/* 4 | 1 */ char f2; 17736/* XXX 3-byte hole */ 17737/* 8 | 8 */ void *f3; 17738/* 16 | 24 */ struct tuv @{ 17739/* 16 | 4 */ int a1; 17740/* XXX 4-byte hole */ 17741/* 24 | 8 */ char *a2; 17742/* 32 | 4 */ int a3; 17743 17744 /* total size (bytes): 24 */ 17745 @} f4; 17746 17747 /* total size (bytes): 40 */ 17748 @} fff2; 17749 17750 /* total size (bytes): 40 */ 17751 @} 17752@end smallexample 17753 17754In this case, since @code{struct tuv} and @code{struct xyz} occupy the 17755same space (because we are dealing with an union), the offset is not 17756printed for them. However, you can still examine the offset of each 17757of these structures' fields. 17758 17759Another useful scenario is printing the offsets of a struct containing 17760bitfields: 17761 17762@smallexample 17763(@value{GDBP}) ptype /o struct tyu 17764/* offset | size */ type = struct tyu @{ 17765/* 0:31 | 4 */ int a1 : 1; 17766/* 0:28 | 4 */ int a2 : 3; 17767/* 0: 5 | 4 */ int a3 : 23; 17768/* 3: 3 | 1 */ signed char a4 : 2; 17769/* XXX 3-bit hole */ 17770/* XXX 4-byte hole */ 17771/* 8 | 8 */ int64_t a5; 17772/* 16:27 | 4 */ int a6 : 5; 17773/* 16:56 | 8 */ int64_t a7 : 3; 17774 17775 /* total size (bytes): 24 */ 17776 @} 17777@end smallexample 17778 17779Note how the offset information is now extended to also include how 17780many bits are left to be used in each bitfield. 17781@end table 17782 17783@kindex ptype 17784@item ptype[/@var{flags}] [@var{arg}] 17785@code{ptype} accepts the same arguments as @code{whatis}, but prints a 17786detailed description of the type, instead of just the name of the type. 17787@xref{Expressions, ,Expressions}. 17788 17789Contrary to @code{whatis}, @code{ptype} always unrolls any 17790@code{typedef}s in its argument declaration, whether the argument is 17791a variable, expression, or a data type. This means that @code{ptype} 17792of a variable or an expression will not print literally its type as 17793present in the source code---use @code{whatis} for that. @code{typedef}s at 17794the pointer or reference targets are also unrolled. Only @code{typedef}s of 17795fields, methods and inner @code{class typedef}s of @code{struct}s, 17796@code{class}es and @code{union}s are not unrolled even with @code{ptype}. 17797 17798For example, for this variable declaration: 17799 17800@smallexample 17801typedef double real_t; 17802struct complex @{ real_t real; double imag; @}; 17803typedef struct complex complex_t; 17804complex_t var; 17805real_t *real_pointer_var; 17806@end smallexample 17807 17808@noindent 17809the two commands give this output: 17810 17811@smallexample 17812@group 17813(@value{GDBP}) whatis var 17814type = complex_t 17815(@value{GDBP}) ptype var 17816type = struct complex @{ 17817 real_t real; 17818 double imag; 17819@} 17820(@value{GDBP}) whatis complex_t 17821type = struct complex 17822(@value{GDBP}) whatis struct complex 17823type = struct complex 17824(@value{GDBP}) ptype struct complex 17825type = struct complex @{ 17826 real_t real; 17827 double imag; 17828@} 17829(@value{GDBP}) whatis real_pointer_var 17830type = real_t * 17831(@value{GDBP}) ptype real_pointer_var 17832type = double * 17833@end group 17834@end smallexample 17835 17836@noindent 17837As with @code{whatis}, using @code{ptype} without an argument refers to 17838the type of @code{$}, the last value in the value history. 17839 17840@cindex incomplete type 17841Sometimes, programs use opaque data types or incomplete specifications 17842of complex data structure. If the debug information included in the 17843program does not allow @value{GDBN} to display a full declaration of 17844the data type, it will say @samp{<incomplete type>}. For example, 17845given these declarations: 17846 17847@smallexample 17848 struct foo; 17849 struct foo *fooptr; 17850@end smallexample 17851 17852@noindent 17853but no definition for @code{struct foo} itself, @value{GDBN} will say: 17854 17855@smallexample 17856 (@value{GDBP}) ptype foo 17857 $1 = <incomplete type> 17858@end smallexample 17859 17860@noindent 17861``Incomplete type'' is C terminology for data types that are not 17862completely specified. 17863 17864@cindex unknown type 17865Othertimes, information about a variable's type is completely absent 17866from the debug information included in the program. This most often 17867happens when the program or library where the variable is defined 17868includes no debug information at all. @value{GDBN} knows the variable 17869exists from inspecting the linker/loader symbol table (e.g., the ELF 17870dynamic symbol table), but such symbols do not contain type 17871information. Inspecting the type of a (global) variable for which 17872@value{GDBN} has no type information shows: 17873 17874@smallexample 17875 (@value{GDBP}) ptype var 17876 type = <data variable, no debug info> 17877@end smallexample 17878 17879@xref{Variables, no debug info variables}, for how to print the values 17880of such variables. 17881 17882@kindex info types 17883@item info types @var{regexp} 17884@itemx info types 17885Print a brief description of all types whose names match the regular 17886expression @var{regexp} (or all types in your program, if you supply 17887no argument). Each complete typename is matched as though it were a 17888complete line; thus, @samp{i type value} gives information on all 17889types in your program whose names include the string @code{value}, but 17890@samp{i type ^value$} gives information only on types whose complete 17891name is @code{value}. 17892 17893In programs using different languages, @value{GDBN} chooses the syntax 17894to print the type description according to the 17895@samp{set language} value: using @samp{set language auto} 17896(see @ref{Automatically, ,Set Language Automatically}) means to use the 17897language of the type, other values mean to use 17898the manually specified language (see @ref{Manually, ,Set Language Manually}). 17899 17900This command differs from @code{ptype} in two ways: first, like 17901@code{whatis}, it does not print a detailed description; second, it 17902lists all source files and line numbers where a type is defined. 17903 17904@kindex info type-printers 17905@item info type-printers 17906Versions of @value{GDBN} that ship with Python scripting enabled may 17907have ``type printers'' available. When using @command{ptype} or 17908@command{whatis}, these printers are consulted when the name of a type 17909is needed. @xref{Type Printing API}, for more information on writing 17910type printers. 17911 17912@code{info type-printers} displays all the available type printers. 17913 17914@kindex enable type-printer 17915@kindex disable type-printer 17916@item enable type-printer @var{name}@dots{} 17917@item disable type-printer @var{name}@dots{} 17918These commands can be used to enable or disable type printers. 17919 17920@kindex info scope 17921@cindex local variables 17922@item info scope @var{location} 17923List all the variables local to a particular scope. This command 17924accepts a @var{location} argument---a function name, a source line, or 17925an address preceded by a @samp{*}, and prints all the variables local 17926to the scope defined by that location. (@xref{Specify Location}, for 17927details about supported forms of @var{location}.) For example: 17928 17929@smallexample 17930(@value{GDBP}) @b{info scope command_line_handler} 17931Scope for command_line_handler: 17932Symbol rl is an argument at stack/frame offset 8, length 4. 17933Symbol linebuffer is in static storage at address 0x150a18, length 4. 17934Symbol linelength is in static storage at address 0x150a1c, length 4. 17935Symbol p is a local variable in register $esi, length 4. 17936Symbol p1 is a local variable in register $ebx, length 4. 17937Symbol nline is a local variable in register $edx, length 4. 17938Symbol repeat is a local variable at frame offset -8, length 4. 17939@end smallexample 17940 17941@noindent 17942This command is especially useful for determining what data to collect 17943during a @dfn{trace experiment}, see @ref{Tracepoint Actions, 17944collect}. 17945 17946@kindex info source 17947@item info source 17948Show information about the current source file---that is, the source file for 17949the function containing the current point of execution: 17950@itemize @bullet 17951@item 17952the name of the source file, and the directory containing it, 17953@item 17954the directory it was compiled in, 17955@item 17956its length, in lines, 17957@item 17958which programming language it is written in, 17959@item 17960if the debug information provides it, the program that compiled the file 17961(which may include, e.g., the compiler version and command line arguments), 17962@item 17963whether the executable includes debugging information for that file, and 17964if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and 17965@item 17966whether the debugging information includes information about 17967preprocessor macros. 17968@end itemize 17969 17970 17971@kindex info sources 17972@item info sources 17973Print the names of all source files in your program for which there is 17974debugging information, organized into two lists: files whose symbols 17975have already been read, and files whose symbols will be read when needed. 17976 17977@kindex info functions 17978@item info functions [-q] 17979Print the names and data types of all defined functions. 17980Similarly to @samp{info types}, this command groups its output by source 17981files and annotates each function definition with its source line 17982number. 17983 17984In programs using different languages, @value{GDBN} chooses the syntax 17985to print the function name and type according to the 17986@samp{set language} value: using @samp{set language auto} 17987(see @ref{Automatically, ,Set Language Automatically}) means to use the 17988language of the function, other values mean to use 17989the manually specified language (see @ref{Manually, ,Set Language Manually}). 17990 17991The optional flag @samp{-q}, which stands for @samp{quiet}, disables 17992printing header information and messages explaining why no functions 17993have been printed. 17994 17995@item info functions [-q] [-t @var{type_regexp}] [@var{regexp}] 17996Like @samp{info functions}, but only print the names and data types 17997of the functions selected with the provided regexp(s). 17998 17999If @var{regexp} is provided, print only the functions whose names 18000match the regular expression @var{regexp}. 18001Thus, @samp{info fun step} finds all functions whose 18002names include @code{step}; @samp{info fun ^step} finds those whose names 18003start with @code{step}. If a function name contains characters that 18004conflict with the regular expression language (e.g.@: 18005@samp{operator*()}), they may be quoted with a backslash. 18006 18007If @var{type_regexp} is provided, print only the functions whose 18008types, as printed by the @code{whatis} command, match 18009the regular expression @var{type_regexp}. 18010If @var{type_regexp} contains space(s), it should be enclosed in 18011quote characters. If needed, use backslash to escape the meaning 18012of special characters or quotes. 18013Thus, @samp{info fun -t '^int ('} finds the functions that return 18014an integer; @samp{info fun -t '(.*int.*'} finds the functions that 18015have an argument type containing int; @samp{info fun -t '^int (' ^step} 18016finds the functions whose names start with @code{step} and that return 18017int. 18018 18019If both @var{regexp} and @var{type_regexp} are provided, a function 18020is printed only if its name matches @var{regexp} and its type matches 18021@var{type_regexp}. 18022 18023 18024@kindex info variables 18025@item info variables [-q] 18026Print the names and data types of all variables that are defined 18027outside of functions (i.e.@: excluding local variables). 18028The printed variables are grouped by source files and annotated with 18029their respective source line numbers. 18030 18031In programs using different languages, @value{GDBN} chooses the syntax 18032to print the variable name and type according to the 18033@samp{set language} value: using @samp{set language auto} 18034(see @ref{Automatically, ,Set Language Automatically}) means to use the 18035language of the variable, other values mean to use 18036the manually specified language (see @ref{Manually, ,Set Language Manually}). 18037 18038The optional flag @samp{-q}, which stands for @samp{quiet}, disables 18039printing header information and messages explaining why no variables 18040have been printed. 18041 18042@item info variables [-q] [-t @var{type_regexp}] [@var{regexp}] 18043Like @kbd{info variables}, but only print the variables selected 18044with the provided regexp(s). 18045 18046If @var{regexp} is provided, print only the variables whose names 18047match the regular expression @var{regexp}. 18048 18049If @var{type_regexp} is provided, print only the variables whose 18050types, as printed by the @code{whatis} command, match 18051the regular expression @var{type_regexp}. 18052If @var{type_regexp} contains space(s), it should be enclosed in 18053quote characters. If needed, use backslash to escape the meaning 18054of special characters or quotes. 18055 18056If both @var{regexp} and @var{type_regexp} are provided, an argument 18057is printed only if its name matches @var{regexp} and its type matches 18058@var{type_regexp}. 18059 18060@kindex info classes 18061@cindex Objective-C, classes and selectors 18062@item info classes 18063@itemx info classes @var{regexp} 18064Display all Objective-C classes in your program, or 18065(with the @var{regexp} argument) all those matching a particular regular 18066expression. 18067 18068@kindex info selectors 18069@item info selectors 18070@itemx info selectors @var{regexp} 18071Display all Objective-C selectors in your program, or 18072(with the @var{regexp} argument) all those matching a particular regular 18073expression. 18074 18075@ignore 18076This was never implemented. 18077@kindex info methods 18078@item info methods 18079@itemx info methods @var{regexp} 18080The @code{info methods} command permits the user to examine all defined 18081methods within C@t{++} program, or (with the @var{regexp} argument) a 18082specific set of methods found in the various C@t{++} classes. Many 18083C@t{++} classes provide a large number of methods. Thus, the output 18084from the @code{ptype} command can be overwhelming and hard to use. The 18085@code{info-methods} command filters the methods, printing only those 18086which match the regular-expression @var{regexp}. 18087@end ignore 18088 18089@cindex opaque data types 18090@kindex set opaque-type-resolution 18091@item set opaque-type-resolution on 18092Tell @value{GDBN} to resolve opaque types. An opaque type is a type 18093declared as a pointer to a @code{struct}, @code{class}, or 18094@code{union}---for example, @code{struct MyType *}---that is used in one 18095source file although the full declaration of @code{struct MyType} is in 18096another source file. The default is on. 18097 18098A change in the setting of this subcommand will not take effect until 18099the next time symbols for a file are loaded. 18100 18101@item set opaque-type-resolution off 18102Tell @value{GDBN} not to resolve opaque types. In this case, the type 18103is printed as follows: 18104@smallexample 18105@{<no data fields>@} 18106@end smallexample 18107 18108@kindex show opaque-type-resolution 18109@item show opaque-type-resolution 18110Show whether opaque types are resolved or not. 18111 18112@kindex set print symbol-loading 18113@cindex print messages when symbols are loaded 18114@item set print symbol-loading 18115@itemx set print symbol-loading full 18116@itemx set print symbol-loading brief 18117@itemx set print symbol-loading off 18118The @code{set print symbol-loading} command allows you to control the 18119printing of messages when @value{GDBN} loads symbol information. 18120By default a message is printed for the executable and one for each 18121shared library, and normally this is what you want. However, when 18122debugging apps with large numbers of shared libraries these messages 18123can be annoying. 18124When set to @code{brief} a message is printed for each executable, 18125and when @value{GDBN} loads a collection of shared libraries at once 18126it will only print one message regardless of the number of shared 18127libraries. When set to @code{off} no messages are printed. 18128 18129@kindex show print symbol-loading 18130@item show print symbol-loading 18131Show whether messages will be printed when a @value{GDBN} command 18132entered from the keyboard causes symbol information to be loaded. 18133 18134@kindex maint print symbols 18135@cindex symbol dump 18136@kindex maint print psymbols 18137@cindex partial symbol dump 18138@kindex maint print msymbols 18139@cindex minimal symbol dump 18140@item maint print symbols @r{[}-pc @var{address}@r{]} @r{[}@var{filename}@r{]} 18141@itemx maint print symbols @r{[}-objfile @var{objfile}@r{]} @r{[}-source @var{source}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 18142@itemx maint print psymbols @r{[}-objfile @var{objfile}@r{]} @r{[}-pc @var{address}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 18143@itemx maint print psymbols @r{[}-objfile @var{objfile}@r{]} @r{[}-source @var{source}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 18144@itemx maint print msymbols @r{[}-objfile @var{objfile}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 18145Write a dump of debugging symbol data into the file @var{filename} or 18146the terminal if @var{filename} is unspecified. 18147If @code{-objfile @var{objfile}} is specified, only dump symbols for 18148that objfile. 18149If @code{-pc @var{address}} is specified, only dump symbols for the file 18150with code at that address. Note that @var{address} may be a symbol like 18151@code{main}. 18152If @code{-source @var{source}} is specified, only dump symbols for that 18153source file. 18154 18155These commands are used to debug the @value{GDBN} symbol-reading code. 18156These commands do not modify internal @value{GDBN} state, therefore 18157@samp{maint print symbols} will only print symbols for already expanded symbol 18158tables. 18159You can use the command @code{info sources} to find out which files these are. 18160If you use @samp{maint print psymbols} instead, the dump shows information 18161about symbols that @value{GDBN} only knows partially---that is, symbols 18162defined in files that @value{GDBN} has skimmed, but not yet read completely. 18163Finally, @samp{maint print msymbols} just dumps ``minimal symbols'', e.g., 18164``ELF symbols''. 18165 18166@xref{Files, ,Commands to Specify Files}, for a discussion of how 18167@value{GDBN} reads symbols (in the description of @code{symbol-file}). 18168 18169@kindex maint info symtabs 18170@kindex maint info psymtabs 18171@cindex listing @value{GDBN}'s internal symbol tables 18172@cindex symbol tables, listing @value{GDBN}'s internal 18173@cindex full symbol tables, listing @value{GDBN}'s internal 18174@cindex partial symbol tables, listing @value{GDBN}'s internal 18175@item maint info symtabs @r{[} @var{regexp} @r{]} 18176@itemx maint info psymtabs @r{[} @var{regexp} @r{]} 18177 18178List the @code{struct symtab} or @code{struct partial_symtab} 18179structures whose names match @var{regexp}. If @var{regexp} is not 18180given, list them all. The output includes expressions which you can 18181copy into a @value{GDBN} debugging this one to examine a particular 18182structure in more detail. For example: 18183 18184@smallexample 18185(@value{GDBP}) maint info psymtabs dwarf2read 18186@{ objfile /home/gnu/build/gdb/gdb 18187 ((struct objfile *) 0x82e69d0) 18188 @{ psymtab /home/gnu/src/gdb/dwarf2read.c 18189 ((struct partial_symtab *) 0x8474b10) 18190 readin no 18191 fullname (null) 18192 text addresses 0x814d3c8 -- 0x8158074 18193 globals (* (struct partial_symbol **) 0x8507a08 @@ 9) 18194 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882) 18195 dependencies (none) 18196 @} 18197@} 18198(@value{GDBP}) maint info symtabs 18199(@value{GDBP}) 18200@end smallexample 18201@noindent 18202We see that there is one partial symbol table whose filename contains 18203the string @samp{dwarf2read}, belonging to the @samp{gdb} executable; 18204and we see that @value{GDBN} has not read in any symtabs yet at all. 18205If we set a breakpoint on a function, that will cause @value{GDBN} to 18206read the symtab for the compilation unit containing that function: 18207 18208@smallexample 18209(@value{GDBP}) break dwarf2_psymtab_to_symtab 18210Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c, 18211line 1574. 18212(@value{GDBP}) maint info symtabs 18213@{ objfile /home/gnu/build/gdb/gdb 18214 ((struct objfile *) 0x82e69d0) 18215 @{ symtab /home/gnu/src/gdb/dwarf2read.c 18216 ((struct symtab *) 0x86c1f38) 18217 dirname (null) 18218 fullname (null) 18219 blockvector ((struct blockvector *) 0x86c1bd0) (primary) 18220 linetable ((struct linetable *) 0x8370fa0) 18221 debugformat DWARF 2 18222 @} 18223@} 18224(@value{GDBP}) 18225@end smallexample 18226 18227@kindex maint info line-table 18228@cindex listing @value{GDBN}'s internal line tables 18229@cindex line tables, listing @value{GDBN}'s internal 18230@item maint info line-table @r{[} @var{regexp} @r{]} 18231 18232List the @code{struct linetable} from all @code{struct symtab} 18233instances whose name matches @var{regexp}. If @var{regexp} is not 18234given, list the @code{struct linetable} from all @code{struct symtab}. 18235 18236@kindex maint set symbol-cache-size 18237@cindex symbol cache size 18238@item maint set symbol-cache-size @var{size} 18239Set the size of the symbol cache to @var{size}. 18240The default size is intended to be good enough for debugging 18241most applications. This option exists to allow for experimenting 18242with different sizes. 18243 18244@kindex maint show symbol-cache-size 18245@item maint show symbol-cache-size 18246Show the size of the symbol cache. 18247 18248@kindex maint print symbol-cache 18249@cindex symbol cache, printing its contents 18250@item maint print symbol-cache 18251Print the contents of the symbol cache. 18252This is useful when debugging symbol cache issues. 18253 18254@kindex maint print symbol-cache-statistics 18255@cindex symbol cache, printing usage statistics 18256@item maint print symbol-cache-statistics 18257Print symbol cache usage statistics. 18258This helps determine how well the cache is being utilized. 18259 18260@kindex maint flush-symbol-cache 18261@cindex symbol cache, flushing 18262@item maint flush-symbol-cache 18263Flush the contents of the symbol cache, all entries are removed. 18264This command is useful when debugging the symbol cache. 18265It is also useful when collecting performance data. 18266 18267@end table 18268 18269@node Altering 18270@chapter Altering Execution 18271 18272Once you think you have found an error in your program, you might want to 18273find out for certain whether correcting the apparent error would lead to 18274correct results in the rest of the run. You can find the answer by 18275experiment, using the @value{GDBN} features for altering execution of the 18276program. 18277 18278For example, you can store new values into variables or memory 18279locations, give your program a signal, restart it at a different 18280address, or even return prematurely from a function. 18281 18282@menu 18283* Assignment:: Assignment to variables 18284* Jumping:: Continuing at a different address 18285* Signaling:: Giving your program a signal 18286* Returning:: Returning from a function 18287* Calling:: Calling your program's functions 18288* Patching:: Patching your program 18289* Compiling and Injecting Code:: Compiling and injecting code in @value{GDBN} 18290@end menu 18291 18292@node Assignment 18293@section Assignment to Variables 18294 18295@cindex assignment 18296@cindex setting variables 18297To alter the value of a variable, evaluate an assignment expression. 18298@xref{Expressions, ,Expressions}. For example, 18299 18300@smallexample 18301print x=4 18302@end smallexample 18303 18304@noindent 18305stores the value 4 into the variable @code{x}, and then prints the 18306value of the assignment expression (which is 4). 18307@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more 18308information on operators in supported languages. 18309 18310@kindex set variable 18311@cindex variables, setting 18312If you are not interested in seeing the value of the assignment, use the 18313@code{set} command instead of the @code{print} command. @code{set} is 18314really the same as @code{print} except that the expression's value is 18315not printed and is not put in the value history (@pxref{Value History, 18316,Value History}). The expression is evaluated only for its effects. 18317 18318If the beginning of the argument string of the @code{set} command 18319appears identical to a @code{set} subcommand, use the @code{set 18320variable} command instead of just @code{set}. This command is identical 18321to @code{set} except for its lack of subcommands. For example, if your 18322program has a variable @code{width}, you get an error if you try to set 18323a new value with just @samp{set width=13}, because @value{GDBN} has the 18324command @code{set width}: 18325 18326@smallexample 18327(@value{GDBP}) whatis width 18328type = double 18329(@value{GDBP}) p width 18330$4 = 13 18331(@value{GDBP}) set width=47 18332Invalid syntax in expression. 18333@end smallexample 18334 18335@noindent 18336The invalid expression, of course, is @samp{=47}. In 18337order to actually set the program's variable @code{width}, use 18338 18339@smallexample 18340(@value{GDBP}) set var width=47 18341@end smallexample 18342 18343Because the @code{set} command has many subcommands that can conflict 18344with the names of program variables, it is a good idea to use the 18345@code{set variable} command instead of just @code{set}. For example, if 18346your program has a variable @code{g}, you run into problems if you try 18347to set a new value with just @samp{set g=4}, because @value{GDBN} has 18348the command @code{set gnutarget}, abbreviated @code{set g}: 18349 18350@smallexample 18351@group 18352(@value{GDBP}) whatis g 18353type = double 18354(@value{GDBP}) p g 18355$1 = 1 18356(@value{GDBP}) set g=4 18357(@value{GDBP}) p g 18358$2 = 1 18359(@value{GDBP}) r 18360The program being debugged has been started already. 18361Start it from the beginning? (y or n) y 18362Starting program: /home/smith/cc_progs/a.out 18363"/home/smith/cc_progs/a.out": can't open to read symbols: 18364 Invalid bfd target. 18365(@value{GDBP}) show g 18366The current BFD target is "=4". 18367@end group 18368@end smallexample 18369 18370@noindent 18371The program variable @code{g} did not change, and you silently set the 18372@code{gnutarget} to an invalid value. In order to set the variable 18373@code{g}, use 18374 18375@smallexample 18376(@value{GDBP}) set var g=4 18377@end smallexample 18378 18379@value{GDBN} allows more implicit conversions in assignments than C; you can 18380freely store an integer value into a pointer variable or vice versa, 18381and you can convert any structure to any other structure that is the 18382same length or shorter. 18383@comment FIXME: how do structs align/pad in these conversions? 18384@comment /doc@cygnus.com 18dec1990 18385 18386To store values into arbitrary places in memory, use the @samp{@{@dots{}@}} 18387construct to generate a value of specified type at a specified address 18388(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers 18389to memory location @code{0x83040} as an integer (which implies a certain size 18390and representation in memory), and 18391 18392@smallexample 18393set @{int@}0x83040 = 4 18394@end smallexample 18395 18396@noindent 18397stores the value 4 into that memory location. 18398 18399@node Jumping 18400@section Continuing at a Different Address 18401 18402Ordinarily, when you continue your program, you do so at the place where 18403it stopped, with the @code{continue} command. You can instead continue at 18404an address of your own choosing, with the following commands: 18405 18406@table @code 18407@kindex jump 18408@kindex j @r{(@code{jump})} 18409@item jump @var{location} 18410@itemx j @var{location} 18411Resume execution at @var{location}. Execution stops again immediately 18412if there is a breakpoint there. @xref{Specify Location}, for a description 18413of the different forms of @var{location}. It is common 18414practice to use the @code{tbreak} command in conjunction with 18415@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}. 18416 18417The @code{jump} command does not change the current stack frame, or 18418the stack pointer, or the contents of any memory location or any 18419register other than the program counter. If @var{location} is in 18420a different function from the one currently executing, the results may 18421be bizarre if the two functions expect different patterns of arguments or 18422of local variables. For this reason, the @code{jump} command requests 18423confirmation if the specified line is not in the function currently 18424executing. However, even bizarre results are predictable if you are 18425well acquainted with the machine-language code of your program. 18426@end table 18427 18428On many systems, you can get much the same effect as the @code{jump} 18429command by storing a new value into the register @code{$pc}. The 18430difference is that this does not start your program running; it only 18431changes the address of where it @emph{will} run when you continue. For 18432example, 18433 18434@smallexample 18435set $pc = 0x485 18436@end smallexample 18437 18438@noindent 18439makes the next @code{continue} command or stepping command execute at 18440address @code{0x485}, rather than at the address where your program stopped. 18441@xref{Continuing and Stepping, ,Continuing and Stepping}. 18442 18443The most common occasion to use the @code{jump} command is to back 18444up---perhaps with more breakpoints set---over a portion of a program 18445that has already executed, in order to examine its execution in more 18446detail. 18447 18448@c @group 18449@node Signaling 18450@section Giving your Program a Signal 18451@cindex deliver a signal to a program 18452 18453@table @code 18454@kindex signal 18455@item signal @var{signal} 18456Resume execution where your program is stopped, but immediately give it the 18457signal @var{signal}. The @var{signal} can be the name or the number of a 18458signal. For example, on many systems @code{signal 2} and @code{signal 18459SIGINT} are both ways of sending an interrupt signal. 18460 18461Alternatively, if @var{signal} is zero, continue execution without 18462giving a signal. This is useful when your program stopped on account of 18463a signal and would ordinarily see the signal when resumed with the 18464@code{continue} command; @samp{signal 0} causes it to resume without a 18465signal. 18466 18467@emph{Note:} When resuming a multi-threaded program, @var{signal} is 18468delivered to the currently selected thread, not the thread that last 18469reported a stop. This includes the situation where a thread was 18470stopped due to a signal. So if you want to continue execution 18471suppressing the signal that stopped a thread, you should select that 18472same thread before issuing the @samp{signal 0} command. If you issue 18473the @samp{signal 0} command with another thread as the selected one, 18474@value{GDBN} detects that and asks for confirmation. 18475 18476Invoking the @code{signal} command is not the same as invoking the 18477@code{kill} utility from the shell. Sending a signal with @code{kill} 18478causes @value{GDBN} to decide what to do with the signal depending on 18479the signal handling tables (@pxref{Signals}). The @code{signal} command 18480passes the signal directly to your program. 18481 18482@code{signal} does not repeat when you press @key{RET} a second time 18483after executing the command. 18484 18485@kindex queue-signal 18486@item queue-signal @var{signal} 18487Queue @var{signal} to be delivered immediately to the current thread 18488when execution of the thread resumes. The @var{signal} can be the name or 18489the number of a signal. For example, on many systems @code{signal 2} and 18490@code{signal SIGINT} are both ways of sending an interrupt signal. 18491The handling of the signal must be set to pass the signal to the program, 18492otherwise @value{GDBN} will report an error. 18493You can control the handling of signals from @value{GDBN} with the 18494@code{handle} command (@pxref{Signals}). 18495 18496Alternatively, if @var{signal} is zero, any currently queued signal 18497for the current thread is discarded and when execution resumes no signal 18498will be delivered. This is useful when your program stopped on account 18499of a signal and would ordinarily see the signal when resumed with the 18500@code{continue} command. 18501 18502This command differs from the @code{signal} command in that the signal 18503is just queued, execution is not resumed. And @code{queue-signal} cannot 18504be used to pass a signal whose handling state has been set to @code{nopass} 18505(@pxref{Signals}). 18506@end table 18507@c @end group 18508 18509@xref{stepping into signal handlers}, for information on how stepping 18510commands behave when the thread has a signal queued. 18511 18512@node Returning 18513@section Returning from a Function 18514 18515@table @code 18516@cindex returning from a function 18517@kindex return 18518@item return 18519@itemx return @var{expression} 18520You can cancel execution of a function call with the @code{return} 18521command. If you give an 18522@var{expression} argument, its value is used as the function's return 18523value. 18524@end table 18525 18526When you use @code{return}, @value{GDBN} discards the selected stack frame 18527(and all frames within it). You can think of this as making the 18528discarded frame return prematurely. If you wish to specify a value to 18529be returned, give that value as the argument to @code{return}. 18530 18531This pops the selected stack frame (@pxref{Selection, ,Selecting a 18532Frame}), and any other frames inside of it, leaving its caller as the 18533innermost remaining frame. That frame becomes selected. The 18534specified value is stored in the registers used for returning values 18535of functions. 18536 18537The @code{return} command does not resume execution; it leaves the 18538program stopped in the state that would exist if the function had just 18539returned. In contrast, the @code{finish} command (@pxref{Continuing 18540and Stepping, ,Continuing and Stepping}) resumes execution until the 18541selected stack frame returns naturally. 18542 18543@value{GDBN} needs to know how the @var{expression} argument should be set for 18544the inferior. The concrete registers assignment depends on the OS ABI and the 18545type being returned by the selected stack frame. For example it is common for 18546OS ABI to return floating point values in FPU registers while integer values in 18547CPU registers. Still some ABIs return even floating point values in CPU 18548registers. Larger integer widths (such as @code{long long int}) also have 18549specific placement rules. @value{GDBN} already knows the OS ABI from its 18550current target so it needs to find out also the type being returned to make the 18551assignment into the right register(s). 18552 18553Normally, the selected stack frame has debug info. @value{GDBN} will always 18554use the debug info instead of the implicit type of @var{expression} when the 18555debug info is available. For example, if you type @kbd{return -1}, and the 18556function in the current stack frame is declared to return a @code{long long 18557int}, @value{GDBN} transparently converts the implicit @code{int} value of -1 18558into a @code{long long int}: 18559 18560@smallexample 18561Breakpoint 1, func () at gdb.base/return-nodebug.c:29 1856229 return 31; 18563(@value{GDBP}) return -1 18564Make func return now? (y or n) y 18565#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43 1856643 printf ("result=%lld\n", func ()); 18567(@value{GDBP}) 18568@end smallexample 18569 18570However, if the selected stack frame does not have a debug info, e.g., if the 18571function was compiled without debug info, @value{GDBN} has to find out the type 18572to return from user. Specifying a different type by mistake may set the value 18573in different inferior registers than the caller code expects. For example, 18574typing @kbd{return -1} with its implicit type @code{int} would set only a part 18575of a @code{long long int} result for a debug info less function (on 32-bit 18576architectures). Therefore the user is required to specify the return type by 18577an appropriate cast explicitly: 18578 18579@smallexample 18580Breakpoint 2, 0x0040050b in func () 18581(@value{GDBP}) return -1 18582Return value type not available for selected stack frame. 18583Please use an explicit cast of the value to return. 18584(@value{GDBP}) return (long long int) -1 18585Make selected stack frame return now? (y or n) y 18586#0 0x00400526 in main () 18587(@value{GDBP}) 18588@end smallexample 18589 18590@node Calling 18591@section Calling Program Functions 18592 18593@table @code 18594@cindex calling functions 18595@cindex inferior functions, calling 18596@item print @var{expr} 18597Evaluate the expression @var{expr} and display the resulting value. 18598The expression may include calls to functions in the program being 18599debugged. 18600 18601@kindex call 18602@item call @var{expr} 18603Evaluate the expression @var{expr} without displaying @code{void} 18604returned values. 18605 18606You can use this variant of the @code{print} command if you want to 18607execute a function from your program that does not return anything 18608(a.k.a.@: @dfn{a void function}), but without cluttering the output 18609with @code{void} returned values that @value{GDBN} will otherwise 18610print. If the result is not void, it is printed and saved in the 18611value history. 18612@end table 18613 18614It is possible for the function you call via the @code{print} or 18615@code{call} command to generate a signal (e.g., if there's a bug in 18616the function, or if you passed it incorrect arguments). What happens 18617in that case is controlled by the @code{set unwindonsignal} command. 18618 18619Similarly, with a C@t{++} program it is possible for the function you 18620call via the @code{print} or @code{call} command to generate an 18621exception that is not handled due to the constraints of the dummy 18622frame. In this case, any exception that is raised in the frame, but has 18623an out-of-frame exception handler will not be found. GDB builds a 18624dummy-frame for the inferior function call, and the unwinder cannot 18625seek for exception handlers outside of this dummy-frame. What happens 18626in that case is controlled by the 18627@code{set unwind-on-terminating-exception} command. 18628 18629@table @code 18630@item set unwindonsignal 18631@kindex set unwindonsignal 18632@cindex unwind stack in called functions 18633@cindex call dummy stack unwinding 18634Set unwinding of the stack if a signal is received while in a function 18635that @value{GDBN} called in the program being debugged. If set to on, 18636@value{GDBN} unwinds the stack it created for the call and restores 18637the context to what it was before the call. If set to off (the 18638default), @value{GDBN} stops in the frame where the signal was 18639received. 18640 18641@item show unwindonsignal 18642@kindex show unwindonsignal 18643Show the current setting of stack unwinding in the functions called by 18644@value{GDBN}. 18645 18646@item set unwind-on-terminating-exception 18647@kindex set unwind-on-terminating-exception 18648@cindex unwind stack in called functions with unhandled exceptions 18649@cindex call dummy stack unwinding on unhandled exception. 18650Set unwinding of the stack if a C@t{++} exception is raised, but left 18651unhandled while in a function that @value{GDBN} called in the program being 18652debugged. If set to on (the default), @value{GDBN} unwinds the stack 18653it created for the call and restores the context to what it was before 18654the call. If set to off, @value{GDBN} the exception is delivered to 18655the default C@t{++} exception handler and the inferior terminated. 18656 18657@item show unwind-on-terminating-exception 18658@kindex show unwind-on-terminating-exception 18659Show the current setting of stack unwinding in the functions called by 18660@value{GDBN}. 18661 18662@end table 18663 18664@subsection Calling functions with no debug info 18665 18666@cindex no debug info functions 18667Sometimes, a function you wish to call is missing debug information. 18668In such case, @value{GDBN} does not know the type of the function, 18669including the types of the function's parameters. To avoid calling 18670the inferior function incorrectly, which could result in the called 18671function functioning erroneously and even crash, @value{GDBN} refuses 18672to call the function unless you tell it the type of the function. 18673 18674For prototyped (i.e.@: ANSI/ISO style) functions, there are two ways 18675to do that. The simplest is to cast the call to the function's 18676declared return type. For example: 18677 18678@smallexample 18679(@value{GDBP}) p getenv ("PATH") 18680'getenv' has unknown return type; cast the call to its declared return type 18681(@value{GDBP}) p (char *) getenv ("PATH") 18682$1 = 0x7fffffffe7ba "/usr/local/bin:/"... 18683@end smallexample 18684 18685Casting the return type of a no-debug function is equivalent to 18686casting the function to a pointer to a prototyped function that has a 18687prototype that matches the types of the passed-in arguments, and 18688calling that. I.e., the call above is equivalent to: 18689 18690@smallexample 18691(@value{GDBP}) p ((char * (*) (const char *)) getenv) ("PATH") 18692@end smallexample 18693 18694@noindent 18695and given this prototyped C or C++ function with float parameters: 18696 18697@smallexample 18698float multiply (float v1, float v2) @{ return v1 * v2; @} 18699@end smallexample 18700 18701@noindent 18702these calls are equivalent: 18703 18704@smallexample 18705(@value{GDBP}) p (float) multiply (2.0f, 3.0f) 18706(@value{GDBP}) p ((float (*) (float, float)) multiply) (2.0f, 3.0f) 18707@end smallexample 18708 18709If the function you wish to call is declared as unprototyped (i.e.@: 18710old K&R style), you must use the cast-to-function-pointer syntax, so 18711that @value{GDBN} knows that it needs to apply default argument 18712promotions (promote float arguments to double). @xref{ABI, float 18713promotion}. For example, given this unprototyped C function with 18714float parameters, and no debug info: 18715 18716@smallexample 18717float 18718multiply_noproto (v1, v2) 18719 float v1, v2; 18720@{ 18721 return v1 * v2; 18722@} 18723@end smallexample 18724 18725@noindent 18726you call it like this: 18727 18728@smallexample 18729 (@value{GDBP}) p ((float (*) ()) multiply_noproto) (2.0f, 3.0f) 18730@end smallexample 18731 18732@node Patching 18733@section Patching Programs 18734 18735@cindex patching binaries 18736@cindex writing into executables 18737@cindex writing into corefiles 18738 18739By default, @value{GDBN} opens the file containing your program's 18740executable code (or the corefile) read-only. This prevents accidental 18741alterations to machine code; but it also prevents you from intentionally 18742patching your program's binary. 18743 18744If you'd like to be able to patch the binary, you can specify that 18745explicitly with the @code{set write} command. For example, you might 18746want to turn on internal debugging flags, or even to make emergency 18747repairs. 18748 18749@table @code 18750@kindex set write 18751@item set write on 18752@itemx set write off 18753If you specify @samp{set write on}, @value{GDBN} opens executable and 18754core files for both reading and writing; if you specify @kbd{set write 18755off} (the default), @value{GDBN} opens them read-only. 18756 18757If you have already loaded a file, you must load it again (using the 18758@code{exec-file} or @code{core-file} command) after changing @code{set 18759write}, for your new setting to take effect. 18760 18761@item show write 18762@kindex show write 18763Display whether executable files and core files are opened for writing 18764as well as reading. 18765@end table 18766 18767@node Compiling and Injecting Code 18768@section Compiling and injecting code in @value{GDBN} 18769@cindex injecting code 18770@cindex writing into executables 18771@cindex compiling code 18772 18773@value{GDBN} supports on-demand compilation and code injection into 18774programs running under @value{GDBN}. GCC 5.0 or higher built with 18775@file{libcc1.so} must be installed for this functionality to be enabled. 18776This functionality is implemented with the following commands. 18777 18778@table @code 18779@kindex compile code 18780@item compile code @var{source-code} 18781@itemx compile code -raw @var{--} @var{source-code} 18782Compile @var{source-code} with the compiler language found as the current 18783language in @value{GDBN} (@pxref{Languages}). If compilation and 18784injection is not supported with the current language specified in 18785@value{GDBN}, or the compiler does not support this feature, an error 18786message will be printed. If @var{source-code} compiles and links 18787successfully, @value{GDBN} will load the object-code emitted, 18788and execute it within the context of the currently selected inferior. 18789It is important to note that the compiled code is executed immediately. 18790After execution, the compiled code is removed from @value{GDBN} and any 18791new types or variables you have defined will be deleted. 18792 18793The command allows you to specify @var{source-code} in two ways. 18794The simplest method is to provide a single line of code to the command. 18795E.g.: 18796 18797@smallexample 18798compile code printf ("hello world\n"); 18799@end smallexample 18800 18801If you specify options on the command line as well as source code, they 18802may conflict. The @samp{--} delimiter can be used to separate options 18803from actual source code. E.g.: 18804 18805@smallexample 18806compile code -r -- printf ("hello world\n"); 18807@end smallexample 18808 18809Alternatively you can enter source code as multiple lines of text. To 18810enter this mode, invoke the @samp{compile code} command without any text 18811following the command. This will start the multiple-line editor and 18812allow you to type as many lines of source code as required. When you 18813have completed typing, enter @samp{end} on its own line to exit the 18814editor. 18815 18816@smallexample 18817compile code 18818>printf ("hello\n"); 18819>printf ("world\n"); 18820>end 18821@end smallexample 18822 18823Specifying @samp{-raw}, prohibits @value{GDBN} from wrapping the 18824provided @var{source-code} in a callable scope. In this case, you must 18825specify the entry point of the code by defining a function named 18826@code{_gdb_expr_}. The @samp{-raw} code cannot access variables of the 18827inferior. Using @samp{-raw} option may be needed for example when 18828@var{source-code} requires @samp{#include} lines which may conflict with 18829inferior symbols otherwise. 18830 18831@kindex compile file 18832@item compile file @var{filename} 18833@itemx compile file -raw @var{filename} 18834Like @code{compile code}, but take the source code from @var{filename}. 18835 18836@smallexample 18837compile file /home/user/example.c 18838@end smallexample 18839@end table 18840 18841@table @code 18842@item compile print @var{expr} 18843@itemx compile print /@var{f} @var{expr} 18844Compile and execute @var{expr} with the compiler language found as the 18845current language in @value{GDBN} (@pxref{Languages}). By default the 18846value of @var{expr} is printed in a format appropriate to its data type; 18847you can choose a different format by specifying @samp{/@var{f}}, where 18848@var{f} is a letter specifying the format; see @ref{Output Formats,,Output 18849Formats}. 18850 18851@item compile print 18852@itemx compile print /@var{f} 18853@cindex reprint the last value 18854Alternatively you can enter the expression (source code producing it) as 18855multiple lines of text. To enter this mode, invoke the @samp{compile print} 18856command without any text following the command. This will start the 18857multiple-line editor. 18858@end table 18859 18860@noindent 18861The process of compiling and injecting the code can be inspected using: 18862 18863@table @code 18864@anchor{set debug compile} 18865@item set debug compile 18866@cindex compile command debugging info 18867Turns on or off display of @value{GDBN} process of compiling and 18868injecting the code. The default is off. 18869 18870@item show debug compile 18871Displays the current state of displaying @value{GDBN} process of 18872compiling and injecting the code. 18873 18874@anchor{set debug compile-cplus-types} 18875@item set debug compile-cplus-types 18876@cindex compile C@t{++} type conversion 18877Turns on or off the display of C@t{++} type conversion debugging information. 18878The default is off. 18879 18880@item show debug compile-cplus-types 18881Displays the current state of displaying debugging information for 18882C@t{++} type conversion. 18883@end table 18884 18885@subsection Compilation options for the @code{compile} command 18886 18887@value{GDBN} needs to specify the right compilation options for the code 18888to be injected, in part to make its ABI compatible with the inferior 18889and in part to make the injected code compatible with @value{GDBN}'s 18890injecting process. 18891 18892@noindent 18893The options used, in increasing precedence: 18894 18895@table @asis 18896@item target architecture and OS options (@code{gdbarch}) 18897These options depend on target processor type and target operating 18898system, usually they specify at least 32-bit (@code{-m32}) or 64-bit 18899(@code{-m64}) compilation option. 18900 18901@item compilation options recorded in the target 18902@value{NGCC} (since version 4.7) stores the options used for compilation 18903into @code{DW_AT_producer} part of DWARF debugging information according 18904to the @value{NGCC} option @code{-grecord-gcc-switches}. One has to 18905explicitly specify @code{-g} during inferior compilation otherwise 18906@value{NGCC} produces no DWARF. This feature is only relevant for 18907platforms where @code{-g} produces DWARF by default, otherwise one may 18908try to enforce DWARF by using @code{-gdwarf-4}. 18909 18910@item compilation options set by @code{set compile-args} 18911@end table 18912 18913@noindent 18914You can override compilation options using the following command: 18915 18916@table @code 18917@item set compile-args 18918@cindex compile command options override 18919Set compilation options used for compiling and injecting code with the 18920@code{compile} commands. These options override any conflicting ones 18921from the target architecture and/or options stored during inferior 18922compilation. 18923 18924@item show compile-args 18925Displays the current state of compilation options override. 18926This does not show all the options actually used during compilation, 18927use @ref{set debug compile} for that. 18928@end table 18929 18930@subsection Caveats when using the @code{compile} command 18931 18932There are a few caveats to keep in mind when using the @code{compile} 18933command. As the caveats are different per language, the table below 18934highlights specific issues on a per language basis. 18935 18936@table @asis 18937@item C code examples and caveats 18938When the language in @value{GDBN} is set to @samp{C}, the compiler will 18939attempt to compile the source code with a @samp{C} compiler. The source 18940code provided to the @code{compile} command will have much the same 18941access to variables and types as it normally would if it were part of 18942the program currently being debugged in @value{GDBN}. 18943 18944Below is a sample program that forms the basis of the examples that 18945follow. This program has been compiled and loaded into @value{GDBN}, 18946much like any other normal debugging session. 18947 18948@smallexample 18949void function1 (void) 18950@{ 18951 int i = 42; 18952 printf ("function 1\n"); 18953@} 18954 18955void function2 (void) 18956@{ 18957 int j = 12; 18958 function1 (); 18959@} 18960 18961int main(void) 18962@{ 18963 int k = 6; 18964 int *p; 18965 function2 (); 18966 return 0; 18967@} 18968@end smallexample 18969 18970For the purposes of the examples in this section, the program above has 18971been compiled, loaded into @value{GDBN}, stopped at the function 18972@code{main}, and @value{GDBN} is awaiting input from the user. 18973 18974To access variables and types for any program in @value{GDBN}, the 18975program must be compiled and packaged with debug information. The 18976@code{compile} command is not an exception to this rule. Without debug 18977information, you can still use the @code{compile} command, but you will 18978be very limited in what variables and types you can access. 18979 18980So with that in mind, the example above has been compiled with debug 18981information enabled. The @code{compile} command will have access to 18982all variables and types (except those that may have been optimized 18983out). Currently, as @value{GDBN} has stopped the program in the 18984@code{main} function, the @code{compile} command would have access to 18985the variable @code{k}. You could invoke the @code{compile} command 18986and type some source code to set the value of @code{k}. You can also 18987read it, or do anything with that variable you would normally do in 18988@code{C}. Be aware that changes to inferior variables in the 18989@code{compile} command are persistent. In the following example: 18990 18991@smallexample 18992compile code k = 3; 18993@end smallexample 18994 18995@noindent 18996the variable @code{k} is now 3. It will retain that value until 18997something else in the example program changes it, or another 18998@code{compile} command changes it. 18999 19000Normal scope and access rules apply to source code compiled and 19001injected by the @code{compile} command. In the example, the variables 19002@code{j} and @code{k} are not accessible yet, because the program is 19003currently stopped in the @code{main} function, where these variables 19004are not in scope. Therefore, the following command 19005 19006@smallexample 19007compile code j = 3; 19008@end smallexample 19009 19010@noindent 19011will result in a compilation error message. 19012 19013Once the program is continued, execution will bring these variables in 19014scope, and they will become accessible; then the code you specify via 19015the @code{compile} command will be able to access them. 19016 19017You can create variables and types with the @code{compile} command as 19018part of your source code. Variables and types that are created as part 19019of the @code{compile} command are not visible to the rest of the program for 19020the duration of its run. This example is valid: 19021 19022@smallexample 19023compile code int ff = 5; printf ("ff is %d\n", ff); 19024@end smallexample 19025 19026However, if you were to type the following into @value{GDBN} after that 19027command has completed: 19028 19029@smallexample 19030compile code printf ("ff is %d\n'', ff); 19031@end smallexample 19032 19033@noindent 19034a compiler error would be raised as the variable @code{ff} no longer 19035exists. Object code generated and injected by the @code{compile} 19036command is removed when its execution ends. Caution is advised 19037when assigning to program variables values of variables created by the 19038code submitted to the @code{compile} command. This example is valid: 19039 19040@smallexample 19041compile code int ff = 5; k = ff; 19042@end smallexample 19043 19044The value of the variable @code{ff} is assigned to @code{k}. The variable 19045@code{k} does not require the existence of @code{ff} to maintain the value 19046it has been assigned. However, pointers require particular care in 19047assignment. If the source code compiled with the @code{compile} command 19048changed the address of a pointer in the example program, perhaps to a 19049variable created in the @code{compile} command, that pointer would point 19050to an invalid location when the command exits. The following example 19051would likely cause issues with your debugged program: 19052 19053@smallexample 19054compile code int ff = 5; p = &ff; 19055@end smallexample 19056 19057In this example, @code{p} would point to @code{ff} when the 19058@code{compile} command is executing the source code provided to it. 19059However, as variables in the (example) program persist with their 19060assigned values, the variable @code{p} would point to an invalid 19061location when the command exists. A general rule should be followed 19062in that you should either assign @code{NULL} to any assigned pointers, 19063or restore a valid location to the pointer before the command exits. 19064 19065Similar caution must be exercised with any structs, unions, and typedefs 19066defined in @code{compile} command. Types defined in the @code{compile} 19067command will no longer be available in the next @code{compile} command. 19068Therefore, if you cast a variable to a type defined in the 19069@code{compile} command, care must be taken to ensure that any future 19070need to resolve the type can be achieved. 19071 19072@smallexample 19073(gdb) compile code static struct a @{ int a; @} v = @{ 42 @}; argv = &v; 19074(gdb) compile code printf ("%d\n", ((struct a *) argv)->a); 19075gdb command line:1:36: error: dereferencing pointer to incomplete type ‘struct a’ 19076Compilation failed. 19077(gdb) compile code struct a @{ int a; @}; printf ("%d\n", ((struct a *) argv)->a); 1907842 19079@end smallexample 19080 19081Variables that have been optimized away by the compiler are not 19082accessible to the code submitted to the @code{compile} command. 19083Access to those variables will generate a compiler error which @value{GDBN} 19084will print to the console. 19085@end table 19086 19087@subsection Compiler search for the @code{compile} command 19088 19089@value{GDBN} needs to find @value{NGCC} for the inferior being debugged 19090which may not be obvious for remote targets of different architecture 19091than where @value{GDBN} is running. Environment variable @code{PATH} on 19092@value{GDBN} host is searched for @value{NGCC} binary matching the 19093target architecture and operating system. This search can be overriden 19094by @code{set compile-gcc} @value{GDBN} command below. @code{PATH} is 19095taken from shell that executed @value{GDBN}, it is not the value set by 19096@value{GDBN} command @code{set environment}). @xref{Environment}. 19097 19098 19099Specifically @code{PATH} is searched for binaries matching regular expression 19100@code{@var{arch}(-[^-]*)?-@var{os}-gcc} according to the inferior target being 19101debugged. @var{arch} is processor name --- multiarch is supported, so for 19102example both @code{i386} and @code{x86_64} targets look for pattern 19103@code{(x86_64|i.86)} and both @code{s390} and @code{s390x} targets look 19104for pattern @code{s390x?}. @var{os} is currently supported only for 19105pattern @code{linux(-gnu)?}. 19106 19107On Posix hosts the compiler driver @value{GDBN} needs to find also 19108shared library @file{libcc1.so} from the compiler. It is searched in 19109default shared library search path (overridable with usual environment 19110variable @code{LD_LIBRARY_PATH}), unrelated to @code{PATH} or @code{set 19111compile-gcc} settings. Contrary to it @file{libcc1plugin.so} is found 19112according to the installation of the found compiler --- as possibly 19113specified by the @code{set compile-gcc} command. 19114 19115@table @code 19116@item set compile-gcc 19117@cindex compile command driver filename override 19118Set compilation command used for compiling and injecting code with the 19119@code{compile} commands. If this option is not set (it is set to 19120an empty string), the search described above will occur --- that is the 19121default. 19122 19123@item show compile-gcc 19124Displays the current compile command @value{NGCC} driver filename. 19125If set, it is the main command @command{gcc}, found usually for example 19126under name @file{x86_64-linux-gnu-gcc}. 19127@end table 19128 19129@node GDB Files 19130@chapter @value{GDBN} Files 19131 19132@value{GDBN} needs to know the file name of the program to be debugged, 19133both in order to read its symbol table and in order to start your 19134program. To debug a core dump of a previous run, you must also tell 19135@value{GDBN} the name of the core dump file. 19136 19137@menu 19138* Files:: Commands to specify files 19139* File Caching:: Information about @value{GDBN}'s file caching 19140* Separate Debug Files:: Debugging information in separate files 19141* MiniDebugInfo:: Debugging information in a special section 19142* Index Files:: Index files speed up GDB 19143* Symbol Errors:: Errors reading symbol files 19144* Data Files:: GDB data files 19145@end menu 19146 19147@node Files 19148@section Commands to Specify Files 19149 19150@cindex symbol table 19151@cindex core dump file 19152 19153You may want to specify executable and core dump file names. The usual 19154way to do this is at start-up time, using the arguments to 19155@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and 19156Out of @value{GDBN}}). 19157 19158Occasionally it is necessary to change to a different file during a 19159@value{GDBN} session. Or you may run @value{GDBN} and forget to 19160specify a file you want to use. Or you are debugging a remote target 19161via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver} 19162Program}). In these situations the @value{GDBN} commands to specify 19163new files are useful. 19164 19165@table @code 19166@cindex executable file 19167@kindex file 19168@item file @var{filename} 19169Use @var{filename} as the program to be debugged. It is read for its 19170symbols and for the contents of pure memory. It is also the program 19171executed when you use the @code{run} command. If you do not specify a 19172directory and the file is not found in the @value{GDBN} working directory, 19173@value{GDBN} uses the environment variable @code{PATH} as a list of 19174directories to search, just as the shell does when looking for a program 19175to run. You can change the value of this variable, for both @value{GDBN} 19176and your program, using the @code{path} command. 19177 19178@cindex unlinked object files 19179@cindex patching object files 19180You can load unlinked object @file{.o} files into @value{GDBN} using 19181the @code{file} command. You will not be able to ``run'' an object 19182file, but you can disassemble functions and inspect variables. Also, 19183if the underlying BFD functionality supports it, you could use 19184@kbd{gdb -write} to patch object files using this technique. Note 19185that @value{GDBN} can neither interpret nor modify relocations in this 19186case, so branches and some initialized variables will appear to go to 19187the wrong place. But this feature is still handy from time to time. 19188 19189@item file 19190@code{file} with no argument makes @value{GDBN} discard any information it 19191has on both executable file and the symbol table. 19192 19193@kindex exec-file 19194@item exec-file @r{[} @var{filename} @r{]} 19195Specify that the program to be run (but not the symbol table) is found 19196in @var{filename}. @value{GDBN} searches the environment variable @code{PATH} 19197if necessary to locate your program. Omitting @var{filename} means to 19198discard information on the executable file. 19199 19200@kindex symbol-file 19201@item symbol-file @r{[} @var{filename} @r{[} -o @var{offset} @r{]]} 19202Read symbol table information from file @var{filename}. @code{PATH} is 19203searched when necessary. Use the @code{file} command to get both symbol 19204table and program to run from the same file. 19205 19206If an optional @var{offset} is specified, it is added to the start 19207address of each section in the symbol file. This is useful if the 19208program is relocated at runtime, such as the Linux kernel with kASLR 19209enabled. 19210 19211@code{symbol-file} with no argument clears out @value{GDBN} information on your 19212program's symbol table. 19213 19214The @code{symbol-file} command causes @value{GDBN} to forget the contents of 19215some breakpoints and auto-display expressions. This is because they may 19216contain pointers to the internal data recording symbols and data types, 19217which are part of the old symbol table data being discarded inside 19218@value{GDBN}. 19219 19220@code{symbol-file} does not repeat if you press @key{RET} again after 19221executing it once. 19222 19223When @value{GDBN} is configured for a particular environment, it 19224understands debugging information in whatever format is the standard 19225generated for that environment; you may use either a @sc{gnu} compiler, or 19226other compilers that adhere to the local conventions. 19227Best results are usually obtained from @sc{gnu} compilers; for example, 19228using @code{@value{NGCC}} you can generate debugging information for 19229optimized code. 19230 19231For most kinds of object files, with the exception of old SVR3 systems 19232using COFF, the @code{symbol-file} command does not normally read the 19233symbol table in full right away. Instead, it scans the symbol table 19234quickly to find which source files and which symbols are present. The 19235details are read later, one source file at a time, as they are needed. 19236 19237The purpose of this two-stage reading strategy is to make @value{GDBN} 19238start up faster. For the most part, it is invisible except for 19239occasional pauses while the symbol table details for a particular source 19240file are being read. (The @code{set verbose} command can turn these 19241pauses into messages if desired. @xref{Messages/Warnings, ,Optional 19242Warnings and Messages}.) 19243 19244We have not implemented the two-stage strategy for COFF yet. When the 19245symbol table is stored in COFF format, @code{symbol-file} reads the 19246symbol table data in full right away. Note that ``stabs-in-COFF'' 19247still does the two-stage strategy, since the debug info is actually 19248in stabs format. 19249 19250@kindex readnow 19251@cindex reading symbols immediately 19252@cindex symbols, reading immediately 19253@item symbol-file @r{[} -readnow @r{]} @var{filename} 19254@itemx file @r{[} -readnow @r{]} @var{filename} 19255You can override the @value{GDBN} two-stage strategy for reading symbol 19256tables by using the @samp{-readnow} option with any of the commands that 19257load symbol table information, if you want to be sure @value{GDBN} has the 19258entire symbol table available. 19259 19260@cindex @code{-readnever}, option for symbol-file command 19261@cindex never read symbols 19262@cindex symbols, never read 19263@item symbol-file @r{[} -readnever @r{]} @var{filename} 19264@itemx file @r{[} -readnever @r{]} @var{filename} 19265You can instruct @value{GDBN} to never read the symbolic information 19266contained in @var{filename} by using the @samp{-readnever} option. 19267@xref{--readnever}. 19268 19269@c FIXME: for now no mention of directories, since this seems to be in 19270@c flux. 13mar1992 status is that in theory GDB would look either in 19271@c current dir or in same dir as myprog; but issues like competing 19272@c GDB's, or clutter in system dirs, mean that in practice right now 19273@c only current dir is used. FFish says maybe a special GDB hierarchy 19274@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol 19275@c files. 19276 19277@kindex core-file 19278@item core-file @r{[}@var{filename}@r{]} 19279@itemx core 19280Specify the whereabouts of a core dump file to be used as the ``contents 19281of memory''. Traditionally, core files contain only some parts of the 19282address space of the process that generated them; @value{GDBN} can access the 19283executable file itself for other parts. 19284 19285@code{core-file} with no argument specifies that no core file is 19286to be used. 19287 19288Note that the core file is ignored when your program is actually running 19289under @value{GDBN}. So, if you have been running your program and you 19290wish to debug a core file instead, you must kill the subprocess in which 19291the program is running. To do this, use the @code{kill} command 19292(@pxref{Kill Process, ,Killing the Child Process}). 19293 19294@kindex add-symbol-file 19295@cindex dynamic linking 19296@item add-symbol-file @var{filename} @r{[} -readnow @r{|} -readnever @r{]} @r{[} -o @var{offset} @r{]} @r{[} @var{textaddress} @r{]} @r{[} -s @var{section} @var{address} @dots{} @r{]} 19297The @code{add-symbol-file} command reads additional symbol table 19298information from the file @var{filename}. You would use this command 19299when @var{filename} has been dynamically loaded (by some other means) 19300into the program that is running. The @var{textaddress} parameter gives 19301the memory address at which the file's text section has been loaded. 19302You can additionally specify the base address of other sections using 19303an arbitrary number of @samp{-s @var{section} @var{address}} pairs. 19304If a section is omitted, @value{GDBN} will use its default addresses 19305as found in @var{filename}. Any @var{address} or @var{textaddress} 19306can be given as an expression. 19307 19308If an optional @var{offset} is specified, it is added to the start 19309address of each section, except those for which the address was 19310specified explicitly. 19311 19312The symbol table of the file @var{filename} is added to the symbol table 19313originally read with the @code{symbol-file} command. You can use the 19314@code{add-symbol-file} command any number of times; the new symbol data 19315thus read is kept in addition to the old. 19316 19317Changes can be reverted using the command @code{remove-symbol-file}. 19318 19319@cindex relocatable object files, reading symbols from 19320@cindex object files, relocatable, reading symbols from 19321@cindex reading symbols from relocatable object files 19322@cindex symbols, reading from relocatable object files 19323@cindex @file{.o} files, reading symbols from 19324Although @var{filename} is typically a shared library file, an 19325executable file, or some other object file which has been fully 19326relocated for loading into a process, you can also load symbolic 19327information from relocatable @file{.o} files, as long as: 19328 19329@itemize @bullet 19330@item 19331the file's symbolic information refers only to linker symbols defined in 19332that file, not to symbols defined by other object files, 19333@item 19334every section the file's symbolic information refers to has actually 19335been loaded into the inferior, as it appears in the file, and 19336@item 19337you can determine the address at which every section was loaded, and 19338provide these to the @code{add-symbol-file} command. 19339@end itemize 19340 19341@noindent 19342Some embedded operating systems, like Sun Chorus and VxWorks, can load 19343relocatable files into an already running program; such systems 19344typically make the requirements above easy to meet. However, it's 19345important to recognize that many native systems use complex link 19346procedures (@code{.linkonce} section factoring and C@t{++} constructor table 19347assembly, for example) that make the requirements difficult to meet. In 19348general, one cannot assume that using @code{add-symbol-file} to read a 19349relocatable object file's symbolic information will have the same effect 19350as linking the relocatable object file into the program in the normal 19351way. 19352 19353@code{add-symbol-file} does not repeat if you press @key{RET} after using it. 19354 19355@kindex remove-symbol-file 19356@item remove-symbol-file @var{filename} 19357@item remove-symbol-file -a @var{address} 19358Remove a symbol file added via the @code{add-symbol-file} command. The 19359file to remove can be identified by its @var{filename} or by an @var{address} 19360that lies within the boundaries of this symbol file in memory. Example: 19361 19362@smallexample 19363(gdb) add-symbol-file /home/user/gdb/mylib.so 0x7ffff7ff9480 19364add symbol table from file "/home/user/gdb/mylib.so" at 19365 .text_addr = 0x7ffff7ff9480 19366(y or n) y 19367Reading symbols from /home/user/gdb/mylib.so...done. 19368(gdb) remove-symbol-file -a 0x7ffff7ff9480 19369Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y 19370(gdb) 19371@end smallexample 19372 19373 19374@code{remove-symbol-file} does not repeat if you press @key{RET} after using it. 19375 19376@kindex add-symbol-file-from-memory 19377@cindex @code{syscall DSO} 19378@cindex load symbols from memory 19379@item add-symbol-file-from-memory @var{address} 19380Load symbols from the given @var{address} in a dynamically loaded 19381object file whose image is mapped directly into the inferior's memory. 19382For example, the Linux kernel maps a @code{syscall DSO} into each 19383process's address space; this DSO provides kernel-specific code for 19384some system calls. The argument can be any expression whose 19385evaluation yields the address of the file's shared object file header. 19386For this command to work, you must have used @code{symbol-file} or 19387@code{exec-file} commands in advance. 19388 19389@kindex section 19390@item section @var{section} @var{addr} 19391The @code{section} command changes the base address of the named 19392@var{section} of the exec file to @var{addr}. This can be used if the 19393exec file does not contain section addresses, (such as in the 19394@code{a.out} format), or when the addresses specified in the file 19395itself are wrong. Each section must be changed separately. The 19396@code{info files} command, described below, lists all the sections and 19397their addresses. 19398 19399@kindex info files 19400@kindex info target 19401@item info files 19402@itemx info target 19403@code{info files} and @code{info target} are synonymous; both print the 19404current target (@pxref{Targets, ,Specifying a Debugging Target}), 19405including the names of the executable and core dump files currently in 19406use by @value{GDBN}, and the files from which symbols were loaded. The 19407command @code{help target} lists all possible targets rather than 19408current ones. 19409 19410@kindex maint info sections 19411@item maint info sections 19412Another command that can give you extra information about program sections 19413is @code{maint info sections}. In addition to the section information 19414displayed by @code{info files}, this command displays the flags and file 19415offset of each section in the executable and core dump files. In addition, 19416@code{maint info sections} provides the following command options (which 19417may be arbitrarily combined): 19418 19419@table @code 19420@item ALLOBJ 19421Display sections for all loaded object files, including shared libraries. 19422@item @var{sections} 19423Display info only for named @var{sections}. 19424@item @var{section-flags} 19425Display info only for sections for which @var{section-flags} are true. 19426The section flags that @value{GDBN} currently knows about are: 19427@table @code 19428@item ALLOC 19429Section will have space allocated in the process when loaded. 19430Set for all sections except those containing debug information. 19431@item LOAD 19432Section will be loaded from the file into the child process memory. 19433Set for pre-initialized code and data, clear for @code{.bss} sections. 19434@item RELOC 19435Section needs to be relocated before loading. 19436@item READONLY 19437Section cannot be modified by the child process. 19438@item CODE 19439Section contains executable code only. 19440@item DATA 19441Section contains data only (no executable code). 19442@item ROM 19443Section will reside in ROM. 19444@item CONSTRUCTOR 19445Section contains data for constructor/destructor lists. 19446@item HAS_CONTENTS 19447Section is not empty. 19448@item NEVER_LOAD 19449An instruction to the linker to not output the section. 19450@item COFF_SHARED_LIBRARY 19451A notification to the linker that the section contains 19452COFF shared library information. 19453@item IS_COMMON 19454Section contains common symbols. 19455@end table 19456@end table 19457@kindex set trust-readonly-sections 19458@cindex read-only sections 19459@item set trust-readonly-sections on 19460Tell @value{GDBN} that readonly sections in your object file 19461really are read-only (i.e.@: that their contents will not change). 19462In that case, @value{GDBN} can fetch values from these sections 19463out of the object file, rather than from the target program. 19464For some targets (notably embedded ones), this can be a significant 19465enhancement to debugging performance. 19466 19467The default is off. 19468 19469@item set trust-readonly-sections off 19470Tell @value{GDBN} not to trust readonly sections. This means that 19471the contents of the section might change while the program is running, 19472and must therefore be fetched from the target when needed. 19473 19474@item show trust-readonly-sections 19475Show the current setting of trusting readonly sections. 19476@end table 19477 19478All file-specifying commands allow both absolute and relative file names 19479as arguments. @value{GDBN} always converts the file name to an absolute file 19480name and remembers it that way. 19481 19482@cindex shared libraries 19483@anchor{Shared Libraries} 19484@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, SunOS, 19485Darwin/Mach-O, SVr4, IBM RS/6000 AIX, QNX Neutrino, FDPIC (FR-V), and 19486DSBT (TIC6X) shared libraries. 19487 19488On MS-Windows @value{GDBN} must be linked with the Expat library to support 19489shared libraries. @xref{Expat}. 19490 19491@value{GDBN} automatically loads symbol definitions from shared libraries 19492when you use the @code{run} command, or when you examine a core file. 19493(Before you issue the @code{run} command, @value{GDBN} does not understand 19494references to a function in a shared library, however---unless you are 19495debugging a core file). 19496 19497@c FIXME: some @value{GDBN} release may permit some refs to undef 19498@c FIXME...symbols---eg in a break cmd---assuming they are from a shared 19499@c FIXME...lib; check this from time to time when updating manual 19500 19501There are times, however, when you may wish to not automatically load 19502symbol definitions from shared libraries, such as when they are 19503particularly large or there are many of them. 19504 19505To control the automatic loading of shared library symbols, use the 19506commands: 19507 19508@table @code 19509@kindex set auto-solib-add 19510@item set auto-solib-add @var{mode} 19511If @var{mode} is @code{on}, symbols from all shared object libraries 19512will be loaded automatically when the inferior begins execution, you 19513attach to an independently started inferior, or when the dynamic linker 19514informs @value{GDBN} that a new library has been loaded. If @var{mode} 19515is @code{off}, symbols must be loaded manually, using the 19516@code{sharedlibrary} command. The default value is @code{on}. 19517 19518@cindex memory used for symbol tables 19519If your program uses lots of shared libraries with debug info that 19520takes large amounts of memory, you can decrease the @value{GDBN} 19521memory footprint by preventing it from automatically loading the 19522symbols from shared libraries. To that end, type @kbd{set 19523auto-solib-add off} before running the inferior, then load each 19524library whose debug symbols you do need with @kbd{sharedlibrary 19525@var{regexp}}, where @var{regexp} is a regular expression that matches 19526the libraries whose symbols you want to be loaded. 19527 19528@kindex show auto-solib-add 19529@item show auto-solib-add 19530Display the current autoloading mode. 19531@end table 19532 19533@cindex load shared library 19534To explicitly load shared library symbols, use the @code{sharedlibrary} 19535command: 19536 19537@table @code 19538@kindex info sharedlibrary 19539@kindex info share 19540@item info share @var{regex} 19541@itemx info sharedlibrary @var{regex} 19542Print the names of the shared libraries which are currently loaded 19543that match @var{regex}. If @var{regex} is omitted then print 19544all shared libraries that are loaded. 19545 19546@kindex info dll 19547@item info dll @var{regex} 19548This is an alias of @code{info sharedlibrary}. 19549 19550@kindex sharedlibrary 19551@kindex share 19552@item sharedlibrary @var{regex} 19553@itemx share @var{regex} 19554Load shared object library symbols for files matching a 19555Unix regular expression. 19556As with files loaded automatically, it only loads shared libraries 19557required by your program for a core file or after typing @code{run}. If 19558@var{regex} is omitted all shared libraries required by your program are 19559loaded. 19560 19561@item nosharedlibrary 19562@kindex nosharedlibrary 19563@cindex unload symbols from shared libraries 19564Unload all shared object library symbols. This discards all symbols 19565that have been loaded from all shared libraries. Symbols from shared 19566libraries that were loaded by explicit user requests are not 19567discarded. 19568@end table 19569 19570Sometimes you may wish that @value{GDBN} stops and gives you control 19571when any of shared library events happen. The best way to do this is 19572to use @code{catch load} and @code{catch unload} (@pxref{Set 19573Catchpoints}). 19574 19575@value{GDBN} also supports the the @code{set stop-on-solib-events} 19576command for this. This command exists for historical reasons. It is 19577less useful than setting a catchpoint, because it does not allow for 19578conditions or commands as a catchpoint does. 19579 19580@table @code 19581@item set stop-on-solib-events 19582@kindex set stop-on-solib-events 19583This command controls whether @value{GDBN} should give you control 19584when the dynamic linker notifies it about some shared library event. 19585The most common event of interest is loading or unloading of a new 19586shared library. 19587 19588@item show stop-on-solib-events 19589@kindex show stop-on-solib-events 19590Show whether @value{GDBN} stops and gives you control when shared 19591library events happen. 19592@end table 19593 19594Shared libraries are also supported in many cross or remote debugging 19595configurations. @value{GDBN} needs to have access to the target's libraries; 19596this can be accomplished either by providing copies of the libraries 19597on the host system, or by asking @value{GDBN} to automatically retrieve the 19598libraries from the target. If copies of the target libraries are 19599provided, they need to be the same as the target libraries, although the 19600copies on the target can be stripped as long as the copies on the host are 19601not. 19602 19603@cindex where to look for shared libraries 19604For remote debugging, you need to tell @value{GDBN} where the target 19605libraries are, so that it can load the correct copies---otherwise, it 19606may try to load the host's libraries. @value{GDBN} has two variables 19607to specify the search directories for target libraries. 19608 19609@table @code 19610@cindex prefix for executable and shared library file names 19611@cindex system root, alternate 19612@kindex set solib-absolute-prefix 19613@kindex set sysroot 19614@item set sysroot @var{path} 19615Use @var{path} as the system root for the program being debugged. Any 19616absolute shared library paths will be prefixed with @var{path}; many 19617runtime loaders store the absolute paths to the shared library in the 19618target program's memory. When starting processes remotely, and when 19619attaching to already-running processes (local or remote), their 19620executable filenames will be prefixed with @var{path} if reported to 19621@value{GDBN} as absolute by the operating system. If you use 19622@code{set sysroot} to find executables and shared libraries, they need 19623to be laid out in the same way that they are on the target, with 19624e.g.@: a @file{/bin}, @file{/lib} and @file{/usr/lib} hierarchy under 19625@var{path}. 19626 19627If @var{path} starts with the sequence @file{target:} and the target 19628system is remote then @value{GDBN} will retrieve the target binaries 19629from the remote system. This is only supported when using a remote 19630target that supports the @code{remote get} command (@pxref{File 19631Transfer,,Sending files to a remote system}). The part of @var{path} 19632following the initial @file{target:} (if present) is used as system 19633root prefix on the remote file system. If @var{path} starts with the 19634sequence @file{remote:} this is converted to the sequence 19635@file{target:} by @code{set sysroot}@footnote{Historically the 19636functionality to retrieve binaries from the remote system was 19637provided by prefixing @var{path} with @file{remote:}}. If you want 19638to specify a local system root using a directory that happens to be 19639named @file{target:} or @file{remote:}, you need to use some 19640equivalent variant of the name like @file{./target:}. 19641 19642For targets with an MS-DOS based filesystem, such as MS-Windows and 19643SymbianOS, @value{GDBN} tries prefixing a few variants of the target 19644absolute file name with @var{path}. But first, on Unix hosts, 19645@value{GDBN} converts all backslash directory separators into forward 19646slashes, because the backslash is not a directory separator on Unix: 19647 19648@smallexample 19649 c:\foo\bar.dll @result{} c:/foo/bar.dll 19650@end smallexample 19651 19652Then, @value{GDBN} attempts prefixing the target file name with 19653@var{path}, and looks for the resulting file name in the host file 19654system: 19655 19656@smallexample 19657 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll 19658@end smallexample 19659 19660If that does not find the binary, @value{GDBN} tries removing 19661the @samp{:} character from the drive spec, both for convenience, and, 19662for the case of the host file system not supporting file names with 19663colons: 19664 19665@smallexample 19666 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll 19667@end smallexample 19668 19669This makes it possible to have a system root that mirrors a target 19670with more than one drive. E.g., you may want to setup your local 19671copies of the target system shared libraries like so (note @samp{c} vs 19672@samp{z}): 19673 19674@smallexample 19675 @file{/path/to/sysroot/c/sys/bin/foo.dll} 19676 @file{/path/to/sysroot/c/sys/bin/bar.dll} 19677 @file{/path/to/sysroot/z/sys/bin/bar.dll} 19678@end smallexample 19679 19680@noindent 19681and point the system root at @file{/path/to/sysroot}, so that 19682@value{GDBN} can find the correct copies of both 19683@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}. 19684 19685If that still does not find the binary, @value{GDBN} tries 19686removing the whole drive spec from the target file name: 19687 19688@smallexample 19689 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll 19690@end smallexample 19691 19692This last lookup makes it possible to not care about the drive name, 19693if you don't want or need to. 19694 19695The @code{set solib-absolute-prefix} command is an alias for @code{set 19696sysroot}. 19697 19698@cindex default system root 19699@cindex @samp{--with-sysroot} 19700You can set the default system root by using the configure-time 19701@samp{--with-sysroot} option. If the system root is inside 19702@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 19703@samp{--exec-prefix}), then the default system root will be updated 19704automatically if the installed @value{GDBN} is moved to a new 19705location. 19706 19707@kindex show sysroot 19708@item show sysroot 19709Display the current executable and shared library prefix. 19710 19711@kindex set solib-search-path 19712@item set solib-search-path @var{path} 19713If this variable is set, @var{path} is a colon-separated list of 19714directories to search for shared libraries. @samp{solib-search-path} 19715is used after @samp{sysroot} fails to locate the library, or if the 19716path to the library is relative instead of absolute. If you want to 19717use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set 19718@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from 19719finding your host's libraries. @samp{sysroot} is preferred; setting 19720it to a nonexistent directory may interfere with automatic loading 19721of shared library symbols. 19722 19723@kindex show solib-search-path 19724@item show solib-search-path 19725Display the current shared library search path. 19726 19727@cindex DOS file-name semantics of file names. 19728@kindex set target-file-system-kind (unix|dos-based|auto) 19729@kindex show target-file-system-kind 19730@item set target-file-system-kind @var{kind} 19731Set assumed file system kind for target reported file names. 19732 19733Shared library file names as reported by the target system may not 19734make sense as is on the system @value{GDBN} is running on. For 19735example, when remote debugging a target that has MS-DOS based file 19736system semantics, from a Unix host, the target may be reporting to 19737@value{GDBN} a list of loaded shared libraries with file names such as 19738@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of 19739drive letters, so the @samp{c:\} prefix is not normally understood as 19740indicating an absolute file name, and neither is the backslash 19741normally considered a directory separator character. In that case, 19742the native file system would interpret this whole absolute file name 19743as a relative file name with no directory components. This would make 19744it impossible to point @value{GDBN} at a copy of the remote target's 19745shared libraries on the host using @code{set sysroot}, and impractical 19746with @code{set solib-search-path}. Setting 19747@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN} 19748to interpret such file names similarly to how the target would, and to 19749map them to file names valid on @value{GDBN}'s native file system 19750semantics. The value of @var{kind} can be @code{"auto"}, in addition 19751to one of the supported file system kinds. In that case, @value{GDBN} 19752tries to determine the appropriate file system variant based on the 19753current target's operating system (@pxref{ABI, ,Configuring the 19754Current ABI}). The supported file system settings are: 19755 19756@table @code 19757@item unix 19758Instruct @value{GDBN} to assume the target file system is of Unix 19759kind. Only file names starting the forward slash (@samp{/}) character 19760are considered absolute, and the directory separator character is also 19761the forward slash. 19762 19763@item dos-based 19764Instruct @value{GDBN} to assume the target file system is DOS based. 19765File names starting with either a forward slash, or a drive letter 19766followed by a colon (e.g., @samp{c:}), are considered absolute, and 19767both the slash (@samp{/}) and the backslash (@samp{\\}) characters are 19768considered directory separators. 19769 19770@item auto 19771Instruct @value{GDBN} to use the file system kind associated with the 19772target operating system (@pxref{ABI, ,Configuring the Current ABI}). 19773This is the default. 19774@end table 19775@end table 19776 19777@cindex file name canonicalization 19778@cindex base name differences 19779When processing file names provided by the user, @value{GDBN} 19780frequently needs to compare them to the file names recorded in the 19781program's debug info. Normally, @value{GDBN} compares just the 19782@dfn{base names} of the files as strings, which is reasonably fast 19783even for very large programs. (The base name of a file is the last 19784portion of its name, after stripping all the leading directories.) 19785This shortcut in comparison is based upon the assumption that files 19786cannot have more than one base name. This is usually true, but 19787references to files that use symlinks or similar filesystem 19788facilities violate that assumption. If your program records files 19789using such facilities, or if you provide file names to @value{GDBN} 19790using symlinks etc., you can set @code{basenames-may-differ} to 19791@code{true} to instruct @value{GDBN} to completely canonicalize each 19792pair of file names it needs to compare. This will make file-name 19793comparisons accurate, but at a price of a significant slowdown. 19794 19795@table @code 19796@item set basenames-may-differ 19797@kindex set basenames-may-differ 19798Set whether a source file may have multiple base names. 19799 19800@item show basenames-may-differ 19801@kindex show basenames-may-differ 19802Show whether a source file may have multiple base names. 19803@end table 19804 19805@node File Caching 19806@section File Caching 19807@cindex caching of opened files 19808@cindex caching of bfd objects 19809 19810To speed up file loading, and reduce memory usage, @value{GDBN} will 19811reuse the @code{bfd} objects used to track open files. @xref{Top, , 19812BFD, bfd, The Binary File Descriptor Library}. The following commands 19813allow visibility and control of the caching behavior. 19814 19815@table @code 19816@kindex maint info bfds 19817@item maint info bfds 19818This prints information about each @code{bfd} object that is known to 19819@value{GDBN}. 19820 19821@kindex maint set bfd-sharing 19822@kindex maint show bfd-sharing 19823@kindex bfd caching 19824@item maint set bfd-sharing 19825@item maint show bfd-sharing 19826Control whether @code{bfd} objects can be shared. When sharing is 19827enabled @value{GDBN} reuses already open @code{bfd} objects rather 19828than reopening the same file. Turning sharing off does not cause 19829already shared @code{bfd} objects to be unshared, but all future files 19830that are opened will create a new @code{bfd} object. Similarly, 19831re-enabling sharing does not cause multiple existing @code{bfd} 19832objects to be collapsed into a single shared @code{bfd} object. 19833 19834@kindex set debug bfd-cache @var{level} 19835@kindex bfd caching 19836@item set debug bfd-cache @var{level} 19837Turns on debugging of the bfd cache, setting the level to @var{level}. 19838 19839@kindex show debug bfd-cache 19840@kindex bfd caching 19841@item show debug bfd-cache 19842Show the current debugging level of the bfd cache. 19843@end table 19844 19845@node Separate Debug Files 19846@section Debugging Information in Separate Files 19847@cindex separate debugging information files 19848@cindex debugging information in separate files 19849@cindex @file{.debug} subdirectories 19850@cindex debugging information directory, global 19851@cindex global debugging information directories 19852@cindex build ID, and separate debugging files 19853@cindex @file{.build-id} directory 19854 19855@value{GDBN} allows you to put a program's debugging information in a 19856file separate from the executable itself, in a way that allows 19857@value{GDBN} to find and load the debugging information automatically. 19858Since debugging information can be very large---sometimes larger 19859than the executable code itself---some systems distribute debugging 19860information for their executables in separate files, which users can 19861install only when they need to debug a problem. 19862 19863@value{GDBN} supports two ways of specifying the separate debug info 19864file: 19865 19866@itemize @bullet 19867@item 19868The executable contains a @dfn{debug link} that specifies the name of 19869the separate debug info file. The separate debug file's name is 19870usually @file{@var{executable}.debug}, where @var{executable} is the 19871name of the corresponding executable file without leading directories 19872(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the 19873debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC) 19874checksum for the debug file, which @value{GDBN} uses to validate that 19875the executable and the debug file came from the same build. 19876 19877@item 19878The executable contains a @dfn{build ID}, a unique bit string that is 19879also present in the corresponding debug info file. (This is supported 19880only on some operating systems, when using the ELF or PE file formats 19881for binary files and the @sc{gnu} Binutils.) For more details about 19882this feature, see the description of the @option{--build-id} 19883command-line option in @ref{Options, , Command Line Options, ld, 19884The GNU Linker}. The debug info file's name is not specified 19885explicitly by the build ID, but can be computed from the build ID, see 19886below. 19887@end itemize 19888 19889Depending on the way the debug info file is specified, @value{GDBN} 19890uses two different methods of looking for the debug file: 19891 19892@itemize @bullet 19893@item 19894For the ``debug link'' method, @value{GDBN} looks up the named file in 19895the directory of the executable file, then in a subdirectory of that 19896directory named @file{.debug}, and finally under each one of the 19897global debug directories, in a subdirectory whose name is identical to 19898the leading directories of the executable's absolute file name. (On 19899MS-Windows/MS-DOS, the drive letter of the executable's leading 19900directories is converted to a one-letter subdirectory, i.e.@: 19901@file{d:/usr/bin/} is converted to @file{/d/usr/bin/}, because Windows 19902filesystems disallow colons in file names.) 19903 19904@item 19905For the ``build ID'' method, @value{GDBN} looks in the 19906@file{.build-id} subdirectory of each one of the global debug directories for 19907a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the 19908first 2 hex characters of the build ID bit string, and @var{nnnnnnnn} 19909are the rest of the bit string. (Real build ID strings are 32 or more 19910hex characters, not 10.) 19911@end itemize 19912 19913So, for example, suppose you ask @value{GDBN} to debug 19914@file{/usr/bin/ls}, which has a debug link that specifies the 19915file @file{ls.debug}, and a build ID whose value in hex is 19916@code{abcdef1234}. If the list of the global debug directories includes 19917@file{/usr/lib/debug}, then @value{GDBN} will look for the following 19918debug information files, in the indicated order: 19919 19920@itemize @minus 19921@item 19922@file{/usr/lib/debug/.build-id/ab/cdef1234.debug} 19923@item 19924@file{/usr/bin/ls.debug} 19925@item 19926@file{/usr/bin/.debug/ls.debug} 19927@item 19928@file{/usr/lib/debug/usr/bin/ls.debug}. 19929@end itemize 19930 19931@anchor{debug-file-directory} 19932Global debugging info directories default to what is set by @value{GDBN} 19933configure option @option{--with-separate-debug-dir}. During @value{GDBN} run 19934you can also set the global debugging info directories, and view the list 19935@value{GDBN} is currently using. 19936 19937@table @code 19938 19939@kindex set debug-file-directory 19940@item set debug-file-directory @var{directories} 19941Set the directories which @value{GDBN} searches for separate debugging 19942information files to @var{directory}. Multiple path components can be set 19943concatenating them by a path separator. 19944 19945@kindex show debug-file-directory 19946@item show debug-file-directory 19947Show the directories @value{GDBN} searches for separate debugging 19948information files. 19949 19950@end table 19951 19952@cindex @code{.gnu_debuglink} sections 19953@cindex debug link sections 19954A debug link is a special section of the executable file named 19955@code{.gnu_debuglink}. The section must contain: 19956 19957@itemize 19958@item 19959A filename, with any leading directory components removed, followed by 19960a zero byte, 19961@item 19962zero to three bytes of padding, as needed to reach the next four-byte 19963boundary within the section, and 19964@item 19965a four-byte CRC checksum, stored in the same endianness used for the 19966executable file itself. The checksum is computed on the debugging 19967information file's full contents by the function given below, passing 19968zero as the @var{crc} argument. 19969@end itemize 19970 19971Any executable file format can carry a debug link, as long as it can 19972contain a section named @code{.gnu_debuglink} with the contents 19973described above. 19974 19975@cindex @code{.note.gnu.build-id} sections 19976@cindex build ID sections 19977The build ID is a special section in the executable file (and in other 19978ELF binary files that @value{GDBN} may consider). This section is 19979often named @code{.note.gnu.build-id}, but that name is not mandatory. 19980It contains unique identification for the built files---the ID remains 19981the same across multiple builds of the same build tree. The default 19982algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the 19983content for the build ID string. The same section with an identical 19984value is present in the original built binary with symbols, in its 19985stripped variant, and in the separate debugging information file. 19986 19987The debugging information file itself should be an ordinary 19988executable, containing a full set of linker symbols, sections, and 19989debugging information. The sections of the debugging information file 19990should have the same names, addresses, and sizes as the original file, 19991but they need not contain any data---much like a @code{.bss} section 19992in an ordinary executable. 19993 19994The @sc{gnu} binary utilities (Binutils) package includes the 19995@samp{objcopy} utility that can produce 19996the separated executable / debugging information file pairs using the 19997following commands: 19998 19999@smallexample 20000@kbd{objcopy --only-keep-debug foo foo.debug} 20001@kbd{strip -g foo} 20002@end smallexample 20003 20004@noindent 20005These commands remove the debugging 20006information from the executable file @file{foo} and place it in the file 20007@file{foo.debug}. You can use the first, second or both methods to link the 20008two files: 20009 20010@itemize @bullet 20011@item 20012The debug link method needs the following additional command to also leave 20013behind a debug link in @file{foo}: 20014 20015@smallexample 20016@kbd{objcopy --add-gnu-debuglink=foo.debug foo} 20017@end smallexample 20018 20019Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains 20020a version of the @code{strip} command such that the command @kbd{strip foo -f 20021foo.debug} has the same functionality as the two @code{objcopy} commands and 20022the @code{ln -s} command above, together. 20023 20024@item 20025Build ID gets embedded into the main executable using @code{ld --build-id} or 20026the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus 20027compatibility fixes for debug files separation are present in @sc{gnu} binary 20028utilities (Binutils) package since version 2.18. 20029@end itemize 20030 20031@noindent 20032 20033@cindex CRC algorithm definition 20034The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in 20035IEEE 802.3 using the polynomial: 20036 20037@c TexInfo requires naked braces for multi-digit exponents for Tex 20038@c output, but this causes HTML output to barf. HTML has to be set using 20039@c raw commands. So we end up having to specify this equation in 2 20040@c different ways! 20041@ifhtml 20042@display 20043@html 20044 <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> 20045 + <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 20046@end html 20047@end display 20048@end ifhtml 20049@ifnothtml 20050@display 20051 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}} 20052 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1} 20053@end display 20054@end ifnothtml 20055 20056The function is computed byte at a time, taking the least 20057significant bit of each byte first. The initial pattern 20058@code{0xffffffff} is used, to ensure leading zeros affect the CRC and 20059the final result is inverted to ensure trailing zeros also affect the 20060CRC. 20061 20062@emph{Note:} This is the same CRC polynomial as used in handling the 20063@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{qCRC packet}). 20064However in the case of the Remote Serial Protocol, the CRC is computed 20065@emph{most} significant bit first, and the result is not inverted, so 20066trailing zeros have no effect on the CRC value. 20067 20068To complete the description, we show below the code of the function 20069which produces the CRC used in @code{.gnu_debuglink}. Inverting the 20070initially supplied @code{crc} argument means that an initial call to 20071this function passing in zero will start computing the CRC using 20072@code{0xffffffff}. 20073 20074@kindex gnu_debuglink_crc32 20075@smallexample 20076unsigned long 20077gnu_debuglink_crc32 (unsigned long crc, 20078 unsigned char *buf, size_t len) 20079@{ 20080 static const unsigned long crc32_table[256] = 20081 @{ 20082 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 20083 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 20084 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 20085 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 20086 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 20087 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 20088 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 20089 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 20090 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 20091 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 20092 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 20093 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 20094 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 20095 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 20096 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 20097 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 20098 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 20099 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 20100 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 20101 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 20102 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 20103 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 20104 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 20105 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 20106 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 20107 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 20108 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 20109 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 20110 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 20111 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 20112 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 20113 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 20114 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 20115 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 20116 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 20117 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 20118 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 20119 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 20120 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 20121 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 20122 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 20123 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 20124 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 20125 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 20126 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 20127 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 20128 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 20129 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 20130 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 20131 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 20132 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 20133 0x2d02ef8d 20134 @}; 20135 unsigned char *end; 20136 20137 crc = ~crc & 0xffffffff; 20138 for (end = buf + len; buf < end; ++buf) 20139 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); 20140 return ~crc & 0xffffffff; 20141@} 20142@end smallexample 20143 20144@noindent 20145This computation does not apply to the ``build ID'' method. 20146 20147@node MiniDebugInfo 20148@section Debugging information in a special section 20149@cindex separate debug sections 20150@cindex @samp{.gnu_debugdata} section 20151 20152Some systems ship pre-built executables and libraries that have a 20153special @samp{.gnu_debugdata} section. This feature is called 20154@dfn{MiniDebugInfo}. This section holds an LZMA-compressed object and 20155is used to supply extra symbols for backtraces. 20156 20157The intent of this section is to provide extra minimal debugging 20158information for use in simple backtraces. It is not intended to be a 20159replacement for full separate debugging information (@pxref{Separate 20160Debug Files}). The example below shows the intended use; however, 20161@value{GDBN} does not currently put restrictions on what sort of 20162debugging information might be included in the section. 20163 20164@value{GDBN} has support for this extension. If the section exists, 20165then it is used provided that no other source of debugging information 20166can be found, and that @value{GDBN} was configured with LZMA support. 20167 20168This section can be easily created using @command{objcopy} and other 20169standard utilities: 20170 20171@smallexample 20172# Extract the dynamic symbols from the main binary, there is no need 20173# to also have these in the normal symbol table. 20174nm -D @var{binary} --format=posix --defined-only \ 20175 | awk '@{ print $1 @}' | sort > dynsyms 20176 20177# Extract all the text (i.e. function) symbols from the debuginfo. 20178# (Note that we actually also accept "D" symbols, for the benefit 20179# of platforms like PowerPC64 that use function descriptors.) 20180nm @var{binary} --format=posix --defined-only \ 20181 | awk '@{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 @}' \ 20182 | sort > funcsyms 20183 20184# Keep all the function symbols not already in the dynamic symbol 20185# table. 20186comm -13 dynsyms funcsyms > keep_symbols 20187 20188# Separate full debug info into debug binary. 20189objcopy --only-keep-debug @var{binary} debug 20190 20191# Copy the full debuginfo, keeping only a minimal set of symbols and 20192# removing some unnecessary sections. 20193objcopy -S --remove-section .gdb_index --remove-section .comment \ 20194 --keep-symbols=keep_symbols debug mini_debuginfo 20195 20196# Drop the full debug info from the original binary. 20197strip --strip-all -R .comment @var{binary} 20198 20199# Inject the compressed data into the .gnu_debugdata section of the 20200# original binary. 20201xz mini_debuginfo 20202objcopy --add-section .gnu_debugdata=mini_debuginfo.xz @var{binary} 20203@end smallexample 20204 20205@node Index Files 20206@section Index Files Speed Up @value{GDBN} 20207@cindex index files 20208@cindex @samp{.gdb_index} section 20209 20210When @value{GDBN} finds a symbol file, it scans the symbols in the 20211file in order to construct an internal symbol table. This lets most 20212@value{GDBN} operations work quickly---at the cost of a delay early 20213on. For large programs, this delay can be quite lengthy, so 20214@value{GDBN} provides a way to build an index, which speeds up 20215startup. 20216 20217For convenience, @value{GDBN} comes with a program, 20218@command{gdb-add-index}, which can be used to add the index to a 20219symbol file. It takes the symbol file as its only argument: 20220 20221@smallexample 20222$ gdb-add-index symfile 20223@end smallexample 20224 20225@xref{gdb-add-index}. 20226 20227It is also possible to do the work manually. Here is what 20228@command{gdb-add-index} does behind the curtains. 20229 20230The index is stored as a section in the symbol file. @value{GDBN} can 20231write the index to a file, then you can put it into the symbol file 20232using @command{objcopy}. 20233 20234To create an index file, use the @code{save gdb-index} command: 20235 20236@table @code 20237@item save gdb-index [-dwarf-5] @var{directory} 20238@kindex save gdb-index 20239Create index files for all symbol files currently known by 20240@value{GDBN}. For each known @var{symbol-file}, this command by 20241default creates it produces a single file 20242@file{@var{symbol-file}.gdb-index}. If you invoke this command with 20243the @option{-dwarf-5} option, it produces 2 files: 20244@file{@var{symbol-file}.debug_names} and 20245@file{@var{symbol-file}.debug_str}. The files are created in the 20246given @var{directory}. 20247@end table 20248 20249Once you have created an index file you can merge it into your symbol 20250file, here named @file{symfile}, using @command{objcopy}: 20251 20252@smallexample 20253$ objcopy --add-section .gdb_index=symfile.gdb-index \ 20254 --set-section-flags .gdb_index=readonly symfile symfile 20255@end smallexample 20256 20257Or for @code{-dwarf-5}: 20258 20259@smallexample 20260$ objcopy --dump-section .debug_str=symfile.debug_str.new symfile 20261$ cat symfile.debug_str >>symfile.debug_str.new 20262$ objcopy --add-section .debug_names=symfile.gdb-index \ 20263 --set-section-flags .debug_names=readonly \ 20264 --update-section .debug_str=symfile.debug_str.new symfile symfile 20265@end smallexample 20266 20267@value{GDBN} will normally ignore older versions of @file{.gdb_index} 20268sections that have been deprecated. Usually they are deprecated because 20269they are missing a new feature or have performance issues. 20270To tell @value{GDBN} to use a deprecated index section anyway 20271specify @code{set use-deprecated-index-sections on}. 20272The default is @code{off}. 20273This can speed up startup, but may result in some functionality being lost. 20274@xref{Index Section Format}. 20275 20276@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on} 20277must be done before gdb reads the file. The following will not work: 20278 20279@smallexample 20280$ gdb -ex "set use-deprecated-index-sections on" <program> 20281@end smallexample 20282 20283Instead you must do, for example, 20284 20285@smallexample 20286$ gdb -iex "set use-deprecated-index-sections on" <program> 20287@end smallexample 20288 20289There are currently some limitation on indices. They only work when 20290for DWARF debugging information, not stabs. And, they do not 20291currently work for programs using Ada. 20292 20293@subsection Automatic symbol index cache 20294 20295It is possible for @value{GDBN} to automatically save a copy of this index in a 20296cache on disk and retrieve it from there when loading the same binary in the 20297future. This feature can be turned on with @kbd{set index-cache on}. The 20298following commands can be used to tweak the behavior of the index cache. 20299 20300@table @code 20301 20302@item set index-cache on 20303@itemx set index-cache off 20304Enable or disable the use of the symbol index cache. 20305 20306@item set index-cache directory @var{directory} 20307@itemx show index-cache directory 20308Set/show the directory where index files will be saved. 20309 20310The default value for this directory depends on the host platform. On 20311most systems, the index is cached in the @file{gdb} subdirectory of 20312the directory pointed to by the @env{XDG_CACHE_HOME} environment 20313variable, if it is defined, else in the @file{.cache/gdb} subdirectory 20314of your home directory. However, on some systems, the default may 20315differ according to local convention. 20316 20317There is no limit on the disk space used by index cache. It is perfectly safe 20318to delete the content of that directory to free up disk space. 20319 20320@item show index-cache stats 20321Print the number of cache hits and misses since the launch of @value{GDBN}. 20322 20323@end table 20324 20325@node Symbol Errors 20326@section Errors Reading Symbol Files 20327 20328While reading a symbol file, @value{GDBN} occasionally encounters problems, 20329such as symbol types it does not recognize, or known bugs in compiler 20330output. By default, @value{GDBN} does not notify you of such problems, since 20331they are relatively common and primarily of interest to people 20332debugging compilers. If you are interested in seeing information 20333about ill-constructed symbol tables, you can either ask @value{GDBN} to print 20334only one message about each such type of problem, no matter how many 20335times the problem occurs; or you can ask @value{GDBN} to print more messages, 20336to see how many times the problems occur, with the @code{set 20337complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and 20338Messages}). 20339 20340The messages currently printed, and their meanings, include: 20341 20342@table @code 20343@item inner block not inside outer block in @var{symbol} 20344 20345The symbol information shows where symbol scopes begin and end 20346(such as at the start of a function or a block of statements). This 20347error indicates that an inner scope block is not fully contained 20348in its outer scope blocks. 20349 20350@value{GDBN} circumvents the problem by treating the inner block as if it had 20351the same scope as the outer block. In the error message, @var{symbol} 20352may be shown as ``@code{(don't know)}'' if the outer block is not a 20353function. 20354 20355@item block at @var{address} out of order 20356 20357The symbol information for symbol scope blocks should occur in 20358order of increasing addresses. This error indicates that it does not 20359do so. 20360 20361@value{GDBN} does not circumvent this problem, and has trouble 20362locating symbols in the source file whose symbols it is reading. (You 20363can often determine what source file is affected by specifying 20364@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and 20365Messages}.) 20366 20367@item bad block start address patched 20368 20369The symbol information for a symbol scope block has a start address 20370smaller than the address of the preceding source line. This is known 20371to occur in the SunOS 4.1.1 (and earlier) C compiler. 20372 20373@value{GDBN} circumvents the problem by treating the symbol scope block as 20374starting on the previous source line. 20375 20376@item bad string table offset in symbol @var{n} 20377 20378@cindex foo 20379Symbol number @var{n} contains a pointer into the string table which is 20380larger than the size of the string table. 20381 20382@value{GDBN} circumvents the problem by considering the symbol to have the 20383name @code{foo}, which may cause other problems if many symbols end up 20384with this name. 20385 20386@item unknown symbol type @code{0x@var{nn}} 20387 20388The symbol information contains new data types that @value{GDBN} does 20389not yet know how to read. @code{0x@var{nn}} is the symbol type of the 20390uncomprehended information, in hexadecimal. 20391 20392@value{GDBN} circumvents the error by ignoring this symbol information. 20393This usually allows you to debug your program, though certain symbols 20394are not accessible. If you encounter such a problem and feel like 20395debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint 20396on @code{complain}, then go up to the function @code{read_dbx_symtab} 20397and examine @code{*bufp} to see the symbol. 20398 20399@item stub type has NULL name 20400 20401@value{GDBN} could not find the full definition for a struct or class. 20402 20403@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{} 20404The symbol information for a C@t{++} member function is missing some 20405information that recent versions of the compiler should have output for 20406it. 20407 20408@item info mismatch between compiler and debugger 20409 20410@value{GDBN} could not parse a type specification output by the compiler. 20411 20412@end table 20413 20414@node Data Files 20415@section GDB Data Files 20416 20417@cindex prefix for data files 20418@value{GDBN} will sometimes read an auxiliary data file. These files 20419are kept in a directory known as the @dfn{data directory}. 20420 20421You can set the data directory's name, and view the name @value{GDBN} 20422is currently using. 20423 20424@table @code 20425@kindex set data-directory 20426@item set data-directory @var{directory} 20427Set the directory which @value{GDBN} searches for auxiliary data files 20428to @var{directory}. 20429 20430@kindex show data-directory 20431@item show data-directory 20432Show the directory @value{GDBN} searches for auxiliary data files. 20433@end table 20434 20435@cindex default data directory 20436@cindex @samp{--with-gdb-datadir} 20437You can set the default data directory by using the configure-time 20438@samp{--with-gdb-datadir} option. If the data directory is inside 20439@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 20440@samp{--exec-prefix}), then the default data directory will be updated 20441automatically if the installed @value{GDBN} is moved to a new 20442location. 20443 20444The data directory may also be specified with the 20445@code{--data-directory} command line option. 20446@xref{Mode Options}. 20447 20448@node Targets 20449@chapter Specifying a Debugging Target 20450 20451@cindex debugging target 20452A @dfn{target} is the execution environment occupied by your program. 20453 20454Often, @value{GDBN} runs in the same host environment as your program; 20455in that case, the debugging target is specified as a side effect when 20456you use the @code{file} or @code{core} commands. When you need more 20457flexibility---for example, running @value{GDBN} on a physically separate 20458host, or controlling a standalone system over a serial port or a 20459realtime system over a TCP/IP connection---you can use the @code{target} 20460command to specify one of the target types configured for @value{GDBN} 20461(@pxref{Target Commands, ,Commands for Managing Targets}). 20462 20463@cindex target architecture 20464It is possible to build @value{GDBN} for several different @dfn{target 20465architectures}. When @value{GDBN} is built like that, you can choose 20466one of the available architectures with the @kbd{set architecture} 20467command. 20468 20469@table @code 20470@kindex set architecture 20471@kindex show architecture 20472@item set architecture @var{arch} 20473This command sets the current target architecture to @var{arch}. The 20474value of @var{arch} can be @code{"auto"}, in addition to one of the 20475supported architectures. 20476 20477@item show architecture 20478Show the current target architecture. 20479 20480@item set processor 20481@itemx processor 20482@kindex set processor 20483@kindex show processor 20484These are alias commands for, respectively, @code{set architecture} 20485and @code{show architecture}. 20486@end table 20487 20488@menu 20489* Active Targets:: Active targets 20490* Target Commands:: Commands for managing targets 20491* Byte Order:: Choosing target byte order 20492@end menu 20493 20494@node Active Targets 20495@section Active Targets 20496 20497@cindex stacking targets 20498@cindex active targets 20499@cindex multiple targets 20500 20501There are multiple classes of targets such as: processes, executable files or 20502recording sessions. Core files belong to the process class, making core file 20503and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently 20504on multiple active targets, one in each class. This allows you to (for 20505example) start a process and inspect its activity, while still having access to 20506the executable file after the process finishes. Or if you start process 20507recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are 20508presented a virtual layer of the recording target, while the process target 20509remains stopped at the chronologically last point of the process execution. 20510 20511Use the @code{core-file} and @code{exec-file} commands to select a new core 20512file or executable target (@pxref{Files, ,Commands to Specify Files}). To 20513specify as a target a process that is already running, use the @code{attach} 20514command (@pxref{Attach, ,Debugging an Already-running Process}). 20515 20516@node Target Commands 20517@section Commands for Managing Targets 20518 20519@table @code 20520@item target @var{type} @var{parameters} 20521Connects the @value{GDBN} host environment to a target machine or 20522process. A target is typically a protocol for talking to debugging 20523facilities. You use the argument @var{type} to specify the type or 20524protocol of the target machine. 20525 20526Further @var{parameters} are interpreted by the target protocol, but 20527typically include things like device names or host names to connect 20528with, process numbers, and baud rates. 20529 20530The @code{target} command does not repeat if you press @key{RET} again 20531after executing the command. 20532 20533@kindex help target 20534@item help target 20535Displays the names of all targets available. To display targets 20536currently selected, use either @code{info target} or @code{info files} 20537(@pxref{Files, ,Commands to Specify Files}). 20538 20539@item help target @var{name} 20540Describe a particular target, including any parameters necessary to 20541select it. 20542 20543@kindex set gnutarget 20544@item set gnutarget @var{args} 20545@value{GDBN} uses its own library BFD to read your files. @value{GDBN} 20546knows whether it is reading an @dfn{executable}, 20547a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format 20548with the @code{set gnutarget} command. Unlike most @code{target} commands, 20549with @code{gnutarget} the @code{target} refers to a program, not a machine. 20550 20551@quotation 20552@emph{Warning:} To specify a file format with @code{set gnutarget}, 20553you must know the actual BFD name. 20554@end quotation 20555 20556@noindent 20557@xref{Files, , Commands to Specify Files}. 20558 20559@kindex show gnutarget 20560@item show gnutarget 20561Use the @code{show gnutarget} command to display what file format 20562@code{gnutarget} is set to read. If you have not set @code{gnutarget}, 20563@value{GDBN} will determine the file format for each file automatically, 20564and @code{show gnutarget} displays @samp{The current BFD target is "auto"}. 20565@end table 20566 20567@cindex common targets 20568Here are some common targets (available, or not, depending on the GDB 20569configuration): 20570 20571@table @code 20572@kindex target 20573@item target exec @var{program} 20574@cindex executable file target 20575An executable file. @samp{target exec @var{program}} is the same as 20576@samp{exec-file @var{program}}. 20577 20578@item target core @var{filename} 20579@cindex core dump file target 20580A core dump file. @samp{target core @var{filename}} is the same as 20581@samp{core-file @var{filename}}. 20582 20583@item target remote @var{medium} 20584@cindex remote target 20585A remote system connected to @value{GDBN} via a serial line or network 20586connection. This command tells @value{GDBN} to use its own remote 20587protocol over @var{medium} for debugging. @xref{Remote Debugging}. 20588 20589For example, if you have a board connected to @file{/dev/ttya} on the 20590machine running @value{GDBN}, you could say: 20591 20592@smallexample 20593target remote /dev/ttya 20594@end smallexample 20595 20596@code{target remote} supports the @code{load} command. This is only 20597useful if you have some other way of getting the stub to the target 20598system, and you can put it somewhere in memory where it won't get 20599clobbered by the download. 20600 20601@item target sim @r{[}@var{simargs}@r{]} @dots{} 20602@cindex built-in simulator target 20603Builtin CPU simulator. @value{GDBN} includes simulators for most architectures. 20604In general, 20605@smallexample 20606 target sim 20607 load 20608 run 20609@end smallexample 20610@noindent 20611works; however, you cannot assume that a specific memory map, device 20612drivers, or even basic I/O is available, although some simulators do 20613provide these. For info about any processor-specific simulator details, 20614see the appropriate section in @ref{Embedded Processors, ,Embedded 20615Processors}. 20616 20617@item target native 20618@cindex native target 20619Setup for local/native process debugging. Useful to make the 20620@code{run} command spawn native processes (likewise @code{attach}, 20621etc.@:) even when @code{set auto-connect-native-target} is @code{off} 20622(@pxref{set auto-connect-native-target}). 20623 20624@end table 20625 20626Different targets are available on different configurations of @value{GDBN}; 20627your configuration may have more or fewer targets. 20628 20629Many remote targets require you to download the executable's code once 20630you've successfully established a connection. You may wish to control 20631various aspects of this process. 20632 20633@table @code 20634 20635@item set hash 20636@kindex set hash@r{, for remote monitors} 20637@cindex hash mark while downloading 20638This command controls whether a hash mark @samp{#} is displayed while 20639downloading a file to the remote monitor. If on, a hash mark is 20640displayed after each S-record is successfully downloaded to the 20641monitor. 20642 20643@item show hash 20644@kindex show hash@r{, for remote monitors} 20645Show the current status of displaying the hash mark. 20646 20647@item set debug monitor 20648@kindex set debug monitor 20649@cindex display remote monitor communications 20650Enable or disable display of communications messages between 20651@value{GDBN} and the remote monitor. 20652 20653@item show debug monitor 20654@kindex show debug monitor 20655Show the current status of displaying communications between 20656@value{GDBN} and the remote monitor. 20657@end table 20658 20659@table @code 20660 20661@kindex load @var{filename} @var{offset} 20662@item load @var{filename} @var{offset} 20663@anchor{load} 20664Depending on what remote debugging facilities are configured into 20665@value{GDBN}, the @code{load} command may be available. Where it exists, it 20666is meant to make @var{filename} (an executable) available for debugging 20667on the remote system---by downloading, or dynamic linking, for example. 20668@code{load} also records the @var{filename} symbol table in @value{GDBN}, like 20669the @code{add-symbol-file} command. 20670 20671If your @value{GDBN} does not have a @code{load} command, attempting to 20672execute it gets the error message ``@code{You can't do that when your 20673target is @dots{}}'' 20674 20675The file is loaded at whatever address is specified in the executable. 20676For some object file formats, you can specify the load address when you 20677link the program; for other formats, like a.out, the object file format 20678specifies a fixed address. 20679@c FIXME! This would be a good place for an xref to the GNU linker doc. 20680 20681It is also possible to tell @value{GDBN} to load the executable file at a 20682specific offset described by the optional argument @var{offset}. When 20683@var{offset} is provided, @var{filename} must also be provided. 20684 20685Depending on the remote side capabilities, @value{GDBN} may be able to 20686load programs into flash memory. 20687 20688@code{load} does not repeat if you press @key{RET} again after using it. 20689@end table 20690 20691@table @code 20692 20693@kindex flash-erase 20694@item flash-erase 20695@anchor{flash-erase} 20696 20697Erases all known flash memory regions on the target. 20698 20699@end table 20700 20701@node Byte Order 20702@section Choosing Target Byte Order 20703 20704@cindex choosing target byte order 20705@cindex target byte order 20706 20707Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH, 20708offer the ability to run either big-endian or little-endian byte 20709orders. Usually the executable or symbol will include a bit to 20710designate the endian-ness, and you will not need to worry about 20711which to use. However, you may still find it useful to adjust 20712@value{GDBN}'s idea of processor endian-ness manually. 20713 20714@table @code 20715@kindex set endian 20716@item set endian big 20717Instruct @value{GDBN} to assume the target is big-endian. 20718 20719@item set endian little 20720Instruct @value{GDBN} to assume the target is little-endian. 20721 20722@item set endian auto 20723Instruct @value{GDBN} to use the byte order associated with the 20724executable. 20725 20726@item show endian 20727Display @value{GDBN}'s current idea of the target byte order. 20728 20729@end table 20730 20731If the @code{set endian auto} mode is in effect and no executable has 20732been selected, then the endianness used is the last one chosen either 20733by one of the @code{set endian big} and @code{set endian little} 20734commands or by inferring from the last executable used. If no 20735endianness has been previously chosen, then the default for this mode 20736is inferred from the target @value{GDBN} has been built for, and is 20737@code{little} if the name of the target CPU has an @code{el} suffix 20738and @code{big} otherwise. 20739 20740Note that these commands merely adjust interpretation of symbolic 20741data on the host, and that they have absolutely no effect on the 20742target system. 20743 20744 20745@node Remote Debugging 20746@chapter Debugging Remote Programs 20747@cindex remote debugging 20748 20749If you are trying to debug a program running on a machine that cannot run 20750@value{GDBN} in the usual way, it is often useful to use remote debugging. 20751For example, you might use remote debugging on an operating system kernel, 20752or on a small system which does not have a general purpose operating system 20753powerful enough to run a full-featured debugger. 20754 20755Some configurations of @value{GDBN} have special serial or TCP/IP interfaces 20756to make this work with particular debugging targets. In addition, 20757@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN}, 20758but not specific to any particular target system) which you can use if you 20759write the remote stubs---the code that runs on the remote system to 20760communicate with @value{GDBN}. 20761 20762Other remote targets may be available in your 20763configuration of @value{GDBN}; use @code{help target} to list them. 20764 20765@menu 20766* Connecting:: Connecting to a remote target 20767* File Transfer:: Sending files to a remote system 20768* Server:: Using the gdbserver program 20769* Remote Configuration:: Remote configuration 20770* Remote Stub:: Implementing a remote stub 20771@end menu 20772 20773@node Connecting 20774@section Connecting to a Remote Target 20775@cindex remote debugging, connecting 20776@cindex @code{gdbserver}, connecting 20777@cindex remote debugging, types of connections 20778@cindex @code{gdbserver}, types of connections 20779@cindex @code{gdbserver}, @code{target remote} mode 20780@cindex @code{gdbserver}, @code{target extended-remote} mode 20781 20782This section describes how to connect to a remote target, including the 20783types of connections and their differences, how to set up executable and 20784symbol files on the host and target, and the commands used for 20785connecting to and disconnecting from the remote target. 20786 20787@subsection Types of Remote Connections 20788 20789@value{GDBN} supports two types of remote connections, @code{target remote} 20790mode and @code{target extended-remote} mode. Note that many remote targets 20791support only @code{target remote} mode. There are several major 20792differences between the two types of connections, enumerated here: 20793 20794@table @asis 20795 20796@cindex remote debugging, detach and program exit 20797@item Result of detach or program exit 20798@strong{With target remote mode:} When the debugged program exits or you 20799detach from it, @value{GDBN} disconnects from the target. When using 20800@code{gdbserver}, @code{gdbserver} will exit. 20801 20802@strong{With target extended-remote mode:} When the debugged program exits or 20803you detach from it, @value{GDBN} remains connected to the target, even 20804though no program is running. You can rerun the program, attach to a 20805running program, or use @code{monitor} commands specific to the target. 20806 20807When using @code{gdbserver} in this case, it does not exit unless it was 20808invoked using the @option{--once} option. If the @option{--once} option 20809was not used, you can ask @code{gdbserver} to exit using the 20810@code{monitor exit} command (@pxref{Monitor Commands for gdbserver}). 20811 20812@item Specifying the program to debug 20813For both connection types you use the @code{file} command to specify the 20814program on the host system. If you are using @code{gdbserver} there are 20815some differences in how to specify the location of the program on the 20816target. 20817 20818@strong{With target remote mode:} You must either specify the program to debug 20819on the @code{gdbserver} command line or use the @option{--attach} option 20820(@pxref{Attaching to a program,,Attaching to a Running Program}). 20821 20822@cindex @option{--multi}, @code{gdbserver} option 20823@strong{With target extended-remote mode:} You may specify the program to debug 20824on the @code{gdbserver} command line, or you can load the program or attach 20825to it using @value{GDBN} commands after connecting to @code{gdbserver}. 20826 20827@anchor{--multi Option in Types of Remote Connnections} 20828You can start @code{gdbserver} without supplying an initial command to run 20829or process ID to attach. To do this, use the @option{--multi} command line 20830option. Then you can connect using @code{target extended-remote} and start 20831the program you want to debug (see below for details on using the 20832@code{run} command in this scenario). Note that the conditions under which 20833@code{gdbserver} terminates depend on how @value{GDBN} connects to it 20834(@code{target remote} or @code{target extended-remote}). The 20835@option{--multi} option to @code{gdbserver} has no influence on that. 20836 20837@item The @code{run} command 20838@strong{With target remote mode:} The @code{run} command is not 20839supported. Once a connection has been established, you can use all 20840the usual @value{GDBN} commands to examine and change data. The 20841remote program is already running, so you can use commands like 20842@kbd{step} and @kbd{continue}. 20843 20844@strong{With target extended-remote mode:} The @code{run} command is 20845supported. The @code{run} command uses the value set by 20846@code{set remote exec-file} (@pxref{set remote exec-file}) to select 20847the program to run. Command line arguments are supported, except for 20848wildcard expansion and I/O redirection (@pxref{Arguments}). 20849 20850If you specify the program to debug on the command line, then the 20851@code{run} command is not required to start execution, and you can 20852resume using commands like @kbd{step} and @kbd{continue} as with 20853@code{target remote} mode. 20854 20855@anchor{Attaching in Types of Remote Connections} 20856@item Attaching 20857@strong{With target remote mode:} The @value{GDBN} command @code{attach} is 20858not supported. To attach to a running program using @code{gdbserver}, you 20859must use the @option{--attach} option (@pxref{Running gdbserver}). 20860 20861@strong{With target extended-remote mode:} To attach to a running program, 20862you may use the @code{attach} command after the connection has been 20863established. If you are using @code{gdbserver}, you may also invoke 20864@code{gdbserver} using the @option{--attach} option 20865(@pxref{Running gdbserver}). 20866 20867@end table 20868 20869@anchor{Host and target files} 20870@subsection Host and Target Files 20871@cindex remote debugging, symbol files 20872@cindex symbol files, remote debugging 20873 20874@value{GDBN}, running on the host, needs access to symbol and debugging 20875information for your program running on the target. This requires 20876access to an unstripped copy of your program, and possibly any associated 20877symbol files. Note that this section applies equally to both @code{target 20878remote} mode and @code{target extended-remote} mode. 20879 20880Some remote targets (@pxref{qXfer executable filename read}, and 20881@pxref{Host I/O Packets}) allow @value{GDBN} to access program files over 20882the same connection used to communicate with @value{GDBN}. With such a 20883target, if the remote program is unstripped, the only command you need is 20884@code{target remote} (or @code{target extended-remote}). 20885 20886If the remote program is stripped, or the target does not support remote 20887program file access, start up @value{GDBN} using the name of the local 20888unstripped copy of your program as the first argument, or use the 20889@code{file} command. Use @code{set sysroot} to specify the location (on 20890the host) of target libraries (unless your @value{GDBN} was compiled with 20891the correct sysroot using @code{--with-sysroot}). Alternatively, you 20892may use @code{set solib-search-path} to specify how @value{GDBN} locates 20893target libraries. 20894 20895The symbol file and target libraries must exactly match the executable 20896and libraries on the target, with one exception: the files on the host 20897system should not be stripped, even if the files on the target system 20898are. Mismatched or missing files will lead to confusing results 20899during debugging. On @sc{gnu}/Linux targets, mismatched or missing 20900files may also prevent @code{gdbserver} from debugging multi-threaded 20901programs. 20902 20903@subsection Remote Connection Commands 20904@cindex remote connection commands 20905@value{GDBN} can communicate with the target over a serial line, a 20906local Unix domain socket, or 20907over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In 20908each case, @value{GDBN} uses the same protocol for debugging your 20909program; only the medium carrying the debugging packets varies. The 20910@code{target remote} and @code{target extended-remote} commands 20911establish a connection to the target. Both commands accept the same 20912arguments, which indicate the medium to use: 20913 20914@table @code 20915 20916@item target remote @var{serial-device} 20917@itemx target extended-remote @var{serial-device} 20918@cindex serial line, @code{target remote} 20919Use @var{serial-device} to communicate with the target. For example, 20920to use a serial line connected to the device named @file{/dev/ttyb}: 20921 20922@smallexample 20923target remote /dev/ttyb 20924@end smallexample 20925 20926If you're using a serial line, you may want to give @value{GDBN} the 20927@samp{--baud} option, or use the @code{set serial baud} command 20928(@pxref{Remote Configuration, set serial baud}) before the 20929@code{target} command. 20930 20931@item target remote @var{local-socket} 20932@itemx target extended-remote @var{local-socket} 20933@cindex local socket, @code{target remote} 20934@cindex Unix domain socket 20935Use @var{local-socket} to communicate with the target. For example, 20936to use a local Unix domain socket bound to the file system entry @file{/tmp/gdb-socket0}: 20937 20938@smallexample 20939target remote /tmp/gdb-socket0 20940@end smallexample 20941 20942Note that this command has the same form as the command to connect 20943to a serial line. @value{GDBN} will automatically determine which 20944kind of file you have specified and will make the appropriate kind 20945of connection. 20946This feature is not available if the host system does not support 20947Unix domain sockets. 20948 20949@item target remote @code{@var{host}:@var{port}} 20950@itemx target remote @code{@var{[host]}:@var{port}} 20951@itemx target remote @code{tcp:@var{host}:@var{port}} 20952@itemx target remote @code{tcp:@var{[host]}:@var{port}} 20953@itemx target remote @code{tcp4:@var{host}:@var{port}} 20954@itemx target remote @code{tcp6:@var{host}:@var{port}} 20955@itemx target remote @code{tcp6:@var{[host]}:@var{port}} 20956@itemx target extended-remote @code{@var{host}:@var{port}} 20957@itemx target extended-remote @code{@var{[host]}:@var{port}} 20958@itemx target extended-remote @code{tcp:@var{host}:@var{port}} 20959@itemx target extended-remote @code{tcp:@var{[host]}:@var{port}} 20960@itemx target extended-remote @code{tcp4:@var{host}:@var{port}} 20961@itemx target extended-remote @code{tcp6:@var{host}:@var{port}} 20962@itemx target extended-remote @code{tcp6:@var{[host]}:@var{port}} 20963@cindex @acronym{TCP} port, @code{target remote} 20964Debug using a @acronym{TCP} connection to @var{port} on @var{host}. 20965The @var{host} may be either a host name, a numeric @acronym{IPv4} 20966address, or a numeric @acronym{IPv6} address (with or without the 20967square brackets to separate the address from the port); @var{port} 20968must be a decimal number. The @var{host} could be the target machine 20969itself, if it is directly connected to the net, or it might be a 20970terminal server which in turn has a serial line to the target. 20971 20972For example, to connect to port 2828 on a terminal server named 20973@code{manyfarms}: 20974 20975@smallexample 20976target remote manyfarms:2828 20977@end smallexample 20978 20979To connect to port 2828 on a terminal server whose address is 20980@code{2001:0db8:85a3:0000:0000:8a2e:0370:7334}, you can either use the 20981square bracket syntax: 20982 20983@smallexample 20984target remote [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:2828 20985@end smallexample 20986 20987@noindent 20988or explicitly specify the @acronym{IPv6} protocol: 20989 20990@smallexample 20991target remote tcp6:2001:0db8:85a3:0000:0000:8a2e:0370:7334:2828 20992@end smallexample 20993 20994This last example may be confusing to the reader, because there is no 20995visible separation between the hostname and the port number. 20996Therefore, we recommend the user to provide @acronym{IPv6} addresses 20997using square brackets for clarity. However, it is important to 20998mention that for @value{GDBN} there is no ambiguity: the number after 20999the last colon is considered to be the port number. 21000 21001If your remote target is actually running on the same machine as your 21002debugger session (e.g.@: a simulator for your target running on the 21003same host), you can omit the hostname. For example, to connect to 21004port 1234 on your local machine: 21005 21006@smallexample 21007target remote :1234 21008@end smallexample 21009@noindent 21010 21011Note that the colon is still required here. 21012 21013@item target remote @code{udp:@var{host}:@var{port}} 21014@itemx target remote @code{udp:@var{[host]}:@var{port}} 21015@itemx target remote @code{udp4:@var{host}:@var{port}} 21016@itemx target remote @code{udp6:@var{[host]}:@var{port}} 21017@itemx target extended-remote @code{udp:@var{host}:@var{port}} 21018@itemx target extended-remote @code{udp:@var{host}:@var{port}} 21019@itemx target extended-remote @code{udp:@var{[host]}:@var{port}} 21020@itemx target extended-remote @code{udp4:@var{host}:@var{port}} 21021@itemx target extended-remote @code{udp6:@var{host}:@var{port}} 21022@itemx target extended-remote @code{udp6:@var{[host]}:@var{port}} 21023@cindex @acronym{UDP} port, @code{target remote} 21024Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to 21025connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}: 21026 21027@smallexample 21028target remote udp:manyfarms:2828 21029@end smallexample 21030 21031When using a @acronym{UDP} connection for remote debugging, you should 21032keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP} 21033can silently drop packets on busy or unreliable networks, which will 21034cause havoc with your debugging session. 21035 21036@item target remote | @var{command} 21037@itemx target extended-remote | @var{command} 21038@cindex pipe, @code{target remote} to 21039Run @var{command} in the background and communicate with it using a 21040pipe. The @var{command} is a shell command, to be parsed and expanded 21041by the system's command shell, @code{/bin/sh}; it should expect remote 21042protocol packets on its standard input, and send replies on its 21043standard output. You could use this to run a stand-alone simulator 21044that speaks the remote debugging protocol, to make net connections 21045using programs like @code{ssh}, or for other similar tricks. 21046 21047If @var{command} closes its standard output (perhaps by exiting), 21048@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the 21049program has already exited, this will have no effect.) 21050 21051@end table 21052 21053@cindex interrupting remote programs 21054@cindex remote programs, interrupting 21055Whenever @value{GDBN} is waiting for the remote program, if you type the 21056interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the 21057program. This may or may not succeed, depending in part on the hardware 21058and the serial drivers the remote system uses. If you type the 21059interrupt character once again, @value{GDBN} displays this prompt: 21060 21061@smallexample 21062Interrupted while waiting for the program. 21063Give up (and stop debugging it)? (y or n) 21064@end smallexample 21065 21066In @code{target remote} mode, if you type @kbd{y}, @value{GDBN} abandons 21067the remote debugging session. (If you decide you want to try again later, 21068you can use @kbd{target remote} again to connect once more.) If you type 21069@kbd{n}, @value{GDBN} goes back to waiting. 21070 21071In @code{target extended-remote} mode, typing @kbd{n} will leave 21072@value{GDBN} connected to the target. 21073 21074@table @code 21075@kindex detach (remote) 21076@item detach 21077When you have finished debugging the remote program, you can use the 21078@code{detach} command to release it from @value{GDBN} control. 21079Detaching from the target normally resumes its execution, but the results 21080will depend on your particular remote stub. After the @code{detach} 21081command in @code{target remote} mode, @value{GDBN} is free to connect to 21082another target. In @code{target extended-remote} mode, @value{GDBN} is 21083still connected to the target. 21084 21085@kindex disconnect 21086@item disconnect 21087The @code{disconnect} command closes the connection to the target, and 21088the target is generally not resumed. It will wait for @value{GDBN} 21089(this instance or another one) to connect and continue debugging. After 21090the @code{disconnect} command, @value{GDBN} is again free to connect to 21091another target. 21092 21093@cindex send command to remote monitor 21094@cindex extend @value{GDBN} for remote targets 21095@cindex add new commands for external monitor 21096@kindex monitor 21097@item monitor @var{cmd} 21098This command allows you to send arbitrary commands directly to the 21099remote monitor. Since @value{GDBN} doesn't care about the commands it 21100sends like this, this command is the way to extend @value{GDBN}---you 21101can add new commands that only the external monitor will understand 21102and implement. 21103@end table 21104 21105@node File Transfer 21106@section Sending files to a remote system 21107@cindex remote target, file transfer 21108@cindex file transfer 21109@cindex sending files to remote systems 21110 21111Some remote targets offer the ability to transfer files over the same 21112connection used to communicate with @value{GDBN}. This is convenient 21113for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems 21114running @code{gdbserver} over a network interface. For other targets, 21115e.g.@: embedded devices with only a single serial port, this may be 21116the only way to upload or download files. 21117 21118Not all remote targets support these commands. 21119 21120@table @code 21121@kindex remote put 21122@item remote put @var{hostfile} @var{targetfile} 21123Copy file @var{hostfile} from the host system (the machine running 21124@value{GDBN}) to @var{targetfile} on the target system. 21125 21126@kindex remote get 21127@item remote get @var{targetfile} @var{hostfile} 21128Copy file @var{targetfile} from the target system to @var{hostfile} 21129on the host system. 21130 21131@kindex remote delete 21132@item remote delete @var{targetfile} 21133Delete @var{targetfile} from the target system. 21134 21135@end table 21136 21137@node Server 21138@section Using the @code{gdbserver} Program 21139 21140@kindex gdbserver 21141@cindex remote connection without stubs 21142@code{gdbserver} is a control program for Unix-like systems, which 21143allows you to connect your program with a remote @value{GDBN} via 21144@code{target remote} or @code{target extended-remote}---but without 21145linking in the usual debugging stub. 21146 21147@code{gdbserver} is not a complete replacement for the debugging stubs, 21148because it requires essentially the same operating-system facilities 21149that @value{GDBN} itself does. In fact, a system that can run 21150@code{gdbserver} to connect to a remote @value{GDBN} could also run 21151@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless, 21152because it is a much smaller program than @value{GDBN} itself. It is 21153also easier to port than all of @value{GDBN}, so you may be able to get 21154started more quickly on a new system by using @code{gdbserver}. 21155Finally, if you develop code for real-time systems, you may find that 21156the tradeoffs involved in real-time operation make it more convenient to 21157do as much development work as possible on another system, for example 21158by cross-compiling. You can use @code{gdbserver} to make a similar 21159choice for debugging. 21160 21161@value{GDBN} and @code{gdbserver} communicate via either a serial line 21162or a TCP connection, using the standard @value{GDBN} remote serial 21163protocol. 21164 21165@quotation 21166@emph{Warning:} @code{gdbserver} does not have any built-in security. 21167Do not run @code{gdbserver} connected to any public network; a 21168@value{GDBN} connection to @code{gdbserver} provides access to the 21169target system with the same privileges as the user running 21170@code{gdbserver}. 21171@end quotation 21172 21173@anchor{Running gdbserver} 21174@subsection Running @code{gdbserver} 21175@cindex arguments, to @code{gdbserver} 21176@cindex @code{gdbserver}, command-line arguments 21177 21178Run @code{gdbserver} on the target system. You need a copy of the 21179program you want to debug, including any libraries it requires. 21180@code{gdbserver} does not need your program's symbol table, so you can 21181strip the program if necessary to save space. @value{GDBN} on the host 21182system does all the symbol handling. 21183 21184To use the server, you must tell it how to communicate with @value{GDBN}; 21185the name of your program; and the arguments for your program. The usual 21186syntax is: 21187 21188@smallexample 21189target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ] 21190@end smallexample 21191 21192@var{comm} is either a device name (to use a serial line), or a TCP 21193hostname and portnumber, or @code{-} or @code{stdio} to use 21194stdin/stdout of @code{gdbserver}. 21195For example, to debug Emacs with the argument 21196@samp{foo.txt} and communicate with @value{GDBN} over the serial port 21197@file{/dev/com1}: 21198 21199@smallexample 21200target> gdbserver /dev/com1 emacs foo.txt 21201@end smallexample 21202 21203@code{gdbserver} waits passively for the host @value{GDBN} to communicate 21204with it. 21205 21206To use a TCP connection instead of a serial line: 21207 21208@smallexample 21209target> gdbserver host:2345 emacs foo.txt 21210@end smallexample 21211 21212The only difference from the previous example is the first argument, 21213specifying that you are communicating with the host @value{GDBN} via 21214TCP. The @samp{host:2345} argument means that @code{gdbserver} is to 21215expect a TCP connection from machine @samp{host} to local TCP port 2345. 21216(Currently, the @samp{host} part is ignored.) You can choose any number 21217you want for the port number as long as it does not conflict with any 21218TCP ports already in use on the target system (for example, @code{23} is 21219reserved for @code{telnet}).@footnote{If you choose a port number that 21220conflicts with another service, @code{gdbserver} prints an error message 21221and exits.} You must use the same port number with the host @value{GDBN} 21222@code{target remote} command. 21223 21224The @code{stdio} connection is useful when starting @code{gdbserver} 21225with ssh: 21226 21227@smallexample 21228(gdb) target remote | ssh -T hostname gdbserver - hello 21229@end smallexample 21230 21231The @samp{-T} option to ssh is provided because we don't need a remote pty, 21232and we don't want escape-character handling. Ssh does this by default when 21233a command is provided, the flag is provided to make it explicit. 21234You could elide it if you want to. 21235 21236Programs started with stdio-connected gdbserver have @file{/dev/null} for 21237@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for 21238display through a pipe connected to gdbserver. 21239Both @code{stdout} and @code{stderr} use the same pipe. 21240 21241@anchor{Attaching to a program} 21242@subsubsection Attaching to a Running Program 21243@cindex attach to a program, @code{gdbserver} 21244@cindex @option{--attach}, @code{gdbserver} option 21245 21246On some targets, @code{gdbserver} can also attach to running programs. 21247This is accomplished via the @code{--attach} argument. The syntax is: 21248 21249@smallexample 21250target> gdbserver --attach @var{comm} @var{pid} 21251@end smallexample 21252 21253@var{pid} is the process ID of a currently running process. It isn't 21254necessary to point @code{gdbserver} at a binary for the running process. 21255 21256In @code{target extended-remote} mode, you can also attach using the 21257@value{GDBN} attach command 21258(@pxref{Attaching in Types of Remote Connections}). 21259 21260@pindex pidof 21261You can debug processes by name instead of process ID if your target has the 21262@code{pidof} utility: 21263 21264@smallexample 21265target> gdbserver --attach @var{comm} `pidof @var{program}` 21266@end smallexample 21267 21268In case more than one copy of @var{program} is running, or @var{program} 21269has multiple threads, most versions of @code{pidof} support the 21270@code{-s} option to only return the first process ID. 21271 21272@subsubsection TCP port allocation lifecycle of @code{gdbserver} 21273 21274This section applies only when @code{gdbserver} is run to listen on a TCP 21275port. 21276 21277@code{gdbserver} normally terminates after all of its debugged processes have 21278terminated in @kbd{target remote} mode. On the other hand, for @kbd{target 21279extended-remote}, @code{gdbserver} stays running even with no processes left. 21280@value{GDBN} normally terminates the spawned debugged process on its exit, 21281which normally also terminates @code{gdbserver} in the @kbd{target remote} 21282mode. Therefore, when the connection drops unexpectedly, and @value{GDBN} 21283cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver} 21284stays running even in the @kbd{target remote} mode. 21285 21286When @code{gdbserver} stays running, @value{GDBN} can connect to it again later. 21287Such reconnecting is useful for features like @ref{disconnected tracing}. For 21288completeness, at most one @value{GDBN} can be connected at a time. 21289 21290@cindex @option{--once}, @code{gdbserver} option 21291By default, @code{gdbserver} keeps the listening TCP port open, so that 21292subsequent connections are possible. However, if you start @code{gdbserver} 21293with the @option{--once} option, it will stop listening for any further 21294connection attempts after connecting to the first @value{GDBN} session. This 21295means no further connections to @code{gdbserver} will be possible after the 21296first one. It also means @code{gdbserver} will terminate after the first 21297connection with remote @value{GDBN} has closed, even for unexpectedly closed 21298connections and even in the @kbd{target extended-remote} mode. The 21299@option{--once} option allows reusing the same port number for connecting to 21300multiple instances of @code{gdbserver} running on the same host, since each 21301instance closes its port after the first connection. 21302 21303@anchor{Other Command-Line Arguments for gdbserver} 21304@subsubsection Other Command-Line Arguments for @code{gdbserver} 21305 21306You can use the @option{--multi} option to start @code{gdbserver} without 21307specifying a program to debug or a process to attach to. Then you can 21308attach in @code{target extended-remote} mode and run or attach to a 21309program. For more information, 21310@pxref{--multi Option in Types of Remote Connnections}. 21311 21312@cindex @option{--debug}, @code{gdbserver} option 21313The @option{--debug} option tells @code{gdbserver} to display extra 21314status information about the debugging process. 21315@cindex @option{--remote-debug}, @code{gdbserver} option 21316The @option{--remote-debug} option tells @code{gdbserver} to display 21317remote protocol debug output. These options are intended for 21318@code{gdbserver} development and for bug reports to the developers. 21319 21320@cindex @option{--debug-format}, @code{gdbserver} option 21321The @option{--debug-format=option1[,option2,...]} option tells 21322@code{gdbserver} to include additional information in each output. 21323Possible options are: 21324 21325@table @code 21326@item none 21327Turn off all extra information in debugging output. 21328@item all 21329Turn on all extra information in debugging output. 21330@item timestamps 21331Include a timestamp in each line of debugging output. 21332@end table 21333 21334Options are processed in order. Thus, for example, if @option{none} 21335appears last then no additional information is added to debugging output. 21336 21337@cindex @option{--wrapper}, @code{gdbserver} option 21338The @option{--wrapper} option specifies a wrapper to launch programs 21339for debugging. The option should be followed by the name of the 21340wrapper, then any command-line arguments to pass to the wrapper, then 21341@kbd{--} indicating the end of the wrapper arguments. 21342 21343@code{gdbserver} runs the specified wrapper program with a combined 21344command line including the wrapper arguments, then the name of the 21345program to debug, then any arguments to the program. The wrapper 21346runs until it executes your program, and then @value{GDBN} gains control. 21347 21348You can use any program that eventually calls @code{execve} with 21349its arguments as a wrapper. Several standard Unix utilities do 21350this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 21351with @code{exec "$@@"} will also work. 21352 21353For example, you can use @code{env} to pass an environment variable to 21354the debugged program, without setting the variable in @code{gdbserver}'s 21355environment: 21356 21357@smallexample 21358$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog 21359@end smallexample 21360 21361@cindex @option{--selftest} 21362The @option{--selftest} option runs the self tests in @code{gdbserver}: 21363 21364@smallexample 21365$ gdbserver --selftest 21366Ran 2 unit tests, 0 failed 21367@end smallexample 21368 21369These tests are disabled in release. 21370@subsection Connecting to @code{gdbserver} 21371 21372The basic procedure for connecting to the remote target is: 21373@itemize 21374 21375@item 21376Run @value{GDBN} on the host system. 21377 21378@item 21379Make sure you have the necessary symbol files 21380(@pxref{Host and target files}). 21381Load symbols for your application using the @code{file} command before you 21382connect. Use @code{set sysroot} to locate target libraries (unless your 21383@value{GDBN} was compiled with the correct sysroot using 21384@code{--with-sysroot}). 21385 21386@item 21387Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}). 21388For TCP connections, you must start up @code{gdbserver} prior to using 21389the @code{target} command. Otherwise you may get an error whose 21390text depends on the host system, but which usually looks something like 21391@samp{Connection refused}. Don't use the @code{load} 21392command in @value{GDBN} when using @code{target remote} mode, since the 21393program is already on the target. 21394 21395@end itemize 21396 21397@anchor{Monitor Commands for gdbserver} 21398@subsection Monitor Commands for @code{gdbserver} 21399@cindex monitor commands, for @code{gdbserver} 21400 21401During a @value{GDBN} session using @code{gdbserver}, you can use the 21402@code{monitor} command to send special requests to @code{gdbserver}. 21403Here are the available commands. 21404 21405@table @code 21406@item monitor help 21407List the available monitor commands. 21408 21409@item monitor set debug 0 21410@itemx monitor set debug 1 21411Disable or enable general debugging messages. 21412 21413@item monitor set remote-debug 0 21414@itemx monitor set remote-debug 1 21415Disable or enable specific debugging messages associated with the remote 21416protocol (@pxref{Remote Protocol}). 21417 21418@item monitor set debug-format option1@r{[},option2,...@r{]} 21419Specify additional text to add to debugging messages. 21420Possible options are: 21421 21422@table @code 21423@item none 21424Turn off all extra information in debugging output. 21425@item all 21426Turn on all extra information in debugging output. 21427@item timestamps 21428Include a timestamp in each line of debugging output. 21429@end table 21430 21431Options are processed in order. Thus, for example, if @option{none} 21432appears last then no additional information is added to debugging output. 21433 21434@item monitor set libthread-db-search-path [PATH] 21435@cindex gdbserver, search path for @code{libthread_db} 21436When this command is issued, @var{path} is a colon-separated list of 21437directories to search for @code{libthread_db} (@pxref{Threads,,set 21438libthread-db-search-path}). If you omit @var{path}, 21439@samp{libthread-db-search-path} will be reset to its default value. 21440 21441The special entry @samp{$pdir} for @samp{libthread-db-search-path} is 21442not supported in @code{gdbserver}. 21443 21444@item monitor exit 21445Tell gdbserver to exit immediately. This command should be followed by 21446@code{disconnect} to close the debugging session. @code{gdbserver} will 21447detach from any attached processes and kill any processes it created. 21448Use @code{monitor exit} to terminate @code{gdbserver} at the end 21449of a multi-process mode debug session. 21450 21451@end table 21452 21453@subsection Tracepoints support in @code{gdbserver} 21454@cindex tracepoints support in @code{gdbserver} 21455 21456On some targets, @code{gdbserver} supports tracepoints, fast 21457tracepoints and static tracepoints. 21458 21459For fast or static tracepoints to work, a special library called the 21460@dfn{in-process agent} (IPA), must be loaded in the inferior process. 21461This library is built and distributed as an integral part of 21462@code{gdbserver}. In addition, support for static tracepoints 21463requires building the in-process agent library with static tracepoints 21464support. At present, the UST (LTTng Userspace Tracer, 21465@url{http://lttng.org/ust}) tracing engine is supported. This support 21466is automatically available if UST development headers are found in the 21467standard include path when @code{gdbserver} is built, or if 21468@code{gdbserver} was explicitly configured using @option{--with-ust} 21469to point at such headers. You can explicitly disable the support 21470using @option{--with-ust=no}. 21471 21472There are several ways to load the in-process agent in your program: 21473 21474@table @code 21475@item Specifying it as dependency at link time 21476 21477You can link your program dynamically with the in-process agent 21478library. On most systems, this is accomplished by adding 21479@code{-linproctrace} to the link command. 21480 21481@item Using the system's preloading mechanisms 21482 21483You can force loading the in-process agent at startup time by using 21484your system's support for preloading shared libraries. Many Unixes 21485support the concept of preloading user defined libraries. In most 21486cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so} 21487in the environment. See also the description of @code{gdbserver}'s 21488@option{--wrapper} command line option. 21489 21490@item Using @value{GDBN} to force loading the agent at run time 21491 21492On some systems, you can force the inferior to load a shared library, 21493by calling a dynamic loader function in the inferior that takes care 21494of dynamically looking up and loading a shared library. On most Unix 21495systems, the function is @code{dlopen}. You'll use the @code{call} 21496command for that. For example: 21497 21498@smallexample 21499(@value{GDBP}) call dlopen ("libinproctrace.so", ...) 21500@end smallexample 21501 21502Note that on most Unix systems, for the @code{dlopen} function to be 21503available, the program needs to be linked with @code{-ldl}. 21504@end table 21505 21506On systems that have a userspace dynamic loader, like most Unix 21507systems, when you connect to @code{gdbserver} using @code{target 21508remote}, you'll find that the program is stopped at the dynamic 21509loader's entry point, and no shared library has been loaded in the 21510program's address space yet, including the in-process agent. In that 21511case, before being able to use any of the fast or static tracepoints 21512features, you need to let the loader run and load the shared 21513libraries. The simplest way to do that is to run the program to the 21514main procedure. E.g., if debugging a C or C@t{++} program, start 21515@code{gdbserver} like so: 21516 21517@smallexample 21518$ gdbserver :9999 myprogram 21519@end smallexample 21520 21521Start GDB and connect to @code{gdbserver} like so, and run to main: 21522 21523@smallexample 21524$ gdb myprogram 21525(@value{GDBP}) target remote myhost:9999 215260x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2 21527(@value{GDBP}) b main 21528(@value{GDBP}) continue 21529@end smallexample 21530 21531The in-process tracing agent library should now be loaded into the 21532process; you can confirm it with the @code{info sharedlibrary} 21533command, which will list @file{libinproctrace.so} as loaded in the 21534process. You are now ready to install fast tracepoints, list static 21535tracepoint markers, probe static tracepoints markers, and start 21536tracing. 21537 21538@node Remote Configuration 21539@section Remote Configuration 21540 21541@kindex set remote 21542@kindex show remote 21543This section documents the configuration options available when 21544debugging remote programs. For the options related to the File I/O 21545extensions of the remote protocol, see @ref{system, 21546system-call-allowed}. 21547 21548@table @code 21549@item set remoteaddresssize @var{bits} 21550@cindex address size for remote targets 21551@cindex bits in remote address 21552Set the maximum size of address in a memory packet to the specified 21553number of bits. @value{GDBN} will mask off the address bits above 21554that number, when it passes addresses to the remote target. The 21555default value is the number of bits in the target's address. 21556 21557@item show remoteaddresssize 21558Show the current value of remote address size in bits. 21559 21560@item set serial baud @var{n} 21561@cindex baud rate for remote targets 21562Set the baud rate for the remote serial I/O to @var{n} baud. The 21563value is used to set the speed of the serial port used for debugging 21564remote targets. 21565 21566@item show serial baud 21567Show the current speed of the remote connection. 21568 21569@item set serial parity @var{parity} 21570Set the parity for the remote serial I/O. Supported values of @var{parity} are: 21571@code{even}, @code{none}, and @code{odd}. The default is @code{none}. 21572 21573@item show serial parity 21574Show the current parity of the serial port. 21575 21576@item set remotebreak 21577@cindex interrupt remote programs 21578@cindex BREAK signal instead of Ctrl-C 21579@anchor{set remotebreak} 21580If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote 21581when you type @kbd{Ctrl-c} to interrupt the program running 21582on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C} 21583character instead. The default is off, since most remote systems 21584expect to see @samp{Ctrl-C} as the interrupt signal. 21585 21586@item show remotebreak 21587Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to 21588interrupt the remote program. 21589 21590@item set remoteflow on 21591@itemx set remoteflow off 21592@kindex set remoteflow 21593Enable or disable hardware flow control (@code{RTS}/@code{CTS}) 21594on the serial port used to communicate to the remote target. 21595 21596@item show remoteflow 21597@kindex show remoteflow 21598Show the current setting of hardware flow control. 21599 21600@item set remotelogbase @var{base} 21601Set the base (a.k.a.@: radix) of logging serial protocol 21602communications to @var{base}. Supported values of @var{base} are: 21603@code{ascii}, @code{octal}, and @code{hex}. The default is 21604@code{ascii}. 21605 21606@item show remotelogbase 21607Show the current setting of the radix for logging remote serial 21608protocol. 21609 21610@item set remotelogfile @var{file} 21611@cindex record serial communications on file 21612Record remote serial communications on the named @var{file}. The 21613default is not to record at all. 21614 21615@item show remotelogfile 21616Show the current setting of the file name on which to record the 21617serial communications. 21618 21619@item set remotetimeout @var{num} 21620@cindex timeout for serial communications 21621@cindex remote timeout 21622Set the timeout limit to wait for the remote target to respond to 21623@var{num} seconds. The default is 2 seconds. 21624 21625@item show remotetimeout 21626Show the current number of seconds to wait for the remote target 21627responses. 21628 21629@cindex limit hardware breakpoints and watchpoints 21630@cindex remote target, limit break- and watchpoints 21631@anchor{set remote hardware-watchpoint-limit} 21632@anchor{set remote hardware-breakpoint-limit} 21633@item set remote hardware-watchpoint-limit @var{limit} 21634@itemx set remote hardware-breakpoint-limit @var{limit} 21635Restrict @value{GDBN} to using @var{limit} remote hardware watchpoints 21636or breakpoints. The @var{limit} can be set to 0 to disable hardware 21637watchpoints or breakpoints, and @code{unlimited} for unlimited 21638watchpoints or breakpoints. 21639 21640@item show remote hardware-watchpoint-limit 21641@itemx show remote hardware-breakpoint-limit 21642Show the current limit for the number of hardware watchpoints or 21643breakpoints that @value{GDBN} can use. 21644 21645@cindex limit hardware watchpoints length 21646@cindex remote target, limit watchpoints length 21647@anchor{set remote hardware-watchpoint-length-limit} 21648@item set remote hardware-watchpoint-length-limit @var{limit} 21649Restrict @value{GDBN} to using @var{limit} bytes for the maximum 21650length of a remote hardware watchpoint. A @var{limit} of 0 disables 21651hardware watchpoints and @code{unlimited} allows watchpoints of any 21652length. 21653 21654@item show remote hardware-watchpoint-length-limit 21655Show the current limit (in bytes) of the maximum length of 21656a remote hardware watchpoint. 21657 21658@item set remote exec-file @var{filename} 21659@itemx show remote exec-file 21660@anchor{set remote exec-file} 21661@cindex executable file, for remote target 21662Select the file used for @code{run} with @code{target 21663extended-remote}. This should be set to a filename valid on the 21664target system. If it is not set, the target will use a default 21665filename (e.g.@: the last program run). 21666 21667@item set remote interrupt-sequence 21668@cindex interrupt remote programs 21669@cindex select Ctrl-C, BREAK or BREAK-g 21670Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or 21671@samp{BREAK-g} as the 21672sequence to the remote target in order to interrupt the execution. 21673@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which 21674is high level of serial line for some certain time. 21675Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g. 21676It is @code{BREAK} signal followed by character @code{g}. 21677 21678@item show interrupt-sequence 21679Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g} 21680is sent by @value{GDBN} to interrupt the remote program. 21681@code{BREAK-g} is BREAK signal followed by @code{g} and 21682also known as Magic SysRq g. 21683 21684@item set remote interrupt-on-connect 21685@cindex send interrupt-sequence on start 21686Specify whether interrupt-sequence is sent to remote target when 21687@value{GDBN} connects to it. This is mostly needed when you debug 21688Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g} 21689which is known as Magic SysRq g in order to connect @value{GDBN}. 21690 21691@item show interrupt-on-connect 21692Show whether interrupt-sequence is sent 21693to remote target when @value{GDBN} connects to it. 21694 21695@kindex set tcp 21696@kindex show tcp 21697@item set tcp auto-retry on 21698@cindex auto-retry, for remote TCP target 21699Enable auto-retry for remote TCP connections. This is useful if the remote 21700debugging agent is launched in parallel with @value{GDBN}; there is a race 21701condition because the agent may not become ready to accept the connection 21702before @value{GDBN} attempts to connect. When auto-retry is 21703enabled, if the initial attempt to connect fails, @value{GDBN} reattempts 21704to establish the connection using the timeout specified by 21705@code{set tcp connect-timeout}. 21706 21707@item set tcp auto-retry off 21708Do not auto-retry failed TCP connections. 21709 21710@item show tcp auto-retry 21711Show the current auto-retry setting. 21712 21713@item set tcp connect-timeout @var{seconds} 21714@itemx set tcp connect-timeout unlimited 21715@cindex connection timeout, for remote TCP target 21716@cindex timeout, for remote target connection 21717Set the timeout for establishing a TCP connection to the remote target to 21718@var{seconds}. The timeout affects both polling to retry failed connections 21719(enabled by @code{set tcp auto-retry on}) and waiting for connections 21720that are merely slow to complete, and represents an approximate cumulative 21721value. If @var{seconds} is @code{unlimited}, there is no timeout and 21722@value{GDBN} will keep attempting to establish a connection forever, 21723unless interrupted with @kbd{Ctrl-c}. The default is 15 seconds. 21724 21725@item show tcp connect-timeout 21726Show the current connection timeout setting. 21727@end table 21728 21729@cindex remote packets, enabling and disabling 21730The @value{GDBN} remote protocol autodetects the packets supported by 21731your debugging stub. If you need to override the autodetection, you 21732can use these commands to enable or disable individual packets. Each 21733packet can be set to @samp{on} (the remote target supports this 21734packet), @samp{off} (the remote target does not support this packet), 21735or @samp{auto} (detect remote target support for this packet). They 21736all default to @samp{auto}. For more information about each packet, 21737see @ref{Remote Protocol}. 21738 21739During normal use, you should not have to use any of these commands. 21740If you do, that may be a bug in your remote debugging stub, or a bug 21741in @value{GDBN}. You may want to report the problem to the 21742@value{GDBN} developers. 21743 21744For each packet @var{name}, the command to enable or disable the 21745packet is @code{set remote @var{name}-packet}. The available settings 21746are: 21747 21748@multitable @columnfractions 0.28 0.32 0.25 21749@item Command Name 21750@tab Remote Packet 21751@tab Related Features 21752 21753@item @code{fetch-register} 21754@tab @code{p} 21755@tab @code{info registers} 21756 21757@item @code{set-register} 21758@tab @code{P} 21759@tab @code{set} 21760 21761@item @code{binary-download} 21762@tab @code{X} 21763@tab @code{load}, @code{set} 21764 21765@item @code{read-aux-vector} 21766@tab @code{qXfer:auxv:read} 21767@tab @code{info auxv} 21768 21769@item @code{symbol-lookup} 21770@tab @code{qSymbol} 21771@tab Detecting multiple threads 21772 21773@item @code{attach} 21774@tab @code{vAttach} 21775@tab @code{attach} 21776 21777@item @code{verbose-resume} 21778@tab @code{vCont} 21779@tab Stepping or resuming multiple threads 21780 21781@item @code{run} 21782@tab @code{vRun} 21783@tab @code{run} 21784 21785@item @code{software-breakpoint} 21786@tab @code{Z0} 21787@tab @code{break} 21788 21789@item @code{hardware-breakpoint} 21790@tab @code{Z1} 21791@tab @code{hbreak} 21792 21793@item @code{write-watchpoint} 21794@tab @code{Z2} 21795@tab @code{watch} 21796 21797@item @code{read-watchpoint} 21798@tab @code{Z3} 21799@tab @code{rwatch} 21800 21801@item @code{access-watchpoint} 21802@tab @code{Z4} 21803@tab @code{awatch} 21804 21805@item @code{pid-to-exec-file} 21806@tab @code{qXfer:exec-file:read} 21807@tab @code{attach}, @code{run} 21808 21809@item @code{target-features} 21810@tab @code{qXfer:features:read} 21811@tab @code{set architecture} 21812 21813@item @code{library-info} 21814@tab @code{qXfer:libraries:read} 21815@tab @code{info sharedlibrary} 21816 21817@item @code{memory-map} 21818@tab @code{qXfer:memory-map:read} 21819@tab @code{info mem} 21820 21821@item @code{read-sdata-object} 21822@tab @code{qXfer:sdata:read} 21823@tab @code{print $_sdata} 21824 21825@item @code{read-spu-object} 21826@tab @code{qXfer:spu:read} 21827@tab @code{info spu} 21828 21829@item @code{write-spu-object} 21830@tab @code{qXfer:spu:write} 21831@tab @code{info spu} 21832 21833@item @code{read-siginfo-object} 21834@tab @code{qXfer:siginfo:read} 21835@tab @code{print $_siginfo} 21836 21837@item @code{write-siginfo-object} 21838@tab @code{qXfer:siginfo:write} 21839@tab @code{set $_siginfo} 21840 21841@item @code{threads} 21842@tab @code{qXfer:threads:read} 21843@tab @code{info threads} 21844 21845@item @code{get-thread-local-@*storage-address} 21846@tab @code{qGetTLSAddr} 21847@tab Displaying @code{__thread} variables 21848 21849@item @code{get-thread-information-block-address} 21850@tab @code{qGetTIBAddr} 21851@tab Display MS-Windows Thread Information Block. 21852 21853@item @code{search-memory} 21854@tab @code{qSearch:memory} 21855@tab @code{find} 21856 21857@item @code{supported-packets} 21858@tab @code{qSupported} 21859@tab Remote communications parameters 21860 21861@item @code{catch-syscalls} 21862@tab @code{QCatchSyscalls} 21863@tab @code{catch syscall} 21864 21865@item @code{pass-signals} 21866@tab @code{QPassSignals} 21867@tab @code{handle @var{signal}} 21868 21869@item @code{program-signals} 21870@tab @code{QProgramSignals} 21871@tab @code{handle @var{signal}} 21872 21873@item @code{hostio-close-packet} 21874@tab @code{vFile:close} 21875@tab @code{remote get}, @code{remote put} 21876 21877@item @code{hostio-open-packet} 21878@tab @code{vFile:open} 21879@tab @code{remote get}, @code{remote put} 21880 21881@item @code{hostio-pread-packet} 21882@tab @code{vFile:pread} 21883@tab @code{remote get}, @code{remote put} 21884 21885@item @code{hostio-pwrite-packet} 21886@tab @code{vFile:pwrite} 21887@tab @code{remote get}, @code{remote put} 21888 21889@item @code{hostio-unlink-packet} 21890@tab @code{vFile:unlink} 21891@tab @code{remote delete} 21892 21893@item @code{hostio-readlink-packet} 21894@tab @code{vFile:readlink} 21895@tab Host I/O 21896 21897@item @code{hostio-fstat-packet} 21898@tab @code{vFile:fstat} 21899@tab Host I/O 21900 21901@item @code{hostio-setfs-packet} 21902@tab @code{vFile:setfs} 21903@tab Host I/O 21904 21905@item @code{noack-packet} 21906@tab @code{QStartNoAckMode} 21907@tab Packet acknowledgment 21908 21909@item @code{osdata} 21910@tab @code{qXfer:osdata:read} 21911@tab @code{info os} 21912 21913@item @code{query-attached} 21914@tab @code{qAttached} 21915@tab Querying remote process attach state. 21916 21917@item @code{trace-buffer-size} 21918@tab @code{QTBuffer:size} 21919@tab @code{set trace-buffer-size} 21920 21921@item @code{trace-status} 21922@tab @code{qTStatus} 21923@tab @code{tstatus} 21924 21925@item @code{traceframe-info} 21926@tab @code{qXfer:traceframe-info:read} 21927@tab Traceframe info 21928 21929@item @code{install-in-trace} 21930@tab @code{InstallInTrace} 21931@tab Install tracepoint in tracing 21932 21933@item @code{disable-randomization} 21934@tab @code{QDisableRandomization} 21935@tab @code{set disable-randomization} 21936 21937@item @code{startup-with-shell} 21938@tab @code{QStartupWithShell} 21939@tab @code{set startup-with-shell} 21940 21941@item @code{environment-hex-encoded} 21942@tab @code{QEnvironmentHexEncoded} 21943@tab @code{set environment} 21944 21945@item @code{environment-unset} 21946@tab @code{QEnvironmentUnset} 21947@tab @code{unset environment} 21948 21949@item @code{environment-reset} 21950@tab @code{QEnvironmentReset} 21951@tab @code{Reset the inferior environment (i.e., unset user-set variables)} 21952 21953@item @code{set-working-dir} 21954@tab @code{QSetWorkingDir} 21955@tab @code{set cwd} 21956 21957@item @code{conditional-breakpoints-packet} 21958@tab @code{Z0 and Z1} 21959@tab @code{Support for target-side breakpoint condition evaluation} 21960 21961@item @code{multiprocess-extensions} 21962@tab @code{multiprocess extensions} 21963@tab Debug multiple processes and remote process PID awareness 21964 21965@item @code{swbreak-feature} 21966@tab @code{swbreak stop reason} 21967@tab @code{break} 21968 21969@item @code{hwbreak-feature} 21970@tab @code{hwbreak stop reason} 21971@tab @code{hbreak} 21972 21973@item @code{fork-event-feature} 21974@tab @code{fork stop reason} 21975@tab @code{fork} 21976 21977@item @code{vfork-event-feature} 21978@tab @code{vfork stop reason} 21979@tab @code{vfork} 21980 21981@item @code{exec-event-feature} 21982@tab @code{exec stop reason} 21983@tab @code{exec} 21984 21985@item @code{thread-events} 21986@tab @code{QThreadEvents} 21987@tab Tracking thread lifetime. 21988 21989@item @code{no-resumed-stop-reply} 21990@tab @code{no resumed thread left stop reply} 21991@tab Tracking thread lifetime. 21992 21993@end multitable 21994 21995@node Remote Stub 21996@section Implementing a Remote Stub 21997 21998@cindex debugging stub, example 21999@cindex remote stub, example 22000@cindex stub example, remote debugging 22001The stub files provided with @value{GDBN} implement the target side of the 22002communication protocol, and the @value{GDBN} side is implemented in the 22003@value{GDBN} source file @file{remote.c}. Normally, you can simply allow 22004these subroutines to communicate, and ignore the details. (If you're 22005implementing your own stub file, you can still ignore the details: start 22006with one of the existing stub files. @file{sparc-stub.c} is the best 22007organized, and therefore the easiest to read.) 22008 22009@cindex remote serial debugging, overview 22010To debug a program running on another machine (the debugging 22011@dfn{target} machine), you must first arrange for all the usual 22012prerequisites for the program to run by itself. For example, for a C 22013program, you need: 22014 22015@enumerate 22016@item 22017A startup routine to set up the C runtime environment; these usually 22018have a name like @file{crt0}. The startup routine may be supplied by 22019your hardware supplier, or you may have to write your own. 22020 22021@item 22022A C subroutine library to support your program's 22023subroutine calls, notably managing input and output. 22024 22025@item 22026A way of getting your program to the other machine---for example, a 22027download program. These are often supplied by the hardware 22028manufacturer, but you may have to write your own from hardware 22029documentation. 22030@end enumerate 22031 22032The next step is to arrange for your program to use a serial port to 22033communicate with the machine where @value{GDBN} is running (the @dfn{host} 22034machine). In general terms, the scheme looks like this: 22035 22036@table @emph 22037@item On the host, 22038@value{GDBN} already understands how to use this protocol; when everything 22039else is set up, you can simply use the @samp{target remote} command 22040(@pxref{Targets,,Specifying a Debugging Target}). 22041 22042@item On the target, 22043you must link with your program a few special-purpose subroutines that 22044implement the @value{GDBN} remote serial protocol. The file containing these 22045subroutines is called a @dfn{debugging stub}. 22046 22047On certain remote targets, you can use an auxiliary program 22048@code{gdbserver} instead of linking a stub into your program. 22049@xref{Server,,Using the @code{gdbserver} Program}, for details. 22050@end table 22051 22052The debugging stub is specific to the architecture of the remote 22053machine; for example, use @file{sparc-stub.c} to debug programs on 22054@sc{sparc} boards. 22055 22056@cindex remote serial stub list 22057These working remote stubs are distributed with @value{GDBN}: 22058 22059@table @code 22060 22061@item i386-stub.c 22062@cindex @file{i386-stub.c} 22063@cindex Intel 22064@cindex i386 22065For Intel 386 and compatible architectures. 22066 22067@item m68k-stub.c 22068@cindex @file{m68k-stub.c} 22069@cindex Motorola 680x0 22070@cindex m680x0 22071For Motorola 680x0 architectures. 22072 22073@item sh-stub.c 22074@cindex @file{sh-stub.c} 22075@cindex Renesas 22076@cindex SH 22077For Renesas SH architectures. 22078 22079@item sparc-stub.c 22080@cindex @file{sparc-stub.c} 22081@cindex Sparc 22082For @sc{sparc} architectures. 22083 22084@item sparcl-stub.c 22085@cindex @file{sparcl-stub.c} 22086@cindex Fujitsu 22087@cindex SparcLite 22088For Fujitsu @sc{sparclite} architectures. 22089 22090@end table 22091 22092The @file{README} file in the @value{GDBN} distribution may list other 22093recently added stubs. 22094 22095@menu 22096* Stub Contents:: What the stub can do for you 22097* Bootstrapping:: What you must do for the stub 22098* Debug Session:: Putting it all together 22099@end menu 22100 22101@node Stub Contents 22102@subsection What the Stub Can Do for You 22103 22104@cindex remote serial stub 22105The debugging stub for your architecture supplies these three 22106subroutines: 22107 22108@table @code 22109@item set_debug_traps 22110@findex set_debug_traps 22111@cindex remote serial stub, initialization 22112This routine arranges for @code{handle_exception} to run when your 22113program stops. You must call this subroutine explicitly in your 22114program's startup code. 22115 22116@item handle_exception 22117@findex handle_exception 22118@cindex remote serial stub, main routine 22119This is the central workhorse, but your program never calls it 22120explicitly---the setup code arranges for @code{handle_exception} to 22121run when a trap is triggered. 22122 22123@code{handle_exception} takes control when your program stops during 22124execution (for example, on a breakpoint), and mediates communications 22125with @value{GDBN} on the host machine. This is where the communications 22126protocol is implemented; @code{handle_exception} acts as the @value{GDBN} 22127representative on the target machine. It begins by sending summary 22128information on the state of your program, then continues to execute, 22129retrieving and transmitting any information @value{GDBN} needs, until you 22130execute a @value{GDBN} command that makes your program resume; at that point, 22131@code{handle_exception} returns control to your own code on the target 22132machine. 22133 22134@item breakpoint 22135@cindex @code{breakpoint} subroutine, remote 22136Use this auxiliary subroutine to make your program contain a 22137breakpoint. Depending on the particular situation, this may be the only 22138way for @value{GDBN} to get control. For instance, if your target 22139machine has some sort of interrupt button, you won't need to call this; 22140pressing the interrupt button transfers control to 22141@code{handle_exception}---in effect, to @value{GDBN}. On some machines, 22142simply receiving characters on the serial port may also trigger a trap; 22143again, in that situation, you don't need to call @code{breakpoint} from 22144your own program---simply running @samp{target remote} from the host 22145@value{GDBN} session gets control. 22146 22147Call @code{breakpoint} if none of these is true, or if you simply want 22148to make certain your program stops at a predetermined point for the 22149start of your debugging session. 22150@end table 22151 22152@node Bootstrapping 22153@subsection What You Must Do for the Stub 22154 22155@cindex remote stub, support routines 22156The debugging stubs that come with @value{GDBN} are set up for a particular 22157chip architecture, but they have no information about the rest of your 22158debugging target machine. 22159 22160First of all you need to tell the stub how to communicate with the 22161serial port. 22162 22163@table @code 22164@item int getDebugChar() 22165@findex getDebugChar 22166Write this subroutine to read a single character from the serial port. 22167It may be identical to @code{getchar} for your target system; a 22168different name is used to allow you to distinguish the two if you wish. 22169 22170@item void putDebugChar(int) 22171@findex putDebugChar 22172Write this subroutine to write a single character to the serial port. 22173It may be identical to @code{putchar} for your target system; a 22174different name is used to allow you to distinguish the two if you wish. 22175@end table 22176 22177@cindex control C, and remote debugging 22178@cindex interrupting remote targets 22179If you want @value{GDBN} to be able to stop your program while it is 22180running, you need to use an interrupt-driven serial driver, and arrange 22181for it to stop when it receives a @code{^C} (@samp{\003}, the control-C 22182character). That is the character which @value{GDBN} uses to tell the 22183remote system to stop. 22184 22185Getting the debugging target to return the proper status to @value{GDBN} 22186probably requires changes to the standard stub; one quick and dirty way 22187is to just execute a breakpoint instruction (the ``dirty'' part is that 22188@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}). 22189 22190Other routines you need to supply are: 22191 22192@table @code 22193@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address}) 22194@findex exceptionHandler 22195Write this function to install @var{exception_address} in the exception 22196handling tables. You need to do this because the stub does not have any 22197way of knowing what the exception handling tables on your target system 22198are like (for example, the processor's table might be in @sc{rom}, 22199containing entries which point to a table in @sc{ram}). 22200The @var{exception_number} specifies the exception which should be changed; 22201its meaning is architecture-dependent (for example, different numbers 22202might represent divide by zero, misaligned access, etc). When this 22203exception occurs, control should be transferred directly to 22204@var{exception_address}, and the processor state (stack, registers, 22205and so on) should be just as it is when a processor exception occurs. So if 22206you want to use a jump instruction to reach @var{exception_address}, it 22207should be a simple jump, not a jump to subroutine. 22208 22209For the 386, @var{exception_address} should be installed as an interrupt 22210gate so that interrupts are masked while the handler runs. The gate 22211should be at privilege level 0 (the most privileged level). The 22212@sc{sparc} and 68k stubs are able to mask interrupts themselves without 22213help from @code{exceptionHandler}. 22214 22215@item void flush_i_cache() 22216@findex flush_i_cache 22217On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the 22218instruction cache, if any, on your target machine. If there is no 22219instruction cache, this subroutine may be a no-op. 22220 22221On target machines that have instruction caches, @value{GDBN} requires this 22222function to make certain that the state of your program is stable. 22223@end table 22224 22225@noindent 22226You must also make sure this library routine is available: 22227 22228@table @code 22229@item void *memset(void *, int, int) 22230@findex memset 22231This is the standard library function @code{memset} that sets an area of 22232memory to a known value. If you have one of the free versions of 22233@code{libc.a}, @code{memset} can be found there; otherwise, you must 22234either obtain it from your hardware manufacturer, or write your own. 22235@end table 22236 22237If you do not use the GNU C compiler, you may need other standard 22238library subroutines as well; this varies from one stub to another, 22239but in general the stubs are likely to use any of the common library 22240subroutines which @code{@value{NGCC}} generates as inline code. 22241 22242 22243@node Debug Session 22244@subsection Putting it All Together 22245 22246@cindex remote serial debugging summary 22247In summary, when your program is ready to debug, you must follow these 22248steps. 22249 22250@enumerate 22251@item 22252Make sure you have defined the supporting low-level routines 22253(@pxref{Bootstrapping,,What You Must Do for the Stub}): 22254@display 22255@code{getDebugChar}, @code{putDebugChar}, 22256@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}. 22257@end display 22258 22259@item 22260Insert these lines in your program's startup code, before the main 22261procedure is called: 22262 22263@smallexample 22264set_debug_traps(); 22265breakpoint(); 22266@end smallexample 22267 22268On some machines, when a breakpoint trap is raised, the hardware 22269automatically makes the PC point to the instruction after the 22270breakpoint. If your machine doesn't do that, you may need to adjust 22271@code{handle_exception} to arrange for it to return to the instruction 22272after the breakpoint on this first invocation, so that your program 22273doesn't keep hitting the initial breakpoint instead of making 22274progress. 22275 22276@item 22277For the 680x0 stub only, you need to provide a variable called 22278@code{exceptionHook}. Normally you just use: 22279 22280@smallexample 22281void (*exceptionHook)() = 0; 22282@end smallexample 22283 22284@noindent 22285but if before calling @code{set_debug_traps}, you set it to point to a 22286function in your program, that function is called when 22287@code{@value{GDBN}} continues after stopping on a trap (for example, bus 22288error). The function indicated by @code{exceptionHook} is called with 22289one parameter: an @code{int} which is the exception number. 22290 22291@item 22292Compile and link together: your program, the @value{GDBN} debugging stub for 22293your target architecture, and the supporting subroutines. 22294 22295@item 22296Make sure you have a serial connection between your target machine and 22297the @value{GDBN} host, and identify the serial port on the host. 22298 22299@item 22300@c The "remote" target now provides a `load' command, so we should 22301@c document that. FIXME. 22302Download your program to your target machine (or get it there by 22303whatever means the manufacturer provides), and start it. 22304 22305@item 22306Start @value{GDBN} on the host, and connect to the target 22307(@pxref{Connecting,,Connecting to a Remote Target}). 22308 22309@end enumerate 22310 22311@node Configurations 22312@chapter Configuration-Specific Information 22313 22314While nearly all @value{GDBN} commands are available for all native and 22315cross versions of the debugger, there are some exceptions. This chapter 22316describes things that are only available in certain configurations. 22317 22318There are three major categories of configurations: native 22319configurations, where the host and target are the same, embedded 22320operating system configurations, which are usually the same for several 22321different processor architectures, and bare embedded processors, which 22322are quite different from each other. 22323 22324@menu 22325* Native:: 22326* Embedded OS:: 22327* Embedded Processors:: 22328* Architectures:: 22329@end menu 22330 22331@node Native 22332@section Native 22333 22334This section describes details specific to particular native 22335configurations. 22336 22337@menu 22338* BSD libkvm Interface:: Debugging BSD kernel memory images 22339* Process Information:: Process information 22340* DJGPP Native:: Features specific to the DJGPP port 22341* Cygwin Native:: Features specific to the Cygwin port 22342* Hurd Native:: Features specific to @sc{gnu} Hurd 22343* Darwin:: Features specific to Darwin 22344* FreeBSD:: Features specific to FreeBSD 22345@end menu 22346 22347@node BSD libkvm Interface 22348@subsection BSD libkvm Interface 22349 22350@cindex libkvm 22351@cindex kernel memory image 22352@cindex kernel crash dump 22353 22354BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory 22355interface that provides a uniform interface for accessing kernel virtual 22356memory images, including live systems and crash dumps. @value{GDBN} 22357uses this interface to allow you to debug live kernels and kernel crash 22358dumps on many native BSD configurations. This is implemented as a 22359special @code{kvm} debugging target. For debugging a live system, load 22360the currently running kernel into @value{GDBN} and connect to the 22361@code{kvm} target: 22362 22363@smallexample 22364(@value{GDBP}) @b{target kvm} 22365@end smallexample 22366 22367For debugging crash dumps, provide the file name of the crash dump as an 22368argument: 22369 22370@smallexample 22371(@value{GDBP}) @b{target kvm /var/crash/bsd.0} 22372@end smallexample 22373 22374Once connected to the @code{kvm} target, the following commands are 22375available: 22376 22377@table @code 22378@kindex kvm 22379@item kvm pcb 22380Set current context from the @dfn{Process Control Block} (PCB) address. 22381 22382@item kvm proc 22383Set current context from proc address. This command isn't available on 22384modern FreeBSD systems. 22385@end table 22386 22387@node Process Information 22388@subsection Process Information 22389@cindex /proc 22390@cindex examine process image 22391@cindex process info via @file{/proc} 22392 22393Some operating systems provide interfaces to fetch additional 22394information about running processes beyond memory and per-thread 22395register state. If @value{GDBN} is configured for an operating system 22396with a supported interface, the command @code{info proc} is available 22397to report information about the process running your program, or about 22398any process running on your system. 22399 22400One supported interface is a facility called @samp{/proc} that can be 22401used to examine the image of a running process using file-system 22402subroutines. This facility is supported on @sc{gnu}/Linux and Solaris 22403systems. 22404 22405On FreeBSD systems, system control nodes are used to query process 22406information. 22407 22408In addition, some systems may provide additional process information 22409in core files. Note that a core file may include a subset of the 22410information available from a live process. Process information is 22411currently avaiable from cores created on @sc{gnu}/Linux and FreeBSD 22412systems. 22413 22414@table @code 22415@kindex info proc 22416@cindex process ID 22417@item info proc 22418@itemx info proc @var{process-id} 22419Summarize available information about a process. If a 22420process ID is specified by @var{process-id}, display information about 22421that process; otherwise display information about the program being 22422debugged. The summary includes the debugged process ID, the command 22423line used to invoke it, its current working directory, and its 22424executable file's absolute file name. 22425 22426On some systems, @var{process-id} can be of the form 22427@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID 22428within a process. If the optional @var{pid} part is missing, it means 22429a thread from the process being debugged (the leading @samp{/} still 22430needs to be present, or else @value{GDBN} will interpret the number as 22431a process ID rather than a thread ID). 22432 22433@item info proc cmdline 22434@cindex info proc cmdline 22435Show the original command line of the process. This command is 22436supported on @sc{gnu}/Linux and FreeBSD. 22437 22438@item info proc cwd 22439@cindex info proc cwd 22440Show the current working directory of the process. This command is 22441supported on @sc{gnu}/Linux and FreeBSD. 22442 22443@item info proc exe 22444@cindex info proc exe 22445Show the name of executable of the process. This command is supported 22446on @sc{gnu}/Linux and FreeBSD. 22447 22448@item info proc files 22449@cindex info proc files 22450Show the file descriptors open by the process. For each open file 22451descriptor, @value{GDBN} shows its number, type (file, directory, 22452character device, socket), file pointer offset, and the name of the 22453resource open on the descriptor. The resource name can be a file name 22454(for files, directories, and devices) or a protocol followed by socket 22455address (for network connections). This command is supported on 22456FreeBSD. 22457 22458This example shows the open file descriptors for a process using a 22459tty for standard input and output as well as two network sockets: 22460 22461@smallexample 22462(gdb) info proc files 22136 22463process 22136 22464Open files: 22465 22466 FD Type Offset Flags Name 22467 text file - r-------- /usr/bin/ssh 22468 ctty chr - rw------- /dev/pts/20 22469 cwd dir - r-------- /usr/home/john 22470 root dir - r-------- / 22471 0 chr 0x32933a4 rw------- /dev/pts/20 22472 1 chr 0x32933a4 rw------- /dev/pts/20 22473 2 chr 0x32933a4 rw------- /dev/pts/20 22474 3 socket 0x0 rw----n-- tcp4 10.0.1.2:53014 -> 10.0.1.10:22 22475 4 socket 0x0 rw------- unix stream:/tmp/ssh-FIt89oAzOn5f/agent.2456 22476@end smallexample 22477 22478@item info proc mappings 22479@cindex memory address space mappings 22480Report the memory address space ranges accessible in a process. On 22481Solaris and FreeBSD systems, each memory range includes information on 22482whether the process has read, write, or execute access rights to each 22483range. On @sc{gnu}/Linux and FreeBSD systems, each memory range 22484includes the object file which is mapped to that range. 22485 22486@item info proc stat 22487@itemx info proc status 22488@cindex process detailed status information 22489Show additional process-related information, including the user ID and 22490group ID; virtual memory usage; the signals that are pending, blocked, 22491and ignored; its TTY; its consumption of system and user time; its 22492stack size; its @samp{nice} value; etc. These commands are supported 22493on @sc{gnu}/Linux and FreeBSD. 22494 22495For @sc{gnu}/Linux systems, see the @samp{proc} man page for more 22496information (type @kbd{man 5 proc} from your shell prompt). 22497 22498For FreeBSD systems, @code{info proc stat} is an alias for @code{info 22499proc status}. 22500 22501@item info proc all 22502Show all the information about the process described under all of the 22503above @code{info proc} subcommands. 22504 22505@ignore 22506@comment These sub-options of 'info proc' were not included when 22507@comment procfs.c was re-written. Keep their descriptions around 22508@comment against the day when someone finds the time to put them back in. 22509@kindex info proc times 22510@item info proc times 22511Starting time, user CPU time, and system CPU time for your program and 22512its children. 22513 22514@kindex info proc id 22515@item info proc id 22516Report on the process IDs related to your program: its own process ID, 22517the ID of its parent, the process group ID, and the session ID. 22518@end ignore 22519 22520@item set procfs-trace 22521@kindex set procfs-trace 22522@cindex @code{procfs} API calls 22523This command enables and disables tracing of @code{procfs} API calls. 22524 22525@item show procfs-trace 22526@kindex show procfs-trace 22527Show the current state of @code{procfs} API call tracing. 22528 22529@item set procfs-file @var{file} 22530@kindex set procfs-file 22531Tell @value{GDBN} to write @code{procfs} API trace to the named 22532@var{file}. @value{GDBN} appends the trace info to the previous 22533contents of the file. The default is to display the trace on the 22534standard output. 22535 22536@item show procfs-file 22537@kindex show procfs-file 22538Show the file to which @code{procfs} API trace is written. 22539 22540@item proc-trace-entry 22541@itemx proc-trace-exit 22542@itemx proc-untrace-entry 22543@itemx proc-untrace-exit 22544@kindex proc-trace-entry 22545@kindex proc-trace-exit 22546@kindex proc-untrace-entry 22547@kindex proc-untrace-exit 22548These commands enable and disable tracing of entries into and exits 22549from the @code{syscall} interface. 22550 22551@item info pidlist 22552@kindex info pidlist 22553@cindex process list, QNX Neutrino 22554For QNX Neutrino only, this command displays the list of all the 22555processes and all the threads within each process. 22556 22557@item info meminfo 22558@kindex info meminfo 22559@cindex mapinfo list, QNX Neutrino 22560For QNX Neutrino only, this command displays the list of all mapinfos. 22561@end table 22562 22563@node DJGPP Native 22564@subsection Features for Debugging @sc{djgpp} Programs 22565@cindex @sc{djgpp} debugging 22566@cindex native @sc{djgpp} debugging 22567@cindex MS-DOS-specific commands 22568 22569@cindex DPMI 22570@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and 22571MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs 22572that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on 22573top of real-mode DOS systems and their emulations. 22574 22575@value{GDBN} supports native debugging of @sc{djgpp} programs, and 22576defines a few commands specific to the @sc{djgpp} port. This 22577subsection describes those commands. 22578 22579@table @code 22580@kindex info dos 22581@item info dos 22582This is a prefix of @sc{djgpp}-specific commands which print 22583information about the target system and important OS structures. 22584 22585@kindex sysinfo 22586@cindex MS-DOS system info 22587@cindex free memory information (MS-DOS) 22588@item info dos sysinfo 22589This command displays assorted information about the underlying 22590platform: the CPU type and features, the OS version and flavor, the 22591DPMI version, and the available conventional and DPMI memory. 22592 22593@cindex GDT 22594@cindex LDT 22595@cindex IDT 22596@cindex segment descriptor tables 22597@cindex descriptor tables display 22598@item info dos gdt 22599@itemx info dos ldt 22600@itemx info dos idt 22601These 3 commands display entries from, respectively, Global, Local, 22602and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor 22603tables are data structures which store a descriptor for each segment 22604that is currently in use. The segment's selector is an index into a 22605descriptor table; the table entry for that index holds the 22606descriptor's base address and limit, and its attributes and access 22607rights. 22608 22609A typical @sc{djgpp} program uses 3 segments: a code segment, a data 22610segment (used for both data and the stack), and a DOS segment (which 22611allows access to DOS/BIOS data structures and absolute addresses in 22612conventional memory). However, the DPMI host will usually define 22613additional segments in order to support the DPMI environment. 22614 22615@cindex garbled pointers 22616These commands allow to display entries from the descriptor tables. 22617Without an argument, all entries from the specified table are 22618displayed. An argument, which should be an integer expression, means 22619display a single entry whose index is given by the argument. For 22620example, here's a convenient way to display information about the 22621debugged program's data segment: 22622 22623@smallexample 22624@exdent @code{(@value{GDBP}) info dos ldt $ds} 22625@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)} 22626@end smallexample 22627 22628@noindent 22629This comes in handy when you want to see whether a pointer is outside 22630the data segment's limit (i.e.@: @dfn{garbled}). 22631 22632@cindex page tables display (MS-DOS) 22633@item info dos pde 22634@itemx info dos pte 22635These two commands display entries from, respectively, the Page 22636Directory and the Page Tables. Page Directories and Page Tables are 22637data structures which control how virtual memory addresses are mapped 22638into physical addresses. A Page Table includes an entry for every 22639page of memory that is mapped into the program's address space; there 22640may be several Page Tables, each one holding up to 4096 entries. A 22641Page Directory has up to 4096 entries, one each for every Page Table 22642that is currently in use. 22643 22644Without an argument, @kbd{info dos pde} displays the entire Page 22645Directory, and @kbd{info dos pte} displays all the entries in all of 22646the Page Tables. An argument, an integer expression, given to the 22647@kbd{info dos pde} command means display only that entry from the Page 22648Directory table. An argument given to the @kbd{info dos pte} command 22649means display entries from a single Page Table, the one pointed to by 22650the specified entry in the Page Directory. 22651 22652@cindex direct memory access (DMA) on MS-DOS 22653These commands are useful when your program uses @dfn{DMA} (Direct 22654Memory Access), which needs physical addresses to program the DMA 22655controller. 22656 22657These commands are supported only with some DPMI servers. 22658 22659@cindex physical address from linear address 22660@item info dos address-pte @var{addr} 22661This command displays the Page Table entry for a specified linear 22662address. The argument @var{addr} is a linear address which should 22663already have the appropriate segment's base address added to it, 22664because this command accepts addresses which may belong to @emph{any} 22665segment. For example, here's how to display the Page Table entry for 22666the page where a variable @code{i} is stored: 22667 22668@smallexample 22669@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i} 22670@exdent @code{Page Table entry for address 0x11a00d30:} 22671@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30} 22672@end smallexample 22673 22674@noindent 22675This says that @code{i} is stored at offset @code{0xd30} from the page 22676whose physical base address is @code{0x02698000}, and shows all the 22677attributes of that page. 22678 22679Note that you must cast the addresses of variables to a @code{char *}, 22680since otherwise the value of @code{__djgpp_base_address}, the base 22681address of all variables and functions in a @sc{djgpp} program, will 22682be added using the rules of C pointer arithmetics: if @code{i} is 22683declared an @code{int}, @value{GDBN} will add 4 times the value of 22684@code{__djgpp_base_address} to the address of @code{i}. 22685 22686Here's another example, it displays the Page Table entry for the 22687transfer buffer: 22688 22689@smallexample 22690@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)} 22691@exdent @code{Page Table entry for address 0x29110:} 22692@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110} 22693@end smallexample 22694 22695@noindent 22696(The @code{+ 3} offset is because the transfer buffer's address is the 226973rd member of the @code{_go32_info_block} structure.) The output 22698clearly shows that this DPMI server maps the addresses in conventional 22699memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and 22700linear (@code{0x29110}) addresses are identical. 22701 22702This command is supported only with some DPMI servers. 22703@end table 22704 22705@cindex DOS serial data link, remote debugging 22706In addition to native debugging, the DJGPP port supports remote 22707debugging via a serial data link. The following commands are specific 22708to remote serial debugging in the DJGPP port of @value{GDBN}. 22709 22710@table @code 22711@kindex set com1base 22712@kindex set com1irq 22713@kindex set com2base 22714@kindex set com2irq 22715@kindex set com3base 22716@kindex set com3irq 22717@kindex set com4base 22718@kindex set com4irq 22719@item set com1base @var{addr} 22720This command sets the base I/O port address of the @file{COM1} serial 22721port. 22722 22723@item set com1irq @var{irq} 22724This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use 22725for the @file{COM1} serial port. 22726 22727There are similar commands @samp{set com2base}, @samp{set com3irq}, 22728etc.@: for setting the port address and the @code{IRQ} lines for the 22729other 3 COM ports. 22730 22731@kindex show com1base 22732@kindex show com1irq 22733@kindex show com2base 22734@kindex show com2irq 22735@kindex show com3base 22736@kindex show com3irq 22737@kindex show com4base 22738@kindex show com4irq 22739The related commands @samp{show com1base}, @samp{show com1irq} etc.@: 22740display the current settings of the base address and the @code{IRQ} 22741lines used by the COM ports. 22742 22743@item info serial 22744@kindex info serial 22745@cindex DOS serial port status 22746This command prints the status of the 4 DOS serial ports. For each 22747port, it prints whether it's active or not, its I/O base address and 22748IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the 22749counts of various errors encountered so far. 22750@end table 22751 22752 22753@node Cygwin Native 22754@subsection Features for Debugging MS Windows PE Executables 22755@cindex MS Windows debugging 22756@cindex native Cygwin debugging 22757@cindex Cygwin-specific commands 22758 22759@value{GDBN} supports native debugging of MS Windows programs, including 22760DLLs with and without symbolic debugging information. 22761 22762@cindex Ctrl-BREAK, MS-Windows 22763@cindex interrupt debuggee on MS-Windows 22764MS-Windows programs that call @code{SetConsoleMode} to switch off the 22765special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted 22766by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows 22767supports @kbd{C-@key{BREAK}} as an alternative interrupt key 22768sequence, which can be used to interrupt the debuggee even if it 22769ignores @kbd{C-c}. 22770 22771There are various additional Cygwin-specific commands, described in 22772this section. Working with DLLs that have no debugging symbols is 22773described in @ref{Non-debug DLL Symbols}. 22774 22775@table @code 22776@kindex info w32 22777@item info w32 22778This is a prefix of MS Windows-specific commands which print 22779information about the target system and important OS structures. 22780 22781@item info w32 selector 22782This command displays information returned by 22783the Win32 API @code{GetThreadSelectorEntry} function. 22784It takes an optional argument that is evaluated to 22785a long value to give the information about this given selector. 22786Without argument, this command displays information 22787about the six segment registers. 22788 22789@item info w32 thread-information-block 22790This command displays thread specific information stored in the 22791Thread Information Block (readable on the X86 CPU family using @code{$fs} 22792selector for 32-bit programs and @code{$gs} for 64-bit programs). 22793 22794@kindex signal-event 22795@item signal-event @var{id} 22796This command signals an event with user-provided @var{id}. Used to resume 22797crashing process when attached to it using MS-Windows JIT debugging (AeDebug). 22798 22799To use it, create or edit the following keys in 22800@code{HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug} and/or 22801@code{HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug} 22802(for x86_64 versions): 22803 22804@itemize @minus 22805@item 22806@code{Debugger} (REG_SZ) --- a command to launch the debugger. 22807Suggested command is: @code{@var{fully-qualified-path-to-gdb.exe} -ex 22808"attach %ld" -ex "signal-event %ld" -ex "continue"}. 22809 22810The first @code{%ld} will be replaced by the process ID of the 22811crashing process, the second @code{%ld} will be replaced by the ID of 22812the event that blocks the crashing process, waiting for @value{GDBN} 22813to attach. 22814 22815@item 22816@code{Auto} (REG_SZ) --- either @code{1} or @code{0}. @code{1} will 22817make the system run debugger specified by the Debugger key 22818automatically, @code{0} will cause a dialog box with ``OK'' and 22819``Cancel'' buttons to appear, which allows the user to either 22820terminate the crashing process (OK) or debug it (Cancel). 22821@end itemize 22822 22823@kindex set cygwin-exceptions 22824@cindex debugging the Cygwin DLL 22825@cindex Cygwin DLL, debugging 22826@item set cygwin-exceptions @var{mode} 22827If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that 22828happen inside the Cygwin DLL. If @var{mode} is @code{off}, 22829@value{GDBN} will delay recognition of exceptions, and may ignore some 22830exceptions which seem to be caused by internal Cygwin DLL 22831``bookkeeping''. This option is meant primarily for debugging the 22832Cygwin DLL itself; the default value is @code{off} to avoid annoying 22833@value{GDBN} users with false @code{SIGSEGV} signals. 22834 22835@kindex show cygwin-exceptions 22836@item show cygwin-exceptions 22837Displays whether @value{GDBN} will break on exceptions that happen 22838inside the Cygwin DLL itself. 22839 22840@kindex set new-console 22841@item set new-console @var{mode} 22842If @var{mode} is @code{on} the debuggee will 22843be started in a new console on next start. 22844If @var{mode} is @code{off}, the debuggee will 22845be started in the same console as the debugger. 22846 22847@kindex show new-console 22848@item show new-console 22849Displays whether a new console is used 22850when the debuggee is started. 22851 22852@kindex set new-group 22853@item set new-group @var{mode} 22854This boolean value controls whether the debuggee should 22855start a new group or stay in the same group as the debugger. 22856This affects the way the Windows OS handles 22857@samp{Ctrl-C}. 22858 22859@kindex show new-group 22860@item show new-group 22861Displays current value of new-group boolean. 22862 22863@kindex set debugevents 22864@item set debugevents 22865This boolean value adds debug output concerning kernel events related 22866to the debuggee seen by the debugger. This includes events that 22867signal thread and process creation and exit, DLL loading and 22868unloading, console interrupts, and debugging messages produced by the 22869Windows @code{OutputDebugString} API call. 22870 22871@kindex set debugexec 22872@item set debugexec 22873This boolean value adds debug output concerning execute events 22874(such as resume thread) seen by the debugger. 22875 22876@kindex set debugexceptions 22877@item set debugexceptions 22878This boolean value adds debug output concerning exceptions in the 22879debuggee seen by the debugger. 22880 22881@kindex set debugmemory 22882@item set debugmemory 22883This boolean value adds debug output concerning debuggee memory reads 22884and writes by the debugger. 22885 22886@kindex set shell 22887@item set shell 22888This boolean values specifies whether the debuggee is called 22889via a shell or directly (default value is on). 22890 22891@kindex show shell 22892@item show shell 22893Displays if the debuggee will be started with a shell. 22894 22895@end table 22896 22897@menu 22898* Non-debug DLL Symbols:: Support for DLLs without debugging symbols 22899@end menu 22900 22901@node Non-debug DLL Symbols 22902@subsubsection Support for DLLs without Debugging Symbols 22903@cindex DLLs with no debugging symbols 22904@cindex Minimal symbols and DLLs 22905 22906Very often on windows, some of the DLLs that your program relies on do 22907not include symbolic debugging information (for example, 22908@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging 22909symbols in a DLL, it relies on the minimal amount of symbolic 22910information contained in the DLL's export table. This section 22911describes working with such symbols, known internally to @value{GDBN} as 22912``minimal symbols''. 22913 22914Note that before the debugged program has started execution, no DLLs 22915will have been loaded. The easiest way around this problem is simply to 22916start the program --- either by setting a breakpoint or letting the 22917program run once to completion. 22918 22919@subsubsection DLL Name Prefixes 22920 22921In keeping with the naming conventions used by the Microsoft debugging 22922tools, DLL export symbols are made available with a prefix based on the 22923DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is 22924also entered into the symbol table, so @code{CreateFileA} is often 22925sufficient. In some cases there will be name clashes within a program 22926(particularly if the executable itself includes full debugging symbols) 22927necessitating the use of the fully qualified name when referring to the 22928contents of the DLL. Use single-quotes around the name to avoid the 22929exclamation mark (``!'') being interpreted as a language operator. 22930 22931Note that the internal name of the DLL may be all upper-case, even 22932though the file name of the DLL is lower-case, or vice-versa. Since 22933symbols within @value{GDBN} are @emph{case-sensitive} this may cause 22934some confusion. If in doubt, try the @code{info functions} and 22935@code{info variables} commands or even @code{maint print msymbols} 22936(@pxref{Symbols}). Here's an example: 22937 22938@smallexample 22939(@value{GDBP}) info function CreateFileA 22940All functions matching regular expression "CreateFileA": 22941 22942Non-debugging symbols: 229430x77e885f4 CreateFileA 229440x77e885f4 KERNEL32!CreateFileA 22945@end smallexample 22946 22947@smallexample 22948(@value{GDBP}) info function ! 22949All functions matching regular expression "!": 22950 22951Non-debugging symbols: 229520x6100114c cygwin1!__assert 229530x61004034 cygwin1!_dll_crt0@@0 229540x61004240 cygwin1!dll_crt0(per_process *) 22955[etc...] 22956@end smallexample 22957 22958@subsubsection Working with Minimal Symbols 22959 22960Symbols extracted from a DLL's export table do not contain very much 22961type information. All that @value{GDBN} can do is guess whether a symbol 22962refers to a function or variable depending on the linker section that 22963contains the symbol. Also note that the actual contents of the memory 22964contained in a DLL are not available unless the program is running. This 22965means that you cannot examine the contents of a variable or disassemble 22966a function within a DLL without a running program. 22967 22968Variables are generally treated as pointers and dereferenced 22969automatically. For this reason, it is often necessary to prefix a 22970variable name with the address-of operator (``&'') and provide explicit 22971type information in the command. Here's an example of the type of 22972problem: 22973 22974@smallexample 22975(@value{GDBP}) print 'cygwin1!__argv' 22976'cygwin1!__argv' has unknown type; cast it to its declared type 22977@end smallexample 22978 22979@smallexample 22980(@value{GDBP}) x 'cygwin1!__argv' 22981'cygwin1!__argv' has unknown type; cast it to its declared type 22982@end smallexample 22983 22984And two possible solutions: 22985 22986@smallexample 22987(@value{GDBP}) print ((char **)'cygwin1!__argv')[0] 22988$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram" 22989@end smallexample 22990 22991@smallexample 22992(@value{GDBP}) x/2x &'cygwin1!__argv' 229930x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000 22994(@value{GDBP}) x/x 0x10021608 229950x10021608: 0x0022fd98 22996(@value{GDBP}) x/s 0x0022fd98 229970x22fd98: "/cygdrive/c/mydirectory/myprogram" 22998@end smallexample 22999 23000Setting a break point within a DLL is possible even before the program 23001starts execution. However, under these circumstances, @value{GDBN} can't 23002examine the initial instructions of the function in order to skip the 23003function's frame set-up code. You can work around this by using ``*&'' 23004to set the breakpoint at a raw memory address: 23005 23006@smallexample 23007(@value{GDBP}) break *&'python22!PyOS_Readline' 23008Breakpoint 1 at 0x1e04eff0 23009@end smallexample 23010 23011The author of these extensions is not entirely convinced that setting a 23012break point within a shared DLL like @file{kernel32.dll} is completely 23013safe. 23014 23015@node Hurd Native 23016@subsection Commands Specific to @sc{gnu} Hurd Systems 23017@cindex @sc{gnu} Hurd debugging 23018 23019This subsection describes @value{GDBN} commands specific to the 23020@sc{gnu} Hurd native debugging. 23021 23022@table @code 23023@item set signals 23024@itemx set sigs 23025@kindex set signals@r{, Hurd command} 23026@kindex set sigs@r{, Hurd command} 23027This command toggles the state of inferior signal interception by 23028@value{GDBN}. Mach exceptions, such as breakpoint traps, are not 23029affected by this command. @code{sigs} is a shorthand alias for 23030@code{signals}. 23031 23032@item show signals 23033@itemx show sigs 23034@kindex show signals@r{, Hurd command} 23035@kindex show sigs@r{, Hurd command} 23036Show the current state of intercepting inferior's signals. 23037 23038@item set signal-thread 23039@itemx set sigthread 23040@kindex set signal-thread 23041@kindex set sigthread 23042This command tells @value{GDBN} which thread is the @code{libc} signal 23043thread. That thread is run when a signal is delivered to a running 23044process. @code{set sigthread} is the shorthand alias of @code{set 23045signal-thread}. 23046 23047@item show signal-thread 23048@itemx show sigthread 23049@kindex show signal-thread 23050@kindex show sigthread 23051These two commands show which thread will run when the inferior is 23052delivered a signal. 23053 23054@item set stopped 23055@kindex set stopped@r{, Hurd command} 23056This commands tells @value{GDBN} that the inferior process is stopped, 23057as with the @code{SIGSTOP} signal. The stopped process can be 23058continued by delivering a signal to it. 23059 23060@item show stopped 23061@kindex show stopped@r{, Hurd command} 23062This command shows whether @value{GDBN} thinks the debuggee is 23063stopped. 23064 23065@item set exceptions 23066@kindex set exceptions@r{, Hurd command} 23067Use this command to turn off trapping of exceptions in the inferior. 23068When exception trapping is off, neither breakpoints nor 23069single-stepping will work. To restore the default, set exception 23070trapping on. 23071 23072@item show exceptions 23073@kindex show exceptions@r{, Hurd command} 23074Show the current state of trapping exceptions in the inferior. 23075 23076@item set task pause 23077@kindex set task@r{, Hurd commands} 23078@cindex task attributes (@sc{gnu} Hurd) 23079@cindex pause current task (@sc{gnu} Hurd) 23080This command toggles task suspension when @value{GDBN} has control. 23081Setting it to on takes effect immediately, and the task is suspended 23082whenever @value{GDBN} gets control. Setting it to off will take 23083effect the next time the inferior is continued. If this option is set 23084to off, you can use @code{set thread default pause on} or @code{set 23085thread pause on} (see below) to pause individual threads. 23086 23087@item show task pause 23088@kindex show task@r{, Hurd commands} 23089Show the current state of task suspension. 23090 23091@item set task detach-suspend-count 23092@cindex task suspend count 23093@cindex detach from task, @sc{gnu} Hurd 23094This command sets the suspend count the task will be left with when 23095@value{GDBN} detaches from it. 23096 23097@item show task detach-suspend-count 23098Show the suspend count the task will be left with when detaching. 23099 23100@item set task exception-port 23101@itemx set task excp 23102@cindex task exception port, @sc{gnu} Hurd 23103This command sets the task exception port to which @value{GDBN} will 23104forward exceptions. The argument should be the value of the @dfn{send 23105rights} of the task. @code{set task excp} is a shorthand alias. 23106 23107@item set noninvasive 23108@cindex noninvasive task options 23109This command switches @value{GDBN} to a mode that is the least 23110invasive as far as interfering with the inferior is concerned. This 23111is the same as using @code{set task pause}, @code{set exceptions}, and 23112@code{set signals} to values opposite to the defaults. 23113 23114@item info send-rights 23115@itemx info receive-rights 23116@itemx info port-rights 23117@itemx info port-sets 23118@itemx info dead-names 23119@itemx info ports 23120@itemx info psets 23121@cindex send rights, @sc{gnu} Hurd 23122@cindex receive rights, @sc{gnu} Hurd 23123@cindex port rights, @sc{gnu} Hurd 23124@cindex port sets, @sc{gnu} Hurd 23125@cindex dead names, @sc{gnu} Hurd 23126These commands display information about, respectively, send rights, 23127receive rights, port rights, port sets, and dead names of a task. 23128There are also shorthand aliases: @code{info ports} for @code{info 23129port-rights} and @code{info psets} for @code{info port-sets}. 23130 23131@item set thread pause 23132@kindex set thread@r{, Hurd command} 23133@cindex thread properties, @sc{gnu} Hurd 23134@cindex pause current thread (@sc{gnu} Hurd) 23135This command toggles current thread suspension when @value{GDBN} has 23136control. Setting it to on takes effect immediately, and the current 23137thread is suspended whenever @value{GDBN} gets control. Setting it to 23138off will take effect the next time the inferior is continued. 23139Normally, this command has no effect, since when @value{GDBN} has 23140control, the whole task is suspended. However, if you used @code{set 23141task pause off} (see above), this command comes in handy to suspend 23142only the current thread. 23143 23144@item show thread pause 23145@kindex show thread@r{, Hurd command} 23146This command shows the state of current thread suspension. 23147 23148@item set thread run 23149This command sets whether the current thread is allowed to run. 23150 23151@item show thread run 23152Show whether the current thread is allowed to run. 23153 23154@item set thread detach-suspend-count 23155@cindex thread suspend count, @sc{gnu} Hurd 23156@cindex detach from thread, @sc{gnu} Hurd 23157This command sets the suspend count @value{GDBN} will leave on a 23158thread when detaching. This number is relative to the suspend count 23159found by @value{GDBN} when it notices the thread; use @code{set thread 23160takeover-suspend-count} to force it to an absolute value. 23161 23162@item show thread detach-suspend-count 23163Show the suspend count @value{GDBN} will leave on the thread when 23164detaching. 23165 23166@item set thread exception-port 23167@itemx set thread excp 23168Set the thread exception port to which to forward exceptions. This 23169overrides the port set by @code{set task exception-port} (see above). 23170@code{set thread excp} is the shorthand alias. 23171 23172@item set thread takeover-suspend-count 23173Normally, @value{GDBN}'s thread suspend counts are relative to the 23174value @value{GDBN} finds when it notices each thread. This command 23175changes the suspend counts to be absolute instead. 23176 23177@item set thread default 23178@itemx show thread default 23179@cindex thread default settings, @sc{gnu} Hurd 23180Each of the above @code{set thread} commands has a @code{set thread 23181default} counterpart (e.g., @code{set thread default pause}, @code{set 23182thread default exception-port}, etc.). The @code{thread default} 23183variety of commands sets the default thread properties for all 23184threads; you can then change the properties of individual threads with 23185the non-default commands. 23186@end table 23187 23188@node Darwin 23189@subsection Darwin 23190@cindex Darwin 23191 23192@value{GDBN} provides the following commands specific to the Darwin target: 23193 23194@table @code 23195@item set debug darwin @var{num} 23196@kindex set debug darwin 23197When set to a non zero value, enables debugging messages specific to 23198the Darwin support. Higher values produce more verbose output. 23199 23200@item show debug darwin 23201@kindex show debug darwin 23202Show the current state of Darwin messages. 23203 23204@item set debug mach-o @var{num} 23205@kindex set debug mach-o 23206When set to a non zero value, enables debugging messages while 23207@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the 23208file format used on Darwin for object and executable files.) Higher 23209values produce more verbose output. This is a command to diagnose 23210problems internal to @value{GDBN} and should not be needed in normal 23211usage. 23212 23213@item show debug mach-o 23214@kindex show debug mach-o 23215Show the current state of Mach-O file messages. 23216 23217@item set mach-exceptions on 23218@itemx set mach-exceptions off 23219@kindex set mach-exceptions 23220On Darwin, faults are first reported as a Mach exception and are then 23221mapped to a Posix signal. Use this command to turn on trapping of 23222Mach exceptions in the inferior. This might be sometimes useful to 23223better understand the cause of a fault. The default is off. 23224 23225@item show mach-exceptions 23226@kindex show mach-exceptions 23227Show the current state of exceptions trapping. 23228@end table 23229 23230@node FreeBSD 23231@subsection FreeBSD 23232@cindex FreeBSD 23233 23234When the ABI of a system call is changed in the FreeBSD kernel, this 23235is implemented by leaving a compatibility system call using the old 23236ABI at the existing number and allocating a new system call number for 23237the version using the new ABI. As a convenience, when a system call 23238is caught by name (@pxref{catch syscall}), compatibility system calls 23239are also caught. 23240 23241For example, FreeBSD 12 introduced a new variant of the @code{kevent} 23242system call and catching the @code{kevent} system call by name catches 23243both variants: 23244 23245@smallexample 23246(@value{GDBP}) catch syscall kevent 23247Catchpoint 1 (syscalls 'freebsd11_kevent' [363] 'kevent' [560]) 23248(@value{GDBP}) 23249@end smallexample 23250 23251 23252@node Embedded OS 23253@section Embedded Operating Systems 23254 23255This section describes configurations involving the debugging of 23256embedded operating systems that are available for several different 23257architectures. 23258 23259@value{GDBN} includes the ability to debug programs running on 23260various real-time operating systems. 23261 23262@node Embedded Processors 23263@section Embedded Processors 23264 23265This section goes into details specific to particular embedded 23266configurations. 23267 23268@cindex send command to simulator 23269Whenever a specific embedded processor has a simulator, @value{GDBN} 23270allows to send an arbitrary command to the simulator. 23271 23272@table @code 23273@item sim @var{command} 23274@kindex sim@r{, a command} 23275Send an arbitrary @var{command} string to the simulator. Consult the 23276documentation for the specific simulator in use for information about 23277acceptable commands. 23278@end table 23279 23280 23281@menu 23282* ARC:: Synopsys ARC 23283* ARM:: ARM 23284* M68K:: Motorola M68K 23285* MicroBlaze:: Xilinx MicroBlaze 23286* MIPS Embedded:: MIPS Embedded 23287* OpenRISC 1000:: OpenRISC 1000 (or1k) 23288* PowerPC Embedded:: PowerPC Embedded 23289* AVR:: Atmel AVR 23290* CRIS:: CRIS 23291* Super-H:: Renesas Super-H 23292@end menu 23293 23294@node ARC 23295@subsection Synopsys ARC 23296@cindex Synopsys ARC 23297@cindex ARC specific commands 23298@cindex ARC600 23299@cindex ARC700 23300@cindex ARC EM 23301@cindex ARC HS 23302 23303@value{GDBN} provides the following ARC-specific commands: 23304 23305@table @code 23306@item set debug arc 23307@kindex set debug arc 23308Control the level of ARC specific debug messages. Use 0 for no messages (the 23309default), 1 for debug messages, and 2 for even more debug messages. 23310 23311@item show debug arc 23312@kindex show debug arc 23313Show the level of ARC specific debugging in operation. 23314 23315@item maint print arc arc-instruction @var{address} 23316@kindex maint print arc arc-instruction 23317Print internal disassembler information about instruction at a given address. 23318 23319@end table 23320 23321@node ARM 23322@subsection ARM 23323 23324@value{GDBN} provides the following ARM-specific commands: 23325 23326@table @code 23327@item set arm disassembler 23328@kindex set arm 23329This commands selects from a list of disassembly styles. The 23330@code{"std"} style is the standard style. 23331 23332@item show arm disassembler 23333@kindex show arm 23334Show the current disassembly style. 23335 23336@item set arm apcs32 23337@cindex ARM 32-bit mode 23338This command toggles ARM operation mode between 32-bit and 26-bit. 23339 23340@item show arm apcs32 23341Display the current usage of the ARM 32-bit mode. 23342 23343@item set arm fpu @var{fputype} 23344This command sets the ARM floating-point unit (FPU) type. The 23345argument @var{fputype} can be one of these: 23346 23347@table @code 23348@item auto 23349Determine the FPU type by querying the OS ABI. 23350@item softfpa 23351Software FPU, with mixed-endian doubles on little-endian ARM 23352processors. 23353@item fpa 23354GCC-compiled FPA co-processor. 23355@item softvfp 23356Software FPU with pure-endian doubles. 23357@item vfp 23358VFP co-processor. 23359@end table 23360 23361@item show arm fpu 23362Show the current type of the FPU. 23363 23364@item set arm abi 23365This command forces @value{GDBN} to use the specified ABI. 23366 23367@item show arm abi 23368Show the currently used ABI. 23369 23370@item set arm fallback-mode (arm|thumb|auto) 23371@value{GDBN} uses the symbol table, when available, to determine 23372whether instructions are ARM or Thumb. This command controls 23373@value{GDBN}'s default behavior when the symbol table is not 23374available. The default is @samp{auto}, which causes @value{GDBN} to 23375use the current execution mode (from the @code{T} bit in the @code{CPSR} 23376register). 23377 23378@item show arm fallback-mode 23379Show the current fallback instruction mode. 23380 23381@item set arm force-mode (arm|thumb|auto) 23382This command overrides use of the symbol table to determine whether 23383instructions are ARM or Thumb. The default is @samp{auto}, which 23384causes @value{GDBN} to use the symbol table and then the setting 23385of @samp{set arm fallback-mode}. 23386 23387@item show arm force-mode 23388Show the current forced instruction mode. 23389 23390@item set debug arm 23391Toggle whether to display ARM-specific debugging messages from the ARM 23392target support subsystem. 23393 23394@item show debug arm 23395Show whether ARM-specific debugging messages are enabled. 23396@end table 23397 23398@table @code 23399@item target sim @r{[}@var{simargs}@r{]} @dots{} 23400The @value{GDBN} ARM simulator accepts the following optional arguments. 23401 23402@table @code 23403@item --swi-support=@var{type} 23404Tell the simulator which SWI interfaces to support. The argument 23405@var{type} may be a comma separated list of the following values. 23406The default value is @code{all}. 23407 23408@table @code 23409@item none 23410@item demon 23411@item angel 23412@item redboot 23413@item all 23414@end table 23415@end table 23416@end table 23417 23418@node M68K 23419@subsection M68k 23420 23421The Motorola m68k configuration includes ColdFire support. 23422 23423@node MicroBlaze 23424@subsection MicroBlaze 23425@cindex Xilinx MicroBlaze 23426@cindex XMD, Xilinx Microprocessor Debugger 23427 23428The MicroBlaze is a soft-core processor supported on various Xilinx 23429FPGAs, such as Spartan or Virtex series. Boards with these processors 23430usually have JTAG ports which connect to a host system running the Xilinx 23431Embedded Development Kit (EDK) or Software Development Kit (SDK). 23432This host system is used to download the configuration bitstream to 23433the target FPGA. The Xilinx Microprocessor Debugger (XMD) program 23434communicates with the target board using the JTAG interface and 23435presents a @code{gdbserver} interface to the board. By default 23436@code{xmd} uses port @code{1234}. (While it is possible to change 23437this default port, it requires the use of undocumented @code{xmd} 23438commands. Contact Xilinx support if you need to do this.) 23439 23440Use these GDB commands to connect to the MicroBlaze target processor. 23441 23442@table @code 23443@item target remote :1234 23444Use this command to connect to the target if you are running @value{GDBN} 23445on the same system as @code{xmd}. 23446 23447@item target remote @var{xmd-host}:1234 23448Use this command to connect to the target if it is connected to @code{xmd} 23449running on a different system named @var{xmd-host}. 23450 23451@item load 23452Use this command to download a program to the MicroBlaze target. 23453 23454@item set debug microblaze @var{n} 23455Enable MicroBlaze-specific debugging messages if non-zero. 23456 23457@item show debug microblaze @var{n} 23458Show MicroBlaze-specific debugging level. 23459@end table 23460 23461@node MIPS Embedded 23462@subsection @acronym{MIPS} Embedded 23463 23464@noindent 23465@value{GDBN} supports these special commands for @acronym{MIPS} targets: 23466 23467@table @code 23468@item set mipsfpu double 23469@itemx set mipsfpu single 23470@itemx set mipsfpu none 23471@itemx set mipsfpu auto 23472@itemx show mipsfpu 23473@kindex set mipsfpu 23474@kindex show mipsfpu 23475@cindex @acronym{MIPS} remote floating point 23476@cindex floating point, @acronym{MIPS} remote 23477If your target board does not support the @acronym{MIPS} floating point 23478coprocessor, you should use the command @samp{set mipsfpu none} (if you 23479need this, you may wish to put the command in your @value{GDBN} init 23480file). This tells @value{GDBN} how to find the return value of 23481functions which return floating point values. It also allows 23482@value{GDBN} to avoid saving the floating point registers when calling 23483functions on the board. If you are using a floating point coprocessor 23484with only single precision floating point support, as on the @sc{r4650} 23485processor, use the command @samp{set mipsfpu single}. The default 23486double precision floating point coprocessor may be selected using 23487@samp{set mipsfpu double}. 23488 23489In previous versions the only choices were double precision or no 23490floating point, so @samp{set mipsfpu on} will select double precision 23491and @samp{set mipsfpu off} will select no floating point. 23492 23493As usual, you can inquire about the @code{mipsfpu} variable with 23494@samp{show mipsfpu}. 23495@end table 23496 23497@node OpenRISC 1000 23498@subsection OpenRISC 1000 23499@cindex OpenRISC 1000 23500 23501@noindent 23502The OpenRISC 1000 provides a free RISC instruction set architecture. It is 23503mainly provided as a soft-core which can run on Xilinx, Altera and other 23504FPGA's. 23505 23506@value{GDBN} for OpenRISC supports the below commands when connecting to 23507a target: 23508 23509@table @code 23510 23511@kindex target sim 23512@item target sim 23513 23514Runs the builtin CPU simulator which can run very basic 23515programs but does not support most hardware functions like MMU. 23516For more complex use cases the user is advised to run an external 23517target, and connect using @samp{target remote}. 23518 23519Example: @code{target sim} 23520 23521@item set debug or1k 23522Toggle whether to display OpenRISC-specific debugging messages from the 23523OpenRISC target support subsystem. 23524 23525@item show debug or1k 23526Show whether OpenRISC-specific debugging messages are enabled. 23527@end table 23528 23529@node PowerPC Embedded 23530@subsection PowerPC Embedded 23531 23532@cindex DVC register 23533@value{GDBN} supports using the DVC (Data Value Compare) register to 23534implement in hardware simple hardware watchpoint conditions of the form: 23535 23536@smallexample 23537(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \ 23538 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION} 23539@end smallexample 23540 23541The DVC register will be automatically used when @value{GDBN} detects 23542such pattern in a condition expression, and the created watchpoint uses one 23543debug register (either the @code{exact-watchpoints} option is on and the 23544variable is scalar, or the variable has a length of one byte). This feature 23545is available in native @value{GDBN} running on a Linux kernel version 2.6.34 23546or newer. 23547 23548When running on PowerPC embedded processors, @value{GDBN} automatically uses 23549ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on, 23550in which case watchpoints using only one debug register are created when 23551watching variables of scalar types. 23552 23553You can create an artificial array to watch an arbitrary memory 23554region using one of the following commands (@pxref{Expressions}): 23555 23556@smallexample 23557(@value{GDBP}) watch *((char *) @var{address})@@@var{length} 23558(@value{GDBP}) watch @{char[@var{length}]@} @var{address} 23559@end smallexample 23560 23561PowerPC embedded processors support masked watchpoints. See the discussion 23562about the @code{mask} argument in @ref{Set Watchpoints}. 23563 23564@cindex ranged breakpoint 23565PowerPC embedded processors support hardware accelerated 23566@dfn{ranged breakpoints}. A ranged breakpoint stops execution of 23567the inferior whenever it executes an instruction at any address within 23568the range it specifies. To set a ranged breakpoint in @value{GDBN}, 23569use the @code{break-range} command. 23570 23571@value{GDBN} provides the following PowerPC-specific commands: 23572 23573@table @code 23574@kindex break-range 23575@item break-range @var{start-location}, @var{end-location} 23576Set a breakpoint for an address range given by 23577@var{start-location} and @var{end-location}, which can specify a function name, 23578a line number, an offset of lines from the current line or from the start 23579location, or an address of an instruction (see @ref{Specify Location}, 23580for a list of all the possible ways to specify a @var{location}.) 23581The breakpoint will stop execution of the inferior whenever it 23582executes an instruction at any address within the specified range, 23583(including @var{start-location} and @var{end-location}.) 23584 23585@kindex set powerpc 23586@item set powerpc soft-float 23587@itemx show powerpc soft-float 23588Force @value{GDBN} to use (or not use) a software floating point calling 23589convention. By default, @value{GDBN} selects the calling convention based 23590on the selected architecture and the provided executable file. 23591 23592@item set powerpc vector-abi 23593@itemx show powerpc vector-abi 23594Force @value{GDBN} to use the specified calling convention for vector 23595arguments and return values. The valid options are @samp{auto}; 23596@samp{generic}, to avoid vector registers even if they are present; 23597@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE 23598registers. By default, @value{GDBN} selects the calling convention 23599based on the selected architecture and the provided executable file. 23600 23601@item set powerpc exact-watchpoints 23602@itemx show powerpc exact-watchpoints 23603Allow @value{GDBN} to use only one debug register when watching a variable 23604of scalar type, thus assuming that the variable is accessed through the 23605address of its first byte. 23606 23607@end table 23608 23609@node AVR 23610@subsection Atmel AVR 23611@cindex AVR 23612 23613When configured for debugging the Atmel AVR, @value{GDBN} supports the 23614following AVR-specific commands: 23615 23616@table @code 23617@item info io_registers 23618@kindex info io_registers@r{, AVR} 23619@cindex I/O registers (Atmel AVR) 23620This command displays information about the AVR I/O registers. For 23621each register, @value{GDBN} prints its number and value. 23622@end table 23623 23624@node CRIS 23625@subsection CRIS 23626@cindex CRIS 23627 23628When configured for debugging CRIS, @value{GDBN} provides the 23629following CRIS-specific commands: 23630 23631@table @code 23632@item set cris-version @var{ver} 23633@cindex CRIS version 23634Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}. 23635The CRIS version affects register names and sizes. This command is useful in 23636case autodetection of the CRIS version fails. 23637 23638@item show cris-version 23639Show the current CRIS version. 23640 23641@item set cris-dwarf2-cfi 23642@cindex DWARF-2 CFI and CRIS 23643Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}. 23644Change to @samp{off} when using @code{gcc-cris} whose version is below 23645@code{R59}. 23646 23647@item show cris-dwarf2-cfi 23648Show the current state of using DWARF-2 CFI. 23649 23650@item set cris-mode @var{mode} 23651@cindex CRIS mode 23652Set the current CRIS mode to @var{mode}. It should only be changed when 23653debugging in guru mode, in which case it should be set to 23654@samp{guru} (the default is @samp{normal}). 23655 23656@item show cris-mode 23657Show the current CRIS mode. 23658@end table 23659 23660@node Super-H 23661@subsection Renesas Super-H 23662@cindex Super-H 23663 23664For the Renesas Super-H processor, @value{GDBN} provides these 23665commands: 23666 23667@table @code 23668@item set sh calling-convention @var{convention} 23669@kindex set sh calling-convention 23670Set the calling-convention used when calling functions from @value{GDBN}. 23671Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}. 23672With the @samp{gcc} setting, functions are called using the @value{NGCC} calling 23673convention. If the DWARF-2 information of the called function specifies 23674that the function follows the Renesas calling convention, the function 23675is called using the Renesas calling convention. If the calling convention 23676is set to @samp{renesas}, the Renesas calling convention is always used, 23677regardless of the DWARF-2 information. This can be used to override the 23678default of @samp{gcc} if debug information is missing, or the compiler 23679does not emit the DWARF-2 calling convention entry for a function. 23680 23681@item show sh calling-convention 23682@kindex show sh calling-convention 23683Show the current calling convention setting. 23684 23685@end table 23686 23687 23688@node Architectures 23689@section Architectures 23690 23691This section describes characteristics of architectures that affect 23692all uses of @value{GDBN} with the architecture, both native and cross. 23693 23694@menu 23695* AArch64:: 23696* i386:: 23697* Alpha:: 23698* MIPS:: 23699* HPPA:: HP PA architecture 23700* SPU:: Cell Broadband Engine SPU architecture 23701* PowerPC:: 23702* Nios II:: 23703* Sparc64:: 23704* S12Z:: 23705@end menu 23706 23707@node AArch64 23708@subsection AArch64 23709@cindex AArch64 support 23710 23711When @value{GDBN} is debugging the AArch64 architecture, it provides the 23712following special commands: 23713 23714@table @code 23715@item set debug aarch64 23716@kindex set debug aarch64 23717This command determines whether AArch64 architecture-specific debugging 23718messages are to be displayed. 23719 23720@item show debug aarch64 23721Show whether AArch64 debugging messages are displayed. 23722 23723@end table 23724 23725@subsubsection AArch64 SVE. 23726@cindex AArch64 SVE. 23727 23728When @value{GDBN} is debugging the AArch64 architecture, if the Scalable Vector 23729Extension (SVE) is present, then @value{GDBN} will provide the vector registers 23730@code{$z0} through @code{$z31}, vector predicate registers @code{$p0} through 23731@code{$p15}, and the @code{$ffr} register. In addition, the pseudo register 23732@code{$vg} will be provided. This is the vector granule for the current thread 23733and represents the number of 64-bit chunks in an SVE @code{z} register. 23734 23735If the vector length changes, then the @code{$vg} register will be updated, 23736but the lengths of the @code{z} and @code{p} registers will not change. This 23737is a known limitation of @value{GDBN} and does not affect the execution of the 23738target process. 23739 23740 23741@node i386 23742@subsection x86 Architecture-specific Issues 23743 23744@table @code 23745@item set struct-convention @var{mode} 23746@kindex set struct-convention 23747@cindex struct return convention 23748@cindex struct/union returned in registers 23749Set the convention used by the inferior to return @code{struct}s and 23750@code{union}s from functions to @var{mode}. Possible values of 23751@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the 23752default). @code{"default"} or @code{"pcc"} means that @code{struct}s 23753are returned on the stack, while @code{"reg"} means that a 23754@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will 23755be returned in a register. 23756 23757@item show struct-convention 23758@kindex show struct-convention 23759Show the current setting of the convention to return @code{struct}s 23760from functions. 23761@end table 23762 23763 23764@subsubsection Intel @dfn{Memory Protection Extensions} (MPX). 23765@cindex Intel Memory Protection Extensions (MPX). 23766 23767Memory Protection Extension (MPX) adds the bound registers @samp{BND0} 23768@footnote{The register named with capital letters represent the architecture 23769registers.} through @samp{BND3}. Bound registers store a pair of 64-bit values 23770which are the lower bound and upper bound. Bounds are effective addresses or 23771memory locations. The upper bounds are architecturally represented in 1's 23772complement form. A bound having lower bound = 0, and upper bound = 0 23773(1's complement of all bits set) will allow access to the entire address space. 23774 23775@samp{BND0} through @samp{BND3} are represented in @value{GDBN} as @samp{bnd0raw} 23776through @samp{bnd3raw}. Pseudo registers @samp{bnd0} through @samp{bnd3} 23777display the upper bound performing the complement of one operation on the 23778upper bound value, i.e.@ when upper bound in @samp{bnd0raw} is 0 in the 23779@value{GDBN} @samp{bnd0} it will be @code{0xfff@dots{}}. In this sense it 23780can also be noted that the upper bounds are inclusive. 23781 23782As an example, assume that the register BND0 holds bounds for a pointer having 23783access allowed for the range between 0x32 and 0x71. The values present on 23784bnd0raw and bnd registers are presented as follows: 23785 23786@smallexample 23787 bnd0raw = @{0x32, 0xffffffff8e@} 23788 bnd0 = @{lbound = 0x32, ubound = 0x71@} : size 64 23789@end smallexample 23790 23791This way the raw value can be accessed via bnd0raw@dots{}bnd3raw. Any 23792change on bnd0@dots{}bnd3 or bnd0raw@dots{}bnd3raw is reflect on its 23793counterpart. When the bnd0@dots{}bnd3 registers are displayed via 23794Python, the display includes the memory size, in bits, accessible to 23795the pointer. 23796 23797Bounds can also be stored in bounds tables, which are stored in 23798application memory. These tables store bounds for pointers by specifying 23799the bounds pointer's value along with its bounds. Evaluating and changing 23800bounds located in bound tables is therefore interesting while investigating 23801bugs on MPX context. @value{GDBN} provides commands for this purpose: 23802 23803@table @code 23804@item show mpx bound @var{pointer} 23805@kindex show mpx bound 23806Display bounds of the given @var{pointer}. 23807 23808@item set mpx bound @var{pointer}, @var{lbound}, @var{ubound} 23809@kindex set mpx bound 23810Set the bounds of a pointer in the bound table. 23811This command takes three parameters: @var{pointer} is the pointers 23812whose bounds are to be changed, @var{lbound} and @var{ubound} are new values 23813for lower and upper bounds respectively. 23814@end table 23815 23816When you call an inferior function on an Intel MPX enabled program, 23817GDB sets the inferior's bound registers to the init (disabled) state 23818before calling the function. As a consequence, bounds checks for the 23819pointer arguments passed to the function will always pass. 23820 23821This is necessary because when you call an inferior function, the 23822program is usually in the middle of the execution of other function. 23823Since at that point bound registers are in an arbitrary state, not 23824clearing them would lead to random bound violations in the called 23825function. 23826 23827You can still examine the influence of the bound registers on the 23828execution of the called function by stopping the execution of the 23829called function at its prologue, setting bound registers, and 23830continuing the execution. For example: 23831 23832@smallexample 23833 $ break *upper 23834 Breakpoint 2 at 0x4009de: file i386-mpx-call.c, line 47. 23835 $ print upper (a, b, c, d, 1) 23836 Breakpoint 2, upper (a=0x0, b=0x6e0000005b, c=0x0, d=0x0, len=48).... 23837 $ print $bnd0 23838 @{lbound = 0x0, ubound = ffffffff@} : size -1 23839@end smallexample 23840 23841At this last step the value of bnd0 can be changed for investigation of bound 23842violations caused along the execution of the call. In order to know how to 23843set the bound registers or bound table for the call consult the ABI. 23844 23845@node Alpha 23846@subsection Alpha 23847 23848See the following section. 23849 23850@node MIPS 23851@subsection @acronym{MIPS} 23852 23853@cindex stack on Alpha 23854@cindex stack on @acronym{MIPS} 23855@cindex Alpha stack 23856@cindex @acronym{MIPS} stack 23857Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which 23858sometimes requires @value{GDBN} to search backward in the object code to 23859find the beginning of a function. 23860 23861@cindex response time, @acronym{MIPS} debugging 23862To improve response time (especially for embedded applications, where 23863@value{GDBN} may be restricted to a slow serial line for this search) 23864you may want to limit the size of this search, using one of these 23865commands: 23866 23867@table @code 23868@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS}) 23869@item set heuristic-fence-post @var{limit} 23870Restrict @value{GDBN} to examining at most @var{limit} bytes in its 23871search for the beginning of a function. A value of @var{0} (the 23872default) means there is no limit. However, except for @var{0}, the 23873larger the limit the more bytes @code{heuristic-fence-post} must search 23874and therefore the longer it takes to run. You should only need to use 23875this command when debugging a stripped executable. 23876 23877@item show heuristic-fence-post 23878Display the current limit. 23879@end table 23880 23881@noindent 23882These commands are available @emph{only} when @value{GDBN} is configured 23883for debugging programs on Alpha or @acronym{MIPS} processors. 23884 23885Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS} 23886programs: 23887 23888@table @code 23889@item set mips abi @var{arg} 23890@kindex set mips abi 23891@cindex set ABI for @acronym{MIPS} 23892Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible 23893values of @var{arg} are: 23894 23895@table @samp 23896@item auto 23897The default ABI associated with the current binary (this is the 23898default). 23899@item o32 23900@item o64 23901@item n32 23902@item n64 23903@item eabi32 23904@item eabi64 23905@end table 23906 23907@item show mips abi 23908@kindex show mips abi 23909Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior. 23910 23911@item set mips compression @var{arg} 23912@kindex set mips compression 23913@cindex code compression, @acronym{MIPS} 23914Tell @value{GDBN} which @acronym{MIPS} compressed 23915@acronym{ISA, Instruction Set Architecture} encoding is used by the 23916inferior. @value{GDBN} uses this for code disassembly and other 23917internal interpretation purposes. This setting is only referred to 23918when no executable has been associated with the debugging session or 23919the executable does not provide information about the encoding it uses. 23920Otherwise this setting is automatically updated from information 23921provided by the executable. 23922 23923Possible values of @var{arg} are @samp{mips16} and @samp{micromips}. 23924The default compressed @acronym{ISA} encoding is @samp{mips16}, as 23925executables containing @acronym{MIPS16} code frequently are not 23926identified as such. 23927 23928This setting is ``sticky''; that is, it retains its value across 23929debugging sessions until reset either explicitly with this command or 23930implicitly from an executable. 23931 23932The compiler and/or assembler typically add symbol table annotations to 23933identify functions compiled for the @acronym{MIPS16} or 23934@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations 23935are present, @value{GDBN} uses them in preference to the global 23936compressed @acronym{ISA} encoding setting. 23937 23938@item show mips compression 23939@kindex show mips compression 23940Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by 23941@value{GDBN} to debug the inferior. 23942 23943@item set mipsfpu 23944@itemx show mipsfpu 23945@xref{MIPS Embedded, set mipsfpu}. 23946 23947@item set mips mask-address @var{arg} 23948@kindex set mips mask-address 23949@cindex @acronym{MIPS} addresses, masking 23950This command determines whether the most-significant 32 bits of 64-bit 23951@acronym{MIPS} addresses are masked off. The argument @var{arg} can be 23952@samp{on}, @samp{off}, or @samp{auto}. The latter is the default 23953setting, which lets @value{GDBN} determine the correct value. 23954 23955@item show mips mask-address 23956@kindex show mips mask-address 23957Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or 23958not. 23959 23960@item set remote-mips64-transfers-32bit-regs 23961@kindex set remote-mips64-transfers-32bit-regs 23962This command controls compatibility with 64-bit @acronym{MIPS} targets that 23963transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target 23964that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr}, 23965and 64 bits for other registers, set this option to @samp{on}. 23966 23967@item show remote-mips64-transfers-32bit-regs 23968@kindex show remote-mips64-transfers-32bit-regs 23969Show the current setting of compatibility with older @acronym{MIPS} 64 targets. 23970 23971@item set debug mips 23972@kindex set debug mips 23973This command turns on and off debugging messages for the @acronym{MIPS}-specific 23974target code in @value{GDBN}. 23975 23976@item show debug mips 23977@kindex show debug mips 23978Show the current setting of @acronym{MIPS} debugging messages. 23979@end table 23980 23981 23982@node HPPA 23983@subsection HPPA 23984@cindex HPPA support 23985 23986When @value{GDBN} is debugging the HP PA architecture, it provides the 23987following special commands: 23988 23989@table @code 23990@item set debug hppa 23991@kindex set debug hppa 23992This command determines whether HPPA architecture-specific debugging 23993messages are to be displayed. 23994 23995@item show debug hppa 23996Show whether HPPA debugging messages are displayed. 23997 23998@item maint print unwind @var{address} 23999@kindex maint print unwind@r{, HPPA} 24000This command displays the contents of the unwind table entry at the 24001given @var{address}. 24002 24003@end table 24004 24005 24006@node SPU 24007@subsection Cell Broadband Engine SPU architecture 24008@cindex Cell Broadband Engine 24009@cindex SPU 24010 24011When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture, 24012it provides the following special commands: 24013 24014@table @code 24015@item info spu event 24016@kindex info spu 24017Display SPU event facility status. Shows current event mask 24018and pending event status. 24019 24020@item info spu signal 24021Display SPU signal notification facility status. Shows pending 24022signal-control word and signal notification mode of both signal 24023notification channels. 24024 24025@item info spu mailbox 24026Display SPU mailbox facility status. Shows all pending entries, 24027in order of processing, in each of the SPU Write Outbound, 24028SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes. 24029 24030@item info spu dma 24031Display MFC DMA status. Shows all pending commands in the MFC 24032DMA queue. For each entry, opcode, tag, class IDs, effective 24033and local store addresses and transfer size are shown. 24034 24035@item info spu proxydma 24036Display MFC Proxy-DMA status. Shows all pending commands in the MFC 24037Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective 24038and local store addresses and transfer size are shown. 24039 24040@end table 24041 24042When @value{GDBN} is debugging a combined PowerPC/SPU application 24043on the Cell Broadband Engine, it provides in addition the following 24044special commands: 24045 24046@table @code 24047@item set spu stop-on-load @var{arg} 24048@kindex set spu 24049Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN} 24050will give control to the user when a new SPE thread enters its @code{main} 24051function. The default is @code{off}. 24052 24053@item show spu stop-on-load 24054@kindex show spu 24055Show whether to stop for new SPE threads. 24056 24057@item set spu auto-flush-cache @var{arg} 24058Set whether to automatically flush the software-managed cache. When set to 24059@code{on}, @value{GDBN} will automatically cause the SPE software-managed 24060cache to be flushed whenever SPE execution stops. This provides a consistent 24061view of PowerPC memory that is accessed via the cache. If an application 24062does not use the software-managed cache, this option has no effect. 24063 24064@item show spu auto-flush-cache 24065Show whether to automatically flush the software-managed cache. 24066 24067@end table 24068 24069@node PowerPC 24070@subsection PowerPC 24071@cindex PowerPC architecture 24072 24073When @value{GDBN} is debugging the PowerPC architecture, it provides a set of 24074pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point 24075numbers stored in the floating point registers. These values must be stored 24076in two consecutive registers, always starting at an even register like 24077@code{f0} or @code{f2}. 24078 24079The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed 24080by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0}, 24081@code{f2} and @code{f3} for @code{$dl1} and so on. 24082 24083For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit 24084wide Extended Floating Point Registers (@samp{f32} through @samp{f63}). 24085 24086@node Nios II 24087@subsection Nios II 24088@cindex Nios II architecture 24089 24090When @value{GDBN} is debugging the Nios II architecture, 24091it provides the following special commands: 24092 24093@table @code 24094 24095@item set debug nios2 24096@kindex set debug nios2 24097This command turns on and off debugging messages for the Nios II 24098target code in @value{GDBN}. 24099 24100@item show debug nios2 24101@kindex show debug nios2 24102Show the current setting of Nios II debugging messages. 24103@end table 24104 24105@node Sparc64 24106@subsection Sparc64 24107@cindex Sparc64 support 24108@cindex Application Data Integrity 24109@subsubsection ADI Support 24110 24111The M7 processor supports an Application Data Integrity (ADI) feature that 24112detects invalid data accesses. When software allocates memory and enables 24113ADI on the allocated memory, it chooses a 4-bit version number, sets the 24114version in the upper 4 bits of the 64-bit pointer to that data, and stores 24115the 4-bit version in every cacheline of that data. Hardware saves the latter 24116in spare bits in the cache and memory hierarchy. On each load and store, 24117the processor compares the upper 4 VA (virtual address) bits to the 24118cacheline's version. If there is a mismatch, the processor generates a 24119version mismatch trap which can be either precise or disrupting. The trap 24120is an error condition which the kernel delivers to the process as a SIGSEGV 24121signal. 24122 24123Note that only 64-bit applications can use ADI and need to be built with 24124ADI-enabled. 24125 24126Values of the ADI version tags, which are in granularity of a 24127cacheline (64 bytes), can be viewed or modified. 24128 24129 24130@table @code 24131@kindex adi examine 24132@item adi (examine | x) [ / @var{n} ] @var{addr} 24133 24134The @code{adi examine} command displays the value of one ADI version tag per 24135cacheline. 24136 24137@var{n} is a decimal integer specifying the number in bytes; the default 24138is 1. It specifies how much ADI version information, at the ratio of 1:ADI 24139block size, to display. 24140 24141@var{addr} is the address in user address space where you want @value{GDBN} 24142to begin displaying the ADI version tags. 24143 24144Below is an example of displaying ADI versions of variable "shmaddr". 24145 24146@smallexample 24147(@value{GDBP}) adi x/100 shmaddr 24148 0xfff800010002c000: 0 0 24149@end smallexample 24150 24151@kindex adi assign 24152@item adi (assign | a) [ / @var{n} ] @var{addr} = @var{tag} 24153 24154The @code{adi assign} command is used to assign new ADI version tag 24155to an address. 24156 24157@var{n} is a decimal integer specifying the number in bytes; 24158the default is 1. It specifies how much ADI version information, at the 24159ratio of 1:ADI block size, to modify. 24160 24161@var{addr} is the address in user address space where you want @value{GDBN} 24162to begin modifying the ADI version tags. 24163 24164@var{tag} is the new ADI version tag. 24165 24166For example, do the following to modify then verify ADI versions of 24167variable "shmaddr": 24168 24169@smallexample 24170(@value{GDBP}) adi a/100 shmaddr = 7 24171(@value{GDBP}) adi x/100 shmaddr 24172 0xfff800010002c000: 7 7 24173@end smallexample 24174 24175@end table 24176 24177@node S12Z 24178@subsection S12Z 24179@cindex S12Z support 24180 24181When @value{GDBN} is debugging the S12Z architecture, 24182it provides the following special command: 24183 24184@table @code 24185@item maint info bdccsr 24186@kindex maint info bdccsr@r{, S12Z} 24187This command displays the current value of the microprocessor's 24188BDCCSR register. 24189@end table 24190 24191 24192@node Controlling GDB 24193@chapter Controlling @value{GDBN} 24194 24195You can alter the way @value{GDBN} interacts with you by using the 24196@code{set} command. For commands controlling how @value{GDBN} displays 24197data, see @ref{Print Settings, ,Print Settings}. Other settings are 24198described here. 24199 24200@menu 24201* Prompt:: Prompt 24202* Editing:: Command editing 24203* Command History:: Command history 24204* Screen Size:: Screen size 24205* Output Styling:: Output styling 24206* Numbers:: Numbers 24207* ABI:: Configuring the current ABI 24208* Auto-loading:: Automatically loading associated files 24209* Messages/Warnings:: Optional warnings and messages 24210* Debugging Output:: Optional messages about internal happenings 24211* Other Misc Settings:: Other Miscellaneous Settings 24212@end menu 24213 24214@node Prompt 24215@section Prompt 24216 24217@cindex prompt 24218 24219@value{GDBN} indicates its readiness to read a command by printing a string 24220called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You 24221can change the prompt string with the @code{set prompt} command. For 24222instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change 24223the prompt in one of the @value{GDBN} sessions so that you can always tell 24224which one you are talking to. 24225 24226@emph{Note:} @code{set prompt} does not add a space for you after the 24227prompt you set. This allows you to set a prompt which ends in a space 24228or a prompt that does not. 24229 24230@table @code 24231@kindex set prompt 24232@item set prompt @var{newprompt} 24233Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth. 24234 24235@kindex show prompt 24236@item show prompt 24237Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}} 24238@end table 24239 24240Versions of @value{GDBN} that ship with Python scripting enabled have 24241prompt extensions. The commands for interacting with these extensions 24242are: 24243 24244@table @code 24245@kindex set extended-prompt 24246@item set extended-prompt @var{prompt} 24247Set an extended prompt that allows for substitutions. 24248@xref{gdb.prompt}, for a list of escape sequences that can be used for 24249substitution. Any escape sequences specified as part of the prompt 24250string are replaced with the corresponding strings each time the prompt 24251is displayed. 24252 24253For example: 24254 24255@smallexample 24256set extended-prompt Current working directory: \w (gdb) 24257@end smallexample 24258 24259Note that when an extended-prompt is set, it takes control of the 24260@var{prompt_hook} hook. @xref{prompt_hook}, for further information. 24261 24262@kindex show extended-prompt 24263@item show extended-prompt 24264Prints the extended prompt. Any escape sequences specified as part of 24265the prompt string with @code{set extended-prompt}, are replaced with the 24266corresponding strings each time the prompt is displayed. 24267@end table 24268 24269@node Editing 24270@section Command Editing 24271@cindex readline 24272@cindex command line editing 24273 24274@value{GDBN} reads its input commands via the @dfn{Readline} interface. This 24275@sc{gnu} library provides consistent behavior for programs which provide a 24276command line interface to the user. Advantages are @sc{gnu} Emacs-style 24277or @dfn{vi}-style inline editing of commands, @code{csh}-like history 24278substitution, and a storage and recall of command history across 24279debugging sessions. 24280 24281You may control the behavior of command line editing in @value{GDBN} with the 24282command @code{set}. 24283 24284@table @code 24285@kindex set editing 24286@cindex editing 24287@item set editing 24288@itemx set editing on 24289Enable command line editing (enabled by default). 24290 24291@item set editing off 24292Disable command line editing. 24293 24294@kindex show editing 24295@item show editing 24296Show whether command line editing is enabled. 24297@end table 24298 24299@ifset SYSTEM_READLINE 24300@xref{Command Line Editing, , , rluserman, GNU Readline Library}, 24301@end ifset 24302@ifclear SYSTEM_READLINE 24303@xref{Command Line Editing}, 24304@end ifclear 24305for more details about the Readline 24306interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are 24307encouraged to read that chapter. 24308 24309@node Command History 24310@section Command History 24311@cindex command history 24312 24313@value{GDBN} can keep track of the commands you type during your 24314debugging sessions, so that you can be certain of precisely what 24315happened. Use these commands to manage the @value{GDBN} command 24316history facility. 24317 24318@value{GDBN} uses the @sc{gnu} History library, a part of the Readline 24319package, to provide the history facility. 24320@ifset SYSTEM_READLINE 24321@xref{Using History Interactively, , , history, GNU History Library}, 24322@end ifset 24323@ifclear SYSTEM_READLINE 24324@xref{Using History Interactively}, 24325@end ifclear 24326for the detailed description of the History library. 24327 24328To issue a command to @value{GDBN} without affecting certain aspects of 24329the state which is seen by users, prefix it with @samp{server } 24330(@pxref{Server Prefix}). This 24331means that this command will not affect the command history, nor will it 24332affect @value{GDBN}'s notion of which command to repeat if @key{RET} is 24333pressed on a line by itself. 24334 24335@cindex @code{server}, command prefix 24336The server prefix does not affect the recording of values into the value 24337history; to print a value without recording it into the value history, 24338use the @code{output} command instead of the @code{print} command. 24339 24340Here is the description of @value{GDBN} commands related to command 24341history. 24342 24343@table @code 24344@cindex history substitution 24345@cindex history file 24346@kindex set history filename 24347@cindex @env{GDBHISTFILE}, environment variable 24348@item set history filename @var{fname} 24349Set the name of the @value{GDBN} command history file to @var{fname}. 24350This is the file where @value{GDBN} reads an initial command history 24351list, and where it writes the command history from this session when it 24352exits. You can access this list through history expansion or through 24353the history command editing characters listed below. This file defaults 24354to the value of the environment variable @code{GDBHISTFILE}, or to 24355@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable 24356is not set. 24357 24358@cindex save command history 24359@kindex set history save 24360@item set history save 24361@itemx set history save on 24362Record command history in a file, whose name may be specified with the 24363@code{set history filename} command. By default, this option is disabled. 24364 24365@item set history save off 24366Stop recording command history in a file. 24367 24368@cindex history size 24369@kindex set history size 24370@cindex @env{GDBHISTSIZE}, environment variable 24371@item set history size @var{size} 24372@itemx set history size unlimited 24373Set the number of commands which @value{GDBN} keeps in its history list. 24374This defaults to the value of the environment variable @env{GDBHISTSIZE}, or 24375to 256 if this variable is not set. Non-numeric values of @env{GDBHISTSIZE} 24376are ignored. If @var{size} is @code{unlimited} or if @env{GDBHISTSIZE} is 24377either a negative number or the empty string, then the number of commands 24378@value{GDBN} keeps in the history list is unlimited. 24379 24380@cindex remove duplicate history 24381@kindex set history remove-duplicates 24382@item set history remove-duplicates @var{count} 24383@itemx set history remove-duplicates unlimited 24384Control the removal of duplicate history entries in the command history list. 24385If @var{count} is non-zero, @value{GDBN} will look back at the last @var{count} 24386history entries and remove the first entry that is a duplicate of the current 24387entry being added to the command history list. If @var{count} is 24388@code{unlimited} then this lookbehind is unbounded. If @var{count} is 0, then 24389removal of duplicate history entries is disabled. 24390 24391Only history entries added during the current session are considered for 24392removal. This option is set to 0 by default. 24393 24394@end table 24395 24396History expansion assigns special meaning to the character @kbd{!}. 24397@ifset SYSTEM_READLINE 24398@xref{Event Designators, , , history, GNU History Library}, 24399@end ifset 24400@ifclear SYSTEM_READLINE 24401@xref{Event Designators}, 24402@end ifclear 24403for more details. 24404 24405@cindex history expansion, turn on/off 24406Since @kbd{!} is also the logical not operator in C, history expansion 24407is off by default. If you decide to enable history expansion with the 24408@code{set history expansion on} command, you may sometimes need to 24409follow @kbd{!} (when it is used as logical not, in an expression) with 24410a space or a tab to prevent it from being expanded. The readline 24411history facilities do not attempt substitution on the strings 24412@kbd{!=} and @kbd{!(}, even when history expansion is enabled. 24413 24414The commands to control history expansion are: 24415 24416@table @code 24417@item set history expansion on 24418@itemx set history expansion 24419@kindex set history expansion 24420Enable history expansion. History expansion is off by default. 24421 24422@item set history expansion off 24423Disable history expansion. 24424 24425@c @group 24426@kindex show history 24427@item show history 24428@itemx show history filename 24429@itemx show history save 24430@itemx show history size 24431@itemx show history expansion 24432These commands display the state of the @value{GDBN} history parameters. 24433@code{show history} by itself displays all four states. 24434@c @end group 24435@end table 24436 24437@table @code 24438@kindex show commands 24439@cindex show last commands 24440@cindex display command history 24441@item show commands 24442Display the last ten commands in the command history. 24443 24444@item show commands @var{n} 24445Print ten commands centered on command number @var{n}. 24446 24447@item show commands + 24448Print ten commands just after the commands last printed. 24449@end table 24450 24451@node Screen Size 24452@section Screen Size 24453@cindex size of screen 24454@cindex screen size 24455@cindex pagination 24456@cindex page size 24457@cindex pauses in output 24458 24459Certain commands to @value{GDBN} may produce large amounts of 24460information output to the screen. To help you read all of it, 24461@value{GDBN} pauses and asks you for input at the end of each page of 24462output. Type @key{RET} when you want to see one more page of output, 24463@kbd{q} to discard the remaining output, or @kbd{c} to continue 24464without paging for the rest of the current command. Also, the screen 24465width setting determines when to wrap lines of output. Depending on 24466what is being printed, @value{GDBN} tries to break the line at a 24467readable place, rather than simply letting it overflow onto the 24468following line. 24469 24470Normally @value{GDBN} knows the size of the screen from the terminal 24471driver software. For example, on Unix @value{GDBN} uses the termcap data base 24472together with the value of the @code{TERM} environment variable and the 24473@code{stty rows} and @code{stty cols} settings. If this is not correct, 24474you can override it with the @code{set height} and @code{set 24475width} commands: 24476 24477@table @code 24478@kindex set height 24479@kindex set width 24480@kindex show width 24481@kindex show height 24482@item set height @var{lpp} 24483@itemx set height unlimited 24484@itemx show height 24485@itemx set width @var{cpl} 24486@itemx set width unlimited 24487@itemx show width 24488These @code{set} commands specify a screen height of @var{lpp} lines and 24489a screen width of @var{cpl} characters. The associated @code{show} 24490commands display the current settings. 24491 24492If you specify a height of either @code{unlimited} or zero lines, 24493@value{GDBN} does not pause during output no matter how long the 24494output is. This is useful if output is to a file or to an editor 24495buffer. 24496 24497Likewise, you can specify @samp{set width unlimited} or @samp{set 24498width 0} to prevent @value{GDBN} from wrapping its output. 24499 24500@item set pagination on 24501@itemx set pagination off 24502@kindex set pagination 24503Turn the output pagination on or off; the default is on. Turning 24504pagination off is the alternative to @code{set height unlimited}. Note that 24505running @value{GDBN} with the @option{--batch} option (@pxref{Mode 24506Options, -batch}) also automatically disables pagination. 24507 24508@item show pagination 24509@kindex show pagination 24510Show the current pagination mode. 24511@end table 24512 24513@node Output Styling 24514@section Output Styling 24515@cindex styling 24516@cindex colors 24517 24518@kindex set style 24519@kindex show style 24520@value{GDBN} can style its output on a capable terminal. This is 24521enabled by default on most systems, but disabled by default when in 24522batch mode (@pxref{Mode Options}). Various style settings are available; 24523and styles can also be disabled entirely. 24524 24525@table @code 24526@item set style enabled @samp{on|off} 24527Enable or disable all styling. The default is host-dependent, with 24528most hosts defaulting to @samp{on}. 24529 24530@item show style enabled 24531Show the current state of styling. 24532 24533@item set style sources @samp{on|off} 24534Enable or disable source code styling. This affects whether source 24535code, such as the output of the @code{list} command, is styled. Note 24536that source styling only works if styling in general is enabled, and 24537if @value{GDBN} was linked with the GNU Source Highlight library. The 24538default is @samp{on}. 24539 24540@item show style sources 24541Show the current state of source code styling. 24542@end table 24543 24544Subcommands of @code{set style} control specific forms of styling. 24545These subcommands all follow the same pattern: each style-able object 24546can be styled with a foreground color, a background color, and an 24547intensity. 24548 24549For example, the style of file names can be controlled using the 24550@code{set style filename} group of commands: 24551 24552@table @code 24553@item set style filename background @var{color} 24554Set the background to @var{color}. Valid colors are @samp{none} 24555(meaning the terminal's default color), @samp{black}, @samp{red}, 24556@samp{green}, @samp{yellow}, @samp{blue}, @samp{magenta}, @samp{cyan}, 24557and@samp{white}. 24558 24559@item set style filename foreground @var{color} 24560Set the foreground to @var{color}. Valid colors are @samp{none} 24561(meaning the terminal's default color), @samp{black}, @samp{red}, 24562@samp{green}, @samp{yellow}, @samp{blue}, @samp{magenta}, @samp{cyan}, 24563and@samp{white}. 24564 24565@item set style filename intensity @var{value} 24566Set the intensity to @var{value}. Valid intensities are @samp{normal} 24567(the default), @samp{bold}, and @samp{dim}. 24568@end table 24569 24570The style-able objects are: 24571@table @code 24572@item filename 24573Control the styling of file names. By default, this style's 24574foreground color is green. 24575 24576@item function 24577Control the styling of function names. These are managed with the 24578@code{set style function} family of commands. By default, this 24579style's foreground color is yellow. 24580 24581@item variable 24582Control the styling of variable names. These are managed with the 24583@code{set style variable} family of commands. By default, this style's 24584foreground color is cyan. 24585 24586@item address 24587Control the styling of addresses. These are managed with the 24588@code{set style address} family of commands. By default, this style's 24589foreground color is blue. 24590@end table 24591 24592@node Numbers 24593@section Numbers 24594@cindex number representation 24595@cindex entering numbers 24596 24597You can always enter numbers in octal, decimal, or hexadecimal in 24598@value{GDBN} by the usual conventions: octal numbers begin with 24599@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers 24600begin with @samp{0x}. Numbers that neither begin with @samp{0} or 24601@samp{0x}, nor end with a @samp{.} are, by default, entered in base 2460210; likewise, the default display for numbers---when no particular 24603format is specified---is base 10. You can change the default base for 24604both input and output with the commands described below. 24605 24606@table @code 24607@kindex set input-radix 24608@item set input-radix @var{base} 24609Set the default base for numeric input. Supported choices 24610for @var{base} are decimal 8, 10, or 16. The base must itself be 24611specified either unambiguously or using the current input radix; for 24612example, any of 24613 24614@smallexample 24615set input-radix 012 24616set input-radix 10. 24617set input-radix 0xa 24618@end smallexample 24619 24620@noindent 24621sets the input base to decimal. On the other hand, @samp{set input-radix 10} 24622leaves the input radix unchanged, no matter what it was, since 24623@samp{10}, being without any leading or trailing signs of its base, is 24624interpreted in the current radix. Thus, if the current radix is 16, 24625@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't 24626change the radix. 24627 24628@kindex set output-radix 24629@item set output-radix @var{base} 24630Set the default base for numeric display. Supported choices 24631for @var{base} are decimal 8, 10, or 16. The base must itself be 24632specified either unambiguously or using the current input radix. 24633 24634@kindex show input-radix 24635@item show input-radix 24636Display the current default base for numeric input. 24637 24638@kindex show output-radix 24639@item show output-radix 24640Display the current default base for numeric display. 24641 24642@item set radix @r{[}@var{base}@r{]} 24643@itemx show radix 24644@kindex set radix 24645@kindex show radix 24646These commands set and show the default base for both input and output 24647of numbers. @code{set radix} sets the radix of input and output to 24648the same base; without an argument, it resets the radix back to its 24649default value of 10. 24650 24651@end table 24652 24653@node ABI 24654@section Configuring the Current ABI 24655 24656@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your 24657application automatically. However, sometimes you need to override its 24658conclusions. Use these commands to manage @value{GDBN}'s view of the 24659current ABI. 24660 24661@cindex OS ABI 24662@kindex set osabi 24663@kindex show osabi 24664@cindex Newlib OS ABI and its influence on the longjmp handling 24665 24666One @value{GDBN} configuration can debug binaries for multiple operating 24667system targets, either via remote debugging or native emulation. 24668@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use, 24669but you can override its conclusion using the @code{set osabi} command. 24670One example where this is useful is in debugging of binaries which use 24671an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does 24672not have the same identifying marks that the standard C library for your 24673platform provides. 24674 24675When @value{GDBN} is debugging the AArch64 architecture, it provides a 24676``Newlib'' OS ABI. This is useful for handling @code{setjmp} and 24677@code{longjmp} when debugging binaries that use the @sc{newlib} C library. 24678The ``Newlib'' OS ABI can be selected by @code{set osabi Newlib}. 24679 24680@table @code 24681@item show osabi 24682Show the OS ABI currently in use. 24683 24684@item set osabi 24685With no argument, show the list of registered available OS ABI's. 24686 24687@item set osabi @var{abi} 24688Set the current OS ABI to @var{abi}. 24689@end table 24690 24691@cindex float promotion 24692 24693Generally, the way that an argument of type @code{float} is passed to a 24694function depends on whether the function is prototyped. For a prototyped 24695(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged, 24696according to the architecture's convention for @code{float}. For unprototyped 24697(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type 24698@code{double} and then passed. 24699 24700Unfortunately, some forms of debug information do not reliably indicate whether 24701a function is prototyped. If @value{GDBN} calls a function that is not marked 24702as prototyped, it consults @kbd{set coerce-float-to-double}. 24703 24704@table @code 24705@kindex set coerce-float-to-double 24706@item set coerce-float-to-double 24707@itemx set coerce-float-to-double on 24708Arguments of type @code{float} will be promoted to @code{double} when passed 24709to an unprototyped function. This is the default setting. 24710 24711@item set coerce-float-to-double off 24712Arguments of type @code{float} will be passed directly to unprototyped 24713functions. 24714 24715@kindex show coerce-float-to-double 24716@item show coerce-float-to-double 24717Show the current setting of promoting @code{float} to @code{double}. 24718@end table 24719 24720@kindex set cp-abi 24721@kindex show cp-abi 24722@value{GDBN} needs to know the ABI used for your program's C@t{++} 24723objects. The correct C@t{++} ABI depends on which C@t{++} compiler was 24724used to build your application. @value{GDBN} only fully supports 24725programs with a single C@t{++} ABI; if your program contains code using 24726multiple C@t{++} ABI's or if @value{GDBN} can not identify your 24727program's ABI correctly, you can tell @value{GDBN} which ABI to use. 24728Currently supported ABI's include ``gnu-v2'', for @code{g++} versions 24729before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and 24730``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may 24731use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is 24732``auto''. 24733 24734@table @code 24735@item show cp-abi 24736Show the C@t{++} ABI currently in use. 24737 24738@item set cp-abi 24739With no argument, show the list of supported C@t{++} ABI's. 24740 24741@item set cp-abi @var{abi} 24742@itemx set cp-abi auto 24743Set the current C@t{++} ABI to @var{abi}, or return to automatic detection. 24744@end table 24745 24746@node Auto-loading 24747@section Automatically loading associated files 24748@cindex auto-loading 24749 24750@value{GDBN} sometimes reads files with commands and settings automatically, 24751without being explicitly told so by the user. We call this feature 24752@dfn{auto-loading}. While auto-loading is useful for automatically adapting 24753@value{GDBN} to the needs of your project, it can sometimes produce unexpected 24754results or introduce security risks (e.g., if the file comes from untrusted 24755sources). 24756 24757@menu 24758* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit} 24759* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db} 24760 24761* Auto-loading safe path:: @samp{set/show/info auto-load safe-path} 24762* Auto-loading verbose mode:: @samp{set/show debug auto-load} 24763@end menu 24764 24765There are various kinds of files @value{GDBN} can automatically load. 24766In addition to these files, @value{GDBN} supports auto-loading code written 24767in various extension languages. @xref{Auto-loading extensions}. 24768 24769Note that loading of these associated files (including the local @file{.gdbinit} 24770file) requires accordingly configured @code{auto-load safe-path} 24771(@pxref{Auto-loading safe path}). 24772 24773For these reasons, @value{GDBN} includes commands and options to let you 24774control when to auto-load files and which files should be auto-loaded. 24775 24776@table @code 24777@anchor{set auto-load off} 24778@kindex set auto-load off 24779@item set auto-load off 24780Globally disable loading of all auto-loaded files. 24781You may want to use this command with the @samp{-iex} option 24782(@pxref{Option -init-eval-command}) such as: 24783@smallexample 24784$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile} 24785@end smallexample 24786 24787Be aware that system init file (@pxref{System-wide configuration}) 24788and init files from your home directory (@pxref{Home Directory Init File}) 24789still get read (as they come from generally trusted directories). 24790To prevent @value{GDBN} from auto-loading even those init files, use the 24791@option{-nx} option (@pxref{Mode Options}), in addition to 24792@code{set auto-load no}. 24793 24794@anchor{show auto-load} 24795@kindex show auto-load 24796@item show auto-load 24797Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled 24798or disabled. 24799 24800@smallexample 24801(gdb) show auto-load 24802gdb-scripts: Auto-loading of canned sequences of commands scripts is on. 24803libthread-db: Auto-loading of inferior specific libthread_db is on. 24804local-gdbinit: Auto-loading of .gdbinit script from current directory 24805 is on. 24806python-scripts: Auto-loading of Python scripts is on. 24807safe-path: List of directories from which it is safe to auto-load files 24808 is $debugdir:$datadir/auto-load. 24809scripts-directory: List of directories from which to load auto-loaded scripts 24810 is $debugdir:$datadir/auto-load. 24811@end smallexample 24812 24813@anchor{info auto-load} 24814@kindex info auto-load 24815@item info auto-load 24816Print whether each specific @samp{auto-load} file(s) have been auto-loaded or 24817not. 24818 24819@smallexample 24820(gdb) info auto-load 24821gdb-scripts: 24822Loaded Script 24823Yes /home/user/gdb/gdb-gdb.gdb 24824libthread-db: No auto-loaded libthread-db. 24825local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been 24826 loaded. 24827python-scripts: 24828Loaded Script 24829Yes /home/user/gdb/gdb-gdb.py 24830@end smallexample 24831@end table 24832 24833These are @value{GDBN} control commands for the auto-loading: 24834 24835@multitable @columnfractions .5 .5 24836@item @xref{set auto-load off}. 24837@tab Disable auto-loading globally. 24838@item @xref{show auto-load}. 24839@tab Show setting of all kinds of files. 24840@item @xref{info auto-load}. 24841@tab Show state of all kinds of files. 24842@item @xref{set auto-load gdb-scripts}. 24843@tab Control for @value{GDBN} command scripts. 24844@item @xref{show auto-load gdb-scripts}. 24845@tab Show setting of @value{GDBN} command scripts. 24846@item @xref{info auto-load gdb-scripts}. 24847@tab Show state of @value{GDBN} command scripts. 24848@item @xref{set auto-load python-scripts}. 24849@tab Control for @value{GDBN} Python scripts. 24850@item @xref{show auto-load python-scripts}. 24851@tab Show setting of @value{GDBN} Python scripts. 24852@item @xref{info auto-load python-scripts}. 24853@tab Show state of @value{GDBN} Python scripts. 24854@item @xref{set auto-load guile-scripts}. 24855@tab Control for @value{GDBN} Guile scripts. 24856@item @xref{show auto-load guile-scripts}. 24857@tab Show setting of @value{GDBN} Guile scripts. 24858@item @xref{info auto-load guile-scripts}. 24859@tab Show state of @value{GDBN} Guile scripts. 24860@item @xref{set auto-load scripts-directory}. 24861@tab Control for @value{GDBN} auto-loaded scripts location. 24862@item @xref{show auto-load scripts-directory}. 24863@tab Show @value{GDBN} auto-loaded scripts location. 24864@item @xref{add-auto-load-scripts-directory}. 24865@tab Add directory for auto-loaded scripts location list. 24866@item @xref{set auto-load local-gdbinit}. 24867@tab Control for init file in the current directory. 24868@item @xref{show auto-load local-gdbinit}. 24869@tab Show setting of init file in the current directory. 24870@item @xref{info auto-load local-gdbinit}. 24871@tab Show state of init file in the current directory. 24872@item @xref{set auto-load libthread-db}. 24873@tab Control for thread debugging library. 24874@item @xref{show auto-load libthread-db}. 24875@tab Show setting of thread debugging library. 24876@item @xref{info auto-load libthread-db}. 24877@tab Show state of thread debugging library. 24878@item @xref{set auto-load safe-path}. 24879@tab Control directories trusted for automatic loading. 24880@item @xref{show auto-load safe-path}. 24881@tab Show directories trusted for automatic loading. 24882@item @xref{add-auto-load-safe-path}. 24883@tab Add directory trusted for automatic loading. 24884@end multitable 24885 24886@node Init File in the Current Directory 24887@subsection Automatically loading init file in the current directory 24888@cindex auto-loading init file in the current directory 24889 24890By default, @value{GDBN} reads and executes the canned sequences of commands 24891from init file (if any) in the current working directory, 24892see @ref{Init File in the Current Directory during Startup}. 24893 24894Note that loading of this local @file{.gdbinit} file also requires accordingly 24895configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}). 24896 24897@table @code 24898@anchor{set auto-load local-gdbinit} 24899@kindex set auto-load local-gdbinit 24900@item set auto-load local-gdbinit [on|off] 24901Enable or disable the auto-loading of canned sequences of commands 24902(@pxref{Sequences}) found in init file in the current directory. 24903 24904@anchor{show auto-load local-gdbinit} 24905@kindex show auto-load local-gdbinit 24906@item show auto-load local-gdbinit 24907Show whether auto-loading of canned sequences of commands from init file in the 24908current directory is enabled or disabled. 24909 24910@anchor{info auto-load local-gdbinit} 24911@kindex info auto-load local-gdbinit 24912@item info auto-load local-gdbinit 24913Print whether canned sequences of commands from init file in the 24914current directory have been auto-loaded. 24915@end table 24916 24917@node libthread_db.so.1 file 24918@subsection Automatically loading thread debugging library 24919@cindex auto-loading libthread_db.so.1 24920 24921This feature is currently present only on @sc{gnu}/Linux native hosts. 24922 24923@value{GDBN} reads in some cases thread debugging library from places specific 24924to the inferior (@pxref{set libthread-db-search-path}). 24925 24926The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed 24927without checking this @samp{set auto-load libthread-db} switch as system 24928libraries have to be trusted in general. In all other cases of 24929@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set 24930auto-load libthread-db} is enabled before trying to open such thread debugging 24931library. 24932 24933Note that loading of this debugging library also requires accordingly configured 24934@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 24935 24936@table @code 24937@anchor{set auto-load libthread-db} 24938@kindex set auto-load libthread-db 24939@item set auto-load libthread-db [on|off] 24940Enable or disable the auto-loading of inferior specific thread debugging library. 24941 24942@anchor{show auto-load libthread-db} 24943@kindex show auto-load libthread-db 24944@item show auto-load libthread-db 24945Show whether auto-loading of inferior specific thread debugging library is 24946enabled or disabled. 24947 24948@anchor{info auto-load libthread-db} 24949@kindex info auto-load libthread-db 24950@item info auto-load libthread-db 24951Print the list of all loaded inferior specific thread debugging libraries and 24952for each such library print list of inferior @var{pid}s using it. 24953@end table 24954 24955@node Auto-loading safe path 24956@subsection Security restriction for auto-loading 24957@cindex auto-loading safe-path 24958 24959As the files of inferior can come from untrusted source (such as submitted by 24960an application user) @value{GDBN} does not always load any files automatically. 24961@value{GDBN} provides the @samp{set auto-load safe-path} setting to list 24962directories trusted for loading files not explicitly requested by user. 24963Each directory can also be a shell wildcard pattern. 24964 24965If the path is not set properly you will see a warning and the file will not 24966get loaded: 24967 24968@smallexample 24969$ ./gdb -q ./gdb 24970Reading symbols from /home/user/gdb/gdb...done. 24971warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been 24972 declined by your `auto-load safe-path' set 24973 to "$debugdir:$datadir/auto-load". 24974warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been 24975 declined by your `auto-load safe-path' set 24976 to "$debugdir:$datadir/auto-load". 24977@end smallexample 24978 24979@noindent 24980To instruct @value{GDBN} to go ahead and use the init files anyway, 24981invoke @value{GDBN} like this: 24982 24983@smallexample 24984$ gdb -q -iex "set auto-load safe-path /home/user/gdb" ./gdb 24985@end smallexample 24986 24987The list of trusted directories is controlled by the following commands: 24988 24989@table @code 24990@anchor{set auto-load safe-path} 24991@kindex set auto-load safe-path 24992@item set auto-load safe-path @r{[}@var{directories}@r{]} 24993Set the list of directories (and their subdirectories) trusted for automatic 24994loading and execution of scripts. You can also enter a specific trusted file. 24995Each directory can also be a shell wildcard pattern; wildcards do not match 24996directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch} 24997(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}). 24998If you omit @var{directories}, @samp{auto-load safe-path} will be reset to 24999its default value as specified during @value{GDBN} compilation. 25000 25001The list of directories uses path separator (@samp{:} on GNU and Unix 25002systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 25003to the @env{PATH} environment variable. 25004 25005@anchor{show auto-load safe-path} 25006@kindex show auto-load safe-path 25007@item show auto-load safe-path 25008Show the list of directories trusted for automatic loading and execution of 25009scripts. 25010 25011@anchor{add-auto-load-safe-path} 25012@kindex add-auto-load-safe-path 25013@item add-auto-load-safe-path 25014Add an entry (or list of entries) to the list of directories trusted for 25015automatic loading and execution of scripts. Multiple entries may be delimited 25016by the host platform path separator in use. 25017@end table 25018 25019This variable defaults to what @code{--with-auto-load-dir} has been configured 25020to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir} 25021substitution applies the same as for @ref{set auto-load scripts-directory}. 25022The default @code{set auto-load safe-path} value can be also overriden by 25023@value{GDBN} configuration option @option{--with-auto-load-safe-path}. 25024 25025Setting this variable to @file{/} disables this security protection, 25026corresponding @value{GDBN} configuration option is 25027@option{--without-auto-load-safe-path}. 25028This variable is supposed to be set to the system directories writable by the 25029system superuser only. Users can add their source directories in init files in 25030their home directories (@pxref{Home Directory Init File}). See also deprecated 25031init file in the current directory 25032(@pxref{Init File in the Current Directory during Startup}). 25033 25034To force @value{GDBN} to load the files it declined to load in the previous 25035example, you could use one of the following ways: 25036 25037@table @asis 25038@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb} 25039Specify this trusted directory (or a file) as additional component of the list. 25040You have to specify also any existing directories displayed by 25041by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example). 25042 25043@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}} 25044Specify this directory as in the previous case but just for a single 25045@value{GDBN} session. 25046 25047@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}} 25048Disable auto-loading safety for a single @value{GDBN} session. 25049This assumes all the files you debug during this @value{GDBN} session will come 25050from trusted sources. 25051 25052@item @kbd{./configure --without-auto-load-safe-path} 25053During compilation of @value{GDBN} you may disable any auto-loading safety. 25054This assumes all the files you will ever debug with this @value{GDBN} come from 25055trusted sources. 25056@end table 25057 25058On the other hand you can also explicitly forbid automatic files loading which 25059also suppresses any such warning messages: 25060 25061@table @asis 25062@item @kbd{gdb -iex "set auto-load no" @dots{}} 25063You can use @value{GDBN} command-line option for a single @value{GDBN} session. 25064 25065@item @file{~/.gdbinit}: @samp{set auto-load no} 25066Disable auto-loading globally for the user 25067(@pxref{Home Directory Init File}). While it is improbable, you could also 25068use system init file instead (@pxref{System-wide configuration}). 25069@end table 25070 25071This setting applies to the file names as entered by user. If no entry matches 25072@value{GDBN} tries as a last resort to also resolve all the file names into 25073their canonical form (typically resolving symbolic links) and compare the 25074entries again. @value{GDBN} already canonicalizes most of the filenames on its 25075own before starting the comparison so a canonical form of directories is 25076recommended to be entered. 25077 25078@node Auto-loading verbose mode 25079@subsection Displaying files tried for auto-load 25080@cindex auto-loading verbose mode 25081 25082For better visibility of all the file locations where you can place scripts to 25083be auto-loaded with inferior --- or to protect yourself against accidental 25084execution of untrusted scripts --- @value{GDBN} provides a feature for printing 25085all the files attempted to be loaded. Both existing and non-existing files may 25086be printed. 25087 25088For example the list of directories from which it is safe to auto-load files 25089(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which 25090may not be too obvious while setting it up. 25091 25092@smallexample 25093(gdb) set debug auto-load on 25094(gdb) file ~/src/t/true 25095auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb" 25096 for objfile "/tmp/true". 25097auto-load: Updating directories of "/usr:/opt". 25098auto-load: Using directory "/usr". 25099auto-load: Using directory "/opt". 25100warning: File "/tmp/true-gdb.gdb" auto-loading has been declined 25101 by your `auto-load safe-path' set to "/usr:/opt". 25102@end smallexample 25103 25104@table @code 25105@anchor{set debug auto-load} 25106@kindex set debug auto-load 25107@item set debug auto-load [on|off] 25108Set whether to print the filenames attempted to be auto-loaded. 25109 25110@anchor{show debug auto-load} 25111@kindex show debug auto-load 25112@item show debug auto-load 25113Show whether printing of the filenames attempted to be auto-loaded is turned 25114on or off. 25115@end table 25116 25117@node Messages/Warnings 25118@section Optional Warnings and Messages 25119 25120@cindex verbose operation 25121@cindex optional warnings 25122By default, @value{GDBN} is silent about its inner workings. If you are 25123running on a slow machine, you may want to use the @code{set verbose} 25124command. This makes @value{GDBN} tell you when it does a lengthy 25125internal operation, so you will not think it has crashed. 25126 25127Currently, the messages controlled by @code{set verbose} are those 25128which announce that the symbol table for a source file is being read; 25129see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}. 25130 25131@table @code 25132@kindex set verbose 25133@item set verbose on 25134Enables @value{GDBN} output of certain informational messages. 25135 25136@item set verbose off 25137Disables @value{GDBN} output of certain informational messages. 25138 25139@kindex show verbose 25140@item show verbose 25141Displays whether @code{set verbose} is on or off. 25142@end table 25143 25144By default, if @value{GDBN} encounters bugs in the symbol table of an 25145object file, it is silent; but if you are debugging a compiler, you may 25146find this information useful (@pxref{Symbol Errors, ,Errors Reading 25147Symbol Files}). 25148 25149@table @code 25150 25151@kindex set complaints 25152@item set complaints @var{limit} 25153Permits @value{GDBN} to output @var{limit} complaints about each type of 25154unusual symbols before becoming silent about the problem. Set 25155@var{limit} to zero to suppress all complaints; set it to a large number 25156to prevent complaints from being suppressed. 25157 25158@kindex show complaints 25159@item show complaints 25160Displays how many symbol complaints @value{GDBN} is permitted to produce. 25161 25162@end table 25163 25164@anchor{confirmation requests} 25165By default, @value{GDBN} is cautious, and asks what sometimes seems to be a 25166lot of stupid questions to confirm certain commands. For example, if 25167you try to run a program which is already running: 25168 25169@smallexample 25170(@value{GDBP}) run 25171The program being debugged has been started already. 25172Start it from the beginning? (y or n) 25173@end smallexample 25174 25175If you are willing to unflinchingly face the consequences of your own 25176commands, you can disable this ``feature'': 25177 25178@table @code 25179 25180@kindex set confirm 25181@cindex flinching 25182@cindex confirmation 25183@cindex stupid questions 25184@item set confirm off 25185Disables confirmation requests. Note that running @value{GDBN} with 25186the @option{--batch} option (@pxref{Mode Options, -batch}) also 25187automatically disables confirmation requests. 25188 25189@item set confirm on 25190Enables confirmation requests (the default). 25191 25192@kindex show confirm 25193@item show confirm 25194Displays state of confirmation requests. 25195 25196@end table 25197 25198@cindex command tracing 25199If you need to debug user-defined commands or sourced files you may find it 25200useful to enable @dfn{command tracing}. In this mode each command will be 25201printed as it is executed, prefixed with one or more @samp{+} symbols, the 25202quantity denoting the call depth of each command. 25203 25204@table @code 25205@kindex set trace-commands 25206@cindex command scripts, debugging 25207@item set trace-commands on 25208Enable command tracing. 25209@item set trace-commands off 25210Disable command tracing. 25211@item show trace-commands 25212Display the current state of command tracing. 25213@end table 25214 25215@node Debugging Output 25216@section Optional Messages about Internal Happenings 25217@cindex optional debugging messages 25218 25219@value{GDBN} has commands that enable optional debugging messages from 25220various @value{GDBN} subsystems; normally these commands are of 25221interest to @value{GDBN} maintainers, or when reporting a bug. This 25222section documents those commands. 25223 25224@table @code 25225@kindex set exec-done-display 25226@item set exec-done-display 25227Turns on or off the notification of asynchronous commands' 25228completion. When on, @value{GDBN} will print a message when an 25229asynchronous command finishes its execution. The default is off. 25230@kindex show exec-done-display 25231@item show exec-done-display 25232Displays the current setting of asynchronous command completion 25233notification. 25234@kindex set debug 25235@cindex ARM AArch64 25236@item set debug aarch64 25237Turns on or off display of debugging messages related to ARM AArch64. 25238The default is off. 25239@kindex show debug 25240@item show debug aarch64 25241Displays the current state of displaying debugging messages related to 25242ARM AArch64. 25243@cindex gdbarch debugging info 25244@cindex architecture debugging info 25245@item set debug arch 25246Turns on or off display of gdbarch debugging info. The default is off 25247@item show debug arch 25248Displays the current state of displaying gdbarch debugging info. 25249@item set debug aix-solib 25250@cindex AIX shared library debugging 25251Control display of debugging messages from the AIX shared library 25252support module. The default is off. 25253@item show debug aix-thread 25254Show the current state of displaying AIX shared library debugging messages. 25255@item set debug aix-thread 25256@cindex AIX threads 25257Display debugging messages about inner workings of the AIX thread 25258module. 25259@item show debug aix-thread 25260Show the current state of AIX thread debugging info display. 25261@item set debug check-physname 25262@cindex physname 25263Check the results of the ``physname'' computation. When reading DWARF 25264debugging information for C@t{++}, @value{GDBN} attempts to compute 25265each entity's name. @value{GDBN} can do this computation in two 25266different ways, depending on exactly what information is present. 25267When enabled, this setting causes @value{GDBN} to compute the names 25268both ways and display any discrepancies. 25269@item show debug check-physname 25270Show the current state of ``physname'' checking. 25271@item set debug coff-pe-read 25272@cindex COFF/PE exported symbols 25273Control display of debugging messages related to reading of COFF/PE 25274exported symbols. The default is off. 25275@item show debug coff-pe-read 25276Displays the current state of displaying debugging messages related to 25277reading of COFF/PE exported symbols. 25278@item set debug dwarf-die 25279@cindex DWARF DIEs 25280Dump DWARF DIEs after they are read in. 25281The value is the number of nesting levels to print. 25282A value of zero turns off the display. 25283@item show debug dwarf-die 25284Show the current state of DWARF DIE debugging. 25285@item set debug dwarf-line 25286@cindex DWARF Line Tables 25287Turns on or off display of debugging messages related to reading 25288DWARF line tables. The default is 0 (off). 25289A value of 1 provides basic information. 25290A value greater than 1 provides more verbose information. 25291@item show debug dwarf-line 25292Show the current state of DWARF line table debugging. 25293@item set debug dwarf-read 25294@cindex DWARF Reading 25295Turns on or off display of debugging messages related to reading 25296DWARF debug info. The default is 0 (off). 25297A value of 1 provides basic information. 25298A value greater than 1 provides more verbose information. 25299@item show debug dwarf-read 25300Show the current state of DWARF reader debugging. 25301@item set debug displaced 25302@cindex displaced stepping debugging info 25303Turns on or off display of @value{GDBN} debugging info for the 25304displaced stepping support. The default is off. 25305@item show debug displaced 25306Displays the current state of displaying @value{GDBN} debugging info 25307related to displaced stepping. 25308@item set debug event 25309@cindex event debugging info 25310Turns on or off display of @value{GDBN} event debugging info. The 25311default is off. 25312@item show debug event 25313Displays the current state of displaying @value{GDBN} event debugging 25314info. 25315@item set debug expression 25316@cindex expression debugging info 25317Turns on or off display of debugging info about @value{GDBN} 25318expression parsing. The default is off. 25319@item show debug expression 25320Displays the current state of displaying debugging info about 25321@value{GDBN} expression parsing. 25322@item set debug fbsd-lwp 25323@cindex FreeBSD LWP debug messages 25324Turns on or off debugging messages from the FreeBSD LWP debug support. 25325@item show debug fbsd-lwp 25326Show the current state of FreeBSD LWP debugging messages. 25327@item set debug fbsd-nat 25328@cindex FreeBSD native target debug messages 25329Turns on or off debugging messages from the FreeBSD native target. 25330@item show debug fbsd-nat 25331Show the current state of FreeBSD native target debugging messages. 25332@item set debug frame 25333@cindex frame debugging info 25334Turns on or off display of @value{GDBN} frame debugging info. The 25335default is off. 25336@item show debug frame 25337Displays the current state of displaying @value{GDBN} frame debugging 25338info. 25339@item set debug gnu-nat 25340@cindex @sc{gnu}/Hurd debug messages 25341Turn on or off debugging messages from the @sc{gnu}/Hurd debug support. 25342@item show debug gnu-nat 25343Show the current state of @sc{gnu}/Hurd debugging messages. 25344@item set debug infrun 25345@cindex inferior debugging info 25346Turns on or off display of @value{GDBN} debugging info for running the inferior. 25347The default is off. @file{infrun.c} contains GDB's runtime state machine used 25348for implementing operations such as single-stepping the inferior. 25349@item show debug infrun 25350Displays the current state of @value{GDBN} inferior debugging. 25351@item set debug jit 25352@cindex just-in-time compilation, debugging messages 25353Turn on or off debugging messages from JIT debug support. 25354@item show debug jit 25355Displays the current state of @value{GDBN} JIT debugging. 25356@item set debug lin-lwp 25357@cindex @sc{gnu}/Linux LWP debug messages 25358@cindex Linux lightweight processes 25359Turn on or off debugging messages from the Linux LWP debug support. 25360@item show debug lin-lwp 25361Show the current state of Linux LWP debugging messages. 25362@item set debug linux-namespaces 25363@cindex @sc{gnu}/Linux namespaces debug messages 25364Turn on or off debugging messages from the Linux namespaces debug support. 25365@item show debug linux-namespaces 25366Show the current state of Linux namespaces debugging messages. 25367@item set debug mach-o 25368@cindex Mach-O symbols processing 25369Control display of debugging messages related to Mach-O symbols 25370processing. The default is off. 25371@item show debug mach-o 25372Displays the current state of displaying debugging messages related to 25373reading of COFF/PE exported symbols. 25374@item set debug notification 25375@cindex remote async notification debugging info 25376Turn on or off debugging messages about remote async notification. 25377The default is off. 25378@item show debug notification 25379Displays the current state of remote async notification debugging messages. 25380@item set debug observer 25381@cindex observer debugging info 25382Turns on or off display of @value{GDBN} observer debugging. This 25383includes info such as the notification of observable events. 25384@item show debug observer 25385Displays the current state of observer debugging. 25386@item set debug overload 25387@cindex C@t{++} overload debugging info 25388Turns on or off display of @value{GDBN} C@t{++} overload debugging 25389info. This includes info such as ranking of functions, etc. The default 25390is off. 25391@item show debug overload 25392Displays the current state of displaying @value{GDBN} C@t{++} overload 25393debugging info. 25394@cindex expression parser, debugging info 25395@cindex debug expression parser 25396@item set debug parser 25397Turns on or off the display of expression parser debugging output. 25398Internally, this sets the @code{yydebug} variable in the expression 25399parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for 25400details. The default is off. 25401@item show debug parser 25402Show the current state of expression parser debugging. 25403@cindex packets, reporting on stdout 25404@cindex serial connections, debugging 25405@cindex debug remote protocol 25406@cindex remote protocol debugging 25407@cindex display remote packets 25408@item set debug remote 25409Turns on or off display of reports on all packets sent back and forth across 25410the serial line to the remote machine. The info is printed on the 25411@value{GDBN} standard output stream. The default is off. 25412@item show debug remote 25413Displays the state of display of remote packets. 25414 25415@item set debug separate-debug-file 25416Turns on or off display of debug output about separate debug file search. 25417@item show debug separate-debug-file 25418Displays the state of separate debug file search debug output. 25419 25420@item set debug serial 25421Turns on or off display of @value{GDBN} serial debugging info. The 25422default is off. 25423@item show debug serial 25424Displays the current state of displaying @value{GDBN} serial debugging 25425info. 25426@item set debug solib-frv 25427@cindex FR-V shared-library debugging 25428Turn on or off debugging messages for FR-V shared-library code. 25429@item show debug solib-frv 25430Display the current state of FR-V shared-library code debugging 25431messages. 25432@item set debug symbol-lookup 25433@cindex symbol lookup 25434Turns on or off display of debugging messages related to symbol lookup. 25435The default is 0 (off). 25436A value of 1 provides basic information. 25437A value greater than 1 provides more verbose information. 25438@item show debug symbol-lookup 25439Show the current state of symbol lookup debugging messages. 25440@item set debug symfile 25441@cindex symbol file functions 25442Turns on or off display of debugging messages related to symbol file functions. 25443The default is off. @xref{Files}. 25444@item show debug symfile 25445Show the current state of symbol file debugging messages. 25446@item set debug symtab-create 25447@cindex symbol table creation 25448Turns on or off display of debugging messages related to symbol table creation. 25449The default is 0 (off). 25450A value of 1 provides basic information. 25451A value greater than 1 provides more verbose information. 25452@item show debug symtab-create 25453Show the current state of symbol table creation debugging. 25454@item set debug target 25455@cindex target debugging info 25456Turns on or off display of @value{GDBN} target debugging info. This info 25457includes what is going on at the target level of GDB, as it happens. The 25458default is 0. Set it to 1 to track events, and to 2 to also track the 25459value of large memory transfers. 25460@item show debug target 25461Displays the current state of displaying @value{GDBN} target debugging 25462info. 25463@item set debug timestamp 25464@cindex timestampping debugging info 25465Turns on or off display of timestamps with @value{GDBN} debugging info. 25466When enabled, seconds and microseconds are displayed before each debugging 25467message. 25468@item show debug timestamp 25469Displays the current state of displaying timestamps with @value{GDBN} 25470debugging info. 25471@item set debug varobj 25472@cindex variable object debugging info 25473Turns on or off display of @value{GDBN} variable object debugging 25474info. The default is off. 25475@item show debug varobj 25476Displays the current state of displaying @value{GDBN} variable object 25477debugging info. 25478@item set debug xml 25479@cindex XML parser debugging 25480Turn on or off debugging messages for built-in XML parsers. 25481@item show debug xml 25482Displays the current state of XML debugging messages. 25483@end table 25484 25485@node Other Misc Settings 25486@section Other Miscellaneous Settings 25487@cindex miscellaneous settings 25488 25489@table @code 25490@kindex set interactive-mode 25491@item set interactive-mode 25492If @code{on}, forces @value{GDBN} to assume that GDB was started 25493in a terminal. In practice, this means that @value{GDBN} should wait 25494for the user to answer queries generated by commands entered at 25495the command prompt. If @code{off}, forces @value{GDBN} to operate 25496in the opposite mode, and it uses the default answers to all queries. 25497If @code{auto} (the default), @value{GDBN} tries to determine whether 25498its standard input is a terminal, and works in interactive-mode if it 25499is, non-interactively otherwise. 25500 25501In the vast majority of cases, the debugger should be able to guess 25502correctly which mode should be used. But this setting can be useful 25503in certain specific cases, such as running a MinGW @value{GDBN} 25504inside a cygwin window. 25505 25506@kindex show interactive-mode 25507@item show interactive-mode 25508Displays whether the debugger is operating in interactive mode or not. 25509@end table 25510 25511@node Extending GDB 25512@chapter Extending @value{GDBN} 25513@cindex extending GDB 25514 25515@value{GDBN} provides several mechanisms for extension. 25516@value{GDBN} also provides the ability to automatically load 25517extensions when it reads a file for debugging. This allows the 25518user to automatically customize @value{GDBN} for the program 25519being debugged. 25520 25521@menu 25522* Sequences:: Canned Sequences of @value{GDBN} Commands 25523* Python:: Extending @value{GDBN} using Python 25524* Guile:: Extending @value{GDBN} using Guile 25525* Auto-loading extensions:: Automatically loading extensions 25526* Multiple Extension Languages:: Working with multiple extension languages 25527* Aliases:: Creating new spellings of existing commands 25528@end menu 25529 25530To facilitate the use of extension languages, @value{GDBN} is capable 25531of evaluating the contents of a file. When doing so, @value{GDBN} 25532can recognize which extension language is being used by looking at 25533the filename extension. Files with an unrecognized filename extension 25534are always treated as a @value{GDBN} Command Files. 25535@xref{Command Files,, Command files}. 25536 25537You can control how @value{GDBN} evaluates these files with the following 25538setting: 25539 25540@table @code 25541@kindex set script-extension 25542@kindex show script-extension 25543@item set script-extension off 25544All scripts are always evaluated as @value{GDBN} Command Files. 25545 25546@item set script-extension soft 25547The debugger determines the scripting language based on filename 25548extension. If this scripting language is supported, @value{GDBN} 25549evaluates the script using that language. Otherwise, it evaluates 25550the file as a @value{GDBN} Command File. 25551 25552@item set script-extension strict 25553The debugger determines the scripting language based on filename 25554extension, and evaluates the script using that language. If the 25555language is not supported, then the evaluation fails. 25556 25557@item show script-extension 25558Display the current value of the @code{script-extension} option. 25559 25560@end table 25561 25562@node Sequences 25563@section Canned Sequences of Commands 25564 25565Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint 25566Command Lists}), @value{GDBN} provides two ways to store sequences of 25567commands for execution as a unit: user-defined commands and command 25568files. 25569 25570@menu 25571* Define:: How to define your own commands 25572* Hooks:: Hooks for user-defined commands 25573* Command Files:: How to write scripts of commands to be stored in a file 25574* Output:: Commands for controlled output 25575* Auto-loading sequences:: Controlling auto-loaded command files 25576@end menu 25577 25578@node Define 25579@subsection User-defined Commands 25580 25581@cindex user-defined command 25582@cindex arguments, to user-defined commands 25583A @dfn{user-defined command} is a sequence of @value{GDBN} commands to 25584which you assign a new name as a command. This is done with the 25585@code{define} command. User commands may accept an unlimited number of arguments 25586separated by whitespace. Arguments are accessed within the user command 25587via @code{$arg0@dots{}$argN}. A trivial example: 25588 25589@smallexample 25590define adder 25591 print $arg0 + $arg1 + $arg2 25592end 25593@end smallexample 25594 25595@noindent 25596To execute the command use: 25597 25598@smallexample 25599adder 1 2 3 25600@end smallexample 25601 25602@noindent 25603This defines the command @code{adder}, which prints the sum of 25604its three arguments. Note the arguments are text substitutions, so they may 25605reference variables, use complex expressions, or even perform inferior 25606functions calls. 25607 25608@cindex argument count in user-defined commands 25609@cindex how many arguments (user-defined commands) 25610In addition, @code{$argc} may be used to find out how many arguments have 25611been passed. 25612 25613@smallexample 25614define adder 25615 if $argc == 2 25616 print $arg0 + $arg1 25617 end 25618 if $argc == 3 25619 print $arg0 + $arg1 + $arg2 25620 end 25621end 25622@end smallexample 25623 25624Combining with the @code{eval} command (@pxref{eval}) makes it easier 25625to process a variable number of arguments: 25626 25627@smallexample 25628define adder 25629 set $i = 0 25630 set $sum = 0 25631 while $i < $argc 25632 eval "set $sum = $sum + $arg%d", $i 25633 set $i = $i + 1 25634 end 25635 print $sum 25636end 25637@end smallexample 25638 25639@table @code 25640 25641@kindex define 25642@item define @var{commandname} 25643Define a command named @var{commandname}. If there is already a command 25644by that name, you are asked to confirm that you want to redefine it. 25645The argument @var{commandname} may be a bare command name consisting of letters, 25646numbers, dashes, and underscores. It may also start with any predefined 25647prefix command. For example, @samp{define target my-target} creates 25648a user-defined @samp{target my-target} command. 25649 25650The definition of the command is made up of other @value{GDBN} command lines, 25651which are given following the @code{define} command. The end of these 25652commands is marked by a line containing @code{end}. 25653 25654@kindex document 25655@kindex end@r{ (user-defined commands)} 25656@item document @var{commandname} 25657Document the user-defined command @var{commandname}, so that it can be 25658accessed by @code{help}. The command @var{commandname} must already be 25659defined. This command reads lines of documentation just as @code{define} 25660reads the lines of the command definition, ending with @code{end}. 25661After the @code{document} command is finished, @code{help} on command 25662@var{commandname} displays the documentation you have written. 25663 25664You may use the @code{document} command again to change the 25665documentation of a command. Redefining the command with @code{define} 25666does not change the documentation. 25667 25668@kindex dont-repeat 25669@cindex don't repeat command 25670@item dont-repeat 25671Used inside a user-defined command, this tells @value{GDBN} that this 25672command should not be repeated when the user hits @key{RET} 25673(@pxref{Command Syntax, repeat last command}). 25674 25675@kindex help user-defined 25676@item help user-defined 25677List all user-defined commands and all python commands defined in class 25678COMAND_USER. The first line of the documentation or docstring is 25679included (if any). 25680 25681@kindex show user 25682@item show user 25683@itemx show user @var{commandname} 25684Display the @value{GDBN} commands used to define @var{commandname} (but 25685not its documentation). If no @var{commandname} is given, display the 25686definitions for all user-defined commands. 25687This does not work for user-defined python commands. 25688 25689@cindex infinite recursion in user-defined commands 25690@kindex show max-user-call-depth 25691@kindex set max-user-call-depth 25692@item show max-user-call-depth 25693@itemx set max-user-call-depth 25694The value of @code{max-user-call-depth} controls how many recursion 25695levels are allowed in user-defined commands before @value{GDBN} suspects an 25696infinite recursion and aborts the command. 25697This does not apply to user-defined python commands. 25698@end table 25699 25700In addition to the above commands, user-defined commands frequently 25701use control flow commands, described in @ref{Command Files}. 25702 25703When user-defined commands are executed, the 25704commands of the definition are not printed. An error in any command 25705stops execution of the user-defined command. 25706 25707If used interactively, commands that would ask for confirmation proceed 25708without asking when used inside a user-defined command. Many @value{GDBN} 25709commands that normally print messages to say what they are doing omit the 25710messages when used in a user-defined command. 25711 25712@node Hooks 25713@subsection User-defined Command Hooks 25714@cindex command hooks 25715@cindex hooks, for commands 25716@cindex hooks, pre-command 25717 25718@kindex hook 25719You may define @dfn{hooks}, which are a special kind of user-defined 25720command. Whenever you run the command @samp{foo}, if the user-defined 25721command @samp{hook-foo} exists, it is executed (with no arguments) 25722before that command. 25723 25724@cindex hooks, post-command 25725@kindex hookpost 25726A hook may also be defined which is run after the command you executed. 25727Whenever you run the command @samp{foo}, if the user-defined command 25728@samp{hookpost-foo} exists, it is executed (with no arguments) after 25729that command. Post-execution hooks may exist simultaneously with 25730pre-execution hooks, for the same command. 25731 25732It is valid for a hook to call the command which it hooks. If this 25733occurs, the hook is not re-executed, thereby avoiding infinite recursion. 25734 25735@c It would be nice if hookpost could be passed a parameter indicating 25736@c if the command it hooks executed properly or not. FIXME! 25737 25738@kindex stop@r{, a pseudo-command} 25739In addition, a pseudo-command, @samp{stop} exists. Defining 25740(@samp{hook-stop}) makes the associated commands execute every time 25741execution stops in your program: before breakpoint commands are run, 25742displays are printed, or the stack frame is printed. 25743 25744For example, to ignore @code{SIGALRM} signals while 25745single-stepping, but treat them normally during normal execution, 25746you could define: 25747 25748@smallexample 25749define hook-stop 25750handle SIGALRM nopass 25751end 25752 25753define hook-run 25754handle SIGALRM pass 25755end 25756 25757define hook-continue 25758handle SIGALRM pass 25759end 25760@end smallexample 25761 25762As a further example, to hook at the beginning and end of the @code{echo} 25763command, and to add extra text to the beginning and end of the message, 25764you could define: 25765 25766@smallexample 25767define hook-echo 25768echo <<<--- 25769end 25770 25771define hookpost-echo 25772echo --->>>\n 25773end 25774 25775(@value{GDBP}) echo Hello World 25776<<<---Hello World--->>> 25777(@value{GDBP}) 25778 25779@end smallexample 25780 25781You can define a hook for any single-word command in @value{GDBN}, but 25782not for command aliases; you should define a hook for the basic command 25783name, e.g.@: @code{backtrace} rather than @code{bt}. 25784@c FIXME! So how does Joe User discover whether a command is an alias 25785@c or not? 25786You can hook a multi-word command by adding @code{hook-} or 25787@code{hookpost-} to the last word of the command, e.g.@: 25788@samp{define target hook-remote} to add a hook to @samp{target remote}. 25789 25790If an error occurs during the execution of your hook, execution of 25791@value{GDBN} commands stops and @value{GDBN} issues a prompt 25792(before the command that you actually typed had a chance to run). 25793 25794If you try to define a hook which does not match any known command, you 25795get a warning from the @code{define} command. 25796 25797@node Command Files 25798@subsection Command Files 25799 25800@cindex command files 25801@cindex scripting commands 25802A command file for @value{GDBN} is a text file made of lines that are 25803@value{GDBN} commands. Comments (lines starting with @kbd{#}) may 25804also be included. An empty line in a command file does nothing; it 25805does not mean to repeat the last command, as it would from the 25806terminal. 25807 25808You can request the execution of a command file with the @code{source} 25809command. Note that the @code{source} command is also used to evaluate 25810scripts that are not Command Files. The exact behavior can be configured 25811using the @code{script-extension} setting. 25812@xref{Extending GDB,, Extending GDB}. 25813 25814@table @code 25815@kindex source 25816@cindex execute commands from a file 25817@item source [-s] [-v] @var{filename} 25818Execute the command file @var{filename}. 25819@end table 25820 25821The lines in a command file are generally executed sequentially, 25822unless the order of execution is changed by one of the 25823@emph{flow-control commands} described below. The commands are not 25824printed as they are executed. An error in any command terminates 25825execution of the command file and control is returned to the console. 25826 25827@value{GDBN} first searches for @var{filename} in the current directory. 25828If the file is not found there, and @var{filename} does not specify a 25829directory, then @value{GDBN} also looks for the file on the source search path 25830(specified with the @samp{directory} command); 25831except that @file{$cdir} is not searched because the compilation directory 25832is not relevant to scripts. 25833 25834If @code{-s} is specified, then @value{GDBN} searches for @var{filename} 25835on the search path even if @var{filename} specifies a directory. 25836The search is done by appending @var{filename} to each element of the 25837search path. So, for example, if @var{filename} is @file{mylib/myscript} 25838and the search path contains @file{/home/user} then @value{GDBN} will 25839look for the script @file{/home/user/mylib/myscript}. 25840The search is also done if @var{filename} is an absolute path. 25841For example, if @var{filename} is @file{/tmp/myscript} and 25842the search path contains @file{/home/user} then @value{GDBN} will 25843look for the script @file{/home/user/tmp/myscript}. 25844For DOS-like systems, if @var{filename} contains a drive specification, 25845it is stripped before concatenation. For example, if @var{filename} is 25846@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN} 25847will look for the script @file{c:/tmp/myscript}. 25848 25849If @code{-v}, for verbose mode, is given then @value{GDBN} displays 25850each command as it is executed. The option must be given before 25851@var{filename}, and is interpreted as part of the filename anywhere else. 25852 25853Commands that would ask for confirmation if used interactively proceed 25854without asking when used in a command file. Many @value{GDBN} commands that 25855normally print messages to say what they are doing omit the messages 25856when called from command files. 25857 25858@value{GDBN} also accepts command input from standard input. In this 25859mode, normal output goes to standard output and error output goes to 25860standard error. Errors in a command file supplied on standard input do 25861not terminate execution of the command file---execution continues with 25862the next command. 25863 25864@smallexample 25865gdb < cmds > log 2>&1 25866@end smallexample 25867 25868(The syntax above will vary depending on the shell used.) This example 25869will execute commands from the file @file{cmds}. All output and errors 25870would be directed to @file{log}. 25871 25872Since commands stored on command files tend to be more general than 25873commands typed interactively, they frequently need to deal with 25874complicated situations, such as different or unexpected values of 25875variables and symbols, changes in how the program being debugged is 25876built, etc. @value{GDBN} provides a set of flow-control commands to 25877deal with these complexities. Using these commands, you can write 25878complex scripts that loop over data structures, execute commands 25879conditionally, etc. 25880 25881@table @code 25882@kindex if 25883@kindex else 25884@item if 25885@itemx else 25886This command allows to include in your script conditionally executed 25887commands. The @code{if} command takes a single argument, which is an 25888expression to evaluate. It is followed by a series of commands that 25889are executed only if the expression is true (its value is nonzero). 25890There can then optionally be an @code{else} line, followed by a series 25891of commands that are only executed if the expression was false. The 25892end of the list is marked by a line containing @code{end}. 25893 25894@kindex while 25895@item while 25896This command allows to write loops. Its syntax is similar to 25897@code{if}: the command takes a single argument, which is an expression 25898to evaluate, and must be followed by the commands to execute, one per 25899line, terminated by an @code{end}. These commands are called the 25900@dfn{body} of the loop. The commands in the body of @code{while} are 25901executed repeatedly as long as the expression evaluates to true. 25902 25903@kindex loop_break 25904@item loop_break 25905This command exits the @code{while} loop in whose body it is included. 25906Execution of the script continues after that @code{while}s @code{end} 25907line. 25908 25909@kindex loop_continue 25910@item loop_continue 25911This command skips the execution of the rest of the body of commands 25912in the @code{while} loop in whose body it is included. Execution 25913branches to the beginning of the @code{while} loop, where it evaluates 25914the controlling expression. 25915 25916@kindex end@r{ (if/else/while commands)} 25917@item end 25918Terminate the block of commands that are the body of @code{if}, 25919@code{else}, or @code{while} flow-control commands. 25920@end table 25921 25922 25923@node Output 25924@subsection Commands for Controlled Output 25925 25926During the execution of a command file or a user-defined command, normal 25927@value{GDBN} output is suppressed; the only output that appears is what is 25928explicitly printed by the commands in the definition. This section 25929describes three commands useful for generating exactly the output you 25930want. 25931 25932@table @code 25933@kindex echo 25934@item echo @var{text} 25935@c I do not consider backslash-space a standard C escape sequence 25936@c because it is not in ANSI. 25937Print @var{text}. Nonprinting characters can be included in 25938@var{text} using C escape sequences, such as @samp{\n} to print a 25939newline. @strong{No newline is printed unless you specify one.} 25940In addition to the standard C escape sequences, a backslash followed 25941by a space stands for a space. This is useful for displaying a 25942string with spaces at the beginning or the end, since leading and 25943trailing spaces are otherwise trimmed from all arguments. 25944To print @samp{@w{ }and foo =@w{ }}, use the command 25945@samp{echo \@w{ }and foo = \@w{ }}. 25946 25947A backslash at the end of @var{text} can be used, as in C, to continue 25948the command onto subsequent lines. For example, 25949 25950@smallexample 25951echo This is some text\n\ 25952which is continued\n\ 25953onto several lines.\n 25954@end smallexample 25955 25956produces the same output as 25957 25958@smallexample 25959echo This is some text\n 25960echo which is continued\n 25961echo onto several lines.\n 25962@end smallexample 25963 25964@kindex output 25965@item output @var{expression} 25966Print the value of @var{expression} and nothing but that value: no 25967newlines, no @samp{$@var{nn} = }. The value is not entered in the 25968value history either. @xref{Expressions, ,Expressions}, for more information 25969on expressions. 25970 25971@item output/@var{fmt} @var{expression} 25972Print the value of @var{expression} in format @var{fmt}. You can use 25973the same formats as for @code{print}. @xref{Output Formats,,Output 25974Formats}, for more information. 25975 25976@kindex printf 25977@item printf @var{template}, @var{expressions}@dots{} 25978Print the values of one or more @var{expressions} under the control of 25979the string @var{template}. To print several values, make 25980@var{expressions} be a comma-separated list of individual expressions, 25981which may be either numbers or pointers. Their values are printed as 25982specified by @var{template}, exactly as a C program would do by 25983executing the code below: 25984 25985@smallexample 25986printf (@var{template}, @var{expressions}@dots{}); 25987@end smallexample 25988 25989As in @code{C} @code{printf}, ordinary characters in @var{template} 25990are printed verbatim, while @dfn{conversion specification} introduced 25991by the @samp{%} character cause subsequent @var{expressions} to be 25992evaluated, their values converted and formatted according to type and 25993style information encoded in the conversion specifications, and then 25994printed. 25995 25996For example, you can print two values in hex like this: 25997 25998@smallexample 25999printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo 26000@end smallexample 26001 26002@code{printf} supports all the standard @code{C} conversion 26003specifications, including the flags and modifiers between the @samp{%} 26004character and the conversion letter, with the following exceptions: 26005 26006@itemize @bullet 26007@item 26008The argument-ordering modifiers, such as @samp{2$}, are not supported. 26009 26010@item 26011The modifier @samp{*} is not supported for specifying precision or 26012width. 26013 26014@item 26015The @samp{'} flag (for separation of digits into groups according to 26016@code{LC_NUMERIC'}) is not supported. 26017 26018@item 26019The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not 26020supported. 26021 26022@item 26023The conversion letter @samp{n} (as in @samp{%n}) is not supported. 26024 26025@item 26026The conversion letters @samp{a} and @samp{A} are not supported. 26027@end itemize 26028 26029@noindent 26030Note that the @samp{ll} type modifier is supported only if the 26031underlying @code{C} implementation used to build @value{GDBN} supports 26032the @code{long long int} type, and the @samp{L} type modifier is 26033supported only if @code{long double} type is available. 26034 26035As in @code{C}, @code{printf} supports simple backslash-escape 26036sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"}, 26037@samp{\a}, and @samp{\f}, that consist of backslash followed by a 26038single character. Octal and hexadecimal escape sequences are not 26039supported. 26040 26041Additionally, @code{printf} supports conversion specifications for DFP 26042(@dfn{Decimal Floating Point}) types using the following length modifiers 26043together with a floating point specifier. 26044letters: 26045 26046@itemize @bullet 26047@item 26048@samp{H} for printing @code{Decimal32} types. 26049 26050@item 26051@samp{D} for printing @code{Decimal64} types. 26052 26053@item 26054@samp{DD} for printing @code{Decimal128} types. 26055@end itemize 26056 26057If the underlying @code{C} implementation used to build @value{GDBN} has 26058support for the three length modifiers for DFP types, other modifiers 26059such as width and precision will also be available for @value{GDBN} to use. 26060 26061In case there is no such @code{C} support, no additional modifiers will be 26062available and the value will be printed in the standard way. 26063 26064Here's an example of printing DFP types using the above conversion letters: 26065@smallexample 26066printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl 26067@end smallexample 26068 26069@anchor{eval} 26070@kindex eval 26071@item eval @var{template}, @var{expressions}@dots{} 26072Convert the values of one or more @var{expressions} under the control of 26073the string @var{template} to a command line, and call it. 26074 26075@end table 26076 26077@node Auto-loading sequences 26078@subsection Controlling auto-loading native @value{GDBN} scripts 26079@cindex native script auto-loading 26080 26081When a new object file is read (for example, due to the @code{file} 26082command, or because the inferior has loaded a shared library), 26083@value{GDBN} will look for the command file @file{@var{objfile}-gdb.gdb}. 26084@xref{Auto-loading extensions}. 26085 26086Auto-loading can be enabled or disabled, 26087and the list of auto-loaded scripts can be printed. 26088 26089@table @code 26090@anchor{set auto-load gdb-scripts} 26091@kindex set auto-load gdb-scripts 26092@item set auto-load gdb-scripts [on|off] 26093Enable or disable the auto-loading of canned sequences of commands scripts. 26094 26095@anchor{show auto-load gdb-scripts} 26096@kindex show auto-load gdb-scripts 26097@item show auto-load gdb-scripts 26098Show whether auto-loading of canned sequences of commands scripts is enabled or 26099disabled. 26100 26101@anchor{info auto-load gdb-scripts} 26102@kindex info auto-load gdb-scripts 26103@cindex print list of auto-loaded canned sequences of commands scripts 26104@item info auto-load gdb-scripts [@var{regexp}] 26105Print the list of all canned sequences of commands scripts that @value{GDBN} 26106auto-loaded. 26107@end table 26108 26109If @var{regexp} is supplied only canned sequences of commands scripts with 26110matching names are printed. 26111 26112@c Python docs live in a separate file. 26113@include python.texi 26114 26115@c Guile docs live in a separate file. 26116@include guile.texi 26117 26118@node Auto-loading extensions 26119@section Auto-loading extensions 26120@cindex auto-loading extensions 26121 26122@value{GDBN} provides two mechanisms for automatically loading extensions 26123when a new object file is read (for example, due to the @code{file} 26124command, or because the inferior has loaded a shared library): 26125@file{@var{objfile}-gdb.@var{ext}} and the @code{.debug_gdb_scripts} 26126section of modern file formats like ELF. 26127 26128@menu 26129* objfile-gdb.ext file: objfile-gdbdotext file. The @file{@var{objfile}-gdb.@var{ext}} file 26130* .debug_gdb_scripts section: dotdebug_gdb_scripts section. The @code{.debug_gdb_scripts} section 26131* Which flavor to choose?:: 26132@end menu 26133 26134The auto-loading feature is useful for supplying application-specific 26135debugging commands and features. 26136 26137Auto-loading can be enabled or disabled, 26138and the list of auto-loaded scripts can be printed. 26139See the @samp{auto-loading} section of each extension language 26140for more information. 26141For @value{GDBN} command files see @ref{Auto-loading sequences}. 26142For Python files see @ref{Python Auto-loading}. 26143 26144Note that loading of this script file also requires accordingly configured 26145@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 26146 26147@node objfile-gdbdotext file 26148@subsection The @file{@var{objfile}-gdb.@var{ext}} file 26149@cindex @file{@var{objfile}-gdb.gdb} 26150@cindex @file{@var{objfile}-gdb.py} 26151@cindex @file{@var{objfile}-gdb.scm} 26152 26153When a new object file is read, @value{GDBN} looks for a file named 26154@file{@var{objfile}-gdb.@var{ext}} (we call it @var{script-name} below), 26155where @var{objfile} is the object file's name and 26156where @var{ext} is the file extension for the extension language: 26157 26158@table @code 26159@item @file{@var{objfile}-gdb.gdb} 26160GDB's own command language 26161@item @file{@var{objfile}-gdb.py} 26162Python 26163@item @file{@var{objfile}-gdb.scm} 26164Guile 26165@end table 26166 26167@var{script-name} is formed by ensuring that the file name of @var{objfile} 26168is absolute, following all symlinks, and resolving @code{.} and @code{..} 26169components, and appending the @file{-gdb.@var{ext}} suffix. 26170If this file exists and is readable, @value{GDBN} will evaluate it as a 26171script in the specified extension language. 26172 26173If this file does not exist, then @value{GDBN} will look for 26174@var{script-name} file in all of the directories as specified below. 26175 26176Note that loading of these files requires an accordingly configured 26177@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 26178 26179For object files using @file{.exe} suffix @value{GDBN} tries to load first the 26180scripts normally according to its @file{.exe} filename. But if no scripts are 26181found @value{GDBN} also tries script filenames matching the object file without 26182its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it 26183is attempted on any platform. This makes the script filenames compatible 26184between Unix and MS-Windows hosts. 26185 26186@table @code 26187@anchor{set auto-load scripts-directory} 26188@kindex set auto-load scripts-directory 26189@item set auto-load scripts-directory @r{[}@var{directories}@r{]} 26190Control @value{GDBN} auto-loaded scripts location. Multiple directory entries 26191may be delimited by the host platform path separator in use 26192(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS). 26193 26194Each entry here needs to be covered also by the security setting 26195@code{set auto-load safe-path} (@pxref{set auto-load safe-path}). 26196 26197@anchor{with-auto-load-dir} 26198This variable defaults to @file{$debugdir:$datadir/auto-load}. The default 26199@code{set auto-load safe-path} value can be also overriden by @value{GDBN} 26200configuration option @option{--with-auto-load-dir}. 26201 26202Any reference to @file{$debugdir} will get replaced by 26203@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any 26204reference to @file{$datadir} will get replaced by @var{data-directory} which is 26205determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and 26206@file{$datadir} must be placed as a directory component --- either alone or 26207delimited by @file{/} or @file{\} directory separators, depending on the host 26208platform. 26209 26210The list of directories uses path separator (@samp{:} on GNU and Unix 26211systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 26212to the @env{PATH} environment variable. 26213 26214@anchor{show auto-load scripts-directory} 26215@kindex show auto-load scripts-directory 26216@item show auto-load scripts-directory 26217Show @value{GDBN} auto-loaded scripts location. 26218 26219@anchor{add-auto-load-scripts-directory} 26220@kindex add-auto-load-scripts-directory 26221@item add-auto-load-scripts-directory @r{[}@var{directories}@dots{}@r{]} 26222Add an entry (or list of entries) to the list of auto-loaded scripts locations. 26223Multiple entries may be delimited by the host platform path separator in use. 26224@end table 26225 26226@value{GDBN} does not track which files it has already auto-loaded this way. 26227@value{GDBN} will load the associated script every time the corresponding 26228@var{objfile} is opened. 26229So your @file{-gdb.@var{ext}} file should be careful to avoid errors if it 26230is evaluated more than once. 26231 26232@node dotdebug_gdb_scripts section 26233@subsection The @code{.debug_gdb_scripts} section 26234@cindex @code{.debug_gdb_scripts} section 26235 26236For systems using file formats like ELF and COFF, 26237when @value{GDBN} loads a new object file 26238it will look for a special section named @code{.debug_gdb_scripts}. 26239If this section exists, its contents is a list of null-terminated entries 26240specifying scripts to load. Each entry begins with a non-null prefix byte that 26241specifies the kind of entry, typically the extension language and whether the 26242script is in a file or inlined in @code{.debug_gdb_scripts}. 26243 26244The following entries are supported: 26245 26246@table @code 26247@item SECTION_SCRIPT_ID_PYTHON_FILE = 1 26248@item SECTION_SCRIPT_ID_SCHEME_FILE = 3 26249@item SECTION_SCRIPT_ID_PYTHON_TEXT = 4 26250@item SECTION_SCRIPT_ID_SCHEME_TEXT = 6 26251@end table 26252 26253@subsubsection Script File Entries 26254 26255If the entry specifies a file, @value{GDBN} will look for the file first 26256in the current directory and then along the source search path 26257(@pxref{Source Path, ,Specifying Source Directories}), 26258except that @file{$cdir} is not searched, since the compilation 26259directory is not relevant to scripts. 26260 26261File entries can be placed in section @code{.debug_gdb_scripts} with, 26262for example, this GCC macro for Python scripts. 26263 26264@example 26265/* Note: The "MS" section flags are to remove duplicates. */ 26266#define DEFINE_GDB_PY_SCRIPT(script_name) \ 26267 asm("\ 26268.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\ 26269.byte 1 /* Python */\n\ 26270.asciz \"" script_name "\"\n\ 26271.popsection \n\ 26272"); 26273@end example 26274 26275@noindent 26276For Guile scripts, replace @code{.byte 1} with @code{.byte 3}. 26277Then one can reference the macro in a header or source file like this: 26278 26279@example 26280DEFINE_GDB_PY_SCRIPT ("my-app-scripts.py") 26281@end example 26282 26283The script name may include directories if desired. 26284 26285Note that loading of this script file also requires accordingly configured 26286@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 26287 26288If the macro invocation is put in a header, any application or library 26289using this header will get a reference to the specified script, 26290and with the use of @code{"MS"} attributes on the section, the linker 26291will remove duplicates. 26292 26293@subsubsection Script Text Entries 26294 26295Script text entries allow to put the executable script in the entry 26296itself instead of loading it from a file. 26297The first line of the entry, everything after the prefix byte and up to 26298the first newline (@code{0xa}) character, is the script name, and must not 26299contain any kind of space character, e.g., spaces or tabs. 26300The rest of the entry, up to the trailing null byte, is the script to 26301execute in the specified language. The name needs to be unique among 26302all script names, as @value{GDBN} executes each script only once based 26303on its name. 26304 26305Here is an example from file @file{py-section-script.c} in the @value{GDBN} 26306testsuite. 26307 26308@example 26309#include "symcat.h" 26310#include "gdb/section-scripts.h" 26311asm( 26312".pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n" 26313".byte " XSTRING (SECTION_SCRIPT_ID_PYTHON_TEXT) "\n" 26314".ascii \"gdb.inlined-script\\n\"\n" 26315".ascii \"class test_cmd (gdb.Command):\\n\"\n" 26316".ascii \" def __init__ (self):\\n\"\n" 26317".ascii \" super (test_cmd, self).__init__ (" 26318 "\\\"test-cmd\\\", gdb.COMMAND_OBSCURE)\\n\"\n" 26319".ascii \" def invoke (self, arg, from_tty):\\n\"\n" 26320".ascii \" print (\\\"test-cmd output, arg = %s\\\" % arg)\\n\"\n" 26321".ascii \"test_cmd ()\\n\"\n" 26322".byte 0\n" 26323".popsection\n" 26324); 26325@end example 26326 26327Loading of inlined scripts requires a properly configured 26328@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 26329The path to specify in @code{auto-load safe-path} is the path of the file 26330containing the @code{.debug_gdb_scripts} section. 26331 26332@node Which flavor to choose? 26333@subsection Which flavor to choose? 26334 26335Given the multiple ways of auto-loading extensions, it might not always 26336be clear which one to choose. This section provides some guidance. 26337 26338@noindent 26339Benefits of the @file{-gdb.@var{ext}} way: 26340 26341@itemize @bullet 26342@item 26343Can be used with file formats that don't support multiple sections. 26344 26345@item 26346Ease of finding scripts for public libraries. 26347 26348Scripts specified in the @code{.debug_gdb_scripts} section are searched for 26349in the source search path. 26350For publicly installed libraries, e.g., @file{libstdc++}, there typically 26351isn't a source directory in which to find the script. 26352 26353@item 26354Doesn't require source code additions. 26355@end itemize 26356 26357@noindent 26358Benefits of the @code{.debug_gdb_scripts} way: 26359 26360@itemize @bullet 26361@item 26362Works with static linking. 26363 26364Scripts for libraries done the @file{-gdb.@var{ext}} way require an objfile to 26365trigger their loading. When an application is statically linked the only 26366objfile available is the executable, and it is cumbersome to attach all the 26367scripts from all the input libraries to the executable's 26368@file{-gdb.@var{ext}} script. 26369 26370@item 26371Works with classes that are entirely inlined. 26372 26373Some classes can be entirely inlined, and thus there may not be an associated 26374shared library to attach a @file{-gdb.@var{ext}} script to. 26375 26376@item 26377Scripts needn't be copied out of the source tree. 26378 26379In some circumstances, apps can be built out of large collections of internal 26380libraries, and the build infrastructure necessary to install the 26381@file{-gdb.@var{ext}} scripts in a place where @value{GDBN} can find them is 26382cumbersome. It may be easier to specify the scripts in the 26383@code{.debug_gdb_scripts} section as relative paths, and add a path to the 26384top of the source tree to the source search path. 26385@end itemize 26386 26387@node Multiple Extension Languages 26388@section Multiple Extension Languages 26389 26390The Guile and Python extension languages do not share any state, 26391and generally do not interfere with each other. 26392There are some things to be aware of, however. 26393 26394@subsection Python comes first 26395 26396Python was @value{GDBN}'s first extension language, and to avoid breaking 26397existing behaviour Python comes first. This is generally solved by the 26398``first one wins'' principle. @value{GDBN} maintains a list of enabled 26399extension languages, and when it makes a call to an extension language, 26400(say to pretty-print a value), it tries each in turn until an extension 26401language indicates it has performed the request (e.g., has returned the 26402pretty-printed form of a value). 26403This extends to errors while performing such requests: If an error happens 26404while, for example, trying to pretty-print an object then the error is 26405reported and any following extension languages are not tried. 26406 26407@node Aliases 26408@section Creating new spellings of existing commands 26409@cindex aliases for commands 26410 26411It is often useful to define alternate spellings of existing commands. 26412For example, if a new @value{GDBN} command defined in Python has 26413a long name to type, it is handy to have an abbreviated version of it 26414that involves less typing. 26415 26416@value{GDBN} itself uses aliases. For example @samp{s} is an alias 26417of the @samp{step} command even though it is otherwise an ambiguous 26418abbreviation of other commands like @samp{set} and @samp{show}. 26419 26420Aliases are also used to provide shortened or more common versions 26421of multi-word commands. For example, @value{GDBN} provides the 26422@samp{tty} alias of the @samp{set inferior-tty} command. 26423 26424You can define a new alias with the @samp{alias} command. 26425 26426@table @code 26427 26428@kindex alias 26429@item alias [-a] [--] @var{ALIAS} = @var{COMMAND} 26430 26431@end table 26432 26433@var{ALIAS} specifies the name of the new alias. 26434Each word of @var{ALIAS} must consist of letters, numbers, dashes and 26435underscores. 26436 26437@var{COMMAND} specifies the name of an existing command 26438that is being aliased. 26439 26440The @samp{-a} option specifies that the new alias is an abbreviation 26441of the command. Abbreviations are not shown in command 26442lists displayed by the @samp{help} command. 26443 26444The @samp{--} option specifies the end of options, 26445and is useful when @var{ALIAS} begins with a dash. 26446 26447Here is a simple example showing how to make an abbreviation 26448of a command so that there is less to type. 26449Suppose you were tired of typing @samp{disas}, the current 26450shortest unambiguous abbreviation of the @samp{disassemble} command 26451and you wanted an even shorter version named @samp{di}. 26452The following will accomplish this. 26453 26454@smallexample 26455(gdb) alias -a di = disas 26456@end smallexample 26457 26458Note that aliases are different from user-defined commands. 26459With a user-defined command, you also need to write documentation 26460for it with the @samp{document} command. 26461An alias automatically picks up the documentation of the existing command. 26462 26463Here is an example where we make @samp{elms} an abbreviation of 26464@samp{elements} in the @samp{set print elements} command. 26465This is to show that you can make an abbreviation of any part 26466of a command. 26467 26468@smallexample 26469(gdb) alias -a set print elms = set print elements 26470(gdb) alias -a show print elms = show print elements 26471(gdb) set p elms 20 26472(gdb) show p elms 26473Limit on string chars or array elements to print is 200. 26474@end smallexample 26475 26476Note that if you are defining an alias of a @samp{set} command, 26477and you want to have an alias for the corresponding @samp{show} 26478command, then you need to define the latter separately. 26479 26480Unambiguously abbreviated commands are allowed in @var{COMMAND} and 26481@var{ALIAS}, just as they are normally. 26482 26483@smallexample 26484(gdb) alias -a set pr elms = set p ele 26485@end smallexample 26486 26487Finally, here is an example showing the creation of a one word 26488alias for a more complex command. 26489This creates alias @samp{spe} of the command @samp{set print elements}. 26490 26491@smallexample 26492(gdb) alias spe = set print elements 26493(gdb) spe 20 26494@end smallexample 26495 26496@node Interpreters 26497@chapter Command Interpreters 26498@cindex command interpreters 26499 26500@value{GDBN} supports multiple command interpreters, and some command 26501infrastructure to allow users or user interface writers to switch 26502between interpreters or run commands in other interpreters. 26503 26504@value{GDBN} currently supports two command interpreters, the console 26505interpreter (sometimes called the command-line interpreter or @sc{cli}) 26506and the machine interface interpreter (or @sc{gdb/mi}). This manual 26507describes both of these interfaces in great detail. 26508 26509By default, @value{GDBN} will start with the console interpreter. 26510However, the user may choose to start @value{GDBN} with another 26511interpreter by specifying the @option{-i} or @option{--interpreter} 26512startup options. Defined interpreters include: 26513 26514@table @code 26515@item console 26516@cindex console interpreter 26517The traditional console or command-line interpreter. This is the most often 26518used interpreter with @value{GDBN}. With no interpreter specified at runtime, 26519@value{GDBN} will use this interpreter. 26520 26521@item mi 26522@cindex mi interpreter 26523The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily 26524by programs wishing to use @value{GDBN} as a backend for a debugger GUI 26525or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi} 26526Interface}. 26527 26528@item mi2 26529@cindex mi2 interpreter 26530The current @sc{gdb/mi} interface. 26531 26532@item mi1 26533@cindex mi1 interpreter 26534The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3. 26535 26536@end table 26537 26538@cindex invoke another interpreter 26539 26540@kindex interpreter-exec 26541You may execute commands in any interpreter from the current 26542interpreter using the appropriate command. If you are running the 26543console interpreter, simply use the @code{interpreter-exec} command: 26544 26545@smallexample 26546interpreter-exec mi "-data-list-register-names" 26547@end smallexample 26548 26549@sc{gdb/mi} has a similar command, although it is only available in versions of 26550@value{GDBN} which support @sc{gdb/mi} version 2 (or greater). 26551 26552Note that @code{interpreter-exec} only changes the interpreter for the 26553duration of the specified command. It does not change the interpreter 26554permanently. 26555 26556@cindex start a new independent interpreter 26557 26558Although you may only choose a single interpreter at startup, it is 26559possible to run an independent interpreter on a specified input/output 26560device (usually a tty). 26561 26562For example, consider a debugger GUI or IDE that wants to provide a 26563@value{GDBN} console view. It may do so by embedding a terminal 26564emulator widget in its GUI, starting @value{GDBN} in the traditional 26565command-line mode with stdin/stdout/stderr redirected to that 26566terminal, and then creating an MI interpreter running on a specified 26567input/output device. The console interpreter created by @value{GDBN} 26568at startup handles commands the user types in the terminal widget, 26569while the GUI controls and synchronizes state with @value{GDBN} using 26570the separate MI interpreter. 26571 26572To start a new secondary @dfn{user interface} running MI, use the 26573@code{new-ui} command: 26574 26575@kindex new-ui 26576@cindex new user interface 26577@smallexample 26578new-ui @var{interpreter} @var{tty} 26579@end smallexample 26580 26581The @var{interpreter} parameter specifies the interpreter to run. 26582This accepts the same values as the @code{interpreter-exec} command. 26583For example, @samp{console}, @samp{mi}, @samp{mi2}, etc. The 26584@var{tty} parameter specifies the name of the bidirectional file the 26585interpreter uses for input/output, usually the name of a 26586pseudoterminal slave on Unix systems. For example: 26587 26588@smallexample 26589(@value{GDBP}) new-ui mi /dev/pts/9 26590@end smallexample 26591 26592@noindent 26593runs an MI interpreter on @file{/dev/pts/9}. 26594 26595@node TUI 26596@chapter @value{GDBN} Text User Interface 26597@cindex TUI 26598@cindex Text User Interface 26599 26600@menu 26601* TUI Overview:: TUI overview 26602* TUI Keys:: TUI key bindings 26603* TUI Single Key Mode:: TUI single key mode 26604* TUI Commands:: TUI-specific commands 26605* TUI Configuration:: TUI configuration variables 26606@end menu 26607 26608The @value{GDBN} Text User Interface (TUI) is a terminal 26609interface which uses the @code{curses} library to show the source 26610file, the assembly output, the program registers and @value{GDBN} 26611commands in separate text windows. The TUI mode is supported only 26612on platforms where a suitable version of the @code{curses} library 26613is available. 26614 26615The TUI mode is enabled by default when you invoke @value{GDBN} as 26616@samp{@value{GDBP} -tui}. 26617You can also switch in and out of TUI mode while @value{GDBN} runs by 26618using various TUI commands and key bindings, such as @command{tui 26619enable} or @kbd{C-x C-a}. @xref{TUI Commands, ,TUI Commands}, and 26620@ref{TUI Keys, ,TUI Key Bindings}. 26621 26622@node TUI Overview 26623@section TUI Overview 26624 26625In TUI mode, @value{GDBN} can display several text windows: 26626 26627@table @emph 26628@item command 26629This window is the @value{GDBN} command window with the @value{GDBN} 26630prompt and the @value{GDBN} output. The @value{GDBN} input is still 26631managed using readline. 26632 26633@item source 26634The source window shows the source file of the program. The current 26635line and active breakpoints are displayed in this window. 26636 26637@item assembly 26638The assembly window shows the disassembly output of the program. 26639 26640@item register 26641This window shows the processor registers. Registers are highlighted 26642when their values change. 26643@end table 26644 26645The source and assembly windows show the current program position 26646by highlighting the current line and marking it with a @samp{>} marker. 26647Breakpoints are indicated with two markers. The first marker 26648indicates the breakpoint type: 26649 26650@table @code 26651@item B 26652Breakpoint which was hit at least once. 26653 26654@item b 26655Breakpoint which was never hit. 26656 26657@item H 26658Hardware breakpoint which was hit at least once. 26659 26660@item h 26661Hardware breakpoint which was never hit. 26662@end table 26663 26664The second marker indicates whether the breakpoint is enabled or not: 26665 26666@table @code 26667@item + 26668Breakpoint is enabled. 26669 26670@item - 26671Breakpoint is disabled. 26672@end table 26673 26674The source, assembly and register windows are updated when the current 26675thread changes, when the frame changes, or when the program counter 26676changes. 26677 26678These windows are not all visible at the same time. The command 26679window is always visible. The others can be arranged in several 26680layouts: 26681 26682@itemize @bullet 26683@item 26684source only, 26685 26686@item 26687assembly only, 26688 26689@item 26690source and assembly, 26691 26692@item 26693source and registers, or 26694 26695@item 26696assembly and registers. 26697@end itemize 26698 26699A status line above the command window shows the following information: 26700 26701@table @emph 26702@item target 26703Indicates the current @value{GDBN} target. 26704(@pxref{Targets, ,Specifying a Debugging Target}). 26705 26706@item process 26707Gives the current process or thread number. 26708When no process is being debugged, this field is set to @code{No process}. 26709 26710@item function 26711Gives the current function name for the selected frame. 26712The name is demangled if demangling is turned on (@pxref{Print Settings}). 26713When there is no symbol corresponding to the current program counter, 26714the string @code{??} is displayed. 26715 26716@item line 26717Indicates the current line number for the selected frame. 26718When the current line number is not known, the string @code{??} is displayed. 26719 26720@item pc 26721Indicates the current program counter address. 26722@end table 26723 26724@node TUI Keys 26725@section TUI Key Bindings 26726@cindex TUI key bindings 26727 26728The TUI installs several key bindings in the readline keymaps 26729@ifset SYSTEM_READLINE 26730(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}). 26731@end ifset 26732@ifclear SYSTEM_READLINE 26733(@pxref{Command Line Editing}). 26734@end ifclear 26735The following key bindings are installed for both TUI mode and the 26736@value{GDBN} standard mode. 26737 26738@table @kbd 26739@kindex C-x C-a 26740@item C-x C-a 26741@kindex C-x a 26742@itemx C-x a 26743@kindex C-x A 26744@itemx C-x A 26745Enter or leave the TUI mode. When leaving the TUI mode, 26746the curses window management stops and @value{GDBN} operates using 26747its standard mode, writing on the terminal directly. When reentering 26748the TUI mode, control is given back to the curses windows. 26749The screen is then refreshed. 26750 26751@kindex C-x 1 26752@item C-x 1 26753Use a TUI layout with only one window. The layout will 26754either be @samp{source} or @samp{assembly}. When the TUI mode 26755is not active, it will switch to the TUI mode. 26756 26757Think of this key binding as the Emacs @kbd{C-x 1} binding. 26758 26759@kindex C-x 2 26760@item C-x 2 26761Use a TUI layout with at least two windows. When the current 26762layout already has two windows, the next layout with two windows is used. 26763When a new layout is chosen, one window will always be common to the 26764previous layout and the new one. 26765 26766Think of it as the Emacs @kbd{C-x 2} binding. 26767 26768@kindex C-x o 26769@item C-x o 26770Change the active window. The TUI associates several key bindings 26771(like scrolling and arrow keys) with the active window. This command 26772gives the focus to the next TUI window. 26773 26774Think of it as the Emacs @kbd{C-x o} binding. 26775 26776@kindex C-x s 26777@item C-x s 26778Switch in and out of the TUI SingleKey mode that binds single 26779keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}). 26780@end table 26781 26782The following key bindings only work in the TUI mode: 26783 26784@table @asis 26785@kindex PgUp 26786@item @key{PgUp} 26787Scroll the active window one page up. 26788 26789@kindex PgDn 26790@item @key{PgDn} 26791Scroll the active window one page down. 26792 26793@kindex Up 26794@item @key{Up} 26795Scroll the active window one line up. 26796 26797@kindex Down 26798@item @key{Down} 26799Scroll the active window one line down. 26800 26801@kindex Left 26802@item @key{Left} 26803Scroll the active window one column left. 26804 26805@kindex Right 26806@item @key{Right} 26807Scroll the active window one column right. 26808 26809@kindex C-L 26810@item @kbd{C-L} 26811Refresh the screen. 26812@end table 26813 26814Because the arrow keys scroll the active window in the TUI mode, they 26815are not available for their normal use by readline unless the command 26816window has the focus. When another window is active, you must use 26817other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b} 26818and @kbd{C-f} to control the command window. 26819 26820@node TUI Single Key Mode 26821@section TUI Single Key Mode 26822@cindex TUI single key mode 26823 26824The TUI also provides a @dfn{SingleKey} mode, which binds several 26825frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to 26826switch into this mode, where the following key bindings are used: 26827 26828@table @kbd 26829@kindex c @r{(SingleKey TUI key)} 26830@item c 26831continue 26832 26833@kindex d @r{(SingleKey TUI key)} 26834@item d 26835down 26836 26837@kindex f @r{(SingleKey TUI key)} 26838@item f 26839finish 26840 26841@kindex n @r{(SingleKey TUI key)} 26842@item n 26843next 26844 26845@kindex o @r{(SingleKey TUI key)} 26846@item o 26847nexti. The shortcut letter @samp{o} stands for ``step Over''. 26848 26849@kindex q @r{(SingleKey TUI key)} 26850@item q 26851exit the SingleKey mode. 26852 26853@kindex r @r{(SingleKey TUI key)} 26854@item r 26855run 26856 26857@kindex s @r{(SingleKey TUI key)} 26858@item s 26859step 26860 26861@kindex i @r{(SingleKey TUI key)} 26862@item i 26863stepi. The shortcut letter @samp{i} stands for ``step Into''. 26864 26865@kindex u @r{(SingleKey TUI key)} 26866@item u 26867up 26868 26869@kindex v @r{(SingleKey TUI key)} 26870@item v 26871info locals 26872 26873@kindex w @r{(SingleKey TUI key)} 26874@item w 26875where 26876@end table 26877 26878Other keys temporarily switch to the @value{GDBN} command prompt. 26879The key that was pressed is inserted in the editing buffer so that 26880it is possible to type most @value{GDBN} commands without interaction 26881with the TUI SingleKey mode. Once the command is entered the TUI 26882SingleKey mode is restored. The only way to permanently leave 26883this mode is by typing @kbd{q} or @kbd{C-x s}. 26884 26885 26886@node TUI Commands 26887@section TUI-specific Commands 26888@cindex TUI commands 26889 26890The TUI has specific commands to control the text windows. 26891These commands are always available, even when @value{GDBN} is not in 26892the TUI mode. When @value{GDBN} is in the standard mode, most 26893of these commands will automatically switch to the TUI mode. 26894 26895Note that if @value{GDBN}'s @code{stdout} is not connected to a 26896terminal, or @value{GDBN} has been started with the machine interface 26897interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of 26898these commands will fail with an error, because it would not be 26899possible or desirable to enable curses window management. 26900 26901@table @code 26902@item tui enable 26903@kindex tui enable 26904Activate TUI mode. The last active TUI window layout will be used if 26905TUI mode has prevsiouly been used in the current debugging session, 26906otherwise a default layout is used. 26907 26908@item tui disable 26909@kindex tui disable 26910Disable TUI mode, returning to the console interpreter. 26911 26912@item info win 26913@kindex info win 26914List and give the size of all displayed windows. 26915 26916@item layout @var{name} 26917@kindex layout 26918Changes which TUI windows are displayed. In each layout the command 26919window is always displayed, the @var{name} parameter controls which 26920additional windows are displayed, and can be any of the following: 26921 26922@table @code 26923@item next 26924Display the next layout. 26925 26926@item prev 26927Display the previous layout. 26928 26929@item src 26930Display the source and command windows. 26931 26932@item asm 26933Display the assembly and command windows. 26934 26935@item split 26936Display the source, assembly, and command windows. 26937 26938@item regs 26939When in @code{src} layout display the register, source, and command 26940windows. When in @code{asm} or @code{split} layout display the 26941register, assembler, and command windows. 26942@end table 26943 26944@item focus @var{name} 26945@kindex focus 26946Changes which TUI window is currently active for scrolling. The 26947@var{name} parameter can be any of the following: 26948 26949@table @code 26950@item next 26951Make the next window active for scrolling. 26952 26953@item prev 26954Make the previous window active for scrolling. 26955 26956@item src 26957Make the source window active for scrolling. 26958 26959@item asm 26960Make the assembly window active for scrolling. 26961 26962@item regs 26963Make the register window active for scrolling. 26964 26965@item cmd 26966Make the command window active for scrolling. 26967@end table 26968 26969@item refresh 26970@kindex refresh 26971Refresh the screen. This is similar to typing @kbd{C-L}. 26972 26973@item tui reg @var{group} 26974@kindex tui reg 26975Changes the register group displayed in the tui register window to 26976@var{group}. If the register window is not currently displayed this 26977command will cause the register window to be displayed. The list of 26978register groups, as well as their order is target specific. The 26979following groups are available on most targets: 26980@table @code 26981@item next 26982Repeatedly selecting this group will cause the display to cycle 26983through all of the available register groups. 26984 26985@item prev 26986Repeatedly selecting this group will cause the display to cycle 26987through all of the available register groups in the reverse order to 26988@var{next}. 26989 26990@item general 26991Display the general registers. 26992@item float 26993Display the floating point registers. 26994@item system 26995Display the system registers. 26996@item vector 26997Display the vector registers. 26998@item all 26999Display all registers. 27000@end table 27001 27002@item update 27003@kindex update 27004Update the source window and the current execution point. 27005 27006@item winheight @var{name} +@var{count} 27007@itemx winheight @var{name} -@var{count} 27008@kindex winheight 27009Change the height of the window @var{name} by @var{count} 27010lines. Positive counts increase the height, while negative counts 27011decrease it. The @var{name} parameter can be one of @code{src} (the 27012source window), @code{cmd} (the command window), @code{asm} (the 27013disassembly window), or @code{regs} (the register display window). 27014@end table 27015 27016@node TUI Configuration 27017@section TUI Configuration Variables 27018@cindex TUI configuration variables 27019 27020Several configuration variables control the appearance of TUI windows. 27021 27022@table @code 27023@item set tui border-kind @var{kind} 27024@kindex set tui border-kind 27025Select the border appearance for the source, assembly and register windows. 27026The possible values are the following: 27027@table @code 27028@item space 27029Use a space character to draw the border. 27030 27031@item ascii 27032Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border. 27033 27034@item acs 27035Use the Alternate Character Set to draw the border. The border is 27036drawn using character line graphics if the terminal supports them. 27037@end table 27038 27039@item set tui border-mode @var{mode} 27040@kindex set tui border-mode 27041@itemx set tui active-border-mode @var{mode} 27042@kindex set tui active-border-mode 27043Select the display attributes for the borders of the inactive windows 27044or the active window. The @var{mode} can be one of the following: 27045@table @code 27046@item normal 27047Use normal attributes to display the border. 27048 27049@item standout 27050Use standout mode. 27051 27052@item reverse 27053Use reverse video mode. 27054 27055@item half 27056Use half bright mode. 27057 27058@item half-standout 27059Use half bright and standout mode. 27060 27061@item bold 27062Use extra bright or bold mode. 27063 27064@item bold-standout 27065Use extra bright or bold and standout mode. 27066@end table 27067 27068@item set tui tab-width @var{nchars} 27069@kindex set tui tab-width 27070@kindex tabset 27071Set the width of tab stops to be @var{nchars} characters. This 27072setting affects the display of TAB characters in the source and 27073assembly windows. 27074@end table 27075 27076@node Emacs 27077@chapter Using @value{GDBN} under @sc{gnu} Emacs 27078 27079@cindex Emacs 27080@cindex @sc{gnu} Emacs 27081A special interface allows you to use @sc{gnu} Emacs to view (and 27082edit) the source files for the program you are debugging with 27083@value{GDBN}. 27084 27085To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the 27086executable file you want to debug as an argument. This command starts 27087@value{GDBN} as a subprocess of Emacs, with input and output through a newly 27088created Emacs buffer. 27089@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.) 27090 27091Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two 27092things: 27093 27094@itemize @bullet 27095@item 27096All ``terminal'' input and output goes through an Emacs buffer, called 27097the GUD buffer. 27098 27099This applies both to @value{GDBN} commands and their output, and to the input 27100and output done by the program you are debugging. 27101 27102This is useful because it means that you can copy the text of previous 27103commands and input them again; you can even use parts of the output 27104in this way. 27105 27106All the facilities of Emacs' Shell mode are available for interacting 27107with your program. In particular, you can send signals the usual 27108way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a 27109stop. 27110 27111@item 27112@value{GDBN} displays source code through Emacs. 27113 27114Each time @value{GDBN} displays a stack frame, Emacs automatically finds the 27115source file for that frame and puts an arrow (@samp{=>}) at the 27116left margin of the current line. Emacs uses a separate buffer for 27117source display, and splits the screen to show both your @value{GDBN} session 27118and the source. 27119 27120Explicit @value{GDBN} @code{list} or search commands still produce output as 27121usual, but you probably have no reason to use them from Emacs. 27122@end itemize 27123 27124We call this @dfn{text command mode}. Emacs 22.1, and later, also uses 27125a graphical mode, enabled by default, which provides further buffers 27126that can control the execution and describe the state of your program. 27127@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}. 27128 27129If you specify an absolute file name when prompted for the @kbd{M-x 27130gdb} argument, then Emacs sets your current working directory to where 27131your program resides. If you only specify the file name, then Emacs 27132sets your current working directory to the directory associated 27133with the previous buffer. In this case, @value{GDBN} may find your 27134program by searching your environment's @code{PATH} variable, but on 27135some operating systems it might not find the source. So, although the 27136@value{GDBN} input and output session proceeds normally, the auxiliary 27137buffer does not display the current source and line of execution. 27138 27139The initial working directory of @value{GDBN} is printed on the top 27140line of the GUD buffer and this serves as a default for the commands 27141that specify files for @value{GDBN} to operate on. @xref{Files, 27142,Commands to Specify Files}. 27143 27144By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you 27145need to call @value{GDBN} by a different name (for example, if you 27146keep several configurations around, with different names) you can 27147customize the Emacs variable @code{gud-gdb-command-name} to run the 27148one you want. 27149 27150In the GUD buffer, you can use these special Emacs commands in 27151addition to the standard Shell mode commands: 27152 27153@table @kbd 27154@item C-h m 27155Describe the features of Emacs' GUD Mode. 27156 27157@item C-c C-s 27158Execute to another source line, like the @value{GDBN} @code{step} command; also 27159update the display window to show the current file and location. 27160 27161@item C-c C-n 27162Execute to next source line in this function, skipping all function 27163calls, like the @value{GDBN} @code{next} command. Then update the display window 27164to show the current file and location. 27165 27166@item C-c C-i 27167Execute one instruction, like the @value{GDBN} @code{stepi} command; update 27168display window accordingly. 27169 27170@item C-c C-f 27171Execute until exit from the selected stack frame, like the @value{GDBN} 27172@code{finish} command. 27173 27174@item C-c C-r 27175Continue execution of your program, like the @value{GDBN} @code{continue} 27176command. 27177 27178@item C-c < 27179Go up the number of frames indicated by the numeric argument 27180(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}), 27181like the @value{GDBN} @code{up} command. 27182 27183@item C-c > 27184Go down the number of frames indicated by the numeric argument, like the 27185@value{GDBN} @code{down} command. 27186@end table 27187 27188In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break}) 27189tells @value{GDBN} to set a breakpoint on the source line point is on. 27190 27191In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a 27192separate frame which shows a backtrace when the GUD buffer is current. 27193Move point to any frame in the stack and type @key{RET} to make it 27194become the current frame and display the associated source in the 27195source buffer. Alternatively, click @kbd{Mouse-2} to make the 27196selected frame become the current one. In graphical mode, the 27197speedbar displays watch expressions. 27198 27199If you accidentally delete the source-display buffer, an easy way to get 27200it back is to type the command @code{f} in the @value{GDBN} buffer, to 27201request a frame display; when you run under Emacs, this recreates 27202the source buffer if necessary to show you the context of the current 27203frame. 27204 27205The source files displayed in Emacs are in ordinary Emacs buffers 27206which are visiting the source files in the usual way. You can edit 27207the files with these buffers if you wish; but keep in mind that @value{GDBN} 27208communicates with Emacs in terms of line numbers. If you add or 27209delete lines from the text, the line numbers that @value{GDBN} knows cease 27210to correspond properly with the code. 27211 27212A more detailed description of Emacs' interaction with @value{GDBN} is 27213given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu} 27214Emacs Manual}). 27215 27216@node GDB/MI 27217@chapter The @sc{gdb/mi} Interface 27218 27219@unnumberedsec Function and Purpose 27220 27221@cindex @sc{gdb/mi}, its purpose 27222@sc{gdb/mi} is a line based machine oriented text interface to 27223@value{GDBN} and is activated by specifying using the 27224@option{--interpreter} command line option (@pxref{Mode Options}). It 27225is specifically intended to support the development of systems which 27226use the debugger as just one small component of a larger system. 27227 27228This chapter is a specification of the @sc{gdb/mi} interface. It is written 27229in the form of a reference manual. 27230 27231Note that @sc{gdb/mi} is still under construction, so some of the 27232features described below are incomplete and subject to change 27233(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}). 27234 27235@unnumberedsec Notation and Terminology 27236 27237@cindex notational conventions, for @sc{gdb/mi} 27238This chapter uses the following notation: 27239 27240@itemize @bullet 27241@item 27242@code{|} separates two alternatives. 27243 27244@item 27245@code{[ @var{something} ]} indicates that @var{something} is optional: 27246it may or may not be given. 27247 27248@item 27249@code{( @var{group} )*} means that @var{group} inside the parentheses 27250may repeat zero or more times. 27251 27252@item 27253@code{( @var{group} )+} means that @var{group} inside the parentheses 27254may repeat one or more times. 27255 27256@item 27257@code{"@var{string}"} means a literal @var{string}. 27258@end itemize 27259 27260@ignore 27261@heading Dependencies 27262@end ignore 27263 27264@menu 27265* GDB/MI General Design:: 27266* GDB/MI Command Syntax:: 27267* GDB/MI Compatibility with CLI:: 27268* GDB/MI Development and Front Ends:: 27269* GDB/MI Output Records:: 27270* GDB/MI Simple Examples:: 27271* GDB/MI Command Description Format:: 27272* GDB/MI Breakpoint Commands:: 27273* GDB/MI Catchpoint Commands:: 27274* GDB/MI Program Context:: 27275* GDB/MI Thread Commands:: 27276* GDB/MI Ada Tasking Commands:: 27277* GDB/MI Program Execution:: 27278* GDB/MI Stack Manipulation:: 27279* GDB/MI Variable Objects:: 27280* GDB/MI Data Manipulation:: 27281* GDB/MI Tracepoint Commands:: 27282* GDB/MI Symbol Query:: 27283* GDB/MI File Commands:: 27284@ignore 27285* GDB/MI Kod Commands:: 27286* GDB/MI Memory Overlay Commands:: 27287* GDB/MI Signal Handling Commands:: 27288@end ignore 27289* GDB/MI Target Manipulation:: 27290* GDB/MI File Transfer Commands:: 27291* GDB/MI Ada Exceptions Commands:: 27292* GDB/MI Support Commands:: 27293* GDB/MI Miscellaneous Commands:: 27294@end menu 27295 27296@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27297@node GDB/MI General Design 27298@section @sc{gdb/mi} General Design 27299@cindex GDB/MI General Design 27300 27301Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three 27302parts---commands sent to @value{GDBN}, responses to those commands 27303and notifications. Each command results in exactly one response, 27304indicating either successful completion of the command, or an error. 27305For the commands that do not resume the target, the response contains the 27306requested information. For the commands that resume the target, the 27307response only indicates whether the target was successfully resumed. 27308Notifications is the mechanism for reporting changes in the state of the 27309target, or in @value{GDBN} state, that cannot conveniently be associated with 27310a command and reported as part of that command response. 27311 27312The important examples of notifications are: 27313@itemize @bullet 27314 27315@item 27316Exec notifications. These are used to report changes in 27317target state---when a target is resumed, or stopped. It would not 27318be feasible to include this information in response of resuming 27319commands, because one resume commands can result in multiple events in 27320different threads. Also, quite some time may pass before any event 27321happens in the target, while a frontend needs to know whether the resuming 27322command itself was successfully executed. 27323 27324@item 27325Console output, and status notifications. Console output 27326notifications are used to report output of CLI commands, as well as 27327diagnostics for other commands. Status notifications are used to 27328report the progress of a long-running operation. Naturally, including 27329this information in command response would mean no output is produced 27330until the command is finished, which is undesirable. 27331 27332@item 27333General notifications. Commands may have various side effects on 27334the @value{GDBN} or target state beyond their official purpose. For example, 27335a command may change the selected thread. Although such changes can 27336be included in command response, using notification allows for more 27337orthogonal frontend design. 27338 27339@end itemize 27340 27341There's no guarantee that whenever an MI command reports an error, 27342@value{GDBN} or the target are in any specific state, and especially, 27343the state is not reverted to the state before the MI command was 27344processed. Therefore, whenever an MI command results in an error, 27345we recommend that the frontend refreshes all the information shown in 27346the user interface. 27347 27348 27349@menu 27350* Context management:: 27351* Asynchronous and non-stop modes:: 27352* Thread groups:: 27353@end menu 27354 27355@node Context management 27356@subsection Context management 27357 27358@subsubsection Threads and Frames 27359 27360In most cases when @value{GDBN} accesses the target, this access is 27361done in context of a specific thread and frame (@pxref{Frames}). 27362Often, even when accessing global data, the target requires that a thread 27363be specified. The CLI interface maintains the selected thread and frame, 27364and supplies them to target on each command. This is convenient, 27365because a command line user would not want to specify that information 27366explicitly on each command, and because user interacts with 27367@value{GDBN} via a single terminal, so no confusion is possible as 27368to what thread and frame are the current ones. 27369 27370In the case of MI, the concept of selected thread and frame is less 27371useful. First, a frontend can easily remember this information 27372itself. Second, a graphical frontend can have more than one window, 27373each one used for debugging a different thread, and the frontend might 27374want to access additional threads for internal purposes. This 27375increases the risk that by relying on implicitly selected thread, the 27376frontend may be operating on a wrong one. Therefore, each MI command 27377should explicitly specify which thread and frame to operate on. To 27378make it possible, each MI command accepts the @samp{--thread} and 27379@samp{--frame} options, the value to each is @value{GDBN} global 27380identifier for thread and frame to operate on. 27381 27382Usually, each top-level window in a frontend allows the user to select 27383a thread and a frame, and remembers the user selection for further 27384operations. However, in some cases @value{GDBN} may suggest that the 27385current thread or frame be changed. For example, when stopping on a 27386breakpoint it is reasonable to switch to the thread where breakpoint is 27387hit. For another example, if the user issues the CLI @samp{thread} or 27388@samp{frame} commands via the frontend, it is desirable to change the 27389frontend's selection to the one specified by user. @value{GDBN} 27390communicates the suggestion to change current thread and frame using the 27391@samp{=thread-selected} notification. 27392 27393Note that historically, MI shares the selected thread with CLI, so 27394frontends used the @code{-thread-select} to execute commands in the 27395right context. However, getting this to work right is cumbersome. The 27396simplest way is for frontend to emit @code{-thread-select} command 27397before every command. This doubles the number of commands that need 27398to be sent. The alternative approach is to suppress @code{-thread-select} 27399if the selected thread in @value{GDBN} is supposed to be identical to the 27400thread the frontend wants to operate on. However, getting this 27401optimization right can be tricky. In particular, if the frontend 27402sends several commands to @value{GDBN}, and one of the commands changes the 27403selected thread, then the behaviour of subsequent commands will 27404change. So, a frontend should either wait for response from such 27405problematic commands, or explicitly add @code{-thread-select} for 27406all subsequent commands. No frontend is known to do this exactly 27407right, so it is suggested to just always pass the @samp{--thread} and 27408@samp{--frame} options. 27409 27410@subsubsection Language 27411 27412The execution of several commands depends on which language is selected. 27413By default, the current language (@pxref{show language}) is used. 27414But for commands known to be language-sensitive, it is recommended 27415to use the @samp{--language} option. This option takes one argument, 27416which is the name of the language to use while executing the command. 27417For instance: 27418 27419@smallexample 27420-data-evaluate-expression --language c "sizeof (void*)" 27421^done,value="4" 27422(gdb) 27423@end smallexample 27424 27425The valid language names are the same names accepted by the 27426@samp{set language} command (@pxref{Manually}), excluding @samp{auto}, 27427@samp{local} or @samp{unknown}. 27428 27429@node Asynchronous and non-stop modes 27430@subsection Asynchronous command execution and non-stop mode 27431 27432On some targets, @value{GDBN} is capable of processing MI commands 27433even while the target is running. This is called @dfn{asynchronous 27434command execution} (@pxref{Background Execution}). The frontend may 27435specify a preferrence for asynchronous execution using the 27436@code{-gdb-set mi-async 1} command, which should be emitted before 27437either running the executable or attaching to the target. After the 27438frontend has started the executable or attached to the target, it can 27439find if asynchronous execution is enabled using the 27440@code{-list-target-features} command. 27441 27442@table @code 27443@item -gdb-set mi-async on 27444@item -gdb-set mi-async off 27445Set whether MI is in asynchronous mode. 27446 27447When @code{off}, which is the default, MI execution commands (e.g., 27448@code{-exec-continue}) are foreground commands, and @value{GDBN} waits 27449for the program to stop before processing further commands. 27450 27451When @code{on}, MI execution commands are background execution 27452commands (e.g., @code{-exec-continue} becomes the equivalent of the 27453@code{c&} CLI command), and so @value{GDBN} is capable of processing 27454MI commands even while the target is running. 27455 27456@item -gdb-show mi-async 27457Show whether MI asynchronous mode is enabled. 27458@end table 27459 27460Note: In @value{GDBN} version 7.7 and earlier, this option was called 27461@code{target-async} instead of @code{mi-async}, and it had the effect 27462of both putting MI in asynchronous mode and making CLI background 27463commands possible. CLI background commands are now always possible 27464``out of the box'' if the target supports them. The old spelling is 27465kept as a deprecated alias for backwards compatibility. 27466 27467Even if @value{GDBN} can accept a command while target is running, 27468many commands that access the target do not work when the target is 27469running. Therefore, asynchronous command execution is most useful 27470when combined with non-stop mode (@pxref{Non-Stop Mode}). Then, 27471it is possible to examine the state of one thread, while other threads 27472are running. 27473 27474When a given thread is running, MI commands that try to access the 27475target in the context of that thread may not work, or may work only on 27476some targets. In particular, commands that try to operate on thread's 27477stack will not work, on any target. Commands that read memory, or 27478modify breakpoints, may work or not work, depending on the target. Note 27479that even commands that operate on global state, such as @code{print}, 27480@code{set}, and breakpoint commands, still access the target in the 27481context of a specific thread, so frontend should try to find a 27482stopped thread and perform the operation on that thread (using the 27483@samp{--thread} option). 27484 27485Which commands will work in the context of a running thread is 27486highly target dependent. However, the two commands 27487@code{-exec-interrupt}, to stop a thread, and @code{-thread-info}, 27488to find the state of a thread, will always work. 27489 27490@node Thread groups 27491@subsection Thread groups 27492@value{GDBN} may be used to debug several processes at the same time. 27493On some platfroms, @value{GDBN} may support debugging of several 27494hardware systems, each one having several cores with several different 27495processes running on each core. This section describes the MI 27496mechanism to support such debugging scenarios. 27497 27498The key observation is that regardless of the structure of the 27499target, MI can have a global list of threads, because most commands that 27500accept the @samp{--thread} option do not need to know what process that 27501thread belongs to. Therefore, it is not necessary to introduce 27502neither additional @samp{--process} option, nor an notion of the 27503current process in the MI interface. The only strictly new feature 27504that is required is the ability to find how the threads are grouped 27505into processes. 27506 27507To allow the user to discover such grouping, and to support arbitrary 27508hierarchy of machines/cores/processes, MI introduces the concept of a 27509@dfn{thread group}. Thread group is a collection of threads and other 27510thread groups. A thread group always has a string identifier, a type, 27511and may have additional attributes specific to the type. A new 27512command, @code{-list-thread-groups}, returns the list of top-level 27513thread groups, which correspond to processes that @value{GDBN} is 27514debugging at the moment. By passing an identifier of a thread group 27515to the @code{-list-thread-groups} command, it is possible to obtain 27516the members of specific thread group. 27517 27518To allow the user to easily discover processes, and other objects, he 27519wishes to debug, a concept of @dfn{available thread group} is 27520introduced. Available thread group is an thread group that 27521@value{GDBN} is not debugging, but that can be attached to, using the 27522@code{-target-attach} command. The list of available top-level thread 27523groups can be obtained using @samp{-list-thread-groups --available}. 27524In general, the content of a thread group may be only retrieved only 27525after attaching to that thread group. 27526 27527Thread groups are related to inferiors (@pxref{Inferiors and 27528Programs}). Each inferior corresponds to a thread group of a special 27529type @samp{process}, and some additional operations are permitted on 27530such thread groups. 27531 27532@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27533@node GDB/MI Command Syntax 27534@section @sc{gdb/mi} Command Syntax 27535 27536@menu 27537* GDB/MI Input Syntax:: 27538* GDB/MI Output Syntax:: 27539@end menu 27540 27541@node GDB/MI Input Syntax 27542@subsection @sc{gdb/mi} Input Syntax 27543 27544@cindex input syntax for @sc{gdb/mi} 27545@cindex @sc{gdb/mi}, input syntax 27546@table @code 27547@item @var{command} @expansion{} 27548@code{@var{cli-command} | @var{mi-command}} 27549 27550@item @var{cli-command} @expansion{} 27551@code{[ @var{token} ] @var{cli-command} @var{nl}}, where 27552@var{cli-command} is any existing @value{GDBN} CLI command. 27553 27554@item @var{mi-command} @expansion{} 27555@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )* 27556@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}} 27557 27558@item @var{token} @expansion{} 27559"any sequence of digits" 27560 27561@item @var{option} @expansion{} 27562@code{"-" @var{parameter} [ " " @var{parameter} ]} 27563 27564@item @var{parameter} @expansion{} 27565@code{@var{non-blank-sequence} | @var{c-string}} 27566 27567@item @var{operation} @expansion{} 27568@emph{any of the operations described in this chapter} 27569 27570@item @var{non-blank-sequence} @expansion{} 27571@emph{anything, provided it doesn't contain special characters such as 27572"-", @var{nl}, """ and of course " "} 27573 27574@item @var{c-string} @expansion{} 27575@code{""" @var{seven-bit-iso-c-string-content} """} 27576 27577@item @var{nl} @expansion{} 27578@code{CR | CR-LF} 27579@end table 27580 27581@noindent 27582Notes: 27583 27584@itemize @bullet 27585@item 27586The CLI commands are still handled by the @sc{mi} interpreter; their 27587output is described below. 27588 27589@item 27590The @code{@var{token}}, when present, is passed back when the command 27591finishes. 27592 27593@item 27594Some @sc{mi} commands accept optional arguments as part of the parameter 27595list. Each option is identified by a leading @samp{-} (dash) and may be 27596followed by an optional argument parameter. Options occur first in the 27597parameter list and can be delimited from normal parameters using 27598@samp{--} (this is useful when some parameters begin with a dash). 27599@end itemize 27600 27601Pragmatics: 27602 27603@itemize @bullet 27604@item 27605We want easy access to the existing CLI syntax (for debugging). 27606 27607@item 27608We want it to be easy to spot a @sc{mi} operation. 27609@end itemize 27610 27611@node GDB/MI Output Syntax 27612@subsection @sc{gdb/mi} Output Syntax 27613 27614@cindex output syntax of @sc{gdb/mi} 27615@cindex @sc{gdb/mi}, output syntax 27616The output from @sc{gdb/mi} consists of zero or more out-of-band records 27617followed, optionally, by a single result record. This result record 27618is for the most recent command. The sequence of output records is 27619terminated by @samp{(gdb)}. 27620 27621If an input command was prefixed with a @code{@var{token}} then the 27622corresponding output for that command will also be prefixed by that same 27623@var{token}. 27624 27625@table @code 27626@item @var{output} @expansion{} 27627@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}} 27628 27629@item @var{result-record} @expansion{} 27630@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}} 27631 27632@item @var{out-of-band-record} @expansion{} 27633@code{@var{async-record} | @var{stream-record}} 27634 27635@item @var{async-record} @expansion{} 27636@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}} 27637 27638@item @var{exec-async-output} @expansion{} 27639@code{[ @var{token} ] "*" @var{async-output nl}} 27640 27641@item @var{status-async-output} @expansion{} 27642@code{[ @var{token} ] "+" @var{async-output nl}} 27643 27644@item @var{notify-async-output} @expansion{} 27645@code{[ @var{token} ] "=" @var{async-output nl}} 27646 27647@item @var{async-output} @expansion{} 27648@code{@var{async-class} ( "," @var{result} )*} 27649 27650@item @var{result-class} @expansion{} 27651@code{"done" | "running" | "connected" | "error" | "exit"} 27652 27653@item @var{async-class} @expansion{} 27654@code{"stopped" | @var{others}} (where @var{others} will be added 27655depending on the needs---this is still in development). 27656 27657@item @var{result} @expansion{} 27658@code{ @var{variable} "=" @var{value}} 27659 27660@item @var{variable} @expansion{} 27661@code{ @var{string} } 27662 27663@item @var{value} @expansion{} 27664@code{ @var{const} | @var{tuple} | @var{list} } 27665 27666@item @var{const} @expansion{} 27667@code{@var{c-string}} 27668 27669@item @var{tuple} @expansion{} 27670@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" } 27671 27672@item @var{list} @expansion{} 27673@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "[" 27674@var{result} ( "," @var{result} )* "]" } 27675 27676@item @var{stream-record} @expansion{} 27677@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}} 27678 27679@item @var{console-stream-output} @expansion{} 27680@code{"~" @var{c-string nl}} 27681 27682@item @var{target-stream-output} @expansion{} 27683@code{"@@" @var{c-string nl}} 27684 27685@item @var{log-stream-output} @expansion{} 27686@code{"&" @var{c-string nl}} 27687 27688@item @var{nl} @expansion{} 27689@code{CR | CR-LF} 27690 27691@item @var{token} @expansion{} 27692@emph{any sequence of digits}. 27693@end table 27694 27695@noindent 27696Notes: 27697 27698@itemize @bullet 27699@item 27700All output sequences end in a single line containing a period. 27701 27702@item 27703The @code{@var{token}} is from the corresponding request. Note that 27704for all async output, while the token is allowed by the grammar and 27705may be output by future versions of @value{GDBN} for select async 27706output messages, it is generally omitted. Frontends should treat 27707all async output as reporting general changes in the state of the 27708target and there should be no need to associate async output to any 27709prior command. 27710 27711@item 27712@cindex status output in @sc{gdb/mi} 27713@var{status-async-output} contains on-going status information about the 27714progress of a slow operation. It can be discarded. All status output is 27715prefixed by @samp{+}. 27716 27717@item 27718@cindex async output in @sc{gdb/mi} 27719@var{exec-async-output} contains asynchronous state change on the target 27720(stopped, started, disappeared). All async output is prefixed by 27721@samp{*}. 27722 27723@item 27724@cindex notify output in @sc{gdb/mi} 27725@var{notify-async-output} contains supplementary information that the 27726client should handle (e.g., a new breakpoint information). All notify 27727output is prefixed by @samp{=}. 27728 27729@item 27730@cindex console output in @sc{gdb/mi} 27731@var{console-stream-output} is output that should be displayed as is in the 27732console. It is the textual response to a CLI command. All the console 27733output is prefixed by @samp{~}. 27734 27735@item 27736@cindex target output in @sc{gdb/mi} 27737@var{target-stream-output} is the output produced by the target program. 27738All the target output is prefixed by @samp{@@}. 27739 27740@item 27741@cindex log output in @sc{gdb/mi} 27742@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for 27743instance messages that should be displayed as part of an error log. All 27744the log output is prefixed by @samp{&}. 27745 27746@item 27747@cindex list output in @sc{gdb/mi} 27748New @sc{gdb/mi} commands should only output @var{lists} containing 27749@var{values}. 27750 27751 27752@end itemize 27753 27754@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more 27755details about the various output records. 27756 27757@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27758@node GDB/MI Compatibility with CLI 27759@section @sc{gdb/mi} Compatibility with CLI 27760 27761@cindex compatibility, @sc{gdb/mi} and CLI 27762@cindex @sc{gdb/mi}, compatibility with CLI 27763 27764For the developers convenience CLI commands can be entered directly, 27765but there may be some unexpected behaviour. For example, commands 27766that query the user will behave as if the user replied yes, breakpoint 27767command lists are not executed and some CLI commands, such as 27768@code{if}, @code{when} and @code{define}, prompt for further input with 27769@samp{>}, which is not valid MI output. 27770 27771This feature may be removed at some stage in the future and it is 27772recommended that front ends use the @code{-interpreter-exec} command 27773(@pxref{-interpreter-exec}). 27774 27775@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27776@node GDB/MI Development and Front Ends 27777@section @sc{gdb/mi} Development and Front Ends 27778@cindex @sc{gdb/mi} development 27779 27780The application which takes the MI output and presents the state of the 27781program being debugged to the user is called a @dfn{front end}. 27782 27783Since @sc{gdb/mi} is used by a variety of front ends to @value{GDBN}, changes 27784to the MI interface may break existing usage. This section describes how the 27785protocol changes and how to request previous version of the protocol when it 27786does. 27787 27788Some changes in MI need not break a carefully designed front end, and 27789for these the MI version will remain unchanged. The following is a 27790list of changes that may occur within one level, so front ends should 27791parse MI output in a way that can handle them: 27792 27793@itemize @bullet 27794@item 27795New MI commands may be added. 27796 27797@item 27798New fields may be added to the output of any MI command. 27799 27800@item 27801The range of values for fields with specified values, e.g., 27802@code{in_scope} (@pxref{-var-update}) may be extended. 27803 27804@c The format of field's content e.g type prefix, may change so parse it 27805@c at your own risk. Yes, in general? 27806 27807@c The order of fields may change? Shouldn't really matter but it might 27808@c resolve inconsistencies. 27809@end itemize 27810 27811If the changes are likely to break front ends, the MI version level 27812will be increased by one. The new versions of the MI protocol are not compatible 27813with the old versions. Old versions of MI remain available, allowing front ends 27814to keep using them until they are modified to use the latest MI version. 27815 27816Since @code{--interpreter=mi} always points to the latest MI version, it is 27817recommended that front ends request a specific version of MI when launching 27818@value{GDBN} (e.g. @code{--interpreter=mi2}) to make sure they get an 27819interpreter with the MI version they expect. 27820 27821The following table gives a summary of the the released versions of the MI 27822interface: the version number, the version of GDB in which it first appeared 27823and the breaking changes compared to the previous version. 27824 27825@multitable @columnfractions .05 .05 .9 27826@headitem MI version @tab GDB version @tab Breaking changes 27827 27828@item 27829@center 1 27830@tab 27831@center 5.1 27832@tab 27833None 27834 27835@item 27836@center 2 27837@tab 27838@center 6.0 27839@tab 27840 27841@itemize 27842@item 27843The @code{-environment-pwd}, @code{-environment-directory} and 27844@code{-environment-path} commands now returns values using the MI output 27845syntax, rather than CLI output syntax. 27846 27847@item 27848@code{-var-list-children}'s @code{children} result field is now a list, rather 27849than a tuple. 27850 27851@item 27852@code{-var-update}'s @code{changelist} result field is now a list, rather than 27853a tuple. 27854@end itemize 27855 27856@end multitable 27857 27858The best way to avoid unexpected changes in MI that might break your front 27859end is to make your project known to @value{GDBN} developers and 27860follow development on @email{gdb@@sourceware.org} and 27861@email{gdb-patches@@sourceware.org}. 27862@cindex mailing lists 27863 27864@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 27865@node GDB/MI Output Records 27866@section @sc{gdb/mi} Output Records 27867 27868@menu 27869* GDB/MI Result Records:: 27870* GDB/MI Stream Records:: 27871* GDB/MI Async Records:: 27872* GDB/MI Breakpoint Information:: 27873* GDB/MI Frame Information:: 27874* GDB/MI Thread Information:: 27875* GDB/MI Ada Exception Information:: 27876@end menu 27877 27878@node GDB/MI Result Records 27879@subsection @sc{gdb/mi} Result Records 27880 27881@cindex result records in @sc{gdb/mi} 27882@cindex @sc{gdb/mi}, result records 27883In addition to a number of out-of-band notifications, the response to a 27884@sc{gdb/mi} command includes one of the following result indications: 27885 27886@table @code 27887@findex ^done 27888@item "^done" [ "," @var{results} ] 27889The synchronous operation was successful, @code{@var{results}} are the return 27890values. 27891 27892@item "^running" 27893@findex ^running 27894This result record is equivalent to @samp{^done}. Historically, it 27895was output instead of @samp{^done} if the command has resumed the 27896target. This behaviour is maintained for backward compatibility, but 27897all frontends should treat @samp{^done} and @samp{^running} 27898identically and rely on the @samp{*running} output record to determine 27899which threads are resumed. 27900 27901@item "^connected" 27902@findex ^connected 27903@value{GDBN} has connected to a remote target. 27904 27905@item "^error" "," "msg=" @var{c-string} [ "," "code=" @var{c-string} ] 27906@findex ^error 27907The operation failed. The @code{msg=@var{c-string}} variable contains 27908the corresponding error message. 27909 27910If present, the @code{code=@var{c-string}} variable provides an error 27911code on which consumers can rely on to detect the corresponding 27912error condition. At present, only one error code is defined: 27913 27914@table @samp 27915@item "undefined-command" 27916Indicates that the command causing the error does not exist. 27917@end table 27918 27919@item "^exit" 27920@findex ^exit 27921@value{GDBN} has terminated. 27922 27923@end table 27924 27925@node GDB/MI Stream Records 27926@subsection @sc{gdb/mi} Stream Records 27927 27928@cindex @sc{gdb/mi}, stream records 27929@cindex stream records in @sc{gdb/mi} 27930@value{GDBN} internally maintains a number of output streams: the console, the 27931target, and the log. The output intended for each of these streams is 27932funneled through the @sc{gdb/mi} interface using @dfn{stream records}. 27933 27934Each stream record begins with a unique @dfn{prefix character} which 27935identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output 27936Syntax}). In addition to the prefix, each stream record contains a 27937@code{@var{string-output}}. This is either raw text (with an implicit new 27938line) or a quoted C string (which does not contain an implicit newline). 27939 27940@table @code 27941@item "~" @var{string-output} 27942The console output stream contains text that should be displayed in the 27943CLI console window. It contains the textual responses to CLI commands. 27944 27945@item "@@" @var{string-output} 27946The target output stream contains any textual output from the running 27947target. This is only present when GDB's event loop is truly 27948asynchronous, which is currently only the case for remote targets. 27949 27950@item "&" @var{string-output} 27951The log stream contains debugging messages being produced by @value{GDBN}'s 27952internals. 27953@end table 27954 27955@node GDB/MI Async Records 27956@subsection @sc{gdb/mi} Async Records 27957 27958@cindex async records in @sc{gdb/mi} 27959@cindex @sc{gdb/mi}, async records 27960@dfn{Async} records are used to notify the @sc{gdb/mi} client of 27961additional changes that have occurred. Those changes can either be a 27962consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of 27963target activity (e.g., target stopped). 27964 27965The following is the list of possible async records: 27966 27967@table @code 27968 27969@item *running,thread-id="@var{thread}" 27970The target is now running. The @var{thread} field can be the global 27971thread ID of the the thread that is now running, and it can be 27972@samp{all} if all threads are running. The frontend should assume 27973that no interaction with a running thread is possible after this 27974notification is produced. The frontend should not assume that this 27975notification is output only once for any command. @value{GDBN} may 27976emit this notification several times, either for different threads, 27977because it cannot resume all threads together, or even for a single 27978thread, if the thread must be stepped though some code before letting 27979it run freely. 27980 27981@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}" 27982The target has stopped. The @var{reason} field can have one of the 27983following values: 27984 27985@table @code 27986@item breakpoint-hit 27987A breakpoint was reached. 27988@item watchpoint-trigger 27989A watchpoint was triggered. 27990@item read-watchpoint-trigger 27991A read watchpoint was triggered. 27992@item access-watchpoint-trigger 27993An access watchpoint was triggered. 27994@item function-finished 27995An -exec-finish or similar CLI command was accomplished. 27996@item location-reached 27997An -exec-until or similar CLI command was accomplished. 27998@item watchpoint-scope 27999A watchpoint has gone out of scope. 28000@item end-stepping-range 28001An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or 28002similar CLI command was accomplished. 28003@item exited-signalled 28004The inferior exited because of a signal. 28005@item exited 28006The inferior exited. 28007@item exited-normally 28008The inferior exited normally. 28009@item signal-received 28010A signal was received by the inferior. 28011@item solib-event 28012The inferior has stopped due to a library being loaded or unloaded. 28013This can happen when @code{stop-on-solib-events} (@pxref{Files}) is 28014set or when a @code{catch load} or @code{catch unload} catchpoint is 28015in use (@pxref{Set Catchpoints}). 28016@item fork 28017The inferior has forked. This is reported when @code{catch fork} 28018(@pxref{Set Catchpoints}) has been used. 28019@item vfork 28020The inferior has vforked. This is reported in when @code{catch vfork} 28021(@pxref{Set Catchpoints}) has been used. 28022@item syscall-entry 28023The inferior entered a system call. This is reported when @code{catch 28024syscall} (@pxref{Set Catchpoints}) has been used. 28025@item syscall-return 28026The inferior returned from a system call. This is reported when 28027@code{catch syscall} (@pxref{Set Catchpoints}) has been used. 28028@item exec 28029The inferior called @code{exec}. This is reported when @code{catch exec} 28030(@pxref{Set Catchpoints}) has been used. 28031@end table 28032 28033The @var{id} field identifies the global thread ID of the thread 28034that directly caused the stop -- for example by hitting a breakpoint. 28035Depending on whether all-stop 28036mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either 28037stop all threads, or only the thread that directly triggered the stop. 28038If all threads are stopped, the @var{stopped} field will have the 28039value of @code{"all"}. Otherwise, the value of the @var{stopped} 28040field will be a list of thread identifiers. Presently, this list will 28041always include a single thread, but frontend should be prepared to see 28042several threads in the list. The @var{core} field reports the 28043processor core on which the stop event has happened. This field may be absent 28044if such information is not available. 28045 28046@item =thread-group-added,id="@var{id}" 28047@itemx =thread-group-removed,id="@var{id}" 28048A thread group was either added or removed. The @var{id} field 28049contains the @value{GDBN} identifier of the thread group. When a thread 28050group is added, it generally might not be associated with a running 28051process. When a thread group is removed, its id becomes invalid and 28052cannot be used in any way. 28053 28054@item =thread-group-started,id="@var{id}",pid="@var{pid}" 28055A thread group became associated with a running program, 28056either because the program was just started or the thread group 28057was attached to a program. The @var{id} field contains the 28058@value{GDBN} identifier of the thread group. The @var{pid} field 28059contains process identifier, specific to the operating system. 28060 28061@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"] 28062A thread group is no longer associated with a running program, 28063either because the program has exited, or because it was detached 28064from. The @var{id} field contains the @value{GDBN} identifier of the 28065thread group. The @var{code} field is the exit code of the inferior; it exists 28066only when the inferior exited with some code. 28067 28068@item =thread-created,id="@var{id}",group-id="@var{gid}" 28069@itemx =thread-exited,id="@var{id}",group-id="@var{gid}" 28070A thread either was created, or has exited. The @var{id} field 28071contains the global @value{GDBN} identifier of the thread. The @var{gid} 28072field identifies the thread group this thread belongs to. 28073 28074@item =thread-selected,id="@var{id}"[,frame="@var{frame}"] 28075Informs that the selected thread or frame were changed. This notification 28076is not emitted as result of the @code{-thread-select} or 28077@code{-stack-select-frame} commands, but is emitted whenever an MI command 28078that is not documented to change the selected thread and frame actually 28079changes them. In particular, invoking, directly or indirectly 28080(via user-defined command), the CLI @code{thread} or @code{frame} commands, 28081will generate this notification. Changing the thread or frame from another 28082user interface (see @ref{Interpreters}) will also generate this notification. 28083 28084The @var{frame} field is only present if the newly selected thread is 28085stopped. See @ref{GDB/MI Frame Information} for the format of its value. 28086 28087We suggest that in response to this notification, front ends 28088highlight the selected thread and cause subsequent commands to apply to 28089that thread. 28090 28091@item =library-loaded,... 28092Reports that a new library file was loaded by the program. This 28093notification has 5 fields---@var{id}, @var{target-name}, 28094@var{host-name}, @var{symbols-loaded} and @var{ranges}. The @var{id} field is an 28095opaque identifier of the library. For remote debugging case, 28096@var{target-name} and @var{host-name} fields give the name of the 28097library file on the target, and on the host respectively. For native 28098debugging, both those fields have the same value. The 28099@var{symbols-loaded} field is emitted only for backward compatibility 28100and should not be relied on to convey any useful information. The 28101@var{thread-group} field, if present, specifies the id of the thread 28102group in whose context the library was loaded. If the field is 28103absent, it means the library was loaded in the context of all present 28104thread groups. The @var{ranges} field specifies the ranges of addresses belonging 28105to this library. 28106 28107@item =library-unloaded,... 28108Reports that a library was unloaded by the program. This notification 28109has 3 fields---@var{id}, @var{target-name} and @var{host-name} with 28110the same meaning as for the @code{=library-loaded} notification. 28111The @var{thread-group} field, if present, specifies the id of the 28112thread group in whose context the library was unloaded. If the field is 28113absent, it means the library was unloaded in the context of all present 28114thread groups. 28115 28116@item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum} 28117@itemx =traceframe-changed,end 28118Reports that the trace frame was changed and its new number is 28119@var{tfnum}. The number of the tracepoint associated with this trace 28120frame is @var{tpnum}. 28121 28122@item =tsv-created,name=@var{name},initial=@var{initial} 28123Reports that the new trace state variable @var{name} is created with 28124initial value @var{initial}. 28125 28126@item =tsv-deleted,name=@var{name} 28127@itemx =tsv-deleted 28128Reports that the trace state variable @var{name} is deleted or all 28129trace state variables are deleted. 28130 28131@item =tsv-modified,name=@var{name},initial=@var{initial}[,current=@var{current}] 28132Reports that the trace state variable @var{name} is modified with 28133the initial value @var{initial}. The current value @var{current} of 28134trace state variable is optional and is reported if the current 28135value of trace state variable is known. 28136 28137@item =breakpoint-created,bkpt=@{...@} 28138@itemx =breakpoint-modified,bkpt=@{...@} 28139@itemx =breakpoint-deleted,id=@var{number} 28140Reports that a breakpoint was created, modified, or deleted, 28141respectively. Only user-visible breakpoints are reported to the MI 28142user. 28143 28144The @var{bkpt} argument is of the same form as returned by the various 28145breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The 28146@var{number} is the ordinal number of the breakpoint. 28147 28148Note that if a breakpoint is emitted in the result record of a 28149command, then it will not also be emitted in an async record. 28150 28151@item =record-started,thread-group="@var{id}",method="@var{method}"[,format="@var{format}"] 28152@itemx =record-stopped,thread-group="@var{id}" 28153Execution log recording was either started or stopped on an 28154inferior. The @var{id} is the @value{GDBN} identifier of the thread 28155group corresponding to the affected inferior. 28156 28157The @var{method} field indicates the method used to record execution. If the 28158method in use supports multiple recording formats, @var{format} will be present 28159and contain the currently used format. @xref{Process Record and Replay}, 28160for existing method and format values. 28161 28162@item =cmd-param-changed,param=@var{param},value=@var{value} 28163Reports that a parameter of the command @code{set @var{param}} is 28164changed to @var{value}. In the multi-word @code{set} command, 28165the @var{param} is the whole parameter list to @code{set} command. 28166For example, In command @code{set check type on}, @var{param} 28167is @code{check type} and @var{value} is @code{on}. 28168 28169@item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"] 28170Reports that bytes from @var{addr} to @var{data} + @var{len} were 28171written in an inferior. The @var{id} is the identifier of the 28172thread group corresponding to the affected inferior. The optional 28173@code{type="code"} part is reported if the memory written to holds 28174executable code. 28175@end table 28176 28177@node GDB/MI Breakpoint Information 28178@subsection @sc{gdb/mi} Breakpoint Information 28179 28180When @value{GDBN} reports information about a breakpoint, a 28181tracepoint, a watchpoint, or a catchpoint, it uses a tuple with the 28182following fields: 28183 28184@table @code 28185@item number 28186The breakpoint number. For a breakpoint that represents one location 28187of a multi-location breakpoint, this will be a dotted pair, like 28188@samp{1.2}. 28189 28190@item type 28191The type of the breakpoint. For ordinary breakpoints this will be 28192@samp{breakpoint}, but many values are possible. 28193 28194@item catch-type 28195If the type of the breakpoint is @samp{catchpoint}, then this 28196indicates the exact type of catchpoint. 28197 28198@item disp 28199This is the breakpoint disposition---either @samp{del}, meaning that 28200the breakpoint will be deleted at the next stop, or @samp{keep}, 28201meaning that the breakpoint will not be deleted. 28202 28203@item enabled 28204This indicates whether the breakpoint is enabled, in which case the 28205value is @samp{y}, or disabled, in which case the value is @samp{n}. 28206Note that this is not the same as the field @code{enable}. 28207 28208@item addr 28209The address of the breakpoint. This may be a hexidecimal number, 28210giving the address; or the string @samp{<PENDING>}, for a pending 28211breakpoint; or the string @samp{<MULTIPLE>}, for a breakpoint with 28212multiple locations. This field will not be present if no address can 28213be determined. For example, a watchpoint does not have an address. 28214 28215@item func 28216If known, the function in which the breakpoint appears. 28217If not known, this field is not present. 28218 28219@item filename 28220The name of the source file which contains this function, if known. 28221If not known, this field is not present. 28222 28223@item fullname 28224The full file name of the source file which contains this function, if 28225known. If not known, this field is not present. 28226 28227@item line 28228The line number at which this breakpoint appears, if known. 28229If not known, this field is not present. 28230 28231@item at 28232If the source file is not known, this field may be provided. If 28233provided, this holds the address of the breakpoint, possibly followed 28234by a symbol name. 28235 28236@item pending 28237If this breakpoint is pending, this field is present and holds the 28238text used to set the breakpoint, as entered by the user. 28239 28240@item evaluated-by 28241Where this breakpoint's condition is evaluated, either @samp{host} or 28242@samp{target}. 28243 28244@item thread 28245If this is a thread-specific breakpoint, then this identifies the 28246thread in which the breakpoint can trigger. 28247 28248@item task 28249If this breakpoint is restricted to a particular Ada task, then this 28250field will hold the task identifier. 28251 28252@item cond 28253If the breakpoint is conditional, this is the condition expression. 28254 28255@item ignore 28256The ignore count of the breakpoint. 28257 28258@item enable 28259The enable count of the breakpoint. 28260 28261@item traceframe-usage 28262FIXME. 28263 28264@item static-tracepoint-marker-string-id 28265For a static tracepoint, the name of the static tracepoint marker. 28266 28267@item mask 28268For a masked watchpoint, this is the mask. 28269 28270@item pass 28271A tracepoint's pass count. 28272 28273@item original-location 28274The location of the breakpoint as originally specified by the user. 28275This field is optional. 28276 28277@item times 28278The number of times the breakpoint has been hit. 28279 28280@item installed 28281This field is only given for tracepoints. This is either @samp{y}, 28282meaning that the tracepoint is installed, or @samp{n}, meaning that it 28283is not. 28284 28285@item what 28286Some extra data, the exact contents of which are type-dependent. 28287 28288@end table 28289 28290For example, here is what the output of @code{-break-insert} 28291(@pxref{GDB/MI Breakpoint Commands}) might be: 28292 28293@smallexample 28294-> -break-insert main 28295<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 28296 enabled="y",addr="0x08048564",func="main",file="myprog.c", 28297 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 28298 times="0"@} 28299<- (gdb) 28300@end smallexample 28301 28302@node GDB/MI Frame Information 28303@subsection @sc{gdb/mi} Frame Information 28304 28305Response from many MI commands includes an information about stack 28306frame. This information is a tuple that may have the following 28307fields: 28308 28309@table @code 28310@item level 28311The level of the stack frame. The innermost frame has the level of 28312zero. This field is always present. 28313 28314@item func 28315The name of the function corresponding to the frame. This field may 28316be absent if @value{GDBN} is unable to determine the function name. 28317 28318@item addr 28319The code address for the frame. This field is always present. 28320 28321@item file 28322The name of the source files that correspond to the frame's code 28323address. This field may be absent. 28324 28325@item line 28326The source line corresponding to the frames' code address. This field 28327may be absent. 28328 28329@item from 28330The name of the binary file (either executable or shared library) the 28331corresponds to the frame's code address. This field may be absent. 28332 28333@end table 28334 28335@node GDB/MI Thread Information 28336@subsection @sc{gdb/mi} Thread Information 28337 28338Whenever @value{GDBN} has to report an information about a thread, it 28339uses a tuple with the following fields. The fields are always present unless 28340stated otherwise. 28341 28342@table @code 28343@item id 28344The global numeric id assigned to the thread by @value{GDBN}. 28345 28346@item target-id 28347The target-specific string identifying the thread. 28348 28349@item details 28350Additional information about the thread provided by the target. 28351It is supposed to be human-readable and not interpreted by the 28352frontend. This field is optional. 28353 28354@item name 28355The name of the thread. If the user specified a name using the 28356@code{thread name} command, then this name is given. Otherwise, if 28357@value{GDBN} can extract the thread name from the target, then that 28358name is given. If @value{GDBN} cannot find the thread name, then this 28359field is omitted. 28360 28361@item state 28362The execution state of the thread, either @samp{stopped} or @samp{running}, 28363depending on whether the thread is presently running. 28364 28365@item frame 28366The stack frame currently executing in the thread. This field is only present 28367if the thread is stopped. Its format is documented in 28368@ref{GDB/MI Frame Information}. 28369 28370@item core 28371The value of this field is an integer number of the processor core the 28372thread was last seen on. This field is optional. 28373@end table 28374 28375@node GDB/MI Ada Exception Information 28376@subsection @sc{gdb/mi} Ada Exception Information 28377 28378Whenever a @code{*stopped} record is emitted because the program 28379stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}), 28380@value{GDBN} provides the name of the exception that was raised via 28381the @code{exception-name} field. Also, for exceptions that were raised 28382with an exception message, @value{GDBN} provides that message via 28383the @code{exception-message} field. 28384 28385@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28386@node GDB/MI Simple Examples 28387@section Simple Examples of @sc{gdb/mi} Interaction 28388@cindex @sc{gdb/mi}, simple examples 28389 28390This subsection presents several simple examples of interaction using 28391the @sc{gdb/mi} interface. In these examples, @samp{->} means that the 28392following line is passed to @sc{gdb/mi} as input, while @samp{<-} means 28393the output received from @sc{gdb/mi}. 28394 28395Note the line breaks shown in the examples are here only for 28396readability, they don't appear in the real output. 28397 28398@subheading Setting a Breakpoint 28399 28400Setting a breakpoint generates synchronous output which contains detailed 28401information of the breakpoint. 28402 28403@smallexample 28404-> -break-insert main 28405<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 28406 enabled="y",addr="0x08048564",func="main",file="myprog.c", 28407 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 28408 times="0"@} 28409<- (gdb) 28410@end smallexample 28411 28412@subheading Program Execution 28413 28414Program execution generates asynchronous records and MI gives the 28415reason that execution stopped. 28416 28417@smallexample 28418-> -exec-run 28419<- ^running 28420<- (gdb) 28421<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 28422 frame=@{addr="0x08048564",func="main", 28423 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}], 28424 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68", 28425 arch="i386:x86_64"@} 28426<- (gdb) 28427-> -exec-continue 28428<- ^running 28429<- (gdb) 28430<- *stopped,reason="exited-normally" 28431<- (gdb) 28432@end smallexample 28433 28434@subheading Quitting @value{GDBN} 28435 28436Quitting @value{GDBN} just prints the result class @samp{^exit}. 28437 28438@smallexample 28439-> (gdb) 28440<- -gdb-exit 28441<- ^exit 28442@end smallexample 28443 28444Please note that @samp{^exit} is printed immediately, but it might 28445take some time for @value{GDBN} to actually exit. During that time, @value{GDBN} 28446performs necessary cleanups, including killing programs being debugged 28447or disconnecting from debug hardware, so the frontend should wait till 28448@value{GDBN} exits and should only forcibly kill @value{GDBN} if it 28449fails to exit in reasonable time. 28450 28451@subheading A Bad Command 28452 28453Here's what happens if you pass a non-existent command: 28454 28455@smallexample 28456-> -rubbish 28457<- ^error,msg="Undefined MI command: rubbish" 28458<- (gdb) 28459@end smallexample 28460 28461 28462@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28463@node GDB/MI Command Description Format 28464@section @sc{gdb/mi} Command Description Format 28465 28466The remaining sections describe blocks of commands. Each block of 28467commands is laid out in a fashion similar to this section. 28468 28469@subheading Motivation 28470 28471The motivation for this collection of commands. 28472 28473@subheading Introduction 28474 28475A brief introduction to this collection of commands as a whole. 28476 28477@subheading Commands 28478 28479For each command in the block, the following is described: 28480 28481@subsubheading Synopsis 28482 28483@smallexample 28484 -command @var{args}@dots{} 28485@end smallexample 28486 28487@subsubheading Result 28488 28489@subsubheading @value{GDBN} Command 28490 28491The corresponding @value{GDBN} CLI command(s), if any. 28492 28493@subsubheading Example 28494 28495Example(s) formatted for readability. Some of the described commands have 28496not been implemented yet and these are labeled N.A.@: (not available). 28497 28498 28499@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28500@node GDB/MI Breakpoint Commands 28501@section @sc{gdb/mi} Breakpoint Commands 28502 28503@cindex breakpoint commands for @sc{gdb/mi} 28504@cindex @sc{gdb/mi}, breakpoint commands 28505This section documents @sc{gdb/mi} commands for manipulating 28506breakpoints. 28507 28508@subheading The @code{-break-after} Command 28509@findex -break-after 28510 28511@subsubheading Synopsis 28512 28513@smallexample 28514 -break-after @var{number} @var{count} 28515@end smallexample 28516 28517The breakpoint number @var{number} is not in effect until it has been 28518hit @var{count} times. To see how this is reflected in the output of 28519the @samp{-break-list} command, see the description of the 28520@samp{-break-list} command below. 28521 28522@subsubheading @value{GDBN} Command 28523 28524The corresponding @value{GDBN} command is @samp{ignore}. 28525 28526@subsubheading Example 28527 28528@smallexample 28529(gdb) 28530-break-insert main 28531^done,bkpt=@{number="1",type="breakpoint",disp="keep", 28532enabled="y",addr="0x000100d0",func="main",file="hello.c", 28533fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 28534times="0"@} 28535(gdb) 28536-break-after 1 3 28537~ 28538^done 28539(gdb) 28540-break-list 28541^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 28542hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 28543@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 28544@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 28545@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 28546@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 28547@{width="40",alignment="2",col_name="what",colhdr="What"@}], 28548body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 28549addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 28550line="5",thread-groups=["i1"],times="0",ignore="3"@}]@} 28551(gdb) 28552@end smallexample 28553 28554@ignore 28555@subheading The @code{-break-catch} Command 28556@findex -break-catch 28557@end ignore 28558 28559@subheading The @code{-break-commands} Command 28560@findex -break-commands 28561 28562@subsubheading Synopsis 28563 28564@smallexample 28565 -break-commands @var{number} [ @var{command1} ... @var{commandN} ] 28566@end smallexample 28567 28568Specifies the CLI commands that should be executed when breakpoint 28569@var{number} is hit. The parameters @var{command1} to @var{commandN} 28570are the commands. If no command is specified, any previously-set 28571commands are cleared. @xref{Break Commands}. Typical use of this 28572functionality is tracing a program, that is, printing of values of 28573some variables whenever breakpoint is hit and then continuing. 28574 28575@subsubheading @value{GDBN} Command 28576 28577The corresponding @value{GDBN} command is @samp{commands}. 28578 28579@subsubheading Example 28580 28581@smallexample 28582(gdb) 28583-break-insert main 28584^done,bkpt=@{number="1",type="breakpoint",disp="keep", 28585enabled="y",addr="0x000100d0",func="main",file="hello.c", 28586fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 28587times="0"@} 28588(gdb) 28589-break-commands 1 "print v" "continue" 28590^done 28591(gdb) 28592@end smallexample 28593 28594@subheading The @code{-break-condition} Command 28595@findex -break-condition 28596 28597@subsubheading Synopsis 28598 28599@smallexample 28600 -break-condition @var{number} @var{expr} 28601@end smallexample 28602 28603Breakpoint @var{number} will stop the program only if the condition in 28604@var{expr} is true. The condition becomes part of the 28605@samp{-break-list} output (see the description of the @samp{-break-list} 28606command below). 28607 28608@subsubheading @value{GDBN} Command 28609 28610The corresponding @value{GDBN} command is @samp{condition}. 28611 28612@subsubheading Example 28613 28614@smallexample 28615(gdb) 28616-break-condition 1 1 28617^done 28618(gdb) 28619-break-list 28620^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 28621hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 28622@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 28623@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 28624@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 28625@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 28626@{width="40",alignment="2",col_name="what",colhdr="What"@}], 28627body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 28628addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 28629line="5",cond="1",thread-groups=["i1"],times="0",ignore="3"@}]@} 28630(gdb) 28631@end smallexample 28632 28633@subheading The @code{-break-delete} Command 28634@findex -break-delete 28635 28636@subsubheading Synopsis 28637 28638@smallexample 28639 -break-delete ( @var{breakpoint} )+ 28640@end smallexample 28641 28642Delete the breakpoint(s) whose number(s) are specified in the argument 28643list. This is obviously reflected in the breakpoint list. 28644 28645@subsubheading @value{GDBN} Command 28646 28647The corresponding @value{GDBN} command is @samp{delete}. 28648 28649@subsubheading Example 28650 28651@smallexample 28652(gdb) 28653-break-delete 1 28654^done 28655(gdb) 28656-break-list 28657^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 28658hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 28659@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 28660@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 28661@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 28662@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 28663@{width="40",alignment="2",col_name="what",colhdr="What"@}], 28664body=[]@} 28665(gdb) 28666@end smallexample 28667 28668@subheading The @code{-break-disable} Command 28669@findex -break-disable 28670 28671@subsubheading Synopsis 28672 28673@smallexample 28674 -break-disable ( @var{breakpoint} )+ 28675@end smallexample 28676 28677Disable the named @var{breakpoint}(s). The field @samp{enabled} in the 28678break list is now set to @samp{n} for the named @var{breakpoint}(s). 28679 28680@subsubheading @value{GDBN} Command 28681 28682The corresponding @value{GDBN} command is @samp{disable}. 28683 28684@subsubheading Example 28685 28686@smallexample 28687(gdb) 28688-break-disable 2 28689^done 28690(gdb) 28691-break-list 28692^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 28693hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 28694@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 28695@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 28696@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 28697@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 28698@{width="40",alignment="2",col_name="what",colhdr="What"@}], 28699body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n", 28700addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 28701line="5",thread-groups=["i1"],times="0"@}]@} 28702(gdb) 28703@end smallexample 28704 28705@subheading The @code{-break-enable} Command 28706@findex -break-enable 28707 28708@subsubheading Synopsis 28709 28710@smallexample 28711 -break-enable ( @var{breakpoint} )+ 28712@end smallexample 28713 28714Enable (previously disabled) @var{breakpoint}(s). 28715 28716@subsubheading @value{GDBN} Command 28717 28718The corresponding @value{GDBN} command is @samp{enable}. 28719 28720@subsubheading Example 28721 28722@smallexample 28723(gdb) 28724-break-enable 2 28725^done 28726(gdb) 28727-break-list 28728^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 28729hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 28730@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 28731@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 28732@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 28733@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 28734@{width="40",alignment="2",col_name="what",colhdr="What"@}], 28735body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 28736addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 28737line="5",thread-groups=["i1"],times="0"@}]@} 28738(gdb) 28739@end smallexample 28740 28741@subheading The @code{-break-info} Command 28742@findex -break-info 28743 28744@subsubheading Synopsis 28745 28746@smallexample 28747 -break-info @var{breakpoint} 28748@end smallexample 28749 28750@c REDUNDANT??? 28751Get information about a single breakpoint. 28752 28753The result is a table of breakpoints. @xref{GDB/MI Breakpoint 28754Information}, for details on the format of each breakpoint in the 28755table. 28756 28757@subsubheading @value{GDBN} Command 28758 28759The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}. 28760 28761@subsubheading Example 28762N.A. 28763 28764@subheading The @code{-break-insert} Command 28765@findex -break-insert 28766@anchor{-break-insert} 28767 28768@subsubheading Synopsis 28769 28770@smallexample 28771 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ] 28772 [ -c @var{condition} ] [ -i @var{ignore-count} ] 28773 [ -p @var{thread-id} ] [ @var{location} ] 28774@end smallexample 28775 28776@noindent 28777If specified, @var{location}, can be one of: 28778 28779@table @var 28780@item linespec location 28781A linespec location. @xref{Linespec Locations}. 28782 28783@item explicit location 28784An explicit location. @sc{gdb/mi} explicit locations are 28785analogous to the CLI's explicit locations using the option names 28786listed below. @xref{Explicit Locations}. 28787 28788@table @samp 28789@item --source @var{filename} 28790The source file name of the location. This option requires the use 28791of either @samp{--function} or @samp{--line}. 28792 28793@item --function @var{function} 28794The name of a function or method. 28795 28796@item --label @var{label} 28797The name of a label. 28798 28799@item --line @var{lineoffset} 28800An absolute or relative line offset from the start of the location. 28801@end table 28802 28803@item address location 28804An address location, *@var{address}. @xref{Address Locations}. 28805@end table 28806 28807@noindent 28808The possible optional parameters of this command are: 28809 28810@table @samp 28811@item -t 28812Insert a temporary breakpoint. 28813@item -h 28814Insert a hardware breakpoint. 28815@item -f 28816If @var{location} cannot be parsed (for example if it 28817refers to unknown files or functions), create a pending 28818breakpoint. Without this flag, @value{GDBN} will report 28819an error, and won't create a breakpoint, if @var{location} 28820cannot be parsed. 28821@item -d 28822Create a disabled breakpoint. 28823@item -a 28824Create a tracepoint. @xref{Tracepoints}. When this parameter 28825is used together with @samp{-h}, a fast tracepoint is created. 28826@item -c @var{condition} 28827Make the breakpoint conditional on @var{condition}. 28828@item -i @var{ignore-count} 28829Initialize the @var{ignore-count}. 28830@item -p @var{thread-id} 28831Restrict the breakpoint to the thread with the specified global 28832@var{thread-id}. 28833@end table 28834 28835@subsubheading Result 28836 28837@xref{GDB/MI Breakpoint Information}, for details on the format of the 28838resulting breakpoint. 28839 28840Note: this format is open to change. 28841@c An out-of-band breakpoint instead of part of the result? 28842 28843@subsubheading @value{GDBN} Command 28844 28845The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak}, 28846@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}. 28847 28848@subsubheading Example 28849 28850@smallexample 28851(gdb) 28852-break-insert main 28853^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c", 28854fullname="/home/foo/recursive2.c,line="4",thread-groups=["i1"], 28855times="0"@} 28856(gdb) 28857-break-insert -t foo 28858^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c", 28859fullname="/home/foo/recursive2.c,line="11",thread-groups=["i1"], 28860times="0"@} 28861(gdb) 28862-break-list 28863^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 28864hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 28865@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 28866@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 28867@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 28868@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 28869@{width="40",alignment="2",col_name="what",colhdr="What"@}], 28870body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 28871addr="0x0001072c", func="main",file="recursive2.c", 28872fullname="/home/foo/recursive2.c,"line="4",thread-groups=["i1"], 28873times="0"@}, 28874bkpt=@{number="2",type="breakpoint",disp="del",enabled="y", 28875addr="0x00010774",func="foo",file="recursive2.c", 28876fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 28877times="0"@}]@} 28878(gdb) 28879@c -break-insert -r foo.* 28880@c ~int foo(int, int); 28881@c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c, 28882@c "fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 28883@c times="0"@} 28884@c (gdb) 28885@end smallexample 28886 28887@subheading The @code{-dprintf-insert} Command 28888@findex -dprintf-insert 28889 28890@subsubheading Synopsis 28891 28892@smallexample 28893 -dprintf-insert [ -t ] [ -f ] [ -d ] 28894 [ -c @var{condition} ] [ -i @var{ignore-count} ] 28895 [ -p @var{thread-id} ] [ @var{location} ] [ @var{format} ] 28896 [ @var{argument} ] 28897@end smallexample 28898 28899@noindent 28900If supplied, @var{location} may be specified the same way as for 28901the @code{-break-insert} command. @xref{-break-insert}. 28902 28903The possible optional parameters of this command are: 28904 28905@table @samp 28906@item -t 28907Insert a temporary breakpoint. 28908@item -f 28909If @var{location} cannot be parsed (for example, if it 28910refers to unknown files or functions), create a pending 28911breakpoint. Without this flag, @value{GDBN} will report 28912an error, and won't create a breakpoint, if @var{location} 28913cannot be parsed. 28914@item -d 28915Create a disabled breakpoint. 28916@item -c @var{condition} 28917Make the breakpoint conditional on @var{condition}. 28918@item -i @var{ignore-count} 28919Set the ignore count of the breakpoint (@pxref{Conditions, ignore count}) 28920to @var{ignore-count}. 28921@item -p @var{thread-id} 28922Restrict the breakpoint to the thread with the specified global 28923@var{thread-id}. 28924@end table 28925 28926@subsubheading Result 28927 28928@xref{GDB/MI Breakpoint Information}, for details on the format of the 28929resulting breakpoint. 28930 28931@c An out-of-band breakpoint instead of part of the result? 28932 28933@subsubheading @value{GDBN} Command 28934 28935The corresponding @value{GDBN} command is @samp{dprintf}. 28936 28937@subsubheading Example 28938 28939@smallexample 28940(gdb) 289414-dprintf-insert foo "At foo entry\n" 289424^done,bkpt=@{number="1",type="dprintf",disp="keep",enabled="y", 28943addr="0x000000000040061b",func="foo",file="mi-dprintf.c", 28944fullname="mi-dprintf.c",line="25",thread-groups=["i1"], 28945times="0",script=@{"printf \"At foo entry\\n\"","continue"@}, 28946original-location="foo"@} 28947(gdb) 289485-dprintf-insert 26 "arg=%d, g=%d\n" arg g 289495^done,bkpt=@{number="2",type="dprintf",disp="keep",enabled="y", 28950addr="0x000000000040062a",func="foo",file="mi-dprintf.c", 28951fullname="mi-dprintf.c",line="26",thread-groups=["i1"], 28952times="0",script=@{"printf \"arg=%d, g=%d\\n\", arg, g","continue"@}, 28953original-location="mi-dprintf.c:26"@} 28954(gdb) 28955@end smallexample 28956 28957@subheading The @code{-break-list} Command 28958@findex -break-list 28959 28960@subsubheading Synopsis 28961 28962@smallexample 28963 -break-list 28964@end smallexample 28965 28966Displays the list of inserted breakpoints, showing the following fields: 28967 28968@table @samp 28969@item Number 28970number of the breakpoint 28971@item Type 28972type of the breakpoint: @samp{breakpoint} or @samp{watchpoint} 28973@item Disposition 28974should the breakpoint be deleted or disabled when it is hit: @samp{keep} 28975or @samp{nokeep} 28976@item Enabled 28977is the breakpoint enabled or no: @samp{y} or @samp{n} 28978@item Address 28979memory location at which the breakpoint is set 28980@item What 28981logical location of the breakpoint, expressed by function name, file 28982name, line number 28983@item Thread-groups 28984list of thread groups to which this breakpoint applies 28985@item Times 28986number of times the breakpoint has been hit 28987@end table 28988 28989If there are no breakpoints or watchpoints, the @code{BreakpointTable} 28990@code{body} field is an empty list. 28991 28992@subsubheading @value{GDBN} Command 28993 28994The corresponding @value{GDBN} command is @samp{info break}. 28995 28996@subsubheading Example 28997 28998@smallexample 28999(gdb) 29000-break-list 29001^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 29002hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 29003@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 29004@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 29005@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 29006@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 29007@{width="40",alignment="2",col_name="what",colhdr="What"@}], 29008body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 29009addr="0x000100d0",func="main",file="hello.c",line="5",thread-groups=["i1"], 29010times="0"@}, 29011bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 29012addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c", 29013line="13",thread-groups=["i1"],times="0"@}]@} 29014(gdb) 29015@end smallexample 29016 29017Here's an example of the result when there are no breakpoints: 29018 29019@smallexample 29020(gdb) 29021-break-list 29022^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 29023hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 29024@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 29025@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 29026@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 29027@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 29028@{width="40",alignment="2",col_name="what",colhdr="What"@}], 29029body=[]@} 29030(gdb) 29031@end smallexample 29032 29033@subheading The @code{-break-passcount} Command 29034@findex -break-passcount 29035 29036@subsubheading Synopsis 29037 29038@smallexample 29039 -break-passcount @var{tracepoint-number} @var{passcount} 29040@end smallexample 29041 29042Set the passcount for tracepoint @var{tracepoint-number} to 29043@var{passcount}. If the breakpoint referred to by @var{tracepoint-number} 29044is not a tracepoint, error is emitted. This corresponds to CLI 29045command @samp{passcount}. 29046 29047@subheading The @code{-break-watch} Command 29048@findex -break-watch 29049 29050@subsubheading Synopsis 29051 29052@smallexample 29053 -break-watch [ -a | -r ] 29054@end smallexample 29055 29056Create a watchpoint. With the @samp{-a} option it will create an 29057@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a 29058read from or on a write to the memory location. With the @samp{-r} 29059option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will 29060trigger only when the memory location is accessed for reading. Without 29061either of the options, the watchpoint created is a regular watchpoint, 29062i.e., it will trigger when the memory location is accessed for writing. 29063@xref{Set Watchpoints, , Setting Watchpoints}. 29064 29065Note that @samp{-break-list} will report a single list of watchpoints and 29066breakpoints inserted. 29067 29068@subsubheading @value{GDBN} Command 29069 29070The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and 29071@samp{rwatch}. 29072 29073@subsubheading Example 29074 29075Setting a watchpoint on a variable in the @code{main} function: 29076 29077@smallexample 29078(gdb) 29079-break-watch x 29080^done,wpt=@{number="2",exp="x"@} 29081(gdb) 29082-exec-continue 29083^running 29084(gdb) 29085*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@}, 29086value=@{old="-268439212",new="55"@}, 29087frame=@{func="main",args=[],file="recursive2.c", 29088fullname="/home/foo/bar/recursive2.c",line="5",arch="i386:x86_64"@} 29089(gdb) 29090@end smallexample 29091 29092Setting a watchpoint on a variable local to a function. @value{GDBN} will stop 29093the program execution twice: first for the variable changing value, then 29094for the watchpoint going out of scope. 29095 29096@smallexample 29097(gdb) 29098-break-watch C 29099^done,wpt=@{number="5",exp="C"@} 29100(gdb) 29101-exec-continue 29102^running 29103(gdb) 29104*stopped,reason="watchpoint-trigger", 29105wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@}, 29106frame=@{func="callee4",args=[], 29107file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29108fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13", 29109arch="i386:x86_64"@} 29110(gdb) 29111-exec-continue 29112^running 29113(gdb) 29114*stopped,reason="watchpoint-scope",wpnum="5", 29115frame=@{func="callee3",args=[@{name="strarg", 29116value="0x11940 \"A string argument.\""@}], 29117file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29118fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18", 29119arch="i386:x86_64"@} 29120(gdb) 29121@end smallexample 29122 29123Listing breakpoints and watchpoints, at different points in the program 29124execution. Note that once the watchpoint goes out of scope, it is 29125deleted. 29126 29127@smallexample 29128(gdb) 29129-break-watch C 29130^done,wpt=@{number="2",exp="C"@} 29131(gdb) 29132-break-list 29133^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 29134hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 29135@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 29136@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 29137@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 29138@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 29139@{width="40",alignment="2",col_name="what",colhdr="What"@}], 29140body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 29141addr="0x00010734",func="callee4", 29142file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29143fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",thread-groups=["i1"], 29144times="1"@}, 29145bkpt=@{number="2",type="watchpoint",disp="keep", 29146enabled="y",addr="",what="C",thread-groups=["i1"],times="0"@}]@} 29147(gdb) 29148-exec-continue 29149^running 29150(gdb) 29151*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@}, 29152value=@{old="-276895068",new="3"@}, 29153frame=@{func="callee4",args=[], 29154file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29155fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13", 29156arch="i386:x86_64"@} 29157(gdb) 29158-break-list 29159^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 29160hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 29161@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 29162@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 29163@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 29164@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 29165@{width="40",alignment="2",col_name="what",colhdr="What"@}], 29166body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 29167addr="0x00010734",func="callee4", 29168file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29169fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",thread-groups=["i1"], 29170times="1"@}, 29171bkpt=@{number="2",type="watchpoint",disp="keep", 29172enabled="y",addr="",what="C",thread-groups=["i1"],times="-5"@}]@} 29173(gdb) 29174-exec-continue 29175^running 29176^done,reason="watchpoint-scope",wpnum="2", 29177frame=@{func="callee3",args=[@{name="strarg", 29178value="0x11940 \"A string argument.\""@}], 29179file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29180fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18", 29181arch="i386:x86_64"@} 29182(gdb) 29183-break-list 29184^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 29185hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 29186@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 29187@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 29188@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 29189@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 29190@{width="40",alignment="2",col_name="what",colhdr="What"@}], 29191body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 29192addr="0x00010734",func="callee4", 29193file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 29194fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 29195thread-groups=["i1"],times="1"@}]@} 29196(gdb) 29197@end smallexample 29198 29199 29200@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29201@node GDB/MI Catchpoint Commands 29202@section @sc{gdb/mi} Catchpoint Commands 29203 29204This section documents @sc{gdb/mi} commands for manipulating 29205catchpoints. 29206 29207@menu 29208* Shared Library GDB/MI Catchpoint Commands:: 29209* Ada Exception GDB/MI Catchpoint Commands:: 29210@end menu 29211 29212@node Shared Library GDB/MI Catchpoint Commands 29213@subsection Shared Library @sc{gdb/mi} Catchpoints 29214 29215@subheading The @code{-catch-load} Command 29216@findex -catch-load 29217 29218@subsubheading Synopsis 29219 29220@smallexample 29221 -catch-load [ -t ] [ -d ] @var{regexp} 29222@end smallexample 29223 29224Add a catchpoint for library load events. If the @samp{-t} option is used, 29225the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 29226Breakpoints}). If the @samp{-d} option is used, the catchpoint is created 29227in a disabled state. The @samp{regexp} argument is a regular 29228expression used to match the name of the loaded library. 29229 29230 29231@subsubheading @value{GDBN} Command 29232 29233The corresponding @value{GDBN} command is @samp{catch load}. 29234 29235@subsubheading Example 29236 29237@smallexample 29238-catch-load -t foo.so 29239^done,bkpt=@{number="1",type="catchpoint",disp="del",enabled="y", 29240what="load of library matching foo.so",catch-type="load",times="0"@} 29241(gdb) 29242@end smallexample 29243 29244 29245@subheading The @code{-catch-unload} Command 29246@findex -catch-unload 29247 29248@subsubheading Synopsis 29249 29250@smallexample 29251 -catch-unload [ -t ] [ -d ] @var{regexp} 29252@end smallexample 29253 29254Add a catchpoint for library unload events. If the @samp{-t} option is 29255used, the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 29256Breakpoints}). If the @samp{-d} option is used, the catchpoint is 29257created in a disabled state. The @samp{regexp} argument is a regular 29258expression used to match the name of the unloaded library. 29259 29260@subsubheading @value{GDBN} Command 29261 29262The corresponding @value{GDBN} command is @samp{catch unload}. 29263 29264@subsubheading Example 29265 29266@smallexample 29267-catch-unload -d bar.so 29268^done,bkpt=@{number="2",type="catchpoint",disp="keep",enabled="n", 29269what="load of library matching bar.so",catch-type="unload",times="0"@} 29270(gdb) 29271@end smallexample 29272 29273@node Ada Exception GDB/MI Catchpoint Commands 29274@subsection Ada Exception @sc{gdb/mi} Catchpoints 29275 29276The following @sc{gdb/mi} commands can be used to create catchpoints 29277that stop the execution when Ada exceptions are being raised. 29278 29279@subheading The @code{-catch-assert} Command 29280@findex -catch-assert 29281 29282@subsubheading Synopsis 29283 29284@smallexample 29285 -catch-assert [ -c @var{condition}] [ -d ] [ -t ] 29286@end smallexample 29287 29288Add a catchpoint for failed Ada assertions. 29289 29290The possible optional parameters for this command are: 29291 29292@table @samp 29293@item -c @var{condition} 29294Make the catchpoint conditional on @var{condition}. 29295@item -d 29296Create a disabled catchpoint. 29297@item -t 29298Create a temporary catchpoint. 29299@end table 29300 29301@subsubheading @value{GDBN} Command 29302 29303The corresponding @value{GDBN} command is @samp{catch assert}. 29304 29305@subsubheading Example 29306 29307@smallexample 29308-catch-assert 29309^done,bkptno="5",bkpt=@{number="5",type="breakpoint",disp="keep", 29310enabled="y",addr="0x0000000000404888",what="failed Ada assertions", 29311thread-groups=["i1"],times="0", 29312original-location="__gnat_debug_raise_assert_failure"@} 29313(gdb) 29314@end smallexample 29315 29316@subheading The @code{-catch-exception} Command 29317@findex -catch-exception 29318 29319@subsubheading Synopsis 29320 29321@smallexample 29322 -catch-exception [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ] 29323 [ -t ] [ -u ] 29324@end smallexample 29325 29326Add a catchpoint stopping when Ada exceptions are raised. 29327By default, the command stops the program when any Ada exception 29328gets raised. But it is also possible, by using some of the 29329optional parameters described below, to create more selective 29330catchpoints. 29331 29332The possible optional parameters for this command are: 29333 29334@table @samp 29335@item -c @var{condition} 29336Make the catchpoint conditional on @var{condition}. 29337@item -d 29338Create a disabled catchpoint. 29339@item -e @var{exception-name} 29340Only stop when @var{exception-name} is raised. This option cannot 29341be used combined with @samp{-u}. 29342@item -t 29343Create a temporary catchpoint. 29344@item -u 29345Stop only when an unhandled exception gets raised. This option 29346cannot be used combined with @samp{-e}. 29347@end table 29348 29349@subsubheading @value{GDBN} Command 29350 29351The corresponding @value{GDBN} commands are @samp{catch exception} 29352and @samp{catch exception unhandled}. 29353 29354@subsubheading Example 29355 29356@smallexample 29357-catch-exception -e Program_Error 29358^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep", 29359enabled="y",addr="0x0000000000404874", 29360what="`Program_Error' Ada exception", thread-groups=["i1"], 29361times="0",original-location="__gnat_debug_raise_exception"@} 29362(gdb) 29363@end smallexample 29364 29365@subheading The @code{-catch-handlers} Command 29366@findex -catch-handlers 29367 29368@subsubheading Synopsis 29369 29370@smallexample 29371 -catch-handlers [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ] 29372 [ -t ] 29373@end smallexample 29374 29375Add a catchpoint stopping when Ada exceptions are handled. 29376By default, the command stops the program when any Ada exception 29377gets handled. But it is also possible, by using some of the 29378optional parameters described below, to create more selective 29379catchpoints. 29380 29381The possible optional parameters for this command are: 29382 29383@table @samp 29384@item -c @var{condition} 29385Make the catchpoint conditional on @var{condition}. 29386@item -d 29387Create a disabled catchpoint. 29388@item -e @var{exception-name} 29389Only stop when @var{exception-name} is handled. 29390@item -t 29391Create a temporary catchpoint. 29392@end table 29393 29394@subsubheading @value{GDBN} Command 29395 29396The corresponding @value{GDBN} command is @samp{catch handlers}. 29397 29398@subsubheading Example 29399 29400@smallexample 29401-catch-handlers -e Constraint_Error 29402^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep", 29403enabled="y",addr="0x0000000000402f68", 29404what="`Constraint_Error' Ada exception handlers",thread-groups=["i1"], 29405times="0",original-location="__gnat_begin_handler"@} 29406(gdb) 29407@end smallexample 29408 29409@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29410@node GDB/MI Program Context 29411@section @sc{gdb/mi} Program Context 29412 29413@subheading The @code{-exec-arguments} Command 29414@findex -exec-arguments 29415 29416 29417@subsubheading Synopsis 29418 29419@smallexample 29420 -exec-arguments @var{args} 29421@end smallexample 29422 29423Set the inferior program arguments, to be used in the next 29424@samp{-exec-run}. 29425 29426@subsubheading @value{GDBN} Command 29427 29428The corresponding @value{GDBN} command is @samp{set args}. 29429 29430@subsubheading Example 29431 29432@smallexample 29433(gdb) 29434-exec-arguments -v word 29435^done 29436(gdb) 29437@end smallexample 29438 29439 29440@ignore 29441@subheading The @code{-exec-show-arguments} Command 29442@findex -exec-show-arguments 29443 29444@subsubheading Synopsis 29445 29446@smallexample 29447 -exec-show-arguments 29448@end smallexample 29449 29450Print the arguments of the program. 29451 29452@subsubheading @value{GDBN} Command 29453 29454The corresponding @value{GDBN} command is @samp{show args}. 29455 29456@subsubheading Example 29457N.A. 29458@end ignore 29459 29460 29461@subheading The @code{-environment-cd} Command 29462@findex -environment-cd 29463 29464@subsubheading Synopsis 29465 29466@smallexample 29467 -environment-cd @var{pathdir} 29468@end smallexample 29469 29470Set @value{GDBN}'s working directory. 29471 29472@subsubheading @value{GDBN} Command 29473 29474The corresponding @value{GDBN} command is @samp{cd}. 29475 29476@subsubheading Example 29477 29478@smallexample 29479(gdb) 29480-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 29481^done 29482(gdb) 29483@end smallexample 29484 29485 29486@subheading The @code{-environment-directory} Command 29487@findex -environment-directory 29488 29489@subsubheading Synopsis 29490 29491@smallexample 29492 -environment-directory [ -r ] [ @var{pathdir} ]+ 29493@end smallexample 29494 29495Add directories @var{pathdir} to beginning of search path for source files. 29496If the @samp{-r} option is used, the search path is reset to the default 29497search path. If directories @var{pathdir} are supplied in addition to the 29498@samp{-r} option, the search path is first reset and then addition 29499occurs as normal. 29500Multiple directories may be specified, separated by blanks. Specifying 29501multiple directories in a single command 29502results in the directories added to the beginning of the 29503search path in the same order they were presented in the command. 29504If blanks are needed as 29505part of a directory name, double-quotes should be used around 29506the name. In the command output, the path will show up separated 29507by the system directory-separator character. The directory-separator 29508character must not be used 29509in any directory name. 29510If no directories are specified, the current search path is displayed. 29511 29512@subsubheading @value{GDBN} Command 29513 29514The corresponding @value{GDBN} command is @samp{dir}. 29515 29516@subsubheading Example 29517 29518@smallexample 29519(gdb) 29520-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 29521^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 29522(gdb) 29523-environment-directory "" 29524^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 29525(gdb) 29526-environment-directory -r /home/jjohnstn/src/gdb /usr/src 29527^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd" 29528(gdb) 29529-environment-directory -r 29530^done,source-path="$cdir:$cwd" 29531(gdb) 29532@end smallexample 29533 29534 29535@subheading The @code{-environment-path} Command 29536@findex -environment-path 29537 29538@subsubheading Synopsis 29539 29540@smallexample 29541 -environment-path [ -r ] [ @var{pathdir} ]+ 29542@end smallexample 29543 29544Add directories @var{pathdir} to beginning of search path for object files. 29545If the @samp{-r} option is used, the search path is reset to the original 29546search path that existed at gdb start-up. If directories @var{pathdir} are 29547supplied in addition to the 29548@samp{-r} option, the search path is first reset and then addition 29549occurs as normal. 29550Multiple directories may be specified, separated by blanks. Specifying 29551multiple directories in a single command 29552results in the directories added to the beginning of the 29553search path in the same order they were presented in the command. 29554If blanks are needed as 29555part of a directory name, double-quotes should be used around 29556the name. In the command output, the path will show up separated 29557by the system directory-separator character. The directory-separator 29558character must not be used 29559in any directory name. 29560If no directories are specified, the current path is displayed. 29561 29562 29563@subsubheading @value{GDBN} Command 29564 29565The corresponding @value{GDBN} command is @samp{path}. 29566 29567@subsubheading Example 29568 29569@smallexample 29570(gdb) 29571-environment-path 29572^done,path="/usr/bin" 29573(gdb) 29574-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin 29575^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin" 29576(gdb) 29577-environment-path -r /usr/local/bin 29578^done,path="/usr/local/bin:/usr/bin" 29579(gdb) 29580@end smallexample 29581 29582 29583@subheading The @code{-environment-pwd} Command 29584@findex -environment-pwd 29585 29586@subsubheading Synopsis 29587 29588@smallexample 29589 -environment-pwd 29590@end smallexample 29591 29592Show the current working directory. 29593 29594@subsubheading @value{GDBN} Command 29595 29596The corresponding @value{GDBN} command is @samp{pwd}. 29597 29598@subsubheading Example 29599 29600@smallexample 29601(gdb) 29602-environment-pwd 29603^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb" 29604(gdb) 29605@end smallexample 29606 29607@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29608@node GDB/MI Thread Commands 29609@section @sc{gdb/mi} Thread Commands 29610 29611 29612@subheading The @code{-thread-info} Command 29613@findex -thread-info 29614 29615@subsubheading Synopsis 29616 29617@smallexample 29618 -thread-info [ @var{thread-id} ] 29619@end smallexample 29620 29621Reports information about either a specific thread, if the 29622@var{thread-id} parameter is present, or about all threads. 29623@var{thread-id} is the thread's global thread ID. When printing 29624information about all threads, also reports the global ID of the 29625current thread. 29626 29627@subsubheading @value{GDBN} Command 29628 29629The @samp{info thread} command prints the same information 29630about all threads. 29631 29632@subsubheading Result 29633 29634The result contains the following attributes: 29635 29636@table @samp 29637@item threads 29638A list of threads. The format of the elements of the list is described in 29639@ref{GDB/MI Thread Information}. 29640 29641@item current-thread-id 29642The global id of the currently selected thread. This field is omitted if there 29643is no selected thread (for example, when the selected inferior is not running, 29644and therefore has no threads) or if a @var{thread-id} argument was passed to 29645the command. 29646 29647@end table 29648 29649@subsubheading Example 29650 29651@smallexample 29652-thread-info 29653^done,threads=[ 29654@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 29655 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall", 29656 args=[]@},state="running"@}, 29657@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 29658 frame=@{level="0",addr="0x0804891f",func="foo", 29659 args=[@{name="i",value="10"@}], 29660 file="/tmp/a.c",fullname="/tmp/a.c",line="158",arch="i386:x86_64"@}, 29661 state="running"@}], 29662current-thread-id="1" 29663(gdb) 29664@end smallexample 29665 29666@subheading The @code{-thread-list-ids} Command 29667@findex -thread-list-ids 29668 29669@subsubheading Synopsis 29670 29671@smallexample 29672 -thread-list-ids 29673@end smallexample 29674 29675Produces a list of the currently known global @value{GDBN} thread ids. 29676At the end of the list it also prints the total number of such 29677threads. 29678 29679This command is retained for historical reasons, the 29680@code{-thread-info} command should be used instead. 29681 29682@subsubheading @value{GDBN} Command 29683 29684Part of @samp{info threads} supplies the same information. 29685 29686@subsubheading Example 29687 29688@smallexample 29689(gdb) 29690-thread-list-ids 29691^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 29692current-thread-id="1",number-of-threads="3" 29693(gdb) 29694@end smallexample 29695 29696 29697@subheading The @code{-thread-select} Command 29698@findex -thread-select 29699 29700@subsubheading Synopsis 29701 29702@smallexample 29703 -thread-select @var{thread-id} 29704@end smallexample 29705 29706Make thread with global thread number @var{thread-id} the current 29707thread. It prints the number of the new current thread, and the 29708topmost frame for that thread. 29709 29710This command is deprecated in favor of explicitly using the 29711@samp{--thread} option to each command. 29712 29713@subsubheading @value{GDBN} Command 29714 29715The corresponding @value{GDBN} command is @samp{thread}. 29716 29717@subsubheading Example 29718 29719@smallexample 29720(gdb) 29721-exec-next 29722^running 29723(gdb) 29724*stopped,reason="end-stepping-range",thread-id="2",line="187", 29725file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c" 29726(gdb) 29727-thread-list-ids 29728^done, 29729thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 29730number-of-threads="3" 29731(gdb) 29732-thread-select 3 29733^done,new-thread-id="3", 29734frame=@{level="0",func="vprintf", 29735args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@}, 29736@{name="arg",value="0x2"@}],file="vprintf.c",line="31",arch="i386:x86_64"@} 29737(gdb) 29738@end smallexample 29739 29740@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29741@node GDB/MI Ada Tasking Commands 29742@section @sc{gdb/mi} Ada Tasking Commands 29743 29744@subheading The @code{-ada-task-info} Command 29745@findex -ada-task-info 29746 29747@subsubheading Synopsis 29748 29749@smallexample 29750 -ada-task-info [ @var{task-id} ] 29751@end smallexample 29752 29753Reports information about either a specific Ada task, if the 29754@var{task-id} parameter is present, or about all Ada tasks. 29755 29756@subsubheading @value{GDBN} Command 29757 29758The @samp{info tasks} command prints the same information 29759about all Ada tasks (@pxref{Ada Tasks}). 29760 29761@subsubheading Result 29762 29763The result is a table of Ada tasks. The following columns are 29764defined for each Ada task: 29765 29766@table @samp 29767@item current 29768This field exists only for the current thread. It has the value @samp{*}. 29769 29770@item id 29771The identifier that @value{GDBN} uses to refer to the Ada task. 29772 29773@item task-id 29774The identifier that the target uses to refer to the Ada task. 29775 29776@item thread-id 29777The global thread identifier of the thread corresponding to the Ada 29778task. 29779 29780This field should always exist, as Ada tasks are always implemented 29781on top of a thread. But if @value{GDBN} cannot find this corresponding 29782thread for any reason, the field is omitted. 29783 29784@item parent-id 29785This field exists only when the task was created by another task. 29786In this case, it provides the ID of the parent task. 29787 29788@item priority 29789The base priority of the task. 29790 29791@item state 29792The current state of the task. For a detailed description of the 29793possible states, see @ref{Ada Tasks}. 29794 29795@item name 29796The name of the task. 29797 29798@end table 29799 29800@subsubheading Example 29801 29802@smallexample 29803-ada-task-info 29804^done,tasks=@{nr_rows="3",nr_cols="8", 29805hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@}, 29806@{width="3",alignment="1",col_name="id",colhdr="ID"@}, 29807@{width="9",alignment="1",col_name="task-id",colhdr="TID"@}, 29808@{width="4",alignment="1",col_name="thread-id",colhdr=""@}, 29809@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@}, 29810@{width="3",alignment="1",col_name="priority",colhdr="Pri"@}, 29811@{width="22",alignment="-1",col_name="state",colhdr="State"@}, 29812@{width="1",alignment="2",col_name="name",colhdr="Name"@}], 29813body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48", 29814state="Child Termination Wait",name="main_task"@}]@} 29815(gdb) 29816@end smallexample 29817 29818@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29819@node GDB/MI Program Execution 29820@section @sc{gdb/mi} Program Execution 29821 29822These are the asynchronous commands which generate the out-of-band 29823record @samp{*stopped}. Currently @value{GDBN} only really executes 29824asynchronously with remote targets and this interaction is mimicked in 29825other cases. 29826 29827@subheading The @code{-exec-continue} Command 29828@findex -exec-continue 29829 29830@subsubheading Synopsis 29831 29832@smallexample 29833 -exec-continue [--reverse] [--all|--thread-group N] 29834@end smallexample 29835 29836Resumes the execution of the inferior program, which will continue 29837to execute until it reaches a debugger stop event. If the 29838@samp{--reverse} option is specified, execution resumes in reverse until 29839it reaches a stop event. Stop events may include 29840@itemize @bullet 29841@item 29842breakpoints or watchpoints 29843@item 29844signals or exceptions 29845@item 29846the end of the process (or its beginning under @samp{--reverse}) 29847@item 29848the end or beginning of a replay log if one is being used. 29849@end itemize 29850In all-stop mode (@pxref{All-Stop 29851Mode}), may resume only one thread, or all threads, depending on the 29852value of the @samp{scheduler-locking} variable. If @samp{--all} is 29853specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is 29854ignored in all-stop mode. If the @samp{--thread-group} options is 29855specified, then all threads in that thread group are resumed. 29856 29857@subsubheading @value{GDBN} Command 29858 29859The corresponding @value{GDBN} corresponding is @samp{continue}. 29860 29861@subsubheading Example 29862 29863@smallexample 29864-exec-continue 29865^running 29866(gdb) 29867@@Hello world 29868*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{ 29869func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c", 29870line="13",arch="i386:x86_64"@} 29871(gdb) 29872@end smallexample 29873 29874 29875@subheading The @code{-exec-finish} Command 29876@findex -exec-finish 29877 29878@subsubheading Synopsis 29879 29880@smallexample 29881 -exec-finish [--reverse] 29882@end smallexample 29883 29884Resumes the execution of the inferior program until the current 29885function is exited. Displays the results returned by the function. 29886If the @samp{--reverse} option is specified, resumes the reverse 29887execution of the inferior program until the point where current 29888function was called. 29889 29890@subsubheading @value{GDBN} Command 29891 29892The corresponding @value{GDBN} command is @samp{finish}. 29893 29894@subsubheading Example 29895 29896Function returning @code{void}. 29897 29898@smallexample 29899-exec-finish 29900^running 29901(gdb) 29902@@hello from foo 29903*stopped,reason="function-finished",frame=@{func="main",args=[], 29904file="hello.c",fullname="/home/foo/bar/hello.c",line="7",arch="i386:x86_64"@} 29905(gdb) 29906@end smallexample 29907 29908Function returning other than @code{void}. The name of the internal 29909@value{GDBN} variable storing the result is printed, together with the 29910value itself. 29911 29912@smallexample 29913-exec-finish 29914^running 29915(gdb) 29916*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo", 29917args=[@{name="a",value="1"],@{name="b",value="9"@}@}, 29918file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 29919arch="i386:x86_64"@}, 29920gdb-result-var="$1",return-value="0" 29921(gdb) 29922@end smallexample 29923 29924 29925@subheading The @code{-exec-interrupt} Command 29926@findex -exec-interrupt 29927 29928@subsubheading Synopsis 29929 29930@smallexample 29931 -exec-interrupt [--all|--thread-group N] 29932@end smallexample 29933 29934Interrupts the background execution of the target. Note how the token 29935associated with the stop message is the one for the execution command 29936that has been interrupted. The token for the interrupt itself only 29937appears in the @samp{^done} output. If the user is trying to 29938interrupt a non-running program, an error message will be printed. 29939 29940Note that when asynchronous execution is enabled, this command is 29941asynchronous just like other execution commands. That is, first the 29942@samp{^done} response will be printed, and the target stop will be 29943reported after that using the @samp{*stopped} notification. 29944 29945In non-stop mode, only the context thread is interrupted by default. 29946All threads (in all inferiors) will be interrupted if the 29947@samp{--all} option is specified. If the @samp{--thread-group} 29948option is specified, all threads in that group will be interrupted. 29949 29950@subsubheading @value{GDBN} Command 29951 29952The corresponding @value{GDBN} command is @samp{interrupt}. 29953 29954@subsubheading Example 29955 29956@smallexample 29957(gdb) 29958111-exec-continue 29959111^running 29960 29961(gdb) 29962222-exec-interrupt 29963222^done 29964(gdb) 29965111*stopped,signal-name="SIGINT",signal-meaning="Interrupt", 29966frame=@{addr="0x00010140",func="foo",args=[],file="try.c", 29967fullname="/home/foo/bar/try.c",line="13",arch="i386:x86_64"@} 29968(gdb) 29969 29970(gdb) 29971-exec-interrupt 29972^error,msg="mi_cmd_exec_interrupt: Inferior not executing." 29973(gdb) 29974@end smallexample 29975 29976@subheading The @code{-exec-jump} Command 29977@findex -exec-jump 29978 29979@subsubheading Synopsis 29980 29981@smallexample 29982 -exec-jump @var{location} 29983@end smallexample 29984 29985Resumes execution of the inferior program at the location specified by 29986parameter. @xref{Specify Location}, for a description of the 29987different forms of @var{location}. 29988 29989@subsubheading @value{GDBN} Command 29990 29991The corresponding @value{GDBN} command is @samp{jump}. 29992 29993@subsubheading Example 29994 29995@smallexample 29996-exec-jump foo.c:10 29997*running,thread-id="all" 29998^running 29999@end smallexample 30000 30001 30002@subheading The @code{-exec-next} Command 30003@findex -exec-next 30004 30005@subsubheading Synopsis 30006 30007@smallexample 30008 -exec-next [--reverse] 30009@end smallexample 30010 30011Resumes execution of the inferior program, stopping when the beginning 30012of the next source line is reached. 30013 30014If the @samp{--reverse} option is specified, resumes reverse execution 30015of the inferior program, stopping at the beginning of the previous 30016source line. If you issue this command on the first line of a 30017function, it will take you back to the caller of that function, to the 30018source line where the function was called. 30019 30020 30021@subsubheading @value{GDBN} Command 30022 30023The corresponding @value{GDBN} command is @samp{next}. 30024 30025@subsubheading Example 30026 30027@smallexample 30028-exec-next 30029^running 30030(gdb) 30031*stopped,reason="end-stepping-range",line="8",file="hello.c" 30032(gdb) 30033@end smallexample 30034 30035 30036@subheading The @code{-exec-next-instruction} Command 30037@findex -exec-next-instruction 30038 30039@subsubheading Synopsis 30040 30041@smallexample 30042 -exec-next-instruction [--reverse] 30043@end smallexample 30044 30045Executes one machine instruction. If the instruction is a function 30046call, continues until the function returns. If the program stops at an 30047instruction in the middle of a source line, the address will be 30048printed as well. 30049 30050If the @samp{--reverse} option is specified, resumes reverse execution 30051of the inferior program, stopping at the previous instruction. If the 30052previously executed instruction was a return from another function, 30053it will continue to execute in reverse until the call to that function 30054(from the current stack frame) is reached. 30055 30056@subsubheading @value{GDBN} Command 30057 30058The corresponding @value{GDBN} command is @samp{nexti}. 30059 30060@subsubheading Example 30061 30062@smallexample 30063(gdb) 30064-exec-next-instruction 30065^running 30066 30067(gdb) 30068*stopped,reason="end-stepping-range", 30069addr="0x000100d4",line="5",file="hello.c" 30070(gdb) 30071@end smallexample 30072 30073 30074@subheading The @code{-exec-return} Command 30075@findex -exec-return 30076 30077@subsubheading Synopsis 30078 30079@smallexample 30080 -exec-return 30081@end smallexample 30082 30083Makes current function return immediately. Doesn't execute the inferior. 30084Displays the new current frame. 30085 30086@subsubheading @value{GDBN} Command 30087 30088The corresponding @value{GDBN} command is @samp{return}. 30089 30090@subsubheading Example 30091 30092@smallexample 30093(gdb) 30094200-break-insert callee4 30095200^done,bkpt=@{number="1",addr="0x00010734", 30096file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@} 30097(gdb) 30098000-exec-run 30099000^running 30100(gdb) 30101000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 30102frame=@{func="callee4",args=[], 30103file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30104fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 30105arch="i386:x86_64"@} 30106(gdb) 30107205-break-delete 30108205^done 30109(gdb) 30110111-exec-return 30111111^done,frame=@{level="0",func="callee3", 30112args=[@{name="strarg", 30113value="0x11940 \"A string argument.\""@}], 30114file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30115fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18", 30116arch="i386:x86_64"@} 30117(gdb) 30118@end smallexample 30119 30120 30121@subheading The @code{-exec-run} Command 30122@findex -exec-run 30123 30124@subsubheading Synopsis 30125 30126@smallexample 30127 -exec-run [ --all | --thread-group N ] [ --start ] 30128@end smallexample 30129 30130Starts execution of the inferior from the beginning. The inferior 30131executes until either a breakpoint is encountered or the program 30132exits. In the latter case the output will include an exit code, if 30133the program has exited exceptionally. 30134 30135When neither the @samp{--all} nor the @samp{--thread-group} option 30136is specified, the current inferior is started. If the 30137@samp{--thread-group} option is specified, it should refer to a thread 30138group of type @samp{process}, and that thread group will be started. 30139If the @samp{--all} option is specified, then all inferiors will be started. 30140 30141Using the @samp{--start} option instructs the debugger to stop 30142the execution at the start of the inferior's main subprogram, 30143following the same behavior as the @code{start} command 30144(@pxref{Starting}). 30145 30146@subsubheading @value{GDBN} Command 30147 30148The corresponding @value{GDBN} command is @samp{run}. 30149 30150@subsubheading Examples 30151 30152@smallexample 30153(gdb) 30154-break-insert main 30155^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@} 30156(gdb) 30157-exec-run 30158^running 30159(gdb) 30160*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 30161frame=@{func="main",args=[],file="recursive2.c", 30162fullname="/home/foo/bar/recursive2.c",line="4",arch="i386:x86_64"@} 30163(gdb) 30164@end smallexample 30165 30166@noindent 30167Program exited normally: 30168 30169@smallexample 30170(gdb) 30171-exec-run 30172^running 30173(gdb) 30174x = 55 30175*stopped,reason="exited-normally" 30176(gdb) 30177@end smallexample 30178 30179@noindent 30180Program exited exceptionally: 30181 30182@smallexample 30183(gdb) 30184-exec-run 30185^running 30186(gdb) 30187x = 55 30188*stopped,reason="exited",exit-code="01" 30189(gdb) 30190@end smallexample 30191 30192Another way the program can terminate is if it receives a signal such as 30193@code{SIGINT}. In this case, @sc{gdb/mi} displays this: 30194 30195@smallexample 30196(gdb) 30197*stopped,reason="exited-signalled",signal-name="SIGINT", 30198signal-meaning="Interrupt" 30199@end smallexample 30200 30201 30202@c @subheading -exec-signal 30203 30204 30205@subheading The @code{-exec-step} Command 30206@findex -exec-step 30207 30208@subsubheading Synopsis 30209 30210@smallexample 30211 -exec-step [--reverse] 30212@end smallexample 30213 30214Resumes execution of the inferior program, stopping when the beginning 30215of the next source line is reached, if the next source line is not a 30216function call. If it is, stop at the first instruction of the called 30217function. If the @samp{--reverse} option is specified, resumes reverse 30218execution of the inferior program, stopping at the beginning of the 30219previously executed source line. 30220 30221@subsubheading @value{GDBN} Command 30222 30223The corresponding @value{GDBN} command is @samp{step}. 30224 30225@subsubheading Example 30226 30227Stepping into a function: 30228 30229@smallexample 30230-exec-step 30231^running 30232(gdb) 30233*stopped,reason="end-stepping-range", 30234frame=@{func="foo",args=[@{name="a",value="10"@}, 30235@{name="b",value="0"@}],file="recursive2.c", 30236fullname="/home/foo/bar/recursive2.c",line="11",arch="i386:x86_64"@} 30237(gdb) 30238@end smallexample 30239 30240Regular stepping: 30241 30242@smallexample 30243-exec-step 30244^running 30245(gdb) 30246*stopped,reason="end-stepping-range",line="14",file="recursive2.c" 30247(gdb) 30248@end smallexample 30249 30250 30251@subheading The @code{-exec-step-instruction} Command 30252@findex -exec-step-instruction 30253 30254@subsubheading Synopsis 30255 30256@smallexample 30257 -exec-step-instruction [--reverse] 30258@end smallexample 30259 30260Resumes the inferior which executes one machine instruction. If the 30261@samp{--reverse} option is specified, resumes reverse execution of the 30262inferior program, stopping at the previously executed instruction. 30263The output, once @value{GDBN} has stopped, will vary depending on 30264whether we have stopped in the middle of a source line or not. In the 30265former case, the address at which the program stopped will be printed 30266as well. 30267 30268@subsubheading @value{GDBN} Command 30269 30270The corresponding @value{GDBN} command is @samp{stepi}. 30271 30272@subsubheading Example 30273 30274@smallexample 30275(gdb) 30276-exec-step-instruction 30277^running 30278 30279(gdb) 30280*stopped,reason="end-stepping-range", 30281frame=@{func="foo",args=[],file="try.c", 30282fullname="/home/foo/bar/try.c",line="10",arch="i386:x86_64"@} 30283(gdb) 30284-exec-step-instruction 30285^running 30286 30287(gdb) 30288*stopped,reason="end-stepping-range", 30289frame=@{addr="0x000100f4",func="foo",args=[],file="try.c", 30290fullname="/home/foo/bar/try.c",line="10",arch="i386:x86_64"@} 30291(gdb) 30292@end smallexample 30293 30294 30295@subheading The @code{-exec-until} Command 30296@findex -exec-until 30297 30298@subsubheading Synopsis 30299 30300@smallexample 30301 -exec-until [ @var{location} ] 30302@end smallexample 30303 30304Executes the inferior until the @var{location} specified in the 30305argument is reached. If there is no argument, the inferior executes 30306until a source line greater than the current one is reached. The 30307reason for stopping in this case will be @samp{location-reached}. 30308 30309@subsubheading @value{GDBN} Command 30310 30311The corresponding @value{GDBN} command is @samp{until}. 30312 30313@subsubheading Example 30314 30315@smallexample 30316(gdb) 30317-exec-until recursive2.c:6 30318^running 30319(gdb) 30320x = 55 30321*stopped,reason="location-reached",frame=@{func="main",args=[], 30322file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6", 30323arch="i386:x86_64"@} 30324(gdb) 30325@end smallexample 30326 30327@ignore 30328@subheading -file-clear 30329Is this going away???? 30330@end ignore 30331 30332@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30333@node GDB/MI Stack Manipulation 30334@section @sc{gdb/mi} Stack Manipulation Commands 30335 30336@subheading The @code{-enable-frame-filters} Command 30337@findex -enable-frame-filters 30338 30339@smallexample 30340-enable-frame-filters 30341@end smallexample 30342 30343@value{GDBN} allows Python-based frame filters to affect the output of 30344the MI commands relating to stack traces. As there is no way to 30345implement this in a fully backward-compatible way, a front end must 30346request that this functionality be enabled. 30347 30348Once enabled, this feature cannot be disabled. 30349 30350Note that if Python support has not been compiled into @value{GDBN}, 30351this command will still succeed (and do nothing). 30352 30353@subheading The @code{-stack-info-frame} Command 30354@findex -stack-info-frame 30355 30356@subsubheading Synopsis 30357 30358@smallexample 30359 -stack-info-frame 30360@end smallexample 30361 30362Get info on the selected frame. 30363 30364@subsubheading @value{GDBN} Command 30365 30366The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame} 30367(without arguments). 30368 30369@subsubheading Example 30370 30371@smallexample 30372(gdb) 30373-stack-info-frame 30374^done,frame=@{level="1",addr="0x0001076c",func="callee3", 30375file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30376fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17", 30377arch="i386:x86_64"@} 30378(gdb) 30379@end smallexample 30380 30381@subheading The @code{-stack-info-depth} Command 30382@findex -stack-info-depth 30383 30384@subsubheading Synopsis 30385 30386@smallexample 30387 -stack-info-depth [ @var{max-depth} ] 30388@end smallexample 30389 30390Return the depth of the stack. If the integer argument @var{max-depth} 30391is specified, do not count beyond @var{max-depth} frames. 30392 30393@subsubheading @value{GDBN} Command 30394 30395There's no equivalent @value{GDBN} command. 30396 30397@subsubheading Example 30398 30399For a stack with frame levels 0 through 11: 30400 30401@smallexample 30402(gdb) 30403-stack-info-depth 30404^done,depth="12" 30405(gdb) 30406-stack-info-depth 4 30407^done,depth="4" 30408(gdb) 30409-stack-info-depth 12 30410^done,depth="12" 30411(gdb) 30412-stack-info-depth 11 30413^done,depth="11" 30414(gdb) 30415-stack-info-depth 13 30416^done,depth="12" 30417(gdb) 30418@end smallexample 30419 30420@anchor{-stack-list-arguments} 30421@subheading The @code{-stack-list-arguments} Command 30422@findex -stack-list-arguments 30423 30424@subsubheading Synopsis 30425 30426@smallexample 30427 -stack-list-arguments [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 30428 [ @var{low-frame} @var{high-frame} ] 30429@end smallexample 30430 30431Display a list of the arguments for the frames between @var{low-frame} 30432and @var{high-frame} (inclusive). If @var{low-frame} and 30433@var{high-frame} are not provided, list the arguments for the whole 30434call stack. If the two arguments are equal, show the single frame 30435at the corresponding level. It is an error if @var{low-frame} is 30436larger than the actual number of frames. On the other hand, 30437@var{high-frame} may be larger than the actual number of frames, in 30438which case only existing frames will be returned. 30439 30440If @var{print-values} is 0 or @code{--no-values}, print only the names of 30441the variables; if it is 1 or @code{--all-values}, print also their 30442values; and if it is 2 or @code{--simple-values}, print the name, 30443type and value for simple data types, and the name and type for arrays, 30444structures and unions. If the option @code{--no-frame-filters} is 30445supplied, then Python frame filters will not be executed. 30446 30447If the @code{--skip-unavailable} option is specified, arguments that 30448are not available are not listed. Partially available arguments 30449are still displayed, however. 30450 30451Use of this command to obtain arguments in a single frame is 30452deprecated in favor of the @samp{-stack-list-variables} command. 30453 30454@subsubheading @value{GDBN} Command 30455 30456@value{GDBN} does not have an equivalent command. @code{gdbtk} has a 30457@samp{gdb_get_args} command which partially overlaps with the 30458functionality of @samp{-stack-list-arguments}. 30459 30460@subsubheading Example 30461 30462@smallexample 30463(gdb) 30464-stack-list-frames 30465^done, 30466stack=[ 30467frame=@{level="0",addr="0x00010734",func="callee4", 30468file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30469fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 30470arch="i386:x86_64"@}, 30471frame=@{level="1",addr="0x0001076c",func="callee3", 30472file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30473fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17", 30474arch="i386:x86_64"@}, 30475frame=@{level="2",addr="0x0001078c",func="callee2", 30476file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30477fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22", 30478arch="i386:x86_64"@}, 30479frame=@{level="3",addr="0x000107b4",func="callee1", 30480file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30481fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27", 30482arch="i386:x86_64"@}, 30483frame=@{level="4",addr="0x000107e0",func="main", 30484file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 30485fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32", 30486arch="i386:x86_64"@}] 30487(gdb) 30488-stack-list-arguments 0 30489^done, 30490stack-args=[ 30491frame=@{level="0",args=[]@}, 30492frame=@{level="1",args=[name="strarg"]@}, 30493frame=@{level="2",args=[name="intarg",name="strarg"]@}, 30494frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@}, 30495frame=@{level="4",args=[]@}] 30496(gdb) 30497-stack-list-arguments 1 30498^done, 30499stack-args=[ 30500frame=@{level="0",args=[]@}, 30501frame=@{level="1", 30502 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 30503frame=@{level="2",args=[ 30504@{name="intarg",value="2"@}, 30505@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 30506@{frame=@{level="3",args=[ 30507@{name="intarg",value="2"@}, 30508@{name="strarg",value="0x11940 \"A string argument.\""@}, 30509@{name="fltarg",value="3.5"@}]@}, 30510frame=@{level="4",args=[]@}] 30511(gdb) 30512-stack-list-arguments 0 2 2 30513^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}] 30514(gdb) 30515-stack-list-arguments 1 2 2 30516^done,stack-args=[frame=@{level="2", 30517args=[@{name="intarg",value="2"@}, 30518@{name="strarg",value="0x11940 \"A string argument.\""@}]@}] 30519(gdb) 30520@end smallexample 30521 30522@c @subheading -stack-list-exception-handlers 30523 30524 30525@anchor{-stack-list-frames} 30526@subheading The @code{-stack-list-frames} Command 30527@findex -stack-list-frames 30528 30529@subsubheading Synopsis 30530 30531@smallexample 30532 -stack-list-frames [ --no-frame-filters @var{low-frame} @var{high-frame} ] 30533@end smallexample 30534 30535List the frames currently on the stack. For each frame it displays the 30536following info: 30537 30538@table @samp 30539@item @var{level} 30540The frame number, 0 being the topmost frame, i.e., the innermost function. 30541@item @var{addr} 30542The @code{$pc} value for that frame. 30543@item @var{func} 30544Function name. 30545@item @var{file} 30546File name of the source file where the function lives. 30547@item @var{fullname} 30548The full file name of the source file where the function lives. 30549@item @var{line} 30550Line number corresponding to the @code{$pc}. 30551@item @var{from} 30552The shared library where this function is defined. This is only given 30553if the frame's function is not known. 30554@item @var{arch} 30555Frame's architecture. 30556@end table 30557 30558If invoked without arguments, this command prints a backtrace for the 30559whole stack. If given two integer arguments, it shows the frames whose 30560levels are between the two arguments (inclusive). If the two arguments 30561are equal, it shows the single frame at the corresponding level. It is 30562an error if @var{low-frame} is larger than the actual number of 30563frames. On the other hand, @var{high-frame} may be larger than the 30564actual number of frames, in which case only existing frames will be 30565returned. If the option @code{--no-frame-filters} is supplied, then 30566Python frame filters will not be executed. 30567 30568@subsubheading @value{GDBN} Command 30569 30570The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}. 30571 30572@subsubheading Example 30573 30574Full stack backtrace: 30575 30576@smallexample 30577(gdb) 30578-stack-list-frames 30579^done,stack= 30580[frame=@{level="0",addr="0x0001076c",func="foo", 30581 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11", 30582 arch="i386:x86_64"@}, 30583frame=@{level="1",addr="0x000107a4",func="foo", 30584 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30585 arch="i386:x86_64"@}, 30586frame=@{level="2",addr="0x000107a4",func="foo", 30587 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30588 arch="i386:x86_64"@}, 30589frame=@{level="3",addr="0x000107a4",func="foo", 30590 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30591 arch="i386:x86_64"@}, 30592frame=@{level="4",addr="0x000107a4",func="foo", 30593 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30594 arch="i386:x86_64"@}, 30595frame=@{level="5",addr="0x000107a4",func="foo", 30596 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30597 arch="i386:x86_64"@}, 30598frame=@{level="6",addr="0x000107a4",func="foo", 30599 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30600 arch="i386:x86_64"@}, 30601frame=@{level="7",addr="0x000107a4",func="foo", 30602 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30603 arch="i386:x86_64"@}, 30604frame=@{level="8",addr="0x000107a4",func="foo", 30605 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30606 arch="i386:x86_64"@}, 30607frame=@{level="9",addr="0x000107a4",func="foo", 30608 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30609 arch="i386:x86_64"@}, 30610frame=@{level="10",addr="0x000107a4",func="foo", 30611 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30612 arch="i386:x86_64"@}, 30613frame=@{level="11",addr="0x00010738",func="main", 30614 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4", 30615 arch="i386:x86_64"@}] 30616(gdb) 30617@end smallexample 30618 30619Show frames between @var{low_frame} and @var{high_frame}: 30620 30621@smallexample 30622(gdb) 30623-stack-list-frames 3 5 30624^done,stack= 30625[frame=@{level="3",addr="0x000107a4",func="foo", 30626 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30627 arch="i386:x86_64"@}, 30628frame=@{level="4",addr="0x000107a4",func="foo", 30629 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30630 arch="i386:x86_64"@}, 30631frame=@{level="5",addr="0x000107a4",func="foo", 30632 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30633 arch="i386:x86_64"@}] 30634(gdb) 30635@end smallexample 30636 30637Show a single frame: 30638 30639@smallexample 30640(gdb) 30641-stack-list-frames 3 3 30642^done,stack= 30643[frame=@{level="3",addr="0x000107a4",func="foo", 30644 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 30645 arch="i386:x86_64"@}] 30646(gdb) 30647@end smallexample 30648 30649 30650@subheading The @code{-stack-list-locals} Command 30651@findex -stack-list-locals 30652@anchor{-stack-list-locals} 30653 30654@subsubheading Synopsis 30655 30656@smallexample 30657 -stack-list-locals [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 30658@end smallexample 30659 30660Display the local variable names for the selected frame. If 30661@var{print-values} is 0 or @code{--no-values}, print only the names of 30662the variables; if it is 1 or @code{--all-values}, print also their 30663values; and if it is 2 or @code{--simple-values}, print the name, 30664type and value for simple data types, and the name and type for arrays, 30665structures and unions. In this last case, a frontend can immediately 30666display the value of simple data types and create variable objects for 30667other data types when the user wishes to explore their values in 30668more detail. If the option @code{--no-frame-filters} is supplied, then 30669Python frame filters will not be executed. 30670 30671If the @code{--skip-unavailable} option is specified, local variables 30672that are not available are not listed. Partially available local 30673variables are still displayed, however. 30674 30675This command is deprecated in favor of the 30676@samp{-stack-list-variables} command. 30677 30678@subsubheading @value{GDBN} Command 30679 30680@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}. 30681 30682@subsubheading Example 30683 30684@smallexample 30685(gdb) 30686-stack-list-locals 0 30687^done,locals=[name="A",name="B",name="C"] 30688(gdb) 30689-stack-list-locals --all-values 30690^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@}, 30691 @{name="C",value="@{1, 2, 3@}"@}] 30692-stack-list-locals --simple-values 30693^done,locals=[@{name="A",type="int",value="1"@}, 30694 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}] 30695(gdb) 30696@end smallexample 30697 30698@anchor{-stack-list-variables} 30699@subheading The @code{-stack-list-variables} Command 30700@findex -stack-list-variables 30701 30702@subsubheading Synopsis 30703 30704@smallexample 30705 -stack-list-variables [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 30706@end smallexample 30707 30708Display the names of local variables and function arguments for the selected frame. If 30709@var{print-values} is 0 or @code{--no-values}, print only the names of 30710the variables; if it is 1 or @code{--all-values}, print also their 30711values; and if it is 2 or @code{--simple-values}, print the name, 30712type and value for simple data types, and the name and type for arrays, 30713structures and unions. If the option @code{--no-frame-filters} is 30714supplied, then Python frame filters will not be executed. 30715 30716If the @code{--skip-unavailable} option is specified, local variables 30717and arguments that are not available are not listed. Partially 30718available arguments and local variables are still displayed, however. 30719 30720@subsubheading Example 30721 30722@smallexample 30723(gdb) 30724-stack-list-variables --thread 1 --frame 0 --all-values 30725^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}] 30726(gdb) 30727@end smallexample 30728 30729 30730@subheading The @code{-stack-select-frame} Command 30731@findex -stack-select-frame 30732 30733@subsubheading Synopsis 30734 30735@smallexample 30736 -stack-select-frame @var{framenum} 30737@end smallexample 30738 30739Change the selected frame. Select a different frame @var{framenum} on 30740the stack. 30741 30742This command in deprecated in favor of passing the @samp{--frame} 30743option to every command. 30744 30745@subsubheading @value{GDBN} Command 30746 30747The corresponding @value{GDBN} commands are @samp{frame}, @samp{up}, 30748@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}. 30749 30750@subsubheading Example 30751 30752@smallexample 30753(gdb) 30754-stack-select-frame 2 30755^done 30756(gdb) 30757@end smallexample 30758 30759@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30760@node GDB/MI Variable Objects 30761@section @sc{gdb/mi} Variable Objects 30762 30763@ignore 30764 30765@subheading Motivation for Variable Objects in @sc{gdb/mi} 30766 30767For the implementation of a variable debugger window (locals, watched 30768expressions, etc.), we are proposing the adaptation of the existing code 30769used by @code{Insight}. 30770 30771The two main reasons for that are: 30772 30773@enumerate 1 30774@item 30775It has been proven in practice (it is already on its second generation). 30776 30777@item 30778It will shorten development time (needless to say how important it is 30779now). 30780@end enumerate 30781 30782The original interface was designed to be used by Tcl code, so it was 30783slightly changed so it could be used through @sc{gdb/mi}. This section 30784describes the @sc{gdb/mi} operations that will be available and gives some 30785hints about their use. 30786 30787@emph{Note}: In addition to the set of operations described here, we 30788expect the @sc{gui} implementation of a variable window to require, at 30789least, the following operations: 30790 30791@itemize @bullet 30792@item @code{-gdb-show} @code{output-radix} 30793@item @code{-stack-list-arguments} 30794@item @code{-stack-list-locals} 30795@item @code{-stack-select-frame} 30796@end itemize 30797 30798@end ignore 30799 30800@subheading Introduction to Variable Objects 30801 30802@cindex variable objects in @sc{gdb/mi} 30803 30804Variable objects are "object-oriented" MI interface for examining and 30805changing values of expressions. Unlike some other MI interfaces that 30806work with expressions, variable objects are specifically designed for 30807simple and efficient presentation in the frontend. A variable object 30808is identified by string name. When a variable object is created, the 30809frontend specifies the expression for that variable object. The 30810expression can be a simple variable, or it can be an arbitrary complex 30811expression, and can even involve CPU registers. After creating a 30812variable object, the frontend can invoke other variable object 30813operations---for example to obtain or change the value of a variable 30814object, or to change display format. 30815 30816Variable objects have hierarchical tree structure. Any variable object 30817that corresponds to a composite type, such as structure in C, has 30818a number of child variable objects, for example corresponding to each 30819element of a structure. A child variable object can itself have 30820children, recursively. Recursion ends when we reach 30821leaf variable objects, which always have built-in types. Child variable 30822objects are created only by explicit request, so if a frontend 30823is not interested in the children of a particular variable object, no 30824child will be created. 30825 30826For a leaf variable object it is possible to obtain its value as a 30827string, or set the value from a string. String value can be also 30828obtained for a non-leaf variable object, but it's generally a string 30829that only indicates the type of the object, and does not list its 30830contents. Assignment to a non-leaf variable object is not allowed. 30831 30832A frontend does not need to read the values of all variable objects each time 30833the program stops. Instead, MI provides an update command that lists all 30834variable objects whose values has changed since the last update 30835operation. This considerably reduces the amount of data that must 30836be transferred to the frontend. As noted above, children variable 30837objects are created on demand, and only leaf variable objects have a 30838real value. As result, gdb will read target memory only for leaf 30839variables that frontend has created. 30840 30841The automatic update is not always desirable. For example, a frontend 30842might want to keep a value of some expression for future reference, 30843and never update it. For another example, fetching memory is 30844relatively slow for embedded targets, so a frontend might want 30845to disable automatic update for the variables that are either not 30846visible on the screen, or ``closed''. This is possible using so 30847called ``frozen variable objects''. Such variable objects are never 30848implicitly updated. 30849 30850Variable objects can be either @dfn{fixed} or @dfn{floating}. For the 30851fixed variable object, the expression is parsed when the variable 30852object is created, including associating identifiers to specific 30853variables. The meaning of expression never changes. For a floating 30854variable object the values of variables whose names appear in the 30855expressions are re-evaluated every time in the context of the current 30856frame. Consider this example: 30857 30858@smallexample 30859void do_work(...) 30860@{ 30861 struct work_state state; 30862 30863 if (...) 30864 do_work(...); 30865@} 30866@end smallexample 30867 30868If a fixed variable object for the @code{state} variable is created in 30869this function, and we enter the recursive call, the variable 30870object will report the value of @code{state} in the top-level 30871@code{do_work} invocation. On the other hand, a floating variable 30872object will report the value of @code{state} in the current frame. 30873 30874If an expression specified when creating a fixed variable object 30875refers to a local variable, the variable object becomes bound to the 30876thread and frame in which the variable object is created. When such 30877variable object is updated, @value{GDBN} makes sure that the 30878thread/frame combination the variable object is bound to still exists, 30879and re-evaluates the variable object in context of that thread/frame. 30880 30881The following is the complete set of @sc{gdb/mi} operations defined to 30882access this functionality: 30883 30884@multitable @columnfractions .4 .6 30885@item @strong{Operation} 30886@tab @strong{Description} 30887 30888@item @code{-enable-pretty-printing} 30889@tab enable Python-based pretty-printing 30890@item @code{-var-create} 30891@tab create a variable object 30892@item @code{-var-delete} 30893@tab delete the variable object and/or its children 30894@item @code{-var-set-format} 30895@tab set the display format of this variable 30896@item @code{-var-show-format} 30897@tab show the display format of this variable 30898@item @code{-var-info-num-children} 30899@tab tells how many children this object has 30900@item @code{-var-list-children} 30901@tab return a list of the object's children 30902@item @code{-var-info-type} 30903@tab show the type of this variable object 30904@item @code{-var-info-expression} 30905@tab print parent-relative expression that this variable object represents 30906@item @code{-var-info-path-expression} 30907@tab print full expression that this variable object represents 30908@item @code{-var-show-attributes} 30909@tab is this variable editable? does it exist here? 30910@item @code{-var-evaluate-expression} 30911@tab get the value of this variable 30912@item @code{-var-assign} 30913@tab set the value of this variable 30914@item @code{-var-update} 30915@tab update the variable and its children 30916@item @code{-var-set-frozen} 30917@tab set frozeness attribute 30918@item @code{-var-set-update-range} 30919@tab set range of children to display on update 30920@end multitable 30921 30922In the next subsection we describe each operation in detail and suggest 30923how it can be used. 30924 30925@subheading Description And Use of Operations on Variable Objects 30926 30927@subheading The @code{-enable-pretty-printing} Command 30928@findex -enable-pretty-printing 30929 30930@smallexample 30931-enable-pretty-printing 30932@end smallexample 30933 30934@value{GDBN} allows Python-based visualizers to affect the output of the 30935MI variable object commands. However, because there was no way to 30936implement this in a fully backward-compatible way, a front end must 30937request that this functionality be enabled. 30938 30939Once enabled, this feature cannot be disabled. 30940 30941Note that if Python support has not been compiled into @value{GDBN}, 30942this command will still succeed (and do nothing). 30943 30944This feature is currently (as of @value{GDBN} 7.0) experimental, and 30945may work differently in future versions of @value{GDBN}. 30946 30947@subheading The @code{-var-create} Command 30948@findex -var-create 30949 30950@subsubheading Synopsis 30951 30952@smallexample 30953 -var-create @{@var{name} | "-"@} 30954 @{@var{frame-addr} | "*" | "@@"@} @var{expression} 30955@end smallexample 30956 30957This operation creates a variable object, which allows the monitoring of 30958a variable, the result of an expression, a memory cell or a CPU 30959register. 30960 30961The @var{name} parameter is the string by which the object can be 30962referenced. It must be unique. If @samp{-} is specified, the varobj 30963system will generate a string ``varNNNNNN'' automatically. It will be 30964unique provided that one does not specify @var{name} of that format. 30965The command fails if a duplicate name is found. 30966 30967The frame under which the expression should be evaluated can be 30968specified by @var{frame-addr}. A @samp{*} indicates that the current 30969frame should be used. A @samp{@@} indicates that a floating variable 30970object must be created. 30971 30972@var{expression} is any expression valid on the current language set (must not 30973begin with a @samp{*}), or one of the following: 30974 30975@itemize @bullet 30976@item 30977@samp{*@var{addr}}, where @var{addr} is the address of a memory cell 30978 30979@item 30980@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD) 30981 30982@item 30983@samp{$@var{regname}} --- a CPU register name 30984@end itemize 30985 30986@cindex dynamic varobj 30987A varobj's contents may be provided by a Python-based pretty-printer. In this 30988case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs 30989have slightly different semantics in some cases. If the 30990@code{-enable-pretty-printing} command is not sent, then @value{GDBN} 30991will never create a dynamic varobj. This ensures backward 30992compatibility for existing clients. 30993 30994@subsubheading Result 30995 30996This operation returns attributes of the newly-created varobj. These 30997are: 30998 30999@table @samp 31000@item name 31001The name of the varobj. 31002 31003@item numchild 31004The number of children of the varobj. This number is not necessarily 31005reliable for a dynamic varobj. Instead, you must examine the 31006@samp{has_more} attribute. 31007 31008@item value 31009The varobj's scalar value. For a varobj whose type is some sort of 31010aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value 31011will not be interesting. 31012 31013@item type 31014The varobj's type. This is a string representation of the type, as 31015would be printed by the @value{GDBN} CLI. If @samp{print object} 31016(@pxref{Print Settings, set print object}) is set to @code{on}, the 31017@emph{actual} (derived) type of the object is shown rather than the 31018@emph{declared} one. 31019 31020@item thread-id 31021If a variable object is bound to a specific thread, then this is the 31022thread's global identifier. 31023 31024@item has_more 31025For a dynamic varobj, this indicates whether there appear to be any 31026children available. For a non-dynamic varobj, this will be 0. 31027 31028@item dynamic 31029This attribute will be present and have the value @samp{1} if the 31030varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 31031then this attribute will not be present. 31032 31033@item displayhint 31034A dynamic varobj can supply a display hint to the front end. The 31035value comes directly from the Python pretty-printer object's 31036@code{display_hint} method. @xref{Pretty Printing API}. 31037@end table 31038 31039Typical output will look like this: 31040 31041@smallexample 31042 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}", 31043 has_more="@var{has_more}" 31044@end smallexample 31045 31046 31047@subheading The @code{-var-delete} Command 31048@findex -var-delete 31049 31050@subsubheading Synopsis 31051 31052@smallexample 31053 -var-delete [ -c ] @var{name} 31054@end smallexample 31055 31056Deletes a previously created variable object and all of its children. 31057With the @samp{-c} option, just deletes the children. 31058 31059Returns an error if the object @var{name} is not found. 31060 31061 31062@subheading The @code{-var-set-format} Command 31063@findex -var-set-format 31064 31065@subsubheading Synopsis 31066 31067@smallexample 31068 -var-set-format @var{name} @var{format-spec} 31069@end smallexample 31070 31071Sets the output format for the value of the object @var{name} to be 31072@var{format-spec}. 31073 31074@anchor{-var-set-format} 31075The syntax for the @var{format-spec} is as follows: 31076 31077@smallexample 31078 @var{format-spec} @expansion{} 31079 @{binary | decimal | hexadecimal | octal | natural | zero-hexadecimal@} 31080@end smallexample 31081 31082The natural format is the default format choosen automatically 31083based on the variable type (like decimal for an @code{int}, hex 31084for pointers, etc.). 31085 31086The zero-hexadecimal format has a representation similar to hexadecimal 31087but with padding zeroes to the left of the value. For example, a 32-bit 31088hexadecimal value of 0x1234 would be represented as 0x00001234 in the 31089zero-hexadecimal format. 31090 31091For a variable with children, the format is set only on the 31092variable itself, and the children are not affected. 31093 31094@subheading The @code{-var-show-format} Command 31095@findex -var-show-format 31096 31097@subsubheading Synopsis 31098 31099@smallexample 31100 -var-show-format @var{name} 31101@end smallexample 31102 31103Returns the format used to display the value of the object @var{name}. 31104 31105@smallexample 31106 @var{format} @expansion{} 31107 @var{format-spec} 31108@end smallexample 31109 31110 31111@subheading The @code{-var-info-num-children} Command 31112@findex -var-info-num-children 31113 31114@subsubheading Synopsis 31115 31116@smallexample 31117 -var-info-num-children @var{name} 31118@end smallexample 31119 31120Returns the number of children of a variable object @var{name}: 31121 31122@smallexample 31123 numchild=@var{n} 31124@end smallexample 31125 31126Note that this number is not completely reliable for a dynamic varobj. 31127It will return the current number of children, but more children may 31128be available. 31129 31130 31131@subheading The @code{-var-list-children} Command 31132@findex -var-list-children 31133 31134@subsubheading Synopsis 31135 31136@smallexample 31137 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}] 31138@end smallexample 31139@anchor{-var-list-children} 31140 31141Return a list of the children of the specified variable object and 31142create variable objects for them, if they do not already exist. With 31143a single argument or if @var{print-values} has a value of 0 or 31144@code{--no-values}, print only the names of the variables; if 31145@var{print-values} is 1 or @code{--all-values}, also print their 31146values; and if it is 2 or @code{--simple-values} print the name and 31147value for simple data types and just the name for arrays, structures 31148and unions. 31149 31150@var{from} and @var{to}, if specified, indicate the range of children 31151to report. If @var{from} or @var{to} is less than zero, the range is 31152reset and all children will be reported. Otherwise, children starting 31153at @var{from} (zero-based) and up to and excluding @var{to} will be 31154reported. 31155 31156If a child range is requested, it will only affect the current call to 31157@code{-var-list-children}, but not future calls to @code{-var-update}. 31158For this, you must instead use @code{-var-set-update-range}. The 31159intent of this approach is to enable a front end to implement any 31160update approach it likes; for example, scrolling a view may cause the 31161front end to request more children with @code{-var-list-children}, and 31162then the front end could call @code{-var-set-update-range} with a 31163different range to ensure that future updates are restricted to just 31164the visible items. 31165 31166For each child the following results are returned: 31167 31168@table @var 31169 31170@item name 31171Name of the variable object created for this child. 31172 31173@item exp 31174The expression to be shown to the user by the front end to designate this child. 31175For example this may be the name of a structure member. 31176 31177For a dynamic varobj, this value cannot be used to form an 31178expression. There is no way to do this at all with a dynamic varobj. 31179 31180For C/C@t{++} structures there are several pseudo children returned to 31181designate access qualifiers. For these pseudo children @var{exp} is 31182@samp{public}, @samp{private}, or @samp{protected}. In this case the 31183type and value are not present. 31184 31185A dynamic varobj will not report the access qualifying 31186pseudo-children, regardless of the language. This information is not 31187available at all with a dynamic varobj. 31188 31189@item numchild 31190Number of children this child has. For a dynamic varobj, this will be 311910. 31192 31193@item type 31194The type of the child. If @samp{print object} 31195(@pxref{Print Settings, set print object}) is set to @code{on}, the 31196@emph{actual} (derived) type of the object is shown rather than the 31197@emph{declared} one. 31198 31199@item value 31200If values were requested, this is the value. 31201 31202@item thread-id 31203If this variable object is associated with a thread, this is the 31204thread's global thread id. Otherwise this result is not present. 31205 31206@item frozen 31207If the variable object is frozen, this variable will be present with a value of 1. 31208 31209@item displayhint 31210A dynamic varobj can supply a display hint to the front end. The 31211value comes directly from the Python pretty-printer object's 31212@code{display_hint} method. @xref{Pretty Printing API}. 31213 31214@item dynamic 31215This attribute will be present and have the value @samp{1} if the 31216varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 31217then this attribute will not be present. 31218 31219@end table 31220 31221The result may have its own attributes: 31222 31223@table @samp 31224@item displayhint 31225A dynamic varobj can supply a display hint to the front end. The 31226value comes directly from the Python pretty-printer object's 31227@code{display_hint} method. @xref{Pretty Printing API}. 31228 31229@item has_more 31230This is an integer attribute which is nonzero if there are children 31231remaining after the end of the selected range. 31232@end table 31233 31234@subsubheading Example 31235 31236@smallexample 31237(gdb) 31238 -var-list-children n 31239 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 31240 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}] 31241(gdb) 31242 -var-list-children --all-values n 31243 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 31244 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}] 31245@end smallexample 31246 31247 31248@subheading The @code{-var-info-type} Command 31249@findex -var-info-type 31250 31251@subsubheading Synopsis 31252 31253@smallexample 31254 -var-info-type @var{name} 31255@end smallexample 31256 31257Returns the type of the specified variable @var{name}. The type is 31258returned as a string in the same format as it is output by the 31259@value{GDBN} CLI: 31260 31261@smallexample 31262 type=@var{typename} 31263@end smallexample 31264 31265 31266@subheading The @code{-var-info-expression} Command 31267@findex -var-info-expression 31268 31269@subsubheading Synopsis 31270 31271@smallexample 31272 -var-info-expression @var{name} 31273@end smallexample 31274 31275Returns a string that is suitable for presenting this 31276variable object in user interface. The string is generally 31277not valid expression in the current language, and cannot be evaluated. 31278 31279For example, if @code{a} is an array, and variable object 31280@code{A} was created for @code{a}, then we'll get this output: 31281 31282@smallexample 31283(gdb) -var-info-expression A.1 31284^done,lang="C",exp="1" 31285@end smallexample 31286 31287@noindent 31288Here, the value of @code{lang} is the language name, which can be 31289found in @ref{Supported Languages}. 31290 31291Note that the output of the @code{-var-list-children} command also 31292includes those expressions, so the @code{-var-info-expression} command 31293is of limited use. 31294 31295@subheading The @code{-var-info-path-expression} Command 31296@findex -var-info-path-expression 31297 31298@subsubheading Synopsis 31299 31300@smallexample 31301 -var-info-path-expression @var{name} 31302@end smallexample 31303 31304Returns an expression that can be evaluated in the current 31305context and will yield the same value that a variable object has. 31306Compare this with the @code{-var-info-expression} command, which 31307result can be used only for UI presentation. Typical use of 31308the @code{-var-info-path-expression} command is creating a 31309watchpoint from a variable object. 31310 31311This command is currently not valid for children of a dynamic varobj, 31312and will give an error when invoked on one. 31313 31314For example, suppose @code{C} is a C@t{++} class, derived from class 31315@code{Base}, and that the @code{Base} class has a member called 31316@code{m_size}. Assume a variable @code{c} is has the type of 31317@code{C} and a variable object @code{C} was created for variable 31318@code{c}. Then, we'll get this output: 31319@smallexample 31320(gdb) -var-info-path-expression C.Base.public.m_size 31321^done,path_expr=((Base)c).m_size) 31322@end smallexample 31323 31324@subheading The @code{-var-show-attributes} Command 31325@findex -var-show-attributes 31326 31327@subsubheading Synopsis 31328 31329@smallexample 31330 -var-show-attributes @var{name} 31331@end smallexample 31332 31333List attributes of the specified variable object @var{name}: 31334 31335@smallexample 31336 status=@var{attr} [ ( ,@var{attr} )* ] 31337@end smallexample 31338 31339@noindent 31340where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}. 31341 31342@subheading The @code{-var-evaluate-expression} Command 31343@findex -var-evaluate-expression 31344 31345@subsubheading Synopsis 31346 31347@smallexample 31348 -var-evaluate-expression [-f @var{format-spec}] @var{name} 31349@end smallexample 31350 31351Evaluates the expression that is represented by the specified variable 31352object and returns its value as a string. The format of the string 31353can be specified with the @samp{-f} option. The possible values of 31354this option are the same as for @code{-var-set-format} 31355(@pxref{-var-set-format}). If the @samp{-f} option is not specified, 31356the current display format will be used. The current display format 31357can be changed using the @code{-var-set-format} command. 31358 31359@smallexample 31360 value=@var{value} 31361@end smallexample 31362 31363Note that one must invoke @code{-var-list-children} for a variable 31364before the value of a child variable can be evaluated. 31365 31366@subheading The @code{-var-assign} Command 31367@findex -var-assign 31368 31369@subsubheading Synopsis 31370 31371@smallexample 31372 -var-assign @var{name} @var{expression} 31373@end smallexample 31374 31375Assigns the value of @var{expression} to the variable object specified 31376by @var{name}. The object must be @samp{editable}. If the variable's 31377value is altered by the assign, the variable will show up in any 31378subsequent @code{-var-update} list. 31379 31380@subsubheading Example 31381 31382@smallexample 31383(gdb) 31384-var-assign var1 3 31385^done,value="3" 31386(gdb) 31387-var-update * 31388^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}] 31389(gdb) 31390@end smallexample 31391 31392@subheading The @code{-var-update} Command 31393@findex -var-update 31394 31395@subsubheading Synopsis 31396 31397@smallexample 31398 -var-update [@var{print-values}] @{@var{name} | "*"@} 31399@end smallexample 31400 31401Reevaluate the expressions corresponding to the variable object 31402@var{name} and all its direct and indirect children, and return the 31403list of variable objects whose values have changed; @var{name} must 31404be a root variable object. Here, ``changed'' means that the result of 31405@code{-var-evaluate-expression} before and after the 31406@code{-var-update} is different. If @samp{*} is used as the variable 31407object names, all existing variable objects are updated, except 31408for frozen ones (@pxref{-var-set-frozen}). The option 31409@var{print-values} determines whether both names and values, or just 31410names are printed. The possible values of this option are the same 31411as for @code{-var-list-children} (@pxref{-var-list-children}). It is 31412recommended to use the @samp{--all-values} option, to reduce the 31413number of MI commands needed on each program stop. 31414 31415With the @samp{*} parameter, if a variable object is bound to a 31416currently running thread, it will not be updated, without any 31417diagnostic. 31418 31419If @code{-var-set-update-range} was previously used on a varobj, then 31420only the selected range of children will be reported. 31421 31422@code{-var-update} reports all the changed varobjs in a tuple named 31423@samp{changelist}. 31424 31425Each item in the change list is itself a tuple holding: 31426 31427@table @samp 31428@item name 31429The name of the varobj. 31430 31431@item value 31432If values were requested for this update, then this field will be 31433present and will hold the value of the varobj. 31434 31435@item in_scope 31436@anchor{-var-update} 31437This field is a string which may take one of three values: 31438 31439@table @code 31440@item "true" 31441The variable object's current value is valid. 31442 31443@item "false" 31444The variable object does not currently hold a valid value but it may 31445hold one in the future if its associated expression comes back into 31446scope. 31447 31448@item "invalid" 31449The variable object no longer holds a valid value. 31450This can occur when the executable file being debugged has changed, 31451either through recompilation or by using the @value{GDBN} @code{file} 31452command. The front end should normally choose to delete these variable 31453objects. 31454@end table 31455 31456In the future new values may be added to this list so the front should 31457be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}. 31458 31459@item type_changed 31460This is only present if the varobj is still valid. If the type 31461changed, then this will be the string @samp{true}; otherwise it will 31462be @samp{false}. 31463 31464When a varobj's type changes, its children are also likely to have 31465become incorrect. Therefore, the varobj's children are automatically 31466deleted when this attribute is @samp{true}. Also, the varobj's update 31467range, when set using the @code{-var-set-update-range} command, is 31468unset. 31469 31470@item new_type 31471If the varobj's type changed, then this field will be present and will 31472hold the new type. 31473 31474@item new_num_children 31475For a dynamic varobj, if the number of children changed, or if the 31476type changed, this will be the new number of children. 31477 31478The @samp{numchild} field in other varobj responses is generally not 31479valid for a dynamic varobj -- it will show the number of children that 31480@value{GDBN} knows about, but because dynamic varobjs lazily 31481instantiate their children, this will not reflect the number of 31482children which may be available. 31483 31484The @samp{new_num_children} attribute only reports changes to the 31485number of children known by @value{GDBN}. This is the only way to 31486detect whether an update has removed children (which necessarily can 31487only happen at the end of the update range). 31488 31489@item displayhint 31490The display hint, if any. 31491 31492@item has_more 31493This is an integer value, which will be 1 if there are more children 31494available outside the varobj's update range. 31495 31496@item dynamic 31497This attribute will be present and have the value @samp{1} if the 31498varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 31499then this attribute will not be present. 31500 31501@item new_children 31502If new children were added to a dynamic varobj within the selected 31503update range (as set by @code{-var-set-update-range}), then they will 31504be listed in this attribute. 31505@end table 31506 31507@subsubheading Example 31508 31509@smallexample 31510(gdb) 31511-var-assign var1 3 31512^done,value="3" 31513(gdb) 31514-var-update --all-values var1 31515^done,changelist=[@{name="var1",value="3",in_scope="true", 31516type_changed="false"@}] 31517(gdb) 31518@end smallexample 31519 31520@subheading The @code{-var-set-frozen} Command 31521@findex -var-set-frozen 31522@anchor{-var-set-frozen} 31523 31524@subsubheading Synopsis 31525 31526@smallexample 31527 -var-set-frozen @var{name} @var{flag} 31528@end smallexample 31529 31530Set the frozenness flag on the variable object @var{name}. The 31531@var{flag} parameter should be either @samp{1} to make the variable 31532frozen or @samp{0} to make it unfrozen. If a variable object is 31533frozen, then neither itself, nor any of its children, are 31534implicitly updated by @code{-var-update} of 31535a parent variable or by @code{-var-update *}. Only 31536@code{-var-update} of the variable itself will update its value and 31537values of its children. After a variable object is unfrozen, it is 31538implicitly updated by all subsequent @code{-var-update} operations. 31539Unfreezing a variable does not update it, only subsequent 31540@code{-var-update} does. 31541 31542@subsubheading Example 31543 31544@smallexample 31545(gdb) 31546-var-set-frozen V 1 31547^done 31548(gdb) 31549@end smallexample 31550 31551@subheading The @code{-var-set-update-range} command 31552@findex -var-set-update-range 31553@anchor{-var-set-update-range} 31554 31555@subsubheading Synopsis 31556 31557@smallexample 31558 -var-set-update-range @var{name} @var{from} @var{to} 31559@end smallexample 31560 31561Set the range of children to be returned by future invocations of 31562@code{-var-update}. 31563 31564@var{from} and @var{to} indicate the range of children to report. If 31565@var{from} or @var{to} is less than zero, the range is reset and all 31566children will be reported. Otherwise, children starting at @var{from} 31567(zero-based) and up to and excluding @var{to} will be reported. 31568 31569@subsubheading Example 31570 31571@smallexample 31572(gdb) 31573-var-set-update-range V 1 2 31574^done 31575@end smallexample 31576 31577@subheading The @code{-var-set-visualizer} command 31578@findex -var-set-visualizer 31579@anchor{-var-set-visualizer} 31580 31581@subsubheading Synopsis 31582 31583@smallexample 31584 -var-set-visualizer @var{name} @var{visualizer} 31585@end smallexample 31586 31587Set a visualizer for the variable object @var{name}. 31588 31589@var{visualizer} is the visualizer to use. The special value 31590@samp{None} means to disable any visualizer in use. 31591 31592If not @samp{None}, @var{visualizer} must be a Python expression. 31593This expression must evaluate to a callable object which accepts a 31594single argument. @value{GDBN} will call this object with the value of 31595the varobj @var{name} as an argument (this is done so that the same 31596Python pretty-printing code can be used for both the CLI and MI). 31597When called, this object must return an object which conforms to the 31598pretty-printing interface (@pxref{Pretty Printing API}). 31599 31600The pre-defined function @code{gdb.default_visualizer} may be used to 31601select a visualizer by following the built-in process 31602(@pxref{Selecting Pretty-Printers}). This is done automatically when 31603a varobj is created, and so ordinarily is not needed. 31604 31605This feature is only available if Python support is enabled. The MI 31606command @code{-list-features} (@pxref{GDB/MI Support Commands}) 31607can be used to check this. 31608 31609@subsubheading Example 31610 31611Resetting the visualizer: 31612 31613@smallexample 31614(gdb) 31615-var-set-visualizer V None 31616^done 31617@end smallexample 31618 31619Reselecting the default (type-based) visualizer: 31620 31621@smallexample 31622(gdb) 31623-var-set-visualizer V gdb.default_visualizer 31624^done 31625@end smallexample 31626 31627Suppose @code{SomeClass} is a visualizer class. A lambda expression 31628can be used to instantiate this class for a varobj: 31629 31630@smallexample 31631(gdb) 31632-var-set-visualizer V "lambda val: SomeClass()" 31633^done 31634@end smallexample 31635 31636@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31637@node GDB/MI Data Manipulation 31638@section @sc{gdb/mi} Data Manipulation 31639 31640@cindex data manipulation, in @sc{gdb/mi} 31641@cindex @sc{gdb/mi}, data manipulation 31642This section describes the @sc{gdb/mi} commands that manipulate data: 31643examine memory and registers, evaluate expressions, etc. 31644 31645For details about what an addressable memory unit is, 31646@pxref{addressable memory unit}. 31647 31648@c REMOVED FROM THE INTERFACE. 31649@c @subheading -data-assign 31650@c Change the value of a program variable. Plenty of side effects. 31651@c @subsubheading GDB Command 31652@c set variable 31653@c @subsubheading Example 31654@c N.A. 31655 31656@subheading The @code{-data-disassemble} Command 31657@findex -data-disassemble 31658 31659@subsubheading Synopsis 31660 31661@smallexample 31662 -data-disassemble 31663 [ -s @var{start-addr} -e @var{end-addr} ] 31664 | [ -a @var{addr} ] 31665 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ] 31666 -- @var{mode} 31667@end smallexample 31668 31669@noindent 31670Where: 31671 31672@table @samp 31673@item @var{start-addr} 31674is the beginning address (or @code{$pc}) 31675@item @var{end-addr} 31676is the end address 31677@item @var{addr} 31678is an address anywhere within (or the name of) the function to 31679disassemble. If an address is specified, the whole function 31680surrounding that address will be disassembled. If a name is 31681specified, the whole function with that name will be disassembled. 31682@item @var{filename} 31683is the name of the file to disassemble 31684@item @var{linenum} 31685is the line number to disassemble around 31686@item @var{lines} 31687is the number of disassembly lines to be produced. If it is -1, 31688the whole function will be disassembled, in case no @var{end-addr} is 31689specified. If @var{end-addr} is specified as a non-zero value, and 31690@var{lines} is lower than the number of disassembly lines between 31691@var{start-addr} and @var{end-addr}, only @var{lines} lines are 31692displayed; if @var{lines} is higher than the number of lines between 31693@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr} 31694are displayed. 31695@item @var{mode} 31696is one of: 31697@itemize @bullet 31698@item 0 disassembly only 31699@item 1 mixed source and disassembly (deprecated) 31700@item 2 disassembly with raw opcodes 31701@item 3 mixed source and disassembly with raw opcodes (deprecated) 31702@item 4 mixed source and disassembly 31703@item 5 mixed source and disassembly with raw opcodes 31704@end itemize 31705 31706Modes 1 and 3 are deprecated. The output is ``source centric'' 31707which hasn't proved useful in practice. 31708@xref{Machine Code}, for a discussion of the difference between 31709@code{/m} and @code{/s} output of the @code{disassemble} command. 31710@end table 31711 31712@subsubheading Result 31713 31714The result of the @code{-data-disassemble} command will be a list named 31715@samp{asm_insns}, the contents of this list depend on the @var{mode} 31716used with the @code{-data-disassemble} command. 31717 31718For modes 0 and 2 the @samp{asm_insns} list contains tuples with the 31719following fields: 31720 31721@table @code 31722@item address 31723The address at which this instruction was disassembled. 31724 31725@item func-name 31726The name of the function this instruction is within. 31727 31728@item offset 31729The decimal offset in bytes from the start of @samp{func-name}. 31730 31731@item inst 31732The text disassembly for this @samp{address}. 31733 31734@item opcodes 31735This field is only present for modes 2, 3 and 5. This contains the raw opcode 31736bytes for the @samp{inst} field. 31737 31738@end table 31739 31740For modes 1, 3, 4 and 5 the @samp{asm_insns} list contains tuples named 31741@samp{src_and_asm_line}, each of which has the following fields: 31742 31743@table @code 31744@item line 31745The line number within @samp{file}. 31746 31747@item file 31748The file name from the compilation unit. This might be an absolute 31749file name or a relative file name depending on the compile command 31750used. 31751 31752@item fullname 31753Absolute file name of @samp{file}. It is converted to a canonical form 31754using the source file search path 31755(@pxref{Source Path, ,Specifying Source Directories}) 31756and after resolving all the symbolic links. 31757 31758If the source file is not found this field will contain the path as 31759present in the debug information. 31760 31761@item line_asm_insn 31762This is a list of tuples containing the disassembly for @samp{line} in 31763@samp{file}. The fields of each tuple are the same as for 31764@code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address}, 31765@samp{func-name}, @samp{offset}, @samp{inst}, and optionally 31766@samp{opcodes}. 31767 31768@end table 31769 31770Note that whatever included in the @samp{inst} field, is not 31771manipulated directly by @sc{gdb/mi}, i.e., it is not possible to 31772adjust its format. 31773 31774@subsubheading @value{GDBN} Command 31775 31776The corresponding @value{GDBN} command is @samp{disassemble}. 31777 31778@subsubheading Example 31779 31780Disassemble from the current value of @code{$pc} to @code{$pc + 20}: 31781 31782@smallexample 31783(gdb) 31784-data-disassemble -s $pc -e "$pc + 20" -- 0 31785^done, 31786asm_insns=[ 31787@{address="0x000107c0",func-name="main",offset="4", 31788inst="mov 2, %o0"@}, 31789@{address="0x000107c4",func-name="main",offset="8", 31790inst="sethi %hi(0x11800), %o2"@}, 31791@{address="0x000107c8",func-name="main",offset="12", 31792inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@}, 31793@{address="0x000107cc",func-name="main",offset="16", 31794inst="sethi %hi(0x11800), %o2"@}, 31795@{address="0x000107d0",func-name="main",offset="20", 31796inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}] 31797(gdb) 31798@end smallexample 31799 31800Disassemble the whole @code{main} function. Line 32 is part of 31801@code{main}. 31802 31803@smallexample 31804-data-disassemble -f basics.c -l 32 -- 0 31805^done,asm_insns=[ 31806@{address="0x000107bc",func-name="main",offset="0", 31807inst="save %sp, -112, %sp"@}, 31808@{address="0x000107c0",func-name="main",offset="4", 31809inst="mov 2, %o0"@}, 31810@{address="0x000107c4",func-name="main",offset="8", 31811inst="sethi %hi(0x11800), %o2"@}, 31812[@dots{}] 31813@{address="0x0001081c",func-name="main",offset="96",inst="ret "@}, 31814@{address="0x00010820",func-name="main",offset="100",inst="restore "@}] 31815(gdb) 31816@end smallexample 31817 31818Disassemble 3 instructions from the start of @code{main}: 31819 31820@smallexample 31821(gdb) 31822-data-disassemble -f basics.c -l 32 -n 3 -- 0 31823^done,asm_insns=[ 31824@{address="0x000107bc",func-name="main",offset="0", 31825inst="save %sp, -112, %sp"@}, 31826@{address="0x000107c0",func-name="main",offset="4", 31827inst="mov 2, %o0"@}, 31828@{address="0x000107c4",func-name="main",offset="8", 31829inst="sethi %hi(0x11800), %o2"@}] 31830(gdb) 31831@end smallexample 31832 31833Disassemble 3 instructions from the start of @code{main} in mixed mode: 31834 31835@smallexample 31836(gdb) 31837-data-disassemble -f basics.c -l 32 -n 3 -- 1 31838^done,asm_insns=[ 31839src_and_asm_line=@{line="31", 31840file="../../../src/gdb/testsuite/gdb.mi/basics.c", 31841fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 31842line_asm_insn=[@{address="0x000107bc", 31843func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@}, 31844src_and_asm_line=@{line="32", 31845file="../../../src/gdb/testsuite/gdb.mi/basics.c", 31846fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 31847line_asm_insn=[@{address="0x000107c0", 31848func-name="main",offset="4",inst="mov 2, %o0"@}, 31849@{address="0x000107c4",func-name="main",offset="8", 31850inst="sethi %hi(0x11800), %o2"@}]@}] 31851(gdb) 31852@end smallexample 31853 31854 31855@subheading The @code{-data-evaluate-expression} Command 31856@findex -data-evaluate-expression 31857 31858@subsubheading Synopsis 31859 31860@smallexample 31861 -data-evaluate-expression @var{expr} 31862@end smallexample 31863 31864Evaluate @var{expr} as an expression. The expression could contain an 31865inferior function call. The function call will execute synchronously. 31866If the expression contains spaces, it must be enclosed in double quotes. 31867 31868@subsubheading @value{GDBN} Command 31869 31870The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and 31871@samp{call}. In @code{gdbtk} only, there's a corresponding 31872@samp{gdb_eval} command. 31873 31874@subsubheading Example 31875 31876In the following example, the numbers that precede the commands are the 31877@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi} 31878Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its 31879output. 31880 31881@smallexample 31882211-data-evaluate-expression A 31883211^done,value="1" 31884(gdb) 31885311-data-evaluate-expression &A 31886311^done,value="0xefffeb7c" 31887(gdb) 31888411-data-evaluate-expression A+3 31889411^done,value="4" 31890(gdb) 31891511-data-evaluate-expression "A + 3" 31892511^done,value="4" 31893(gdb) 31894@end smallexample 31895 31896 31897@subheading The @code{-data-list-changed-registers} Command 31898@findex -data-list-changed-registers 31899 31900@subsubheading Synopsis 31901 31902@smallexample 31903 -data-list-changed-registers 31904@end smallexample 31905 31906Display a list of the registers that have changed. 31907 31908@subsubheading @value{GDBN} Command 31909 31910@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk} 31911has the corresponding command @samp{gdb_changed_register_list}. 31912 31913@subsubheading Example 31914 31915On a PPC MBX board: 31916 31917@smallexample 31918(gdb) 31919-exec-continue 31920^running 31921 31922(gdb) 31923*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{ 31924func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c", 31925line="5",arch="powerpc"@} 31926(gdb) 31927-data-list-changed-registers 31928^done,changed-registers=["0","1","2","4","5","6","7","8","9", 31929"10","11","13","14","15","16","17","18","19","20","21","22","23", 31930"24","25","26","27","28","30","31","64","65","66","67","69"] 31931(gdb) 31932@end smallexample 31933 31934 31935@subheading The @code{-data-list-register-names} Command 31936@findex -data-list-register-names 31937 31938@subsubheading Synopsis 31939 31940@smallexample 31941 -data-list-register-names [ ( @var{regno} )+ ] 31942@end smallexample 31943 31944Show a list of register names for the current target. If no arguments 31945are given, it shows a list of the names of all the registers. If 31946integer numbers are given as arguments, it will print a list of the 31947names of the registers corresponding to the arguments. To ensure 31948consistency between a register name and its number, the output list may 31949include empty register names. 31950 31951@subsubheading @value{GDBN} Command 31952 31953@value{GDBN} does not have a command which corresponds to 31954@samp{-data-list-register-names}. In @code{gdbtk} there is a 31955corresponding command @samp{gdb_regnames}. 31956 31957@subsubheading Example 31958 31959For the PPC MBX board: 31960@smallexample 31961(gdb) 31962-data-list-register-names 31963^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7", 31964"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18", 31965"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29", 31966"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9", 31967"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20", 31968"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31", 31969"", "pc","ps","cr","lr","ctr","xer"] 31970(gdb) 31971-data-list-register-names 1 2 3 31972^done,register-names=["r1","r2","r3"] 31973(gdb) 31974@end smallexample 31975 31976@subheading The @code{-data-list-register-values} Command 31977@findex -data-list-register-values 31978 31979@subsubheading Synopsis 31980 31981@smallexample 31982 -data-list-register-values 31983 [ @code{--skip-unavailable} ] @var{fmt} [ ( @var{regno} )*] 31984@end smallexample 31985 31986Display the registers' contents. The format according to which the 31987registers' contents are to be returned is given by @var{fmt}, followed 31988by an optional list of numbers specifying the registers to display. A 31989missing list of numbers indicates that the contents of all the 31990registers must be returned. The @code{--skip-unavailable} option 31991indicates that only the available registers are to be returned. 31992 31993Allowed formats for @var{fmt} are: 31994 31995@table @code 31996@item x 31997Hexadecimal 31998@item o 31999Octal 32000@item t 32001Binary 32002@item d 32003Decimal 32004@item r 32005Raw 32006@item N 32007Natural 32008@end table 32009 32010@subsubheading @value{GDBN} Command 32011 32012The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info 32013all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}. 32014 32015@subsubheading Example 32016 32017For a PPC MBX board (note: line breaks are for readability only, they 32018don't appear in the actual output): 32019 32020@smallexample 32021(gdb) 32022-data-list-register-values r 64 65 32023^done,register-values=[@{number="64",value="0xfe00a300"@}, 32024@{number="65",value="0x00029002"@}] 32025(gdb) 32026-data-list-register-values x 32027^done,register-values=[@{number="0",value="0xfe0043c8"@}, 32028@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@}, 32029@{number="3",value="0x0"@},@{number="4",value="0xa"@}, 32030@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@}, 32031@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@}, 32032@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@}, 32033@{number="11",value="0x1"@},@{number="12",value="0x0"@}, 32034@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@}, 32035@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@}, 32036@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@}, 32037@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@}, 32038@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@}, 32039@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@}, 32040@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@}, 32041@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@}, 32042@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@}, 32043@{number="31",value="0x0"@},@{number="32",value="0x0"@}, 32044@{number="33",value="0x0"@},@{number="34",value="0x0"@}, 32045@{number="35",value="0x0"@},@{number="36",value="0x0"@}, 32046@{number="37",value="0x0"@},@{number="38",value="0x0"@}, 32047@{number="39",value="0x0"@},@{number="40",value="0x0"@}, 32048@{number="41",value="0x0"@},@{number="42",value="0x0"@}, 32049@{number="43",value="0x0"@},@{number="44",value="0x0"@}, 32050@{number="45",value="0x0"@},@{number="46",value="0x0"@}, 32051@{number="47",value="0x0"@},@{number="48",value="0x0"@}, 32052@{number="49",value="0x0"@},@{number="50",value="0x0"@}, 32053@{number="51",value="0x0"@},@{number="52",value="0x0"@}, 32054@{number="53",value="0x0"@},@{number="54",value="0x0"@}, 32055@{number="55",value="0x0"@},@{number="56",value="0x0"@}, 32056@{number="57",value="0x0"@},@{number="58",value="0x0"@}, 32057@{number="59",value="0x0"@},@{number="60",value="0x0"@}, 32058@{number="61",value="0x0"@},@{number="62",value="0x0"@}, 32059@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@}, 32060@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@}, 32061@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@}, 32062@{number="69",value="0x20002b03"@}] 32063(gdb) 32064@end smallexample 32065 32066 32067@subheading The @code{-data-read-memory} Command 32068@findex -data-read-memory 32069 32070This command is deprecated, use @code{-data-read-memory-bytes} instead. 32071 32072@subsubheading Synopsis 32073 32074@smallexample 32075 -data-read-memory [ -o @var{byte-offset} ] 32076 @var{address} @var{word-format} @var{word-size} 32077 @var{nr-rows} @var{nr-cols} [ @var{aschar} ] 32078@end smallexample 32079 32080@noindent 32081where: 32082 32083@table @samp 32084@item @var{address} 32085An expression specifying the address of the first memory word to be 32086read. Complex expressions containing embedded white space should be 32087quoted using the C convention. 32088 32089@item @var{word-format} 32090The format to be used to print the memory words. The notation is the 32091same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats, 32092,Output Formats}). 32093 32094@item @var{word-size} 32095The size of each memory word in bytes. 32096 32097@item @var{nr-rows} 32098The number of rows in the output table. 32099 32100@item @var{nr-cols} 32101The number of columns in the output table. 32102 32103@item @var{aschar} 32104If present, indicates that each row should include an @sc{ascii} dump. The 32105value of @var{aschar} is used as a padding character when a byte is not a 32106member of the printable @sc{ascii} character set (printable @sc{ascii} 32107characters are those whose code is between 32 and 126, inclusively). 32108 32109@item @var{byte-offset} 32110An offset to add to the @var{address} before fetching memory. 32111@end table 32112 32113This command displays memory contents as a table of @var{nr-rows} by 32114@var{nr-cols} words, each word being @var{word-size} bytes. In total, 32115@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read 32116(returned as @samp{total-bytes}). Should less than the requested number 32117of bytes be returned by the target, the missing words are identified 32118using @samp{N/A}. The number of bytes read from the target is returned 32119in @samp{nr-bytes} and the starting address used to read memory in 32120@samp{addr}. 32121 32122The address of the next/previous row or page is available in 32123@samp{next-row} and @samp{prev-row}, @samp{next-page} and 32124@samp{prev-page}. 32125 32126@subsubheading @value{GDBN} Command 32127 32128The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has 32129@samp{gdb_get_mem} memory read command. 32130 32131@subsubheading Example 32132 32133Read six bytes of memory starting at @code{bytes+6} but then offset by 32134@code{-6} bytes. Format as three rows of two columns. One byte per 32135word. Display each word in hex. 32136 32137@smallexample 32138(gdb) 321399-data-read-memory -o -6 -- bytes+6 x 1 3 2 321409^done,addr="0x00001390",nr-bytes="6",total-bytes="6", 32141next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396", 32142prev-page="0x0000138a",memory=[ 32143@{addr="0x00001390",data=["0x00","0x01"]@}, 32144@{addr="0x00001392",data=["0x02","0x03"]@}, 32145@{addr="0x00001394",data=["0x04","0x05"]@}] 32146(gdb) 32147@end smallexample 32148 32149Read two bytes of memory starting at address @code{shorts + 64} and 32150display as a single word formatted in decimal. 32151 32152@smallexample 32153(gdb) 321545-data-read-memory shorts+64 d 2 1 1 321555^done,addr="0x00001510",nr-bytes="2",total-bytes="2", 32156next-row="0x00001512",prev-row="0x0000150e", 32157next-page="0x00001512",prev-page="0x0000150e",memory=[ 32158@{addr="0x00001510",data=["128"]@}] 32159(gdb) 32160@end smallexample 32161 32162Read thirty two bytes of memory starting at @code{bytes+16} and format 32163as eight rows of four columns. Include a string encoding with @samp{x} 32164used as the non-printable character. 32165 32166@smallexample 32167(gdb) 321684-data-read-memory bytes+16 x 1 8 4 x 321694^done,addr="0x000013a0",nr-bytes="32",total-bytes="32", 32170next-row="0x000013c0",prev-row="0x0000139c", 32171next-page="0x000013c0",prev-page="0x00001380",memory=[ 32172@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@}, 32173@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@}, 32174@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@}, 32175@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@}, 32176@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@}, 32177@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@}, 32178@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@}, 32179@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}] 32180(gdb) 32181@end smallexample 32182 32183@subheading The @code{-data-read-memory-bytes} Command 32184@findex -data-read-memory-bytes 32185 32186@subsubheading Synopsis 32187 32188@smallexample 32189 -data-read-memory-bytes [ -o @var{offset} ] 32190 @var{address} @var{count} 32191@end smallexample 32192 32193@noindent 32194where: 32195 32196@table @samp 32197@item @var{address} 32198An expression specifying the address of the first addressable memory unit 32199to be read. Complex expressions containing embedded white space should be 32200quoted using the C convention. 32201 32202@item @var{count} 32203The number of addressable memory units to read. This should be an integer 32204literal. 32205 32206@item @var{offset} 32207The offset relative to @var{address} at which to start reading. This 32208should be an integer literal. This option is provided so that a frontend 32209is not required to first evaluate address and then perform address 32210arithmetics itself. 32211 32212@end table 32213 32214This command attempts to read all accessible memory regions in the 32215specified range. First, all regions marked as unreadable in the memory 32216map (if one is defined) will be skipped. @xref{Memory Region 32217Attributes}. Second, @value{GDBN} will attempt to read the remaining 32218regions. For each one, if reading full region results in an errors, 32219@value{GDBN} will try to read a subset of the region. 32220 32221In general, every single memory unit in the region may be readable or not, 32222and the only way to read every readable unit is to try a read at 32223every address, which is not practical. Therefore, @value{GDBN} will 32224attempt to read all accessible memory units at either beginning or the end 32225of the region, using a binary division scheme. This heuristic works 32226well for reading accross a memory map boundary. Note that if a region 32227has a readable range that is neither at the beginning or the end, 32228@value{GDBN} will not read it. 32229 32230The result record (@pxref{GDB/MI Result Records}) that is output of 32231the command includes a field named @samp{memory} whose content is a 32232list of tuples. Each tuple represent a successfully read memory block 32233and has the following fields: 32234 32235@table @code 32236@item begin 32237The start address of the memory block, as hexadecimal literal. 32238 32239@item end 32240The end address of the memory block, as hexadecimal literal. 32241 32242@item offset 32243The offset of the memory block, as hexadecimal literal, relative to 32244the start address passed to @code{-data-read-memory-bytes}. 32245 32246@item contents 32247The contents of the memory block, in hex. 32248 32249@end table 32250 32251 32252 32253@subsubheading @value{GDBN} Command 32254 32255The corresponding @value{GDBN} command is @samp{x}. 32256 32257@subsubheading Example 32258 32259@smallexample 32260(gdb) 32261-data-read-memory-bytes &a 10 32262^done,memory=[@{begin="0xbffff154",offset="0x00000000", 32263 end="0xbffff15e", 32264 contents="01000000020000000300"@}] 32265(gdb) 32266@end smallexample 32267 32268 32269@subheading The @code{-data-write-memory-bytes} Command 32270@findex -data-write-memory-bytes 32271 32272@subsubheading Synopsis 32273 32274@smallexample 32275 -data-write-memory-bytes @var{address} @var{contents} 32276 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]} 32277@end smallexample 32278 32279@noindent 32280where: 32281 32282@table @samp 32283@item @var{address} 32284An expression specifying the address of the first addressable memory unit 32285to be written. Complex expressions containing embedded white space should 32286be quoted using the C convention. 32287 32288@item @var{contents} 32289The hex-encoded data to write. It is an error if @var{contents} does 32290not represent an integral number of addressable memory units. 32291 32292@item @var{count} 32293Optional argument indicating the number of addressable memory units to be 32294written. If @var{count} is greater than @var{contents}' length, 32295@value{GDBN} will repeatedly write @var{contents} until it fills 32296@var{count} memory units. 32297 32298@end table 32299 32300@subsubheading @value{GDBN} Command 32301 32302There's no corresponding @value{GDBN} command. 32303 32304@subsubheading Example 32305 32306@smallexample 32307(gdb) 32308-data-write-memory-bytes &a "aabbccdd" 32309^done 32310(gdb) 32311@end smallexample 32312 32313@smallexample 32314(gdb) 32315-data-write-memory-bytes &a "aabbccdd" 16e 32316^done 32317(gdb) 32318@end smallexample 32319 32320@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32321@node GDB/MI Tracepoint Commands 32322@section @sc{gdb/mi} Tracepoint Commands 32323 32324The commands defined in this section implement MI support for 32325tracepoints. For detailed introduction, see @ref{Tracepoints}. 32326 32327@subheading The @code{-trace-find} Command 32328@findex -trace-find 32329 32330@subsubheading Synopsis 32331 32332@smallexample 32333 -trace-find @var{mode} [@var{parameters}@dots{}] 32334@end smallexample 32335 32336Find a trace frame using criteria defined by @var{mode} and 32337@var{parameters}. The following table lists permissible 32338modes and their parameters. For details of operation, see @ref{tfind}. 32339 32340@table @samp 32341 32342@item none 32343No parameters are required. Stops examining trace frames. 32344 32345@item frame-number 32346An integer is required as parameter. Selects tracepoint frame with 32347that index. 32348 32349@item tracepoint-number 32350An integer is required as parameter. Finds next 32351trace frame that corresponds to tracepoint with the specified number. 32352 32353@item pc 32354An address is required as parameter. Finds 32355next trace frame that corresponds to any tracepoint at the specified 32356address. 32357 32358@item pc-inside-range 32359Two addresses are required as parameters. Finds next trace 32360frame that corresponds to a tracepoint at an address inside the 32361specified range. Both bounds are considered to be inside the range. 32362 32363@item pc-outside-range 32364Two addresses are required as parameters. Finds 32365next trace frame that corresponds to a tracepoint at an address outside 32366the specified range. Both bounds are considered to be inside the range. 32367 32368@item line 32369Line specification is required as parameter. @xref{Specify Location}. 32370Finds next trace frame that corresponds to a tracepoint at 32371the specified location. 32372 32373@end table 32374 32375If @samp{none} was passed as @var{mode}, the response does not 32376have fields. Otherwise, the response may have the following fields: 32377 32378@table @samp 32379@item found 32380This field has either @samp{0} or @samp{1} as the value, depending 32381on whether a matching tracepoint was found. 32382 32383@item traceframe 32384The index of the found traceframe. This field is present iff 32385the @samp{found} field has value of @samp{1}. 32386 32387@item tracepoint 32388The index of the found tracepoint. This field is present iff 32389the @samp{found} field has value of @samp{1}. 32390 32391@item frame 32392The information about the frame corresponding to the found trace 32393frame. This field is present only if a trace frame was found. 32394@xref{GDB/MI Frame Information}, for description of this field. 32395 32396@end table 32397 32398@subsubheading @value{GDBN} Command 32399 32400The corresponding @value{GDBN} command is @samp{tfind}. 32401 32402@subheading -trace-define-variable 32403@findex -trace-define-variable 32404 32405@subsubheading Synopsis 32406 32407@smallexample 32408 -trace-define-variable @var{name} [ @var{value} ] 32409@end smallexample 32410 32411Create trace variable @var{name} if it does not exist. If 32412@var{value} is specified, sets the initial value of the specified 32413trace variable to that value. Note that the @var{name} should start 32414with the @samp{$} character. 32415 32416@subsubheading @value{GDBN} Command 32417 32418The corresponding @value{GDBN} command is @samp{tvariable}. 32419 32420@subheading The @code{-trace-frame-collected} Command 32421@findex -trace-frame-collected 32422 32423@subsubheading Synopsis 32424 32425@smallexample 32426 -trace-frame-collected 32427 [--var-print-values @var{var_pval}] 32428 [--comp-print-values @var{comp_pval}] 32429 [--registers-format @var{regformat}] 32430 [--memory-contents] 32431@end smallexample 32432 32433This command returns the set of collected objects, register names, 32434trace state variable names, memory ranges and computed expressions 32435that have been collected at a particular trace frame. The optional 32436parameters to the command affect the output format in different ways. 32437See the output description table below for more details. 32438 32439The reported names can be used in the normal manner to create 32440varobjs and inspect the objects themselves. The items returned by 32441this command are categorized so that it is clear which is a variable, 32442which is a register, which is a trace state variable, which is a 32443memory range and which is a computed expression. 32444 32445For instance, if the actions were 32446@smallexample 32447collect myVar, myArray[myIndex], myObj.field, myPtr->field, myCount + 2 32448collect *(int*)0xaf02bef0@@40 32449@end smallexample 32450 32451@noindent 32452the object collected in its entirety would be @code{myVar}. The 32453object @code{myArray} would be partially collected, because only the 32454element at index @code{myIndex} would be collected. The remaining 32455objects would be computed expressions. 32456 32457An example output would be: 32458 32459@smallexample 32460(gdb) 32461-trace-frame-collected 32462^done, 32463 explicit-variables=[@{name="myVar",value="1"@}], 32464 computed-expressions=[@{name="myArray[myIndex]",value="0"@}, 32465 @{name="myObj.field",value="0"@}, 32466 @{name="myPtr->field",value="1"@}, 32467 @{name="myCount + 2",value="3"@}, 32468 @{name="$tvar1 + 1",value="43970027"@}], 32469 registers=[@{number="0",value="0x7fe2c6e79ec8"@}, 32470 @{number="1",value="0x0"@}, 32471 @{number="2",value="0x4"@}, 32472 ... 32473 @{number="125",value="0x0"@}], 32474 tvars=[@{name="$tvar1",current="43970026"@}], 32475 memory=[@{address="0x0000000000602264",length="4"@}, 32476 @{address="0x0000000000615bc0",length="4"@}] 32477(gdb) 32478@end smallexample 32479 32480Where: 32481 32482@table @code 32483@item explicit-variables 32484The set of objects that have been collected in their entirety (as 32485opposed to collecting just a few elements of an array or a few struct 32486members). For each object, its name and value are printed. 32487The @code{--var-print-values} option affects how or whether the value 32488field is output. If @var{var_pval} is 0, then print only the names; 32489if it is 1, print also their values; and if it is 2, print the name, 32490type and value for simple data types, and the name and type for 32491arrays, structures and unions. 32492 32493@item computed-expressions 32494The set of computed expressions that have been collected at the 32495current trace frame. The @code{--comp-print-values} option affects 32496this set like the @code{--var-print-values} option affects the 32497@code{explicit-variables} set. See above. 32498 32499@item registers 32500The registers that have been collected at the current trace frame. 32501For each register collected, the name and current value are returned. 32502The value is formatted according to the @code{--registers-format} 32503option. See the @command{-data-list-register-values} command for a 32504list of the allowed formats. The default is @samp{x}. 32505 32506@item tvars 32507The trace state variables that have been collected at the current 32508trace frame. For each trace state variable collected, the name and 32509current value are returned. 32510 32511@item memory 32512The set of memory ranges that have been collected at the current trace 32513frame. Its content is a list of tuples. Each tuple represents a 32514collected memory range and has the following fields: 32515 32516@table @code 32517@item address 32518The start address of the memory range, as hexadecimal literal. 32519 32520@item length 32521The length of the memory range, as decimal literal. 32522 32523@item contents 32524The contents of the memory block, in hex. This field is only present 32525if the @code{--memory-contents} option is specified. 32526 32527@end table 32528 32529@end table 32530 32531@subsubheading @value{GDBN} Command 32532 32533There is no corresponding @value{GDBN} command. 32534 32535@subsubheading Example 32536 32537@subheading -trace-list-variables 32538@findex -trace-list-variables 32539 32540@subsubheading Synopsis 32541 32542@smallexample 32543 -trace-list-variables 32544@end smallexample 32545 32546Return a table of all defined trace variables. Each element of the 32547table has the following fields: 32548 32549@table @samp 32550@item name 32551The name of the trace variable. This field is always present. 32552 32553@item initial 32554The initial value. This is a 64-bit signed integer. This 32555field is always present. 32556 32557@item current 32558The value the trace variable has at the moment. This is a 64-bit 32559signed integer. This field is absent iff current value is 32560not defined, for example if the trace was never run, or is 32561presently running. 32562 32563@end table 32564 32565@subsubheading @value{GDBN} Command 32566 32567The corresponding @value{GDBN} command is @samp{tvariables}. 32568 32569@subsubheading Example 32570 32571@smallexample 32572(gdb) 32573-trace-list-variables 32574^done,trace-variables=@{nr_rows="1",nr_cols="3", 32575hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@}, 32576 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@}, 32577 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}], 32578body=[variable=@{name="$trace_timestamp",initial="0"@} 32579 variable=@{name="$foo",initial="10",current="15"@}]@} 32580(gdb) 32581@end smallexample 32582 32583@subheading -trace-save 32584@findex -trace-save 32585 32586@subsubheading Synopsis 32587 32588@smallexample 32589 -trace-save [ -r ] [ -ctf ] @var{filename} 32590@end smallexample 32591 32592Saves the collected trace data to @var{filename}. Without the 32593@samp{-r} option, the data is downloaded from the target and saved 32594in a local file. With the @samp{-r} option the target is asked 32595to perform the save. 32596 32597By default, this command will save the trace in the tfile format. You can 32598supply the optional @samp{-ctf} argument to save it the CTF format. See 32599@ref{Trace Files} for more information about CTF. 32600 32601@subsubheading @value{GDBN} Command 32602 32603The corresponding @value{GDBN} command is @samp{tsave}. 32604 32605 32606@subheading -trace-start 32607@findex -trace-start 32608 32609@subsubheading Synopsis 32610 32611@smallexample 32612 -trace-start 32613@end smallexample 32614 32615Starts a tracing experiment. The result of this command does not 32616have any fields. 32617 32618@subsubheading @value{GDBN} Command 32619 32620The corresponding @value{GDBN} command is @samp{tstart}. 32621 32622@subheading -trace-status 32623@findex -trace-status 32624 32625@subsubheading Synopsis 32626 32627@smallexample 32628 -trace-status 32629@end smallexample 32630 32631Obtains the status of a tracing experiment. The result may include 32632the following fields: 32633 32634@table @samp 32635 32636@item supported 32637May have a value of either @samp{0}, when no tracing operations are 32638supported, @samp{1}, when all tracing operations are supported, or 32639@samp{file} when examining trace file. In the latter case, examining 32640of trace frame is possible but new tracing experiement cannot be 32641started. This field is always present. 32642 32643@item running 32644May have a value of either @samp{0} or @samp{1} depending on whether 32645tracing experiement is in progress on target. This field is present 32646if @samp{supported} field is not @samp{0}. 32647 32648@item stop-reason 32649Report the reason why the tracing was stopped last time. This field 32650may be absent iff tracing was never stopped on target yet. The 32651value of @samp{request} means the tracing was stopped as result of 32652the @code{-trace-stop} command. The value of @samp{overflow} means 32653the tracing buffer is full. The value of @samp{disconnection} means 32654tracing was automatically stopped when @value{GDBN} has disconnected. 32655The value of @samp{passcount} means tracing was stopped when a 32656tracepoint was passed a maximal number of times for that tracepoint. 32657This field is present if @samp{supported} field is not @samp{0}. 32658 32659@item stopping-tracepoint 32660The number of tracepoint whose passcount as exceeded. This field is 32661present iff the @samp{stop-reason} field has the value of 32662@samp{passcount}. 32663 32664@item frames 32665@itemx frames-created 32666The @samp{frames} field is a count of the total number of trace frames 32667in the trace buffer, while @samp{frames-created} is the total created 32668during the run, including ones that were discarded, such as when a 32669circular trace buffer filled up. Both fields are optional. 32670 32671@item buffer-size 32672@itemx buffer-free 32673These fields tell the current size of the tracing buffer and the 32674remaining space. These fields are optional. 32675 32676@item circular 32677The value of the circular trace buffer flag. @code{1} means that the 32678trace buffer is circular and old trace frames will be discarded if 32679necessary to make room, @code{0} means that the trace buffer is linear 32680and may fill up. 32681 32682@item disconnected 32683The value of the disconnected tracing flag. @code{1} means that 32684tracing will continue after @value{GDBN} disconnects, @code{0} means 32685that the trace run will stop. 32686 32687@item trace-file 32688The filename of the trace file being examined. This field is 32689optional, and only present when examining a trace file. 32690 32691@end table 32692 32693@subsubheading @value{GDBN} Command 32694 32695The corresponding @value{GDBN} command is @samp{tstatus}. 32696 32697@subheading -trace-stop 32698@findex -trace-stop 32699 32700@subsubheading Synopsis 32701 32702@smallexample 32703 -trace-stop 32704@end smallexample 32705 32706Stops a tracing experiment. The result of this command has the same 32707fields as @code{-trace-status}, except that the @samp{supported} and 32708@samp{running} fields are not output. 32709 32710@subsubheading @value{GDBN} Command 32711 32712The corresponding @value{GDBN} command is @samp{tstop}. 32713 32714 32715@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32716@node GDB/MI Symbol Query 32717@section @sc{gdb/mi} Symbol Query Commands 32718 32719 32720@ignore 32721@subheading The @code{-symbol-info-address} Command 32722@findex -symbol-info-address 32723 32724@subsubheading Synopsis 32725 32726@smallexample 32727 -symbol-info-address @var{symbol} 32728@end smallexample 32729 32730Describe where @var{symbol} is stored. 32731 32732@subsubheading @value{GDBN} Command 32733 32734The corresponding @value{GDBN} command is @samp{info address}. 32735 32736@subsubheading Example 32737N.A. 32738 32739 32740@subheading The @code{-symbol-info-file} Command 32741@findex -symbol-info-file 32742 32743@subsubheading Synopsis 32744 32745@smallexample 32746 -symbol-info-file 32747@end smallexample 32748 32749Show the file for the symbol. 32750 32751@subsubheading @value{GDBN} Command 32752 32753There's no equivalent @value{GDBN} command. @code{gdbtk} has 32754@samp{gdb_find_file}. 32755 32756@subsubheading Example 32757N.A. 32758 32759 32760@subheading The @code{-symbol-info-function} Command 32761@findex -symbol-info-function 32762 32763@subsubheading Synopsis 32764 32765@smallexample 32766 -symbol-info-function 32767@end smallexample 32768 32769Show which function the symbol lives in. 32770 32771@subsubheading @value{GDBN} Command 32772 32773@samp{gdb_get_function} in @code{gdbtk}. 32774 32775@subsubheading Example 32776N.A. 32777 32778 32779@subheading The @code{-symbol-info-line} Command 32780@findex -symbol-info-line 32781 32782@subsubheading Synopsis 32783 32784@smallexample 32785 -symbol-info-line 32786@end smallexample 32787 32788Show the core addresses of the code for a source line. 32789 32790@subsubheading @value{GDBN} Command 32791 32792The corresponding @value{GDBN} command is @samp{info line}. 32793@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands. 32794 32795@subsubheading Example 32796N.A. 32797 32798 32799@subheading The @code{-symbol-info-symbol} Command 32800@findex -symbol-info-symbol 32801 32802@subsubheading Synopsis 32803 32804@smallexample 32805 -symbol-info-symbol @var{addr} 32806@end smallexample 32807 32808Describe what symbol is at location @var{addr}. 32809 32810@subsubheading @value{GDBN} Command 32811 32812The corresponding @value{GDBN} command is @samp{info symbol}. 32813 32814@subsubheading Example 32815N.A. 32816 32817 32818@subheading The @code{-symbol-list-functions} Command 32819@findex -symbol-list-functions 32820 32821@subsubheading Synopsis 32822 32823@smallexample 32824 -symbol-list-functions 32825@end smallexample 32826 32827List the functions in the executable. 32828 32829@subsubheading @value{GDBN} Command 32830 32831@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and 32832@samp{gdb_search} in @code{gdbtk}. 32833 32834@subsubheading Example 32835N.A. 32836@end ignore 32837 32838 32839@subheading The @code{-symbol-list-lines} Command 32840@findex -symbol-list-lines 32841 32842@subsubheading Synopsis 32843 32844@smallexample 32845 -symbol-list-lines @var{filename} 32846@end smallexample 32847 32848Print the list of lines that contain code and their associated program 32849addresses for the given source filename. The entries are sorted in 32850ascending PC order. 32851 32852@subsubheading @value{GDBN} Command 32853 32854There is no corresponding @value{GDBN} command. 32855 32856@subsubheading Example 32857@smallexample 32858(gdb) 32859-symbol-list-lines basics.c 32860^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}] 32861(gdb) 32862@end smallexample 32863 32864 32865@ignore 32866@subheading The @code{-symbol-list-types} Command 32867@findex -symbol-list-types 32868 32869@subsubheading Synopsis 32870 32871@smallexample 32872 -symbol-list-types 32873@end smallexample 32874 32875List all the type names. 32876 32877@subsubheading @value{GDBN} Command 32878 32879The corresponding commands are @samp{info types} in @value{GDBN}, 32880@samp{gdb_search} in @code{gdbtk}. 32881 32882@subsubheading Example 32883N.A. 32884 32885 32886@subheading The @code{-symbol-list-variables} Command 32887@findex -symbol-list-variables 32888 32889@subsubheading Synopsis 32890 32891@smallexample 32892 -symbol-list-variables 32893@end smallexample 32894 32895List all the global and static variable names. 32896 32897@subsubheading @value{GDBN} Command 32898 32899@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}. 32900 32901@subsubheading Example 32902N.A. 32903 32904 32905@subheading The @code{-symbol-locate} Command 32906@findex -symbol-locate 32907 32908@subsubheading Synopsis 32909 32910@smallexample 32911 -symbol-locate 32912@end smallexample 32913 32914@subsubheading @value{GDBN} Command 32915 32916@samp{gdb_loc} in @code{gdbtk}. 32917 32918@subsubheading Example 32919N.A. 32920 32921 32922@subheading The @code{-symbol-type} Command 32923@findex -symbol-type 32924 32925@subsubheading Synopsis 32926 32927@smallexample 32928 -symbol-type @var{variable} 32929@end smallexample 32930 32931Show type of @var{variable}. 32932 32933@subsubheading @value{GDBN} Command 32934 32935The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has 32936@samp{gdb_obj_variable}. 32937 32938@subsubheading Example 32939N.A. 32940@end ignore 32941 32942 32943@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32944@node GDB/MI File Commands 32945@section @sc{gdb/mi} File Commands 32946 32947This section describes the GDB/MI commands to specify executable file names 32948and to read in and obtain symbol table information. 32949 32950@subheading The @code{-file-exec-and-symbols} Command 32951@findex -file-exec-and-symbols 32952 32953@subsubheading Synopsis 32954 32955@smallexample 32956 -file-exec-and-symbols @var{file} 32957@end smallexample 32958 32959Specify the executable file to be debugged. This file is the one from 32960which the symbol table is also read. If no file is specified, the 32961command clears the executable and symbol information. If breakpoints 32962are set when using this command with no arguments, @value{GDBN} will produce 32963error messages. Otherwise, no output is produced, except a completion 32964notification. 32965 32966@subsubheading @value{GDBN} Command 32967 32968The corresponding @value{GDBN} command is @samp{file}. 32969 32970@subsubheading Example 32971 32972@smallexample 32973(gdb) 32974-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 32975^done 32976(gdb) 32977@end smallexample 32978 32979 32980@subheading The @code{-file-exec-file} Command 32981@findex -file-exec-file 32982 32983@subsubheading Synopsis 32984 32985@smallexample 32986 -file-exec-file @var{file} 32987@end smallexample 32988 32989Specify the executable file to be debugged. Unlike 32990@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read 32991from this file. If used without argument, @value{GDBN} clears the information 32992about the executable file. No output is produced, except a completion 32993notification. 32994 32995@subsubheading @value{GDBN} Command 32996 32997The corresponding @value{GDBN} command is @samp{exec-file}. 32998 32999@subsubheading Example 33000 33001@smallexample 33002(gdb) 33003-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 33004^done 33005(gdb) 33006@end smallexample 33007 33008 33009@ignore 33010@subheading The @code{-file-list-exec-sections} Command 33011@findex -file-list-exec-sections 33012 33013@subsubheading Synopsis 33014 33015@smallexample 33016 -file-list-exec-sections 33017@end smallexample 33018 33019List the sections of the current executable file. 33020 33021@subsubheading @value{GDBN} Command 33022 33023The @value{GDBN} command @samp{info file} shows, among the rest, the same 33024information as this command. @code{gdbtk} has a corresponding command 33025@samp{gdb_load_info}. 33026 33027@subsubheading Example 33028N.A. 33029@end ignore 33030 33031 33032@subheading The @code{-file-list-exec-source-file} Command 33033@findex -file-list-exec-source-file 33034 33035@subsubheading Synopsis 33036 33037@smallexample 33038 -file-list-exec-source-file 33039@end smallexample 33040 33041List the line number, the current source file, and the absolute path 33042to the current source file for the current executable. The macro 33043information field has a value of @samp{1} or @samp{0} depending on 33044whether or not the file includes preprocessor macro information. 33045 33046@subsubheading @value{GDBN} Command 33047 33048The @value{GDBN} equivalent is @samp{info source} 33049 33050@subsubheading Example 33051 33052@smallexample 33053(gdb) 33054123-file-list-exec-source-file 33055123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1" 33056(gdb) 33057@end smallexample 33058 33059 33060@subheading The @code{-file-list-exec-source-files} Command 33061@findex -file-list-exec-source-files 33062 33063@subsubheading Synopsis 33064 33065@smallexample 33066 -file-list-exec-source-files 33067@end smallexample 33068 33069List the source files for the current executable. 33070 33071It will always output both the filename and fullname (absolute file 33072name) of a source file. 33073 33074@subsubheading @value{GDBN} Command 33075 33076The @value{GDBN} equivalent is @samp{info sources}. 33077@code{gdbtk} has an analogous command @samp{gdb_listfiles}. 33078 33079@subsubheading Example 33080@smallexample 33081(gdb) 33082-file-list-exec-source-files 33083^done,files=[ 33084@{file=foo.c,fullname=/home/foo.c@}, 33085@{file=/home/bar.c,fullname=/home/bar.c@}, 33086@{file=gdb_could_not_find_fullpath.c@}] 33087(gdb) 33088@end smallexample 33089 33090@subheading The @code{-file-list-shared-libraries} Command 33091@findex -file-list-shared-libraries 33092 33093@subsubheading Synopsis 33094 33095@smallexample 33096 -file-list-shared-libraries [ @var{regexp} ] 33097@end smallexample 33098 33099List the shared libraries in the program. 33100With a regular expression @var{regexp}, only those libraries whose 33101names match @var{regexp} are listed. 33102 33103@subsubheading @value{GDBN} Command 33104 33105The corresponding @value{GDBN} command is @samp{info shared}. The fields 33106have a similar meaning to the @code{=library-loaded} notification. 33107The @code{ranges} field specifies the multiple segments belonging to this 33108library. Each range has the following fields: 33109 33110@table @samp 33111@item from 33112The address defining the inclusive lower bound of the segment. 33113@item to 33114The address defining the exclusive upper bound of the segment. 33115@end table 33116 33117@subsubheading Example 33118@smallexample 33119(gdb) 33120-file-list-exec-source-files 33121^done,shared-libraries=[ 33122@{id="/lib/libfoo.so",target-name="/lib/libfoo.so",host-name="/lib/libfoo.so",symbols-loaded="1",thread-group="i1",ranges=[@{from="0x72815989",to="0x728162c0"@}]@}, 33123@{id="/lib/libbar.so",target-name="/lib/libbar.so",host-name="/lib/libbar.so",symbols-loaded="1",thread-group="i1",ranges=[@{from="0x76ee48c0",to="0x76ee9160"@}]@}] 33124(gdb) 33125@end smallexample 33126 33127 33128@ignore 33129@subheading The @code{-file-list-symbol-files} Command 33130@findex -file-list-symbol-files 33131 33132@subsubheading Synopsis 33133 33134@smallexample 33135 -file-list-symbol-files 33136@end smallexample 33137 33138List symbol files. 33139 33140@subsubheading @value{GDBN} Command 33141 33142The corresponding @value{GDBN} command is @samp{info file} (part of it). 33143 33144@subsubheading Example 33145N.A. 33146@end ignore 33147 33148 33149@subheading The @code{-file-symbol-file} Command 33150@findex -file-symbol-file 33151 33152@subsubheading Synopsis 33153 33154@smallexample 33155 -file-symbol-file @var{file} 33156@end smallexample 33157 33158Read symbol table info from the specified @var{file} argument. When 33159used without arguments, clears @value{GDBN}'s symbol table info. No output is 33160produced, except for a completion notification. 33161 33162@subsubheading @value{GDBN} Command 33163 33164The corresponding @value{GDBN} command is @samp{symbol-file}. 33165 33166@subsubheading Example 33167 33168@smallexample 33169(gdb) 33170-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 33171^done 33172(gdb) 33173@end smallexample 33174 33175@ignore 33176@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33177@node GDB/MI Memory Overlay Commands 33178@section @sc{gdb/mi} Memory Overlay Commands 33179 33180The memory overlay commands are not implemented. 33181 33182@c @subheading -overlay-auto 33183 33184@c @subheading -overlay-list-mapping-state 33185 33186@c @subheading -overlay-list-overlays 33187 33188@c @subheading -overlay-map 33189 33190@c @subheading -overlay-off 33191 33192@c @subheading -overlay-on 33193 33194@c @subheading -overlay-unmap 33195 33196@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33197@node GDB/MI Signal Handling Commands 33198@section @sc{gdb/mi} Signal Handling Commands 33199 33200Signal handling commands are not implemented. 33201 33202@c @subheading -signal-handle 33203 33204@c @subheading -signal-list-handle-actions 33205 33206@c @subheading -signal-list-signal-types 33207@end ignore 33208 33209 33210@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33211@node GDB/MI Target Manipulation 33212@section @sc{gdb/mi} Target Manipulation Commands 33213 33214 33215@subheading The @code{-target-attach} Command 33216@findex -target-attach 33217 33218@subsubheading Synopsis 33219 33220@smallexample 33221 -target-attach @var{pid} | @var{gid} | @var{file} 33222@end smallexample 33223 33224Attach to a process @var{pid} or a file @var{file} outside of 33225@value{GDBN}, or a thread group @var{gid}. If attaching to a thread 33226group, the id previously returned by 33227@samp{-list-thread-groups --available} must be used. 33228 33229@subsubheading @value{GDBN} Command 33230 33231The corresponding @value{GDBN} command is @samp{attach}. 33232 33233@subsubheading Example 33234@smallexample 33235(gdb) 33236-target-attach 34 33237=thread-created,id="1" 33238*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@} 33239^done 33240(gdb) 33241@end smallexample 33242 33243@ignore 33244@subheading The @code{-target-compare-sections} Command 33245@findex -target-compare-sections 33246 33247@subsubheading Synopsis 33248 33249@smallexample 33250 -target-compare-sections [ @var{section} ] 33251@end smallexample 33252 33253Compare data of section @var{section} on target to the exec file. 33254Without the argument, all sections are compared. 33255 33256@subsubheading @value{GDBN} Command 33257 33258The @value{GDBN} equivalent is @samp{compare-sections}. 33259 33260@subsubheading Example 33261N.A. 33262@end ignore 33263 33264 33265@subheading The @code{-target-detach} Command 33266@findex -target-detach 33267 33268@subsubheading Synopsis 33269 33270@smallexample 33271 -target-detach [ @var{pid} | @var{gid} ] 33272@end smallexample 33273 33274Detach from the remote target which normally resumes its execution. 33275If either @var{pid} or @var{gid} is specified, detaches from either 33276the specified process, or specified thread group. There's no output. 33277 33278@subsubheading @value{GDBN} Command 33279 33280The corresponding @value{GDBN} command is @samp{detach}. 33281 33282@subsubheading Example 33283 33284@smallexample 33285(gdb) 33286-target-detach 33287^done 33288(gdb) 33289@end smallexample 33290 33291 33292@subheading The @code{-target-disconnect} Command 33293@findex -target-disconnect 33294 33295@subsubheading Synopsis 33296 33297@smallexample 33298 -target-disconnect 33299@end smallexample 33300 33301Disconnect from the remote target. There's no output and the target is 33302generally not resumed. 33303 33304@subsubheading @value{GDBN} Command 33305 33306The corresponding @value{GDBN} command is @samp{disconnect}. 33307 33308@subsubheading Example 33309 33310@smallexample 33311(gdb) 33312-target-disconnect 33313^done 33314(gdb) 33315@end smallexample 33316 33317 33318@subheading The @code{-target-download} Command 33319@findex -target-download 33320 33321@subsubheading Synopsis 33322 33323@smallexample 33324 -target-download 33325@end smallexample 33326 33327Loads the executable onto the remote target. 33328It prints out an update message every half second, which includes the fields: 33329 33330@table @samp 33331@item section 33332The name of the section. 33333@item section-sent 33334The size of what has been sent so far for that section. 33335@item section-size 33336The size of the section. 33337@item total-sent 33338The total size of what was sent so far (the current and the previous sections). 33339@item total-size 33340The size of the overall executable to download. 33341@end table 33342 33343@noindent 33344Each message is sent as status record (@pxref{GDB/MI Output Syntax, , 33345@sc{gdb/mi} Output Syntax}). 33346 33347In addition, it prints the name and size of the sections, as they are 33348downloaded. These messages include the following fields: 33349 33350@table @samp 33351@item section 33352The name of the section. 33353@item section-size 33354The size of the section. 33355@item total-size 33356The size of the overall executable to download. 33357@end table 33358 33359@noindent 33360At the end, a summary is printed. 33361 33362@subsubheading @value{GDBN} Command 33363 33364The corresponding @value{GDBN} command is @samp{load}. 33365 33366@subsubheading Example 33367 33368Note: each status message appears on a single line. Here the messages 33369have been broken down so that they can fit onto a page. 33370 33371@smallexample 33372(gdb) 33373-target-download 33374+download,@{section=".text",section-size="6668",total-size="9880"@} 33375+download,@{section=".text",section-sent="512",section-size="6668", 33376total-sent="512",total-size="9880"@} 33377+download,@{section=".text",section-sent="1024",section-size="6668", 33378total-sent="1024",total-size="9880"@} 33379+download,@{section=".text",section-sent="1536",section-size="6668", 33380total-sent="1536",total-size="9880"@} 33381+download,@{section=".text",section-sent="2048",section-size="6668", 33382total-sent="2048",total-size="9880"@} 33383+download,@{section=".text",section-sent="2560",section-size="6668", 33384total-sent="2560",total-size="9880"@} 33385+download,@{section=".text",section-sent="3072",section-size="6668", 33386total-sent="3072",total-size="9880"@} 33387+download,@{section=".text",section-sent="3584",section-size="6668", 33388total-sent="3584",total-size="9880"@} 33389+download,@{section=".text",section-sent="4096",section-size="6668", 33390total-sent="4096",total-size="9880"@} 33391+download,@{section=".text",section-sent="4608",section-size="6668", 33392total-sent="4608",total-size="9880"@} 33393+download,@{section=".text",section-sent="5120",section-size="6668", 33394total-sent="5120",total-size="9880"@} 33395+download,@{section=".text",section-sent="5632",section-size="6668", 33396total-sent="5632",total-size="9880"@} 33397+download,@{section=".text",section-sent="6144",section-size="6668", 33398total-sent="6144",total-size="9880"@} 33399+download,@{section=".text",section-sent="6656",section-size="6668", 33400total-sent="6656",total-size="9880"@} 33401+download,@{section=".init",section-size="28",total-size="9880"@} 33402+download,@{section=".fini",section-size="28",total-size="9880"@} 33403+download,@{section=".data",section-size="3156",total-size="9880"@} 33404+download,@{section=".data",section-sent="512",section-size="3156", 33405total-sent="7236",total-size="9880"@} 33406+download,@{section=".data",section-sent="1024",section-size="3156", 33407total-sent="7748",total-size="9880"@} 33408+download,@{section=".data",section-sent="1536",section-size="3156", 33409total-sent="8260",total-size="9880"@} 33410+download,@{section=".data",section-sent="2048",section-size="3156", 33411total-sent="8772",total-size="9880"@} 33412+download,@{section=".data",section-sent="2560",section-size="3156", 33413total-sent="9284",total-size="9880"@} 33414+download,@{section=".data",section-sent="3072",section-size="3156", 33415total-sent="9796",total-size="9880"@} 33416^done,address="0x10004",load-size="9880",transfer-rate="6586", 33417write-rate="429" 33418(gdb) 33419@end smallexample 33420 33421 33422@ignore 33423@subheading The @code{-target-exec-status} Command 33424@findex -target-exec-status 33425 33426@subsubheading Synopsis 33427 33428@smallexample 33429 -target-exec-status 33430@end smallexample 33431 33432Provide information on the state of the target (whether it is running or 33433not, for instance). 33434 33435@subsubheading @value{GDBN} Command 33436 33437There's no equivalent @value{GDBN} command. 33438 33439@subsubheading Example 33440N.A. 33441 33442 33443@subheading The @code{-target-list-available-targets} Command 33444@findex -target-list-available-targets 33445 33446@subsubheading Synopsis 33447 33448@smallexample 33449 -target-list-available-targets 33450@end smallexample 33451 33452List the possible targets to connect to. 33453 33454@subsubheading @value{GDBN} Command 33455 33456The corresponding @value{GDBN} command is @samp{help target}. 33457 33458@subsubheading Example 33459N.A. 33460 33461 33462@subheading The @code{-target-list-current-targets} Command 33463@findex -target-list-current-targets 33464 33465@subsubheading Synopsis 33466 33467@smallexample 33468 -target-list-current-targets 33469@end smallexample 33470 33471Describe the current target. 33472 33473@subsubheading @value{GDBN} Command 33474 33475The corresponding information is printed by @samp{info file} (among 33476other things). 33477 33478@subsubheading Example 33479N.A. 33480 33481 33482@subheading The @code{-target-list-parameters} Command 33483@findex -target-list-parameters 33484 33485@subsubheading Synopsis 33486 33487@smallexample 33488 -target-list-parameters 33489@end smallexample 33490 33491@c ???? 33492@end ignore 33493 33494@subsubheading @value{GDBN} Command 33495 33496No equivalent. 33497 33498@subsubheading Example 33499N.A. 33500 33501@subheading The @code{-target-flash-erase} Command 33502@findex -target-flash-erase 33503 33504@subsubheading Synopsis 33505 33506@smallexample 33507 -target-flash-erase 33508@end smallexample 33509 33510Erases all known flash memory regions on the target. 33511 33512The corresponding @value{GDBN} command is @samp{flash-erase}. 33513 33514The output is a list of flash regions that have been erased, with starting 33515addresses and memory region sizes. 33516 33517@smallexample 33518(gdb) 33519-target-flash-erase 33520^done,erased-regions=@{address="0x0",size="0x40000"@} 33521(gdb) 33522@end smallexample 33523 33524@subheading The @code{-target-select} Command 33525@findex -target-select 33526 33527@subsubheading Synopsis 33528 33529@smallexample 33530 -target-select @var{type} @var{parameters @dots{}} 33531@end smallexample 33532 33533Connect @value{GDBN} to the remote target. This command takes two args: 33534 33535@table @samp 33536@item @var{type} 33537The type of target, for instance @samp{remote}, etc. 33538@item @var{parameters} 33539Device names, host names and the like. @xref{Target Commands, , 33540Commands for Managing Targets}, for more details. 33541@end table 33542 33543The output is a connection notification, followed by the address at 33544which the target program is, in the following form: 33545 33546@smallexample 33547^connected,addr="@var{address}",func="@var{function name}", 33548 args=[@var{arg list}] 33549@end smallexample 33550 33551@subsubheading @value{GDBN} Command 33552 33553The corresponding @value{GDBN} command is @samp{target}. 33554 33555@subsubheading Example 33556 33557@smallexample 33558(gdb) 33559-target-select remote /dev/ttya 33560^connected,addr="0xfe00a300",func="??",args=[] 33561(gdb) 33562@end smallexample 33563 33564@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33565@node GDB/MI File Transfer Commands 33566@section @sc{gdb/mi} File Transfer Commands 33567 33568 33569@subheading The @code{-target-file-put} Command 33570@findex -target-file-put 33571 33572@subsubheading Synopsis 33573 33574@smallexample 33575 -target-file-put @var{hostfile} @var{targetfile} 33576@end smallexample 33577 33578Copy file @var{hostfile} from the host system (the machine running 33579@value{GDBN}) to @var{targetfile} on the target system. 33580 33581@subsubheading @value{GDBN} Command 33582 33583The corresponding @value{GDBN} command is @samp{remote put}. 33584 33585@subsubheading Example 33586 33587@smallexample 33588(gdb) 33589-target-file-put localfile remotefile 33590^done 33591(gdb) 33592@end smallexample 33593 33594 33595@subheading The @code{-target-file-get} Command 33596@findex -target-file-get 33597 33598@subsubheading Synopsis 33599 33600@smallexample 33601 -target-file-get @var{targetfile} @var{hostfile} 33602@end smallexample 33603 33604Copy file @var{targetfile} from the target system to @var{hostfile} 33605on the host system. 33606 33607@subsubheading @value{GDBN} Command 33608 33609The corresponding @value{GDBN} command is @samp{remote get}. 33610 33611@subsubheading Example 33612 33613@smallexample 33614(gdb) 33615-target-file-get remotefile localfile 33616^done 33617(gdb) 33618@end smallexample 33619 33620 33621@subheading The @code{-target-file-delete} Command 33622@findex -target-file-delete 33623 33624@subsubheading Synopsis 33625 33626@smallexample 33627 -target-file-delete @var{targetfile} 33628@end smallexample 33629 33630Delete @var{targetfile} from the target system. 33631 33632@subsubheading @value{GDBN} Command 33633 33634The corresponding @value{GDBN} command is @samp{remote delete}. 33635 33636@subsubheading Example 33637 33638@smallexample 33639(gdb) 33640-target-file-delete remotefile 33641^done 33642(gdb) 33643@end smallexample 33644 33645 33646@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33647@node GDB/MI Ada Exceptions Commands 33648@section Ada Exceptions @sc{gdb/mi} Commands 33649 33650@subheading The @code{-info-ada-exceptions} Command 33651@findex -info-ada-exceptions 33652 33653@subsubheading Synopsis 33654 33655@smallexample 33656 -info-ada-exceptions [ @var{regexp}] 33657@end smallexample 33658 33659List all Ada exceptions defined within the program being debugged. 33660With a regular expression @var{regexp}, only those exceptions whose 33661names match @var{regexp} are listed. 33662 33663@subsubheading @value{GDBN} Command 33664 33665The corresponding @value{GDBN} command is @samp{info exceptions}. 33666 33667@subsubheading Result 33668 33669The result is a table of Ada exceptions. The following columns are 33670defined for each exception: 33671 33672@table @samp 33673@item name 33674The name of the exception. 33675 33676@item address 33677The address of the exception. 33678 33679@end table 33680 33681@subsubheading Example 33682 33683@smallexample 33684-info-ada-exceptions aint 33685^done,ada-exceptions=@{nr_rows="2",nr_cols="2", 33686hdr=[@{width="1",alignment="-1",col_name="name",colhdr="Name"@}, 33687@{width="1",alignment="-1",col_name="address",colhdr="Address"@}], 33688body=[@{name="constraint_error",address="0x0000000000613da0"@}, 33689@{name="const.aint_global_e",address="0x0000000000613b00"@}]@} 33690@end smallexample 33691 33692@subheading Catching Ada Exceptions 33693 33694The commands describing how to ask @value{GDBN} to stop when a program 33695raises an exception are described at @ref{Ada Exception GDB/MI 33696Catchpoint Commands}. 33697 33698 33699@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33700@node GDB/MI Support Commands 33701@section @sc{gdb/mi} Support Commands 33702 33703Since new commands and features get regularly added to @sc{gdb/mi}, 33704some commands are available to help front-ends query the debugger 33705about support for these capabilities. Similarly, it is also possible 33706to query @value{GDBN} about target support of certain features. 33707 33708@subheading The @code{-info-gdb-mi-command} Command 33709@cindex @code{-info-gdb-mi-command} 33710@findex -info-gdb-mi-command 33711 33712@subsubheading Synopsis 33713 33714@smallexample 33715 -info-gdb-mi-command @var{cmd_name} 33716@end smallexample 33717 33718Query support for the @sc{gdb/mi} command named @var{cmd_name}. 33719 33720Note that the dash (@code{-}) starting all @sc{gdb/mi} commands 33721is technically not part of the command name (@pxref{GDB/MI Input 33722Syntax}), and thus should be omitted in @var{cmd_name}. However, 33723for ease of use, this command also accepts the form with the leading 33724dash. 33725 33726@subsubheading @value{GDBN} Command 33727 33728There is no corresponding @value{GDBN} command. 33729 33730@subsubheading Result 33731 33732The result is a tuple. There is currently only one field: 33733 33734@table @samp 33735@item exists 33736This field is equal to @code{"true"} if the @sc{gdb/mi} command exists, 33737@code{"false"} otherwise. 33738 33739@end table 33740 33741@subsubheading Example 33742 33743Here is an example where the @sc{gdb/mi} command does not exist: 33744 33745@smallexample 33746-info-gdb-mi-command unsupported-command 33747^done,command=@{exists="false"@} 33748@end smallexample 33749 33750@noindent 33751And here is an example where the @sc{gdb/mi} command is known 33752to the debugger: 33753 33754@smallexample 33755-info-gdb-mi-command symbol-list-lines 33756^done,command=@{exists="true"@} 33757@end smallexample 33758 33759@subheading The @code{-list-features} Command 33760@findex -list-features 33761@cindex supported @sc{gdb/mi} features, list 33762 33763Returns a list of particular features of the MI protocol that 33764this version of gdb implements. A feature can be a command, 33765or a new field in an output of some command, or even an 33766important bugfix. While a frontend can sometimes detect presence 33767of a feature at runtime, it is easier to perform detection at debugger 33768startup. 33769 33770The command returns a list of strings, with each string naming an 33771available feature. Each returned string is just a name, it does not 33772have any internal structure. The list of possible feature names 33773is given below. 33774 33775Example output: 33776 33777@smallexample 33778(gdb) -list-features 33779^done,result=["feature1","feature2"] 33780@end smallexample 33781 33782The current list of features is: 33783 33784@ftable @samp 33785@item frozen-varobjs 33786Indicates support for the @code{-var-set-frozen} command, as well 33787as possible presense of the @code{frozen} field in the output 33788of @code{-varobj-create}. 33789@item pending-breakpoints 33790Indicates support for the @option{-f} option to the @code{-break-insert} 33791command. 33792@item python 33793Indicates Python scripting support, Python-based 33794pretty-printing commands, and possible presence of the 33795@samp{display_hint} field in the output of @code{-var-list-children} 33796@item thread-info 33797Indicates support for the @code{-thread-info} command. 33798@item data-read-memory-bytes 33799Indicates support for the @code{-data-read-memory-bytes} and the 33800@code{-data-write-memory-bytes} commands. 33801@item breakpoint-notifications 33802Indicates that changes to breakpoints and breakpoints created via the 33803CLI will be announced via async records. 33804@item ada-task-info 33805Indicates support for the @code{-ada-task-info} command. 33806@item language-option 33807Indicates that all @sc{gdb/mi} commands accept the @option{--language} 33808option (@pxref{Context management}). 33809@item info-gdb-mi-command 33810Indicates support for the @code{-info-gdb-mi-command} command. 33811@item undefined-command-error-code 33812Indicates support for the "undefined-command" error code in error result 33813records, produced when trying to execute an undefined @sc{gdb/mi} command 33814(@pxref{GDB/MI Result Records}). 33815@item exec-run-start-option 33816Indicates that the @code{-exec-run} command supports the @option{--start} 33817option (@pxref{GDB/MI Program Execution}). 33818@item data-disassemble-a-option 33819Indicates that the @code{-data-disassemble} command supports the @option{-a} 33820option (@pxref{GDB/MI Data Manipulation}). 33821@end ftable 33822 33823@subheading The @code{-list-target-features} Command 33824@findex -list-target-features 33825 33826Returns a list of particular features that are supported by the 33827target. Those features affect the permitted MI commands, but 33828unlike the features reported by the @code{-list-features} command, the 33829features depend on which target GDB is using at the moment. Whenever 33830a target can change, due to commands such as @code{-target-select}, 33831@code{-target-attach} or @code{-exec-run}, the list of target features 33832may change, and the frontend should obtain it again. 33833Example output: 33834 33835@smallexample 33836(gdb) -list-target-features 33837^done,result=["async"] 33838@end smallexample 33839 33840The current list of features is: 33841 33842@table @samp 33843@item async 33844Indicates that the target is capable of asynchronous command 33845execution, which means that @value{GDBN} will accept further commands 33846while the target is running. 33847 33848@item reverse 33849Indicates that the target is capable of reverse execution. 33850@xref{Reverse Execution}, for more information. 33851 33852@end table 33853 33854@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33855@node GDB/MI Miscellaneous Commands 33856@section Miscellaneous @sc{gdb/mi} Commands 33857 33858@c @subheading -gdb-complete 33859 33860@subheading The @code{-gdb-exit} Command 33861@findex -gdb-exit 33862 33863@subsubheading Synopsis 33864 33865@smallexample 33866 -gdb-exit 33867@end smallexample 33868 33869Exit @value{GDBN} immediately. 33870 33871@subsubheading @value{GDBN} Command 33872 33873Approximately corresponds to @samp{quit}. 33874 33875@subsubheading Example 33876 33877@smallexample 33878(gdb) 33879-gdb-exit 33880^exit 33881@end smallexample 33882 33883 33884@ignore 33885@subheading The @code{-exec-abort} Command 33886@findex -exec-abort 33887 33888@subsubheading Synopsis 33889 33890@smallexample 33891 -exec-abort 33892@end smallexample 33893 33894Kill the inferior running program. 33895 33896@subsubheading @value{GDBN} Command 33897 33898The corresponding @value{GDBN} command is @samp{kill}. 33899 33900@subsubheading Example 33901N.A. 33902@end ignore 33903 33904 33905@subheading The @code{-gdb-set} Command 33906@findex -gdb-set 33907 33908@subsubheading Synopsis 33909 33910@smallexample 33911 -gdb-set 33912@end smallexample 33913 33914Set an internal @value{GDBN} variable. 33915@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ????? 33916 33917@subsubheading @value{GDBN} Command 33918 33919The corresponding @value{GDBN} command is @samp{set}. 33920 33921@subsubheading Example 33922 33923@smallexample 33924(gdb) 33925-gdb-set $foo=3 33926^done 33927(gdb) 33928@end smallexample 33929 33930 33931@subheading The @code{-gdb-show} Command 33932@findex -gdb-show 33933 33934@subsubheading Synopsis 33935 33936@smallexample 33937 -gdb-show 33938@end smallexample 33939 33940Show the current value of a @value{GDBN} variable. 33941 33942@subsubheading @value{GDBN} Command 33943 33944The corresponding @value{GDBN} command is @samp{show}. 33945 33946@subsubheading Example 33947 33948@smallexample 33949(gdb) 33950-gdb-show annotate 33951^done,value="0" 33952(gdb) 33953@end smallexample 33954 33955@c @subheading -gdb-source 33956 33957 33958@subheading The @code{-gdb-version} Command 33959@findex -gdb-version 33960 33961@subsubheading Synopsis 33962 33963@smallexample 33964 -gdb-version 33965@end smallexample 33966 33967Show version information for @value{GDBN}. Used mostly in testing. 33968 33969@subsubheading @value{GDBN} Command 33970 33971The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by 33972default shows this information when you start an interactive session. 33973 33974@subsubheading Example 33975 33976@c This example modifies the actual output from GDB to avoid overfull 33977@c box in TeX. 33978@smallexample 33979(gdb) 33980-gdb-version 33981~GNU gdb 5.2.1 33982~Copyright 2000 Free Software Foundation, Inc. 33983~GDB is free software, covered by the GNU General Public License, and 33984~you are welcome to change it and/or distribute copies of it under 33985~ certain conditions. 33986~Type "show copying" to see the conditions. 33987~There is absolutely no warranty for GDB. Type "show warranty" for 33988~ details. 33989~This GDB was configured as 33990 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi". 33991^done 33992(gdb) 33993@end smallexample 33994 33995@subheading The @code{-list-thread-groups} Command 33996@findex -list-thread-groups 33997 33998@subheading Synopsis 33999 34000@smallexample 34001-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ] 34002@end smallexample 34003 34004Lists thread groups (@pxref{Thread groups}). When a single thread 34005group is passed as the argument, lists the children of that group. 34006When several thread group are passed, lists information about those 34007thread groups. Without any parameters, lists information about all 34008top-level thread groups. 34009 34010Normally, thread groups that are being debugged are reported. 34011With the @samp{--available} option, @value{GDBN} reports thread groups 34012available on the target. 34013 34014The output of this command may have either a @samp{threads} result or 34015a @samp{groups} result. The @samp{thread} result has a list of tuples 34016as value, with each tuple describing a thread (@pxref{GDB/MI Thread 34017Information}). The @samp{groups} result has a list of tuples as value, 34018each tuple describing a thread group. If top-level groups are 34019requested (that is, no parameter is passed), or when several groups 34020are passed, the output always has a @samp{groups} result. The format 34021of the @samp{group} result is described below. 34022 34023To reduce the number of roundtrips it's possible to list thread groups 34024together with their children, by passing the @samp{--recurse} option 34025and the recursion depth. Presently, only recursion depth of 1 is 34026permitted. If this option is present, then every reported thread group 34027will also include its children, either as @samp{group} or 34028@samp{threads} field. 34029 34030In general, any combination of option and parameters is permitted, with 34031the following caveats: 34032 34033@itemize @bullet 34034@item 34035When a single thread group is passed, the output will typically 34036be the @samp{threads} result. Because threads may not contain 34037anything, the @samp{recurse} option will be ignored. 34038 34039@item 34040When the @samp{--available} option is passed, limited information may 34041be available. In particular, the list of threads of a process might 34042be inaccessible. Further, specifying specific thread groups might 34043not give any performance advantage over listing all thread groups. 34044The frontend should assume that @samp{-list-thread-groups --available} 34045is always an expensive operation and cache the results. 34046 34047@end itemize 34048 34049The @samp{groups} result is a list of tuples, where each tuple may 34050have the following fields: 34051 34052@table @code 34053@item id 34054Identifier of the thread group. This field is always present. 34055The identifier is an opaque string; frontends should not try to 34056convert it to an integer, even though it might look like one. 34057 34058@item type 34059The type of the thread group. At present, only @samp{process} is a 34060valid type. 34061 34062@item pid 34063The target-specific process identifier. This field is only present 34064for thread groups of type @samp{process} and only if the process exists. 34065 34066@item exit-code 34067The exit code of this group's last exited thread, formatted in octal. 34068This field is only present for thread groups of type @samp{process} and 34069only if the process is not running. 34070 34071@item num_children 34072The number of children this thread group has. This field may be 34073absent for an available thread group. 34074 34075@item threads 34076This field has a list of tuples as value, each tuple describing a 34077thread. It may be present if the @samp{--recurse} option is 34078specified, and it's actually possible to obtain the threads. 34079 34080@item cores 34081This field is a list of integers, each identifying a core that one 34082thread of the group is running on. This field may be absent if 34083such information is not available. 34084 34085@item executable 34086The name of the executable file that corresponds to this thread group. 34087The field is only present for thread groups of type @samp{process}, 34088and only if there is a corresponding executable file. 34089 34090@end table 34091 34092@subheading Example 34093 34094@smallexample 34095@value{GDBP} 34096-list-thread-groups 34097^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}] 34098-list-thread-groups 17 34099^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 34100 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@}, 34101@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 34102 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}], 34103 file="/tmp/a.c",fullname="/tmp/a.c",line="158",arch="i386:x86_64"@},state="running"@}]] 34104-list-thread-groups --available 34105^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}] 34106-list-thread-groups --available --recurse 1 34107 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 34108 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 34109 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..] 34110-list-thread-groups --available --recurse 1 17 18 34111^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 34112 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 34113 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...] 34114@end smallexample 34115 34116@subheading The @code{-info-os} Command 34117@findex -info-os 34118 34119@subsubheading Synopsis 34120 34121@smallexample 34122-info-os [ @var{type} ] 34123@end smallexample 34124 34125If no argument is supplied, the command returns a table of available 34126operating-system-specific information types. If one of these types is 34127supplied as an argument @var{type}, then the command returns a table 34128of data of that type. 34129 34130The types of information available depend on the target operating 34131system. 34132 34133@subsubheading @value{GDBN} Command 34134 34135The corresponding @value{GDBN} command is @samp{info os}. 34136 34137@subsubheading Example 34138 34139When run on a @sc{gnu}/Linux system, the output will look something 34140like this: 34141 34142@smallexample 34143@value{GDBP} 34144-info-os 34145^done,OSDataTable=@{nr_rows="10",nr_cols="3", 34146hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@}, 34147 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@}, 34148 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}], 34149body=[item=@{col0="cpus",col1="Listing of all cpus/cores on the system", 34150 col2="CPUs"@}, 34151 item=@{col0="files",col1="Listing of all file descriptors", 34152 col2="File descriptors"@}, 34153 item=@{col0="modules",col1="Listing of all loaded kernel modules", 34154 col2="Kernel modules"@}, 34155 item=@{col0="msg",col1="Listing of all message queues", 34156 col2="Message queues"@}, 34157 item=@{col0="processes",col1="Listing of all processes", 34158 col2="Processes"@}, 34159 item=@{col0="procgroups",col1="Listing of all process groups", 34160 col2="Process groups"@}, 34161 item=@{col0="semaphores",col1="Listing of all semaphores", 34162 col2="Semaphores"@}, 34163 item=@{col0="shm",col1="Listing of all shared-memory regions", 34164 col2="Shared-memory regions"@}, 34165 item=@{col0="sockets",col1="Listing of all internet-domain sockets", 34166 col2="Sockets"@}, 34167 item=@{col0="threads",col1="Listing of all threads", 34168 col2="Threads"@}] 34169@value{GDBP} 34170-info-os processes 34171^done,OSDataTable=@{nr_rows="190",nr_cols="4", 34172hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@}, 34173 @{width="10",alignment="-1",col_name="col1",colhdr="user"@}, 34174 @{width="10",alignment="-1",col_name="col2",colhdr="command"@}, 34175 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}], 34176body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@}, 34177 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@}, 34178 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@}, 34179 ... 34180 item=@{col0="26446",col1="stan",col2="bash",col3="0"@}, 34181 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@} 34182(gdb) 34183@end smallexample 34184 34185(Note that the MI output here includes a @code{"Title"} column that 34186does not appear in command-line @code{info os}; this column is useful 34187for MI clients that want to enumerate the types of data, such as in a 34188popup menu, but is needless clutter on the command line, and 34189@code{info os} omits it.) 34190 34191@subheading The @code{-add-inferior} Command 34192@findex -add-inferior 34193 34194@subheading Synopsis 34195 34196@smallexample 34197-add-inferior 34198@end smallexample 34199 34200Creates a new inferior (@pxref{Inferiors and Programs}). The created 34201inferior is not associated with any executable. Such association may 34202be established with the @samp{-file-exec-and-symbols} command 34203(@pxref{GDB/MI File Commands}). The command response has a single 34204field, @samp{inferior}, whose value is the identifier of the 34205thread group corresponding to the new inferior. 34206 34207@subheading Example 34208 34209@smallexample 34210@value{GDBP} 34211-add-inferior 34212^done,inferior="i3" 34213@end smallexample 34214 34215@subheading The @code{-interpreter-exec} Command 34216@findex -interpreter-exec 34217 34218@subheading Synopsis 34219 34220@smallexample 34221-interpreter-exec @var{interpreter} @var{command} 34222@end smallexample 34223@anchor{-interpreter-exec} 34224 34225Execute the specified @var{command} in the given @var{interpreter}. 34226 34227@subheading @value{GDBN} Command 34228 34229The corresponding @value{GDBN} command is @samp{interpreter-exec}. 34230 34231@subheading Example 34232 34233@smallexample 34234(gdb) 34235-interpreter-exec console "break main" 34236&"During symbol reading, couldn't parse type; debugger out of date?.\n" 34237&"During symbol reading, bad structure-type format.\n" 34238~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n" 34239^done 34240(gdb) 34241@end smallexample 34242 34243@subheading The @code{-inferior-tty-set} Command 34244@findex -inferior-tty-set 34245 34246@subheading Synopsis 34247 34248@smallexample 34249-inferior-tty-set /dev/pts/1 34250@end smallexample 34251 34252Set terminal for future runs of the program being debugged. 34253 34254@subheading @value{GDBN} Command 34255 34256The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1. 34257 34258@subheading Example 34259 34260@smallexample 34261(gdb) 34262-inferior-tty-set /dev/pts/1 34263^done 34264(gdb) 34265@end smallexample 34266 34267@subheading The @code{-inferior-tty-show} Command 34268@findex -inferior-tty-show 34269 34270@subheading Synopsis 34271 34272@smallexample 34273-inferior-tty-show 34274@end smallexample 34275 34276Show terminal for future runs of program being debugged. 34277 34278@subheading @value{GDBN} Command 34279 34280The corresponding @value{GDBN} command is @samp{show inferior-tty}. 34281 34282@subheading Example 34283 34284@smallexample 34285(gdb) 34286-inferior-tty-set /dev/pts/1 34287^done 34288(gdb) 34289-inferior-tty-show 34290^done,inferior_tty_terminal="/dev/pts/1" 34291(gdb) 34292@end smallexample 34293 34294@subheading The @code{-enable-timings} Command 34295@findex -enable-timings 34296 34297@subheading Synopsis 34298 34299@smallexample 34300-enable-timings [yes | no] 34301@end smallexample 34302 34303Toggle the printing of the wallclock, user and system times for an MI 34304command as a field in its output. This command is to help frontend 34305developers optimize the performance of their code. No argument is 34306equivalent to @samp{yes}. 34307 34308@subheading @value{GDBN} Command 34309 34310No equivalent. 34311 34312@subheading Example 34313 34314@smallexample 34315(gdb) 34316-enable-timings 34317^done 34318(gdb) 34319-break-insert main 34320^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 34321addr="0x080484ed",func="main",file="myprog.c", 34322fullname="/home/nickrob/myprog.c",line="73",thread-groups=["i1"], 34323times="0"@}, 34324time=@{wallclock="0.05185",user="0.00800",system="0.00000"@} 34325(gdb) 34326-enable-timings no 34327^done 34328(gdb) 34329-exec-run 34330^running 34331(gdb) 34332*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 34333frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@}, 34334@{name="argv",value="0xbfb60364"@}],file="myprog.c", 34335fullname="/home/nickrob/myprog.c",line="73",arch="i386:x86_64"@} 34336(gdb) 34337@end smallexample 34338 34339@node Annotations 34340@chapter @value{GDBN} Annotations 34341 34342This chapter describes annotations in @value{GDBN}. Annotations were 34343designed to interface @value{GDBN} to graphical user interfaces or other 34344similar programs which want to interact with @value{GDBN} at a 34345relatively high level. 34346 34347The annotation mechanism has largely been superseded by @sc{gdb/mi} 34348(@pxref{GDB/MI}). 34349 34350@ignore 34351This is Edition @value{EDITION}, @value{DATE}. 34352@end ignore 34353 34354@menu 34355* Annotations Overview:: What annotations are; the general syntax. 34356* Server Prefix:: Issuing a command without affecting user state. 34357* Prompting:: Annotations marking @value{GDBN}'s need for input. 34358* Errors:: Annotations for error messages. 34359* Invalidation:: Some annotations describe things now invalid. 34360* Annotations for Running:: 34361 Whether the program is running, how it stopped, etc. 34362* Source Annotations:: Annotations describing source code. 34363@end menu 34364 34365@node Annotations Overview 34366@section What is an Annotation? 34367@cindex annotations 34368 34369Annotations start with a newline character, two @samp{control-z} 34370characters, and the name of the annotation. If there is no additional 34371information associated with this annotation, the name of the annotation 34372is followed immediately by a newline. If there is additional 34373information, the name of the annotation is followed by a space, the 34374additional information, and a newline. The additional information 34375cannot contain newline characters. 34376 34377Any output not beginning with a newline and two @samp{control-z} 34378characters denotes literal output from @value{GDBN}. Currently there is 34379no need for @value{GDBN} to output a newline followed by two 34380@samp{control-z} characters, but if there was such a need, the 34381annotations could be extended with an @samp{escape} annotation which 34382means those three characters as output. 34383 34384The annotation @var{level}, which is specified using the 34385@option{--annotate} command line option (@pxref{Mode Options}), controls 34386how much information @value{GDBN} prints together with its prompt, 34387values of expressions, source lines, and other types of output. Level 0 34388is for no annotations, level 1 is for use when @value{GDBN} is run as a 34389subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable 34390for programs that control @value{GDBN}, and level 2 annotations have 34391been made obsolete (@pxref{Limitations, , Limitations of the Annotation 34392Interface, annotate, GDB's Obsolete Annotations}). 34393 34394@table @code 34395@kindex set annotate 34396@item set annotate @var{level} 34397The @value{GDBN} command @code{set annotate} sets the level of 34398annotations to the specified @var{level}. 34399 34400@item show annotate 34401@kindex show annotate 34402Show the current annotation level. 34403@end table 34404 34405This chapter describes level 3 annotations. 34406 34407A simple example of starting up @value{GDBN} with annotations is: 34408 34409@smallexample 34410$ @kbd{gdb --annotate=3} 34411GNU gdb 6.0 34412Copyright 2003 Free Software Foundation, Inc. 34413GDB is free software, covered by the GNU General Public License, 34414and you are welcome to change it and/or distribute copies of it 34415under certain conditions. 34416Type "show copying" to see the conditions. 34417There is absolutely no warranty for GDB. Type "show warranty" 34418for details. 34419This GDB was configured as "i386-pc-linux-gnu" 34420 34421^Z^Zpre-prompt 34422(@value{GDBP}) 34423^Z^Zprompt 34424@kbd{quit} 34425 34426^Z^Zpost-prompt 34427$ 34428@end smallexample 34429 34430Here @samp{quit} is input to @value{GDBN}; the rest is output from 34431@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z} 34432denotes a @samp{control-z} character) are annotations; the rest is 34433output from @value{GDBN}. 34434 34435@node Server Prefix 34436@section The Server Prefix 34437@cindex server prefix 34438 34439If you prefix a command with @samp{server } then it will not affect 34440the command history, nor will it affect @value{GDBN}'s notion of which 34441command to repeat if @key{RET} is pressed on a line by itself. This 34442means that commands can be run behind a user's back by a front-end in 34443a transparent manner. 34444 34445The @code{server } prefix does not affect the recording of values into 34446the value history; to print a value without recording it into the 34447value history, use the @code{output} command instead of the 34448@code{print} command. 34449 34450Using this prefix also disables confirmation requests 34451(@pxref{confirmation requests}). 34452 34453@node Prompting 34454@section Annotation for @value{GDBN} Input 34455 34456@cindex annotations for prompts 34457When @value{GDBN} prompts for input, it annotates this fact so it is possible 34458to know when to send output, when the output from a given command is 34459over, etc. 34460 34461Different kinds of input each have a different @dfn{input type}. Each 34462input type has three annotations: a @code{pre-} annotation, which 34463denotes the beginning of any prompt which is being output, a plain 34464annotation, which denotes the end of the prompt, and then a @code{post-} 34465annotation which denotes the end of any echo which may (or may not) be 34466associated with the input. For example, the @code{prompt} input type 34467features the following annotations: 34468 34469@smallexample 34470^Z^Zpre-prompt 34471^Z^Zprompt 34472^Z^Zpost-prompt 34473@end smallexample 34474 34475The input types are 34476 34477@table @code 34478@findex pre-prompt annotation 34479@findex prompt annotation 34480@findex post-prompt annotation 34481@item prompt 34482When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt). 34483 34484@findex pre-commands annotation 34485@findex commands annotation 34486@findex post-commands annotation 34487@item commands 34488When @value{GDBN} prompts for a set of commands, like in the @code{commands} 34489command. The annotations are repeated for each command which is input. 34490 34491@findex pre-overload-choice annotation 34492@findex overload-choice annotation 34493@findex post-overload-choice annotation 34494@item overload-choice 34495When @value{GDBN} wants the user to select between various overloaded functions. 34496 34497@findex pre-query annotation 34498@findex query annotation 34499@findex post-query annotation 34500@item query 34501When @value{GDBN} wants the user to confirm a potentially dangerous operation. 34502 34503@findex pre-prompt-for-continue annotation 34504@findex prompt-for-continue annotation 34505@findex post-prompt-for-continue annotation 34506@item prompt-for-continue 34507When @value{GDBN} is asking the user to press return to continue. Note: Don't 34508expect this to work well; instead use @code{set height 0} to disable 34509prompting. This is because the counting of lines is buggy in the 34510presence of annotations. 34511@end table 34512 34513@node Errors 34514@section Errors 34515@cindex annotations for errors, warnings and interrupts 34516 34517@findex quit annotation 34518@smallexample 34519^Z^Zquit 34520@end smallexample 34521 34522This annotation occurs right before @value{GDBN} responds to an interrupt. 34523 34524@findex error annotation 34525@smallexample 34526^Z^Zerror 34527@end smallexample 34528 34529This annotation occurs right before @value{GDBN} responds to an error. 34530 34531Quit and error annotations indicate that any annotations which @value{GDBN} was 34532in the middle of may end abruptly. For example, if a 34533@code{value-history-begin} annotation is followed by a @code{error}, one 34534cannot expect to receive the matching @code{value-history-end}. One 34535cannot expect not to receive it either, however; an error annotation 34536does not necessarily mean that @value{GDBN} is immediately returning all the way 34537to the top level. 34538 34539@findex error-begin annotation 34540A quit or error annotation may be preceded by 34541 34542@smallexample 34543^Z^Zerror-begin 34544@end smallexample 34545 34546Any output between that and the quit or error annotation is the error 34547message. 34548 34549Warning messages are not yet annotated. 34550@c If we want to change that, need to fix warning(), type_error(), 34551@c range_error(), and possibly other places. 34552 34553@node Invalidation 34554@section Invalidation Notices 34555 34556@cindex annotations for invalidation messages 34557The following annotations say that certain pieces of state may have 34558changed. 34559 34560@table @code 34561@findex frames-invalid annotation 34562@item ^Z^Zframes-invalid 34563 34564The frames (for example, output from the @code{backtrace} command) may 34565have changed. 34566 34567@findex breakpoints-invalid annotation 34568@item ^Z^Zbreakpoints-invalid 34569 34570The breakpoints may have changed. For example, the user just added or 34571deleted a breakpoint. 34572@end table 34573 34574@node Annotations for Running 34575@section Running the Program 34576@cindex annotations for running programs 34577 34578@findex starting annotation 34579@findex stopping annotation 34580When the program starts executing due to a @value{GDBN} command such as 34581@code{step} or @code{continue}, 34582 34583@smallexample 34584^Z^Zstarting 34585@end smallexample 34586 34587is output. When the program stops, 34588 34589@smallexample 34590^Z^Zstopped 34591@end smallexample 34592 34593is output. Before the @code{stopped} annotation, a variety of 34594annotations describe how the program stopped. 34595 34596@table @code 34597@findex exited annotation 34598@item ^Z^Zexited @var{exit-status} 34599The program exited, and @var{exit-status} is the exit status (zero for 34600successful exit, otherwise nonzero). 34601 34602@findex signalled annotation 34603@findex signal-name annotation 34604@findex signal-name-end annotation 34605@findex signal-string annotation 34606@findex signal-string-end annotation 34607@item ^Z^Zsignalled 34608The program exited with a signal. After the @code{^Z^Zsignalled}, the 34609annotation continues: 34610 34611@smallexample 34612@var{intro-text} 34613^Z^Zsignal-name 34614@var{name} 34615^Z^Zsignal-name-end 34616@var{middle-text} 34617^Z^Zsignal-string 34618@var{string} 34619^Z^Zsignal-string-end 34620@var{end-text} 34621@end smallexample 34622 34623@noindent 34624where @var{name} is the name of the signal, such as @code{SIGILL} or 34625@code{SIGSEGV}, and @var{string} is the explanation of the signal, such 34626as @code{Illegal Instruction} or @code{Segmentation fault}. The arguments 34627@var{intro-text}, @var{middle-text}, and @var{end-text} are for the 34628user's benefit and have no particular format. 34629 34630@findex signal annotation 34631@item ^Z^Zsignal 34632The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is 34633just saying that the program received the signal, not that it was 34634terminated with it. 34635 34636@findex breakpoint annotation 34637@item ^Z^Zbreakpoint @var{number} 34638The program hit breakpoint number @var{number}. 34639 34640@findex watchpoint annotation 34641@item ^Z^Zwatchpoint @var{number} 34642The program hit watchpoint number @var{number}. 34643@end table 34644 34645@node Source Annotations 34646@section Displaying Source 34647@cindex annotations for source display 34648 34649@findex source annotation 34650The following annotation is used instead of displaying source code: 34651 34652@smallexample 34653^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr} 34654@end smallexample 34655 34656where @var{filename} is an absolute file name indicating which source 34657file, @var{line} is the line number within that file (where 1 is the 34658first line in the file), @var{character} is the character position 34659within the file (where 0 is the first character in the file) (for most 34660debug formats this will necessarily point to the beginning of a line), 34661@var{middle} is @samp{middle} if @var{addr} is in the middle of the 34662line, or @samp{beg} if @var{addr} is at the beginning of the line, and 34663@var{addr} is the address in the target program associated with the 34664source which is being displayed. The @var{addr} is in the form @samp{0x} 34665followed by one or more lowercase hex digits (note that this does not 34666depend on the language). 34667 34668@node JIT Interface 34669@chapter JIT Compilation Interface 34670@cindex just-in-time compilation 34671@cindex JIT compilation interface 34672 34673This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation 34674interface. A JIT compiler is a program or library that generates native 34675executable code at runtime and executes it, usually in order to achieve good 34676performance while maintaining platform independence. 34677 34678Programs that use JIT compilation are normally difficult to debug because 34679portions of their code are generated at runtime, instead of being loaded from 34680object files, which is where @value{GDBN} normally finds the program's symbols 34681and debug information. In order to debug programs that use JIT compilation, 34682@value{GDBN} has an interface that allows the program to register in-memory 34683symbol files with @value{GDBN} at runtime. 34684 34685If you are using @value{GDBN} to debug a program that uses this interface, then 34686it should work transparently so long as you have not stripped the binary. If 34687you are developing a JIT compiler, then the interface is documented in the rest 34688of this chapter. At this time, the only known client of this interface is the 34689LLVM JIT. 34690 34691Broadly speaking, the JIT interface mirrors the dynamic loader interface. The 34692JIT compiler communicates with @value{GDBN} by writing data into a global 34693variable and calling a fuction at a well-known symbol. When @value{GDBN} 34694attaches, it reads a linked list of symbol files from the global variable to 34695find existing code, and puts a breakpoint in the function so that it can find 34696out about additional code. 34697 34698@menu 34699* Declarations:: Relevant C struct declarations 34700* Registering Code:: Steps to register code 34701* Unregistering Code:: Steps to unregister code 34702* Custom Debug Info:: Emit debug information in a custom format 34703@end menu 34704 34705@node Declarations 34706@section JIT Declarations 34707 34708These are the relevant struct declarations that a C program should include to 34709implement the interface: 34710 34711@smallexample 34712typedef enum 34713@{ 34714 JIT_NOACTION = 0, 34715 JIT_REGISTER_FN, 34716 JIT_UNREGISTER_FN 34717@} jit_actions_t; 34718 34719struct jit_code_entry 34720@{ 34721 struct jit_code_entry *next_entry; 34722 struct jit_code_entry *prev_entry; 34723 const char *symfile_addr; 34724 uint64_t symfile_size; 34725@}; 34726 34727struct jit_descriptor 34728@{ 34729 uint32_t version; 34730 /* This type should be jit_actions_t, but we use uint32_t 34731 to be explicit about the bitwidth. */ 34732 uint32_t action_flag; 34733 struct jit_code_entry *relevant_entry; 34734 struct jit_code_entry *first_entry; 34735@}; 34736 34737/* GDB puts a breakpoint in this function. */ 34738void __attribute__((noinline)) __jit_debug_register_code() @{ @}; 34739 34740/* Make sure to specify the version statically, because the 34741 debugger may check the version before we can set it. */ 34742struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @}; 34743@end smallexample 34744 34745If the JIT is multi-threaded, then it is important that the JIT synchronize any 34746modifications to this global data properly, which can easily be done by putting 34747a global mutex around modifications to these structures. 34748 34749@node Registering Code 34750@section Registering Code 34751 34752To register code with @value{GDBN}, the JIT should follow this protocol: 34753 34754@itemize @bullet 34755@item 34756Generate an object file in memory with symbols and other desired debug 34757information. The file must include the virtual addresses of the sections. 34758 34759@item 34760Create a code entry for the file, which gives the start and size of the symbol 34761file. 34762 34763@item 34764Add it to the linked list in the JIT descriptor. 34765 34766@item 34767Point the relevant_entry field of the descriptor at the entry. 34768 34769@item 34770Set @code{action_flag} to @code{JIT_REGISTER} and call 34771@code{__jit_debug_register_code}. 34772@end itemize 34773 34774When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the 34775@code{relevant_entry} pointer so it doesn't have to walk the list looking for 34776new code. However, the linked list must still be maintained in order to allow 34777@value{GDBN} to attach to a running process and still find the symbol files. 34778 34779@node Unregistering Code 34780@section Unregistering Code 34781 34782If code is freed, then the JIT should use the following protocol: 34783 34784@itemize @bullet 34785@item 34786Remove the code entry corresponding to the code from the linked list. 34787 34788@item 34789Point the @code{relevant_entry} field of the descriptor at the code entry. 34790 34791@item 34792Set @code{action_flag} to @code{JIT_UNREGISTER} and call 34793@code{__jit_debug_register_code}. 34794@end itemize 34795 34796If the JIT frees or recompiles code without unregistering it, then @value{GDBN} 34797and the JIT will leak the memory used for the associated symbol files. 34798 34799@node Custom Debug Info 34800@section Custom Debug Info 34801@cindex custom JIT debug info 34802@cindex JIT debug info reader 34803 34804Generating debug information in platform-native file formats (like ELF 34805or COFF) may be an overkill for JIT compilers; especially if all the 34806debug info is used for is displaying a meaningful backtrace. The 34807issue can be resolved by having the JIT writers decide on a debug info 34808format and also provide a reader that parses the debug info generated 34809by the JIT compiler. This section gives a brief overview on writing 34810such a parser. More specific details can be found in the source file 34811@file{gdb/jit-reader.in}, which is also installed as a header at 34812@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion. 34813 34814The reader is implemented as a shared object (so this functionality is 34815not available on platforms which don't allow loading shared objects at 34816runtime). Two @value{GDBN} commands, @code{jit-reader-load} and 34817@code{jit-reader-unload} are provided, to be used to load and unload 34818the readers from a preconfigured directory. Once loaded, the shared 34819object is used the parse the debug information emitted by the JIT 34820compiler. 34821 34822@menu 34823* Using JIT Debug Info Readers:: How to use supplied readers correctly 34824* Writing JIT Debug Info Readers:: Creating a debug-info reader 34825@end menu 34826 34827@node Using JIT Debug Info Readers 34828@subsection Using JIT Debug Info Readers 34829@kindex jit-reader-load 34830@kindex jit-reader-unload 34831 34832Readers can be loaded and unloaded using the @code{jit-reader-load} 34833and @code{jit-reader-unload} commands. 34834 34835@table @code 34836@item jit-reader-load @var{reader} 34837Load the JIT reader named @var{reader}, which is a shared 34838object specified as either an absolute or a relative file name. In 34839the latter case, @value{GDBN} will try to load the reader from a 34840pre-configured directory, usually @file{@var{libdir}/gdb/} on a UNIX 34841system (here @var{libdir} is the system library directory, often 34842@file{/usr/local/lib}). 34843 34844Only one reader can be active at a time; trying to load a second 34845reader when one is already loaded will result in @value{GDBN} 34846reporting an error. A new JIT reader can be loaded by first unloading 34847the current one using @code{jit-reader-unload} and then invoking 34848@code{jit-reader-load}. 34849 34850@item jit-reader-unload 34851Unload the currently loaded JIT reader. 34852 34853@end table 34854 34855@node Writing JIT Debug Info Readers 34856@subsection Writing JIT Debug Info Readers 34857@cindex writing JIT debug info readers 34858 34859As mentioned, a reader is essentially a shared object conforming to a 34860certain ABI. This ABI is described in @file{jit-reader.h}. 34861 34862@file{jit-reader.h} defines the structures, macros and functions 34863required to write a reader. It is installed (along with 34864@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is 34865the system include directory. 34866 34867Readers need to be released under a GPL compatible license. A reader 34868can be declared as released under such a license by placing the macro 34869@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file. 34870 34871The entry point for readers is the symbol @code{gdb_init_reader}, 34872which is expected to be a function with the prototype 34873 34874@findex gdb_init_reader 34875@smallexample 34876extern struct gdb_reader_funcs *gdb_init_reader (void); 34877@end smallexample 34878 34879@cindex @code{struct gdb_reader_funcs} 34880 34881@code{struct gdb_reader_funcs} contains a set of pointers to callback 34882functions. These functions are executed to read the debug info 34883generated by the JIT compiler (@code{read}), to unwind stack frames 34884(@code{unwind}) and to create canonical frame IDs 34885(@code{get_Frame_id}). It also has a callback that is called when the 34886reader is being unloaded (@code{destroy}). The struct looks like this 34887 34888@smallexample 34889struct gdb_reader_funcs 34890@{ 34891 /* Must be set to GDB_READER_INTERFACE_VERSION. */ 34892 int reader_version; 34893 34894 /* For use by the reader. */ 34895 void *priv_data; 34896 34897 gdb_read_debug_info *read; 34898 gdb_unwind_frame *unwind; 34899 gdb_get_frame_id *get_frame_id; 34900 gdb_destroy_reader *destroy; 34901@}; 34902@end smallexample 34903 34904@cindex @code{struct gdb_symbol_callbacks} 34905@cindex @code{struct gdb_unwind_callbacks} 34906 34907The callbacks are provided with another set of callbacks by 34908@value{GDBN} to do their job. For @code{read}, these callbacks are 34909passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind} 34910and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}. 34911@code{struct gdb_symbol_callbacks} has callbacks to create new object 34912files and new symbol tables inside those object files. @code{struct 34913gdb_unwind_callbacks} has callbacks to read registers off the current 34914frame and to write out the values of the registers in the previous 34915frame. Both have a callback (@code{target_read}) to read bytes off the 34916target's address space. 34917 34918@node In-Process Agent 34919@chapter In-Process Agent 34920@cindex debugging agent 34921The traditional debugging model is conceptually low-speed, but works fine, 34922because most bugs can be reproduced in debugging-mode execution. However, 34923as multi-core or many-core processors are becoming mainstream, and 34924multi-threaded programs become more and more popular, there should be more 34925and more bugs that only manifest themselves at normal-mode execution, for 34926example, thread races, because debugger's interference with the program's 34927timing may conceal the bugs. On the other hand, in some applications, 34928it is not feasible for the debugger to interrupt the program's execution 34929long enough for the developer to learn anything helpful about its behavior. 34930If the program's correctness depends on its real-time behavior, delays 34931introduced by a debugger might cause the program to fail, even when the 34932code itself is correct. It is useful to be able to observe the program's 34933behavior without interrupting it. 34934 34935Therefore, traditional debugging model is too intrusive to reproduce 34936some bugs. In order to reduce the interference with the program, we can 34937reduce the number of operations performed by debugger. The 34938@dfn{In-Process Agent}, a shared library, is running within the same 34939process with inferior, and is able to perform some debugging operations 34940itself. As a result, debugger is only involved when necessary, and 34941performance of debugging can be improved accordingly. Note that 34942interference with program can be reduced but can't be removed completely, 34943because the in-process agent will still stop or slow down the program. 34944 34945The in-process agent can interpret and execute Agent Expressions 34946(@pxref{Agent Expressions}) during performing debugging operations. The 34947agent expressions can be used for different purposes, such as collecting 34948data in tracepoints, and condition evaluation in breakpoints. 34949 34950@anchor{Control Agent} 34951You can control whether the in-process agent is used as an aid for 34952debugging with the following commands: 34953 34954@table @code 34955@kindex set agent on 34956@item set agent on 34957Causes the in-process agent to perform some operations on behalf of the 34958debugger. Just which operations requested by the user will be done 34959by the in-process agent depends on the its capabilities. For example, 34960if you request to evaluate breakpoint conditions in the in-process agent, 34961and the in-process agent has such capability as well, then breakpoint 34962conditions will be evaluated in the in-process agent. 34963 34964@kindex set agent off 34965@item set agent off 34966Disables execution of debugging operations by the in-process agent. All 34967of the operations will be performed by @value{GDBN}. 34968 34969@kindex show agent 34970@item show agent 34971Display the current setting of execution of debugging operations by 34972the in-process agent. 34973@end table 34974 34975@menu 34976* In-Process Agent Protocol:: 34977@end menu 34978 34979@node In-Process Agent Protocol 34980@section In-Process Agent Protocol 34981@cindex in-process agent protocol 34982 34983The in-process agent is able to communicate with both @value{GDBN} and 34984GDBserver (@pxref{In-Process Agent}). This section documents the protocol 34985used for communications between @value{GDBN} or GDBserver and the IPA. 34986In general, @value{GDBN} or GDBserver sends commands 34987(@pxref{IPA Protocol Commands}) and data to in-process agent, and then 34988in-process agent replies back with the return result of the command, or 34989some other information. The data sent to in-process agent is composed 34990of primitive data types, such as 4-byte or 8-byte type, and composite 34991types, which are called objects (@pxref{IPA Protocol Objects}). 34992 34993@menu 34994* IPA Protocol Objects:: 34995* IPA Protocol Commands:: 34996@end menu 34997 34998@node IPA Protocol Objects 34999@subsection IPA Protocol Objects 35000@cindex ipa protocol objects 35001 35002The commands sent to and results received from agent may contain some 35003complex data types called @dfn{objects}. 35004 35005The in-process agent is running on the same machine with @value{GDBN} 35006or GDBserver, so it doesn't have to handle as much differences between 35007two ends as remote protocol (@pxref{Remote Protocol}) tries to handle. 35008However, there are still some differences of two ends in two processes: 35009 35010@enumerate 35011@item 35012word size. On some 64-bit machines, @value{GDBN} or GDBserver can be 35013compiled as a 64-bit executable, while in-process agent is a 32-bit one. 35014@item 35015ABI. Some machines may have multiple types of ABI, @value{GDBN} or 35016GDBserver is compiled with one, and in-process agent is compiled with 35017the other one. 35018@end enumerate 35019 35020Here are the IPA Protocol Objects: 35021 35022@enumerate 35023@item 35024agent expression object. It represents an agent expression 35025(@pxref{Agent Expressions}). 35026@anchor{agent expression object} 35027@item 35028tracepoint action object. It represents a tracepoint action 35029(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers, 35030memory, static trace data and to evaluate expression. 35031@anchor{tracepoint action object} 35032@item 35033tracepoint object. It represents a tracepoint (@pxref{Tracepoints}). 35034@anchor{tracepoint object} 35035 35036@end enumerate 35037 35038The following table describes important attributes of each IPA protocol 35039object: 35040 35041@multitable @columnfractions .30 .20 .50 35042@headitem Name @tab Size @tab Description 35043@item @emph{agent expression object} @tab @tab 35044@item length @tab 4 @tab length of bytes code 35045@item byte code @tab @var{length} @tab contents of byte code 35046@item @emph{tracepoint action for collecting memory} @tab @tab 35047@item 'M' @tab 1 @tab type of tracepoint action 35048@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the 35049address of the lowest byte to collect, otherwise @var{addr} is the offset 35050of @var{basereg} for memory collecting. 35051@item len @tab 8 @tab length of memory for collecting 35052@item basereg @tab 4 @tab the register number containing the starting 35053memory address for collecting. 35054@item @emph{tracepoint action for collecting registers} @tab @tab 35055@item 'R' @tab 1 @tab type of tracepoint action 35056@item @emph{tracepoint action for collecting static trace data} @tab @tab 35057@item 'L' @tab 1 @tab type of tracepoint action 35058@item @emph{tracepoint action for expression evaluation} @tab @tab 35059@item 'X' @tab 1 @tab type of tracepoint action 35060@item agent expression @tab length of @tab @ref{agent expression object} 35061@item @emph{tracepoint object} @tab @tab 35062@item number @tab 4 @tab number of tracepoint 35063@item address @tab 8 @tab address of tracepoint inserted on 35064@item type @tab 4 @tab type of tracepoint 35065@item enabled @tab 1 @tab enable or disable of tracepoint 35066@item step_count @tab 8 @tab step 35067@item pass_count @tab 8 @tab pass 35068@item numactions @tab 4 @tab number of tracepoint actions 35069@item hit count @tab 8 @tab hit count 35070@item trace frame usage @tab 8 @tab trace frame usage 35071@item compiled_cond @tab 8 @tab compiled condition 35072@item orig_size @tab 8 @tab orig size 35073@item condition @tab 4 if condition is NULL otherwise length of 35074@ref{agent expression object} 35075@tab zero if condition is NULL, otherwise is 35076@ref{agent expression object} 35077@item actions @tab variable 35078@tab numactions number of @ref{tracepoint action object} 35079@end multitable 35080 35081@node IPA Protocol Commands 35082@subsection IPA Protocol Commands 35083@cindex ipa protocol commands 35084 35085The spaces in each command are delimiters to ease reading this commands 35086specification. They don't exist in real commands. 35087 35088@table @samp 35089 35090@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head} 35091Installs a new fast tracepoint described by @var{tracepoint_object} 35092(@pxref{tracepoint object}). The @var{gdb_jump_pad_head}, 8-byte long, is the 35093head of @dfn{jumppad}, which is used to jump to data collection routine 35094in IPA finally. 35095 35096Replies: 35097@table @samp 35098@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump} 35099@var{target_address} is address of tracepoint in the inferior. 35100The @var{gdb_jump_pad_head} is updated head of jumppad. Both of 35101@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long. 35102The @var{fjump} contains a sequence of instructions jump to jumppad entry. 35103The @var{fjump_size}, 4-byte long, is the size of @var{fjump}. 35104@item E @var{NN} 35105for an error 35106 35107@end table 35108 35109@item close 35110Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver 35111is about to kill inferiors. 35112 35113@item qTfSTM 35114@xref{qTfSTM}. 35115@item qTsSTM 35116@xref{qTsSTM}. 35117@item qTSTMat 35118@xref{qTSTMat}. 35119@item probe_marker_at:@var{address} 35120Asks in-process agent to probe the marker at @var{address}. 35121 35122Replies: 35123@table @samp 35124@item E @var{NN} 35125for an error 35126@end table 35127@item unprobe_marker_at:@var{address} 35128Asks in-process agent to unprobe the marker at @var{address}. 35129@end table 35130 35131@node GDB Bugs 35132@chapter Reporting Bugs in @value{GDBN} 35133@cindex bugs in @value{GDBN} 35134@cindex reporting bugs in @value{GDBN} 35135 35136Your bug reports play an essential role in making @value{GDBN} reliable. 35137 35138Reporting a bug may help you by bringing a solution to your problem, or it 35139may not. But in any case the principal function of a bug report is to help 35140the entire community by making the next version of @value{GDBN} work better. Bug 35141reports are your contribution to the maintenance of @value{GDBN}. 35142 35143In order for a bug report to serve its purpose, you must include the 35144information that enables us to fix the bug. 35145 35146@menu 35147* Bug Criteria:: Have you found a bug? 35148* Bug Reporting:: How to report bugs 35149@end menu 35150 35151@node Bug Criteria 35152@section Have You Found a Bug? 35153@cindex bug criteria 35154 35155If you are not sure whether you have found a bug, here are some guidelines: 35156 35157@itemize @bullet 35158@cindex fatal signal 35159@cindex debugger crash 35160@cindex crash of debugger 35161@item 35162If the debugger gets a fatal signal, for any input whatever, that is a 35163@value{GDBN} bug. Reliable debuggers never crash. 35164 35165@cindex error on valid input 35166@item 35167If @value{GDBN} produces an error message for valid input, that is a 35168bug. (Note that if you're cross debugging, the problem may also be 35169somewhere in the connection to the target.) 35170 35171@cindex invalid input 35172@item 35173If @value{GDBN} does not produce an error message for invalid input, 35174that is a bug. However, you should note that your idea of 35175``invalid input'' might be our idea of ``an extension'' or ``support 35176for traditional practice''. 35177 35178@item 35179If you are an experienced user of debugging tools, your suggestions 35180for improvement of @value{GDBN} are welcome in any case. 35181@end itemize 35182 35183@node Bug Reporting 35184@section How to Report Bugs 35185@cindex bug reports 35186@cindex @value{GDBN} bugs, reporting 35187 35188A number of companies and individuals offer support for @sc{gnu} products. 35189If you obtained @value{GDBN} from a support organization, we recommend you 35190contact that organization first. 35191 35192You can find contact information for many support companies and 35193individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs 35194distribution. 35195@c should add a web page ref... 35196 35197@ifset BUGURL 35198@ifset BUGURL_DEFAULT 35199In any event, we also recommend that you submit bug reports for 35200@value{GDBN}. The preferred method is to submit them directly using 35201@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web 35202page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can 35203be used. 35204 35205@strong{Do not send bug reports to @samp{info-gdb}, or to 35206@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do 35207not want to receive bug reports. Those that do have arranged to receive 35208@samp{bug-gdb}. 35209 35210The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which 35211serves as a repeater. The mailing list and the newsgroup carry exactly 35212the same messages. Often people think of posting bug reports to the 35213newsgroup instead of mailing them. This appears to work, but it has one 35214problem which can be crucial: a newsgroup posting often lacks a mail 35215path back to the sender. Thus, if we need to ask for more information, 35216we may be unable to reach you. For this reason, it is better to send 35217bug reports to the mailing list. 35218@end ifset 35219@ifclear BUGURL_DEFAULT 35220In any event, we also recommend that you submit bug reports for 35221@value{GDBN} to @value{BUGURL}. 35222@end ifclear 35223@end ifset 35224 35225The fundamental principle of reporting bugs usefully is this: 35226@strong{report all the facts}. If you are not sure whether to state a 35227fact or leave it out, state it! 35228 35229Often people omit facts because they think they know what causes the 35230problem and assume that some details do not matter. Thus, you might 35231assume that the name of the variable you use in an example does not matter. 35232Well, probably it does not, but one cannot be sure. Perhaps the bug is a 35233stray memory reference which happens to fetch from the location where that 35234name is stored in memory; perhaps, if the name were different, the contents 35235of that location would fool the debugger into doing the right thing despite 35236the bug. Play it safe and give a specific, complete example. That is the 35237easiest thing for you to do, and the most helpful. 35238 35239Keep in mind that the purpose of a bug report is to enable us to fix the 35240bug. It may be that the bug has been reported previously, but neither 35241you nor we can know that unless your bug report is complete and 35242self-contained. 35243 35244Sometimes people give a few sketchy facts and ask, ``Does this ring a 35245bell?'' Those bug reports are useless, and we urge everyone to 35246@emph{refuse to respond to them} except to chide the sender to report 35247bugs properly. 35248 35249To enable us to fix the bug, you should include all these things: 35250 35251@itemize @bullet 35252@item 35253The version of @value{GDBN}. @value{GDBN} announces it if you start 35254with no arguments; you can also print it at any time using @code{show 35255version}. 35256 35257Without this, we will not know whether there is any point in looking for 35258the bug in the current version of @value{GDBN}. 35259 35260@item 35261The type of machine you are using, and the operating system name and 35262version number. 35263 35264@item 35265The details of the @value{GDBN} build-time configuration. 35266@value{GDBN} shows these details if you invoke it with the 35267@option{--configuration} command-line option, or if you type 35268@code{show configuration} at @value{GDBN}'s prompt. 35269 35270@item 35271What compiler (and its version) was used to compile @value{GDBN}---e.g.@: 35272``@value{GCC}--2.8.1''. 35273 35274@item 35275What compiler (and its version) was used to compile the program you are 35276debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP 35277C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version} 35278to get this information; for other compilers, see the documentation for 35279those compilers. 35280 35281@item 35282The command arguments you gave the compiler to compile your example and 35283observe the bug. For example, did you use @samp{-O}? To guarantee 35284you will not omit something important, list them all. A copy of the 35285Makefile (or the output from make) is sufficient. 35286 35287If we were to try to guess the arguments, we would probably guess wrong 35288and then we might not encounter the bug. 35289 35290@item 35291A complete input script, and all necessary source files, that will 35292reproduce the bug. 35293 35294@item 35295A description of what behavior you observe that you believe is 35296incorrect. For example, ``It gets a fatal signal.'' 35297 35298Of course, if the bug is that @value{GDBN} gets a fatal signal, then we 35299will certainly notice it. But if the bug is incorrect output, we might 35300not notice unless it is glaringly wrong. You might as well not give us 35301a chance to make a mistake. 35302 35303Even if the problem you experience is a fatal signal, you should still 35304say so explicitly. Suppose something strange is going on, such as, your 35305copy of @value{GDBN} is out of synch, or you have encountered a bug in 35306the C library on your system. (This has happened!) Your copy might 35307crash and ours would not. If you told us to expect a crash, then when 35308ours fails to crash, we would know that the bug was not happening for 35309us. If you had not told us to expect a crash, then we would not be able 35310to draw any conclusion from our observations. 35311 35312@pindex script 35313@cindex recording a session script 35314To collect all this information, you can use a session recording program 35315such as @command{script}, which is available on many Unix systems. 35316Just run your @value{GDBN} session inside @command{script} and then 35317include the @file{typescript} file with your bug report. 35318 35319Another way to record a @value{GDBN} session is to run @value{GDBN} 35320inside Emacs and then save the entire buffer to a file. 35321 35322@item 35323If you wish to suggest changes to the @value{GDBN} source, send us context 35324diffs. If you even discuss something in the @value{GDBN} source, refer to 35325it by context, not by line number. 35326 35327The line numbers in our development sources will not match those in your 35328sources. Your line numbers would convey no useful information to us. 35329 35330@end itemize 35331 35332Here are some things that are not necessary: 35333 35334@itemize @bullet 35335@item 35336A description of the envelope of the bug. 35337 35338Often people who encounter a bug spend a lot of time investigating 35339which changes to the input file will make the bug go away and which 35340changes will not affect it. 35341 35342This is often time consuming and not very useful, because the way we 35343will find the bug is by running a single example under the debugger 35344with breakpoints, not by pure deduction from a series of examples. 35345We recommend that you save your time for something else. 35346 35347Of course, if you can find a simpler example to report @emph{instead} 35348of the original one, that is a convenience for us. Errors in the 35349output will be easier to spot, running under the debugger will take 35350less time, and so on. 35351 35352However, simplification is not vital; if you do not want to do this, 35353report the bug anyway and send us the entire test case you used. 35354 35355@item 35356A patch for the bug. 35357 35358A patch for the bug does help us if it is a good one. But do not omit 35359the necessary information, such as the test case, on the assumption that 35360a patch is all we need. We might see problems with your patch and decide 35361to fix the problem another way, or we might not understand it at all. 35362 35363Sometimes with a program as complicated as @value{GDBN} it is very hard to 35364construct an example that will make the program follow a certain path 35365through the code. If you do not send us the example, we will not be able 35366to construct one, so we will not be able to verify that the bug is fixed. 35367 35368And if we cannot understand what bug you are trying to fix, or why your 35369patch should be an improvement, we will not install it. A test case will 35370help us to understand. 35371 35372@item 35373A guess about what the bug is or what it depends on. 35374 35375Such guesses are usually wrong. Even we cannot guess right about such 35376things without first using the debugger to find the facts. 35377@end itemize 35378 35379@c The readline documentation is distributed with the readline code 35380@c and consists of the two following files: 35381@c rluser.texi 35382@c hsuser.texi 35383@c Use -I with makeinfo to point to the appropriate directory, 35384@c environment var TEXINPUTS with TeX. 35385@ifclear SYSTEM_READLINE 35386@include rluser.texi 35387@include hsuser.texi 35388@end ifclear 35389 35390@node In Memoriam 35391@appendix In Memoriam 35392 35393The @value{GDBN} project mourns the loss of the following long-time 35394contributors: 35395 35396@table @code 35397@item Fred Fish 35398Fred was a long-standing contributor to @value{GDBN} (1991-2006), and 35399to Free Software in general. Outside of @value{GDBN}, he was known in 35400the Amiga world for his series of Fish Disks, and the GeekGadget project. 35401 35402@item Michael Snyder 35403Michael was one of the Global Maintainers of the @value{GDBN} project, 35404with contributions recorded as early as 1996, until 2011. In addition 35405to his day to day participation, he was a large driving force behind 35406adding Reverse Debugging to @value{GDBN}. 35407@end table 35408 35409Beyond their technical contributions to the project, they were also 35410enjoyable members of the Free Software Community. We will miss them. 35411 35412@node Formatting Documentation 35413@appendix Formatting Documentation 35414 35415@cindex @value{GDBN} reference card 35416@cindex reference card 35417The @value{GDBN} 4 release includes an already-formatted reference card, ready 35418for printing with PostScript or Ghostscript, in the @file{gdb} 35419subdirectory of the main source directory@footnote{In 35420@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN} 35421release.}. If you can use PostScript or Ghostscript with your printer, 35422you can print the reference card immediately with @file{refcard.ps}. 35423 35424The release also includes the source for the reference card. You 35425can format it, using @TeX{}, by typing: 35426 35427@smallexample 35428make refcard.dvi 35429@end smallexample 35430 35431The @value{GDBN} reference card is designed to print in @dfn{landscape} 35432mode on US ``letter'' size paper; 35433that is, on a sheet 11 inches wide by 8.5 inches 35434high. You will need to specify this form of printing as an option to 35435your @sc{dvi} output program. 35436 35437@cindex documentation 35438 35439All the documentation for @value{GDBN} comes as part of the machine-readable 35440distribution. The documentation is written in Texinfo format, which is 35441a documentation system that uses a single source file to produce both 35442on-line information and a printed manual. You can use one of the Info 35443formatting commands to create the on-line version of the documentation 35444and @TeX{} (or @code{texi2roff}) to typeset the printed version. 35445 35446@value{GDBN} includes an already formatted copy of the on-line Info 35447version of this manual in the @file{gdb} subdirectory. The main Info 35448file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to 35449subordinate files matching @samp{gdb.info*} in the same directory. If 35450necessary, you can print out these files, or read them with any editor; 35451but they are easier to read using the @code{info} subsystem in @sc{gnu} 35452Emacs or the standalone @code{info} program, available as part of the 35453@sc{gnu} Texinfo distribution. 35454 35455If you want to format these Info files yourself, you need one of the 35456Info formatting programs, such as @code{texinfo-format-buffer} or 35457@code{makeinfo}. 35458 35459If you have @code{makeinfo} installed, and are in the top level 35460@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of 35461version @value{GDBVN}), you can make the Info file by typing: 35462 35463@smallexample 35464cd gdb 35465make gdb.info 35466@end smallexample 35467 35468If you want to typeset and print copies of this manual, you need @TeX{}, 35469a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the 35470Texinfo definitions file. 35471 35472@TeX{} is a typesetting program; it does not print files directly, but 35473produces output files called @sc{dvi} files. To print a typeset 35474document, you need a program to print @sc{dvi} files. If your system 35475has @TeX{} installed, chances are it has such a program. The precise 35476command to use depends on your system; @kbd{lpr -d} is common; another 35477(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may 35478require a file name without any extension or a @samp{.dvi} extension. 35479 35480@TeX{} also requires a macro definitions file called 35481@file{texinfo.tex}. This file tells @TeX{} how to typeset a document 35482written in Texinfo format. On its own, @TeX{} cannot either read or 35483typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB 35484and is located in the @file{gdb-@var{version-number}/texinfo} 35485directory. 35486 35487If you have @TeX{} and a @sc{dvi} printer program installed, you can 35488typeset and print this manual. First switch to the @file{gdb} 35489subdirectory of the main source directory (for example, to 35490@file{gdb-@value{GDBVN}/gdb}) and type: 35491 35492@smallexample 35493make gdb.dvi 35494@end smallexample 35495 35496Then give @file{gdb.dvi} to your @sc{dvi} printing program. 35497 35498@node Installing GDB 35499@appendix Installing @value{GDBN} 35500@cindex installation 35501 35502@menu 35503* Requirements:: Requirements for building @value{GDBN} 35504* Running Configure:: Invoking the @value{GDBN} @file{configure} script 35505* Separate Objdir:: Compiling @value{GDBN} in another directory 35506* Config Names:: Specifying names for hosts and targets 35507* Configure Options:: Summary of options for configure 35508* System-wide configuration:: Having a system-wide init file 35509@end menu 35510 35511@node Requirements 35512@section Requirements for Building @value{GDBN} 35513@cindex building @value{GDBN}, requirements for 35514 35515Building @value{GDBN} requires various tools and packages to be available. 35516Other packages will be used only if they are found. 35517 35518@heading Tools/Packages Necessary for Building @value{GDBN} 35519@table @asis 35520@item C@t{++}11 compiler 35521@value{GDBN} is written in C@t{++}11. It should be buildable with any 35522recent C@t{++}11 compiler, e.g.@: GCC. 35523 35524@item GNU make 35525@value{GDBN}'s build system relies on features only found in the GNU 35526make program. Other variants of @code{make} will not work. 35527@end table 35528 35529@heading Tools/Packages Optional for Building @value{GDBN} 35530@table @asis 35531@item Expat 35532@anchor{Expat} 35533@value{GDBN} can use the Expat XML parsing library. This library may be 35534included with your operating system distribution; if it is not, you 35535can get the latest version from @url{http://expat.sourceforge.net}. 35536The @file{configure} script will search for this library in several 35537standard locations; if it is installed in an unusual path, you can 35538use the @option{--with-libexpat-prefix} option to specify its location. 35539 35540Expat is used for: 35541 35542@itemize @bullet 35543@item 35544Remote protocol memory maps (@pxref{Memory Map Format}) 35545@item 35546Target descriptions (@pxref{Target Descriptions}) 35547@item 35548Remote shared library lists (@xref{Library List Format}, 35549or alternatively @pxref{Library List Format for SVR4 Targets}) 35550@item 35551MS-Windows shared libraries (@pxref{Shared Libraries}) 35552@item 35553Traceframe info (@pxref{Traceframe Info Format}) 35554@item 35555Branch trace (@pxref{Branch Trace Format}, 35556@pxref{Branch Trace Configuration Format}) 35557@end itemize 35558 35559@item Guile 35560@value{GDBN} can be scripted using GNU Guile. @xref{Guile}. By 35561default, @value{GDBN} will be compiled if the Guile libraries are 35562installed and are found by @file{configure}. You can use the 35563@code{--with-guile} option to request Guile, and pass either the Guile 35564version number or the file name of the relevant @code{pkg-config} 35565program to choose a particular version of Guile. 35566 35567@item iconv 35568@value{GDBN}'s features related to character sets (@pxref{Character 35569Sets}) require a functioning @code{iconv} implementation. If you are 35570on a GNU system, then this is provided by the GNU C Library. Some 35571other systems also provide a working @code{iconv}. 35572 35573If @value{GDBN} is using the @code{iconv} program which is installed 35574in a non-standard place, you will need to tell @value{GDBN} where to 35575find it. This is done with @option{--with-iconv-bin} which specifies 35576the directory that contains the @code{iconv} program. This program is 35577run in order to make a list of the available character sets. 35578 35579On systems without @code{iconv}, you can install GNU Libiconv. If 35580Libiconv is installed in a standard place, @value{GDBN} will 35581automatically use it if it is needed. If you have previously 35582installed Libiconv in a non-standard place, you can use the 35583@option{--with-libiconv-prefix} option to @file{configure}. 35584 35585@value{GDBN}'s top-level @file{configure} and @file{Makefile} will 35586arrange to build Libiconv if a directory named @file{libiconv} appears 35587in the top-most source directory. If Libiconv is built this way, and 35588if the operating system does not provide a suitable @code{iconv} 35589implementation, then the just-built library will automatically be used 35590by @value{GDBN}. One easy way to set this up is to download GNU 35591Libiconv, unpack it inside the top-level directory of the @value{GDBN} 35592source tree, and then rename the directory holding the Libiconv source 35593code to @samp{libiconv}. 35594 35595@item lzma 35596@value{GDBN} can support debugging sections that are compressed with 35597the LZMA library. @xref{MiniDebugInfo}. If this library is not 35598included with your operating system, you can find it in the xz package 35599at @url{http://tukaani.org/xz/}. If the LZMA library is available in 35600the usual place, then the @file{configure} script will use it 35601automatically. If it is installed in an unusual path, you can use the 35602@option{--with-lzma-prefix} option to specify its location. 35603 35604@item MPFR 35605@anchor{MPFR} 35606@value{GDBN} can use the GNU MPFR multiple-precision floating-point 35607library. This library may be included with your operating system 35608distribution; if it is not, you can get the latest version from 35609@url{http://www.mpfr.org}. The @file{configure} script will search 35610for this library in several standard locations; if it is installed 35611in an unusual path, you can use the @option{--with-libmpfr-prefix} 35612option to specify its location. 35613 35614GNU MPFR is used to emulate target floating-point arithmetic during 35615expression evaluation when the target uses different floating-point 35616formats than the host. If GNU MPFR it is not available, @value{GDBN} 35617will fall back to using host floating-point arithmetic. 35618 35619@item Python 35620@value{GDBN} can be scripted using Python language. @xref{Python}. 35621By default, @value{GDBN} will be compiled if the Python libraries are 35622installed and are found by @file{configure}. You can use the 35623@code{--with-python} option to request Python, and pass either the 35624file name of the relevant @code{python} executable, or the name of the 35625directory in which Python is installed, to choose a particular 35626installation of Python. 35627 35628@item zlib 35629@cindex compressed debug sections 35630@value{GDBN} will use the @samp{zlib} library, if available, to read 35631compressed debug sections. Some linkers, such as GNU gold, are capable 35632of producing binaries with compressed debug sections. If @value{GDBN} 35633is compiled with @samp{zlib}, it will be able to read the debug 35634information in such binaries. 35635 35636The @samp{zlib} library is likely included with your operating system 35637distribution; if it is not, you can get the latest version from 35638@url{http://zlib.net}. 35639@end table 35640 35641@node Running Configure 35642@section Invoking the @value{GDBN} @file{configure} Script 35643@cindex configuring @value{GDBN} 35644@value{GDBN} comes with a @file{configure} script that automates the process 35645of preparing @value{GDBN} for installation; you can then use @code{make} to 35646build the @code{gdb} program. 35647@iftex 35648@c irrelevant in info file; it's as current as the code it lives with. 35649@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN}, 35650look at the @file{README} file in the sources; we may have improved the 35651installation procedures since publishing this manual.} 35652@end iftex 35653 35654The @value{GDBN} distribution includes all the source code you need for 35655@value{GDBN} in a single directory, whose name is usually composed by 35656appending the version number to @samp{gdb}. 35657 35658For example, the @value{GDBN} version @value{GDBVN} distribution is in the 35659@file{gdb-@value{GDBVN}} directory. That directory contains: 35660 35661@table @code 35662@item gdb-@value{GDBVN}/configure @r{(and supporting files)} 35663script for configuring @value{GDBN} and all its supporting libraries 35664 35665@item gdb-@value{GDBVN}/gdb 35666the source specific to @value{GDBN} itself 35667 35668@item gdb-@value{GDBVN}/bfd 35669source for the Binary File Descriptor library 35670 35671@item gdb-@value{GDBVN}/include 35672@sc{gnu} include files 35673 35674@item gdb-@value{GDBVN}/libiberty 35675source for the @samp{-liberty} free software library 35676 35677@item gdb-@value{GDBVN}/opcodes 35678source for the library of opcode tables and disassemblers 35679 35680@item gdb-@value{GDBVN}/readline 35681source for the @sc{gnu} command-line interface 35682@end table 35683 35684There may be other subdirectories as well. 35685 35686The simplest way to configure and build @value{GDBN} is to run @file{configure} 35687from the @file{gdb-@var{version-number}} source directory, which in 35688this example is the @file{gdb-@value{GDBVN}} directory. 35689 35690First switch to the @file{gdb-@var{version-number}} source directory 35691if you are not already in it; then run @file{configure}. Pass the 35692identifier for the platform on which @value{GDBN} will run as an 35693argument. 35694 35695For example: 35696 35697@smallexample 35698cd gdb-@value{GDBVN} 35699./configure 35700make 35701@end smallexample 35702 35703Running @samp{configure} and then running @code{make} builds the 35704included supporting libraries, then @code{gdb} itself. The configured 35705source files, and the binaries, are left in the corresponding source 35706directories. 35707 35708@need 750 35709@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your 35710system does not recognize this automatically when you run a different 35711shell, you may need to run @code{sh} on it explicitly: 35712 35713@smallexample 35714sh configure 35715@end smallexample 35716 35717You should run the @file{configure} script from the top directory in the 35718source tree, the @file{gdb-@var{version-number}} directory. If you run 35719@file{configure} from one of the subdirectories, you will configure only 35720that subdirectory. That is usually not what you want. In particular, 35721if you run the first @file{configure} from the @file{gdb} subdirectory 35722of the @file{gdb-@var{version-number}} directory, you will omit the 35723configuration of @file{bfd}, @file{readline}, and other sibling 35724directories of the @file{gdb} subdirectory. This leads to build errors 35725about missing include files such as @file{bfd/bfd.h}. 35726 35727You can install @code{@value{GDBN}} anywhere. The best way to do this 35728is to pass the @code{--prefix} option to @code{configure}, and then 35729install it with @code{make install}. 35730 35731@node Separate Objdir 35732@section Compiling @value{GDBN} in Another Directory 35733 35734If you want to run @value{GDBN} versions for several host or target machines, 35735you need a different @code{gdb} compiled for each combination of 35736host and target. @file{configure} is designed to make this easy by 35737allowing you to generate each configuration in a separate subdirectory, 35738rather than in the source directory. If your @code{make} program 35739handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running 35740@code{make} in each of these directories builds the @code{gdb} 35741program specified there. 35742 35743To build @code{gdb} in a separate directory, run @file{configure} 35744with the @samp{--srcdir} option to specify where to find the source. 35745(You also need to specify a path to find @file{configure} 35746itself from your working directory. If the path to @file{configure} 35747would be the same as the argument to @samp{--srcdir}, you can leave out 35748the @samp{--srcdir} option; it is assumed.) 35749 35750For example, with version @value{GDBVN}, you can build @value{GDBN} in a 35751separate directory for a Sun 4 like this: 35752 35753@smallexample 35754@group 35755cd gdb-@value{GDBVN} 35756mkdir ../gdb-sun4 35757cd ../gdb-sun4 35758../gdb-@value{GDBVN}/configure 35759make 35760@end group 35761@end smallexample 35762 35763When @file{configure} builds a configuration using a remote source 35764directory, it creates a tree for the binaries with the same structure 35765(and using the same names) as the tree under the source directory. In 35766the example, you'd find the Sun 4 library @file{libiberty.a} in the 35767directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in 35768@file{gdb-sun4/gdb}. 35769 35770Make sure that your path to the @file{configure} script has just one 35771instance of @file{gdb} in it. If your path to @file{configure} looks 35772like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only 35773one subdirectory of @value{GDBN}, not the whole package. This leads to 35774build errors about missing include files such as @file{bfd/bfd.h}. 35775 35776One popular reason to build several @value{GDBN} configurations in separate 35777directories is to configure @value{GDBN} for cross-compiling (where 35778@value{GDBN} runs on one machine---the @dfn{host}---while debugging 35779programs that run on another machine---the @dfn{target}). 35780You specify a cross-debugging target by 35781giving the @samp{--target=@var{target}} option to @file{configure}. 35782 35783When you run @code{make} to build a program or library, you must run 35784it in a configured directory---whatever directory you were in when you 35785called @file{configure} (or one of its subdirectories). 35786 35787The @code{Makefile} that @file{configure} generates in each source 35788directory also runs recursively. If you type @code{make} in a source 35789directory such as @file{gdb-@value{GDBVN}} (or in a separate configured 35790directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you 35791will build all the required libraries, and then build GDB. 35792 35793When you have multiple hosts or targets configured in separate 35794directories, you can run @code{make} on them in parallel (for example, 35795if they are NFS-mounted on each of the hosts); they will not interfere 35796with each other. 35797 35798@node Config Names 35799@section Specifying Names for Hosts and Targets 35800 35801The specifications used for hosts and targets in the @file{configure} 35802script are based on a three-part naming scheme, but some short predefined 35803aliases are also supported. The full naming scheme encodes three pieces 35804of information in the following pattern: 35805 35806@smallexample 35807@var{architecture}-@var{vendor}-@var{os} 35808@end smallexample 35809 35810For example, you can use the alias @code{sun4} as a @var{host} argument, 35811or as the value for @var{target} in a @code{--target=@var{target}} 35812option. The equivalent full name is @samp{sparc-sun-sunos4}. 35813 35814The @file{configure} script accompanying @value{GDBN} does not provide 35815any query facility to list all supported host and target names or 35816aliases. @file{configure} calls the Bourne shell script 35817@code{config.sub} to map abbreviations to full names; you can read the 35818script, if you wish, or you can use it to test your guesses on 35819abbreviations---for example: 35820 35821@smallexample 35822% sh config.sub i386-linux 35823i386-pc-linux-gnu 35824% sh config.sub alpha-linux 35825alpha-unknown-linux-gnu 35826% sh config.sub hp9k700 35827hppa1.1-hp-hpux 35828% sh config.sub sun4 35829sparc-sun-sunos4.1.1 35830% sh config.sub sun3 35831m68k-sun-sunos4.1.1 35832% sh config.sub i986v 35833Invalid configuration `i986v': machine `i986v' not recognized 35834@end smallexample 35835 35836@noindent 35837@code{config.sub} is also distributed in the @value{GDBN} source 35838directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}). 35839 35840@node Configure Options 35841@section @file{configure} Options 35842 35843Here is a summary of the @file{configure} options and arguments that 35844are most often useful for building @value{GDBN}. @file{configure} 35845also has several other options not listed here. @inforef{Running 35846configure scripts,,autoconf.info}, for a full 35847explanation of @file{configure}. 35848 35849@smallexample 35850configure @r{[}--help@r{]} 35851 @r{[}--prefix=@var{dir}@r{]} 35852 @r{[}--exec-prefix=@var{dir}@r{]} 35853 @r{[}--srcdir=@var{dirname}@r{]} 35854 @r{[}--target=@var{target}@r{]} 35855@end smallexample 35856 35857@noindent 35858You may introduce options with a single @samp{-} rather than 35859@samp{--} if you prefer; but you may abbreviate option names if you use 35860@samp{--}. 35861 35862@table @code 35863@item --help 35864Display a quick summary of how to invoke @file{configure}. 35865 35866@item --prefix=@var{dir} 35867Configure the source to install programs and files under directory 35868@file{@var{dir}}. 35869 35870@item --exec-prefix=@var{dir} 35871Configure the source to install programs under directory 35872@file{@var{dir}}. 35873 35874@c avoid splitting the warning from the explanation: 35875@need 2000 35876@item --srcdir=@var{dirname} 35877Use this option to make configurations in directories separate from the 35878@value{GDBN} source directories. Among other things, you can use this to 35879build (or maintain) several configurations simultaneously, in separate 35880directories. @file{configure} writes configuration-specific files in 35881the current directory, but arranges for them to use the source in the 35882directory @var{dirname}. @file{configure} creates directories under 35883the working directory in parallel to the source directories below 35884@var{dirname}. 35885 35886@item --target=@var{target} 35887Configure @value{GDBN} for cross-debugging programs running on the specified 35888@var{target}. Without this option, @value{GDBN} is configured to debug 35889programs that run on the same machine (@var{host}) as @value{GDBN} itself. 35890 35891There is no convenient way to generate a list of all available 35892targets. Also see the @code{--enable-targets} option, below. 35893@end table 35894 35895There are many other options that are specific to @value{GDBN}. This 35896lists just the most common ones; there are some very specialized 35897options not described here. 35898 35899@table @code 35900@item --enable-targets=@r{[}@var{target}@r{]}@dots{} 35901@itemx --enable-targets=all 35902Configure @value{GDBN} for cross-debugging programs running on the 35903specified list of targets. The special value @samp{all} configures 35904@value{GDBN} for debugging programs running on any target it supports. 35905 35906@item --with-gdb-datadir=@var{path} 35907Set the @value{GDBN}-specific data directory. @value{GDBN} will look 35908here for certain supporting files or scripts. This defaults to the 35909@file{gdb} subdirectory of @samp{datadi} (which can be set using 35910@code{--datadir}). 35911 35912@item --with-relocated-sources=@var{dir} 35913Sets up the default source path substitution rule so that directory 35914names recorded in debug information will be automatically adjusted for 35915any directory under @var{dir}. @var{dir} should be a subdirectory of 35916@value{GDBN}'s configured prefix, the one mentioned in the 35917@code{--prefix} or @code{--exec-prefix} options to configure. This 35918option is useful if GDB is supposed to be moved to a different place 35919after it is built. 35920 35921@item --enable-64-bit-bfd 35922Enable 64-bit support in BFD on 32-bit hosts. 35923 35924@item --disable-gdbmi 35925Build @value{GDBN} without the GDB/MI machine interface 35926(@pxref{GDB/MI}). 35927 35928@item --enable-tui 35929Build @value{GDBN} with the text-mode full-screen user interface 35930(TUI). Requires a curses library (ncurses and cursesX are also 35931supported). 35932 35933@item --with-curses 35934Use the curses library instead of the termcap library, for text-mode 35935terminal operations. 35936 35937@item --with-libunwind-ia64 35938Use the libunwind library for unwinding function call stack on ia64 35939target platforms. See http://www.nongnu.org/libunwind/index.html for 35940details. 35941 35942@item --with-system-readline 35943Use the readline library installed on the host, rather than the 35944library supplied as part of @value{GDBN}. 35945 35946@item --with-system-zlib 35947Use the zlib library installed on the host, rather than the library 35948supplied as part of @value{GDBN}. 35949 35950@item --with-expat 35951Build @value{GDBN} with Expat, a library for XML parsing. (Done by 35952default if libexpat is installed and found at configure time.) This 35953library is used to read XML files supplied with @value{GDBN}. If it 35954is unavailable, some features, such as remote protocol memory maps, 35955target descriptions, and shared library lists, that are based on XML 35956files, will not be available in @value{GDBN}. If your host does not 35957have libexpat installed, you can get the latest version from 35958`http://expat.sourceforge.net'. 35959 35960@item --with-libiconv-prefix@r{[}=@var{dir}@r{]} 35961 35962Build @value{GDBN} with GNU libiconv, a character set encoding 35963conversion library. This is not done by default, as on GNU systems 35964the @code{iconv} that is built in to the C library is sufficient. If 35965your host does not have a working @code{iconv}, you can get the latest 35966version of GNU iconv from `https://www.gnu.org/software/libiconv/'. 35967 35968@value{GDBN}'s build system also supports building GNU libiconv as 35969part of the overall build. @xref{Requirements}. 35970 35971@item --with-lzma 35972Build @value{GDBN} with LZMA, a compression library. (Done by default 35973if liblzma is installed and found at configure time.) LZMA is used by 35974@value{GDBN}'s "mini debuginfo" feature, which is only useful on 35975platforms using the ELF object file format. If your host does not 35976have liblzma installed, you can get the latest version from 35977`https://tukaani.org/xz/'. 35978 35979@item --with-mpfr 35980Build @value{GDBN} with GNU MPFR, a library for multiple-precision 35981floating-point computation with correct rounding. (Done by default if 35982GNU MPFR is installed and found at configure time.) This library is 35983used to emulate target floating-point arithmetic during expression 35984evaluation when the target uses different floating-point formats than 35985the host. If GNU MPFR is not available, @value{GDBN} will fall back 35986to using host floating-point arithmetic. If your host does not have 35987GNU MPFR installed, you can get the latest version from 35988`http://www.mpfr.org'. 35989 35990@item --with-python@r{[}=@var{python}@r{]} 35991Build @value{GDBN} with Python scripting support. (Done by default if 35992libpython is present and found at configure time.) Python makes 35993@value{GDBN} scripting much more powerful than the restricted CLI 35994scripting language. If your host does not have Python installed, you 35995can find it on `http://www.python.org/download/'. The oldest version 35996of Python supported by GDB is 2.6. The optional argument @var{python} 35997is used to find the Python headers and libraries. It can be either 35998the name of a Python executable, or the name of the directory in which 35999Python is installed. 36000 36001@item --with-guile[=GUILE]' 36002Build @value{GDBN} with GNU Guile scripting support. (Done by default 36003if libguile is present and found at configure time.) If your host 36004does not have Guile installed, you can find it at 36005`https://www.gnu.org/software/guile/'. The optional argument GUILE 36006can be a version number, which will cause @code{configure} to try to 36007use that version of Guile; or the file name of a @code{pkg-config} 36008executable, which will be queried to find the information needed to 36009compile and link against Guile. 36010 36011@item --without-included-regex 36012Don't use the regex library included with @value{GDBN} (as part of the 36013libiberty library). This is the default on hosts with version 2 of 36014the GNU C library. 36015 36016@item --with-sysroot=@var{dir} 36017Use @var{dir} as the default system root directory for libraries whose 36018file names begin with @file{/lib}' or @file{/usr/lib'}. (The value of 36019@var{dir} can be modified at run time by using the @command{set 36020sysroot} command.) If @var{dir} is under the @value{GDBN} configured 36021prefix (set with @code{--prefix} or @code{--exec-prefix options}, the 36022default system root will be automatically adjusted if and when 36023@value{GDBN} is moved to a different location. 36024 36025@item --with-system-gdbinit=@var{file} 36026Configure @value{GDBN} to automatically load a system-wide init file. 36027@var{file} should be an absolute file name. If @var{file} is in a 36028directory under the configured prefix, and @value{GDBN} is moved to 36029another location after being built, the location of the system-wide 36030init file will be adjusted accordingly. 36031 36032@item --enable-build-warnings 36033When building the @value{GDBN} sources, ask the compiler to warn about 36034any code which looks even vaguely suspicious. It passes many 36035different warning flags, depending on the exact version of the 36036compiler you are using. 36037 36038@item --enable-werror 36039Treat compiler warnings as werrors. It adds the @code{-Werror} flag 36040to the compiler, which will fail the compilation if the compiler 36041outputs any warning messages. 36042 36043@item --enable-ubsan 36044Enable the GCC undefined behavior sanitizer. This is disabled by 36045default, but passing @code{--enable-ubsan=yes} or 36046@code{--enable-ubsan=auto} to @code{configure} will enable it. The 36047undefined behavior sanitizer checks for C@t{++} undefined behavior. 36048It has a performance cost, so if you are looking at @value{GDBN}'s 36049performance, you should disable it. The undefined behavior sanitizer 36050was first introduced in GCC 4.9. 36051@end table 36052 36053@node System-wide configuration 36054@section System-wide configuration and settings 36055@cindex system-wide init file 36056 36057@value{GDBN} can be configured to have a system-wide init file; 36058this file will be read and executed at startup (@pxref{Startup, , What 36059@value{GDBN} does during startup}). 36060 36061Here is the corresponding configure option: 36062 36063@table @code 36064@item --with-system-gdbinit=@var{file} 36065Specify that the default location of the system-wide init file is 36066@var{file}. 36067@end table 36068 36069If @value{GDBN} has been configured with the option @option{--prefix=$prefix}, 36070it may be subject to relocation. Two possible cases: 36071 36072@itemize @bullet 36073@item 36074If the default location of this init file contains @file{$prefix}, 36075it will be subject to relocation. Suppose that the configure options 36076are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit}; 36077if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system 36078init file is looked for as @file{$install/etc/gdbinit} instead of 36079@file{$prefix/etc/gdbinit}. 36080 36081@item 36082By contrast, if the default location does not contain the prefix, 36083it will not be relocated. E.g.@: if @value{GDBN} has been configured with 36084@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit}, 36085then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit}, 36086wherever @value{GDBN} is installed. 36087@end itemize 36088 36089If the configured location of the system-wide init file (as given by the 36090@option{--with-system-gdbinit} option at configure time) is in the 36091data-directory (as specified by @option{--with-gdb-datadir} at configure 36092time) or in one of its subdirectories, then @value{GDBN} will look for the 36093system-wide init file in the directory specified by the 36094@option{--data-directory} command-line option. 36095Note that the system-wide init file is only read once, during @value{GDBN} 36096initialization. If the data-directory is changed after @value{GDBN} has 36097started with the @code{set data-directory} command, the file will not be 36098reread. 36099 36100@menu 36101* System-wide Configuration Scripts:: Installed System-wide Configuration Scripts 36102@end menu 36103 36104@node System-wide Configuration Scripts 36105@subsection Installed System-wide Configuration Scripts 36106@cindex system-wide configuration scripts 36107 36108The @file{system-gdbinit} directory, located inside the data-directory 36109(as specified by @option{--with-gdb-datadir} at configure time) contains 36110a number of scripts which can be used as system-wide init files. To 36111automatically source those scripts at startup, @value{GDBN} should be 36112configured with @option{--with-system-gdbinit}. Otherwise, any user 36113should be able to source them by hand as needed. 36114 36115The following scripts are currently available: 36116@itemize @bullet 36117 36118@item @file{elinos.py} 36119@pindex elinos.py 36120@cindex ELinOS system-wide configuration script 36121This script is useful when debugging a program on an ELinOS target. 36122It takes advantage of the environment variables defined in a standard 36123ELinOS environment in order to determine the location of the system 36124shared libraries, and then sets the @samp{solib-absolute-prefix} 36125and @samp{solib-search-path} variables appropriately. 36126 36127@item @file{wrs-linux.py} 36128@pindex wrs-linux.py 36129@cindex Wind River Linux system-wide configuration script 36130This script is useful when debugging a program on a target running 36131Wind River Linux. It expects the @env{ENV_PREFIX} to be set to 36132the host-side sysroot used by the target system. 36133 36134@end itemize 36135 36136@node Maintenance Commands 36137@appendix Maintenance Commands 36138@cindex maintenance commands 36139@cindex internal commands 36140 36141In addition to commands intended for @value{GDBN} users, @value{GDBN} 36142includes a number of commands intended for @value{GDBN} developers, 36143that are not documented elsewhere in this manual. These commands are 36144provided here for reference. (For commands that turn on debugging 36145messages, see @ref{Debugging Output}.) 36146 36147@table @code 36148@kindex maint agent 36149@kindex maint agent-eval 36150@item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression} 36151@itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression} 36152Translate the given @var{expression} into remote agent bytecodes. 36153This command is useful for debugging the Agent Expression mechanism 36154(@pxref{Agent Expressions}). The @samp{agent} version produces an 36155expression useful for data collection, such as by tracepoints, while 36156@samp{maint agent-eval} produces an expression that evaluates directly 36157to a result. For instance, a collection expression for @code{globa + 36158globb} will include bytecodes to record four bytes of memory at each 36159of the addresses of @code{globa} and @code{globb}, while discarding 36160the result of the addition, while an evaluation expression will do the 36161addition and return the sum. 36162If @code{-at} is given, generate remote agent bytecode for @var{location}. 36163If not, generate remote agent bytecode for current frame PC address. 36164 36165@kindex maint agent-printf 36166@item maint agent-printf @var{format},@var{expr},... 36167Translate the given format string and list of argument expressions 36168into remote agent bytecodes and display them as a disassembled list. 36169This command is useful for debugging the agent version of dynamic 36170printf (@pxref{Dynamic Printf}). 36171 36172@kindex maint info breakpoints 36173@item @anchor{maint info breakpoints}maint info breakpoints 36174Using the same format as @samp{info breakpoints}, display both the 36175breakpoints you've set explicitly, and those @value{GDBN} is using for 36176internal purposes. Internal breakpoints are shown with negative 36177breakpoint numbers. The type column identifies what kind of breakpoint 36178is shown: 36179 36180@table @code 36181@item breakpoint 36182Normal, explicitly set breakpoint. 36183 36184@item watchpoint 36185Normal, explicitly set watchpoint. 36186 36187@item longjmp 36188Internal breakpoint, used to handle correctly stepping through 36189@code{longjmp} calls. 36190 36191@item longjmp resume 36192Internal breakpoint at the target of a @code{longjmp}. 36193 36194@item until 36195Temporary internal breakpoint used by the @value{GDBN} @code{until} command. 36196 36197@item finish 36198Temporary internal breakpoint used by the @value{GDBN} @code{finish} command. 36199 36200@item shlib events 36201Shared library events. 36202 36203@end table 36204 36205@kindex maint info btrace 36206@item maint info btrace 36207Pint information about raw branch tracing data. 36208 36209@kindex maint btrace packet-history 36210@item maint btrace packet-history 36211Print the raw branch trace packets that are used to compute the 36212execution history for the @samp{record btrace} command. Both the 36213information and the format in which it is printed depend on the btrace 36214recording format. 36215 36216@table @code 36217@item bts 36218For the BTS recording format, print a list of blocks of sequential 36219code. For each block, the following information is printed: 36220 36221@table @asis 36222@item Block number 36223Newer blocks have higher numbers. The oldest block has number zero. 36224@item Lowest @samp{PC} 36225@item Highest @samp{PC} 36226@end table 36227 36228@item pt 36229For the Intel Processor Trace recording format, print a list of 36230Intel Processor Trace packets. For each packet, the following 36231information is printed: 36232 36233@table @asis 36234@item Packet number 36235Newer packets have higher numbers. The oldest packet has number zero. 36236@item Trace offset 36237The packet's offset in the trace stream. 36238@item Packet opcode and payload 36239@end table 36240@end table 36241 36242@kindex maint btrace clear-packet-history 36243@item maint btrace clear-packet-history 36244Discards the cached packet history printed by the @samp{maint btrace 36245packet-history} command. The history will be computed again when 36246needed. 36247 36248@kindex maint btrace clear 36249@item maint btrace clear 36250Discard the branch trace data. The data will be fetched anew and the 36251branch trace will be recomputed when needed. 36252 36253This implicitly truncates the branch trace to a single branch trace 36254buffer. When updating branch trace incrementally, the branch trace 36255available to @value{GDBN} may be bigger than a single branch trace 36256buffer. 36257 36258@kindex maint set btrace pt skip-pad 36259@item maint set btrace pt skip-pad 36260@kindex maint show btrace pt skip-pad 36261@item maint show btrace pt skip-pad 36262Control whether @value{GDBN} will skip PAD packets when computing the 36263packet history. 36264 36265@kindex set displaced-stepping 36266@kindex show displaced-stepping 36267@cindex displaced stepping support 36268@cindex out-of-line single-stepping 36269@item set displaced-stepping 36270@itemx show displaced-stepping 36271Control whether or not @value{GDBN} will do @dfn{displaced stepping} 36272if the target supports it. Displaced stepping is a way to single-step 36273over breakpoints without removing them from the inferior, by executing 36274an out-of-line copy of the instruction that was originally at the 36275breakpoint location. It is also known as out-of-line single-stepping. 36276 36277@table @code 36278@item set displaced-stepping on 36279If the target architecture supports it, @value{GDBN} will use 36280displaced stepping to step over breakpoints. 36281 36282@item set displaced-stepping off 36283@value{GDBN} will not use displaced stepping to step over breakpoints, 36284even if such is supported by the target architecture. 36285 36286@cindex non-stop mode, and @samp{set displaced-stepping} 36287@item set displaced-stepping auto 36288This is the default mode. @value{GDBN} will use displaced stepping 36289only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target 36290architecture supports displaced stepping. 36291@end table 36292 36293@kindex maint check-psymtabs 36294@item maint check-psymtabs 36295Check the consistency of currently expanded psymtabs versus symtabs. 36296Use this to check, for example, whether a symbol is in one but not the other. 36297 36298@kindex maint check-symtabs 36299@item maint check-symtabs 36300Check the consistency of currently expanded symtabs. 36301 36302@kindex maint expand-symtabs 36303@item maint expand-symtabs [@var{regexp}] 36304Expand symbol tables. 36305If @var{regexp} is specified, only expand symbol tables for file 36306names matching @var{regexp}. 36307 36308@kindex maint set catch-demangler-crashes 36309@kindex maint show catch-demangler-crashes 36310@cindex demangler crashes 36311@item maint set catch-demangler-crashes [on|off] 36312@itemx maint show catch-demangler-crashes 36313Control whether @value{GDBN} should attempt to catch crashes in the 36314symbol name demangler. The default is to attempt to catch crashes. 36315If enabled, the first time a crash is caught, a core file is created, 36316the offending symbol is displayed and the user is presented with the 36317option to terminate the current session. 36318 36319@kindex maint cplus first_component 36320@item maint cplus first_component @var{name} 36321Print the first C@t{++} class/namespace component of @var{name}. 36322 36323@kindex maint cplus namespace 36324@item maint cplus namespace 36325Print the list of possible C@t{++} namespaces. 36326 36327@kindex maint deprecate 36328@kindex maint undeprecate 36329@cindex deprecated commands 36330@item maint deprecate @var{command} @r{[}@var{replacement}@r{]} 36331@itemx maint undeprecate @var{command} 36332Deprecate or undeprecate the named @var{command}. Deprecated commands 36333cause @value{GDBN} to issue a warning when you use them. The optional 36334argument @var{replacement} says which newer command should be used in 36335favor of the deprecated one; if it is given, @value{GDBN} will mention 36336the replacement as part of the warning. 36337 36338@kindex maint dump-me 36339@item maint dump-me 36340@cindex @code{SIGQUIT} signal, dump core of @value{GDBN} 36341Cause a fatal signal in the debugger and force it to dump its core. 36342This is supported only on systems which support aborting a program 36343with the @code{SIGQUIT} signal. 36344 36345@kindex maint internal-error 36346@kindex maint internal-warning 36347@kindex maint demangler-warning 36348@cindex demangler crashes 36349@item maint internal-error @r{[}@var{message-text}@r{]} 36350@itemx maint internal-warning @r{[}@var{message-text}@r{]} 36351@itemx maint demangler-warning @r{[}@var{message-text}@r{]} 36352 36353Cause @value{GDBN} to call the internal function @code{internal_error}, 36354@code{internal_warning} or @code{demangler_warning} and hence behave 36355as though an internal problem has been detected. In addition to 36356reporting the internal problem, these functions give the user the 36357opportunity to either quit @value{GDBN} or (for @code{internal_error} 36358and @code{internal_warning}) create a core file of the current 36359@value{GDBN} session. 36360 36361These commands take an optional parameter @var{message-text} that is 36362used as the text of the error or warning message. 36363 36364Here's an example of using @code{internal-error}: 36365 36366@smallexample 36367(@value{GDBP}) @kbd{maint internal-error testing, 1, 2} 36368@dots{}/maint.c:121: internal-error: testing, 1, 2 36369A problem internal to GDB has been detected. Further 36370debugging may prove unreliable. 36371Quit this debugging session? (y or n) @kbd{n} 36372Create a core file? (y or n) @kbd{n} 36373(@value{GDBP}) 36374@end smallexample 36375 36376@cindex @value{GDBN} internal error 36377@cindex internal errors, control of @value{GDBN} behavior 36378@cindex demangler crashes 36379 36380@kindex maint set internal-error 36381@kindex maint show internal-error 36382@kindex maint set internal-warning 36383@kindex maint show internal-warning 36384@kindex maint set demangler-warning 36385@kindex maint show demangler-warning 36386@item maint set internal-error @var{action} [ask|yes|no] 36387@itemx maint show internal-error @var{action} 36388@itemx maint set internal-warning @var{action} [ask|yes|no] 36389@itemx maint show internal-warning @var{action} 36390@itemx maint set demangler-warning @var{action} [ask|yes|no] 36391@itemx maint show demangler-warning @var{action} 36392When @value{GDBN} reports an internal problem (error or warning) it 36393gives the user the opportunity to both quit @value{GDBN} and create a 36394core file of the current @value{GDBN} session. These commands let you 36395override the default behaviour for each particular @var{action}, 36396described in the table below. 36397 36398@table @samp 36399@item quit 36400You can specify that @value{GDBN} should always (yes) or never (no) 36401quit. The default is to ask the user what to do. 36402 36403@item corefile 36404You can specify that @value{GDBN} should always (yes) or never (no) 36405create a core file. The default is to ask the user what to do. Note 36406that there is no @code{corefile} option for @code{demangler-warning}: 36407demangler warnings always create a core file and this cannot be 36408disabled. 36409@end table 36410 36411@kindex maint packet 36412@item maint packet @var{text} 36413If @value{GDBN} is talking to an inferior via the serial protocol, 36414then this command sends the string @var{text} to the inferior, and 36415displays the response packet. @value{GDBN} supplies the initial 36416@samp{$} character, the terminating @samp{#} character, and the 36417checksum. 36418 36419@kindex maint print architecture 36420@item maint print architecture @r{[}@var{file}@r{]} 36421Print the entire architecture configuration. The optional argument 36422@var{file} names the file where the output goes. 36423 36424@kindex maint print c-tdesc @r{[}@var{file}@r{]} 36425@item maint print c-tdesc 36426Print the target description (@pxref{Target Descriptions}) as 36427a C source file. By default, the target description is for the current 36428target, but if the optional argument @var{file} is provided, that file 36429is used to produce the description. The @var{file} should be an XML 36430document, of the form described in @ref{Target Description Format}. 36431The created source file is built into @value{GDBN} when @value{GDBN} is 36432built again. This command is used by developers after they add or 36433modify XML target descriptions. 36434 36435@kindex maint check xml-descriptions 36436@item maint check xml-descriptions @var{dir} 36437Check that the target descriptions dynamically created by @value{GDBN} 36438equal the descriptions created from XML files found in @var{dir}. 36439 36440@anchor{maint check libthread-db} 36441@kindex maint check libthread-db 36442@item maint check libthread-db 36443Run integrity checks on the current inferior's thread debugging 36444library. This exercises all @code{libthread_db} functionality used by 36445@value{GDBN} on GNU/Linux systems, and by extension also exercises the 36446@code{proc_service} functions provided by @value{GDBN} that 36447@code{libthread_db} uses. Note that parts of the test may be skipped 36448on some platforms when debugging core files. 36449 36450@kindex maint print dummy-frames 36451@item maint print dummy-frames 36452Prints the contents of @value{GDBN}'s internal dummy-frame stack. 36453 36454@smallexample 36455(@value{GDBP}) @kbd{b add} 36456@dots{} 36457(@value{GDBP}) @kbd{print add(2,3)} 36458Breakpoint 2, add (a=2, b=3) at @dots{} 3645958 return (a + b); 36460The program being debugged stopped while in a function called from GDB. 36461@dots{} 36462(@value{GDBP}) @kbd{maint print dummy-frames} 364630xa8206d8: id=@{stack=0xbfffe734,code=0xbfffe73f,!special@}, ptid=process 9353 36464(@value{GDBP}) 36465@end smallexample 36466 36467Takes an optional file parameter. 36468 36469@kindex maint print registers 36470@kindex maint print raw-registers 36471@kindex maint print cooked-registers 36472@kindex maint print register-groups 36473@kindex maint print remote-registers 36474@item maint print registers @r{[}@var{file}@r{]} 36475@itemx maint print raw-registers @r{[}@var{file}@r{]} 36476@itemx maint print cooked-registers @r{[}@var{file}@r{]} 36477@itemx maint print register-groups @r{[}@var{file}@r{]} 36478@itemx maint print remote-registers @r{[}@var{file}@r{]} 36479Print @value{GDBN}'s internal register data structures. 36480 36481The command @code{maint print raw-registers} includes the contents of 36482the raw register cache; the command @code{maint print 36483cooked-registers} includes the (cooked) value of all registers, 36484including registers which aren't available on the target nor visible 36485to user; the command @code{maint print register-groups} includes the 36486groups that each register is a member of; and the command @code{maint 36487print remote-registers} includes the remote target's register numbers 36488and offsets in the `G' packets. 36489 36490These commands take an optional parameter, a file name to which to 36491write the information. 36492 36493@kindex maint print reggroups 36494@item maint print reggroups @r{[}@var{file}@r{]} 36495Print @value{GDBN}'s internal register group data structures. The 36496optional argument @var{file} tells to what file to write the 36497information. 36498 36499The register groups info looks like this: 36500 36501@smallexample 36502(@value{GDBP}) @kbd{maint print reggroups} 36503 Group Type 36504 general user 36505 float user 36506 all user 36507 vector user 36508 system user 36509 save internal 36510 restore internal 36511@end smallexample 36512 36513@kindex flushregs 36514@item flushregs 36515This command forces @value{GDBN} to flush its internal register cache. 36516 36517@kindex maint print objfiles 36518@cindex info for known object files 36519@item maint print objfiles @r{[}@var{regexp}@r{]} 36520Print a dump of all known object files. 36521If @var{regexp} is specified, only print object files whose names 36522match @var{regexp}. For each object file, this command prints its name, 36523address in memory, and all of its psymtabs and symtabs. 36524 36525@kindex maint print user-registers 36526@cindex user registers 36527@item maint print user-registers 36528List all currently available @dfn{user registers}. User registers 36529typically provide alternate names for actual hardware registers. They 36530include the four ``standard'' registers @code{$fp}, @code{$pc}, 36531@code{$sp}, and @code{$ps}. @xref{standard registers}. User 36532registers can be used in expressions in the same way as the canonical 36533register names, but only the latter are listed by the @code{info 36534registers} and @code{maint print registers} commands. 36535 36536@kindex maint print section-scripts 36537@cindex info for known .debug_gdb_scripts-loaded scripts 36538@item maint print section-scripts [@var{regexp}] 36539Print a dump of scripts specified in the @code{.debug_gdb_section} section. 36540If @var{regexp} is specified, only print scripts loaded by object files 36541matching @var{regexp}. 36542For each script, this command prints its name as specified in the objfile, 36543and the full path if known. 36544@xref{dotdebug_gdb_scripts section}. 36545 36546@kindex maint print statistics 36547@cindex bcache statistics 36548@item maint print statistics 36549This command prints, for each object file in the program, various data 36550about that object file followed by the byte cache (@dfn{bcache}) 36551statistics for the object file. The objfile data includes the number 36552of minimal, partial, full, and stabs symbols, the number of types 36553defined by the objfile, the number of as yet unexpanded psym tables, 36554the number of line tables and string tables, and the amount of memory 36555used by the various tables. The bcache statistics include the counts, 36556sizes, and counts of duplicates of all and unique objects, max, 36557average, and median entry size, total memory used and its overhead and 36558savings, and various measures of the hash table size and chain 36559lengths. 36560 36561@kindex maint print target-stack 36562@cindex target stack description 36563@item maint print target-stack 36564A @dfn{target} is an interface between the debugger and a particular 36565kind of file or process. Targets can be stacked in @dfn{strata}, 36566so that more than one target can potentially respond to a request. 36567In particular, memory accesses will walk down the stack of targets 36568until they find a target that is interested in handling that particular 36569address. 36570 36571This command prints a short description of each layer that was pushed on 36572the @dfn{target stack}, starting from the top layer down to the bottom one. 36573 36574@kindex maint print type 36575@cindex type chain of a data type 36576@item maint print type @var{expr} 36577Print the type chain for a type specified by @var{expr}. The argument 36578can be either a type name or a symbol. If it is a symbol, the type of 36579that symbol is described. The type chain produced by this command is 36580a recursive definition of the data type as stored in @value{GDBN}'s 36581data structures, including its flags and contained types. 36582 36583@kindex maint selftest 36584@cindex self tests 36585@item maint selftest @r{[}@var{filter}@r{]} 36586Run any self tests that were compiled in to @value{GDBN}. This will 36587print a message showing how many tests were run, and how many failed. 36588If a @var{filter} is passed, only the tests with @var{filter} in their 36589name will by ran. 36590 36591@kindex "maint info selftests" 36592@cindex self tests 36593@item maint info selftests 36594List the selftests compiled in to @value{GDBN}. 36595 36596@kindex maint set dwarf always-disassemble 36597@kindex maint show dwarf always-disassemble 36598@item maint set dwarf always-disassemble 36599@item maint show dwarf always-disassemble 36600Control the behavior of @code{info address} when using DWARF debugging 36601information. 36602 36603The default is @code{off}, which means that @value{GDBN} should try to 36604describe a variable's location in an easily readable format. When 36605@code{on}, @value{GDBN} will instead display the DWARF location 36606expression in an assembly-like format. Note that some locations are 36607too complex for @value{GDBN} to describe simply; in this case you will 36608always see the disassembly form. 36609 36610Here is an example of the resulting disassembly: 36611 36612@smallexample 36613(gdb) info addr argc 36614Symbol "argc" is a complex DWARF expression: 36615 1: DW_OP_fbreg 0 36616@end smallexample 36617 36618For more information on these expressions, see 36619@uref{http://www.dwarfstd.org/, the DWARF standard}. 36620 36621@kindex maint set dwarf max-cache-age 36622@kindex maint show dwarf max-cache-age 36623@item maint set dwarf max-cache-age 36624@itemx maint show dwarf max-cache-age 36625Control the DWARF compilation unit cache. 36626 36627@cindex DWARF compilation units cache 36628In object files with inter-compilation-unit references, such as those 36629produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 36630reader needs to frequently refer to previously read compilation units. 36631This setting controls how long a compilation unit will remain in the 36632cache if it is not referenced. A higher limit means that cached 36633compilation units will be stored in memory longer, and more total 36634memory will be used. Setting it to zero disables caching, which will 36635slow down @value{GDBN} startup, but reduce memory consumption. 36636 36637@kindex maint set dwarf unwinders 36638@kindex maint show dwarf unwinders 36639@item maint set dwarf unwinders 36640@itemx maint show dwarf unwinders 36641Control use of the DWARF frame unwinders. 36642 36643@cindex DWARF frame unwinders 36644Many targets that support DWARF debugging use @value{GDBN}'s DWARF 36645frame unwinders to build the backtrace. Many of these targets will 36646also have a second mechanism for building the backtrace for use in 36647cases where DWARF information is not available, this second mechanism 36648is often an analysis of a function's prologue. 36649 36650In order to extend testing coverage of the second level stack 36651unwinding mechanisms it is helpful to be able to disable the DWARF 36652stack unwinders, this can be done with this switch. 36653 36654In normal use of @value{GDBN} disabling the DWARF unwinders is not 36655advisable, there are cases that are better handled through DWARF than 36656prologue analysis, and the debug experience is likely to be better 36657with the DWARF frame unwinders enabled. 36658 36659If DWARF frame unwinders are not supported for a particular target 36660architecture, then enabling this flag does not cause them to be used. 36661@kindex maint set profile 36662@kindex maint show profile 36663@cindex profiling GDB 36664@item maint set profile 36665@itemx maint show profile 36666Control profiling of @value{GDBN}. 36667 36668Profiling will be disabled until you use the @samp{maint set profile} 36669command to enable it. When you enable profiling, the system will begin 36670collecting timing and execution count data; when you disable profiling or 36671exit @value{GDBN}, the results will be written to a log file. Remember that 36672if you use profiling, @value{GDBN} will overwrite the profiling log file 36673(often called @file{gmon.out}). If you have a record of important profiling 36674data in a @file{gmon.out} file, be sure to move it to a safe location. 36675 36676Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be 36677compiled with the @samp{-pg} compiler option. 36678 36679@kindex maint set show-debug-regs 36680@kindex maint show show-debug-regs 36681@cindex hardware debug registers 36682@item maint set show-debug-regs 36683@itemx maint show show-debug-regs 36684Control whether to show variables that mirror the hardware debug 36685registers. Use @code{on} to enable, @code{off} to disable. If 36686enabled, the debug registers values are shown when @value{GDBN} inserts or 36687removes a hardware breakpoint or watchpoint, and when the inferior 36688triggers a hardware-assisted breakpoint or watchpoint. 36689 36690@kindex maint set show-all-tib 36691@kindex maint show show-all-tib 36692@item maint set show-all-tib 36693@itemx maint show show-all-tib 36694Control whether to show all non zero areas within a 1k block starting 36695at thread local base, when using the @samp{info w32 thread-information-block} 36696command. 36697 36698@kindex maint set target-async 36699@kindex maint show target-async 36700@item maint set target-async 36701@itemx maint show target-async 36702This controls whether @value{GDBN} targets operate in synchronous or 36703asynchronous mode (@pxref{Background Execution}). Normally the 36704default is asynchronous, if it is available; but this can be changed 36705to more easily debug problems occurring only in synchronous mode. 36706 36707@kindex maint set target-non-stop @var{mode} [on|off|auto] 36708@kindex maint show target-non-stop 36709@item maint set target-non-stop 36710@itemx maint show target-non-stop 36711 36712This controls whether @value{GDBN} targets always operate in non-stop 36713mode even if @code{set non-stop} is @code{off} (@pxref{Non-Stop 36714Mode}). The default is @code{auto}, meaning non-stop mode is enabled 36715if supported by the target. 36716 36717@table @code 36718@item maint set target-non-stop auto 36719This is the default mode. @value{GDBN} controls the target in 36720non-stop mode if the target supports it. 36721 36722@item maint set target-non-stop on 36723@value{GDBN} controls the target in non-stop mode even if the target 36724does not indicate support. 36725 36726@item maint set target-non-stop off 36727@value{GDBN} does not control the target in non-stop mode even if the 36728target supports it. 36729@end table 36730 36731@kindex maint set per-command 36732@kindex maint show per-command 36733@item maint set per-command 36734@itemx maint show per-command 36735@cindex resources used by commands 36736 36737@value{GDBN} can display the resources used by each command. 36738This is useful in debugging performance problems. 36739 36740@table @code 36741@item maint set per-command space [on|off] 36742@itemx maint show per-command space 36743Enable or disable the printing of the memory used by GDB for each command. 36744If enabled, @value{GDBN} will display how much memory each command 36745took, following the command's own output. 36746This can also be requested by invoking @value{GDBN} with the 36747@option{--statistics} command-line switch (@pxref{Mode Options}). 36748 36749@item maint set per-command time [on|off] 36750@itemx maint show per-command time 36751Enable or disable the printing of the execution time of @value{GDBN} 36752for each command. 36753If enabled, @value{GDBN} will display how much time it 36754took to execute each command, following the command's own output. 36755Both CPU time and wallclock time are printed. 36756Printing both is useful when trying to determine whether the cost is 36757CPU or, e.g., disk/network latency. 36758Note that the CPU time printed is for @value{GDBN} only, it does not include 36759the execution time of the inferior because there's no mechanism currently 36760to compute how much time was spent by @value{GDBN} and how much time was 36761spent by the program been debugged. 36762This can also be requested by invoking @value{GDBN} with the 36763@option{--statistics} command-line switch (@pxref{Mode Options}). 36764 36765@item maint set per-command symtab [on|off] 36766@itemx maint show per-command symtab 36767Enable or disable the printing of basic symbol table statistics 36768for each command. 36769If enabled, @value{GDBN} will display the following information: 36770 36771@enumerate a 36772@item 36773number of symbol tables 36774@item 36775number of primary symbol tables 36776@item 36777number of blocks in the blockvector 36778@end enumerate 36779@end table 36780 36781@kindex maint set check-libthread-db 36782@kindex maint show check-libthread-db 36783@item maint set check-libthread-db [on|off] 36784@itemx maint show check-libthread-db 36785Control whether @value{GDBN} should run integrity checks on inferior 36786specific thread debugging libraries as they are loaded. The default 36787is not to perform such checks. If any check fails @value{GDBN} will 36788unload the library and continue searching for a suitable candidate as 36789described in @ref{set libthread-db-search-path}. For more information 36790about the tests, see @ref{maint check libthread-db}. 36791 36792@kindex maint space 36793@cindex memory used by commands 36794@item maint space @var{value} 36795An alias for @code{maint set per-command space}. 36796A non-zero value enables it, zero disables it. 36797 36798@kindex maint time 36799@cindex time of command execution 36800@item maint time @var{value} 36801An alias for @code{maint set per-command time}. 36802A non-zero value enables it, zero disables it. 36803 36804@kindex maint translate-address 36805@item maint translate-address @r{[}@var{section}@r{]} @var{addr} 36806Find the symbol stored at the location specified by the address 36807@var{addr} and an optional section name @var{section}. If found, 36808@value{GDBN} prints the name of the closest symbol and an offset from 36809the symbol's location to the specified address. This is similar to 36810the @code{info address} command (@pxref{Symbols}), except that this 36811command also allows to find symbols in other sections. 36812 36813If section was not specified, the section in which the symbol was found 36814is also printed. For dynamically linked executables, the name of 36815executable or shared library containing the symbol is printed as well. 36816 36817@end table 36818 36819The following command is useful for non-interactive invocations of 36820@value{GDBN}, such as in the test suite. 36821 36822@table @code 36823@item set watchdog @var{nsec} 36824@kindex set watchdog 36825@cindex watchdog timer 36826@cindex timeout for commands 36827Set the maximum number of seconds @value{GDBN} will wait for the 36828target operation to finish. If this time expires, @value{GDBN} 36829reports and error and the command is aborted. 36830 36831@item show watchdog 36832Show the current setting of the target wait timeout. 36833@end table 36834 36835@node Remote Protocol 36836@appendix @value{GDBN} Remote Serial Protocol 36837 36838@menu 36839* Overview:: 36840* Packets:: 36841* Stop Reply Packets:: 36842* General Query Packets:: 36843* Architecture-Specific Protocol Details:: 36844* Tracepoint Packets:: 36845* Host I/O Packets:: 36846* Interrupts:: 36847* Notification Packets:: 36848* Remote Non-Stop:: 36849* Packet Acknowledgment:: 36850* Examples:: 36851* File-I/O Remote Protocol Extension:: 36852* Library List Format:: 36853* Library List Format for SVR4 Targets:: 36854* Memory Map Format:: 36855* Thread List Format:: 36856* Traceframe Info Format:: 36857* Branch Trace Format:: 36858* Branch Trace Configuration Format:: 36859@end menu 36860 36861@node Overview 36862@section Overview 36863 36864There may be occasions when you need to know something about the 36865protocol---for example, if there is only one serial port to your target 36866machine, you might want your program to do something special if it 36867recognizes a packet meant for @value{GDBN}. 36868 36869In the examples below, @samp{->} and @samp{<-} are used to indicate 36870transmitted and received data, respectively. 36871 36872@cindex protocol, @value{GDBN} remote serial 36873@cindex serial protocol, @value{GDBN} remote 36874@cindex remote serial protocol 36875All @value{GDBN} commands and responses (other than acknowledgments 36876and notifications, see @ref{Notification Packets}) are sent as a 36877@var{packet}. A @var{packet} is introduced with the character 36878@samp{$}, the actual @var{packet-data}, and the terminating character 36879@samp{#} followed by a two-digit @var{checksum}: 36880 36881@smallexample 36882@code{$}@var{packet-data}@code{#}@var{checksum} 36883@end smallexample 36884@noindent 36885 36886@cindex checksum, for @value{GDBN} remote 36887@noindent 36888The two-digit @var{checksum} is computed as the modulo 256 sum of all 36889characters between the leading @samp{$} and the trailing @samp{#} (an 36890eight bit unsigned checksum). 36891 36892Implementors should note that prior to @value{GDBN} 5.0 the protocol 36893specification also included an optional two-digit @var{sequence-id}: 36894 36895@smallexample 36896@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum} 36897@end smallexample 36898 36899@cindex sequence-id, for @value{GDBN} remote 36900@noindent 36901That @var{sequence-id} was appended to the acknowledgment. @value{GDBN} 36902has never output @var{sequence-id}s. Stubs that handle packets added 36903since @value{GDBN} 5.0 must not accept @var{sequence-id}. 36904 36905When either the host or the target machine receives a packet, the first 36906response expected is an acknowledgment: either @samp{+} (to indicate 36907the package was received correctly) or @samp{-} (to request 36908retransmission): 36909 36910@smallexample 36911-> @code{$}@var{packet-data}@code{#}@var{checksum} 36912<- @code{+} 36913@end smallexample 36914@noindent 36915 36916The @samp{+}/@samp{-} acknowledgments can be disabled 36917once a connection is established. 36918@xref{Packet Acknowledgment}, for details. 36919 36920The host (@value{GDBN}) sends @var{command}s, and the target (the 36921debugging stub incorporated in your program) sends a @var{response}. In 36922the case of step and continue @var{command}s, the response is only sent 36923when the operation has completed, and the target has again stopped all 36924threads in all attached processes. This is the default all-stop mode 36925behavior, but the remote protocol also supports @value{GDBN}'s non-stop 36926execution mode; see @ref{Remote Non-Stop}, for details. 36927 36928@var{packet-data} consists of a sequence of characters with the 36929exception of @samp{#} and @samp{$} (see @samp{X} packet for additional 36930exceptions). 36931 36932@cindex remote protocol, field separator 36933Fields within the packet should be separated using @samp{,} @samp{;} or 36934@samp{:}. Except where otherwise noted all numbers are represented in 36935@sc{hex} with leading zeros suppressed. 36936 36937Implementors should note that prior to @value{GDBN} 5.0, the character 36938@samp{:} could not appear as the third character in a packet (as it 36939would potentially conflict with the @var{sequence-id}). 36940 36941@cindex remote protocol, binary data 36942@anchor{Binary Data} 36943Binary data in most packets is encoded either as two hexadecimal 36944digits per byte of binary data. This allowed the traditional remote 36945protocol to work over connections which were only seven-bit clean. 36946Some packets designed more recently assume an eight-bit clean 36947connection, and use a more efficient encoding to send and receive 36948binary data. 36949 36950The binary data representation uses @code{7d} (@sc{ascii} @samp{@}}) 36951as an escape character. Any escaped byte is transmitted as the escape 36952character followed by the original character XORed with @code{0x20}. 36953For example, the byte @code{0x7d} would be transmitted as the two 36954bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}), 36955@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii} 36956@samp{@}}) must always be escaped. Responses sent by the stub 36957must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it 36958is not interpreted as the start of a run-length encoded sequence 36959(described next). 36960 36961Response @var{data} can be run-length encoded to save space. 36962Run-length encoding replaces runs of identical characters with one 36963instance of the repeated character, followed by a @samp{*} and a 36964repeat count. The repeat count is itself sent encoded, to avoid 36965binary characters in @var{data}: a value of @var{n} is sent as 36966@code{@var{n}+29}. For a repeat count greater or equal to 3, this 36967produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii} 36968code 32) for a repeat count of 3. (This is because run-length 36969encoding starts to win for counts 3 or more.) Thus, for example, 36970@samp{0* } is a run-length encoding of ``0000'': the space character 36971after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 = 369723}} more times. 36973 36974The printable characters @samp{#} and @samp{$} or with a numeric value 36975greater than 126 must not be used. Runs of six repeats (@samp{#}) or 36976seven repeats (@samp{$}) can be expanded using a repeat count of only 36977five (@samp{"}). For example, @samp{00000000} can be encoded as 36978@samp{0*"00}. 36979 36980The error response returned for some packets includes a two character 36981error number. That number is not well defined. 36982 36983@cindex empty response, for unsupported packets 36984For any @var{command} not supported by the stub, an empty response 36985(@samp{$#00}) should be returned. That way it is possible to extend the 36986protocol. A newer @value{GDBN} can tell if a packet is supported based 36987on that response. 36988 36989At a minimum, a stub is required to support the @samp{g} and @samp{G} 36990commands for register access, and the @samp{m} and @samp{M} commands 36991for memory access. Stubs that only control single-threaded targets 36992can implement run control with the @samp{c} (continue), and @samp{s} 36993(step) commands. Stubs that support multi-threading targets should 36994support the @samp{vCont} command. All other commands are optional. 36995 36996@node Packets 36997@section Packets 36998 36999The following table provides a complete list of all currently defined 37000@var{command}s and their corresponding response @var{data}. 37001@xref{File-I/O Remote Protocol Extension}, for details about the File 37002I/O extension of the remote protocol. 37003 37004Each packet's description has a template showing the packet's overall 37005syntax, followed by an explanation of the packet's meaning. We 37006include spaces in some of the templates for clarity; these are not 37007part of the packet's syntax. No @value{GDBN} packet uses spaces to 37008separate its components. For example, a template like @samp{foo 37009@var{bar} @var{baz}} describes a packet beginning with the three ASCII 37010bytes @samp{foo}, followed by a @var{bar}, followed directly by a 37011@var{baz}. @value{GDBN} does not transmit a space character between the 37012@samp{foo} and the @var{bar}, or between the @var{bar} and the 37013@var{baz}. 37014 37015@cindex @var{thread-id}, in remote protocol 37016@anchor{thread-id syntax} 37017Several packets and replies include a @var{thread-id} field to identify 37018a thread. Normally these are positive numbers with a target-specific 37019interpretation, formatted as big-endian hex strings. A @var{thread-id} 37020can also be a literal @samp{-1} to indicate all threads, or @samp{0} to 37021pick any thread. 37022 37023In addition, the remote protocol supports a multiprocess feature in 37024which the @var{thread-id} syntax is extended to optionally include both 37025process and thread ID fields, as @samp{p@var{pid}.@var{tid}}. 37026The @var{pid} (process) and @var{tid} (thread) components each have the 37027format described above: a positive number with target-specific 37028interpretation formatted as a big-endian hex string, literal @samp{-1} 37029to indicate all processes or threads (respectively), or @samp{0} to 37030indicate an arbitrary process or thread. Specifying just a process, as 37031@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an 37032error to specify all processes but a specific thread, such as 37033@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used 37034for those packets and replies explicitly documented to include a process 37035ID, rather than a @var{thread-id}. 37036 37037The multiprocess @var{thread-id} syntax extensions are only used if both 37038@value{GDBN} and the stub report support for the @samp{multiprocess} 37039feature using @samp{qSupported}. @xref{multiprocess extensions}, for 37040more information. 37041 37042Note that all packet forms beginning with an upper- or lower-case 37043letter, other than those described here, are reserved for future use. 37044 37045Here are the packet descriptions. 37046 37047@table @samp 37048 37049@item ! 37050@cindex @samp{!} packet 37051@anchor{extended mode} 37052Enable extended mode. In extended mode, the remote server is made 37053persistent. The @samp{R} packet is used to restart the program being 37054debugged. 37055 37056Reply: 37057@table @samp 37058@item OK 37059The remote target both supports and has enabled extended mode. 37060@end table 37061 37062@item ? 37063@cindex @samp{?} packet 37064@anchor{? packet} 37065Indicate the reason the target halted. The reply is the same as for 37066step and continue. This packet has a special interpretation when the 37067target is in non-stop mode; see @ref{Remote Non-Stop}. 37068 37069Reply: 37070@xref{Stop Reply Packets}, for the reply specifications. 37071 37072@item A @var{arglen},@var{argnum},@var{arg},@dots{} 37073@cindex @samp{A} packet 37074Initialized @code{argv[]} array passed into program. @var{arglen} 37075specifies the number of bytes in the hex encoded byte stream 37076@var{arg}. See @code{gdbserver} for more details. 37077 37078Reply: 37079@table @samp 37080@item OK 37081The arguments were set. 37082@item E @var{NN} 37083An error occurred. 37084@end table 37085 37086@item b @var{baud} 37087@cindex @samp{b} packet 37088(Don't use this packet; its behavior is not well-defined.) 37089Change the serial line speed to @var{baud}. 37090 37091JTC: @emph{When does the transport layer state change? When it's 37092received, or after the ACK is transmitted. In either case, there are 37093problems if the command or the acknowledgment packet is dropped.} 37094 37095Stan: @emph{If people really wanted to add something like this, and get 37096it working for the first time, they ought to modify ser-unix.c to send 37097some kind of out-of-band message to a specially-setup stub and have the 37098switch happen "in between" packets, so that from remote protocol's point 37099of view, nothing actually happened.} 37100 37101@item B @var{addr},@var{mode} 37102@cindex @samp{B} packet 37103Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a 37104breakpoint at @var{addr}. 37105 37106Don't use this packet. Use the @samp{Z} and @samp{z} packets instead 37107(@pxref{insert breakpoint or watchpoint packet}). 37108 37109@cindex @samp{bc} packet 37110@anchor{bc} 37111@item bc 37112Backward continue. Execute the target system in reverse. No parameter. 37113@xref{Reverse Execution}, for more information. 37114 37115Reply: 37116@xref{Stop Reply Packets}, for the reply specifications. 37117 37118@cindex @samp{bs} packet 37119@anchor{bs} 37120@item bs 37121Backward single step. Execute one instruction in reverse. No parameter. 37122@xref{Reverse Execution}, for more information. 37123 37124Reply: 37125@xref{Stop Reply Packets}, for the reply specifications. 37126 37127@item c @r{[}@var{addr}@r{]} 37128@cindex @samp{c} packet 37129Continue at @var{addr}, which is the address to resume. If @var{addr} 37130is omitted, resume at current address. 37131 37132This packet is deprecated for multi-threading support. @xref{vCont 37133packet}. 37134 37135Reply: 37136@xref{Stop Reply Packets}, for the reply specifications. 37137 37138@item C @var{sig}@r{[};@var{addr}@r{]} 37139@cindex @samp{C} packet 37140Continue with signal @var{sig} (hex signal number). If 37141@samp{;@var{addr}} is omitted, resume at same address. 37142 37143This packet is deprecated for multi-threading support. @xref{vCont 37144packet}. 37145 37146Reply: 37147@xref{Stop Reply Packets}, for the reply specifications. 37148 37149@item d 37150@cindex @samp{d} packet 37151Toggle debug flag. 37152 37153Don't use this packet; instead, define a general set packet 37154(@pxref{General Query Packets}). 37155 37156@item D 37157@itemx D;@var{pid} 37158@cindex @samp{D} packet 37159The first form of the packet is used to detach @value{GDBN} from the 37160remote system. It is sent to the remote target 37161before @value{GDBN} disconnects via the @code{detach} command. 37162 37163The second form, including a process ID, is used when multiprocess 37164protocol extensions are enabled (@pxref{multiprocess extensions}), to 37165detach only a specific process. The @var{pid} is specified as a 37166big-endian hex string. 37167 37168Reply: 37169@table @samp 37170@item OK 37171for success 37172@item E @var{NN} 37173for an error 37174@end table 37175 37176@item F @var{RC},@var{EE},@var{CF};@var{XX} 37177@cindex @samp{F} packet 37178A reply from @value{GDBN} to an @samp{F} packet sent by the target. 37179This is part of the File-I/O protocol extension. @xref{File-I/O 37180Remote Protocol Extension}, for the specification. 37181 37182@item g 37183@anchor{read registers packet} 37184@cindex @samp{g} packet 37185Read general registers. 37186 37187Reply: 37188@table @samp 37189@item @var{XX@dots{}} 37190Each byte of register data is described by two hex digits. The bytes 37191with the register are transmitted in target byte order. The size of 37192each register and their position within the @samp{g} packet are 37193determined by the @value{GDBN} internal gdbarch functions 37194@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. 37195 37196When reading registers from a trace frame (@pxref{Analyze Collected 37197Data,,Using the Collected Data}), the stub may also return a string of 37198literal @samp{x}'s in place of the register data digits, to indicate 37199that the corresponding register has not been collected, thus its value 37200is unavailable. For example, for an architecture with 4 registers of 372014 bytes each, the following reply indicates to @value{GDBN} that 37202registers 0 and 2 have not been collected, while registers 1 and 3 37203have been collected, and both have zero value: 37204 37205@smallexample 37206-> @code{g} 37207<- @code{xxxxxxxx00000000xxxxxxxx00000000} 37208@end smallexample 37209 37210@item E @var{NN} 37211for an error. 37212@end table 37213 37214@item G @var{XX@dots{}} 37215@cindex @samp{G} packet 37216Write general registers. @xref{read registers packet}, for a 37217description of the @var{XX@dots{}} data. 37218 37219Reply: 37220@table @samp 37221@item OK 37222for success 37223@item E @var{NN} 37224for an error 37225@end table 37226 37227@item H @var{op} @var{thread-id} 37228@cindex @samp{H} packet 37229Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g}, 37230@samp{G}, et.al.). Depending on the operation to be performed, @var{op} 37231should be @samp{c} for step and continue operations (note that this 37232is deprecated, supporting the @samp{vCont} command is a better 37233option), and @samp{g} for other operations. The thread designator 37234@var{thread-id} has the format and interpretation described in 37235@ref{thread-id syntax}. 37236 37237Reply: 37238@table @samp 37239@item OK 37240for success 37241@item E @var{NN} 37242for an error 37243@end table 37244 37245@c FIXME: JTC: 37246@c 'H': How restrictive (or permissive) is the thread model. If a 37247@c thread is selected and stopped, are other threads allowed 37248@c to continue to execute? As I mentioned above, I think the 37249@c semantics of each command when a thread is selected must be 37250@c described. For example: 37251@c 37252@c 'g': If the stub supports threads and a specific thread is 37253@c selected, returns the register block from that thread; 37254@c otherwise returns current registers. 37255@c 37256@c 'G' If the stub supports threads and a specific thread is 37257@c selected, sets the registers of the register block of 37258@c that thread; otherwise sets current registers. 37259 37260@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]} 37261@anchor{cycle step packet} 37262@cindex @samp{i} packet 37263Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is 37264present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle 37265step starting at that address. 37266 37267@item I 37268@cindex @samp{I} packet 37269Signal, then cycle step. @xref{step with signal packet}. @xref{cycle 37270step packet}. 37271 37272@item k 37273@cindex @samp{k} packet 37274Kill request. 37275 37276The exact effect of this packet is not specified. 37277 37278For a bare-metal target, it may power cycle or reset the target 37279system. For that reason, the @samp{k} packet has no reply. 37280 37281For a single-process target, it may kill that process if possible. 37282 37283A multiple-process target may choose to kill just one process, or all 37284that are under @value{GDBN}'s control. For more precise control, use 37285the vKill packet (@pxref{vKill packet}). 37286 37287If the target system immediately closes the connection in response to 37288@samp{k}, @value{GDBN} does not consider the lack of packet 37289acknowledgment to be an error, and assumes the kill was successful. 37290 37291If connected using @kbd{target extended-remote}, and the target does 37292not close the connection in response to a kill request, @value{GDBN} 37293probes the target state as if a new connection was opened 37294(@pxref{? packet}). 37295 37296@item m @var{addr},@var{length} 37297@cindex @samp{m} packet 37298Read @var{length} addressable memory units starting at address @var{addr} 37299(@pxref{addressable memory unit}). Note that @var{addr} may not be aligned to 37300any particular boundary. 37301 37302The stub need not use any particular size or alignment when gathering 37303data from memory for the response; even if @var{addr} is word-aligned 37304and @var{length} is a multiple of the word size, the stub is free to 37305use byte accesses, or not. For this reason, this packet may not be 37306suitable for accessing memory-mapped I/O devices. 37307@cindex alignment of remote memory accesses 37308@cindex size of remote memory accesses 37309@cindex memory, alignment and size of remote accesses 37310 37311Reply: 37312@table @samp 37313@item @var{XX@dots{}} 37314Memory contents; each byte is transmitted as a two-digit hexadecimal number. 37315The reply may contain fewer addressable memory units than requested if the 37316server was able to read only part of the region of memory. 37317@item E @var{NN} 37318@var{NN} is errno 37319@end table 37320 37321@item M @var{addr},@var{length}:@var{XX@dots{}} 37322@cindex @samp{M} packet 37323Write @var{length} addressable memory units starting at address @var{addr} 37324(@pxref{addressable memory unit}). The data is given by @var{XX@dots{}}; each 37325byte is transmitted as a two-digit hexadecimal number. 37326 37327Reply: 37328@table @samp 37329@item OK 37330for success 37331@item E @var{NN} 37332for an error (this includes the case where only part of the data was 37333written). 37334@end table 37335 37336@item p @var{n} 37337@cindex @samp{p} packet 37338Read the value of register @var{n}; @var{n} is in hex. 37339@xref{read registers packet}, for a description of how the returned 37340register value is encoded. 37341 37342Reply: 37343@table @samp 37344@item @var{XX@dots{}} 37345the register's value 37346@item E @var{NN} 37347for an error 37348@item @w{} 37349Indicating an unrecognized @var{query}. 37350@end table 37351 37352@item P @var{n@dots{}}=@var{r@dots{}} 37353@anchor{write register packet} 37354@cindex @samp{P} packet 37355Write register @var{n@dots{}} with value @var{r@dots{}}. The register 37356number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex 37357digits for each byte in the register (target byte order). 37358 37359Reply: 37360@table @samp 37361@item OK 37362for success 37363@item E @var{NN} 37364for an error 37365@end table 37366 37367@item q @var{name} @var{params}@dots{} 37368@itemx Q @var{name} @var{params}@dots{} 37369@cindex @samp{q} packet 37370@cindex @samp{Q} packet 37371General query (@samp{q}) and set (@samp{Q}). These packets are 37372described fully in @ref{General Query Packets}. 37373 37374@item r 37375@cindex @samp{r} packet 37376Reset the entire system. 37377 37378Don't use this packet; use the @samp{R} packet instead. 37379 37380@item R @var{XX} 37381@cindex @samp{R} packet 37382Restart the program being debugged. The @var{XX}, while needed, is ignored. 37383This packet is only available in extended mode (@pxref{extended mode}). 37384 37385The @samp{R} packet has no reply. 37386 37387@item s @r{[}@var{addr}@r{]} 37388@cindex @samp{s} packet 37389Single step, resuming at @var{addr}. If 37390@var{addr} is omitted, resume at same address. 37391 37392This packet is deprecated for multi-threading support. @xref{vCont 37393packet}. 37394 37395Reply: 37396@xref{Stop Reply Packets}, for the reply specifications. 37397 37398@item S @var{sig}@r{[};@var{addr}@r{]} 37399@anchor{step with signal packet} 37400@cindex @samp{S} packet 37401Step with signal. This is analogous to the @samp{C} packet, but 37402requests a single-step, rather than a normal resumption of execution. 37403 37404This packet is deprecated for multi-threading support. @xref{vCont 37405packet}. 37406 37407Reply: 37408@xref{Stop Reply Packets}, for the reply specifications. 37409 37410@item t @var{addr}:@var{PP},@var{MM} 37411@cindex @samp{t} packet 37412Search backwards starting at address @var{addr} for a match with pattern 37413@var{PP} and mask @var{MM}, both of which are are 4 byte long. 37414There must be at least 3 digits in @var{addr}. 37415 37416@item T @var{thread-id} 37417@cindex @samp{T} packet 37418Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}. 37419 37420Reply: 37421@table @samp 37422@item OK 37423thread is still alive 37424@item E @var{NN} 37425thread is dead 37426@end table 37427 37428@item v 37429Packets starting with @samp{v} are identified by a multi-letter name, 37430up to the first @samp{;} or @samp{?} (or the end of the packet). 37431 37432@item vAttach;@var{pid} 37433@cindex @samp{vAttach} packet 37434Attach to a new process with the specified process ID @var{pid}. 37435The process ID is a 37436hexadecimal integer identifying the process. In all-stop mode, all 37437threads in the attached process are stopped; in non-stop mode, it may be 37438attached without being stopped if that is supported by the target. 37439 37440@c In non-stop mode, on a successful vAttach, the stub should set the 37441@c current thread to a thread of the newly-attached process. After 37442@c attaching, GDB queries for the attached process's thread ID with qC. 37443@c Also note that, from a user perspective, whether or not the 37444@c target is stopped on attach in non-stop mode depends on whether you 37445@c use the foreground or background version of the attach command, not 37446@c on what vAttach does; GDB does the right thing with respect to either 37447@c stopping or restarting threads. 37448 37449This packet is only available in extended mode (@pxref{extended mode}). 37450 37451Reply: 37452@table @samp 37453@item E @var{nn} 37454for an error 37455@item @r{Any stop packet} 37456for success in all-stop mode (@pxref{Stop Reply Packets}) 37457@item OK 37458for success in non-stop mode (@pxref{Remote Non-Stop}) 37459@end table 37460 37461@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{} 37462@cindex @samp{vCont} packet 37463@anchor{vCont packet} 37464Resume the inferior, specifying different actions for each thread. 37465 37466For each inferior thread, the leftmost action with a matching 37467@var{thread-id} is applied. Threads that don't match any action 37468remain in their current state. Thread IDs are specified using the 37469syntax described in @ref{thread-id syntax}. If multiprocess 37470extensions (@pxref{multiprocess extensions}) are supported, actions 37471can be specified to match all threads in a process by using the 37472@samp{p@var{pid}.-1} form of the @var{thread-id}. An action with no 37473@var{thread-id} matches all threads. Specifying no actions is an 37474error. 37475 37476Currently supported actions are: 37477 37478@table @samp 37479@item c 37480Continue. 37481@item C @var{sig} 37482Continue with signal @var{sig}. The signal @var{sig} should be two hex digits. 37483@item s 37484Step. 37485@item S @var{sig} 37486Step with signal @var{sig}. The signal @var{sig} should be two hex digits. 37487@item t 37488Stop. 37489@item r @var{start},@var{end} 37490Step once, and then keep stepping as long as the thread stops at 37491addresses between @var{start} (inclusive) and @var{end} (exclusive). 37492The remote stub reports a stop reply when either the thread goes out 37493of the range or is stopped due to an unrelated reason, such as hitting 37494a breakpoint. @xref{range stepping}. 37495 37496If the range is empty (@var{start} == @var{end}), then the action 37497becomes equivalent to the @samp{s} action. In other words, 37498single-step once, and report the stop (even if the stepped instruction 37499jumps to @var{start}). 37500 37501(A stop reply may be sent at any point even if the PC is still within 37502the stepping range; for example, it is valid to implement this packet 37503in a degenerate way as a single instruction step operation.) 37504 37505@end table 37506 37507The optional argument @var{addr} normally associated with the 37508@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is 37509not supported in @samp{vCont}. 37510 37511The @samp{t} action is only relevant in non-stop mode 37512(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise. 37513A stop reply should be generated for any affected thread not already stopped. 37514When a thread is stopped by means of a @samp{t} action, 37515the corresponding stop reply should indicate that the thread has stopped with 37516signal @samp{0}, regardless of whether the target uses some other signal 37517as an implementation detail. 37518 37519The server must ignore @samp{c}, @samp{C}, @samp{s}, @samp{S}, and 37520@samp{r} actions for threads that are already running. Conversely, 37521the server must ignore @samp{t} actions for threads that are already 37522stopped. 37523 37524@emph{Note:} In non-stop mode, a thread is considered running until 37525@value{GDBN} acknowleges an asynchronous stop notification for it with 37526the @samp{vStopped} packet (@pxref{Remote Non-Stop}). 37527 37528The stub must support @samp{vCont} if it reports support for 37529multiprocess extensions (@pxref{multiprocess extensions}). 37530 37531Reply: 37532@xref{Stop Reply Packets}, for the reply specifications. 37533 37534@item vCont? 37535@cindex @samp{vCont?} packet 37536Request a list of actions supported by the @samp{vCont} packet. 37537 37538Reply: 37539@table @samp 37540@item vCont@r{[};@var{action}@dots{}@r{]} 37541The @samp{vCont} packet is supported. Each @var{action} is a supported 37542command in the @samp{vCont} packet. 37543@item @w{} 37544The @samp{vCont} packet is not supported. 37545@end table 37546 37547@anchor{vCtrlC packet} 37548@item vCtrlC 37549@cindex @samp{vCtrlC} packet 37550Interrupt remote target as if a control-C was pressed on the remote 37551terminal. This is the equivalent to reacting to the @code{^C} 37552(@samp{\003}, the control-C character) character in all-stop mode 37553while the target is running, except this works in non-stop mode. 37554@xref{interrupting remote targets}, for more info on the all-stop 37555variant. 37556 37557Reply: 37558@table @samp 37559@item E @var{nn} 37560for an error 37561@item OK 37562for success 37563@end table 37564 37565@item vFile:@var{operation}:@var{parameter}@dots{} 37566@cindex @samp{vFile} packet 37567Perform a file operation on the target system. For details, 37568see @ref{Host I/O Packets}. 37569 37570@item vFlashErase:@var{addr},@var{length} 37571@cindex @samp{vFlashErase} packet 37572Direct the stub to erase @var{length} bytes of flash starting at 37573@var{addr}. The region may enclose any number of flash blocks, but 37574its start and end must fall on block boundaries, as indicated by the 37575flash block size appearing in the memory map (@pxref{Memory Map 37576Format}). @value{GDBN} groups flash memory programming operations 37577together, and sends a @samp{vFlashDone} request after each group; the 37578stub is allowed to delay erase operation until the @samp{vFlashDone} 37579packet is received. 37580 37581Reply: 37582@table @samp 37583@item OK 37584for success 37585@item E @var{NN} 37586for an error 37587@end table 37588 37589@item vFlashWrite:@var{addr}:@var{XX@dots{}} 37590@cindex @samp{vFlashWrite} packet 37591Direct the stub to write data to flash address @var{addr}. The data 37592is passed in binary form using the same encoding as for the @samp{X} 37593packet (@pxref{Binary Data}). The memory ranges specified by 37594@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must 37595not overlap, and must appear in order of increasing addresses 37596(although @samp{vFlashErase} packets for higher addresses may already 37597have been received; the ordering is guaranteed only between 37598@samp{vFlashWrite} packets). If a packet writes to an address that was 37599neither erased by a preceding @samp{vFlashErase} packet nor by some other 37600target-specific method, the results are unpredictable. 37601 37602 37603Reply: 37604@table @samp 37605@item OK 37606for success 37607@item E.memtype 37608for vFlashWrite addressing non-flash memory 37609@item E @var{NN} 37610for an error 37611@end table 37612 37613@item vFlashDone 37614@cindex @samp{vFlashDone} packet 37615Indicate to the stub that flash programming operation is finished. 37616The stub is permitted to delay or batch the effects of a group of 37617@samp{vFlashErase} and @samp{vFlashWrite} packets until a 37618@samp{vFlashDone} packet is received. The contents of the affected 37619regions of flash memory are unpredictable until the @samp{vFlashDone} 37620request is completed. 37621 37622@item vKill;@var{pid} 37623@cindex @samp{vKill} packet 37624@anchor{vKill packet} 37625Kill the process with the specified process ID @var{pid}, which is a 37626hexadecimal integer identifying the process. This packet is used in 37627preference to @samp{k} when multiprocess protocol extensions are 37628supported; see @ref{multiprocess extensions}. 37629 37630Reply: 37631@table @samp 37632@item E @var{nn} 37633for an error 37634@item OK 37635for success 37636@end table 37637 37638@item vMustReplyEmpty 37639@cindex @samp{vMustReplyEmpty} packet 37640The correct reply to an unknown @samp{v} packet is to return the empty 37641string, however, some older versions of @command{gdbserver} would 37642incorrectly return @samp{OK} for unknown @samp{v} packets. 37643 37644The @samp{vMustReplyEmpty} is used as a feature test to check how 37645@command{gdbserver} handles unknown packets, it is important that this 37646packet be handled in the same way as other unknown @samp{v} packets. 37647If this packet is handled differently to other unknown @samp{v} 37648packets then it is possile that @value{GDBN} may run into problems in 37649other areas, specifically around use of @samp{vFile:setfs:}. 37650 37651@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{} 37652@cindex @samp{vRun} packet 37653Run the program @var{filename}, passing it each @var{argument} on its 37654command line. The file and arguments are hex-encoded strings. If 37655@var{filename} is an empty string, the stub may use a default program 37656(e.g.@: the last program run). The program is created in the stopped 37657state. 37658 37659@c FIXME: What about non-stop mode? 37660 37661This packet is only available in extended mode (@pxref{extended mode}). 37662 37663Reply: 37664@table @samp 37665@item E @var{nn} 37666for an error 37667@item @r{Any stop packet} 37668for success (@pxref{Stop Reply Packets}) 37669@end table 37670 37671@item vStopped 37672@cindex @samp{vStopped} packet 37673@xref{Notification Packets}. 37674 37675@item X @var{addr},@var{length}:@var{XX@dots{}} 37676@anchor{X packet} 37677@cindex @samp{X} packet 37678Write data to memory, where the data is transmitted in binary. 37679Memory is specified by its address @var{addr} and number of addressable memory 37680units @var{length} (@pxref{addressable memory unit}); 37681@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}). 37682 37683Reply: 37684@table @samp 37685@item OK 37686for success 37687@item E @var{NN} 37688for an error 37689@end table 37690 37691@item z @var{type},@var{addr},@var{kind} 37692@itemx Z @var{type},@var{addr},@var{kind} 37693@anchor{insert breakpoint or watchpoint packet} 37694@cindex @samp{z} packet 37695@cindex @samp{Z} packets 37696Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or 37697watchpoint starting at address @var{address} of kind @var{kind}. 37698 37699Each breakpoint and watchpoint packet @var{type} is documented 37700separately. 37701 37702@emph{Implementation notes: A remote target shall return an empty string 37703for an unrecognized breakpoint or watchpoint packet @var{type}. A 37704remote target shall support either both or neither of a given 37705@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To 37706avoid potential problems with duplicate packets, the operations should 37707be implemented in an idempotent way.} 37708 37709@item z0,@var{addr},@var{kind} 37710@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]} 37711@cindex @samp{z0} packet 37712@cindex @samp{Z0} packet 37713Insert (@samp{Z0}) or remove (@samp{z0}) a software breakpoint at address 37714@var{addr} of type @var{kind}. 37715 37716A software breakpoint is implemented by replacing the instruction at 37717@var{addr} with a software breakpoint or trap instruction. The 37718@var{kind} is target-specific and typically indicates the size of the 37719breakpoint in bytes that should be inserted. E.g., the @sc{arm} and 37720@sc{mips} can insert either a 2 or 4 byte breakpoint. Some 37721architectures have additional meanings for @var{kind} 37722(@pxref{Architecture-Specific Protocol Details}); if no 37723architecture-specific value is being used, it should be @samp{0}. 37724@var{kind} is hex-encoded. @var{cond_list} is an optional list of 37725conditional expressions in bytecode form that should be evaluated on 37726the target's side. These are the conditions that should be taken into 37727consideration when deciding if the breakpoint trigger should be 37728reported back to @value{GDBN}. 37729 37730See also the @samp{swbreak} stop reason (@pxref{swbreak stop reason}) 37731for how to best report a software breakpoint event to @value{GDBN}. 37732 37733The @var{cond_list} parameter is comprised of a series of expressions, 37734concatenated without separators. Each expression has the following form: 37735 37736@table @samp 37737 37738@item X @var{len},@var{expr} 37739@var{len} is the length of the bytecode expression and @var{expr} is the 37740actual conditional expression in bytecode form. 37741 37742@end table 37743 37744The optional @var{cmd_list} parameter introduces commands that may be 37745run on the target, rather than being reported back to @value{GDBN}. 37746The parameter starts with a numeric flag @var{persist}; if the flag is 37747nonzero, then the breakpoint may remain active and the commands 37748continue to be run even when @value{GDBN} disconnects from the target. 37749Following this flag is a series of expressions concatenated with no 37750separators. Each expression has the following form: 37751 37752@table @samp 37753 37754@item X @var{len},@var{expr} 37755@var{len} is the length of the bytecode expression and @var{expr} is the 37756actual commands expression in bytecode form. 37757 37758@end table 37759 37760@emph{Implementation note: It is possible for a target to copy or move 37761code that contains software breakpoints (e.g., when implementing 37762overlays). The behavior of this packet, in the presence of such a 37763target, is not defined.} 37764 37765Reply: 37766@table @samp 37767@item OK 37768success 37769@item @w{} 37770not supported 37771@item E @var{NN} 37772for an error 37773@end table 37774 37775@item z1,@var{addr},@var{kind} 37776@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]} 37777@cindex @samp{z1} packet 37778@cindex @samp{Z1} packet 37779Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at 37780address @var{addr}. 37781 37782A hardware breakpoint is implemented using a mechanism that is not 37783dependent on being able to modify the target's memory. The 37784@var{kind}, @var{cond_list}, and @var{cmd_list} arguments have the 37785same meaning as in @samp{Z0} packets. 37786 37787@emph{Implementation note: A hardware breakpoint is not affected by code 37788movement.} 37789 37790Reply: 37791@table @samp 37792@item OK 37793success 37794@item @w{} 37795not supported 37796@item E @var{NN} 37797for an error 37798@end table 37799 37800@item z2,@var{addr},@var{kind} 37801@itemx Z2,@var{addr},@var{kind} 37802@cindex @samp{z2} packet 37803@cindex @samp{Z2} packet 37804Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}. 37805The number of bytes to watch is specified by @var{kind}. 37806 37807Reply: 37808@table @samp 37809@item OK 37810success 37811@item @w{} 37812not supported 37813@item E @var{NN} 37814for an error 37815@end table 37816 37817@item z3,@var{addr},@var{kind} 37818@itemx Z3,@var{addr},@var{kind} 37819@cindex @samp{z3} packet 37820@cindex @samp{Z3} packet 37821Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}. 37822The number of bytes to watch is specified by @var{kind}. 37823 37824Reply: 37825@table @samp 37826@item OK 37827success 37828@item @w{} 37829not supported 37830@item E @var{NN} 37831for an error 37832@end table 37833 37834@item z4,@var{addr},@var{kind} 37835@itemx Z4,@var{addr},@var{kind} 37836@cindex @samp{z4} packet 37837@cindex @samp{Z4} packet 37838Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}. 37839The number of bytes to watch is specified by @var{kind}. 37840 37841Reply: 37842@table @samp 37843@item OK 37844success 37845@item @w{} 37846not supported 37847@item E @var{NN} 37848for an error 37849@end table 37850 37851@end table 37852 37853@node Stop Reply Packets 37854@section Stop Reply Packets 37855@cindex stop reply packets 37856 37857The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont}, 37858@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can 37859receive any of the below as a reply. Except for @samp{?} 37860and @samp{vStopped}, that reply is only returned 37861when the target halts. In the below the exact meaning of @dfn{signal 37862number} is defined by the header @file{include/gdb/signals.h} in the 37863@value{GDBN} source code. 37864 37865In non-stop mode, the server will simply reply @samp{OK} to commands 37866such as @samp{vCont}; any stop will be the subject of a future 37867notification. @xref{Remote Non-Stop}. 37868 37869As in the description of request packets, we include spaces in the 37870reply templates for clarity; these are not part of the reply packet's 37871syntax. No @value{GDBN} stop reply packet uses spaces to separate its 37872components. 37873 37874@table @samp 37875 37876@item S @var{AA} 37877The program received signal number @var{AA} (a two-digit hexadecimal 37878number). This is equivalent to a @samp{T} response with no 37879@var{n}:@var{r} pairs. 37880 37881@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{} 37882@cindex @samp{T} packet reply 37883The program received signal number @var{AA} (a two-digit hexadecimal 37884number). This is equivalent to an @samp{S} response, except that the 37885@samp{@var{n}:@var{r}} pairs can carry values of important registers 37886and other information directly in the stop reply packet, reducing 37887round-trip latency. Single-step and breakpoint traps are reported 37888this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows: 37889 37890@itemize @bullet 37891@item 37892If @var{n} is a hexadecimal number, it is a register number, and the 37893corresponding @var{r} gives that register's value. The data @var{r} is a 37894series of bytes in target byte order, with each byte given by a 37895two-digit hex number. 37896 37897@item 37898If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of 37899the stopped thread, as specified in @ref{thread-id syntax}. 37900 37901@item 37902If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of 37903the core on which the stop event was detected. 37904 37905@item 37906If @var{n} is a recognized @dfn{stop reason}, it describes a more 37907specific event that stopped the target. The currently defined stop 37908reasons are listed below. The @var{aa} should be @samp{05}, the trap 37909signal. At most one stop reason should be present. 37910 37911@item 37912Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair 37913and go on to the next; this allows us to extend the protocol in the 37914future. 37915@end itemize 37916 37917The currently defined stop reasons are: 37918 37919@table @samp 37920@item watch 37921@itemx rwatch 37922@itemx awatch 37923The packet indicates a watchpoint hit, and @var{r} is the data address, in 37924hex. 37925 37926@item syscall_entry 37927@itemx syscall_return 37928The packet indicates a syscall entry or return, and @var{r} is the 37929syscall number, in hex. 37930 37931@cindex shared library events, remote reply 37932@item library 37933The packet indicates that the loaded libraries have changed. 37934@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new 37935list of loaded libraries. The @var{r} part is ignored. 37936 37937@cindex replay log events, remote reply 37938@item replaylog 37939The packet indicates that the target cannot continue replaying 37940logged execution events, because it has reached the end (or the 37941beginning when executing backward) of the log. The value of @var{r} 37942will be either @samp{begin} or @samp{end}. @xref{Reverse Execution}, 37943for more information. 37944 37945@item swbreak 37946@anchor{swbreak stop reason} 37947The packet indicates a software breakpoint instruction was executed, 37948irrespective of whether it was @value{GDBN} that planted the 37949breakpoint or the breakpoint is hardcoded in the program. The @var{r} 37950part must be left empty. 37951 37952On some architectures, such as x86, at the architecture level, when a 37953breakpoint instruction executes the program counter points at the 37954breakpoint address plus an offset. On such targets, the stub is 37955responsible for adjusting the PC to point back at the breakpoint 37956address. 37957 37958This packet should not be sent by default; older @value{GDBN} versions 37959did not support it. @value{GDBN} requests it, by supplying an 37960appropriate @samp{qSupported} feature (@pxref{qSupported}). The 37961remote stub must also supply the appropriate @samp{qSupported} feature 37962indicating support. 37963 37964This packet is required for correct non-stop mode operation. 37965 37966@item hwbreak 37967The packet indicates the target stopped for a hardware breakpoint. 37968The @var{r} part must be left empty. 37969 37970The same remarks about @samp{qSupported} and non-stop mode above 37971apply. 37972 37973@cindex fork events, remote reply 37974@item fork 37975The packet indicates that @code{fork} was called, and @var{r} 37976is the thread ID of the new child process. Refer to 37977@ref{thread-id syntax} for the format of the @var{thread-id} 37978field. This packet is only applicable to targets that support 37979fork events. 37980 37981This packet should not be sent by default; older @value{GDBN} versions 37982did not support it. @value{GDBN} requests it, by supplying an 37983appropriate @samp{qSupported} feature (@pxref{qSupported}). The 37984remote stub must also supply the appropriate @samp{qSupported} feature 37985indicating support. 37986 37987@cindex vfork events, remote reply 37988@item vfork 37989The packet indicates that @code{vfork} was called, and @var{r} 37990is the thread ID of the new child process. Refer to 37991@ref{thread-id syntax} for the format of the @var{thread-id} 37992field. This packet is only applicable to targets that support 37993vfork events. 37994 37995This packet should not be sent by default; older @value{GDBN} versions 37996did not support it. @value{GDBN} requests it, by supplying an 37997appropriate @samp{qSupported} feature (@pxref{qSupported}). The 37998remote stub must also supply the appropriate @samp{qSupported} feature 37999indicating support. 38000 38001@cindex vforkdone events, remote reply 38002@item vforkdone 38003The packet indicates that a child process created by a vfork 38004has either called @code{exec} or terminated, so that the 38005address spaces of the parent and child process are no longer 38006shared. The @var{r} part is ignored. This packet is only 38007applicable to targets that support vforkdone events. 38008 38009This packet should not be sent by default; older @value{GDBN} versions 38010did not support it. @value{GDBN} requests it, by supplying an 38011appropriate @samp{qSupported} feature (@pxref{qSupported}). The 38012remote stub must also supply the appropriate @samp{qSupported} feature 38013indicating support. 38014 38015@cindex exec events, remote reply 38016@item exec 38017The packet indicates that @code{execve} was called, and @var{r} 38018is the absolute pathname of the file that was executed, in hex. 38019This packet is only applicable to targets that support exec events. 38020 38021This packet should not be sent by default; older @value{GDBN} versions 38022did not support it. @value{GDBN} requests it, by supplying an 38023appropriate @samp{qSupported} feature (@pxref{qSupported}). The 38024remote stub must also supply the appropriate @samp{qSupported} feature 38025indicating support. 38026 38027@cindex thread create event, remote reply 38028@anchor{thread create event} 38029@item create 38030The packet indicates that the thread was just created. The new thread 38031is stopped until @value{GDBN} sets it running with a resumption packet 38032(@pxref{vCont packet}). This packet should not be sent by default; 38033@value{GDBN} requests it with the @ref{QThreadEvents} packet. See 38034also the @samp{w} (@pxref{thread exit event}) remote reply below. The 38035@var{r} part is ignored. 38036 38037@end table 38038 38039@item W @var{AA} 38040@itemx W @var{AA} ; process:@var{pid} 38041The process exited, and @var{AA} is the exit status. This is only 38042applicable to certain targets. 38043 38044The second form of the response, including the process ID of the 38045exited process, can be used only when @value{GDBN} has reported 38046support for multiprocess protocol extensions; see @ref{multiprocess 38047extensions}. Both @var{AA} and @var{pid} are formatted as big-endian 38048hex strings. 38049 38050@item X @var{AA} 38051@itemx X @var{AA} ; process:@var{pid} 38052The process terminated with signal @var{AA}. 38053 38054The second form of the response, including the process ID of the 38055terminated process, can be used only when @value{GDBN} has reported 38056support for multiprocess protocol extensions; see @ref{multiprocess 38057extensions}. Both @var{AA} and @var{pid} are formatted as big-endian 38058hex strings. 38059 38060@anchor{thread exit event} 38061@cindex thread exit event, remote reply 38062@item w @var{AA} ; @var{tid} 38063 38064The thread exited, and @var{AA} is the exit status. This response 38065should not be sent by default; @value{GDBN} requests it with the 38066@ref{QThreadEvents} packet. See also @ref{thread create event} above. 38067@var{AA} is formatted as a big-endian hex string. 38068 38069@item N 38070There are no resumed threads left in the target. In other words, even 38071though the process is alive, the last resumed thread has exited. For 38072example, say the target process has two threads: thread 1 and thread 380732. The client leaves thread 1 stopped, and resumes thread 2, which 38074subsequently exits. At this point, even though the process is still 38075alive, and thus no @samp{W} stop reply is sent, no thread is actually 38076executing either. The @samp{N} stop reply thus informs the client 38077that it can stop waiting for stop replies. This packet should not be 38078sent by default; older @value{GDBN} versions did not support it. 38079@value{GDBN} requests it, by supplying an appropriate 38080@samp{qSupported} feature (@pxref{qSupported}). The remote stub must 38081also supply the appropriate @samp{qSupported} feature indicating 38082support. 38083 38084@item O @var{XX}@dots{} 38085@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be 38086written as the program's console output. This can happen at any time 38087while the program is running and the debugger should continue to wait 38088for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode. 38089 38090@item F @var{call-id},@var{parameter}@dots{} 38091@var{call-id} is the identifier which says which host system call should 38092be called. This is just the name of the function. Translation into the 38093correct system call is only applicable as it's defined in @value{GDBN}. 38094@xref{File-I/O Remote Protocol Extension}, for a list of implemented 38095system calls. 38096 38097@samp{@var{parameter}@dots{}} is a list of parameters as defined for 38098this very system call. 38099 38100The target replies with this packet when it expects @value{GDBN} to 38101call a host system call on behalf of the target. @value{GDBN} replies 38102with an appropriate @samp{F} packet and keeps up waiting for the next 38103reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S} 38104or @samp{s} action is expected to be continued. @xref{File-I/O Remote 38105Protocol Extension}, for more details. 38106 38107@end table 38108 38109@node General Query Packets 38110@section General Query Packets 38111@cindex remote query requests 38112 38113Packets starting with @samp{q} are @dfn{general query packets}; 38114packets starting with @samp{Q} are @dfn{general set packets}. General 38115query and set packets are a semi-unified form for retrieving and 38116sending information to and from the stub. 38117 38118The initial letter of a query or set packet is followed by a name 38119indicating what sort of thing the packet applies to. For example, 38120@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol 38121definitions with the stub. These packet names follow some 38122conventions: 38123 38124@itemize @bullet 38125@item 38126The name must not contain commas, colons or semicolons. 38127@item 38128Most @value{GDBN} query and set packets have a leading upper case 38129letter. 38130@item 38131The names of custom vendor packets should use a company prefix, in 38132lower case, followed by a period. For example, packets designed at 38133the Acme Corporation might begin with @samp{qacme.foo} (for querying 38134foos) or @samp{Qacme.bar} (for setting bars). 38135@end itemize 38136 38137The name of a query or set packet should be separated from any 38138parameters by a @samp{:}; the parameters themselves should be 38139separated by @samp{,} or @samp{;}. Stubs must be careful to match the 38140full packet name, and check for a separator or the end of the packet, 38141in case two packet names share a common prefix. New packets should not begin 38142with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL} 38143packets predate these conventions, and have arguments without any terminator 38144for the packet name; we suspect they are in widespread use in places that 38145are difficult to upgrade. The @samp{qC} packet has no arguments, but some 38146existing stubs (e.g.@: RedBoot) are known to not check for the end of the 38147packet.}. 38148 38149Like the descriptions of the other packets, each description here 38150has a template showing the packet's overall syntax, followed by an 38151explanation of the packet's meaning. We include spaces in some of the 38152templates for clarity; these are not part of the packet's syntax. No 38153@value{GDBN} packet uses spaces to separate its components. 38154 38155Here are the currently defined query and set packets: 38156 38157@table @samp 38158 38159@item QAgent:1 38160@itemx QAgent:0 38161Turn on or off the agent as a helper to perform some debugging operations 38162delegated from @value{GDBN} (@pxref{Control Agent}). 38163 38164@item QAllow:@var{op}:@var{val}@dots{} 38165@cindex @samp{QAllow} packet 38166Specify which operations @value{GDBN} expects to request of the 38167target, as a semicolon-separated list of operation name and value 38168pairs. Possible values for @var{op} include @samp{WriteReg}, 38169@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace}, 38170@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0, 38171indicating that @value{GDBN} will not request the operation, or 1, 38172indicating that it may. (The target can then use this to set up its 38173own internals optimally, for instance if the debugger never expects to 38174insert breakpoints, it may not need to install its own trap handler.) 38175 38176@item qC 38177@cindex current thread, remote request 38178@cindex @samp{qC} packet 38179Return the current thread ID. 38180 38181Reply: 38182@table @samp 38183@item QC @var{thread-id} 38184Where @var{thread-id} is a thread ID as documented in 38185@ref{thread-id syntax}. 38186@item @r{(anything else)} 38187Any other reply implies the old thread ID. 38188@end table 38189 38190@item qCRC:@var{addr},@var{length} 38191@cindex CRC of memory block, remote request 38192@cindex @samp{qCRC} packet 38193@anchor{qCRC packet} 38194Compute the CRC checksum of a block of memory using CRC-32 defined in 38195IEEE 802.3. The CRC is computed byte at a time, taking the most 38196significant bit of each byte first. The initial pattern code 38197@code{0xffffffff} is used to ensure leading zeros affect the CRC. 38198 38199@emph{Note:} This is the same CRC used in validating separate debug 38200files (@pxref{Separate Debug Files, , Debugging Information in Separate 38201Files}). However the algorithm is slightly different. When validating 38202separate debug files, the CRC is computed taking the @emph{least} 38203significant bit of each byte first, and the final result is inverted to 38204detect trailing zeros. 38205 38206Reply: 38207@table @samp 38208@item E @var{NN} 38209An error (such as memory fault) 38210@item C @var{crc32} 38211The specified memory region's checksum is @var{crc32}. 38212@end table 38213 38214@item QDisableRandomization:@var{value} 38215@cindex disable address space randomization, remote request 38216@cindex @samp{QDisableRandomization} packet 38217Some target operating systems will randomize the virtual address space 38218of the inferior process as a security feature, but provide a feature 38219to disable such randomization, e.g.@: to allow for a more deterministic 38220debugging experience. On such systems, this packet with a @var{value} 38221of 1 directs the target to disable address space randomization for 38222processes subsequently started via @samp{vRun} packets, while a packet 38223with a @var{value} of 0 tells the target to enable address space 38224randomization. 38225 38226This packet is only available in extended mode (@pxref{extended mode}). 38227 38228Reply: 38229@table @samp 38230@item OK 38231The request succeeded. 38232 38233@item E @var{nn} 38234An error occurred. The error number @var{nn} is given as hex digits. 38235 38236@item @w{} 38237An empty reply indicates that @samp{QDisableRandomization} is not supported 38238by the stub. 38239@end table 38240 38241This packet is not probed by default; the remote stub must request it, 38242by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 38243This should only be done on targets that actually support disabling 38244address space randomization. 38245 38246@item QStartupWithShell:@var{value} 38247@cindex startup with shell, remote request 38248@cindex @samp{QStartupWithShell} packet 38249On UNIX-like targets, it is possible to start the inferior using a 38250shell program. This is the default behavior on both @value{GDBN} and 38251@command{gdbserver} (@pxref{set startup-with-shell}). This packet is 38252used to inform @command{gdbserver} whether it should start the 38253inferior using a shell or not. 38254 38255If @var{value} is @samp{0}, @command{gdbserver} will not use a shell 38256to start the inferior. If @var{value} is @samp{1}, 38257@command{gdbserver} will use a shell to start the inferior. All other 38258values are considered an error. 38259 38260This packet is only available in extended mode (@pxref{extended 38261mode}). 38262 38263Reply: 38264@table @samp 38265@item OK 38266The request succeeded. 38267 38268@item E @var{nn} 38269An error occurred. The error number @var{nn} is given as hex digits. 38270@end table 38271 38272This packet is not probed by default; the remote stub must request it, 38273by supplying an appropriate @samp{qSupported} response 38274(@pxref{qSupported}). This should only be done on targets that 38275actually support starting the inferior using a shell. 38276 38277Use of this packet is controlled by the @code{set startup-with-shell} 38278command; @pxref{set startup-with-shell}. 38279 38280@item QEnvironmentHexEncoded:@var{hex-value} 38281@anchor{QEnvironmentHexEncoded} 38282@cindex set environment variable, remote request 38283@cindex @samp{QEnvironmentHexEncoded} packet 38284On UNIX-like targets, it is possible to set environment variables that 38285will be passed to the inferior during the startup process. This 38286packet is used to inform @command{gdbserver} of an environment 38287variable that has been defined by the user on @value{GDBN} (@pxref{set 38288environment}). 38289 38290The packet is composed by @var{hex-value}, an hex encoded 38291representation of the @var{name=value} format representing an 38292environment variable. The name of the environment variable is 38293represented by @var{name}, and the value to be assigned to the 38294environment variable is represented by @var{value}. If the variable 38295has no value (i.e., the value is @code{null}), then @var{value} will 38296not be present. 38297 38298This packet is only available in extended mode (@pxref{extended 38299mode}). 38300 38301Reply: 38302@table @samp 38303@item OK 38304The request succeeded. 38305@end table 38306 38307This packet is not probed by default; the remote stub must request it, 38308by supplying an appropriate @samp{qSupported} response 38309(@pxref{qSupported}). This should only be done on targets that 38310actually support passing environment variables to the starting 38311inferior. 38312 38313This packet is related to the @code{set environment} command; 38314@pxref{set environment}. 38315 38316@item QEnvironmentUnset:@var{hex-value} 38317@anchor{QEnvironmentUnset} 38318@cindex unset environment variable, remote request 38319@cindex @samp{QEnvironmentUnset} packet 38320On UNIX-like targets, it is possible to unset environment variables 38321before starting the inferior in the remote target. This packet is 38322used to inform @command{gdbserver} of an environment variable that has 38323been unset by the user on @value{GDBN} (@pxref{unset environment}). 38324 38325The packet is composed by @var{hex-value}, an hex encoded 38326representation of the name of the environment variable to be unset. 38327 38328This packet is only available in extended mode (@pxref{extended 38329mode}). 38330 38331Reply: 38332@table @samp 38333@item OK 38334The request succeeded. 38335@end table 38336 38337This packet is not probed by default; the remote stub must request it, 38338by supplying an appropriate @samp{qSupported} response 38339(@pxref{qSupported}). This should only be done on targets that 38340actually support passing environment variables to the starting 38341inferior. 38342 38343This packet is related to the @code{unset environment} command; 38344@pxref{unset environment}. 38345 38346@item QEnvironmentReset 38347@anchor{QEnvironmentReset} 38348@cindex reset environment, remote request 38349@cindex @samp{QEnvironmentReset} packet 38350On UNIX-like targets, this packet is used to reset the state of 38351environment variables in the remote target before starting the 38352inferior. In this context, reset means unsetting all environment 38353variables that were previously set by the user (i.e., were not 38354initially present in the environment). It is sent to 38355@command{gdbserver} before the @samp{QEnvironmentHexEncoded} 38356(@pxref{QEnvironmentHexEncoded}) and the @samp{QEnvironmentUnset} 38357(@pxref{QEnvironmentUnset}) packets. 38358 38359This packet is only available in extended mode (@pxref{extended 38360mode}). 38361 38362Reply: 38363@table @samp 38364@item OK 38365The request succeeded. 38366@end table 38367 38368This packet is not probed by default; the remote stub must request it, 38369by supplying an appropriate @samp{qSupported} response 38370(@pxref{qSupported}). This should only be done on targets that 38371actually support passing environment variables to the starting 38372inferior. 38373 38374@item QSetWorkingDir:@r{[}@var{directory}@r{]} 38375@anchor{QSetWorkingDir packet} 38376@cindex set working directory, remote request 38377@cindex @samp{QSetWorkingDir} packet 38378This packet is used to inform the remote server of the intended 38379current working directory for programs that are going to be executed. 38380 38381The packet is composed by @var{directory}, an hex encoded 38382representation of the directory that the remote inferior will use as 38383its current working directory. If @var{directory} is an empty string, 38384the remote server should reset the inferior's current working 38385directory to its original, empty value. 38386 38387This packet is only available in extended mode (@pxref{extended 38388mode}). 38389 38390Reply: 38391@table @samp 38392@item OK 38393The request succeeded. 38394@end table 38395 38396@item qfThreadInfo 38397@itemx qsThreadInfo 38398@cindex list active threads, remote request 38399@cindex @samp{qfThreadInfo} packet 38400@cindex @samp{qsThreadInfo} packet 38401Obtain a list of all active thread IDs from the target (OS). Since there 38402may be too many active threads to fit into one reply packet, this query 38403works iteratively: it may require more than one query/reply sequence to 38404obtain the entire list of threads. The first query of the sequence will 38405be the @samp{qfThreadInfo} query; subsequent queries in the 38406sequence will be the @samp{qsThreadInfo} query. 38407 38408NOTE: This packet replaces the @samp{qL} query (see below). 38409 38410Reply: 38411@table @samp 38412@item m @var{thread-id} 38413A single thread ID 38414@item m @var{thread-id},@var{thread-id}@dots{} 38415a comma-separated list of thread IDs 38416@item l 38417(lower case letter @samp{L}) denotes end of list. 38418@end table 38419 38420In response to each query, the target will reply with a list of one or 38421more thread IDs, separated by commas. 38422@value{GDBN} will respond to each reply with a request for more thread 38423ids (using the @samp{qs} form of the query), until the target responds 38424with @samp{l} (lower-case ell, for @dfn{last}). 38425Refer to @ref{thread-id syntax}, for the format of the @var{thread-id} 38426fields. 38427 38428@emph{Note: @value{GDBN} will send the @code{qfThreadInfo} query during the 38429initial connection with the remote target, and the very first thread ID 38430mentioned in the reply will be stopped by @value{GDBN} in a subsequent 38431message. Therefore, the stub should ensure that the first thread ID in 38432the @code{qfThreadInfo} reply is suitable for being stopped by @value{GDBN}.} 38433 38434@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm} 38435@cindex get thread-local storage address, remote request 38436@cindex @samp{qGetTLSAddr} packet 38437Fetch the address associated with thread local storage specified 38438by @var{thread-id}, @var{offset}, and @var{lm}. 38439 38440@var{thread-id} is the thread ID associated with the 38441thread for which to fetch the TLS address. @xref{thread-id syntax}. 38442 38443@var{offset} is the (big endian, hex encoded) offset associated with the 38444thread local variable. (This offset is obtained from the debug 38445information associated with the variable.) 38446 38447@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the 38448load module associated with the thread local storage. For example, 38449a @sc{gnu}/Linux system will pass the link map address of the shared 38450object associated with the thread local storage under consideration. 38451Other operating environments may choose to represent the load module 38452differently, so the precise meaning of this parameter will vary. 38453 38454Reply: 38455@table @samp 38456@item @var{XX}@dots{} 38457Hex encoded (big endian) bytes representing the address of the thread 38458local storage requested. 38459 38460@item E @var{nn} 38461An error occurred. The error number @var{nn} is given as hex digits. 38462 38463@item @w{} 38464An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub. 38465@end table 38466 38467@item qGetTIBAddr:@var{thread-id} 38468@cindex get thread information block address 38469@cindex @samp{qGetTIBAddr} packet 38470Fetch address of the Windows OS specific Thread Information Block. 38471 38472@var{thread-id} is the thread ID associated with the thread. 38473 38474Reply: 38475@table @samp 38476@item @var{XX}@dots{} 38477Hex encoded (big endian) bytes representing the linear address of the 38478thread information block. 38479 38480@item E @var{nn} 38481An error occured. This means that either the thread was not found, or the 38482address could not be retrieved. 38483 38484@item @w{} 38485An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub. 38486@end table 38487 38488@item qL @var{startflag} @var{threadcount} @var{nextthread} 38489Obtain thread information from RTOS. Where: @var{startflag} (one hex 38490digit) is one to indicate the first query and zero to indicate a 38491subsequent query; @var{threadcount} (two hex digits) is the maximum 38492number of threads the response packet can contain; and @var{nextthread} 38493(eight hex digits), for subsequent queries (@var{startflag} is zero), is 38494returned in the response as @var{argthread}. 38495 38496Don't use this packet; use the @samp{qfThreadInfo} query instead (see above). 38497 38498Reply: 38499@table @samp 38500@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{} 38501Where: @var{count} (two hex digits) is the number of threads being 38502returned; @var{done} (one hex digit) is zero to indicate more threads 38503and one indicates no further threads; @var{argthreadid} (eight hex 38504digits) is @var{nextthread} from the request packet; @var{thread}@dots{} 38505is a sequence of thread IDs, @var{threadid} (eight hex 38506digits), from the target. See @code{remote.c:parse_threadlist_response()}. 38507@end table 38508 38509@item qOffsets 38510@cindex section offsets, remote request 38511@cindex @samp{qOffsets} packet 38512Get section offsets that the target used when relocating the downloaded 38513image. 38514 38515Reply: 38516@table @samp 38517@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]} 38518Relocate the @code{Text} section by @var{xxx} from its original address. 38519Relocate the @code{Data} section by @var{yyy} from its original address. 38520If the object file format provides segment information (e.g.@: @sc{elf} 38521@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire 38522segments by the supplied offsets. 38523 38524@emph{Note: while a @code{Bss} offset may be included in the response, 38525@value{GDBN} ignores this and instead applies the @code{Data} offset 38526to the @code{Bss} section.} 38527 38528@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]} 38529Relocate the first segment of the object file, which conventionally 38530contains program code, to a starting address of @var{xxx}. If 38531@samp{DataSeg} is specified, relocate the second segment, which 38532conventionally contains modifiable data, to a starting address of 38533@var{yyy}. @value{GDBN} will report an error if the object file 38534does not contain segment information, or does not contain at least 38535as many segments as mentioned in the reply. Extra segments are 38536kept at fixed offsets relative to the last relocated segment. 38537@end table 38538 38539@item qP @var{mode} @var{thread-id} 38540@cindex thread information, remote request 38541@cindex @samp{qP} packet 38542Returns information on @var{thread-id}. Where: @var{mode} is a hex 38543encoded 32 bit mode; @var{thread-id} is a thread ID 38544(@pxref{thread-id syntax}). 38545 38546Don't use this packet; use the @samp{qThreadExtraInfo} query instead 38547(see below). 38548 38549Reply: see @code{remote.c:remote_unpack_thread_info_response()}. 38550 38551@item QNonStop:1 38552@itemx QNonStop:0 38553@cindex non-stop mode, remote request 38554@cindex @samp{QNonStop} packet 38555@anchor{QNonStop} 38556Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode. 38557@xref{Remote Non-Stop}, for more information. 38558 38559Reply: 38560@table @samp 38561@item OK 38562The request succeeded. 38563 38564@item E @var{nn} 38565An error occurred. The error number @var{nn} is given as hex digits. 38566 38567@item @w{} 38568An empty reply indicates that @samp{QNonStop} is not supported by 38569the stub. 38570@end table 38571 38572This packet is not probed by default; the remote stub must request it, 38573by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 38574Use of this packet is controlled by the @code{set non-stop} command; 38575@pxref{Non-Stop Mode}. 38576 38577@item QCatchSyscalls:1 @r{[};@var{sysno}@r{]}@dots{} 38578@itemx QCatchSyscalls:0 38579@cindex catch syscalls from inferior, remote request 38580@cindex @samp{QCatchSyscalls} packet 38581@anchor{QCatchSyscalls} 38582Enable (@samp{QCatchSyscalls:1}) or disable (@samp{QCatchSyscalls:0}) 38583catching syscalls from the inferior process. 38584 38585For @samp{QCatchSyscalls:1}, each listed syscall @var{sysno} (encoded 38586in hex) should be reported to @value{GDBN}. If no syscall @var{sysno} 38587is listed, every system call should be reported. 38588 38589Note that if a syscall not in the list is reported, @value{GDBN} will 38590still filter the event according to its own list from all corresponding 38591@code{catch syscall} commands. However, it is more efficient to only 38592report the requested syscalls. 38593 38594Multiple @samp{QCatchSyscalls:1} packets do not combine; any earlier 38595@samp{QCatchSyscalls:1} list is completely replaced by the new list. 38596 38597If the inferior process execs, the state of @samp{QCatchSyscalls} is 38598kept for the new process too. On targets where exec may affect syscall 38599numbers, for example with exec between 32 and 64-bit processes, the 38600client should send a new packet with the new syscall list. 38601 38602Reply: 38603@table @samp 38604@item OK 38605The request succeeded. 38606 38607@item E @var{nn} 38608An error occurred. @var{nn} are hex digits. 38609 38610@item @w{} 38611An empty reply indicates that @samp{QCatchSyscalls} is not supported by 38612the stub. 38613@end table 38614 38615Use of this packet is controlled by the @code{set remote catch-syscalls} 38616command (@pxref{Remote Configuration, set remote catch-syscalls}). 38617This packet is not probed by default; the remote stub must request it, 38618by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 38619 38620@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 38621@cindex pass signals to inferior, remote request 38622@cindex @samp{QPassSignals} packet 38623@anchor{QPassSignals} 38624Each listed @var{signal} should be passed directly to the inferior process. 38625Signals are numbered identically to continue packets and stop replies 38626(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 38627strictly greater than the previous item. These signals do not need to stop 38628the inferior, or be reported to @value{GDBN}. All other signals should be 38629reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not 38630combine; any earlier @samp{QPassSignals} list is completely replaced by the 38631new list. This packet improves performance when using @samp{handle 38632@var{signal} nostop noprint pass}. 38633 38634Reply: 38635@table @samp 38636@item OK 38637The request succeeded. 38638 38639@item E @var{nn} 38640An error occurred. The error number @var{nn} is given as hex digits. 38641 38642@item @w{} 38643An empty reply indicates that @samp{QPassSignals} is not supported by 38644the stub. 38645@end table 38646 38647Use of this packet is controlled by the @code{set remote pass-signals} 38648command (@pxref{Remote Configuration, set remote pass-signals}). 38649This packet is not probed by default; the remote stub must request it, 38650by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 38651 38652@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 38653@cindex signals the inferior may see, remote request 38654@cindex @samp{QProgramSignals} packet 38655@anchor{QProgramSignals} 38656Each listed @var{signal} may be delivered to the inferior process. 38657Others should be silently discarded. 38658 38659In some cases, the remote stub may need to decide whether to deliver a 38660signal to the program or not without @value{GDBN} involvement. One 38661example of that is while detaching --- the program's threads may have 38662stopped for signals that haven't yet had a chance of being reported to 38663@value{GDBN}, and so the remote stub can use the signal list specified 38664by this packet to know whether to deliver or ignore those pending 38665signals. 38666 38667This does not influence whether to deliver a signal as requested by a 38668resumption packet (@pxref{vCont packet}). 38669 38670Signals are numbered identically to continue packets and stop replies 38671(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 38672strictly greater than the previous item. Multiple 38673@samp{QProgramSignals} packets do not combine; any earlier 38674@samp{QProgramSignals} list is completely replaced by the new list. 38675 38676Reply: 38677@table @samp 38678@item OK 38679The request succeeded. 38680 38681@item E @var{nn} 38682An error occurred. The error number @var{nn} is given as hex digits. 38683 38684@item @w{} 38685An empty reply indicates that @samp{QProgramSignals} is not supported 38686by the stub. 38687@end table 38688 38689Use of this packet is controlled by the @code{set remote program-signals} 38690command (@pxref{Remote Configuration, set remote program-signals}). 38691This packet is not probed by default; the remote stub must request it, 38692by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 38693 38694@anchor{QThreadEvents} 38695@item QThreadEvents:1 38696@itemx QThreadEvents:0 38697@cindex thread create/exit events, remote request 38698@cindex @samp{QThreadEvents} packet 38699 38700Enable (@samp{QThreadEvents:1}) or disable (@samp{QThreadEvents:0}) 38701reporting of thread create and exit events. @xref{thread create 38702event}, for the reply specifications. For example, this is used in 38703non-stop mode when @value{GDBN} stops a set of threads and 38704synchronously waits for the their corresponding stop replies. Without 38705exit events, if one of the threads exits, @value{GDBN} would hang 38706forever not knowing that it should no longer expect a stop for that 38707same thread. @value{GDBN} does not enable this feature unless the 38708stub reports that it supports it by including @samp{QThreadEvents+} in 38709its @samp{qSupported} reply. 38710 38711Reply: 38712@table @samp 38713@item OK 38714The request succeeded. 38715 38716@item E @var{nn} 38717An error occurred. The error number @var{nn} is given as hex digits. 38718 38719@item @w{} 38720An empty reply indicates that @samp{QThreadEvents} is not supported by 38721the stub. 38722@end table 38723 38724Use of this packet is controlled by the @code{set remote thread-events} 38725command (@pxref{Remote Configuration, set remote thread-events}). 38726 38727@item qRcmd,@var{command} 38728@cindex execute remote command, remote request 38729@cindex @samp{qRcmd} packet 38730@var{command} (hex encoded) is passed to the local interpreter for 38731execution. Invalid commands should be reported using the output 38732string. Before the final result packet, the target may also respond 38733with a number of intermediate @samp{O@var{output}} console output 38734packets. @emph{Implementors should note that providing access to a 38735stubs's interpreter may have security implications}. 38736 38737Reply: 38738@table @samp 38739@item OK 38740A command response with no output. 38741@item @var{OUTPUT} 38742A command response with the hex encoded output string @var{OUTPUT}. 38743@item E @var{NN} 38744Indicate a badly formed request. 38745@item @w{} 38746An empty reply indicates that @samp{qRcmd} is not recognized. 38747@end table 38748 38749(Note that the @code{qRcmd} packet's name is separated from the 38750command by a @samp{,}, not a @samp{:}, contrary to the naming 38751conventions above. Please don't use this packet as a model for new 38752packets.) 38753 38754@item qSearch:memory:@var{address};@var{length};@var{search-pattern} 38755@cindex searching memory, in remote debugging 38756@ifnotinfo 38757@cindex @samp{qSearch:memory} packet 38758@end ifnotinfo 38759@cindex @samp{qSearch memory} packet 38760@anchor{qSearch memory} 38761Search @var{length} bytes at @var{address} for @var{search-pattern}. 38762Both @var{address} and @var{length} are encoded in hex; 38763@var{search-pattern} is a sequence of bytes, also hex encoded. 38764 38765Reply: 38766@table @samp 38767@item 0 38768The pattern was not found. 38769@item 1,address 38770The pattern was found at @var{address}. 38771@item E @var{NN} 38772A badly formed request or an error was encountered while searching memory. 38773@item @w{} 38774An empty reply indicates that @samp{qSearch:memory} is not recognized. 38775@end table 38776 38777@item QStartNoAckMode 38778@cindex @samp{QStartNoAckMode} packet 38779@anchor{QStartNoAckMode} 38780Request that the remote stub disable the normal @samp{+}/@samp{-} 38781protocol acknowledgments (@pxref{Packet Acknowledgment}). 38782 38783Reply: 38784@table @samp 38785@item OK 38786The stub has switched to no-acknowledgment mode. 38787@value{GDBN} acknowledges this reponse, 38788but neither the stub nor @value{GDBN} shall send or expect further 38789@samp{+}/@samp{-} acknowledgments in the current connection. 38790@item @w{} 38791An empty reply indicates that the stub does not support no-acknowledgment mode. 38792@end table 38793 38794@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]} 38795@cindex supported packets, remote query 38796@cindex features of the remote protocol 38797@cindex @samp{qSupported} packet 38798@anchor{qSupported} 38799Tell the remote stub about features supported by @value{GDBN}, and 38800query the stub for features it supports. This packet allows 38801@value{GDBN} and the remote stub to take advantage of each others' 38802features. @samp{qSupported} also consolidates multiple feature probes 38803at startup, to improve @value{GDBN} performance---a single larger 38804packet performs better than multiple smaller probe packets on 38805high-latency links. Some features may enable behavior which must not 38806be on by default, e.g.@: because it would confuse older clients or 38807stubs. Other features may describe packets which could be 38808automatically probed for, but are not. These features must be 38809reported before @value{GDBN} will use them. This ``default 38810unsupported'' behavior is not appropriate for all packets, but it 38811helps to keep the initial connection time under control with new 38812versions of @value{GDBN} which support increasing numbers of packets. 38813 38814Reply: 38815@table @samp 38816@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{} 38817The stub supports or does not support each returned @var{stubfeature}, 38818depending on the form of each @var{stubfeature} (see below for the 38819possible forms). 38820@item @w{} 38821An empty reply indicates that @samp{qSupported} is not recognized, 38822or that no features needed to be reported to @value{GDBN}. 38823@end table 38824 38825The allowed forms for each feature (either a @var{gdbfeature} in the 38826@samp{qSupported} packet, or a @var{stubfeature} in the response) 38827are: 38828 38829@table @samp 38830@item @var{name}=@var{value} 38831The remote protocol feature @var{name} is supported, and associated 38832with the specified @var{value}. The format of @var{value} depends 38833on the feature, but it must not include a semicolon. 38834@item @var{name}+ 38835The remote protocol feature @var{name} is supported, and does not 38836need an associated value. 38837@item @var{name}- 38838The remote protocol feature @var{name} is not supported. 38839@item @var{name}? 38840The remote protocol feature @var{name} may be supported, and 38841@value{GDBN} should auto-detect support in some other way when it is 38842needed. This form will not be used for @var{gdbfeature} notifications, 38843but may be used for @var{stubfeature} responses. 38844@end table 38845 38846Whenever the stub receives a @samp{qSupported} request, the 38847supplied set of @value{GDBN} features should override any previous 38848request. This allows @value{GDBN} to put the stub in a known 38849state, even if the stub had previously been communicating with 38850a different version of @value{GDBN}. 38851 38852The following values of @var{gdbfeature} (for the packet sent by @value{GDBN}) 38853are defined: 38854 38855@table @samp 38856@item multiprocess 38857This feature indicates whether @value{GDBN} supports multiprocess 38858extensions to the remote protocol. @value{GDBN} does not use such 38859extensions unless the stub also reports that it supports them by 38860including @samp{multiprocess+} in its @samp{qSupported} reply. 38861@xref{multiprocess extensions}, for details. 38862 38863@item xmlRegisters 38864This feature indicates that @value{GDBN} supports the XML target 38865description. If the stub sees @samp{xmlRegisters=} with target 38866specific strings separated by a comma, it will report register 38867description. 38868 38869@item qRelocInsn 38870This feature indicates whether @value{GDBN} supports the 38871@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate 38872instruction reply packet}). 38873 38874@item swbreak 38875This feature indicates whether @value{GDBN} supports the swbreak stop 38876reason in stop replies. @xref{swbreak stop reason}, for details. 38877 38878@item hwbreak 38879This feature indicates whether @value{GDBN} supports the hwbreak stop 38880reason in stop replies. @xref{swbreak stop reason}, for details. 38881 38882@item fork-events 38883This feature indicates whether @value{GDBN} supports fork event 38884extensions to the remote protocol. @value{GDBN} does not use such 38885extensions unless the stub also reports that it supports them by 38886including @samp{fork-events+} in its @samp{qSupported} reply. 38887 38888@item vfork-events 38889This feature indicates whether @value{GDBN} supports vfork event 38890extensions to the remote protocol. @value{GDBN} does not use such 38891extensions unless the stub also reports that it supports them by 38892including @samp{vfork-events+} in its @samp{qSupported} reply. 38893 38894@item exec-events 38895This feature indicates whether @value{GDBN} supports exec event 38896extensions to the remote protocol. @value{GDBN} does not use such 38897extensions unless the stub also reports that it supports them by 38898including @samp{exec-events+} in its @samp{qSupported} reply. 38899 38900@item vContSupported 38901This feature indicates whether @value{GDBN} wants to know the 38902supported actions in the reply to @samp{vCont?} packet. 38903@end table 38904 38905Stubs should ignore any unknown values for 38906@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported} 38907packet supports receiving packets of unlimited length (earlier 38908versions of @value{GDBN} may reject overly long responses). Additional values 38909for @var{gdbfeature} may be defined in the future to let the stub take 38910advantage of new features in @value{GDBN}, e.g.@: incompatible 38911improvements in the remote protocol---the @samp{multiprocess} feature is 38912an example of such a feature. The stub's reply should be independent 38913of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN} 38914describes all the features it supports, and then the stub replies with 38915all the features it supports. 38916 38917Similarly, @value{GDBN} will silently ignore unrecognized stub feature 38918responses, as long as each response uses one of the standard forms. 38919 38920Some features are flags. A stub which supports a flag feature 38921should respond with a @samp{+} form response. Other features 38922require values, and the stub should respond with an @samp{=} 38923form response. 38924 38925Each feature has a default value, which @value{GDBN} will use if 38926@samp{qSupported} is not available or if the feature is not mentioned 38927in the @samp{qSupported} response. The default values are fixed; a 38928stub is free to omit any feature responses that match the defaults. 38929 38930Not all features can be probed, but for those which can, the probing 38931mechanism is useful: in some cases, a stub's internal 38932architecture may not allow the protocol layer to know some information 38933about the underlying target in advance. This is especially common in 38934stubs which may be configured for multiple targets. 38935 38936These are the currently defined stub features and their properties: 38937 38938@multitable @columnfractions 0.35 0.2 0.12 0.2 38939@c NOTE: The first row should be @headitem, but we do not yet require 38940@c a new enough version of Texinfo (4.7) to use @headitem. 38941@item Feature Name 38942@tab Value Required 38943@tab Default 38944@tab Probe Allowed 38945 38946@item @samp{PacketSize} 38947@tab Yes 38948@tab @samp{-} 38949@tab No 38950 38951@item @samp{qXfer:auxv:read} 38952@tab No 38953@tab @samp{-} 38954@tab Yes 38955 38956@item @samp{qXfer:btrace:read} 38957@tab No 38958@tab @samp{-} 38959@tab Yes 38960 38961@item @samp{qXfer:btrace-conf:read} 38962@tab No 38963@tab @samp{-} 38964@tab Yes 38965 38966@item @samp{qXfer:exec-file:read} 38967@tab No 38968@tab @samp{-} 38969@tab Yes 38970 38971@item @samp{qXfer:features:read} 38972@tab No 38973@tab @samp{-} 38974@tab Yes 38975 38976@item @samp{qXfer:libraries:read} 38977@tab No 38978@tab @samp{-} 38979@tab Yes 38980 38981@item @samp{qXfer:libraries-svr4:read} 38982@tab No 38983@tab @samp{-} 38984@tab Yes 38985 38986@item @samp{augmented-libraries-svr4-read} 38987@tab No 38988@tab @samp{-} 38989@tab No 38990 38991@item @samp{qXfer:memory-map:read} 38992@tab No 38993@tab @samp{-} 38994@tab Yes 38995 38996@item @samp{qXfer:sdata:read} 38997@tab No 38998@tab @samp{-} 38999@tab Yes 39000 39001@item @samp{qXfer:spu:read} 39002@tab No 39003@tab @samp{-} 39004@tab Yes 39005 39006@item @samp{qXfer:spu:write} 39007@tab No 39008@tab @samp{-} 39009@tab Yes 39010 39011@item @samp{qXfer:siginfo:read} 39012@tab No 39013@tab @samp{-} 39014@tab Yes 39015 39016@item @samp{qXfer:siginfo:write} 39017@tab No 39018@tab @samp{-} 39019@tab Yes 39020 39021@item @samp{qXfer:threads:read} 39022@tab No 39023@tab @samp{-} 39024@tab Yes 39025 39026@item @samp{qXfer:traceframe-info:read} 39027@tab No 39028@tab @samp{-} 39029@tab Yes 39030 39031@item @samp{qXfer:uib:read} 39032@tab No 39033@tab @samp{-} 39034@tab Yes 39035 39036@item @samp{qXfer:fdpic:read} 39037@tab No 39038@tab @samp{-} 39039@tab Yes 39040 39041@item @samp{Qbtrace:off} 39042@tab Yes 39043@tab @samp{-} 39044@tab Yes 39045 39046@item @samp{Qbtrace:bts} 39047@tab Yes 39048@tab @samp{-} 39049@tab Yes 39050 39051@item @samp{Qbtrace:pt} 39052@tab Yes 39053@tab @samp{-} 39054@tab Yes 39055 39056@item @samp{Qbtrace-conf:bts:size} 39057@tab Yes 39058@tab @samp{-} 39059@tab Yes 39060 39061@item @samp{Qbtrace-conf:pt:size} 39062@tab Yes 39063@tab @samp{-} 39064@tab Yes 39065 39066@item @samp{QNonStop} 39067@tab No 39068@tab @samp{-} 39069@tab Yes 39070 39071@item @samp{QCatchSyscalls} 39072@tab No 39073@tab @samp{-} 39074@tab Yes 39075 39076@item @samp{QPassSignals} 39077@tab No 39078@tab @samp{-} 39079@tab Yes 39080 39081@item @samp{QStartNoAckMode} 39082@tab No 39083@tab @samp{-} 39084@tab Yes 39085 39086@item @samp{multiprocess} 39087@tab No 39088@tab @samp{-} 39089@tab No 39090 39091@item @samp{ConditionalBreakpoints} 39092@tab No 39093@tab @samp{-} 39094@tab No 39095 39096@item @samp{ConditionalTracepoints} 39097@tab No 39098@tab @samp{-} 39099@tab No 39100 39101@item @samp{ReverseContinue} 39102@tab No 39103@tab @samp{-} 39104@tab No 39105 39106@item @samp{ReverseStep} 39107@tab No 39108@tab @samp{-} 39109@tab No 39110 39111@item @samp{TracepointSource} 39112@tab No 39113@tab @samp{-} 39114@tab No 39115 39116@item @samp{QAgent} 39117@tab No 39118@tab @samp{-} 39119@tab No 39120 39121@item @samp{QAllow} 39122@tab No 39123@tab @samp{-} 39124@tab No 39125 39126@item @samp{QDisableRandomization} 39127@tab No 39128@tab @samp{-} 39129@tab No 39130 39131@item @samp{EnableDisableTracepoints} 39132@tab No 39133@tab @samp{-} 39134@tab No 39135 39136@item @samp{QTBuffer:size} 39137@tab No 39138@tab @samp{-} 39139@tab No 39140 39141@item @samp{tracenz} 39142@tab No 39143@tab @samp{-} 39144@tab No 39145 39146@item @samp{BreakpointCommands} 39147@tab No 39148@tab @samp{-} 39149@tab No 39150 39151@item @samp{swbreak} 39152@tab No 39153@tab @samp{-} 39154@tab No 39155 39156@item @samp{hwbreak} 39157@tab No 39158@tab @samp{-} 39159@tab No 39160 39161@item @samp{fork-events} 39162@tab No 39163@tab @samp{-} 39164@tab No 39165 39166@item @samp{vfork-events} 39167@tab No 39168@tab @samp{-} 39169@tab No 39170 39171@item @samp{exec-events} 39172@tab No 39173@tab @samp{-} 39174@tab No 39175 39176@item @samp{QThreadEvents} 39177@tab No 39178@tab @samp{-} 39179@tab No 39180 39181@item @samp{no-resumed} 39182@tab No 39183@tab @samp{-} 39184@tab No 39185 39186@end multitable 39187 39188These are the currently defined stub features, in more detail: 39189 39190@table @samp 39191@cindex packet size, remote protocol 39192@item PacketSize=@var{bytes} 39193The remote stub can accept packets up to at least @var{bytes} in 39194length. @value{GDBN} will send packets up to this size for bulk 39195transfers, and will never send larger packets. This is a limit on the 39196data characters in the packet, including the frame and checksum. 39197There is no trailing NUL byte in a remote protocol packet; if the stub 39198stores packets in a NUL-terminated format, it should allow an extra 39199byte in its buffer for the NUL. If this stub feature is not supported, 39200@value{GDBN} guesses based on the size of the @samp{g} packet response. 39201 39202@item qXfer:auxv:read 39203The remote stub understands the @samp{qXfer:auxv:read} packet 39204(@pxref{qXfer auxiliary vector read}). 39205 39206@item qXfer:btrace:read 39207The remote stub understands the @samp{qXfer:btrace:read} 39208packet (@pxref{qXfer btrace read}). 39209 39210@item qXfer:btrace-conf:read 39211The remote stub understands the @samp{qXfer:btrace-conf:read} 39212packet (@pxref{qXfer btrace-conf read}). 39213 39214@item qXfer:exec-file:read 39215The remote stub understands the @samp{qXfer:exec-file:read} packet 39216(@pxref{qXfer executable filename read}). 39217 39218@item qXfer:features:read 39219The remote stub understands the @samp{qXfer:features:read} packet 39220(@pxref{qXfer target description read}). 39221 39222@item qXfer:libraries:read 39223The remote stub understands the @samp{qXfer:libraries:read} packet 39224(@pxref{qXfer library list read}). 39225 39226@item qXfer:libraries-svr4:read 39227The remote stub understands the @samp{qXfer:libraries-svr4:read} packet 39228(@pxref{qXfer svr4 library list read}). 39229 39230@item augmented-libraries-svr4-read 39231The remote stub understands the augmented form of the 39232@samp{qXfer:libraries-svr4:read} packet 39233(@pxref{qXfer svr4 library list read}). 39234 39235@item qXfer:memory-map:read 39236The remote stub understands the @samp{qXfer:memory-map:read} packet 39237(@pxref{qXfer memory map read}). 39238 39239@item qXfer:sdata:read 39240The remote stub understands the @samp{qXfer:sdata:read} packet 39241(@pxref{qXfer sdata read}). 39242 39243@item qXfer:spu:read 39244The remote stub understands the @samp{qXfer:spu:read} packet 39245(@pxref{qXfer spu read}). 39246 39247@item qXfer:spu:write 39248The remote stub understands the @samp{qXfer:spu:write} packet 39249(@pxref{qXfer spu write}). 39250 39251@item qXfer:siginfo:read 39252The remote stub understands the @samp{qXfer:siginfo:read} packet 39253(@pxref{qXfer siginfo read}). 39254 39255@item qXfer:siginfo:write 39256The remote stub understands the @samp{qXfer:siginfo:write} packet 39257(@pxref{qXfer siginfo write}). 39258 39259@item qXfer:threads:read 39260The remote stub understands the @samp{qXfer:threads:read} packet 39261(@pxref{qXfer threads read}). 39262 39263@item qXfer:traceframe-info:read 39264The remote stub understands the @samp{qXfer:traceframe-info:read} 39265packet (@pxref{qXfer traceframe info read}). 39266 39267@item qXfer:uib:read 39268The remote stub understands the @samp{qXfer:uib:read} 39269packet (@pxref{qXfer unwind info block}). 39270 39271@item qXfer:fdpic:read 39272The remote stub understands the @samp{qXfer:fdpic:read} 39273packet (@pxref{qXfer fdpic loadmap read}). 39274 39275@item QNonStop 39276The remote stub understands the @samp{QNonStop} packet 39277(@pxref{QNonStop}). 39278 39279@item QCatchSyscalls 39280The remote stub understands the @samp{QCatchSyscalls} packet 39281(@pxref{QCatchSyscalls}). 39282 39283@item QPassSignals 39284The remote stub understands the @samp{QPassSignals} packet 39285(@pxref{QPassSignals}). 39286 39287@item QStartNoAckMode 39288The remote stub understands the @samp{QStartNoAckMode} packet and 39289prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}. 39290 39291@item multiprocess 39292@anchor{multiprocess extensions} 39293@cindex multiprocess extensions, in remote protocol 39294The remote stub understands the multiprocess extensions to the remote 39295protocol syntax. The multiprocess extensions affect the syntax of 39296thread IDs in both packets and replies (@pxref{thread-id syntax}), and 39297add process IDs to the @samp{D} packet and @samp{W} and @samp{X} 39298replies. Note that reporting this feature indicates support for the 39299syntactic extensions only, not that the stub necessarily supports 39300debugging of more than one process at a time. The stub must not use 39301multiprocess extensions in packet replies unless @value{GDBN} has also 39302indicated it supports them in its @samp{qSupported} request. 39303 39304@item qXfer:osdata:read 39305The remote stub understands the @samp{qXfer:osdata:read} packet 39306((@pxref{qXfer osdata read}). 39307 39308@item ConditionalBreakpoints 39309The target accepts and implements evaluation of conditional expressions 39310defined for breakpoints. The target will only report breakpoint triggers 39311when such conditions are true (@pxref{Conditions, ,Break Conditions}). 39312 39313@item ConditionalTracepoints 39314The remote stub accepts and implements conditional expressions defined 39315for tracepoints (@pxref{Tracepoint Conditions}). 39316 39317@item ReverseContinue 39318The remote stub accepts and implements the reverse continue packet 39319(@pxref{bc}). 39320 39321@item ReverseStep 39322The remote stub accepts and implements the reverse step packet 39323(@pxref{bs}). 39324 39325@item TracepointSource 39326The remote stub understands the @samp{QTDPsrc} packet that supplies 39327the source form of tracepoint definitions. 39328 39329@item QAgent 39330The remote stub understands the @samp{QAgent} packet. 39331 39332@item QAllow 39333The remote stub understands the @samp{QAllow} packet. 39334 39335@item QDisableRandomization 39336The remote stub understands the @samp{QDisableRandomization} packet. 39337 39338@item StaticTracepoint 39339@cindex static tracepoints, in remote protocol 39340The remote stub supports static tracepoints. 39341 39342@item InstallInTrace 39343@anchor{install tracepoint in tracing} 39344The remote stub supports installing tracepoint in tracing. 39345 39346@item EnableDisableTracepoints 39347The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and 39348@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints 39349to be enabled and disabled while a trace experiment is running. 39350 39351@item QTBuffer:size 39352The remote stub supports the @samp{QTBuffer:size} (@pxref{QTBuffer-size}) 39353packet that allows to change the size of the trace buffer. 39354 39355@item tracenz 39356@cindex string tracing, in remote protocol 39357The remote stub supports the @samp{tracenz} bytecode for collecting strings. 39358See @ref{Bytecode Descriptions} for details about the bytecode. 39359 39360@item BreakpointCommands 39361@cindex breakpoint commands, in remote protocol 39362The remote stub supports running a breakpoint's command list itself, 39363rather than reporting the hit to @value{GDBN}. 39364 39365@item Qbtrace:off 39366The remote stub understands the @samp{Qbtrace:off} packet. 39367 39368@item Qbtrace:bts 39369The remote stub understands the @samp{Qbtrace:bts} packet. 39370 39371@item Qbtrace:pt 39372The remote stub understands the @samp{Qbtrace:pt} packet. 39373 39374@item Qbtrace-conf:bts:size 39375The remote stub understands the @samp{Qbtrace-conf:bts:size} packet. 39376 39377@item Qbtrace-conf:pt:size 39378The remote stub understands the @samp{Qbtrace-conf:pt:size} packet. 39379 39380@item swbreak 39381The remote stub reports the @samp{swbreak} stop reason for memory 39382breakpoints. 39383 39384@item hwbreak 39385The remote stub reports the @samp{hwbreak} stop reason for hardware 39386breakpoints. 39387 39388@item fork-events 39389The remote stub reports the @samp{fork} stop reason for fork events. 39390 39391@item vfork-events 39392The remote stub reports the @samp{vfork} stop reason for vfork events 39393and vforkdone events. 39394 39395@item exec-events 39396The remote stub reports the @samp{exec} stop reason for exec events. 39397 39398@item vContSupported 39399The remote stub reports the supported actions in the reply to 39400@samp{vCont?} packet. 39401 39402@item QThreadEvents 39403The remote stub understands the @samp{QThreadEvents} packet. 39404 39405@item no-resumed 39406The remote stub reports the @samp{N} stop reply. 39407 39408@end table 39409 39410@item qSymbol:: 39411@cindex symbol lookup, remote request 39412@cindex @samp{qSymbol} packet 39413Notify the target that @value{GDBN} is prepared to serve symbol lookup 39414requests. Accept requests from the target for the values of symbols. 39415 39416Reply: 39417@table @samp 39418@item OK 39419The target does not need to look up any (more) symbols. 39420@item qSymbol:@var{sym_name} 39421The target requests the value of symbol @var{sym_name} (hex encoded). 39422@value{GDBN} may provide the value by using the 39423@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described 39424below. 39425@end table 39426 39427@item qSymbol:@var{sym_value}:@var{sym_name} 39428Set the value of @var{sym_name} to @var{sym_value}. 39429 39430@var{sym_name} (hex encoded) is the name of a symbol whose value the 39431target has previously requested. 39432 39433@var{sym_value} (hex) is the value for symbol @var{sym_name}. If 39434@value{GDBN} cannot supply a value for @var{sym_name}, then this field 39435will be empty. 39436 39437Reply: 39438@table @samp 39439@item OK 39440The target does not need to look up any (more) symbols. 39441@item qSymbol:@var{sym_name} 39442The target requests the value of a new symbol @var{sym_name} (hex 39443encoded). @value{GDBN} will continue to supply the values of symbols 39444(if available), until the target ceases to request them. 39445@end table 39446 39447@item qTBuffer 39448@itemx QTBuffer 39449@itemx QTDisconnected 39450@itemx QTDP 39451@itemx QTDPsrc 39452@itemx QTDV 39453@itemx qTfP 39454@itemx qTfV 39455@itemx QTFrame 39456@itemx qTMinFTPILen 39457 39458@xref{Tracepoint Packets}. 39459 39460@item qThreadExtraInfo,@var{thread-id} 39461@cindex thread attributes info, remote request 39462@cindex @samp{qThreadExtraInfo} packet 39463Obtain from the target OS a printable string description of thread 39464attributes for the thread @var{thread-id}; see @ref{thread-id syntax}, 39465for the forms of @var{thread-id}. This 39466string may contain anything that the target OS thinks is interesting 39467for @value{GDBN} to tell the user about the thread. The string is 39468displayed in @value{GDBN}'s @code{info threads} display. Some 39469examples of possible thread extra info strings are @samp{Runnable}, or 39470@samp{Blocked on Mutex}. 39471 39472Reply: 39473@table @samp 39474@item @var{XX}@dots{} 39475Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data, 39476comprising the printable string containing the extra information about 39477the thread's attributes. 39478@end table 39479 39480(Note that the @code{qThreadExtraInfo} packet's name is separated from 39481the command by a @samp{,}, not a @samp{:}, contrary to the naming 39482conventions above. Please don't use this packet as a model for new 39483packets.) 39484 39485@item QTNotes 39486@itemx qTP 39487@itemx QTSave 39488@itemx qTsP 39489@itemx qTsV 39490@itemx QTStart 39491@itemx QTStop 39492@itemx QTEnable 39493@itemx QTDisable 39494@itemx QTinit 39495@itemx QTro 39496@itemx qTStatus 39497@itemx qTV 39498@itemx qTfSTM 39499@itemx qTsSTM 39500@itemx qTSTMat 39501@xref{Tracepoint Packets}. 39502 39503@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length} 39504@cindex read special object, remote request 39505@cindex @samp{qXfer} packet 39506@anchor{qXfer read} 39507Read uninterpreted bytes from the target's special data area 39508identified by the keyword @var{object}. Request @var{length} bytes 39509starting at @var{offset} bytes into the data. The content and 39510encoding of @var{annex} is specific to @var{object}; it can supply 39511additional details about what data to access. 39512 39513Reply: 39514@table @samp 39515@item m @var{data} 39516Data @var{data} (@pxref{Binary Data}) has been read from the 39517target. There may be more data at a higher address (although 39518it is permitted to return @samp{m} even for the last valid 39519block of data, as long as at least one byte of data was read). 39520It is possible for @var{data} to have fewer bytes than the @var{length} in the 39521request. 39522 39523@item l @var{data} 39524Data @var{data} (@pxref{Binary Data}) has been read from the target. 39525There is no more data to be read. It is possible for @var{data} to 39526have fewer bytes than the @var{length} in the request. 39527 39528@item l 39529The @var{offset} in the request is at the end of the data. 39530There is no more data to be read. 39531 39532@item E00 39533The request was malformed, or @var{annex} was invalid. 39534 39535@item E @var{nn} 39536The offset was invalid, or there was an error encountered reading the data. 39537The @var{nn} part is a hex-encoded @code{errno} value. 39538 39539@item @w{} 39540An empty reply indicates the @var{object} string was not recognized by 39541the stub, or that the object does not support reading. 39542@end table 39543 39544Here are the specific requests of this form defined so far. All the 39545@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply 39546formats, listed above. 39547 39548@table @samp 39549@item qXfer:auxv:read::@var{offset},@var{length} 39550@anchor{qXfer auxiliary vector read} 39551Access the target's @dfn{auxiliary vector}. @xref{OS Information, 39552auxiliary vector}. Note @var{annex} must be empty. 39553 39554This packet is not probed by default; the remote stub must request it, 39555by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39556 39557@item qXfer:btrace:read:@var{annex}:@var{offset},@var{length} 39558@anchor{qXfer btrace read} 39559 39560Return a description of the current branch trace. 39561@xref{Branch Trace Format}. The annex part of the generic @samp{qXfer} 39562packet may have one of the following values: 39563 39564@table @code 39565@item all 39566Returns all available branch trace. 39567 39568@item new 39569Returns all available branch trace if the branch trace changed since 39570the last read request. 39571 39572@item delta 39573Returns the new branch trace since the last read request. Adds a new 39574block to the end of the trace that begins at zero and ends at the source 39575location of the first branch in the trace buffer. This extra block is 39576used to stitch traces together. 39577 39578If the trace buffer overflowed, returns an error indicating the overflow. 39579@end table 39580 39581This packet is not probed by default; the remote stub must request it 39582by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39583 39584@item qXfer:btrace-conf:read::@var{offset},@var{length} 39585@anchor{qXfer btrace-conf read} 39586 39587Return a description of the current branch trace configuration. 39588@xref{Branch Trace Configuration Format}. 39589 39590This packet is not probed by default; the remote stub must request it 39591by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39592 39593@item qXfer:exec-file:read:@var{annex}:@var{offset},@var{length} 39594@anchor{qXfer executable filename read} 39595Return the full absolute name of the file that was executed to create 39596a process running on the remote system. The annex specifies the 39597numeric process ID of the process to query, encoded as a hexadecimal 39598number. If the annex part is empty the remote stub should return the 39599filename corresponding to the currently executing process. 39600 39601This packet is not probed by default; the remote stub must request it, 39602by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39603 39604@item qXfer:features:read:@var{annex}:@var{offset},@var{length} 39605@anchor{qXfer target description read} 39606Access the @dfn{target description}. @xref{Target Descriptions}. The 39607annex specifies which XML document to access. The main description is 39608always loaded from the @samp{target.xml} annex. 39609 39610This packet is not probed by default; the remote stub must request it, 39611by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39612 39613@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length} 39614@anchor{qXfer library list read} 39615Access the target's list of loaded libraries. @xref{Library List Format}. 39616The annex part of the generic @samp{qXfer} packet must be empty 39617(@pxref{qXfer read}). 39618 39619Targets which maintain a list of libraries in the program's memory do 39620not need to implement this packet; it is designed for platforms where 39621the operating system manages the list of loaded libraries. 39622 39623This packet is not probed by default; the remote stub must request it, 39624by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39625 39626@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length} 39627@anchor{qXfer svr4 library list read} 39628Access the target's list of loaded libraries when the target is an SVR4 39629platform. @xref{Library List Format for SVR4 Targets}. The annex part 39630of the generic @samp{qXfer} packet must be empty unless the remote 39631stub indicated it supports the augmented form of this packet 39632by supplying an appropriate @samp{qSupported} response 39633(@pxref{qXfer read}, @ref{qSupported}). 39634 39635This packet is optional for better performance on SVR4 targets. 39636@value{GDBN} uses memory read packets to read the SVR4 library list otherwise. 39637 39638This packet is not probed by default; the remote stub must request it, 39639by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39640 39641If the remote stub indicates it supports the augmented form of this 39642packet then the annex part of the generic @samp{qXfer} packet may 39643contain a semicolon-separated list of @samp{@var{name}=@var{value}} 39644arguments. The currently supported arguments are: 39645 39646@table @code 39647@item start=@var{address} 39648A hexadecimal number specifying the address of the @samp{struct 39649link_map} to start reading the library list from. If unset or zero 39650then the first @samp{struct link_map} in the library list will be 39651chosen as the starting point. 39652 39653@item prev=@var{address} 39654A hexadecimal number specifying the address of the @samp{struct 39655link_map} immediately preceding the @samp{struct link_map} 39656specified by the @samp{start} argument. If unset or zero then 39657the remote stub will expect that no @samp{struct link_map} 39658exists prior to the starting point. 39659 39660@end table 39661 39662Arguments that are not understood by the remote stub will be silently 39663ignored. 39664 39665@item qXfer:memory-map:read::@var{offset},@var{length} 39666@anchor{qXfer memory map read} 39667Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The 39668annex part of the generic @samp{qXfer} packet must be empty 39669(@pxref{qXfer read}). 39670 39671This packet is not probed by default; the remote stub must request it, 39672by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39673 39674@item qXfer:sdata:read::@var{offset},@var{length} 39675@anchor{qXfer sdata read} 39676 39677Read contents of the extra collected static tracepoint marker 39678information. The annex part of the generic @samp{qXfer} packet must 39679be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint 39680Action Lists}. 39681 39682This packet is not probed by default; the remote stub must request it, 39683by supplying an appropriate @samp{qSupported} response 39684(@pxref{qSupported}). 39685 39686@item qXfer:siginfo:read::@var{offset},@var{length} 39687@anchor{qXfer siginfo read} 39688Read contents of the extra signal information on the target 39689system. The annex part of the generic @samp{qXfer} packet must be 39690empty (@pxref{qXfer read}). 39691 39692This packet is not probed by default; the remote stub must request it, 39693by supplying an appropriate @samp{qSupported} response 39694(@pxref{qSupported}). 39695 39696@item qXfer:spu:read:@var{annex}:@var{offset},@var{length} 39697@anchor{qXfer spu read} 39698Read contents of an @code{spufs} file on the target system. The 39699annex specifies which file to read; it must be of the form 39700@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID 39701in the target process, and @var{name} identifes the @code{spufs} file 39702in that context to be accessed. 39703 39704This packet is not probed by default; the remote stub must request it, 39705by supplying an appropriate @samp{qSupported} response 39706(@pxref{qSupported}). 39707 39708@item qXfer:threads:read::@var{offset},@var{length} 39709@anchor{qXfer threads read} 39710Access the list of threads on target. @xref{Thread List Format}. The 39711annex part of the generic @samp{qXfer} packet must be empty 39712(@pxref{qXfer read}). 39713 39714This packet is not probed by default; the remote stub must request it, 39715by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39716 39717@item qXfer:traceframe-info:read::@var{offset},@var{length} 39718@anchor{qXfer traceframe info read} 39719 39720Return a description of the current traceframe's contents. 39721@xref{Traceframe Info Format}. The annex part of the generic 39722@samp{qXfer} packet must be empty (@pxref{qXfer read}). 39723 39724This packet is not probed by default; the remote stub must request it, 39725by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39726 39727@item qXfer:uib:read:@var{pc}:@var{offset},@var{length} 39728@anchor{qXfer unwind info block} 39729 39730Return the unwind information block for @var{pc}. This packet is used 39731on OpenVMS/ia64 to ask the kernel unwind information. 39732 39733This packet is not probed by default. 39734 39735@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length} 39736@anchor{qXfer fdpic loadmap read} 39737Read contents of @code{loadmap}s on the target system. The 39738annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap}, 39739executable @code{loadmap} or interpreter @code{loadmap} to read. 39740 39741This packet is not probed by default; the remote stub must request it, 39742by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39743 39744@item qXfer:osdata:read::@var{offset},@var{length} 39745@anchor{qXfer osdata read} 39746Access the target's @dfn{operating system information}. 39747@xref{Operating System Information}. 39748 39749@end table 39750 39751@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{} 39752@cindex write data into object, remote request 39753@anchor{qXfer write} 39754Write uninterpreted bytes into the target's special data area 39755identified by the keyword @var{object}, starting at @var{offset} bytes 39756into the data. The binary-encoded data (@pxref{Binary Data}) to be 39757written is given by @var{data}@dots{}. The content and encoding of @var{annex} 39758is specific to @var{object}; it can supply additional details about what data 39759to access. 39760 39761Reply: 39762@table @samp 39763@item @var{nn} 39764@var{nn} (hex encoded) is the number of bytes written. 39765This may be fewer bytes than supplied in the request. 39766 39767@item E00 39768The request was malformed, or @var{annex} was invalid. 39769 39770@item E @var{nn} 39771The offset was invalid, or there was an error encountered writing the data. 39772The @var{nn} part is a hex-encoded @code{errno} value. 39773 39774@item @w{} 39775An empty reply indicates the @var{object} string was not 39776recognized by the stub, or that the object does not support writing. 39777@end table 39778 39779Here are the specific requests of this form defined so far. All the 39780@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply 39781formats, listed above. 39782 39783@table @samp 39784@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{} 39785@anchor{qXfer siginfo write} 39786Write @var{data} to the extra signal information on the target system. 39787The annex part of the generic @samp{qXfer} packet must be 39788empty (@pxref{qXfer write}). 39789 39790This packet is not probed by default; the remote stub must request it, 39791by supplying an appropriate @samp{qSupported} response 39792(@pxref{qSupported}). 39793 39794@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{} 39795@anchor{qXfer spu write} 39796Write @var{data} to an @code{spufs} file on the target system. The 39797annex specifies which file to write; it must be of the form 39798@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID 39799in the target process, and @var{name} identifes the @code{spufs} file 39800in that context to be accessed. 39801 39802This packet is not probed by default; the remote stub must request it, 39803by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 39804@end table 39805 39806@item qXfer:@var{object}:@var{operation}:@dots{} 39807Requests of this form may be added in the future. When a stub does 39808not recognize the @var{object} keyword, or its support for 39809@var{object} does not recognize the @var{operation} keyword, the stub 39810must respond with an empty packet. 39811 39812@item qAttached:@var{pid} 39813@cindex query attached, remote request 39814@cindex @samp{qAttached} packet 39815Return an indication of whether the remote server attached to an 39816existing process or created a new process. When the multiprocess 39817protocol extensions are supported (@pxref{multiprocess extensions}), 39818@var{pid} is an integer in hexadecimal format identifying the target 39819process. Otherwise, @value{GDBN} will omit the @var{pid} field and 39820the query packet will be simplified as @samp{qAttached}. 39821 39822This query is used, for example, to know whether the remote process 39823should be detached or killed when a @value{GDBN} session is ended with 39824the @code{quit} command. 39825 39826Reply: 39827@table @samp 39828@item 1 39829The remote server attached to an existing process. 39830@item 0 39831The remote server created a new process. 39832@item E @var{NN} 39833A badly formed request or an error was encountered. 39834@end table 39835 39836@item Qbtrace:bts 39837Enable branch tracing for the current thread using Branch Trace Store. 39838 39839Reply: 39840@table @samp 39841@item OK 39842Branch tracing has been enabled. 39843@item E.errtext 39844A badly formed request or an error was encountered. 39845@end table 39846 39847@item Qbtrace:pt 39848Enable branch tracing for the current thread using Intel Processor Trace. 39849 39850Reply: 39851@table @samp 39852@item OK 39853Branch tracing has been enabled. 39854@item E.errtext 39855A badly formed request or an error was encountered. 39856@end table 39857 39858@item Qbtrace:off 39859Disable branch tracing for the current thread. 39860 39861Reply: 39862@table @samp 39863@item OK 39864Branch tracing has been disabled. 39865@item E.errtext 39866A badly formed request or an error was encountered. 39867@end table 39868 39869@item Qbtrace-conf:bts:size=@var{value} 39870Set the requested ring buffer size for new threads that use the 39871btrace recording method in bts format. 39872 39873Reply: 39874@table @samp 39875@item OK 39876The ring buffer size has been set. 39877@item E.errtext 39878A badly formed request or an error was encountered. 39879@end table 39880 39881@item Qbtrace-conf:pt:size=@var{value} 39882Set the requested ring buffer size for new threads that use the 39883btrace recording method in pt format. 39884 39885Reply: 39886@table @samp 39887@item OK 39888The ring buffer size has been set. 39889@item E.errtext 39890A badly formed request or an error was encountered. 39891@end table 39892 39893@end table 39894 39895@node Architecture-Specific Protocol Details 39896@section Architecture-Specific Protocol Details 39897 39898This section describes how the remote protocol is applied to specific 39899target architectures. Also see @ref{Standard Target Features}, for 39900details of XML target descriptions for each architecture. 39901 39902@menu 39903* ARM-Specific Protocol Details:: 39904* MIPS-Specific Protocol Details:: 39905@end menu 39906 39907@node ARM-Specific Protocol Details 39908@subsection @acronym{ARM}-specific Protocol Details 39909 39910@menu 39911* ARM Breakpoint Kinds:: 39912@end menu 39913 39914@node ARM Breakpoint Kinds 39915@subsubsection @acronym{ARM} Breakpoint Kinds 39916@cindex breakpoint kinds, @acronym{ARM} 39917 39918These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 39919 39920@table @r 39921 39922@item 2 3992316-bit Thumb mode breakpoint. 39924 39925@item 3 3992632-bit Thumb mode (Thumb-2) breakpoint. 39927 39928@item 4 3992932-bit @acronym{ARM} mode breakpoint. 39930 39931@end table 39932 39933@node MIPS-Specific Protocol Details 39934@subsection @acronym{MIPS}-specific Protocol Details 39935 39936@menu 39937* MIPS Register packet Format:: 39938* MIPS Breakpoint Kinds:: 39939@end menu 39940 39941@node MIPS Register packet Format 39942@subsubsection @acronym{MIPS} Register Packet Format 39943@cindex register packet format, @acronym{MIPS} 39944 39945The following @code{g}/@code{G} packets have previously been defined. 39946In the below, some thirty-two bit registers are transferred as 39947sixty-four bits. Those registers should be zero/sign extended (which?) 39948to fill the space allocated. Register bytes are transferred in target 39949byte order. The two nibbles within a register byte are transferred 39950most-significant -- least-significant. 39951 39952@table @r 39953 39954@item MIPS32 39955All registers are transferred as thirty-two bit quantities in the order: 3995632 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point 39957registers; fsr; fir; fp. 39958 39959@item MIPS64 39960All registers are transferred as sixty-four bit quantities (including 39961thirty-two bit registers such as @code{sr}). The ordering is the same 39962as @code{MIPS32}. 39963 39964@end table 39965 39966@node MIPS Breakpoint Kinds 39967@subsubsection @acronym{MIPS} Breakpoint Kinds 39968@cindex breakpoint kinds, @acronym{MIPS} 39969 39970These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 39971 39972@table @r 39973 39974@item 2 3997516-bit @acronym{MIPS16} mode breakpoint. 39976 39977@item 3 3997816-bit @acronym{microMIPS} mode breakpoint. 39979 39980@item 4 3998132-bit standard @acronym{MIPS} mode breakpoint. 39982 39983@item 5 3998432-bit @acronym{microMIPS} mode breakpoint. 39985 39986@end table 39987 39988@node Tracepoint Packets 39989@section Tracepoint Packets 39990@cindex tracepoint packets 39991@cindex packets, tracepoint 39992 39993Here we describe the packets @value{GDBN} uses to implement 39994tracepoints (@pxref{Tracepoints}). 39995 39996@table @samp 39997 39998@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]} 39999@cindex @samp{QTDP} packet 40000Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena} 40001is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then 40002the tracepoint is disabled. The @var{step} gives the tracepoint's step 40003count, and @var{pass} gives its pass count. If an @samp{F} is present, 40004then the tracepoint is to be a fast tracepoint, and the @var{flen} is 40005the number of bytes that the target should copy elsewhere to make room 40006for the tracepoint. If an @samp{X} is present, it introduces a 40007tracepoint condition, which consists of a hexadecimal length, followed 40008by a comma and hex-encoded bytes, in a manner similar to action 40009encodings as described below. If the trailing @samp{-} is present, 40010further @samp{QTDP} packets will follow to specify this tracepoint's 40011actions. 40012 40013Replies: 40014@table @samp 40015@item OK 40016The packet was understood and carried out. 40017@item qRelocInsn 40018@xref{Tracepoint Packets,,Relocate instruction reply packet}. 40019@item @w{} 40020The packet was not recognized. 40021@end table 40022 40023@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]} 40024Define actions to be taken when a tracepoint is hit. The @var{n} and 40025@var{addr} must be the same as in the initial @samp{QTDP} packet for 40026this tracepoint. This packet may only be sent immediately after 40027another @samp{QTDP} packet that ended with a @samp{-}. If the 40028trailing @samp{-} is present, further @samp{QTDP} packets will follow, 40029specifying more actions for this tracepoint. 40030 40031In the series of action packets for a given tracepoint, at most one 40032can have an @samp{S} before its first @var{action}. If such a packet 40033is sent, it and the following packets define ``while-stepping'' 40034actions. Any prior packets define ordinary actions --- that is, those 40035taken when the tracepoint is first hit. If no action packet has an 40036@samp{S}, then all the packets in the series specify ordinary 40037tracepoint actions. 40038 40039The @samp{@var{action}@dots{}} portion of the packet is a series of 40040actions, concatenated without separators. Each action has one of the 40041following forms: 40042 40043@table @samp 40044 40045@item R @var{mask} 40046Collect the registers whose bits are set in @var{mask}, 40047a hexadecimal number whose @var{i}'th bit is set if register number 40048@var{i} should be collected. (The least significant bit is numbered 40049zero.) Note that @var{mask} may be any number of digits long; it may 40050not fit in a 32-bit word. 40051 40052@item M @var{basereg},@var{offset},@var{len} 40053Collect @var{len} bytes of memory starting at the address in register 40054number @var{basereg}, plus @var{offset}. If @var{basereg} is 40055@samp{-1}, then the range has a fixed address: @var{offset} is the 40056address of the lowest byte to collect. The @var{basereg}, 40057@var{offset}, and @var{len} parameters are all unsigned hexadecimal 40058values (the @samp{-1} value for @var{basereg} is a special case). 40059 40060@item X @var{len},@var{expr} 40061Evaluate @var{expr}, whose length is @var{len}, and collect memory as 40062it directs. The agent expression @var{expr} is as described in 40063@ref{Agent Expressions}. Each byte of the expression is encoded as a 40064two-digit hex number in the packet; @var{len} is the number of bytes 40065in the expression (and thus one-half the number of hex digits in the 40066packet). 40067 40068@end table 40069 40070Any number of actions may be packed together in a single @samp{QTDP} 40071packet, as long as the packet does not exceed the maximum packet 40072length (400 bytes, for many stubs). There may be only one @samp{R} 40073action per tracepoint, and it must precede any @samp{M} or @samp{X} 40074actions. Any registers referred to by @samp{M} and @samp{X} actions 40075must be collected by a preceding @samp{R} action. (The 40076``while-stepping'' actions are treated as if they were attached to a 40077separate tracepoint, as far as these restrictions are concerned.) 40078 40079Replies: 40080@table @samp 40081@item OK 40082The packet was understood and carried out. 40083@item qRelocInsn 40084@xref{Tracepoint Packets,,Relocate instruction reply packet}. 40085@item @w{} 40086The packet was not recognized. 40087@end table 40088 40089@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes} 40090@cindex @samp{QTDPsrc} packet 40091Specify a source string of tracepoint @var{n} at address @var{addr}. 40092This is useful to get accurate reproduction of the tracepoints 40093originally downloaded at the beginning of the trace run. The @var{type} 40094is the name of the tracepoint part, such as @samp{cond} for the 40095tracepoint's conditional expression (see below for a list of types), while 40096@var{bytes} is the string, encoded in hexadecimal. 40097 40098@var{start} is the offset of the @var{bytes} within the overall source 40099string, while @var{slen} is the total length of the source string. 40100This is intended for handling source strings that are longer than will 40101fit in a single packet. 40102@c Add detailed example when this info is moved into a dedicated 40103@c tracepoint descriptions section. 40104 40105The available string types are @samp{at} for the location, 40106@samp{cond} for the conditional, and @samp{cmd} for an action command. 40107@value{GDBN} sends a separate packet for each command in the action 40108list, in the same order in which the commands are stored in the list. 40109 40110The target does not need to do anything with source strings except 40111report them back as part of the replies to the @samp{qTfP}/@samp{qTsP} 40112query packets. 40113 40114Although this packet is optional, and @value{GDBN} will only send it 40115if the target replies with @samp{TracepointSource} @xref{General 40116Query Packets}, it makes both disconnected tracing and trace files 40117much easier to use. Otherwise the user must be careful that the 40118tracepoints in effect while looking at trace frames are identical to 40119the ones in effect during the trace run; even a small discrepancy 40120could cause @samp{tdump} not to work, or a particular trace frame not 40121be found. 40122 40123@item QTDV:@var{n}:@var{value}:@var{builtin}:@var{name} 40124@cindex define trace state variable, remote request 40125@cindex @samp{QTDV} packet 40126Create a new trace state variable, number @var{n}, with an initial 40127value of @var{value}, which is a 64-bit signed integer. Both @var{n} 40128and @var{value} are encoded as hexadecimal values. @value{GDBN} has 40129the option of not using this packet for initial values of zero; the 40130target should simply create the trace state variables as they are 40131mentioned in expressions. The value @var{builtin} should be 1 (one) 40132if the trace state variable is builtin and 0 (zero) if it is not builtin. 40133@value{GDBN} only sets @var{builtin} to 1 if a previous @samp{qTfV} or 40134@samp{qTsV} packet had it set. The contents of @var{name} is the 40135hex-encoded name (without the leading @samp{$}) of the trace state 40136variable. 40137 40138@item QTFrame:@var{n} 40139@cindex @samp{QTFrame} packet 40140Select the @var{n}'th tracepoint frame from the buffer, and use the 40141register and memory contents recorded there to answer subsequent 40142request packets from @value{GDBN}. 40143 40144A successful reply from the stub indicates that the stub has found the 40145requested frame. The response is a series of parts, concatenated 40146without separators, describing the frame we selected. Each part has 40147one of the following forms: 40148 40149@table @samp 40150@item F @var{f} 40151The selected frame is number @var{n} in the trace frame buffer; 40152@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there 40153was no frame matching the criteria in the request packet. 40154 40155@item T @var{t} 40156The selected trace frame records a hit of tracepoint number @var{t}; 40157@var{t} is a hexadecimal number. 40158 40159@end table 40160 40161@item QTFrame:pc:@var{addr} 40162Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 40163currently selected frame whose PC is @var{addr}; 40164@var{addr} is a hexadecimal number. 40165 40166@item QTFrame:tdp:@var{t} 40167Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 40168currently selected frame that is a hit of tracepoint @var{t}; @var{t} 40169is a hexadecimal number. 40170 40171@item QTFrame:range:@var{start}:@var{end} 40172Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 40173currently selected frame whose PC is between @var{start} (inclusive) 40174and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal 40175numbers. 40176 40177@item QTFrame:outside:@var{start}:@var{end} 40178Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first 40179frame @emph{outside} the given range of addresses (exclusive). 40180 40181@item qTMinFTPILen 40182@cindex @samp{qTMinFTPILen} packet 40183This packet requests the minimum length of instruction at which a fast 40184tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on 40185the 32-bit x86 architecture, it is possible to use a 4-byte jump, but 40186it depends on the target system being able to create trampolines in 40187the first 64K of memory, which might or might not be possible for that 40188system. So the reply to this packet will be 4 if it is able to 40189arrange for that. 40190 40191Replies: 40192 40193@table @samp 40194@item 0 40195The minimum instruction length is currently unknown. 40196@item @var{length} 40197The minimum instruction length is @var{length}, where @var{length} 40198is a hexadecimal number greater or equal to 1. A reply 40199of 1 means that a fast tracepoint may be placed on any instruction 40200regardless of size. 40201@item E 40202An error has occurred. 40203@item @w{} 40204An empty reply indicates that the request is not supported by the stub. 40205@end table 40206 40207@item QTStart 40208@cindex @samp{QTStart} packet 40209Begin the tracepoint experiment. Begin collecting data from 40210tracepoint hits in the trace frame buffer. This packet supports the 40211@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate 40212instruction reply packet}). 40213 40214@item QTStop 40215@cindex @samp{QTStop} packet 40216End the tracepoint experiment. Stop collecting trace frames. 40217 40218@item QTEnable:@var{n}:@var{addr} 40219@anchor{QTEnable} 40220@cindex @samp{QTEnable} packet 40221Enable tracepoint @var{n} at address @var{addr} in a started tracepoint 40222experiment. If the tracepoint was previously disabled, then collection 40223of data from it will resume. 40224 40225@item QTDisable:@var{n}:@var{addr} 40226@anchor{QTDisable} 40227@cindex @samp{QTDisable} packet 40228Disable tracepoint @var{n} at address @var{addr} in a started tracepoint 40229experiment. No more data will be collected from the tracepoint unless 40230@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued. 40231 40232@item QTinit 40233@cindex @samp{QTinit} packet 40234Clear the table of tracepoints, and empty the trace frame buffer. 40235 40236@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{} 40237@cindex @samp{QTro} packet 40238Establish the given ranges of memory as ``transparent''. The stub 40239will answer requests for these ranges from memory's current contents, 40240if they were not collected as part of the tracepoint hit. 40241 40242@value{GDBN} uses this to mark read-only regions of memory, like those 40243containing program code. Since these areas never change, they should 40244still have the same contents they did when the tracepoint was hit, so 40245there's no reason for the stub to refuse to provide their contents. 40246 40247@item QTDisconnected:@var{value} 40248@cindex @samp{QTDisconnected} packet 40249Set the choice to what to do with the tracing run when @value{GDBN} 40250disconnects from the target. A @var{value} of 1 directs the target to 40251continue the tracing run, while 0 tells the target to stop tracing if 40252@value{GDBN} is no longer in the picture. 40253 40254@item qTStatus 40255@cindex @samp{qTStatus} packet 40256Ask the stub if there is a trace experiment running right now. 40257 40258The reply has the form: 40259 40260@table @samp 40261 40262@item T@var{running}@r{[};@var{field}@r{]}@dots{} 40263@var{running} is a single digit @code{1} if the trace is presently 40264running, or @code{0} if not. It is followed by semicolon-separated 40265optional fields that an agent may use to report additional status. 40266 40267@end table 40268 40269If the trace is not running, the agent may report any of several 40270explanations as one of the optional fields: 40271 40272@table @samp 40273 40274@item tnotrun:0 40275No trace has been run yet. 40276 40277@item tstop[:@var{text}]:0 40278The trace was stopped by a user-originated stop command. The optional 40279@var{text} field is a user-supplied string supplied as part of the 40280stop command (for instance, an explanation of why the trace was 40281stopped manually). It is hex-encoded. 40282 40283@item tfull:0 40284The trace stopped because the trace buffer filled up. 40285 40286@item tdisconnected:0 40287The trace stopped because @value{GDBN} disconnected from the target. 40288 40289@item tpasscount:@var{tpnum} 40290The trace stopped because tracepoint @var{tpnum} exceeded its pass count. 40291 40292@item terror:@var{text}:@var{tpnum} 40293The trace stopped because tracepoint @var{tpnum} had an error. The 40294string @var{text} is available to describe the nature of the error 40295(for instance, a divide by zero in the condition expression); it 40296is hex encoded. 40297 40298@item tunknown:0 40299The trace stopped for some other reason. 40300 40301@end table 40302 40303Additional optional fields supply statistical and other information. 40304Although not required, they are extremely useful for users monitoring 40305the progress of a trace run. If a trace has stopped, and these 40306numbers are reported, they must reflect the state of the just-stopped 40307trace. 40308 40309@table @samp 40310 40311@item tframes:@var{n} 40312The number of trace frames in the buffer. 40313 40314@item tcreated:@var{n} 40315The total number of trace frames created during the run. This may 40316be larger than the trace frame count, if the buffer is circular. 40317 40318@item tsize:@var{n} 40319The total size of the trace buffer, in bytes. 40320 40321@item tfree:@var{n} 40322The number of bytes still unused in the buffer. 40323 40324@item circular:@var{n} 40325The value of the circular trace buffer flag. @code{1} means that the 40326trace buffer is circular and old trace frames will be discarded if 40327necessary to make room, @code{0} means that the trace buffer is linear 40328and may fill up. 40329 40330@item disconn:@var{n} 40331The value of the disconnected tracing flag. @code{1} means that 40332tracing will continue after @value{GDBN} disconnects, @code{0} means 40333that the trace run will stop. 40334 40335@end table 40336 40337@item qTP:@var{tp}:@var{addr} 40338@cindex tracepoint status, remote request 40339@cindex @samp{qTP} packet 40340Ask the stub for the current state of tracepoint number @var{tp} at 40341address @var{addr}. 40342 40343Replies: 40344@table @samp 40345@item V@var{hits}:@var{usage} 40346The tracepoint has been hit @var{hits} times so far during the trace 40347run, and accounts for @var{usage} in the trace buffer. Note that 40348@code{while-stepping} steps are not counted as separate hits, but the 40349steps' space consumption is added into the usage number. 40350 40351@end table 40352 40353@item qTV:@var{var} 40354@cindex trace state variable value, remote request 40355@cindex @samp{qTV} packet 40356Ask the stub for the value of the trace state variable number @var{var}. 40357 40358Replies: 40359@table @samp 40360@item V@var{value} 40361The value of the variable is @var{value}. This will be the current 40362value of the variable if the user is examining a running target, or a 40363saved value if the variable was collected in the trace frame that the 40364user is looking at. Note that multiple requests may result in 40365different reply values, such as when requesting values while the 40366program is running. 40367 40368@item U 40369The value of the variable is unknown. This would occur, for example, 40370if the user is examining a trace frame in which the requested variable 40371was not collected. 40372@end table 40373 40374@item qTfP 40375@cindex @samp{qTfP} packet 40376@itemx qTsP 40377@cindex @samp{qTsP} packet 40378These packets request data about tracepoints that are being used by 40379the target. @value{GDBN} sends @code{qTfP} to get the first piece 40380of data, and multiple @code{qTsP} to get additional pieces. Replies 40381to these packets generally take the form of the @code{QTDP} packets 40382that define tracepoints. (FIXME add detailed syntax) 40383 40384@item qTfV 40385@cindex @samp{qTfV} packet 40386@itemx qTsV 40387@cindex @samp{qTsV} packet 40388These packets request data about trace state variables that are on the 40389target. @value{GDBN} sends @code{qTfV} to get the first vari of data, 40390and multiple @code{qTsV} to get additional variables. Replies to 40391these packets follow the syntax of the @code{QTDV} packets that define 40392trace state variables. 40393 40394@item qTfSTM 40395@itemx qTsSTM 40396@anchor{qTfSTM} 40397@anchor{qTsSTM} 40398@cindex @samp{qTfSTM} packet 40399@cindex @samp{qTsSTM} packet 40400These packets request data about static tracepoint markers that exist 40401in the target program. @value{GDBN} sends @code{qTfSTM} to get the 40402first piece of data, and multiple @code{qTsSTM} to get additional 40403pieces. Replies to these packets take the following form: 40404 40405Reply: 40406@table @samp 40407@item m @var{address}:@var{id}:@var{extra} 40408A single marker 40409@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{} 40410a comma-separated list of markers 40411@item l 40412(lower case letter @samp{L}) denotes end of list. 40413@item E @var{nn} 40414An error occurred. The error number @var{nn} is given as hex digits. 40415@item @w{} 40416An empty reply indicates that the request is not supported by the 40417stub. 40418@end table 40419 40420The @var{address} is encoded in hex; 40421@var{id} and @var{extra} are strings encoded in hex. 40422 40423In response to each query, the target will reply with a list of one or 40424more markers, separated by commas. @value{GDBN} will respond to each 40425reply with a request for more markers (using the @samp{qs} form of the 40426query), until the target responds with @samp{l} (lower-case ell, for 40427@dfn{last}). 40428 40429@item qTSTMat:@var{address} 40430@anchor{qTSTMat} 40431@cindex @samp{qTSTMat} packet 40432This packets requests data about static tracepoint markers in the 40433target program at @var{address}. Replies to this packet follow the 40434syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static 40435tracepoint markers. 40436 40437@item QTSave:@var{filename} 40438@cindex @samp{QTSave} packet 40439This packet directs the target to save trace data to the file name 40440@var{filename} in the target's filesystem. The @var{filename} is encoded 40441as a hex string; the interpretation of the file name (relative vs 40442absolute, wild cards, etc) is up to the target. 40443 40444@item qTBuffer:@var{offset},@var{len} 40445@cindex @samp{qTBuffer} packet 40446Return up to @var{len} bytes of the current contents of trace buffer, 40447starting at @var{offset}. The trace buffer is treated as if it were 40448a contiguous collection of traceframes, as per the trace file format. 40449The reply consists as many hex-encoded bytes as the target can deliver 40450in a packet; it is not an error to return fewer than were asked for. 40451A reply consisting of just @code{l} indicates that no bytes are 40452available. 40453 40454@item QTBuffer:circular:@var{value} 40455This packet directs the target to use a circular trace buffer if 40456@var{value} is 1, or a linear buffer if the value is 0. 40457 40458@item QTBuffer:size:@var{size} 40459@anchor{QTBuffer-size} 40460@cindex @samp{QTBuffer size} packet 40461This packet directs the target to make the trace buffer be of size 40462@var{size} if possible. A value of @code{-1} tells the target to 40463use whatever size it prefers. 40464 40465@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{} 40466@cindex @samp{QTNotes} packet 40467This packet adds optional textual notes to the trace run. Allowable 40468types include @code{user}, @code{notes}, and @code{tstop}, the 40469@var{text} fields are arbitrary strings, hex-encoded. 40470 40471@end table 40472 40473@subsection Relocate instruction reply packet 40474When installing fast tracepoints in memory, the target may need to 40475relocate the instruction currently at the tracepoint address to a 40476different address in memory. For most instructions, a simple copy is 40477enough, but, for example, call instructions that implicitly push the 40478return address on the stack, and relative branches or other 40479PC-relative instructions require offset adjustment, so that the effect 40480of executing the instruction at a different address is the same as if 40481it had executed in the original location. 40482 40483In response to several of the tracepoint packets, the target may also 40484respond with a number of intermediate @samp{qRelocInsn} request 40485packets before the final result packet, to have @value{GDBN} handle 40486this relocation operation. If a packet supports this mechanism, its 40487documentation will explicitly say so. See for example the above 40488descriptions for the @samp{QTStart} and @samp{QTDP} packets. The 40489format of the request is: 40490 40491@table @samp 40492@item qRelocInsn:@var{from};@var{to} 40493 40494This requests @value{GDBN} to copy instruction at address @var{from} 40495to address @var{to}, possibly adjusted so that executing the 40496instruction at @var{to} has the same effect as executing it at 40497@var{from}. @value{GDBN} writes the adjusted instruction to target 40498memory starting at @var{to}. 40499@end table 40500 40501Replies: 40502@table @samp 40503@item qRelocInsn:@var{adjusted_size} 40504Informs the stub the relocation is complete. The @var{adjusted_size} is 40505the length in bytes of resulting relocated instruction sequence. 40506@item E @var{NN} 40507A badly formed request was detected, or an error was encountered while 40508relocating the instruction. 40509@end table 40510 40511@node Host I/O Packets 40512@section Host I/O Packets 40513@cindex Host I/O, remote protocol 40514@cindex file transfer, remote protocol 40515 40516The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O 40517operations on the far side of a remote link. For example, Host I/O is 40518used to upload and download files to a remote target with its own 40519filesystem. Host I/O uses the same constant values and data structure 40520layout as the target-initiated File-I/O protocol. However, the 40521Host I/O packets are structured differently. The target-initiated 40522protocol relies on target memory to store parameters and buffers. 40523Host I/O requests are initiated by @value{GDBN}, and the 40524target's memory is not involved. @xref{File-I/O Remote Protocol 40525Extension}, for more details on the target-initiated protocol. 40526 40527The Host I/O request packets all encode a single operation along with 40528its arguments. They have this format: 40529 40530@table @samp 40531 40532@item vFile:@var{operation}: @var{parameter}@dots{} 40533@var{operation} is the name of the particular request; the target 40534should compare the entire packet name up to the second colon when checking 40535for a supported operation. The format of @var{parameter} depends on 40536the operation. Numbers are always passed in hexadecimal. Negative 40537numbers have an explicit minus sign (i.e.@: two's complement is not 40538used). Strings (e.g.@: filenames) are encoded as a series of 40539hexadecimal bytes. The last argument to a system call may be a 40540buffer of escaped binary data (@pxref{Binary Data}). 40541 40542@end table 40543 40544The valid responses to Host I/O packets are: 40545 40546@table @samp 40547 40548@item F @var{result} [, @var{errno}] [; @var{attachment}] 40549@var{result} is the integer value returned by this operation, usually 40550non-negative for success and -1 for errors. If an error has occured, 40551@var{errno} will be included in the result specifying a 40552value defined by the File-I/O protocol (@pxref{Errno Values}). For 40553operations which return data, @var{attachment} supplies the data as a 40554binary buffer. Binary buffers in response packets are escaped in the 40555normal way (@pxref{Binary Data}). See the individual packet 40556documentation for the interpretation of @var{result} and 40557@var{attachment}. 40558 40559@item @w{} 40560An empty response indicates that this operation is not recognized. 40561 40562@end table 40563 40564These are the supported Host I/O operations: 40565 40566@table @samp 40567@item vFile:open: @var{filename}, @var{flags}, @var{mode} 40568Open a file at @var{filename} and return a file descriptor for it, or 40569return -1 if an error occurs. The @var{filename} is a string, 40570@var{flags} is an integer indicating a mask of open flags 40571(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask 40572of mode bits to use if the file is created (@pxref{mode_t Values}). 40573@xref{open}, for details of the open flags and mode values. 40574 40575@item vFile:close: @var{fd} 40576Close the open file corresponding to @var{fd} and return 0, or 40577-1 if an error occurs. 40578 40579@item vFile:pread: @var{fd}, @var{count}, @var{offset} 40580Read data from the open file corresponding to @var{fd}. Up to 40581@var{count} bytes will be read from the file, starting at @var{offset} 40582relative to the start of the file. The target may read fewer bytes; 40583common reasons include packet size limits and an end-of-file 40584condition. The number of bytes read is returned. Zero should only be 40585returned for a successful read at the end of the file, or if 40586@var{count} was zero. 40587 40588The data read should be returned as a binary attachment on success. 40589If zero bytes were read, the response should include an empty binary 40590attachment (i.e.@: a trailing semicolon). The return value is the 40591number of target bytes read; the binary attachment may be longer if 40592some characters were escaped. 40593 40594@item vFile:pwrite: @var{fd}, @var{offset}, @var{data} 40595Write @var{data} (a binary buffer) to the open file corresponding 40596to @var{fd}. Start the write at @var{offset} from the start of the 40597file. Unlike many @code{write} system calls, there is no 40598separate @var{count} argument; the length of @var{data} in the 40599packet is used. @samp{vFile:write} returns the number of bytes written, 40600which may be shorter than the length of @var{data}, or -1 if an 40601error occurred. 40602 40603@item vFile:fstat: @var{fd} 40604Get information about the open file corresponding to @var{fd}. 40605On success the information is returned as a binary attachment 40606and the return value is the size of this attachment in bytes. 40607If an error occurs the return value is -1. The format of the 40608returned binary attachment is as described in @ref{struct stat}. 40609 40610@item vFile:unlink: @var{filename} 40611Delete the file at @var{filename} on the target. Return 0, 40612or -1 if an error occurs. The @var{filename} is a string. 40613 40614@item vFile:readlink: @var{filename} 40615Read value of symbolic link @var{filename} on the target. Return 40616the number of bytes read, or -1 if an error occurs. 40617 40618The data read should be returned as a binary attachment on success. 40619If zero bytes were read, the response should include an empty binary 40620attachment (i.e.@: a trailing semicolon). The return value is the 40621number of target bytes read; the binary attachment may be longer if 40622some characters were escaped. 40623 40624@item vFile:setfs: @var{pid} 40625Select the filesystem on which @code{vFile} operations with 40626@var{filename} arguments will operate. This is required for 40627@value{GDBN} to be able to access files on remote targets where 40628the remote stub does not share a common filesystem with the 40629inferior(s). 40630 40631If @var{pid} is nonzero, select the filesystem as seen by process 40632@var{pid}. If @var{pid} is zero, select the filesystem as seen by 40633the remote stub. Return 0 on success, or -1 if an error occurs. 40634If @code{vFile:setfs:} indicates success, the selected filesystem 40635remains selected until the next successful @code{vFile:setfs:} 40636operation. 40637 40638@end table 40639 40640@node Interrupts 40641@section Interrupts 40642@cindex interrupts (remote protocol) 40643@anchor{interrupting remote targets} 40644 40645In all-stop mode, when a program on the remote target is running, 40646@value{GDBN} may attempt to interrupt it by sending a @samp{Ctrl-C}, 40647@code{BREAK} or a @code{BREAK} followed by @code{g}, control of which 40648is specified via @value{GDBN}'s @samp{interrupt-sequence}. 40649 40650The precise meaning of @code{BREAK} is defined by the transport 40651mechanism and may, in fact, be undefined. @value{GDBN} does not 40652currently define a @code{BREAK} mechanism for any of the network 40653interfaces except for TCP, in which case @value{GDBN} sends the 40654@code{telnet} BREAK sequence. 40655 40656@samp{Ctrl-C}, on the other hand, is defined and implemented for all 40657transport mechanisms. It is represented by sending the single byte 40658@code{0x03} without any of the usual packet overhead described in 40659the Overview section (@pxref{Overview}). When a @code{0x03} byte is 40660transmitted as part of a packet, it is considered to be packet data 40661and does @emph{not} represent an interrupt. E.g., an @samp{X} packet 40662(@pxref{X packet}), used for binary downloads, may include an unescaped 40663@code{0x03} as part of its packet. 40664 40665@code{BREAK} followed by @code{g} is also known as Magic SysRq g. 40666When Linux kernel receives this sequence from serial port, 40667it stops execution and connects to gdb. 40668 40669In non-stop mode, because packet resumptions are asynchronous 40670(@pxref{vCont packet}), @value{GDBN} is always free to send a remote 40671command to the remote stub, even when the target is running. For that 40672reason, @value{GDBN} instead sends a regular packet (@pxref{vCtrlC 40673packet}) with the usual packet framing instead of the single byte 40674@code{0x03}. 40675 40676Stubs are not required to recognize these interrupt mechanisms and the 40677precise meaning associated with receipt of the interrupt is 40678implementation defined. If the target supports debugging of multiple 40679threads and/or processes, it should attempt to interrupt all 40680currently-executing threads and processes. 40681If the stub is successful at interrupting the 40682running program, it should send one of the stop 40683reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result 40684of successfully stopping the program in all-stop mode, and a stop reply 40685for each stopped thread in non-stop mode. 40686Interrupts received while the 40687program is stopped are queued and the program will be interrupted when 40688it is resumed next time. 40689 40690@node Notification Packets 40691@section Notification Packets 40692@cindex notification packets 40693@cindex packets, notification 40694 40695The @value{GDBN} remote serial protocol includes @dfn{notifications}, 40696packets that require no acknowledgment. Both the GDB and the stub 40697may send notifications (although the only notifications defined at 40698present are sent by the stub). Notifications carry information 40699without incurring the round-trip latency of an acknowledgment, and so 40700are useful for low-impact communications where occasional packet loss 40701is not a problem. 40702 40703A notification packet has the form @samp{% @var{data} # 40704@var{checksum}}, where @var{data} is the content of the notification, 40705and @var{checksum} is a checksum of @var{data}, computed and formatted 40706as for ordinary @value{GDBN} packets. A notification's @var{data} 40707never contains @samp{$}, @samp{%} or @samp{#} characters. Upon 40708receiving a notification, the recipient sends no @samp{+} or @samp{-} 40709to acknowledge the notification's receipt or to report its corruption. 40710 40711Every notification's @var{data} begins with a name, which contains no 40712colon characters, followed by a colon character. 40713 40714Recipients should silently ignore corrupted notifications and 40715notifications they do not understand. Recipients should restart 40716timeout periods on receipt of a well-formed notification, whether or 40717not they understand it. 40718 40719Senders should only send the notifications described here when this 40720protocol description specifies that they are permitted. In the 40721future, we may extend the protocol to permit existing notifications in 40722new contexts; this rule helps older senders avoid confusing newer 40723recipients. 40724 40725(Older versions of @value{GDBN} ignore bytes received until they see 40726the @samp{$} byte that begins an ordinary packet, so new stubs may 40727transmit notifications without fear of confusing older clients. There 40728are no notifications defined for @value{GDBN} to send at the moment, but we 40729assume that most older stubs would ignore them, as well.) 40730 40731Each notification is comprised of three parts: 40732@table @samp 40733@item @var{name}:@var{event} 40734The notification packet is sent by the side that initiates the 40735exchange (currently, only the stub does that), with @var{event} 40736carrying the specific information about the notification, and 40737@var{name} specifying the name of the notification. 40738@item @var{ack} 40739The acknowledge sent by the other side, usually @value{GDBN}, to 40740acknowledge the exchange and request the event. 40741@end table 40742 40743The purpose of an asynchronous notification mechanism is to report to 40744@value{GDBN} that something interesting happened in the remote stub. 40745 40746The remote stub may send notification @var{name}:@var{event} 40747at any time, but @value{GDBN} acknowledges the notification when 40748appropriate. The notification event is pending before @value{GDBN} 40749acknowledges. Only one notification at a time may be pending; if 40750additional events occur before @value{GDBN} has acknowledged the 40751previous notification, they must be queued by the stub for later 40752synchronous transmission in response to @var{ack} packets from 40753@value{GDBN}. Because the notification mechanism is unreliable, 40754the stub is permitted to resend a notification if it believes 40755@value{GDBN} may not have received it. 40756 40757Specifically, notifications may appear when @value{GDBN} is not 40758otherwise reading input from the stub, or when @value{GDBN} is 40759expecting to read a normal synchronous response or a 40760@samp{+}/@samp{-} acknowledgment to a packet it has sent. 40761Notification packets are distinct from any other communication from 40762the stub so there is no ambiguity. 40763 40764After receiving a notification, @value{GDBN} shall acknowledge it by 40765sending a @var{ack} packet as a regular, synchronous request to the 40766stub. Such acknowledgment is not required to happen immediately, as 40767@value{GDBN} is permitted to send other, unrelated packets to the 40768stub first, which the stub should process normally. 40769 40770Upon receiving a @var{ack} packet, if the stub has other queued 40771events to report to @value{GDBN}, it shall respond by sending a 40772normal @var{event}. @value{GDBN} shall then send another @var{ack} 40773packet to solicit further responses; again, it is permitted to send 40774other, unrelated packets as well which the stub should process 40775normally. 40776 40777If the stub receives a @var{ack} packet and there are no additional 40778@var{event} to report, the stub shall return an @samp{OK} response. 40779At this point, @value{GDBN} has finished processing a notification 40780and the stub has completed sending any queued events. @value{GDBN} 40781won't accept any new notifications until the final @samp{OK} is 40782received . If further notification events occur, the stub shall send 40783a new notification, @value{GDBN} shall accept the notification, and 40784the process shall be repeated. 40785 40786The process of asynchronous notification can be illustrated by the 40787following example: 40788@smallexample 40789<- @code{%Stop:T0505:98e7ffbf;04:4ce6ffbf;08:b1b6e54c;thread:p7526.7526;core:0;} 40790@code{...} 40791-> @code{vStopped} 40792<- @code{T0505:68f37db7;04:40f37db7;08:63850408;thread:p7526.7528;core:0;} 40793-> @code{vStopped} 40794<- @code{T0505:68e3fdb6;04:40e3fdb6;08:63850408;thread:p7526.7529;core:0;} 40795-> @code{vStopped} 40796<- @code{OK} 40797@end smallexample 40798 40799The following notifications are defined: 40800@multitable @columnfractions 0.12 0.12 0.38 0.38 40801 40802@item Notification 40803@tab Ack 40804@tab Event 40805@tab Description 40806 40807@item Stop 40808@tab vStopped 40809@tab @var{reply}. The @var{reply} has the form of a stop reply, as 40810described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop}, 40811for information on how these notifications are acknowledged by 40812@value{GDBN}. 40813@tab Report an asynchronous stop event in non-stop mode. 40814 40815@end multitable 40816 40817@node Remote Non-Stop 40818@section Remote Protocol Support for Non-Stop Mode 40819 40820@value{GDBN}'s remote protocol supports non-stop debugging of 40821multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub 40822supports non-stop mode, it should report that to @value{GDBN} by including 40823@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}). 40824 40825@value{GDBN} typically sends a @samp{QNonStop} packet only when 40826establishing a new connection with the stub. Entering non-stop mode 40827does not alter the state of any currently-running threads, but targets 40828must stop all threads in any already-attached processes when entering 40829all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to 40830probe the target state after a mode change. 40831 40832In non-stop mode, when an attached process encounters an event that 40833would otherwise be reported with a stop reply, it uses the 40834asynchronous notification mechanism (@pxref{Notification Packets}) to 40835inform @value{GDBN}. In contrast to all-stop mode, where all threads 40836in all processes are stopped when a stop reply is sent, in non-stop 40837mode only the thread reporting the stop event is stopped. That is, 40838when reporting a @samp{S} or @samp{T} response to indicate completion 40839of a step operation, hitting a breakpoint, or a fault, only the 40840affected thread is stopped; any other still-running threads continue 40841to run. When reporting a @samp{W} or @samp{X} response, all running 40842threads belonging to other attached processes continue to run. 40843 40844In non-stop mode, the target shall respond to the @samp{?} packet as 40845follows. First, any incomplete stop reply notification/@samp{vStopped} 40846sequence in progress is abandoned. The target must begin a new 40847sequence reporting stop events for all stopped threads, whether or not 40848it has previously reported those events to @value{GDBN}. The first 40849stop reply is sent as a synchronous reply to the @samp{?} packet, and 40850subsequent stop replies are sent as responses to @samp{vStopped} packets 40851using the mechanism described above. The target must not send 40852asynchronous stop reply notifications until the sequence is complete. 40853If all threads are running when the target receives the @samp{?} packet, 40854or if the target is not attached to any process, it shall respond 40855@samp{OK}. 40856 40857If the stub supports non-stop mode, it should also support the 40858@samp{swbreak} stop reason if software breakpoints are supported, and 40859the @samp{hwbreak} stop reason if hardware breakpoints are supported 40860(@pxref{swbreak stop reason}). This is because given the asynchronous 40861nature of non-stop mode, between the time a thread hits a breakpoint 40862and the time the event is finally processed by @value{GDBN}, the 40863breakpoint may have already been removed from the target. Due to 40864this, @value{GDBN} needs to be able to tell whether a trap stop was 40865caused by a delayed breakpoint event, which should be ignored, as 40866opposed to a random trap signal, which should be reported to the user. 40867Note the @samp{swbreak} feature implies that the target is responsible 40868for adjusting the PC when a software breakpoint triggers, if 40869necessary, such as on the x86 architecture. 40870 40871@node Packet Acknowledgment 40872@section Packet Acknowledgment 40873 40874@cindex acknowledgment, for @value{GDBN} remote 40875@cindex packet acknowledgment, for @value{GDBN} remote 40876By default, when either the host or the target machine receives a packet, 40877the first response expected is an acknowledgment: either @samp{+} (to indicate 40878the package was received correctly) or @samp{-} (to request retransmission). 40879This mechanism allows the @value{GDBN} remote protocol to operate over 40880unreliable transport mechanisms, such as a serial line. 40881 40882In cases where the transport mechanism is itself reliable (such as a pipe or 40883TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant. 40884It may be desirable to disable them in that case to reduce communication 40885overhead, or for other reasons. This can be accomplished by means of the 40886@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}. 40887 40888When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or 40889expect @samp{+}/@samp{-} protocol acknowledgments. The packet 40890and response format still includes the normal checksum, as described in 40891@ref{Overview}, but the checksum may be ignored by the receiver. 40892 40893If the stub supports @samp{QStartNoAckMode} and prefers to operate in 40894no-acknowledgment mode, it should report that to @value{GDBN} 40895by including @samp{QStartNoAckMode+} in its response to @samp{qSupported}; 40896@pxref{qSupported}. 40897If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been 40898disabled via the @code{set remote noack-packet off} command 40899(@pxref{Remote Configuration}), 40900@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub. 40901Only then may the stub actually turn off packet acknowledgments. 40902@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK} 40903response, which can be safely ignored by the stub. 40904 40905Note that @code{set remote noack-packet} command only affects negotiation 40906between @value{GDBN} and the stub when subsequent connections are made; 40907it does not affect the protocol acknowledgment state for any current 40908connection. 40909Since @samp{+}/@samp{-} acknowledgments are enabled by default when a 40910new connection is established, 40911there is also no protocol request to re-enable the acknowledgments 40912for the current connection, once disabled. 40913 40914@node Examples 40915@section Examples 40916 40917Example sequence of a target being re-started. Notice how the restart 40918does not get any direct output: 40919 40920@smallexample 40921-> @code{R00} 40922<- @code{+} 40923@emph{target restarts} 40924-> @code{?} 40925<- @code{+} 40926<- @code{T001:1234123412341234} 40927-> @code{+} 40928@end smallexample 40929 40930Example sequence of a target being stepped by a single instruction: 40931 40932@smallexample 40933-> @code{G1445@dots{}} 40934<- @code{+} 40935-> @code{s} 40936<- @code{+} 40937@emph{time passes} 40938<- @code{T001:1234123412341234} 40939-> @code{+} 40940-> @code{g} 40941<- @code{+} 40942<- @code{1455@dots{}} 40943-> @code{+} 40944@end smallexample 40945 40946@node File-I/O Remote Protocol Extension 40947@section File-I/O Remote Protocol Extension 40948@cindex File-I/O remote protocol extension 40949 40950@menu 40951* File-I/O Overview:: 40952* Protocol Basics:: 40953* The F Request Packet:: 40954* The F Reply Packet:: 40955* The Ctrl-C Message:: 40956* Console I/O:: 40957* List of Supported Calls:: 40958* Protocol-specific Representation of Datatypes:: 40959* Constants:: 40960* File-I/O Examples:: 40961@end menu 40962 40963@node File-I/O Overview 40964@subsection File-I/O Overview 40965@cindex file-i/o overview 40966 40967The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the 40968target to use the host's file system and console I/O to perform various 40969system calls. System calls on the target system are translated into a 40970remote protocol packet to the host system, which then performs the needed 40971actions and returns a response packet to the target system. 40972This simulates file system operations even on targets that lack file systems. 40973 40974The protocol is defined to be independent of both the host and target systems. 40975It uses its own internal representation of datatypes and values. Both 40976@value{GDBN} and the target's @value{GDBN} stub are responsible for 40977translating the system-dependent value representations into the internal 40978protocol representations when data is transmitted. 40979 40980The communication is synchronous. A system call is possible only when 40981@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S} 40982or @samp{s} packets. While @value{GDBN} handles the request for a system call, 40983the target is stopped to allow deterministic access to the target's 40984memory. Therefore File-I/O is not interruptible by target signals. On 40985the other hand, it is possible to interrupt File-I/O by a user interrupt 40986(@samp{Ctrl-C}) within @value{GDBN}. 40987 40988The target's request to perform a host system call does not finish 40989the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means, 40990after finishing the system call, the target returns to continuing the 40991previous activity (continue, step). No additional continue or step 40992request from @value{GDBN} is required. 40993 40994@smallexample 40995(@value{GDBP}) continue 40996 <- target requests 'system call X' 40997 target is stopped, @value{GDBN} executes system call 40998 -> @value{GDBN} returns result 40999 ... target continues, @value{GDBN} returns to wait for the target 41000 <- target hits breakpoint and sends a Txx packet 41001@end smallexample 41002 41003The protocol only supports I/O on the console and to regular files on 41004the host file system. Character or block special devices, pipes, 41005named pipes, sockets or any other communication method on the host 41006system are not supported by this protocol. 41007 41008File I/O is not supported in non-stop mode. 41009 41010@node Protocol Basics 41011@subsection Protocol Basics 41012@cindex protocol basics, file-i/o 41013 41014The File-I/O protocol uses the @code{F} packet as the request as well 41015as reply packet. Since a File-I/O system call can only occur when 41016@value{GDBN} is waiting for a response from the continuing or stepping target, 41017the File-I/O request is a reply that @value{GDBN} has to expect as a result 41018of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet. 41019This @code{F} packet contains all information needed to allow @value{GDBN} 41020to call the appropriate host system call: 41021 41022@itemize @bullet 41023@item 41024A unique identifier for the requested system call. 41025 41026@item 41027All parameters to the system call. Pointers are given as addresses 41028in the target memory address space. Pointers to strings are given as 41029pointer/length pair. Numerical values are given as they are. 41030Numerical control flags are given in a protocol-specific representation. 41031 41032@end itemize 41033 41034At this point, @value{GDBN} has to perform the following actions. 41035 41036@itemize @bullet 41037@item 41038If the parameters include pointer values to data needed as input to a 41039system call, @value{GDBN} requests this data from the target with a 41040standard @code{m} packet request. This additional communication has to be 41041expected by the target implementation and is handled as any other @code{m} 41042packet. 41043 41044@item 41045@value{GDBN} translates all value from protocol representation to host 41046representation as needed. Datatypes are coerced into the host types. 41047 41048@item 41049@value{GDBN} calls the system call. 41050 41051@item 41052It then coerces datatypes back to protocol representation. 41053 41054@item 41055If the system call is expected to return data in buffer space specified 41056by pointer parameters to the call, the data is transmitted to the 41057target using a @code{M} or @code{X} packet. This packet has to be expected 41058by the target implementation and is handled as any other @code{M} or @code{X} 41059packet. 41060 41061@end itemize 41062 41063Eventually @value{GDBN} replies with another @code{F} packet which contains all 41064necessary information for the target to continue. This at least contains 41065 41066@itemize @bullet 41067@item 41068Return value. 41069 41070@item 41071@code{errno}, if has been changed by the system call. 41072 41073@item 41074``Ctrl-C'' flag. 41075 41076@end itemize 41077 41078After having done the needed type and value coercion, the target continues 41079the latest continue or step action. 41080 41081@node The F Request Packet 41082@subsection The @code{F} Request Packet 41083@cindex file-i/o request packet 41084@cindex @code{F} request packet 41085 41086The @code{F} request packet has the following format: 41087 41088@table @samp 41089@item F@var{call-id},@var{parameter@dots{}} 41090 41091@var{call-id} is the identifier to indicate the host system call to be called. 41092This is just the name of the function. 41093 41094@var{parameter@dots{}} are the parameters to the system call. 41095Parameters are hexadecimal integer values, either the actual values in case 41096of scalar datatypes, pointers to target buffer space in case of compound 41097datatypes and unspecified memory areas, or pointer/length pairs in case 41098of string parameters. These are appended to the @var{call-id} as a 41099comma-delimited list. All values are transmitted in ASCII 41100string representation, pointer/length pairs separated by a slash. 41101 41102@end table 41103 41104 41105 41106@node The F Reply Packet 41107@subsection The @code{F} Reply Packet 41108@cindex file-i/o reply packet 41109@cindex @code{F} reply packet 41110 41111The @code{F} reply packet has the following format: 41112 41113@table @samp 41114 41115@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment} 41116 41117@var{retcode} is the return code of the system call as hexadecimal value. 41118 41119@var{errno} is the @code{errno} set by the call, in protocol-specific 41120representation. 41121This parameter can be omitted if the call was successful. 41122 41123@var{Ctrl-C flag} is only sent if the user requested a break. In this 41124case, @var{errno} must be sent as well, even if the call was successful. 41125The @var{Ctrl-C flag} itself consists of the character @samp{C}: 41126 41127@smallexample 41128F0,0,C 41129@end smallexample 41130 41131@noindent 41132or, if the call was interrupted before the host call has been performed: 41133 41134@smallexample 41135F-1,4,C 41136@end smallexample 41137 41138@noindent 41139assuming 4 is the protocol-specific representation of @code{EINTR}. 41140 41141@end table 41142 41143 41144@node The Ctrl-C Message 41145@subsection The @samp{Ctrl-C} Message 41146@cindex ctrl-c message, in file-i/o protocol 41147 41148If the @samp{Ctrl-C} flag is set in the @value{GDBN} 41149reply packet (@pxref{The F Reply Packet}), 41150the target should behave as if it had 41151gotten a break message. The meaning for the target is ``system call 41152interrupted by @code{SIGINT}''. Consequentially, the target should actually stop 41153(as with a break message) and return to @value{GDBN} with a @code{T02} 41154packet. 41155 41156It's important for the target to know in which 41157state the system call was interrupted. There are two possible cases: 41158 41159@itemize @bullet 41160@item 41161The system call hasn't been performed on the host yet. 41162 41163@item 41164The system call on the host has been finished. 41165 41166@end itemize 41167 41168These two states can be distinguished by the target by the value of the 41169returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system 41170call hasn't been performed. This is equivalent to the @code{EINTR} handling 41171on POSIX systems. In any other case, the target may presume that the 41172system call has been finished --- successfully or not --- and should behave 41173as if the break message arrived right after the system call. 41174 41175@value{GDBN} must behave reliably. If the system call has not been called 41176yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as 41177@code{errno} in the packet. If the system call on the host has been finished 41178before the user requests a break, the full action must be finished by 41179@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary. 41180The @code{F} packet may only be sent when either nothing has happened 41181or the full action has been completed. 41182 41183@node Console I/O 41184@subsection Console I/O 41185@cindex console i/o as part of file-i/o 41186 41187By default and if not explicitly closed by the target system, the file 41188descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output 41189on the @value{GDBN} console is handled as any other file output operation 41190(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled 41191by @value{GDBN} so that after the target read request from file descriptor 411920 all following typing is buffered until either one of the following 41193conditions is met: 41194 41195@itemize @bullet 41196@item 41197The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the 41198@code{read} 41199system call is treated as finished. 41200 41201@item 41202The user presses @key{RET}. This is treated as end of input with a trailing 41203newline. 41204 41205@item 41206The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing 41207character (neither newline nor @samp{Ctrl-D}) is appended to the input. 41208 41209@end itemize 41210 41211If the user has typed more characters than fit in the buffer given to 41212the @code{read} call, the trailing characters are buffered in @value{GDBN} until 41213either another @code{read(0, @dots{})} is requested by the target, or debugging 41214is stopped at the user's request. 41215 41216 41217@node List of Supported Calls 41218@subsection List of Supported Calls 41219@cindex list of supported file-i/o calls 41220 41221@menu 41222* open:: 41223* close:: 41224* read:: 41225* write:: 41226* lseek:: 41227* rename:: 41228* unlink:: 41229* stat/fstat:: 41230* gettimeofday:: 41231* isatty:: 41232* system:: 41233@end menu 41234 41235@node open 41236@unnumberedsubsubsec open 41237@cindex open, file-i/o system call 41238 41239@table @asis 41240@item Synopsis: 41241@smallexample 41242int open(const char *pathname, int flags); 41243int open(const char *pathname, int flags, mode_t mode); 41244@end smallexample 41245 41246@item Request: 41247@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}} 41248 41249@noindent 41250@var{flags} is the bitwise @code{OR} of the following values: 41251 41252@table @code 41253@item O_CREAT 41254If the file does not exist it will be created. The host 41255rules apply as far as file ownership and time stamps 41256are concerned. 41257 41258@item O_EXCL 41259When used with @code{O_CREAT}, if the file already exists it is 41260an error and open() fails. 41261 41262@item O_TRUNC 41263If the file already exists and the open mode allows 41264writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be 41265truncated to zero length. 41266 41267@item O_APPEND 41268The file is opened in append mode. 41269 41270@item O_RDONLY 41271The file is opened for reading only. 41272 41273@item O_WRONLY 41274The file is opened for writing only. 41275 41276@item O_RDWR 41277The file is opened for reading and writing. 41278@end table 41279 41280@noindent 41281Other bits are silently ignored. 41282 41283 41284@noindent 41285@var{mode} is the bitwise @code{OR} of the following values: 41286 41287@table @code 41288@item S_IRUSR 41289User has read permission. 41290 41291@item S_IWUSR 41292User has write permission. 41293 41294@item S_IRGRP 41295Group has read permission. 41296 41297@item S_IWGRP 41298Group has write permission. 41299 41300@item S_IROTH 41301Others have read permission. 41302 41303@item S_IWOTH 41304Others have write permission. 41305@end table 41306 41307@noindent 41308Other bits are silently ignored. 41309 41310 41311@item Return value: 41312@code{open} returns the new file descriptor or -1 if an error 41313occurred. 41314 41315@item Errors: 41316 41317@table @code 41318@item EEXIST 41319@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used. 41320 41321@item EISDIR 41322@var{pathname} refers to a directory. 41323 41324@item EACCES 41325The requested access is not allowed. 41326 41327@item ENAMETOOLONG 41328@var{pathname} was too long. 41329 41330@item ENOENT 41331A directory component in @var{pathname} does not exist. 41332 41333@item ENODEV 41334@var{pathname} refers to a device, pipe, named pipe or socket. 41335 41336@item EROFS 41337@var{pathname} refers to a file on a read-only filesystem and 41338write access was requested. 41339 41340@item EFAULT 41341@var{pathname} is an invalid pointer value. 41342 41343@item ENOSPC 41344No space on device to create the file. 41345 41346@item EMFILE 41347The process already has the maximum number of files open. 41348 41349@item ENFILE 41350The limit on the total number of files open on the system 41351has been reached. 41352 41353@item EINTR 41354The call was interrupted by the user. 41355@end table 41356 41357@end table 41358 41359@node close 41360@unnumberedsubsubsec close 41361@cindex close, file-i/o system call 41362 41363@table @asis 41364@item Synopsis: 41365@smallexample 41366int close(int fd); 41367@end smallexample 41368 41369@item Request: 41370@samp{Fclose,@var{fd}} 41371 41372@item Return value: 41373@code{close} returns zero on success, or -1 if an error occurred. 41374 41375@item Errors: 41376 41377@table @code 41378@item EBADF 41379@var{fd} isn't a valid open file descriptor. 41380 41381@item EINTR 41382The call was interrupted by the user. 41383@end table 41384 41385@end table 41386 41387@node read 41388@unnumberedsubsubsec read 41389@cindex read, file-i/o system call 41390 41391@table @asis 41392@item Synopsis: 41393@smallexample 41394int read(int fd, void *buf, unsigned int count); 41395@end smallexample 41396 41397@item Request: 41398@samp{Fread,@var{fd},@var{bufptr},@var{count}} 41399 41400@item Return value: 41401On success, the number of bytes read is returned. 41402Zero indicates end of file. If count is zero, read 41403returns zero as well. On error, -1 is returned. 41404 41405@item Errors: 41406 41407@table @code 41408@item EBADF 41409@var{fd} is not a valid file descriptor or is not open for 41410reading. 41411 41412@item EFAULT 41413@var{bufptr} is an invalid pointer value. 41414 41415@item EINTR 41416The call was interrupted by the user. 41417@end table 41418 41419@end table 41420 41421@node write 41422@unnumberedsubsubsec write 41423@cindex write, file-i/o system call 41424 41425@table @asis 41426@item Synopsis: 41427@smallexample 41428int write(int fd, const void *buf, unsigned int count); 41429@end smallexample 41430 41431@item Request: 41432@samp{Fwrite,@var{fd},@var{bufptr},@var{count}} 41433 41434@item Return value: 41435On success, the number of bytes written are returned. 41436Zero indicates nothing was written. On error, -1 41437is returned. 41438 41439@item Errors: 41440 41441@table @code 41442@item EBADF 41443@var{fd} is not a valid file descriptor or is not open for 41444writing. 41445 41446@item EFAULT 41447@var{bufptr} is an invalid pointer value. 41448 41449@item EFBIG 41450An attempt was made to write a file that exceeds the 41451host-specific maximum file size allowed. 41452 41453@item ENOSPC 41454No space on device to write the data. 41455 41456@item EINTR 41457The call was interrupted by the user. 41458@end table 41459 41460@end table 41461 41462@node lseek 41463@unnumberedsubsubsec lseek 41464@cindex lseek, file-i/o system call 41465 41466@table @asis 41467@item Synopsis: 41468@smallexample 41469long lseek (int fd, long offset, int flag); 41470@end smallexample 41471 41472@item Request: 41473@samp{Flseek,@var{fd},@var{offset},@var{flag}} 41474 41475@var{flag} is one of: 41476 41477@table @code 41478@item SEEK_SET 41479The offset is set to @var{offset} bytes. 41480 41481@item SEEK_CUR 41482The offset is set to its current location plus @var{offset} 41483bytes. 41484 41485@item SEEK_END 41486The offset is set to the size of the file plus @var{offset} 41487bytes. 41488@end table 41489 41490@item Return value: 41491On success, the resulting unsigned offset in bytes from 41492the beginning of the file is returned. Otherwise, a 41493value of -1 is returned. 41494 41495@item Errors: 41496 41497@table @code 41498@item EBADF 41499@var{fd} is not a valid open file descriptor. 41500 41501@item ESPIPE 41502@var{fd} is associated with the @value{GDBN} console. 41503 41504@item EINVAL 41505@var{flag} is not a proper value. 41506 41507@item EINTR 41508The call was interrupted by the user. 41509@end table 41510 41511@end table 41512 41513@node rename 41514@unnumberedsubsubsec rename 41515@cindex rename, file-i/o system call 41516 41517@table @asis 41518@item Synopsis: 41519@smallexample 41520int rename(const char *oldpath, const char *newpath); 41521@end smallexample 41522 41523@item Request: 41524@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}} 41525 41526@item Return value: 41527On success, zero is returned. On error, -1 is returned. 41528 41529@item Errors: 41530 41531@table @code 41532@item EISDIR 41533@var{newpath} is an existing directory, but @var{oldpath} is not a 41534directory. 41535 41536@item EEXIST 41537@var{newpath} is a non-empty directory. 41538 41539@item EBUSY 41540@var{oldpath} or @var{newpath} is a directory that is in use by some 41541process. 41542 41543@item EINVAL 41544An attempt was made to make a directory a subdirectory 41545of itself. 41546 41547@item ENOTDIR 41548A component used as a directory in @var{oldpath} or new 41549path is not a directory. Or @var{oldpath} is a directory 41550and @var{newpath} exists but is not a directory. 41551 41552@item EFAULT 41553@var{oldpathptr} or @var{newpathptr} are invalid pointer values. 41554 41555@item EACCES 41556No access to the file or the path of the file. 41557 41558@item ENAMETOOLONG 41559 41560@var{oldpath} or @var{newpath} was too long. 41561 41562@item ENOENT 41563A directory component in @var{oldpath} or @var{newpath} does not exist. 41564 41565@item EROFS 41566The file is on a read-only filesystem. 41567 41568@item ENOSPC 41569The device containing the file has no room for the new 41570directory entry. 41571 41572@item EINTR 41573The call was interrupted by the user. 41574@end table 41575 41576@end table 41577 41578@node unlink 41579@unnumberedsubsubsec unlink 41580@cindex unlink, file-i/o system call 41581 41582@table @asis 41583@item Synopsis: 41584@smallexample 41585int unlink(const char *pathname); 41586@end smallexample 41587 41588@item Request: 41589@samp{Funlink,@var{pathnameptr}/@var{len}} 41590 41591@item Return value: 41592On success, zero is returned. On error, -1 is returned. 41593 41594@item Errors: 41595 41596@table @code 41597@item EACCES 41598No access to the file or the path of the file. 41599 41600@item EPERM 41601The system does not allow unlinking of directories. 41602 41603@item EBUSY 41604The file @var{pathname} cannot be unlinked because it's 41605being used by another process. 41606 41607@item EFAULT 41608@var{pathnameptr} is an invalid pointer value. 41609 41610@item ENAMETOOLONG 41611@var{pathname} was too long. 41612 41613@item ENOENT 41614A directory component in @var{pathname} does not exist. 41615 41616@item ENOTDIR 41617A component of the path is not a directory. 41618 41619@item EROFS 41620The file is on a read-only filesystem. 41621 41622@item EINTR 41623The call was interrupted by the user. 41624@end table 41625 41626@end table 41627 41628@node stat/fstat 41629@unnumberedsubsubsec stat/fstat 41630@cindex fstat, file-i/o system call 41631@cindex stat, file-i/o system call 41632 41633@table @asis 41634@item Synopsis: 41635@smallexample 41636int stat(const char *pathname, struct stat *buf); 41637int fstat(int fd, struct stat *buf); 41638@end smallexample 41639 41640@item Request: 41641@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@* 41642@samp{Ffstat,@var{fd},@var{bufptr}} 41643 41644@item Return value: 41645On success, zero is returned. On error, -1 is returned. 41646 41647@item Errors: 41648 41649@table @code 41650@item EBADF 41651@var{fd} is not a valid open file. 41652 41653@item ENOENT 41654A directory component in @var{pathname} does not exist or the 41655path is an empty string. 41656 41657@item ENOTDIR 41658A component of the path is not a directory. 41659 41660@item EFAULT 41661@var{pathnameptr} is an invalid pointer value. 41662 41663@item EACCES 41664No access to the file or the path of the file. 41665 41666@item ENAMETOOLONG 41667@var{pathname} was too long. 41668 41669@item EINTR 41670The call was interrupted by the user. 41671@end table 41672 41673@end table 41674 41675@node gettimeofday 41676@unnumberedsubsubsec gettimeofday 41677@cindex gettimeofday, file-i/o system call 41678 41679@table @asis 41680@item Synopsis: 41681@smallexample 41682int gettimeofday(struct timeval *tv, void *tz); 41683@end smallexample 41684 41685@item Request: 41686@samp{Fgettimeofday,@var{tvptr},@var{tzptr}} 41687 41688@item Return value: 41689On success, 0 is returned, -1 otherwise. 41690 41691@item Errors: 41692 41693@table @code 41694@item EINVAL 41695@var{tz} is a non-NULL pointer. 41696 41697@item EFAULT 41698@var{tvptr} and/or @var{tzptr} is an invalid pointer value. 41699@end table 41700 41701@end table 41702 41703@node isatty 41704@unnumberedsubsubsec isatty 41705@cindex isatty, file-i/o system call 41706 41707@table @asis 41708@item Synopsis: 41709@smallexample 41710int isatty(int fd); 41711@end smallexample 41712 41713@item Request: 41714@samp{Fisatty,@var{fd}} 41715 41716@item Return value: 41717Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise. 41718 41719@item Errors: 41720 41721@table @code 41722@item EINTR 41723The call was interrupted by the user. 41724@end table 41725 41726@end table 41727 41728Note that the @code{isatty} call is treated as a special case: it returns 417291 to the target if the file descriptor is attached 41730to the @value{GDBN} console, 0 otherwise. Implementing through system calls 41731would require implementing @code{ioctl} and would be more complex than 41732needed. 41733 41734 41735@node system 41736@unnumberedsubsubsec system 41737@cindex system, file-i/o system call 41738 41739@table @asis 41740@item Synopsis: 41741@smallexample 41742int system(const char *command); 41743@end smallexample 41744 41745@item Request: 41746@samp{Fsystem,@var{commandptr}/@var{len}} 41747 41748@item Return value: 41749If @var{len} is zero, the return value indicates whether a shell is 41750available. A zero return value indicates a shell is not available. 41751For non-zero @var{len}, the value returned is -1 on error and the 41752return status of the command otherwise. Only the exit status of the 41753command is returned, which is extracted from the host's @code{system} 41754return value by calling @code{WEXITSTATUS(retval)}. In case 41755@file{/bin/sh} could not be executed, 127 is returned. 41756 41757@item Errors: 41758 41759@table @code 41760@item EINTR 41761The call was interrupted by the user. 41762@end table 41763 41764@end table 41765 41766@value{GDBN} takes over the full task of calling the necessary host calls 41767to perform the @code{system} call. The return value of @code{system} on 41768the host is simplified before it's returned 41769to the target. Any termination signal information from the child process 41770is discarded, and the return value consists 41771entirely of the exit status of the called command. 41772 41773Due to security concerns, the @code{system} call is by default refused 41774by @value{GDBN}. The user has to allow this call explicitly with the 41775@code{set remote system-call-allowed 1} command. 41776 41777@table @code 41778@item set remote system-call-allowed 41779@kindex set remote system-call-allowed 41780Control whether to allow the @code{system} calls in the File I/O 41781protocol for the remote target. The default is zero (disabled). 41782 41783@item show remote system-call-allowed 41784@kindex show remote system-call-allowed 41785Show whether the @code{system} calls are allowed in the File I/O 41786protocol. 41787@end table 41788 41789@node Protocol-specific Representation of Datatypes 41790@subsection Protocol-specific Representation of Datatypes 41791@cindex protocol-specific representation of datatypes, in file-i/o protocol 41792 41793@menu 41794* Integral Datatypes:: 41795* Pointer Values:: 41796* Memory Transfer:: 41797* struct stat:: 41798* struct timeval:: 41799@end menu 41800 41801@node Integral Datatypes 41802@unnumberedsubsubsec Integral Datatypes 41803@cindex integral datatypes, in file-i/o protocol 41804 41805The integral datatypes used in the system calls are @code{int}, 41806@code{unsigned int}, @code{long}, @code{unsigned long}, 41807@code{mode_t}, and @code{time_t}. 41808 41809@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are 41810implemented as 32 bit values in this protocol. 41811 41812@code{long} and @code{unsigned long} are implemented as 64 bit types. 41813 41814@xref{Limits}, for corresponding MIN and MAX values (similar to those 41815in @file{limits.h}) to allow range checking on host and target. 41816 41817@code{time_t} datatypes are defined as seconds since the Epoch. 41818 41819All integral datatypes transferred as part of a memory read or write of a 41820structured datatype e.g.@: a @code{struct stat} have to be given in big endian 41821byte order. 41822 41823@node Pointer Values 41824@unnumberedsubsubsec Pointer Values 41825@cindex pointer values, in file-i/o protocol 41826 41827Pointers to target data are transmitted as they are. An exception 41828is made for pointers to buffers for which the length isn't 41829transmitted as part of the function call, namely strings. Strings 41830are transmitted as a pointer/length pair, both as hex values, e.g.@: 41831 41832@smallexample 41833@code{1aaf/12} 41834@end smallexample 41835 41836@noindent 41837which is a pointer to data of length 18 bytes at position 0x1aaf. 41838The length is defined as the full string length in bytes, including 41839the trailing null byte. For example, the string @code{"hello world"} 41840at address 0x123456 is transmitted as 41841 41842@smallexample 41843@code{123456/d} 41844@end smallexample 41845 41846@node Memory Transfer 41847@unnumberedsubsubsec Memory Transfer 41848@cindex memory transfer, in file-i/o protocol 41849 41850Structured data which is transferred using a memory read or write (for 41851example, a @code{struct stat}) is expected to be in a protocol-specific format 41852with all scalar multibyte datatypes being big endian. Translation to 41853this representation needs to be done both by the target before the @code{F} 41854packet is sent, and by @value{GDBN} before 41855it transfers memory to the target. Transferred pointers to structured 41856data should point to the already-coerced data at any time. 41857 41858 41859@node struct stat 41860@unnumberedsubsubsec struct stat 41861@cindex struct stat, in file-i/o protocol 41862 41863The buffer of type @code{struct stat} used by the target and @value{GDBN} 41864is defined as follows: 41865 41866@smallexample 41867struct stat @{ 41868 unsigned int st_dev; /* device */ 41869 unsigned int st_ino; /* inode */ 41870 mode_t st_mode; /* protection */ 41871 unsigned int st_nlink; /* number of hard links */ 41872 unsigned int st_uid; /* user ID of owner */ 41873 unsigned int st_gid; /* group ID of owner */ 41874 unsigned int st_rdev; /* device type (if inode device) */ 41875 unsigned long st_size; /* total size, in bytes */ 41876 unsigned long st_blksize; /* blocksize for filesystem I/O */ 41877 unsigned long st_blocks; /* number of blocks allocated */ 41878 time_t st_atime; /* time of last access */ 41879 time_t st_mtime; /* time of last modification */ 41880 time_t st_ctime; /* time of last change */ 41881@}; 41882@end smallexample 41883 41884The integral datatypes conform to the definitions given in the 41885appropriate section (see @ref{Integral Datatypes}, for details) so this 41886structure is of size 64 bytes. 41887 41888The values of several fields have a restricted meaning and/or 41889range of values. 41890 41891@table @code 41892 41893@item st_dev 41894A value of 0 represents a file, 1 the console. 41895 41896@item st_ino 41897No valid meaning for the target. Transmitted unchanged. 41898 41899@item st_mode 41900Valid mode bits are described in @ref{Constants}. Any other 41901bits have currently no meaning for the target. 41902 41903@item st_uid 41904@itemx st_gid 41905@itemx st_rdev 41906No valid meaning for the target. Transmitted unchanged. 41907 41908@item st_atime 41909@itemx st_mtime 41910@itemx st_ctime 41911These values have a host and file system dependent 41912accuracy. Especially on Windows hosts, the file system may not 41913support exact timing values. 41914@end table 41915 41916The target gets a @code{struct stat} of the above representation and is 41917responsible for coercing it to the target representation before 41918continuing. 41919 41920Note that due to size differences between the host, target, and protocol 41921representations of @code{struct stat} members, these members could eventually 41922get truncated on the target. 41923 41924@node struct timeval 41925@unnumberedsubsubsec struct timeval 41926@cindex struct timeval, in file-i/o protocol 41927 41928The buffer of type @code{struct timeval} used by the File-I/O protocol 41929is defined as follows: 41930 41931@smallexample 41932struct timeval @{ 41933 time_t tv_sec; /* second */ 41934 long tv_usec; /* microsecond */ 41935@}; 41936@end smallexample 41937 41938The integral datatypes conform to the definitions given in the 41939appropriate section (see @ref{Integral Datatypes}, for details) so this 41940structure is of size 8 bytes. 41941 41942@node Constants 41943@subsection Constants 41944@cindex constants, in file-i/o protocol 41945 41946The following values are used for the constants inside of the 41947protocol. @value{GDBN} and target are responsible for translating these 41948values before and after the call as needed. 41949 41950@menu 41951* Open Flags:: 41952* mode_t Values:: 41953* Errno Values:: 41954* Lseek Flags:: 41955* Limits:: 41956@end menu 41957 41958@node Open Flags 41959@unnumberedsubsubsec Open Flags 41960@cindex open flags, in file-i/o protocol 41961 41962All values are given in hexadecimal representation. 41963 41964@smallexample 41965 O_RDONLY 0x0 41966 O_WRONLY 0x1 41967 O_RDWR 0x2 41968 O_APPEND 0x8 41969 O_CREAT 0x200 41970 O_TRUNC 0x400 41971 O_EXCL 0x800 41972@end smallexample 41973 41974@node mode_t Values 41975@unnumberedsubsubsec mode_t Values 41976@cindex mode_t values, in file-i/o protocol 41977 41978All values are given in octal representation. 41979 41980@smallexample 41981 S_IFREG 0100000 41982 S_IFDIR 040000 41983 S_IRUSR 0400 41984 S_IWUSR 0200 41985 S_IXUSR 0100 41986 S_IRGRP 040 41987 S_IWGRP 020 41988 S_IXGRP 010 41989 S_IROTH 04 41990 S_IWOTH 02 41991 S_IXOTH 01 41992@end smallexample 41993 41994@node Errno Values 41995@unnumberedsubsubsec Errno Values 41996@cindex errno values, in file-i/o protocol 41997 41998All values are given in decimal representation. 41999 42000@smallexample 42001 EPERM 1 42002 ENOENT 2 42003 EINTR 4 42004 EBADF 9 42005 EACCES 13 42006 EFAULT 14 42007 EBUSY 16 42008 EEXIST 17 42009 ENODEV 19 42010 ENOTDIR 20 42011 EISDIR 21 42012 EINVAL 22 42013 ENFILE 23 42014 EMFILE 24 42015 EFBIG 27 42016 ENOSPC 28 42017 ESPIPE 29 42018 EROFS 30 42019 ENAMETOOLONG 91 42020 EUNKNOWN 9999 42021@end smallexample 42022 42023 @code{EUNKNOWN} is used as a fallback error value if a host system returns 42024 any error value not in the list of supported error numbers. 42025 42026@node Lseek Flags 42027@unnumberedsubsubsec Lseek Flags 42028@cindex lseek flags, in file-i/o protocol 42029 42030@smallexample 42031 SEEK_SET 0 42032 SEEK_CUR 1 42033 SEEK_END 2 42034@end smallexample 42035 42036@node Limits 42037@unnumberedsubsubsec Limits 42038@cindex limits, in file-i/o protocol 42039 42040All values are given in decimal representation. 42041 42042@smallexample 42043 INT_MIN -2147483648 42044 INT_MAX 2147483647 42045 UINT_MAX 4294967295 42046 LONG_MIN -9223372036854775808 42047 LONG_MAX 9223372036854775807 42048 ULONG_MAX 18446744073709551615 42049@end smallexample 42050 42051@node File-I/O Examples 42052@subsection File-I/O Examples 42053@cindex file-i/o examples 42054 42055Example sequence of a write call, file descriptor 3, buffer is at target 42056address 0x1234, 6 bytes should be written: 42057 42058@smallexample 42059<- @code{Fwrite,3,1234,6} 42060@emph{request memory read from target} 42061-> @code{m1234,6} 42062<- XXXXXX 42063@emph{return "6 bytes written"} 42064-> @code{F6} 42065@end smallexample 42066 42067Example sequence of a read call, file descriptor 3, buffer is at target 42068address 0x1234, 6 bytes should be read: 42069 42070@smallexample 42071<- @code{Fread,3,1234,6} 42072@emph{request memory write to target} 42073-> @code{X1234,6:XXXXXX} 42074@emph{return "6 bytes read"} 42075-> @code{F6} 42076@end smallexample 42077 42078Example sequence of a read call, call fails on the host due to invalid 42079file descriptor (@code{EBADF}): 42080 42081@smallexample 42082<- @code{Fread,3,1234,6} 42083-> @code{F-1,9} 42084@end smallexample 42085 42086Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on 42087host is called: 42088 42089@smallexample 42090<- @code{Fread,3,1234,6} 42091-> @code{F-1,4,C} 42092<- @code{T02} 42093@end smallexample 42094 42095Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on 42096host is called: 42097 42098@smallexample 42099<- @code{Fread,3,1234,6} 42100-> @code{X1234,6:XXXXXX} 42101<- @code{T02} 42102@end smallexample 42103 42104@node Library List Format 42105@section Library List Format 42106@cindex library list format, remote protocol 42107 42108On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the 42109same process as your application to manage libraries. In this case, 42110@value{GDBN} can use the loader's symbol table and normal memory 42111operations to maintain a list of shared libraries. On other 42112platforms, the operating system manages loaded libraries. 42113@value{GDBN} can not retrieve the list of currently loaded libraries 42114through memory operations, so it uses the @samp{qXfer:libraries:read} 42115packet (@pxref{qXfer library list read}) instead. The remote stub 42116queries the target's operating system and reports which libraries 42117are loaded. 42118 42119The @samp{qXfer:libraries:read} packet returns an XML document which 42120lists loaded libraries and their offsets. Each library has an 42121associated name and one or more segment or section base addresses, 42122which report where the library was loaded in memory. 42123 42124For the common case of libraries that are fully linked binaries, the 42125library should have a list of segments. If the target supports 42126dynamic linking of a relocatable object file, its library XML element 42127should instead include a list of allocated sections. The segment or 42128section bases are start addresses, not relocation offsets; they do not 42129depend on the library's link-time base addresses. 42130 42131@value{GDBN} must be linked with the Expat library to support XML 42132library lists. @xref{Expat}. 42133 42134A simple memory map, with one loaded library relocated by a single 42135offset, looks like this: 42136 42137@smallexample 42138<library-list> 42139 <library name="/lib/libc.so.6"> 42140 <segment address="0x10000000"/> 42141 </library> 42142</library-list> 42143@end smallexample 42144 42145Another simple memory map, with one loaded library with three 42146allocated sections (.text, .data, .bss), looks like this: 42147 42148@smallexample 42149<library-list> 42150 <library name="sharedlib.o"> 42151 <section address="0x10000000"/> 42152 <section address="0x20000000"/> 42153 <section address="0x30000000"/> 42154 </library> 42155</library-list> 42156@end smallexample 42157 42158The format of a library list is described by this DTD: 42159 42160@smallexample 42161<!-- library-list: Root element with versioning --> 42162<!ELEMENT library-list (library)*> 42163<!ATTLIST library-list version CDATA #FIXED "1.0"> 42164<!ELEMENT library (segment*, section*)> 42165<!ATTLIST library name CDATA #REQUIRED> 42166<!ELEMENT segment EMPTY> 42167<!ATTLIST segment address CDATA #REQUIRED> 42168<!ELEMENT section EMPTY> 42169<!ATTLIST section address CDATA #REQUIRED> 42170@end smallexample 42171 42172In addition, segments and section descriptors cannot be mixed within a 42173single library element, and you must supply at least one segment or 42174section for each library. 42175 42176@node Library List Format for SVR4 Targets 42177@section Library List Format for SVR4 Targets 42178@cindex library list format, remote protocol 42179 42180On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader 42181(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of 42182shared libraries. Still a special library list provided by this packet is 42183more efficient for the @value{GDBN} remote protocol. 42184 42185The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists 42186loaded libraries and their SVR4 linker parameters. For each library on SVR4 42187target, the following parameters are reported: 42188 42189@itemize @minus 42190@item 42191@code{name}, the absolute file name from the @code{l_name} field of 42192@code{struct link_map}. 42193@item 42194@code{lm} with address of @code{struct link_map} used for TLS 42195(Thread Local Storage) access. 42196@item 42197@code{l_addr}, the displacement as read from the field @code{l_addr} of 42198@code{struct link_map}. For prelinked libraries this is not an absolute 42199memory address. It is a displacement of absolute memory address against 42200address the file was prelinked to during the library load. 42201@item 42202@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment 42203@end itemize 42204 42205Additionally the single @code{main-lm} attribute specifies address of 42206@code{struct link_map} used for the main executable. This parameter is used 42207for TLS access and its presence is optional. 42208 42209@value{GDBN} must be linked with the Expat library to support XML 42210SVR4 library lists. @xref{Expat}. 42211 42212A simple memory map, with two loaded libraries (which do not use prelink), 42213looks like this: 42214 42215@smallexample 42216<library-list-svr4 version="1.0" main-lm="0xe4f8f8"> 42217 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000" 42218 l_ld="0xe4eefc"/> 42219 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000" 42220 l_ld="0x152350"/> 42221</library-list-svr> 42222@end smallexample 42223 42224The format of an SVR4 library list is described by this DTD: 42225 42226@smallexample 42227<!-- library-list-svr4: Root element with versioning --> 42228<!ELEMENT library-list-svr4 (library)*> 42229<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0"> 42230<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED> 42231<!ELEMENT library EMPTY> 42232<!ATTLIST library name CDATA #REQUIRED> 42233<!ATTLIST library lm CDATA #REQUIRED> 42234<!ATTLIST library l_addr CDATA #REQUIRED> 42235<!ATTLIST library l_ld CDATA #REQUIRED> 42236@end smallexample 42237 42238@node Memory Map Format 42239@section Memory Map Format 42240@cindex memory map format 42241 42242To be able to write into flash memory, @value{GDBN} needs to obtain a 42243memory map from the target. This section describes the format of the 42244memory map. 42245 42246The memory map is obtained using the @samp{qXfer:memory-map:read} 42247(@pxref{qXfer memory map read}) packet and is an XML document that 42248lists memory regions. 42249 42250@value{GDBN} must be linked with the Expat library to support XML 42251memory maps. @xref{Expat}. 42252 42253The top-level structure of the document is shown below: 42254 42255@smallexample 42256<?xml version="1.0"?> 42257<!DOCTYPE memory-map 42258 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 42259 "http://sourceware.org/gdb/gdb-memory-map.dtd"> 42260<memory-map> 42261 region... 42262</memory-map> 42263@end smallexample 42264 42265Each region can be either: 42266 42267@itemize 42268 42269@item 42270A region of RAM starting at @var{addr} and extending for @var{length} 42271bytes from there: 42272 42273@smallexample 42274<memory type="ram" start="@var{addr}" length="@var{length}"/> 42275@end smallexample 42276 42277 42278@item 42279A region of read-only memory: 42280 42281@smallexample 42282<memory type="rom" start="@var{addr}" length="@var{length}"/> 42283@end smallexample 42284 42285 42286@item 42287A region of flash memory, with erasure blocks @var{blocksize} 42288bytes in length: 42289 42290@smallexample 42291<memory type="flash" start="@var{addr}" length="@var{length}"> 42292 <property name="blocksize">@var{blocksize}</property> 42293</memory> 42294@end smallexample 42295 42296@end itemize 42297 42298Regions must not overlap. @value{GDBN} assumes that areas of memory not covered 42299by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X} 42300packets to write to addresses in such ranges. 42301 42302The formal DTD for memory map format is given below: 42303 42304@smallexample 42305<!-- ................................................... --> 42306<!-- Memory Map XML DTD ................................ --> 42307<!-- File: memory-map.dtd .............................. --> 42308<!-- .................................... .............. --> 42309<!-- memory-map.dtd --> 42310<!-- memory-map: Root element with versioning --> 42311<!ELEMENT memory-map (memory)*> 42312<!ATTLIST memory-map version CDATA #FIXED "1.0.0"> 42313<!ELEMENT memory (property)*> 42314<!-- memory: Specifies a memory region, 42315 and its type, or device. --> 42316<!ATTLIST memory type (ram|rom|flash) #REQUIRED 42317 start CDATA #REQUIRED 42318 length CDATA #REQUIRED> 42319<!-- property: Generic attribute tag --> 42320<!ELEMENT property (#PCDATA | property)*> 42321<!ATTLIST property name (blocksize) #REQUIRED> 42322@end smallexample 42323 42324@node Thread List Format 42325@section Thread List Format 42326@cindex thread list format 42327 42328To efficiently update the list of threads and their attributes, 42329@value{GDBN} issues the @samp{qXfer:threads:read} packet 42330(@pxref{qXfer threads read}) and obtains the XML document with 42331the following structure: 42332 42333@smallexample 42334<?xml version="1.0"?> 42335<threads> 42336 <thread id="id" core="0" name="name"> 42337 ... description ... 42338 </thread> 42339</threads> 42340@end smallexample 42341 42342Each @samp{thread} element must have the @samp{id} attribute that 42343identifies the thread (@pxref{thread-id syntax}). The 42344@samp{core} attribute, if present, specifies which processor core 42345the thread was last executing on. The @samp{name} attribute, if 42346present, specifies the human-readable name of the thread. The content 42347of the of @samp{thread} element is interpreted as human-readable 42348auxiliary information. The @samp{handle} attribute, if present, 42349is a hex encoded representation of the thread handle. 42350 42351 42352@node Traceframe Info Format 42353@section Traceframe Info Format 42354@cindex traceframe info format 42355 42356To be able to know which objects in the inferior can be examined when 42357inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of 42358memory ranges, registers and trace state variables that have been 42359collected in a traceframe. 42360 42361This list is obtained using the @samp{qXfer:traceframe-info:read} 42362(@pxref{qXfer traceframe info read}) packet and is an XML document. 42363 42364@value{GDBN} must be linked with the Expat library to support XML 42365traceframe info discovery. @xref{Expat}. 42366 42367The top-level structure of the document is shown below: 42368 42369@smallexample 42370<?xml version="1.0"?> 42371<!DOCTYPE traceframe-info 42372 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 42373 "http://sourceware.org/gdb/gdb-traceframe-info.dtd"> 42374<traceframe-info> 42375 block... 42376</traceframe-info> 42377@end smallexample 42378 42379Each traceframe block can be either: 42380 42381@itemize 42382 42383@item 42384A region of collected memory starting at @var{addr} and extending for 42385@var{length} bytes from there: 42386 42387@smallexample 42388<memory start="@var{addr}" length="@var{length}"/> 42389@end smallexample 42390 42391@item 42392A block indicating trace state variable numbered @var{number} has been 42393collected: 42394 42395@smallexample 42396<tvar id="@var{number}"/> 42397@end smallexample 42398 42399@end itemize 42400 42401The formal DTD for the traceframe info format is given below: 42402 42403@smallexample 42404<!ELEMENT traceframe-info (memory | tvar)* > 42405<!ATTLIST traceframe-info version CDATA #FIXED "1.0"> 42406 42407<!ELEMENT memory EMPTY> 42408<!ATTLIST memory start CDATA #REQUIRED 42409 length CDATA #REQUIRED> 42410<!ELEMENT tvar> 42411<!ATTLIST tvar id CDATA #REQUIRED> 42412@end smallexample 42413 42414@node Branch Trace Format 42415@section Branch Trace Format 42416@cindex branch trace format 42417 42418In order to display the branch trace of an inferior thread, 42419@value{GDBN} needs to obtain the list of branches. This list is 42420represented as list of sequential code blocks that are connected via 42421branches. The code in each block has been executed sequentially. 42422 42423This list is obtained using the @samp{qXfer:btrace:read} 42424(@pxref{qXfer btrace read}) packet and is an XML document. 42425 42426@value{GDBN} must be linked with the Expat library to support XML 42427traceframe info discovery. @xref{Expat}. 42428 42429The top-level structure of the document is shown below: 42430 42431@smallexample 42432<?xml version="1.0"?> 42433<!DOCTYPE btrace 42434 PUBLIC "+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN" 42435 "http://sourceware.org/gdb/gdb-btrace.dtd"> 42436<btrace> 42437 block... 42438</btrace> 42439@end smallexample 42440 42441@itemize 42442 42443@item 42444A block of sequentially executed instructions starting at @var{begin} 42445and ending at @var{end}: 42446 42447@smallexample 42448<block begin="@var{begin}" end="@var{end}"/> 42449@end smallexample 42450 42451@end itemize 42452 42453The formal DTD for the branch trace format is given below: 42454 42455@smallexample 42456<!ELEMENT btrace (block* | pt) > 42457<!ATTLIST btrace version CDATA #FIXED "1.0"> 42458 42459<!ELEMENT block EMPTY> 42460<!ATTLIST block begin CDATA #REQUIRED 42461 end CDATA #REQUIRED> 42462 42463<!ELEMENT pt (pt-config?, raw?)> 42464 42465<!ELEMENT pt-config (cpu?)> 42466 42467<!ELEMENT cpu EMPTY> 42468<!ATTLIST cpu vendor CDATA #REQUIRED 42469 family CDATA #REQUIRED 42470 model CDATA #REQUIRED 42471 stepping CDATA #REQUIRED> 42472 42473<!ELEMENT raw (#PCDATA)> 42474@end smallexample 42475 42476@node Branch Trace Configuration Format 42477@section Branch Trace Configuration Format 42478@cindex branch trace configuration format 42479 42480For each inferior thread, @value{GDBN} can obtain the branch trace 42481configuration using the @samp{qXfer:btrace-conf:read} 42482(@pxref{qXfer btrace-conf read}) packet. 42483 42484The configuration describes the branch trace format and configuration 42485settings for that format. The following information is described: 42486 42487@table @code 42488@item bts 42489This thread uses the @dfn{Branch Trace Store} (@acronym{BTS}) format. 42490@table @code 42491@item size 42492The size of the @acronym{BTS} ring buffer in bytes. 42493@end table 42494@item pt 42495This thread uses the @dfn{Intel Processor Trace} (@acronym{Intel 42496PT}) format. 42497@table @code 42498@item size 42499The size of the @acronym{Intel PT} ring buffer in bytes. 42500@end table 42501@end table 42502 42503@value{GDBN} must be linked with the Expat library to support XML 42504branch trace configuration discovery. @xref{Expat}. 42505 42506The formal DTD for the branch trace configuration format is given below: 42507 42508@smallexample 42509<!ELEMENT btrace-conf (bts?, pt?)> 42510<!ATTLIST btrace-conf version CDATA #FIXED "1.0"> 42511 42512<!ELEMENT bts EMPTY> 42513<!ATTLIST bts size CDATA #IMPLIED> 42514 42515<!ELEMENT pt EMPTY> 42516<!ATTLIST pt size CDATA #IMPLIED> 42517@end smallexample 42518 42519@include agentexpr.texi 42520 42521@node Target Descriptions 42522@appendix Target Descriptions 42523@cindex target descriptions 42524 42525One of the challenges of using @value{GDBN} to debug embedded systems 42526is that there are so many minor variants of each processor 42527architecture in use. It is common practice for vendors to start with 42528a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example --- 42529and then make changes to adapt it to a particular market niche. Some 42530architectures have hundreds of variants, available from dozens of 42531vendors. This leads to a number of problems: 42532 42533@itemize @bullet 42534@item 42535With so many different customized processors, it is difficult for 42536the @value{GDBN} maintainers to keep up with the changes. 42537@item 42538Since individual variants may have short lifetimes or limited 42539audiences, it may not be worthwhile to carry information about every 42540variant in the @value{GDBN} source tree. 42541@item 42542When @value{GDBN} does support the architecture of the embedded system 42543at hand, the task of finding the correct architecture name to give the 42544@command{set architecture} command can be error-prone. 42545@end itemize 42546 42547To address these problems, the @value{GDBN} remote protocol allows a 42548target system to not only identify itself to @value{GDBN}, but to 42549actually describe its own features. This lets @value{GDBN} support 42550processor variants it has never seen before --- to the extent that the 42551descriptions are accurate, and that @value{GDBN} understands them. 42552 42553@value{GDBN} must be linked with the Expat library to support XML 42554target descriptions. @xref{Expat}. 42555 42556@menu 42557* Retrieving Descriptions:: How descriptions are fetched from a target. 42558* Target Description Format:: The contents of a target description. 42559* Predefined Target Types:: Standard types available for target 42560 descriptions. 42561* Enum Target Types:: How to define enum target types. 42562* Standard Target Features:: Features @value{GDBN} knows about. 42563@end menu 42564 42565@node Retrieving Descriptions 42566@section Retrieving Descriptions 42567 42568Target descriptions can be read from the target automatically, or 42569specified by the user manually. The default behavior is to read the 42570description from the target. @value{GDBN} retrieves it via the remote 42571protocol using @samp{qXfer} requests (@pxref{General Query Packets, 42572qXfer}). The @var{annex} in the @samp{qXfer} packet will be 42573@samp{target.xml}. The contents of the @samp{target.xml} annex are an 42574XML document, of the form described in @ref{Target Description 42575Format}. 42576 42577Alternatively, you can specify a file to read for the target description. 42578If a file is set, the target will not be queried. The commands to 42579specify a file are: 42580 42581@table @code 42582@cindex set tdesc filename 42583@item set tdesc filename @var{path} 42584Read the target description from @var{path}. 42585 42586@cindex unset tdesc filename 42587@item unset tdesc filename 42588Do not read the XML target description from a file. @value{GDBN} 42589will use the description supplied by the current target. 42590 42591@cindex show tdesc filename 42592@item show tdesc filename 42593Show the filename to read for a target description, if any. 42594@end table 42595 42596 42597@node Target Description Format 42598@section Target Description Format 42599@cindex target descriptions, XML format 42600 42601A target description annex is an @uref{http://www.w3.org/XML/, XML} 42602document which complies with the Document Type Definition provided in 42603the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This 42604means you can use generally available tools like @command{xmllint} to 42605check that your feature descriptions are well-formed and valid. 42606However, to help people unfamiliar with XML write descriptions for 42607their targets, we also describe the grammar here. 42608 42609Target descriptions can identify the architecture of the remote target 42610and (for some architectures) provide information about custom register 42611sets. They can also identify the OS ABI of the remote target. 42612@value{GDBN} can use this information to autoconfigure for your 42613target, or to warn you if you connect to an unsupported target. 42614 42615Here is a simple target description: 42616 42617@smallexample 42618<target version="1.0"> 42619 <architecture>i386:x86-64</architecture> 42620</target> 42621@end smallexample 42622 42623@noindent 42624This minimal description only says that the target uses 42625the x86-64 architecture. 42626 42627A target description has the following overall form, with [ ] marking 42628optional elements and @dots{} marking repeatable elements. The elements 42629are explained further below. 42630 42631@smallexample 42632<?xml version="1.0"?> 42633<!DOCTYPE target SYSTEM "gdb-target.dtd"> 42634<target version="1.0"> 42635 @r{[}@var{architecture}@r{]} 42636 @r{[}@var{osabi}@r{]} 42637 @r{[}@var{compatible}@r{]} 42638 @r{[}@var{feature}@dots{}@r{]} 42639</target> 42640@end smallexample 42641 42642@noindent 42643The description is generally insensitive to whitespace and line 42644breaks, under the usual common-sense rules. The XML version 42645declaration and document type declaration can generally be omitted 42646(@value{GDBN} does not require them), but specifying them may be 42647useful for XML validation tools. The @samp{version} attribute for 42648@samp{<target>} may also be omitted, but we recommend 42649including it; if future versions of @value{GDBN} use an incompatible 42650revision of @file{gdb-target.dtd}, they will detect and report 42651the version mismatch. 42652 42653@subsection Inclusion 42654@cindex target descriptions, inclusion 42655@cindex XInclude 42656@ifnotinfo 42657@cindex <xi:include> 42658@end ifnotinfo 42659 42660It can sometimes be valuable to split a target description up into 42661several different annexes, either for organizational purposes, or to 42662share files between different possible target descriptions. You can 42663divide a description into multiple files by replacing any element of 42664the target description with an inclusion directive of the form: 42665 42666@smallexample 42667<xi:include href="@var{document}"/> 42668@end smallexample 42669 42670@noindent 42671When @value{GDBN} encounters an element of this form, it will retrieve 42672the named XML @var{document}, and replace the inclusion directive with 42673the contents of that document. If the current description was read 42674using @samp{qXfer}, then so will be the included document; 42675@var{document} will be interpreted as the name of an annex. If the 42676current description was read from a file, @value{GDBN} will look for 42677@var{document} as a file in the same directory where it found the 42678original description. 42679 42680@subsection Architecture 42681@cindex <architecture> 42682 42683An @samp{<architecture>} element has this form: 42684 42685@smallexample 42686 <architecture>@var{arch}</architecture> 42687@end smallexample 42688 42689@var{arch} is one of the architectures from the set accepted by 42690@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 42691 42692@subsection OS ABI 42693@cindex @code{<osabi>} 42694 42695This optional field was introduced in @value{GDBN} version 7.0. 42696Previous versions of @value{GDBN} ignore it. 42697 42698An @samp{<osabi>} element has this form: 42699 42700@smallexample 42701 <osabi>@var{abi-name}</osabi> 42702@end smallexample 42703 42704@var{abi-name} is an OS ABI name from the same selection accepted by 42705@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}). 42706 42707@subsection Compatible Architecture 42708@cindex @code{<compatible>} 42709 42710This optional field was introduced in @value{GDBN} version 7.0. 42711Previous versions of @value{GDBN} ignore it. 42712 42713A @samp{<compatible>} element has this form: 42714 42715@smallexample 42716 <compatible>@var{arch}</compatible> 42717@end smallexample 42718 42719@var{arch} is one of the architectures from the set accepted by 42720@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 42721 42722A @samp{<compatible>} element is used to specify that the target 42723is able to run binaries in some other than the main target architecture 42724given by the @samp{<architecture>} element. For example, on the 42725Cell Broadband Engine, the main architecture is @code{powerpc:common} 42726or @code{powerpc:common64}, but the system is able to run binaries 42727in the @code{spu} architecture as well. The way to describe this 42728capability with @samp{<compatible>} is as follows: 42729 42730@smallexample 42731 <architecture>powerpc:common</architecture> 42732 <compatible>spu</compatible> 42733@end smallexample 42734 42735@subsection Features 42736@cindex <feature> 42737 42738Each @samp{<feature>} describes some logical portion of the target 42739system. Features are currently used to describe available CPU 42740registers and the types of their contents. A @samp{<feature>} element 42741has this form: 42742 42743@smallexample 42744<feature name="@var{name}"> 42745 @r{[}@var{type}@dots{}@r{]} 42746 @var{reg}@dots{} 42747</feature> 42748@end smallexample 42749 42750@noindent 42751Each feature's name should be unique within the description. The name 42752of a feature does not matter unless @value{GDBN} has some special 42753knowledge of the contents of that feature; if it does, the feature 42754should have its standard name. @xref{Standard Target Features}. 42755 42756@subsection Types 42757 42758Any register's value is a collection of bits which @value{GDBN} must 42759interpret. The default interpretation is a two's complement integer, 42760but other types can be requested by name in the register description. 42761Some predefined types are provided by @value{GDBN} (@pxref{Predefined 42762Target Types}), and the description can define additional composite 42763and enum types. 42764 42765Each type element must have an @samp{id} attribute, which gives 42766a unique (within the containing @samp{<feature>}) name to the type. 42767Types must be defined before they are used. 42768 42769@cindex <vector> 42770Some targets offer vector registers, which can be treated as arrays 42771of scalar elements. These types are written as @samp{<vector>} elements, 42772specifying the array element type, @var{type}, and the number of elements, 42773@var{count}: 42774 42775@smallexample 42776<vector id="@var{id}" type="@var{type}" count="@var{count}"/> 42777@end smallexample 42778 42779@cindex <union> 42780If a register's value is usefully viewed in multiple ways, define it 42781with a union type containing the useful representations. The 42782@samp{<union>} element contains one or more @samp{<field>} elements, 42783each of which has a @var{name} and a @var{type}: 42784 42785@smallexample 42786<union id="@var{id}"> 42787 <field name="@var{name}" type="@var{type}"/> 42788 @dots{} 42789</union> 42790@end smallexample 42791 42792@cindex <struct> 42793@cindex <flags> 42794If a register's value is composed from several separate values, define 42795it with either a structure type or a flags type. 42796A flags type may only contain bitfields. 42797A structure type may either contain only bitfields or contain no bitfields. 42798If the value contains only bitfields, its total size in bytes must be 42799specified. 42800 42801Non-bitfield values have a @var{name} and @var{type}. 42802 42803@smallexample 42804<struct id="@var{id}"> 42805 <field name="@var{name}" type="@var{type}"/> 42806 @dots{} 42807</struct> 42808@end smallexample 42809 42810Both @var{name} and @var{type} values are required. 42811No implicit padding is added. 42812 42813Bitfield values have a @var{name}, @var{start}, @var{end} and @var{type}. 42814 42815@smallexample 42816<struct id="@var{id}" size="@var{size}"> 42817 <field name="@var{name}" start="@var{start}" end="@var{end}" type="@var{type}"/> 42818 @dots{} 42819</struct> 42820@end smallexample 42821 42822@smallexample 42823<flags id="@var{id}" size="@var{size}"> 42824 <field name="@var{name}" start="@var{start}" end="@var{end}" type="@var{type}"/> 42825 @dots{} 42826</flags> 42827@end smallexample 42828 42829The @var{name} value is required. 42830Bitfield values may be named with the empty string, @samp{""}, 42831in which case the field is ``filler'' and its value is not printed. 42832Not all bits need to be specified, so ``filler'' fields are optional. 42833 42834The @var{start} and @var{end} values are required, and @var{type} 42835is optional. 42836The field's @var{start} must be less than or equal to its @var{end}, 42837and zero represents the least significant bit. 42838 42839The default value of @var{type} is @code{bool} for single bit fields, 42840and an unsigned integer otherwise. 42841 42842Which to choose? Structures or flags? 42843 42844Registers defined with @samp{flags} have these advantages over 42845defining them with @samp{struct}: 42846 42847@itemize @bullet 42848@item 42849Arithmetic may be performed on them as if they were integers. 42850@item 42851They are printed in a more readable fashion. 42852@end itemize 42853 42854Registers defined with @samp{struct} have one advantage over 42855defining them with @samp{flags}: 42856 42857@itemize @bullet 42858@item 42859One can fetch individual fields like in @samp{C}. 42860 42861@smallexample 42862(gdb) print $my_struct_reg.field3 42863$1 = 42 42864@end smallexample 42865 42866@end itemize 42867 42868@subsection Registers 42869@cindex <reg> 42870 42871Each register is represented as an element with this form: 42872 42873@smallexample 42874<reg name="@var{name}" 42875 bitsize="@var{size}" 42876 @r{[}regnum="@var{num}"@r{]} 42877 @r{[}save-restore="@var{save-restore}"@r{]} 42878 @r{[}type="@var{type}"@r{]} 42879 @r{[}group="@var{group}"@r{]}/> 42880@end smallexample 42881 42882@noindent 42883The components are as follows: 42884 42885@table @var 42886 42887@item name 42888The register's name; it must be unique within the target description. 42889 42890@item bitsize 42891The register's size, in bits. 42892 42893@item regnum 42894The register's number. If omitted, a register's number is one greater 42895than that of the previous register (either in the current feature or in 42896a preceding feature); the first register in the target description 42897defaults to zero. This register number is used to read or write 42898the register; e.g.@: it is used in the remote @code{p} and @code{P} 42899packets, and registers appear in the @code{g} and @code{G} packets 42900in order of increasing register number. 42901 42902@item save-restore 42903Whether the register should be preserved across inferior function 42904calls; this must be either @code{yes} or @code{no}. The default is 42905@code{yes}, which is appropriate for most registers except for 42906some system control registers; this is not related to the target's 42907ABI. 42908 42909@item type 42910The type of the register. It may be a predefined type, a type 42911defined in the current feature, or one of the special types @code{int} 42912and @code{float}. @code{int} is an integer type of the correct size 42913for @var{bitsize}, and @code{float} is a floating point type (in the 42914architecture's normal floating point format) of the correct size for 42915@var{bitsize}. The default is @code{int}. 42916 42917@item group 42918The register group to which this register belongs. It can be one of the 42919standard register groups @code{general}, @code{float}, @code{vector} or an 42920arbitrary string. Group names should be limited to alphanumeric characters. 42921If a group name is made up of multiple words the words may be separated by 42922hyphens; e.g.@: @code{special-group} or @code{ultra-special-group}. If no 42923@var{group} is specified, @value{GDBN} will not display the register in 42924@code{info registers}. 42925 42926@end table 42927 42928@node Predefined Target Types 42929@section Predefined Target Types 42930@cindex target descriptions, predefined types 42931 42932Type definitions in the self-description can build up composite types 42933from basic building blocks, but can not define fundamental types. Instead, 42934standard identifiers are provided by @value{GDBN} for the fundamental 42935types. The currently supported types are: 42936 42937@table @code 42938 42939@item bool 42940Boolean type, occupying a single bit. 42941 42942@item int8 42943@itemx int16 42944@itemx int24 42945@itemx int32 42946@itemx int64 42947@itemx int128 42948Signed integer types holding the specified number of bits. 42949 42950@item uint8 42951@itemx uint16 42952@itemx uint24 42953@itemx uint32 42954@itemx uint64 42955@itemx uint128 42956Unsigned integer types holding the specified number of bits. 42957 42958@item code_ptr 42959@itemx data_ptr 42960Pointers to unspecified code and data. The program counter and 42961any dedicated return address register may be marked as code 42962pointers; printing a code pointer converts it into a symbolic 42963address. The stack pointer and any dedicated address registers 42964may be marked as data pointers. 42965 42966@item ieee_single 42967Single precision IEEE floating point. 42968 42969@item ieee_double 42970Double precision IEEE floating point. 42971 42972@item arm_fpa_ext 42973The 12-byte extended precision format used by ARM FPA registers. 42974 42975@item i387_ext 42976The 10-byte extended precision format used by x87 registers. 42977 42978@item i386_eflags 4297932bit @sc{eflags} register used by x86. 42980 42981@item i386_mxcsr 4298232bit @sc{mxcsr} register used by x86. 42983 42984@end table 42985 42986@node Enum Target Types 42987@section Enum Target Types 42988@cindex target descriptions, enum types 42989 42990Enum target types are useful in @samp{struct} and @samp{flags} 42991register descriptions. @xref{Target Description Format}. 42992 42993Enum types have a name, size and a list of name/value pairs. 42994 42995@smallexample 42996<enum id="@var{id}" size="@var{size}"> 42997 <evalue name="@var{name}" value="@var{value}"/> 42998 @dots{} 42999</enum> 43000@end smallexample 43001 43002Enums must be defined before they are used. 43003 43004@smallexample 43005<enum id="levels_type" size="4"> 43006 <evalue name="low" value="0"/> 43007 <evalue name="high" value="1"/> 43008</enum> 43009<flags id="flags_type" size="4"> 43010 <field name="X" start="0"/> 43011 <field name="LEVEL" start="1" end="1" type="levels_type"/> 43012</flags> 43013<reg name="flags" bitsize="32" type="flags_type"/> 43014@end smallexample 43015 43016Given that description, a value of 3 for the @samp{flags} register 43017would be printed as: 43018 43019@smallexample 43020(gdb) info register flags 43021flags 0x3 [ X LEVEL=high ] 43022@end smallexample 43023 43024@node Standard Target Features 43025@section Standard Target Features 43026@cindex target descriptions, standard features 43027 43028A target description must contain either no registers or all the 43029target's registers. If the description contains no registers, then 43030@value{GDBN} will assume a default register layout, selected based on 43031the architecture. If the description contains any registers, the 43032default layout will not be used; the standard registers must be 43033described in the target description, in such a way that @value{GDBN} 43034can recognize them. 43035 43036This is accomplished by giving specific names to feature elements 43037which contain standard registers. @value{GDBN} will look for features 43038with those names and verify that they contain the expected registers; 43039if any known feature is missing required registers, or if any required 43040feature is missing, @value{GDBN} will reject the target 43041description. You can add additional registers to any of the 43042standard features --- @value{GDBN} will display them just as if 43043they were added to an unrecognized feature. 43044 43045This section lists the known features and their expected contents. 43046Sample XML documents for these features are included in the 43047@value{GDBN} source tree, in the directory @file{gdb/features}. 43048 43049Names recognized by @value{GDBN} should include the name of the 43050company or organization which selected the name, and the overall 43051architecture to which the feature applies; so e.g.@: the feature 43052containing ARM core registers is named @samp{org.gnu.gdb.arm.core}. 43053 43054The names of registers are not case sensitive for the purpose 43055of recognizing standard features, but @value{GDBN} will only display 43056registers using the capitalization used in the description. 43057 43058@menu 43059* AArch64 Features:: 43060* ARC Features:: 43061* ARM Features:: 43062* i386 Features:: 43063* MicroBlaze Features:: 43064* MIPS Features:: 43065* M68K Features:: 43066* NDS32 Features:: 43067* Nios II Features:: 43068* OpenRISC 1000 Features:: 43069* PowerPC Features:: 43070* RISC-V Features:: 43071* S/390 and System z Features:: 43072* Sparc Features:: 43073* TIC6x Features:: 43074@end menu 43075 43076 43077@node AArch64 Features 43078@subsection AArch64 Features 43079@cindex target descriptions, AArch64 features 43080 43081The @samp{org.gnu.gdb.aarch64.core} feature is required for AArch64 43082targets. It should contain registers @samp{x0} through @samp{x30}, 43083@samp{sp}, @samp{pc}, and @samp{cpsr}. 43084 43085The @samp{org.gnu.gdb.aarch64.fpu} feature is optional. If present, 43086it should contain registers @samp{v0} through @samp{v31}, @samp{fpsr}, 43087and @samp{fpcr}. 43088 43089The @samp{org.gnu.gdb.aarch64.sve} feature is optional. If present, 43090it should contain registers @samp{z0} through @samp{z31}, @samp{p0} 43091through @samp{p15}, @samp{ffr} and @samp{vg}. 43092 43093@node ARC Features 43094@subsection ARC Features 43095@cindex target descriptions, ARC Features 43096 43097ARC processors are highly configurable, so even core registers and their number 43098are not completely predetermined. In addition flags and PC registers which are 43099important to @value{GDBN} are not ``core'' registers in ARC. It is required 43100that one of the core registers features is present. 43101@samp{org.gnu.gdb.arc.aux-minimal} feature is mandatory. 43102 43103The @samp{org.gnu.gdb.arc.core.v2} feature is required for ARC EM and ARC HS 43104targets with a normal register file. It should contain registers @samp{r0} 43105through @samp{r25}, @samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink}, 43106@samp{lp_count} and @samp{pcl}. This feature may contain register @samp{ilink} 43107and any of extension core registers @samp{r32} through @samp{r59/acch}. 43108@samp{ilink} and extension core registers are not available to read/write, when 43109debugging GNU/Linux applications, thus @samp{ilink} is made optional. 43110 43111The @samp{org.gnu.gdb.arc.core-reduced.v2} feature is required for ARC EM and 43112ARC HS targets with a reduced register file. It should contain registers 43113@samp{r0} through @samp{r3}, @samp{r10} through @samp{r15}, @samp{gp}, 43114@samp{fp}, @samp{sp}, @samp{r30}, @samp{blink}, @samp{lp_count} and @samp{pcl}. 43115This feature may contain register @samp{ilink} and any of extension core 43116registers @samp{r32} through @samp{r59/acch}. 43117 43118The @samp{org.gnu.gdb.arc.core.arcompact} feature is required for ARCompact 43119targets with a normal register file. It should contain registers @samp{r0} 43120through @samp{r25}, @samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}, @samp{blink}, 43121@samp{lp_count} and @samp{pcl}. This feature may contain registers 43122@samp{ilink1}, @samp{ilink2} and any of extension core registers @samp{r32} 43123through @samp{r59/acch}. @samp{ilink1} and @samp{ilink2} and extension core 43124registers are not available when debugging GNU/Linux applications. The only 43125difference with @samp{org.gnu.gdb.arc.core.v2} feature is in the names of 43126@samp{ilink1} and @samp{ilink2} registers and that @samp{r30} is mandatory in 43127ARC v2, but @samp{ilink2} is optional on ARCompact. 43128 43129The @samp{org.gnu.gdb.arc.aux-minimal} feature is required for all ARC 43130targets. It should contain registers @samp{pc} and @samp{status32}. 43131 43132@node ARM Features 43133@subsection ARM Features 43134@cindex target descriptions, ARM features 43135 43136The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile 43137ARM targets. 43138It should contain registers @samp{r0} through @samp{r13}, @samp{sp}, 43139@samp{lr}, @samp{pc}, and @samp{cpsr}. 43140 43141For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core} 43142feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain 43143registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc}, 43144and @samp{xpsr}. 43145 43146The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it 43147should contain registers @samp{f0} through @samp{f7} and @samp{fps}. 43148 43149The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present, 43150it should contain at least registers @samp{wR0} through @samp{wR15} and 43151@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon}, 43152@samp{wCSSF}, and @samp{wCASF} registers are optional. 43153 43154The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it 43155should contain at least registers @samp{d0} through @samp{d15}. If 43156they are present, @samp{d16} through @samp{d31} should also be included. 43157@value{GDBN} will synthesize the single-precision registers from 43158halves of the double-precision registers. 43159 43160The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not 43161need to contain registers; it instructs @value{GDBN} to display the 43162VFP double-precision registers as vectors and to synthesize the 43163quad-precision registers from pairs of double-precision registers. 43164If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also 43165be present and include 32 double-precision registers. 43166 43167@node i386 Features 43168@subsection i386 Features 43169@cindex target descriptions, i386 features 43170 43171The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64 43172targets. It should describe the following registers: 43173 43174@itemize @minus 43175@item 43176@samp{eax} through @samp{edi} plus @samp{eip} for i386 43177@item 43178@samp{rax} through @samp{r15} plus @samp{rip} for amd64 43179@item 43180@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es}, 43181@samp{fs}, @samp{gs} 43182@item 43183@samp{st0} through @samp{st7} 43184@item 43185@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff}, 43186@samp{foseg}, @samp{fooff} and @samp{fop} 43187@end itemize 43188 43189The register sets may be different, depending on the target. 43190 43191The @samp{org.gnu.gdb.i386.sse} feature is optional. It should 43192describe registers: 43193 43194@itemize @minus 43195@item 43196@samp{xmm0} through @samp{xmm7} for i386 43197@item 43198@samp{xmm0} through @samp{xmm15} for amd64 43199@item 43200@samp{mxcsr} 43201@end itemize 43202 43203The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the 43204@samp{org.gnu.gdb.i386.sse} feature. It should 43205describe the upper 128 bits of @sc{ymm} registers: 43206 43207@itemize @minus 43208@item 43209@samp{ymm0h} through @samp{ymm7h} for i386 43210@item 43211@samp{ymm0h} through @samp{ymm15h} for amd64 43212@end itemize 43213 43214The @samp{org.gnu.gdb.i386.mpx} is an optional feature representing Intel 43215Memory Protection Extension (MPX). It should describe the following registers: 43216 43217@itemize @minus 43218@item 43219@samp{bnd0raw} through @samp{bnd3raw} for i386 and amd64. 43220@item 43221@samp{bndcfgu} and @samp{bndstatus} for i386 and amd64. 43222@end itemize 43223 43224The @samp{org.gnu.gdb.i386.linux} feature is optional. It should 43225describe a single register, @samp{orig_eax}. 43226 43227The @samp{org.gnu.gdb.i386.segments} feature is optional. It should 43228describe two system registers: @samp{fs_base} and @samp{gs_base}. 43229 43230The @samp{org.gnu.gdb.i386.avx512} feature is optional and requires the 43231@samp{org.gnu.gdb.i386.avx} feature. It should 43232describe additional @sc{xmm} registers: 43233 43234@itemize @minus 43235@item 43236@samp{xmm16h} through @samp{xmm31h}, only valid for amd64. 43237@end itemize 43238 43239It should describe the upper 128 bits of additional @sc{ymm} registers: 43240 43241@itemize @minus 43242@item 43243@samp{ymm16h} through @samp{ymm31h}, only valid for amd64. 43244@end itemize 43245 43246It should 43247describe the upper 256 bits of @sc{zmm} registers: 43248 43249@itemize @minus 43250@item 43251@samp{zmm0h} through @samp{zmm7h} for i386. 43252@item 43253@samp{zmm0h} through @samp{zmm15h} for amd64. 43254@end itemize 43255 43256It should 43257describe the additional @sc{zmm} registers: 43258 43259@itemize @minus 43260@item 43261@samp{zmm16h} through @samp{zmm31h}, only valid for amd64. 43262@end itemize 43263 43264The @samp{org.gnu.gdb.i386.pkeys} feature is optional. It should 43265describe a single register, @samp{pkru}. It is a 32-bit register 43266valid for i386 and amd64. 43267 43268@node MicroBlaze Features 43269@subsection MicroBlaze Features 43270@cindex target descriptions, MicroBlaze features 43271 43272The @samp{org.gnu.gdb.microblaze.core} feature is required for MicroBlaze 43273targets. It should contain registers @samp{r0} through @samp{r31}, 43274@samp{rpc}, @samp{rmsr}, @samp{rear}, @samp{resr}, @samp{rfsr}, @samp{rbtr}, 43275@samp{rpvr}, @samp{rpvr1} through @samp{rpvr11}, @samp{redr}, @samp{rpid}, 43276@samp{rzpr}, @samp{rtlbx}, @samp{rtlbsx}, @samp{rtlblo}, and @samp{rtlbhi}. 43277 43278The @samp{org.gnu.gdb.microblaze.stack-protect} feature is optional. 43279If present, it should contain registers @samp{rshr} and @samp{rslr} 43280 43281@node MIPS Features 43282@subsection @acronym{MIPS} Features 43283@cindex target descriptions, @acronym{MIPS} features 43284 43285The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets. 43286It should contain registers @samp{r0} through @samp{r31}, @samp{lo}, 43287@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending 43288on the target. 43289 43290The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should 43291contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause} 43292registers. They may be 32-bit or 64-bit depending on the target. 43293 43294The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though 43295it may be optional in a future version of @value{GDBN}. It should 43296contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and 43297@samp{fir}. They may be 32-bit or 64-bit depending on the target. 43298 43299The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should 43300contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through 43301@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should 43302be 32-bit and the rest may be 32-bit or 64-bit depending on the target. 43303 43304The @samp{org.gnu.gdb.mips.linux} feature is optional. It should 43305contain a single register, @samp{restart}, which is used by the 43306Linux kernel to control restartable syscalls. 43307 43308@node M68K Features 43309@subsection M68K Features 43310@cindex target descriptions, M68K features 43311 43312@table @code 43313@item @samp{org.gnu.gdb.m68k.core} 43314@itemx @samp{org.gnu.gdb.coldfire.core} 43315@itemx @samp{org.gnu.gdb.fido.core} 43316One of those features must be always present. 43317The feature that is present determines which flavor of m68k is 43318used. The feature that is present should contain registers 43319@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp}, 43320@samp{sp}, @samp{ps} and @samp{pc}. 43321 43322@item @samp{org.gnu.gdb.coldfire.fp} 43323This feature is optional. If present, it should contain registers 43324@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and 43325@samp{fpiaddr}. 43326@end table 43327 43328@node NDS32 Features 43329@subsection NDS32 Features 43330@cindex target descriptions, NDS32 features 43331 43332The @samp{org.gnu.gdb.nds32.core} feature is required for NDS32 43333targets. It should contain at least registers @samp{r0} through 43334@samp{r10}, @samp{r15}, @samp{fp}, @samp{gp}, @samp{lp}, @samp{sp}, 43335and @samp{pc}. 43336 43337The @samp{org.gnu.gdb.nds32.fpu} feature is optional. If present, 43338it should contain 64-bit double-precision floating-point registers 43339@samp{fd0} through @emph{fdN}, which should be @samp{fd3}, @samp{fd7}, 43340@samp{fd15}, or @samp{fd31} based on the FPU configuration implemented. 43341 43342@emph{Note:} The first sixteen 64-bit double-precision floating-point 43343registers are overlapped with the thirty-two 32-bit single-precision 43344floating-point registers. The 32-bit single-precision registers, if 43345not being listed explicitly, will be synthesized from halves of the 43346overlapping 64-bit double-precision registers. Listing 32-bit 43347single-precision registers explicitly is deprecated, and the 43348support to it could be totally removed some day. 43349 43350@node Nios II Features 43351@subsection Nios II Features 43352@cindex target descriptions, Nios II features 43353 43354The @samp{org.gnu.gdb.nios2.cpu} feature is required for Nios II 43355targets. It should contain the 32 core registers (@samp{zero}, 43356@samp{at}, @samp{r2} through @samp{r23}, @samp{et} through @samp{ra}), 43357@samp{pc}, and the 16 control registers (@samp{status} through 43358@samp{mpuacc}). 43359 43360@node OpenRISC 1000 Features 43361@subsection Openrisc 1000 Features 43362@cindex target descriptions, OpenRISC 1000 features 43363 43364The @samp{org.gnu.gdb.or1k.group0} feature is required for OpenRISC 1000 43365targets. It should contain the 32 general purpose registers (@samp{r0} 43366through @samp{r31}), @samp{ppc}, @samp{npc} and @samp{sr}. 43367 43368@node PowerPC Features 43369@subsection PowerPC Features 43370@cindex target descriptions, PowerPC features 43371 43372The @samp{org.gnu.gdb.power.core} feature is required for PowerPC 43373targets. It should contain registers @samp{r0} through @samp{r31}, 43374@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and 43375@samp{xer}. They may be 32-bit or 64-bit depending on the target. 43376 43377The @samp{org.gnu.gdb.power.fpu} feature is optional. It should 43378contain registers @samp{f0} through @samp{f31} and @samp{fpscr}. 43379 43380The @samp{org.gnu.gdb.power.altivec} feature is optional. It should 43381contain registers @samp{vr0} through @samp{vr31}, @samp{vscr}, and 43382@samp{vrsave}. @value{GDBN} will define pseudo-registers @samp{v0} 43383through @samp{v31} as aliases for the corresponding @samp{vrX} 43384registers. 43385 43386The @samp{org.gnu.gdb.power.vsx} feature is optional. It should 43387contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN} will 43388combine these registers with the floating point registers (@samp{f0} 43389through @samp{f31}) and the altivec registers (@samp{vr0} through 43390@samp{vr31}) to present the 128-bit wide registers @samp{vs0} through 43391@samp{vs63}, the set of vector-scalar registers for POWER7. 43392Therefore, this feature requires both @samp{org.gnu.gdb.power.fpu} and 43393@samp{org.gnu.gdb.power.altivec}. 43394 43395The @samp{org.gnu.gdb.power.spe} feature is optional. It should 43396contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and 43397@samp{spefscr}. SPE targets should provide 32-bit registers in 43398@samp{org.gnu.gdb.power.core} and provide the upper halves in 43399@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine 43400these to present registers @samp{ev0} through @samp{ev31} to the 43401user. 43402 43403The @samp{org.gnu.gdb.power.ppr} feature is optional. It should 43404contain the 64-bit register @samp{ppr}. 43405 43406The @samp{org.gnu.gdb.power.dscr} feature is optional. It should 43407contain the 64-bit register @samp{dscr}. 43408 43409The @samp{org.gnu.gdb.power.tar} feature is optional. It should 43410contain the 64-bit register @samp{tar}. 43411 43412The @samp{org.gnu.gdb.power.ebb} feature is optional. It should 43413contain registers @samp{bescr}, @samp{ebbhr} and @samp{ebbrr}, all 4341464-bit wide. 43415 43416The @samp{org.gnu.gdb.power.linux.pmu} feature is optional. It should 43417contain registers @samp{mmcr0}, @samp{mmcr2}, @samp{siar}, @samp{sdar} 43418and @samp{sier}, all 64-bit wide. This is the subset of the isa 2.07 43419server PMU registers provided by @sc{gnu}/Linux. 43420 43421The @samp{org.gnu.gdb.power.htm.spr} feature is optional. It should 43422contain registers @samp{tfhar}, @samp{texasr} and @samp{tfiar}, all 4342364-bit wide. 43424 43425The @samp{org.gnu.gdb.power.htm.core} feature is optional. It should 43426contain the checkpointed general-purpose registers @samp{cr0} through 43427@samp{cr31}, as well as the checkpointed registers @samp{clr} and 43428@samp{cctr}. These registers may all be either 32-bit or 64-bit 43429depending on the target. It should also contain the checkpointed 43430registers @samp{ccr} and @samp{cxer}, which should both be 32-bit 43431wide. 43432 43433The @samp{org.gnu.gdb.power.htm.fpu} feature is optional. It should 43434contain the checkpointed 64-bit floating-point registers @samp{cf0} 43435through @samp{cf31}, as well as the checkpointed 64-bit register 43436@samp{cfpscr}. 43437 43438The @samp{org.gnu.gdb.power.htm.altivec} feature is optional. It 43439should contain the checkpointed altivec registers @samp{cvr0} through 43440@samp{cvr31}, all 128-bit wide. It should also contain the 43441checkpointed registers @samp{cvscr} and @samp{cvrsave}, both 32-bit 43442wide. 43443 43444The @samp{org.gnu.gdb.power.htm.vsx} feature is optional. It should 43445contain registers @samp{cvs0h} through @samp{cvs31h}. @value{GDBN} 43446will combine these registers with the checkpointed floating point 43447registers (@samp{cf0} through @samp{cf31}) and the checkpointed 43448altivec registers (@samp{cvr0} through @samp{cvr31}) to present the 43449128-bit wide checkpointed vector-scalar registers @samp{cvs0} through 43450@samp{cvs63}. Therefore, this feature requires both 43451@samp{org.gnu.gdb.power.htm.altivec} and 43452@samp{org.gnu.gdb.power.htm.fpu}. 43453 43454The @samp{org.gnu.gdb.power.htm.ppr} feature is optional. It should 43455contain the 64-bit checkpointed register @samp{cppr}. 43456 43457The @samp{org.gnu.gdb.power.htm.dscr} feature is optional. It should 43458contain the 64-bit checkpointed register @samp{cdscr}. 43459 43460The @samp{org.gnu.gdb.power.htm.tar} feature is optional. It should 43461contain the 64-bit checkpointed register @samp{ctar}. 43462 43463 43464@node RISC-V Features 43465@subsection RISC-V Features 43466@cindex target descriptions, RISC-V Features 43467 43468The @samp{org.gnu.gdb.riscv.cpu} feature is required for RISC-V 43469targets. It should contain the registers @samp{x0} through 43470@samp{x31}, and @samp{pc}. Either the architectural names (@samp{x0}, 43471@samp{x1}, etc) can be used, or the ABI names (@samp{zero}, @samp{ra}, 43472etc). 43473 43474The @samp{org.gnu.gdb.riscv.fpu} feature is optional. If present, it 43475should contain registers @samp{f0} through @samp{f31}, @samp{fflags}, 43476@samp{frm}, and @samp{fcsr}. As with the cpu feature, either the 43477architectural register names, or the ABI names can be used. 43478 43479The @samp{org.gnu.gdb.riscv.virtual} feature is optional. If present, 43480it should contain registers that are not backed by real registers on 43481the target, but are instead virtual, where the register value is 43482derived from other target state. In many ways these are like 43483@value{GDBN}s pseudo-registers, except implemented by the target. 43484Currently the only register expected in this set is the one byte 43485@samp{priv} register that contains the target's privilege level in the 43486least significant two bits. 43487 43488The @samp{org.gnu.gdb.riscv.csr} feature is optional. If present, it 43489should contain all of the target's standard CSRs. Standard CSRs are 43490those defined in the RISC-V specification documents. There is some 43491overlap between this feature and the fpu feature; the @samp{fflags}, 43492@samp{frm}, and @samp{fcsr} registers could be in either feature. The 43493expectation is that these registers will be in the fpu feature if the 43494target has floating point hardware, but can be moved into the csr 43495feature if the target has the floating point control registers, but no 43496other floating point hardware. 43497 43498@node S/390 and System z Features 43499@subsection S/390 and System z Features 43500@cindex target descriptions, S/390 features 43501@cindex target descriptions, System z features 43502 43503The @samp{org.gnu.gdb.s390.core} feature is required for S/390 and 43504System z targets. It should contain the PSW and the 16 general 43505registers. In particular, System z targets should provide the 64-bit 43506registers @samp{pswm}, @samp{pswa}, and @samp{r0} through @samp{r15}. 43507S/390 targets should provide the 32-bit versions of these registers. 43508A System z target that runs in 31-bit addressing mode should provide 4350932-bit versions of @samp{pswm} and @samp{pswa}, as well as the general 43510register's upper halves @samp{r0h} through @samp{r15h}, and their 43511lower halves @samp{r0l} through @samp{r15l}. 43512 43513The @samp{org.gnu.gdb.s390.fpr} feature is required. It should 43514contain the 64-bit registers @samp{f0} through @samp{f15}, and 43515@samp{fpc}. 43516 43517The @samp{org.gnu.gdb.s390.acr} feature is required. It should 43518contain the 32-bit registers @samp{acr0} through @samp{acr15}. 43519 43520The @samp{org.gnu.gdb.s390.linux} feature is optional. It should 43521contain the register @samp{orig_r2}, which is 64-bit wide on System z 43522targets and 32-bit otherwise. In addition, the feature may contain 43523the @samp{last_break} register, whose width depends on the addressing 43524mode, as well as the @samp{system_call} register, which is always 4352532-bit wide. 43526 43527The @samp{org.gnu.gdb.s390.tdb} feature is optional. It should 43528contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct}, 43529@samp{atia}, and @samp{tr0} through @samp{tr15}. 43530 43531The @samp{org.gnu.gdb.s390.vx} feature is optional. It should contain 4353264-bit wide registers @samp{v0l} through @samp{v15l}, which will be 43533combined by @value{GDBN} with the floating point registers @samp{f0} 43534through @samp{f15} to present the 128-bit wide vector registers 43535@samp{v0} through @samp{v15}. In addition, this feature should 43536contain the 128-bit wide vector registers @samp{v16} through 43537@samp{v31}. 43538 43539The @samp{org.gnu.gdb.s390.gs} feature is optional. It should contain 43540the 64-bit wide guarded-storage-control registers @samp{gsd}, 43541@samp{gssm}, and @samp{gsepla}. 43542 43543The @samp{org.gnu.gdb.s390.gsbc} feature is optional. It should contain 43544the 64-bit wide guarded-storage broadcast control registers 43545@samp{bc_gsd}, @samp{bc_gssm}, and @samp{bc_gsepla}. 43546 43547@node Sparc Features 43548@subsection Sparc Features 43549@cindex target descriptions, sparc32 features 43550@cindex target descriptions, sparc64 features 43551The @samp{org.gnu.gdb.sparc.cpu} feature is required for sparc32/sparc64 43552targets. It should describe the following registers: 43553 43554@itemize @minus 43555@item 43556@samp{g0} through @samp{g7} 43557@item 43558@samp{o0} through @samp{o7} 43559@item 43560@samp{l0} through @samp{l7} 43561@item 43562@samp{i0} through @samp{i7} 43563@end itemize 43564 43565They may be 32-bit or 64-bit depending on the target. 43566 43567Also the @samp{org.gnu.gdb.sparc.fpu} feature is required for sparc32/sparc64 43568targets. It should describe the following registers: 43569 43570@itemize @minus 43571@item 43572@samp{f0} through @samp{f31} 43573@item 43574@samp{f32} through @samp{f62} for sparc64 43575@end itemize 43576 43577The @samp{org.gnu.gdb.sparc.cp0} feature is required for sparc32/sparc64 43578targets. It should describe the following registers: 43579 43580@itemize @minus 43581@item 43582@samp{y}, @samp{psr}, @samp{wim}, @samp{tbr}, @samp{pc}, @samp{npc}, 43583@samp{fsr}, and @samp{csr} for sparc32 43584@item 43585@samp{pc}, @samp{npc}, @samp{state}, @samp{fsr}, @samp{fprs}, and @samp{y} 43586for sparc64 43587@end itemize 43588 43589@node TIC6x Features 43590@subsection TMS320C6x Features 43591@cindex target descriptions, TIC6x features 43592@cindex target descriptions, TMS320C6x features 43593The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x 43594targets. It should contain registers @samp{A0} through @samp{A15}, 43595registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}. 43596 43597The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should 43598contain registers @samp{A16} through @samp{A31} and @samp{B16} 43599through @samp{B31}. 43600 43601The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should 43602contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}. 43603 43604@node Operating System Information 43605@appendix Operating System Information 43606@cindex operating system information 43607 43608@menu 43609* Process list:: 43610@end menu 43611 43612Users of @value{GDBN} often wish to obtain information about the state of 43613the operating system running on the target---for example the list of 43614processes, or the list of open files. This section describes the 43615mechanism that makes it possible. This mechanism is similar to the 43616target features mechanism (@pxref{Target Descriptions}), but focuses 43617on a different aspect of target. 43618 43619Operating system information is retrived from the target via the 43620remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata 43621read}). The object name in the request should be @samp{osdata}, and 43622the @var{annex} identifies the data to be fetched. 43623 43624@node Process list 43625@appendixsection Process list 43626@cindex operating system information, process list 43627 43628When requesting the process list, the @var{annex} field in the 43629@samp{qXfer} request should be @samp{processes}. The returned data is 43630an XML document. The formal syntax of this document is defined in 43631@file{gdb/features/osdata.dtd}. 43632 43633An example document is: 43634 43635@smallexample 43636<?xml version="1.0"?> 43637<!DOCTYPE target SYSTEM "osdata.dtd"> 43638<osdata type="processes"> 43639 <item> 43640 <column name="pid">1</column> 43641 <column name="user">root</column> 43642 <column name="command">/sbin/init</column> 43643 <column name="cores">1,2,3</column> 43644 </item> 43645</osdata> 43646@end smallexample 43647 43648Each item should include a column whose name is @samp{pid}. The value 43649of that column should identify the process on the target. The 43650@samp{user} and @samp{command} columns are optional, and will be 43651displayed by @value{GDBN}. The @samp{cores} column, if present, 43652should contain a comma-separated list of cores that this process 43653is running on. Target may provide additional columns, 43654which @value{GDBN} currently ignores. 43655 43656@node Trace File Format 43657@appendix Trace File Format 43658@cindex trace file format 43659 43660The trace file comes in three parts: a header, a textual description 43661section, and a trace frame section with binary data. 43662 43663The header has the form @code{\x7fTRACE0\n}. The first byte is 43664@code{0x7f} so as to indicate that the file contains binary data, 43665while the @code{0} is a version number that may have different values 43666in the future. 43667 43668The description section consists of multiple lines of @sc{ascii} text 43669separated by newline characters (@code{0xa}). The lines may include a 43670variety of optional descriptive or context-setting information, such 43671as tracepoint definitions or register set size. @value{GDBN} will 43672ignore any line that it does not recognize. An empty line marks the end 43673of this section. 43674 43675@table @code 43676@item R @var{size} 43677Specifies the size of a register block in bytes. This is equal to the 43678size of a @code{g} packet payload in the remote protocol. @var{size} 43679is an ascii decimal number. There should be only one such line in 43680a single trace file. 43681 43682@item status @var{status} 43683Trace status. @var{status} has the same format as a @code{qTStatus} 43684remote packet reply. There should be only one such line in a single trace 43685file. 43686 43687@item tp @var{payload} 43688Tracepoint definition. The @var{payload} has the same format as 43689@code{qTfP}/@code{qTsP} remote packet reply payload. A single tracepoint 43690may take multiple lines of definition, corresponding to the multiple 43691reply packets. 43692 43693@item tsv @var{payload} 43694Trace state variable definition. The @var{payload} has the same format as 43695@code{qTfV}/@code{qTsV} remote packet reply payload. A single variable 43696may take multiple lines of definition, corresponding to the multiple 43697reply packets. 43698 43699@item tdesc @var{payload} 43700Target description in XML format. The @var{payload} is a single line of 43701the XML file. All such lines should be concatenated together to get 43702the original XML file. This file is in the same format as @code{qXfer} 43703@code{features} payload, and corresponds to the main @code{target.xml} 43704file. Includes are not allowed. 43705 43706@end table 43707 43708The trace frame section consists of a number of consecutive frames. 43709Each frame begins with a two-byte tracepoint number, followed by a 43710four-byte size giving the amount of data in the frame. The data in 43711the frame consists of a number of blocks, each introduced by a 43712character indicating its type (at least register, memory, and trace 43713state variable). The data in this section is raw binary, not a 43714hexadecimal or other encoding; its endianness matches the target's 43715endianness. 43716 43717@c FIXME bi-arch may require endianness/arch info in description section 43718 43719@table @code 43720@item R @var{bytes} 43721Register block. The number and ordering of bytes matches that of a 43722@code{g} packet in the remote protocol. Note that these are the 43723actual bytes, in target order, not a hexadecimal encoding. 43724 43725@item M @var{address} @var{length} @var{bytes}... 43726Memory block. This is a contiguous block of memory, at the 8-byte 43727address @var{address}, with a 2-byte length @var{length}, followed by 43728@var{length} bytes. 43729 43730@item V @var{number} @var{value} 43731Trace state variable block. This records the 8-byte signed value 43732@var{value} of trace state variable numbered @var{number}. 43733 43734@end table 43735 43736Future enhancements of the trace file format may include additional types 43737of blocks. 43738 43739@node Index Section Format 43740@appendix @code{.gdb_index} section format 43741@cindex .gdb_index section format 43742@cindex index section format 43743 43744This section documents the index section that is created by @code{save 43745gdb-index} (@pxref{Index Files}). The index section is 43746DWARF-specific; some knowledge of DWARF is assumed in this 43747description. 43748 43749The mapped index file format is designed to be directly 43750@code{mmap}able on any architecture. In most cases, a datum is 43751represented using a little-endian 32-bit integer value, called an 43752@code{offset_type}. Big endian machines must byte-swap the values 43753before using them. Exceptions to this rule are noted. The data is 43754laid out such that alignment is always respected. 43755 43756A mapped index consists of several areas, laid out in order. 43757 43758@enumerate 43759@item 43760The file header. This is a sequence of values, of @code{offset_type} 43761unless otherwise noted: 43762 43763@enumerate 43764@item 43765The version number, currently 8. Versions 1, 2 and 3 are obsolete. 43766Version 4 uses a different hashing function from versions 5 and 6. 43767Version 6 includes symbols for inlined functions, whereas versions 4 43768and 5 do not. Version 7 adds attributes to the CU indices in the 43769symbol table. Version 8 specifies that symbols from DWARF type units 43770(@samp{DW_TAG_type_unit}) refer to the type unit's symbol table and not the 43771compilation unit (@samp{DW_TAG_comp_unit}) using the type. 43772 43773@value{GDBN} will only read version 4, 5, or 6 indices 43774by specifying @code{set use-deprecated-index-sections on}. 43775GDB has a workaround for potentially broken version 7 indices so it is 43776currently not flagged as deprecated. 43777 43778@item 43779The offset, from the start of the file, of the CU list. 43780 43781@item 43782The offset, from the start of the file, of the types CU list. Note 43783that this area can be empty, in which case this offset will be equal 43784to the next offset. 43785 43786@item 43787The offset, from the start of the file, of the address area. 43788 43789@item 43790The offset, from the start of the file, of the symbol table. 43791 43792@item 43793The offset, from the start of the file, of the constant pool. 43794@end enumerate 43795 43796@item 43797The CU list. This is a sequence of pairs of 64-bit little-endian 43798values, sorted by the CU offset. The first element in each pair is 43799the offset of a CU in the @code{.debug_info} section. The second 43800element in each pair is the length of that CU. References to a CU 43801elsewhere in the map are done using a CU index, which is just the 438020-based index into this table. Note that if there are type CUs, then 43803conceptually CUs and type CUs form a single list for the purposes of 43804CU indices. 43805 43806@item 43807The types CU list. This is a sequence of triplets of 64-bit 43808little-endian values. In a triplet, the first value is the CU offset, 43809the second value is the type offset in the CU, and the third value is 43810the type signature. The types CU list is not sorted. 43811 43812@item 43813The address area. The address area consists of a sequence of address 43814entries. Each address entry has three elements: 43815 43816@enumerate 43817@item 43818The low address. This is a 64-bit little-endian value. 43819 43820@item 43821The high address. This is a 64-bit little-endian value. Like 43822@code{DW_AT_high_pc}, the value is one byte beyond the end. 43823 43824@item 43825The CU index. This is an @code{offset_type} value. 43826@end enumerate 43827 43828@item 43829The symbol table. This is an open-addressed hash table. The size of 43830the hash table is always a power of 2. 43831 43832Each slot in the hash table consists of a pair of @code{offset_type} 43833values. The first value is the offset of the symbol's name in the 43834constant pool. The second value is the offset of the CU vector in the 43835constant pool. 43836 43837If both values are 0, then this slot in the hash table is empty. This 43838is ok because while 0 is a valid constant pool index, it cannot be a 43839valid index for both a string and a CU vector. 43840 43841The hash value for a table entry is computed by applying an 43842iterative hash function to the symbol's name. Starting with an 43843initial value of @code{r = 0}, each (unsigned) character @samp{c} in 43844the string is incorporated into the hash using the formula depending on the 43845index version: 43846 43847@table @asis 43848@item Version 4 43849The formula is @code{r = r * 67 + c - 113}. 43850 43851@item Versions 5 to 7 43852The formula is @code{r = r * 67 + tolower (c) - 113}. 43853@end table 43854 43855The terminating @samp{\0} is not incorporated into the hash. 43856 43857The step size used in the hash table is computed via 43858@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash 43859value, and @samp{size} is the size of the hash table. The step size 43860is used to find the next candidate slot when handling a hash 43861collision. 43862 43863The names of C@t{++} symbols in the hash table are canonicalized. We 43864don't currently have a simple description of the canonicalization 43865algorithm; if you intend to create new index sections, you must read 43866the code. 43867 43868@item 43869The constant pool. This is simply a bunch of bytes. It is organized 43870so that alignment is correct: CU vectors are stored first, followed by 43871strings. 43872 43873A CU vector in the constant pool is a sequence of @code{offset_type} 43874values. The first value is the number of CU indices in the vector. 43875Each subsequent value is the index and symbol attributes of a CU in 43876the CU list. This element in the hash table is used to indicate which 43877CUs define the symbol and how the symbol is used. 43878See below for the format of each CU index+attributes entry. 43879 43880A string in the constant pool is zero-terminated. 43881@end enumerate 43882 43883Attributes were added to CU index values in @code{.gdb_index} version 7. 43884If a symbol has multiple uses within a CU then there is one 43885CU index+attributes value for each use. 43886 43887The format of each CU index+attributes entry is as follows 43888(bit 0 = LSB): 43889 43890@table @asis 43891 43892@item Bits 0-23 43893This is the index of the CU in the CU list. 43894@item Bits 24-27 43895These bits are reserved for future purposes and must be zero. 43896@item Bits 28-30 43897The kind of the symbol in the CU. 43898 43899@table @asis 43900@item 0 43901This value is reserved and should not be used. 43902By reserving zero the full @code{offset_type} value is backwards compatible 43903with previous versions of the index. 43904@item 1 43905The symbol is a type. 43906@item 2 43907The symbol is a variable or an enum value. 43908@item 3 43909The symbol is a function. 43910@item 4 43911Any other kind of symbol. 43912@item 5,6,7 43913These values are reserved. 43914@end table 43915 43916@item Bit 31 43917This bit is zero if the value is global and one if it is static. 43918 43919The determination of whether a symbol is global or static is complicated. 43920The authorative reference is the file @file{dwarf2read.c} in 43921@value{GDBN} sources. 43922 43923@end table 43924 43925This pseudo-code describes the computation of a symbol's kind and 43926global/static attributes in the index. 43927 43928@smallexample 43929is_external = get_attribute (die, DW_AT_external); 43930language = get_attribute (cu_die, DW_AT_language); 43931switch (die->tag) 43932 @{ 43933 case DW_TAG_typedef: 43934 case DW_TAG_base_type: 43935 case DW_TAG_subrange_type: 43936 kind = TYPE; 43937 is_static = 1; 43938 break; 43939 case DW_TAG_enumerator: 43940 kind = VARIABLE; 43941 is_static = language != CPLUS; 43942 break; 43943 case DW_TAG_subprogram: 43944 kind = FUNCTION; 43945 is_static = ! (is_external || language == ADA); 43946 break; 43947 case DW_TAG_constant: 43948 kind = VARIABLE; 43949 is_static = ! is_external; 43950 break; 43951 case DW_TAG_variable: 43952 kind = VARIABLE; 43953 is_static = ! is_external; 43954 break; 43955 case DW_TAG_namespace: 43956 kind = TYPE; 43957 is_static = 0; 43958 break; 43959 case DW_TAG_class_type: 43960 case DW_TAG_interface_type: 43961 case DW_TAG_structure_type: 43962 case DW_TAG_union_type: 43963 case DW_TAG_enumeration_type: 43964 kind = TYPE; 43965 is_static = language != CPLUS; 43966 break; 43967 default: 43968 assert (0); 43969 @} 43970@end smallexample 43971 43972@node Man Pages 43973@appendix Manual pages 43974@cindex Man pages 43975 43976@menu 43977* gdb man:: The GNU Debugger man page 43978* gdbserver man:: Remote Server for the GNU Debugger man page 43979* gcore man:: Generate a core file of a running program 43980* gdbinit man:: gdbinit scripts 43981* gdb-add-index man:: Add index files to speed up GDB 43982@end menu 43983 43984@node gdb man 43985@heading gdb man 43986 43987@c man title gdb The GNU Debugger 43988 43989@c man begin SYNOPSIS gdb 43990gdb [@option{-help}] [@option{-nh}] [@option{-nx}] [@option{-q}] 43991[@option{-batch}] [@option{-cd=}@var{dir}] [@option{-f}] 43992[@option{-b}@w{ }@var{bps}] 43993 [@option{-tty=}@var{dev}] [@option{-s} @var{symfile}] 43994[@option{-e}@w{ }@var{prog}] [@option{-se}@w{ }@var{prog}] 43995[@option{-c}@w{ }@var{core}] [@option{-p}@w{ }@var{procID}] 43996 [@option{-x}@w{ }@var{cmds}] [@option{-d}@w{ }@var{dir}] 43997[@var{prog}|@var{prog} @var{procID}|@var{prog} @var{core}] 43998@c man end 43999 44000@c man begin DESCRIPTION gdb 44001The purpose of a debugger such as @value{GDBN} is to allow you to see what is 44002going on ``inside'' another program while it executes -- or what another 44003program was doing at the moment it crashed. 44004 44005@value{GDBN} can do four main kinds of things (plus other things in support of 44006these) to help you catch bugs in the act: 44007 44008@itemize @bullet 44009@item 44010Start your program, specifying anything that might affect its behavior. 44011 44012@item 44013Make your program stop on specified conditions. 44014 44015@item 44016Examine what has happened, when your program has stopped. 44017 44018@item 44019Change things in your program, so you can experiment with correcting the 44020effects of one bug and go on to learn about another. 44021@end itemize 44022 44023You can use @value{GDBN} to debug programs written in C, C@t{++}, Fortran and 44024Modula-2. 44025 44026@value{GDBN} is invoked with the shell command @code{gdb}. Once started, it reads 44027commands from the terminal until you tell it to exit with the @value{GDBN} 44028command @code{quit}. You can get online help from @value{GDBN} itself 44029by using the command @code{help}. 44030 44031You can run @code{gdb} with no arguments or options; but the most 44032usual way to start @value{GDBN} is with one argument or two, specifying an 44033executable program as the argument: 44034 44035@smallexample 44036gdb program 44037@end smallexample 44038 44039You can also start with both an executable program and a core file specified: 44040 44041@smallexample 44042gdb program core 44043@end smallexample 44044 44045You can, instead, specify a process ID as a second argument, if you want 44046to debug a running process: 44047 44048@smallexample 44049gdb program 1234 44050gdb -p 1234 44051@end smallexample 44052 44053@noindent 44054would attach @value{GDBN} to process @code{1234} (unless you also have a file 44055named @file{1234}; @value{GDBN} does check for a core file first). 44056With option @option{-p} you can omit the @var{program} filename. 44057 44058Here are some of the most frequently needed @value{GDBN} commands: 44059 44060@c pod2man highlights the right hand side of the @item lines. 44061@table @env 44062@item break [@var{file}:]@var{function} 44063Set a breakpoint at @var{function} (in @var{file}). 44064 44065@item run [@var{arglist}] 44066Start your program (with @var{arglist}, if specified). 44067 44068@item bt 44069Backtrace: display the program stack. 44070 44071@item print @var{expr} 44072Display the value of an expression. 44073 44074@item c 44075Continue running your program (after stopping, e.g. at a breakpoint). 44076 44077@item next 44078Execute next program line (after stopping); step @emph{over} any 44079function calls in the line. 44080 44081@item edit [@var{file}:]@var{function} 44082look at the program line where it is presently stopped. 44083 44084@item list [@var{file}:]@var{function} 44085type the text of the program in the vicinity of where it is presently stopped. 44086 44087@item step 44088Execute next program line (after stopping); step @emph{into} any 44089function calls in the line. 44090 44091@item help [@var{name}] 44092Show information about @value{GDBN} command @var{name}, or general information 44093about using @value{GDBN}. 44094 44095@item quit 44096Exit from @value{GDBN}. 44097@end table 44098 44099@ifset man 44100For full details on @value{GDBN}, 44101see @cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44102by Richard M. Stallman and Roland H. Pesch. The same text is available online 44103as the @code{gdb} entry in the @code{info} program. 44104@end ifset 44105@c man end 44106 44107@c man begin OPTIONS gdb 44108Any arguments other than options specify an executable 44109file and core file (or process ID); that is, the first argument 44110encountered with no 44111associated option flag is equivalent to a @option{-se} option, and the second, 44112if any, is equivalent to a @option{-c} option if it's the name of a file. 44113Many options have 44114both long and short forms; both are shown here. The long forms are also 44115recognized if you truncate them, so long as enough of the option is 44116present to be unambiguous. (If you prefer, you can flag option 44117arguments with @option{+} rather than @option{-}, though we illustrate the 44118more usual convention.) 44119 44120All the options and command line arguments you give are processed 44121in sequential order. The order makes a difference when the @option{-x} 44122option is used. 44123 44124@table @env 44125@item -help 44126@itemx -h 44127List all options, with brief explanations. 44128 44129@item -symbols=@var{file} 44130@itemx -s @var{file} 44131Read symbol table from file @var{file}. 44132 44133@item -write 44134Enable writing into executable and core files. 44135 44136@item -exec=@var{file} 44137@itemx -e @var{file} 44138Use file @var{file} as the executable file to execute when 44139appropriate, and for examining pure data in conjunction with a core 44140dump. 44141 44142@item -se=@var{file} 44143Read symbol table from file @var{file} and use it as the executable 44144file. 44145 44146@item -core=@var{file} 44147@itemx -c @var{file} 44148Use file @var{file} as a core dump to examine. 44149 44150@item -command=@var{file} 44151@itemx -x @var{file} 44152Execute @value{GDBN} commands from file @var{file}. 44153 44154@item -ex @var{command} 44155Execute given @value{GDBN} @var{command}. 44156 44157@item -directory=@var{directory} 44158@itemx -d @var{directory} 44159Add @var{directory} to the path to search for source files. 44160 44161@item -nh 44162Do not execute commands from @file{~/.gdbinit}. 44163 44164@item -nx 44165@itemx -n 44166Do not execute commands from any @file{.gdbinit} initialization files. 44167 44168@item -quiet 44169@itemx -q 44170``Quiet''. Do not print the introductory and copyright messages. These 44171messages are also suppressed in batch mode. 44172 44173@item -batch 44174Run in batch mode. Exit with status @code{0} after processing all the command 44175files specified with @option{-x} (and @file{.gdbinit}, if not inhibited). 44176Exit with nonzero status if an error occurs in executing the @value{GDBN} 44177commands in the command files. 44178 44179Batch mode may be useful for running @value{GDBN} as a filter, for example to 44180download and run a program on another computer; in order to make this 44181more useful, the message 44182 44183@smallexample 44184Program exited normally. 44185@end smallexample 44186 44187@noindent 44188(which is ordinarily issued whenever a program running under @value{GDBN} control 44189terminates) is not issued when running in batch mode. 44190 44191@item -cd=@var{directory} 44192Run @value{GDBN} using @var{directory} as its working directory, 44193instead of the current directory. 44194 44195@item -fullname 44196@itemx -f 44197Emacs sets this option when it runs @value{GDBN} as a subprocess. It tells 44198@value{GDBN} to output the full file name and line number in a standard, 44199recognizable fashion each time a stack frame is displayed (which 44200includes each time the program stops). This recognizable format looks 44201like two @samp{\032} characters, followed by the file name, line number 44202and character position separated by colons, and a newline. The 44203Emacs-to-@value{GDBN} interface program uses the two @samp{\032} 44204characters as a signal to display the source code for the frame. 44205 44206@item -b @var{bps} 44207Set the line speed (baud rate or bits per second) of any serial 44208interface used by @value{GDBN} for remote debugging. 44209 44210@item -tty=@var{device} 44211Run using @var{device} for your program's standard input and output. 44212@end table 44213@c man end 44214 44215@c man begin SEEALSO gdb 44216@ifset man 44217The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44218If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44219documentation are properly installed at your site, the command 44220 44221@smallexample 44222info gdb 44223@end smallexample 44224 44225@noindent 44226should give you access to the complete manual. 44227 44228@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44229Richard M. Stallman and Roland H. Pesch, July 1991. 44230@end ifset 44231@c man end 44232 44233@node gdbserver man 44234@heading gdbserver man 44235 44236@c man title gdbserver Remote Server for the GNU Debugger 44237@format 44238@c man begin SYNOPSIS gdbserver 44239gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 44240 44241gdbserver --attach @var{comm} @var{pid} 44242 44243gdbserver --multi @var{comm} 44244@c man end 44245@end format 44246 44247@c man begin DESCRIPTION gdbserver 44248@command{gdbserver} is a program that allows you to run @value{GDBN} on a different machine 44249than the one which is running the program being debugged. 44250 44251@ifclear man 44252@subheading Usage (server (target) side) 44253@end ifclear 44254@ifset man 44255Usage (server (target) side): 44256@end ifset 44257 44258First, you need to have a copy of the program you want to debug put onto 44259the target system. The program can be stripped to save space if needed, as 44260@command{gdbserver} doesn't care about symbols. All symbol handling is taken care of by 44261the @value{GDBN} running on the host system. 44262 44263To use the server, you log on to the target system, and run the @command{gdbserver} 44264program. You must tell it (a) how to communicate with @value{GDBN}, (b) the name of 44265your program, and (c) its arguments. The general syntax is: 44266 44267@smallexample 44268target> gdbserver @var{comm} @var{program} [@var{args} ...] 44269@end smallexample 44270 44271For example, using a serial port, you might say: 44272 44273@smallexample 44274@ifset man 44275@c @file would wrap it as F</dev/com1>. 44276target> gdbserver /dev/com1 emacs foo.txt 44277@end ifset 44278@ifclear man 44279target> gdbserver @file{/dev/com1} emacs foo.txt 44280@end ifclear 44281@end smallexample 44282 44283This tells @command{gdbserver} to debug emacs with an argument of foo.txt, and 44284to communicate with @value{GDBN} via @file{/dev/com1}. @command{gdbserver} now 44285waits patiently for the host @value{GDBN} to communicate with it. 44286 44287To use a TCP connection, you could say: 44288 44289@smallexample 44290target> gdbserver host:2345 emacs foo.txt 44291@end smallexample 44292 44293This says pretty much the same thing as the last example, except that we are 44294going to communicate with the @code{host} @value{GDBN} via TCP. The @code{host:2345} argument means 44295that we are expecting to see a TCP connection from @code{host} to local TCP port 442962345. (Currently, the @code{host} part is ignored.) You can choose any number you 44297want for the port number as long as it does not conflict with any existing TCP 44298ports on the target system. This same port number must be used in the host 44299@value{GDBN}s @code{target remote} command, which will be described shortly. Note that if 44300you chose a port number that conflicts with another service, @command{gdbserver} will 44301print an error message and exit. 44302 44303@command{gdbserver} can also attach to running programs. 44304This is accomplished via the @option{--attach} argument. The syntax is: 44305 44306@smallexample 44307target> gdbserver --attach @var{comm} @var{pid} 44308@end smallexample 44309 44310@var{pid} is the process ID of a currently running process. It isn't 44311necessary to point @command{gdbserver} at a binary for the running process. 44312 44313To start @code{gdbserver} without supplying an initial command to run 44314or process ID to attach, use the @option{--multi} command line option. 44315In such case you should connect using @kbd{target extended-remote} to start 44316the program you want to debug. 44317 44318@smallexample 44319target> gdbserver --multi @var{comm} 44320@end smallexample 44321 44322@ifclear man 44323@subheading Usage (host side) 44324@end ifclear 44325@ifset man 44326Usage (host side): 44327@end ifset 44328 44329You need an unstripped copy of the target program on your host system, since 44330@value{GDBN} needs to examine its symbol tables and such. Start up @value{GDBN} as you normally 44331would, with the target program as the first argument. (You may need to use the 44332@option{--baud} option if the serial line is running at anything except 9600 baud.) 44333That is @code{gdb TARGET-PROG}, or @code{gdb --baud BAUD TARGET-PROG}. After that, the only 44334new command you need to know about is @code{target remote} 44335(or @code{target extended-remote}). Its argument is either 44336a device name (usually a serial device, like @file{/dev/ttyb}), or a @code{HOST:PORT} 44337descriptor. For example: 44338 44339@smallexample 44340@ifset man 44341@c @file would wrap it as F</dev/ttyb>. 44342(gdb) target remote /dev/ttyb 44343@end ifset 44344@ifclear man 44345(gdb) target remote @file{/dev/ttyb} 44346@end ifclear 44347@end smallexample 44348 44349@noindent 44350communicates with the server via serial line @file{/dev/ttyb}, and: 44351 44352@smallexample 44353(gdb) target remote the-target:2345 44354@end smallexample 44355 44356@noindent 44357communicates via a TCP connection to port 2345 on host `the-target', where 44358you previously started up @command{gdbserver} with the same port number. Note that for 44359TCP connections, you must start up @command{gdbserver} prior to using the `target remote' 44360command, otherwise you may get an error that looks something like 44361`Connection refused'. 44362 44363@command{gdbserver} can also debug multiple inferiors at once, 44364described in 44365@ifset man 44366the @value{GDBN} manual in node @code{Inferiors and Programs} 44367-- shell command @code{info -f gdb -n 'Inferiors and Programs'}. 44368@end ifset 44369@ifclear man 44370@ref{Inferiors and Programs}. 44371@end ifclear 44372In such case use the @code{extended-remote} @value{GDBN} command variant: 44373 44374@smallexample 44375(gdb) target extended-remote the-target:2345 44376@end smallexample 44377 44378The @command{gdbserver} option @option{--multi} may or may not be used in such 44379case. 44380@c man end 44381 44382@c man begin OPTIONS gdbserver 44383There are three different modes for invoking @command{gdbserver}: 44384 44385@itemize @bullet 44386 44387@item 44388Debug a specific program specified by its program name: 44389 44390@smallexample 44391gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 44392@end smallexample 44393 44394The @var{comm} parameter specifies how should the server communicate 44395with @value{GDBN}; it is either a device name (to use a serial line), 44396a TCP port number (@code{:1234}), or @code{-} or @code{stdio} to use 44397stdin/stdout of @code{gdbserver}. Specify the name of the program to 44398debug in @var{prog}. Any remaining arguments will be passed to the 44399program verbatim. When the program exits, @value{GDBN} will close the 44400connection, and @code{gdbserver} will exit. 44401 44402@item 44403Debug a specific program by specifying the process ID of a running 44404program: 44405 44406@smallexample 44407gdbserver --attach @var{comm} @var{pid} 44408@end smallexample 44409 44410The @var{comm} parameter is as described above. Supply the process ID 44411of a running program in @var{pid}; @value{GDBN} will do everything 44412else. Like with the previous mode, when the process @var{pid} exits, 44413@value{GDBN} will close the connection, and @code{gdbserver} will exit. 44414 44415@item 44416Multi-process mode -- debug more than one program/process: 44417 44418@smallexample 44419gdbserver --multi @var{comm} 44420@end smallexample 44421 44422In this mode, @value{GDBN} can instruct @command{gdbserver} which 44423command(s) to run. Unlike the other 2 modes, @value{GDBN} will not 44424close the connection when a process being debugged exits, so you can 44425debug several processes in the same session. 44426@end itemize 44427 44428In each of the modes you may specify these options: 44429 44430@table @env 44431 44432@item --help 44433List all options, with brief explanations. 44434 44435@item --version 44436This option causes @command{gdbserver} to print its version number and exit. 44437 44438@item --attach 44439@command{gdbserver} will attach to a running program. The syntax is: 44440 44441@smallexample 44442target> gdbserver --attach @var{comm} @var{pid} 44443@end smallexample 44444 44445@var{pid} is the process ID of a currently running process. It isn't 44446necessary to point @command{gdbserver} at a binary for the running process. 44447 44448@item --multi 44449To start @code{gdbserver} without supplying an initial command to run 44450or process ID to attach, use this command line option. 44451Then you can connect using @kbd{target extended-remote} and start 44452the program you want to debug. The syntax is: 44453 44454@smallexample 44455target> gdbserver --multi @var{comm} 44456@end smallexample 44457 44458@item --debug 44459Instruct @code{gdbserver} to display extra status information about the debugging 44460process. 44461This option is intended for @code{gdbserver} development and for bug reports to 44462the developers. 44463 44464@item --remote-debug 44465Instruct @code{gdbserver} to display remote protocol debug output. 44466This option is intended for @code{gdbserver} development and for bug reports to 44467the developers. 44468 44469@item --debug-format=option1@r{[},option2,...@r{]} 44470Instruct @code{gdbserver} to include extra information in each line 44471of debugging output. 44472@xref{Other Command-Line Arguments for gdbserver}. 44473 44474@item --wrapper 44475Specify a wrapper to launch programs 44476for debugging. The option should be followed by the name of the 44477wrapper, then any command-line arguments to pass to the wrapper, then 44478@kbd{--} indicating the end of the wrapper arguments. 44479 44480@item --once 44481By default, @command{gdbserver} keeps the listening TCP port open, so that 44482additional connections are possible. However, if you start @code{gdbserver} 44483with the @option{--once} option, it will stop listening for any further 44484connection attempts after connecting to the first @value{GDBN} session. 44485 44486@c --disable-packet is not documented for users. 44487 44488@c --disable-randomization and --no-disable-randomization are superseded by 44489@c QDisableRandomization. 44490 44491@end table 44492@c man end 44493 44494@c man begin SEEALSO gdbserver 44495@ifset man 44496The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44497If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44498documentation are properly installed at your site, the command 44499 44500@smallexample 44501info gdb 44502@end smallexample 44503 44504should give you access to the complete manual. 44505 44506@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44507Richard M. Stallman and Roland H. Pesch, July 1991. 44508@end ifset 44509@c man end 44510 44511@node gcore man 44512@heading gcore 44513 44514@c man title gcore Generate a core file of a running program 44515 44516@format 44517@c man begin SYNOPSIS gcore 44518gcore [-a] [-o @var{prefix}] @var{pid1} [@var{pid2}...@var{pidN}] 44519@c man end 44520@end format 44521 44522@c man begin DESCRIPTION gcore 44523Generate core dumps of one or more running programs with process IDs 44524@var{pid1}, @var{pid2}, etc. A core file produced by @command{gcore} 44525is equivalent to one produced by the kernel when the process crashes 44526(and when @kbd{ulimit -c} was used to set up an appropriate core dump 44527limit). However, unlike after a crash, after @command{gcore} finishes 44528its job the program remains running without any change. 44529@c man end 44530 44531@c man begin OPTIONS gcore 44532@table @env 44533@item -a 44534Dump all memory mappings. The actual effect of this option depends on 44535the Operating System. On @sc{gnu}/Linux, it will disable 44536@code{use-coredump-filter} (@pxref{set use-coredump-filter}) and 44537enable @code{dump-excluded-mappings} (@pxref{set 44538dump-excluded-mappings}). 44539 44540@item -o @var{prefix} 44541The optional argument @var{prefix} specifies the prefix to be used 44542when composing the file names of the core dumps. The file name is 44543composed as @file{@var{prefix}.@var{pid}}, where @var{pid} is the 44544process ID of the running program being analyzed by @command{gcore}. 44545If not specified, @var{prefix} defaults to @var{gcore}. 44546@end table 44547@c man end 44548 44549@c man begin SEEALSO gcore 44550@ifset man 44551The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44552If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44553documentation are properly installed at your site, the command 44554 44555@smallexample 44556info gdb 44557@end smallexample 44558 44559@noindent 44560should give you access to the complete manual. 44561 44562@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44563Richard M. Stallman and Roland H. Pesch, July 1991. 44564@end ifset 44565@c man end 44566 44567@node gdbinit man 44568@heading gdbinit 44569 44570@c man title gdbinit GDB initialization scripts 44571 44572@format 44573@c man begin SYNOPSIS gdbinit 44574@ifset SYSTEM_GDBINIT 44575@value{SYSTEM_GDBINIT} 44576@end ifset 44577 44578~/.gdbinit 44579 44580./.gdbinit 44581@c man end 44582@end format 44583 44584@c man begin DESCRIPTION gdbinit 44585These files contain @value{GDBN} commands to automatically execute during 44586@value{GDBN} startup. The lines of contents are canned sequences of commands, 44587described in 44588@ifset man 44589the @value{GDBN} manual in node @code{Sequences} 44590-- shell command @code{info -f gdb -n Sequences}. 44591@end ifset 44592@ifclear man 44593@ref{Sequences}. 44594@end ifclear 44595 44596Please read more in 44597@ifset man 44598the @value{GDBN} manual in node @code{Startup} 44599-- shell command @code{info -f gdb -n Startup}. 44600@end ifset 44601@ifclear man 44602@ref{Startup}. 44603@end ifclear 44604 44605@table @env 44606@ifset SYSTEM_GDBINIT 44607@item @value{SYSTEM_GDBINIT} 44608@end ifset 44609@ifclear SYSTEM_GDBINIT 44610@item (not enabled with @code{--with-system-gdbinit} during compilation) 44611@end ifclear 44612System-wide initialization file. It is executed unless user specified 44613@value{GDBN} option @code{-nx} or @code{-n}. 44614See more in 44615@ifset man 44616the @value{GDBN} manual in node @code{System-wide configuration} 44617-- shell command @code{info -f gdb -n 'System-wide configuration'}. 44618@end ifset 44619@ifclear man 44620@ref{System-wide configuration}. 44621@end ifclear 44622 44623@item ~/.gdbinit 44624User initialization file. It is executed unless user specified 44625@value{GDBN} options @code{-nx}, @code{-n} or @code{-nh}. 44626 44627@item ./.gdbinit 44628Initialization file for current directory. It may need to be enabled with 44629@value{GDBN} security command @code{set auto-load local-gdbinit}. 44630See more in 44631@ifset man 44632the @value{GDBN} manual in node @code{Init File in the Current Directory} 44633-- shell command @code{info -f gdb -n 'Init File in the Current Directory'}. 44634@end ifset 44635@ifclear man 44636@ref{Init File in the Current Directory}. 44637@end ifclear 44638@end table 44639@c man end 44640 44641@c man begin SEEALSO gdbinit 44642@ifset man 44643gdb(1), @code{info -f gdb -n Startup} 44644 44645The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44646If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44647documentation are properly installed at your site, the command 44648 44649@smallexample 44650info gdb 44651@end smallexample 44652 44653should give you access to the complete manual. 44654 44655@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44656Richard M. Stallman and Roland H. Pesch, July 1991. 44657@end ifset 44658@c man end 44659 44660@node gdb-add-index man 44661@heading gdb-add-index 44662@pindex gdb-add-index 44663@anchor{gdb-add-index} 44664 44665@c man title gdb-add-index Add index files to speed up GDB 44666 44667@c man begin SYNOPSIS gdb-add-index 44668gdb-add-index @var{filename} 44669@c man end 44670 44671@c man begin DESCRIPTION gdb-add-index 44672When @value{GDBN} finds a symbol file, it scans the symbols in the 44673file in order to construct an internal symbol table. This lets most 44674@value{GDBN} operations work quickly--at the cost of a delay early on. 44675For large programs, this delay can be quite lengthy, so @value{GDBN} 44676provides a way to build an index, which speeds up startup. 44677 44678To determine whether a file contains such an index, use the command 44679@kbd{readelf -S filename}: the index is stored in a section named 44680@code{.gdb_index}. The index file can only be produced on systems 44681which use ELF binaries and DWARF debug information (i.e., sections 44682named @code{.debug_*}). 44683 44684@command{gdb-add-index} uses @value{GDBN} and @command{objdump} found 44685in the @env{PATH} environment variable. If you want to use different 44686versions of these programs, you can specify them through the 44687@env{GDB} and @env{OBJDUMP} environment variables. 44688 44689See more in 44690@ifset man 44691the @value{GDBN} manual in node @code{Index Files} 44692-- shell command @kbd{info -f gdb -n "Index Files"}. 44693@end ifset 44694@ifclear man 44695@ref{Index Files}. 44696@end ifclear 44697@c man end 44698 44699@c man begin SEEALSO gdb-add-index 44700@ifset man 44701The full documentation for @value{GDBN} is maintained as a Texinfo manual. 44702If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 44703documentation are properly installed at your site, the command 44704 44705@smallexample 44706info gdb 44707@end smallexample 44708 44709should give you access to the complete manual. 44710 44711@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 44712Richard M. Stallman and Roland H. Pesch, July 1991. 44713@end ifset 44714@c man end 44715 44716@include gpl.texi 44717 44718@node GNU Free Documentation License 44719@appendix GNU Free Documentation License 44720@include fdl.texi 44721 44722@node Concept Index 44723@unnumbered Concept Index 44724 44725@printindex cp 44726 44727@node Command and Variable Index 44728@unnumbered Command, Variable, and Function Index 44729 44730@printindex fn 44731 44732@tex 44733% I think something like @@colophon should be in texinfo. In the 44734% meantime: 44735\long\def\colophon{\hbox to0pt{}\vfill 44736\centerline{The body of this manual is set in} 44737\centerline{\fontname\tenrm,} 44738\centerline{with headings in {\bf\fontname\tenbf}} 44739\centerline{and examples in {\tt\fontname\tentt}.} 44740\centerline{{\it\fontname\tenit\/},} 44741\centerline{{\bf\fontname\tenbf}, and} 44742\centerline{{\sl\fontname\tensl\/}} 44743\centerline{are used for emphasis.}\vfill} 44744\page\colophon 44745% Blame: doc@@cygnus.com, 1991. 44746@end tex 44747 44748@bye 44749