1\input texinfo @c -*-texinfo-*- 2@c Copyright (C) 1988--2023 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-2023 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 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-2023 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* Debuginfod:: Download debugging resources with @code{debuginfod} 188* Man Pages:: Manual pages 189* Copying:: GNU General Public License says 190 how you can copy and share GDB 191* GNU Free Documentation License:: The license for this documentation 192* Concept Index:: Index of @value{GDBN} concepts 193* Command and Variable Index:: Index of @value{GDBN} commands, variables, 194 functions, and Python data types 195@end menu 196 197@end ifnottex 198 199@contents 200 201@node Summary 202@unnumbered Summary of @value{GDBN} 203 204The purpose of a debugger such as @value{GDBN} is to allow you to see what is 205going on ``inside'' another program while it executes---or what another 206program was doing at the moment it crashed. 207 208@value{GDBN} can do four main kinds of things (plus other things in support of 209these) to help you catch bugs in the act: 210 211@itemize @bullet 212@item 213Start your program, specifying anything that might affect its behavior. 214 215@item 216Make your program stop on specified conditions. 217 218@item 219Examine what has happened, when your program has stopped. 220 221@item 222Change things in your program, so you can experiment with correcting the 223effects of one bug and go on to learn about another. 224@end itemize 225 226You can use @value{GDBN} to debug programs written in C and C@t{++}. 227For more information, see @ref{Supported Languages,,Supported Languages}. 228For more information, see @ref{C,,C and C++}. 229 230Support for D is partial. For information on D, see 231@ref{D,,D}. 232 233@cindex Modula-2 234Support for Modula-2 is partial. For information on Modula-2, see 235@ref{Modula-2,,Modula-2}. 236 237Support for OpenCL C is partial. For information on OpenCL C, see 238@ref{OpenCL C,,OpenCL C}. 239 240@cindex Pascal 241Debugging Pascal programs which use sets, subranges, file variables, or 242nested functions does not currently work. @value{GDBN} does not support 243entering expressions, printing values, or similar features using Pascal 244syntax. 245 246@cindex Fortran 247@value{GDBN} can be used to debug programs written in Fortran, although 248it may be necessary to refer to some variables with a trailing 249underscore. 250 251@value{GDBN} can be used to debug programs written in Objective-C, 252using either the Apple/NeXT or the GNU Objective-C runtime. 253 254@menu 255* Free Software:: Freely redistributable software 256* Free Documentation:: Free Software Needs Free Documentation 257* Contributors:: Contributors to GDB 258@end menu 259 260@node Free Software 261@unnumberedsec Free Software 262 263@value{GDBN} is @dfn{free software}, protected by the @sc{gnu} 264General Public License 265(GPL). The GPL gives you the freedom to copy or adapt a licensed 266program---but every person getting a copy also gets with it the 267freedom to modify that copy (which means that they must get access to 268the source code), and the freedom to distribute further copies. 269Typical software companies use copyrights to limit your freedoms; the 270Free Software Foundation uses the GPL to preserve these freedoms. 271 272Fundamentally, the General Public License is a license which says that 273you have these freedoms and that you cannot take these freedoms away 274from anyone else. 275 276@node Free Documentation 277@unnumberedsec Free Software Needs Free Documentation 278 279The biggest deficiency in the free software community today is not in 280the software---it is the lack of good free documentation that we can 281include with the free software. Many of our most important 282programs do not come with free reference manuals and free introductory 283texts. Documentation is an essential part of any software package; 284when an important free software package does not come with a free 285manual and a free tutorial, that is a major gap. We have many such 286gaps today. 287 288Consider Perl, for instance. The tutorial manuals that people 289normally use are non-free. How did this come about? Because the 290authors of those manuals published them with restrictive terms---no 291copying, no modification, source files not available---which exclude 292them from the free software world. 293 294That wasn't the first time this sort of thing happened, and it was far 295from the last. Many times we have heard a GNU user eagerly describe a 296manual that he is writing, his intended contribution to the community, 297only to learn that he had ruined everything by signing a publication 298contract to make it non-free. 299 300Free documentation, like free software, is a matter of freedom, not 301price. The problem with the non-free manual is not that publishers 302charge a price for printed copies---that in itself is fine. (The Free 303Software Foundation sells printed copies of manuals, too.) The 304problem is the restrictions on the use of the manual. Free manuals 305are available in source code form, and give you permission to copy and 306modify. Non-free manuals do not allow this. 307 308The criteria of freedom for a free manual are roughly the same as for 309free software. Redistribution (including the normal kinds of 310commercial redistribution) must be permitted, so that the manual can 311accompany every copy of the program, both on-line and on paper. 312 313Permission for modification of the technical content is crucial too. 314When people modify the software, adding or changing features, if they 315are conscientious they will change the manual too---so they can 316provide accurate and clear documentation for the modified program. A 317manual that leaves you no choice but to write a new manual to document 318a changed version of the program is not really available to our 319community. 320 321Some kinds of limits on the way modification is handled are 322acceptable. For example, requirements to preserve the original 323author's copyright notice, the distribution terms, or the list of 324authors, are ok. It is also no problem to require modified versions 325to include notice that they were modified. Even entire sections that 326may not be deleted or changed are acceptable, as long as they deal 327with nontechnical topics (like this one). These kinds of restrictions 328are acceptable because they don't obstruct the community's normal use 329of the manual. 330 331However, it must be possible to modify all the @emph{technical} 332content of the manual, and then distribute the result in all the usual 333media, through all the usual channels. Otherwise, the restrictions 334obstruct the use of the manual, it is not free, and we need another 335manual to replace it. 336 337Please spread the word about this issue. Our community continues to 338lose manuals to proprietary publishing. If we spread the word that 339free software needs free reference manuals and free tutorials, perhaps 340the next person who wants to contribute by writing documentation will 341realize, before it is too late, that only free manuals contribute to 342the free software community. 343 344If you are writing documentation, please insist on publishing it under 345the GNU Free Documentation License or another free documentation 346license. Remember that this decision requires your approval---you 347don't have to let the publisher decide. Some commercial publishers 348will use a free license if you insist, but they will not propose the 349option; it is up to you to raise the issue and say firmly that this is 350what you want. If the publisher you are dealing with refuses, please 351try other publishers. If you're not sure whether a proposed license 352is free, write to @email{licensing@@gnu.org}. 353 354You can encourage commercial publishers to sell more free, copylefted 355manuals and tutorials by buying them, and particularly by buying 356copies from the publishers that paid for their writing or for major 357improvements. Meanwhile, try to avoid buying non-free documentation 358at all. Check the distribution terms of a manual before you buy it, 359and insist that whoever seeks your business must respect your freedom. 360Check the history of the book, and try to reward the publishers that 361have paid or pay the authors to work on it. 362 363The Free Software Foundation maintains a list of free documentation 364published by other publishers, at 365@url{http://www.fsf.org/doc/other-free-books.html}. 366 367@node Contributors 368@unnumberedsec Contributors to @value{GDBN} 369 370Richard Stallman was the original author of @value{GDBN}, and of many 371other @sc{gnu} programs. Many others have contributed to its 372development. This section attempts to credit major contributors. One 373of the virtues of free software is that everyone is free to contribute 374to it; with regret, we cannot actually acknowledge everyone here. The 375file @file{ChangeLog} in the @value{GDBN} distribution approximates a 376blow-by-blow account. 377 378Changes much prior to version 2.0 are lost in the mists of time. 379 380@quotation 381@emph{Plea:} Additions to this section are particularly welcome. If you 382or your friends (or enemies, to be evenhanded) have been unfairly 383omitted from this list, we would like to add your names! 384@end quotation 385 386So that they may not regard their many labors as thankless, we 387particularly thank those who shepherded @value{GDBN} through major 388releases: 389Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0); 390Jim Blandy (release 4.18); 391Jason Molenda (release 4.17); 392Stan Shebs (release 4.14); 393Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9); 394Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4); 395John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9); 396Jim Kingdon (releases 3.5, 3.4, and 3.3); 397and Randy Smith (releases 3.2, 3.1, and 3.0). 398 399Richard Stallman, assisted at various times by Peter TerMaat, Chris 400Hanson, and Richard Mlynarik, handled releases through 2.8. 401 402Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support 403in @value{GDBN}, with significant additional contributions from Per 404Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++} 405demangler. Early work on C@t{++} was by Peter TerMaat (who also did 406much general update work leading to release 3.0). 407 408@value{GDBN} uses the BFD subroutine library to examine multiple 409object-file formats; BFD was a joint project of David V. 410Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore. 411 412David Johnson wrote the original COFF support; Pace Willison did 413the original support for encapsulated COFF. 414 415Brent Benson of Harris Computer Systems contributed DWARF 2 support. 416 417Adam de Boor and Bradley Davis contributed the ISI Optimum V support. 418Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS 419support. 420Jean-Daniel Fekete contributed Sun 386i support. 421Chris Hanson improved the HP9000 support. 422Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support. 423David Johnson contributed Encore Umax support. 424Jyrki Kuoppala contributed Altos 3068 support. 425Jeff Law contributed HP PA and SOM support. 426Keith Packard contributed NS32K support. 427Doug Rabson contributed Acorn Risc Machine support. 428Bob Rusk contributed Harris Nighthawk CX-UX support. 429Chris Smith contributed Convex support (and Fortran debugging). 430Jonathan Stone contributed Pyramid support. 431Michael Tiemann contributed SPARC support. 432Tim Tucker contributed support for the Gould NP1 and Gould Powernode. 433Pace Willison contributed Intel 386 support. 434Jay Vosburgh contributed Symmetry support. 435Marko Mlinar contributed OpenRISC 1000 support. 436 437Andreas Schwab contributed M68K @sc{gnu}/Linux support. 438 439Rich Schaefer and Peter Schauer helped with support of SunOS shared 440libraries. 441 442Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree 443about several machine instruction sets. 444 445Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop 446remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM 447contributed remote debugging modules for the i960, VxWorks, A29K UDI, 448and RDI targets, respectively. 449 450Brian Fox is the author of the readline libraries providing 451command-line editing and command history. 452 453Andrew Beers of SUNY Buffalo wrote the language-switching code, the 454Modula-2 support, and contributed the Languages chapter of this manual. 455 456Fred Fish wrote most of the support for Unix System Vr4. 457He also enhanced the command-completion support to cover C@t{++} overloaded 458symbols. 459 460Hitachi America (now Renesas America), Ltd. sponsored the support for 461H8/300, H8/500, and Super-H processors. 462 463NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors. 464 465Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D 466processors. 467 468Toshiba sponsored the support for the TX39 Mips processor. 469 470Matsushita sponsored the support for the MN10200 and MN10300 processors. 471 472Fujitsu sponsored the support for SPARClite and FR30 processors. 473 474Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware 475watchpoints. 476 477Michael Snyder added support for tracepoints. 478 479Stu Grossman wrote gdbserver. 480 481Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made 482nearly innumerable bug fixes and cleanups throughout @value{GDBN}. 483 484The following people at the Hewlett-Packard Company contributed 485support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0 486(narrow mode), HP's implementation of kernel threads, HP's aC@t{++} 487compiler, and the Text User Interface (nee Terminal User Interface): 488Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann, 489Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase 490provided HP-specific information in this manual. 491 492DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project. 493Robert Hoehne made significant contributions to the DJGPP port. 494 495Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its 496development since 1991. Cygnus engineers who have worked on @value{GDBN} 497fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin 498Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim 499Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler, 500Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek 501Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In 502addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton, 503JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug 504Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff 505Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner, 506Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin 507Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela 508Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David 509Zuhn have made contributions both large and small. 510 511Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for 512Cygnus Solutions, implemented the original @sc{gdb/mi} interface. 513 514Jim Blandy added support for preprocessor macros, while working for Red 515Hat. 516 517Andrew Cagney designed @value{GDBN}'s architecture vector. Many 518people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick 519Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei 520Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason 521Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped 522with the migration of old architectures to this new framework. 523 524Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s 525unwinder framework, this consisting of a fresh new design featuring 526frame IDs, independent frame sniffers, and the sentinel frame. Mark 527Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the 528libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and 529trad unwinders. The architecture-specific changes, each involving a 530complete rewrite of the architecture's frame code, were carried out by 531Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane 532Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel 533Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei 534Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich 535Weigand. 536 537Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from 538Tensilica, Inc.@: contributed support for Xtensa processors. Others 539who have worked on the Xtensa port of @value{GDBN} in the past include 540Steve Tjiang, John Newlin, and Scott Foehner. 541 542Michael Eager and staff of Xilinx, Inc., contributed support for the 543Xilinx MicroBlaze architecture. 544 545Initial support for the FreeBSD/mips target and native configuration 546was developed by SRI International and the University of Cambridge 547Computer Laboratory under DARPA/AFRL contract FA8750-10-C-0237 548("CTSRD"), as part of the DARPA CRASH research programme. 549 550Initial support for the FreeBSD/riscv target and native configuration 551was developed by SRI International and the University of Cambridge 552Computer Laboratory (Department of Computer Science and Technology) 553under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of the DARPA 554SSITH research programme. 555 556The original port to the OpenRISC 1000 is believed to be due to 557Alessandro Forin and Per Bothner. More recent ports have been the work 558of Jeremy Bennett, Franck Jullien, Stefan Wallentowitz and 559Stafford Horne. 560 561Weimin Pan, David Faust and Jose E. Marchesi contributed support for 562the Linux kernel BPF virtual architecture. This work was sponsored by 563Oracle. 564 565@node Sample Session 566@chapter A Sample @value{GDBN} Session 567 568You can use this manual at your leisure to read all about @value{GDBN}. 569However, a handful of commands are enough to get started using the 570debugger. This chapter illustrates those commands. 571 572@iftex 573In this sample session, we emphasize user input like this: @b{input}, 574to make it easier to pick out from the surrounding output. 575@end iftex 576 577@c FIXME: this example may not be appropriate for some configs, where 578@c FIXME...primary interest is in remote use. 579 580One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro 581processor) exhibits the following bug: sometimes, when we change its 582quote strings from the default, the commands used to capture one macro 583definition within another stop working. In the following short @code{m4} 584session, we define a macro @code{foo} which expands to @code{0000}; we 585then use the @code{m4} built-in @code{defn} to define @code{bar} as the 586same thing. However, when we change the open quote string to 587@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same 588procedure fails to define a new synonym @code{baz}: 589 590@smallexample 591$ @b{cd gnu/m4} 592$ @b{./m4} 593@b{define(foo,0000)} 594 595@b{foo} 5960000 597@b{define(bar,defn(`foo'))} 598 599@b{bar} 6000000 601@b{changequote(<QUOTE>,<UNQUOTE>)} 602 603@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))} 604@b{baz} 605@b{Ctrl-d} 606m4: End of input: 0: fatal error: EOF in string 607@end smallexample 608 609@noindent 610Let us use @value{GDBN} to try to see what is going on. 611 612@smallexample 613$ @b{@value{GDBP} m4} 614@c FIXME: this falsifies the exact text played out, to permit smallbook 615@c FIXME... format to come out better. 616@value{GDBN} is free software and you are welcome to distribute copies 617 of it under certain conditions; type "show copying" to see 618 the conditions. 619There is absolutely no warranty for @value{GDBN}; type "show warranty" 620 for details. 621 622@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc... 623(@value{GDBP}) 624@end smallexample 625 626@noindent 627@value{GDBN} reads only enough symbol data to know where to find the 628rest when needed; as a result, the first prompt comes up very quickly. 629We now tell @value{GDBN} to use a narrower display width than usual, so 630that examples fit in this manual. 631 632@smallexample 633(@value{GDBP}) @b{set width 70} 634@end smallexample 635 636@noindent 637We need to see how the @code{m4} built-in @code{changequote} works. 638Having looked at the source, we know the relevant subroutine is 639@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN} 640@code{break} command. 641 642@smallexample 643(@value{GDBP}) @b{break m4_changequote} 644Breakpoint 1 at 0x62f4: file builtin.c, line 879. 645@end smallexample 646 647@noindent 648Using the @code{run} command, we start @code{m4} running under @value{GDBN} 649control; as long as control does not reach the @code{m4_changequote} 650subroutine, the program runs as usual: 651 652@smallexample 653(@value{GDBP}) @b{run} 654Starting program: /work/Editorial/gdb/gnu/m4/m4 655@b{define(foo,0000)} 656 657@b{foo} 6580000 659@end smallexample 660 661@noindent 662To trigger the breakpoint, we call @code{changequote}. @value{GDBN} 663suspends execution of @code{m4}, displaying information about the 664context where it stops. 665 666@smallexample 667@b{changequote(<QUOTE>,<UNQUOTE>)} 668 669Breakpoint 1, m4_changequote (argc=3, argv=0x33c70) 670 at builtin.c:879 671879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3)) 672@end smallexample 673 674@noindent 675Now we use the command @code{n} (@code{next}) to advance execution to 676the next line of the current function. 677 678@smallexample 679(@value{GDBP}) @b{n} 680882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\ 681 : nil, 682@end smallexample 683 684@noindent 685@code{set_quotes} looks like a promising subroutine. We can go into it 686by using the command @code{s} (@code{step}) instead of @code{next}. 687@code{step} goes to the next line to be executed in @emph{any} 688subroutine, so it steps into @code{set_quotes}. 689 690@smallexample 691(@value{GDBP}) @b{s} 692set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") 693 at input.c:530 694530 if (lquote != def_lquote) 695@end smallexample 696 697@noindent 698The display that shows the subroutine where @code{m4} is now 699suspended (and its arguments) is called a stack frame display. It 700shows a summary of the stack. We can use the @code{backtrace} 701command (which can also be spelled @code{bt}), to see where we are 702in the stack as a whole: the @code{backtrace} command displays a 703stack frame for each active subroutine. 704 705@smallexample 706(@value{GDBP}) @b{bt} 707#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") 708 at input.c:530 709#1 0x6344 in m4_changequote (argc=3, argv=0x33c70) 710 at builtin.c:882 711#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242 712#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30) 713 at macro.c:71 714#4 0x79dc in expand_input () at macro.c:40 715#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195 716@end smallexample 717 718@noindent 719We step through a few more lines to see what happens. The first two 720times, we can use @samp{s}; the next two times we use @code{n} to avoid 721falling into the @code{xstrdup} subroutine. 722 723@smallexample 724(@value{GDBP}) @b{s} 7250x3b5c 532 if (rquote != def_rquote) 726(@value{GDBP}) @b{s} 7270x3b80 535 lquote = (lq == nil || *lq == '\0') ? \ 728def_lquote : xstrdup(lq); 729(@value{GDBP}) @b{n} 730536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ 731 : xstrdup(rq); 732(@value{GDBP}) @b{n} 733538 len_lquote = strlen(rquote); 734@end smallexample 735 736@noindent 737The last line displayed looks a little odd; we can examine the variables 738@code{lquote} and @code{rquote} to see if they are in fact the new left 739and right quotes we specified. We use the command @code{p} 740(@code{print}) to see their values. 741 742@smallexample 743(@value{GDBP}) @b{p lquote} 744$1 = 0x35d40 "<QUOTE>" 745(@value{GDBP}) @b{p rquote} 746$2 = 0x35d50 "<UNQUOTE>" 747@end smallexample 748 749@noindent 750@code{lquote} and @code{rquote} are indeed the new left and right quotes. 751To look at some context, we can display ten lines of source 752surrounding the current line with the @code{l} (@code{list}) command. 753 754@smallexample 755(@value{GDBP}) @b{l} 756533 xfree(rquote); 757534 758535 lquote = (lq == nil || *lq == '\0') ? def_lquote\ 759 : xstrdup (lq); 760536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ 761 : xstrdup (rq); 762537 763538 len_lquote = strlen(rquote); 764539 len_rquote = strlen(lquote); 765540 @} 766541 767542 void 768@end smallexample 769 770@noindent 771Let us step past the two lines that set @code{len_lquote} and 772@code{len_rquote}, and then examine the values of those variables. 773 774@smallexample 775(@value{GDBP}) @b{n} 776539 len_rquote = strlen(lquote); 777(@value{GDBP}) @b{n} 778540 @} 779(@value{GDBP}) @b{p len_lquote} 780$3 = 9 781(@value{GDBP}) @b{p len_rquote} 782$4 = 7 783@end smallexample 784 785@noindent 786That certainly looks wrong, assuming @code{len_lquote} and 787@code{len_rquote} are meant to be the lengths of @code{lquote} and 788@code{rquote} respectively. We can set them to better values using 789the @code{p} command, since it can print the value of 790any expression---and that expression can include subroutine calls and 791assignments. 792 793@smallexample 794(@value{GDBP}) @b{p len_lquote=strlen(lquote)} 795$5 = 7 796(@value{GDBP}) @b{p len_rquote=strlen(rquote)} 797$6 = 9 798@end smallexample 799 800@noindent 801Is that enough to fix the problem of using the new quotes with the 802@code{m4} built-in @code{defn}? We can allow @code{m4} to continue 803executing with the @code{c} (@code{continue}) command, and then try the 804example that caused trouble initially: 805 806@smallexample 807(@value{GDBP}) @b{c} 808Continuing. 809 810@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))} 811 812baz 8130000 814@end smallexample 815 816@noindent 817Success! The new quotes now work just as well as the default ones. The 818problem seems to have been just the two typos defining the wrong 819lengths. We allow @code{m4} exit by giving it an EOF as input: 820 821@smallexample 822@b{Ctrl-d} 823Program exited normally. 824@end smallexample 825 826@noindent 827The message @samp{Program exited normally.} is from @value{GDBN}; it 828indicates @code{m4} has finished executing. We can end our @value{GDBN} 829session with the @value{GDBN} @code{quit} command. 830 831@smallexample 832(@value{GDBP}) @b{quit} 833@end smallexample 834 835@node Invocation 836@chapter Getting In and Out of @value{GDBN} 837 838This chapter discusses how to start @value{GDBN}, and how to get out of it. 839The essentials are: 840@itemize @bullet 841@item 842type @samp{@value{GDBP}} to start @value{GDBN}. 843@item 844type @kbd{quit}, @kbd{exit} or @kbd{Ctrl-d} to exit. 845@end itemize 846 847@menu 848* Invoking GDB:: How to start @value{GDBN} 849* Quitting GDB:: How to quit @value{GDBN} 850* Shell Commands:: How to use shell commands inside @value{GDBN} 851* Logging Output:: How to log @value{GDBN}'s output to a file 852@end menu 853 854@node Invoking GDB 855@section Invoking @value{GDBN} 856 857Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started, 858@value{GDBN} reads commands from the terminal until you tell it to exit. 859 860You can also run @code{@value{GDBP}} with a variety of arguments and options, 861to specify more of your debugging environment at the outset. 862 863The command-line options described here are designed 864to cover a variety of situations; in some environments, some of these 865options may effectively be unavailable. 866 867The most usual way to start @value{GDBN} is with one argument, 868specifying an executable program: 869 870@smallexample 871@value{GDBP} @var{program} 872@end smallexample 873 874@noindent 875You can also start with both an executable program and a core file 876specified: 877 878@smallexample 879@value{GDBP} @var{program} @var{core} 880@end smallexample 881 882You can, instead, specify a process ID as a second argument or use option 883@code{-p}, if you want to debug a running process: 884 885@smallexample 886@value{GDBP} @var{program} 1234 887@value{GDBP} -p 1234 888@end smallexample 889 890@noindent 891would attach @value{GDBN} to process @code{1234}. With option @option{-p} you 892can omit the @var{program} filename. 893 894Taking advantage of the second command-line argument requires a fairly 895complete operating system; when you use @value{GDBN} as a remote 896debugger attached to a bare board, there may not be any notion of 897``process'', and there is often no way to get a core dump. @value{GDBN} 898will warn you if it is unable to attach or to read core dumps. 899 900You can optionally have @code{@value{GDBP}} pass any arguments after the 901executable file to the inferior using @code{--args}. This option stops 902option processing. 903@smallexample 904@value{GDBP} --args gcc -O2 -c foo.c 905@end smallexample 906This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set 907@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}. 908 909You can run @code{@value{GDBP}} without printing the front material, which describes 910@value{GDBN}'s non-warranty, by specifying @code{--silent} 911(or @code{-q}/@code{--quiet}): 912 913@smallexample 914@value{GDBP} --silent 915@end smallexample 916 917@noindent 918You can further control how @value{GDBN} starts up by using command-line 919options. @value{GDBN} itself can remind you of the options available. 920 921@noindent 922Type 923 924@smallexample 925@value{GDBP} -help 926@end smallexample 927 928@noindent 929to display all available options and briefly describe their use 930(@samp{@value{GDBP} -h} is a shorter equivalent). 931 932All options and command line arguments you give are processed 933in sequential order. The order makes a difference when the 934@samp{-x} option is used. 935 936 937@menu 938* File Options:: Choosing files 939* Mode Options:: Choosing modes 940* Startup:: What @value{GDBN} does during startup 941* Initialization Files:: Initialization Files 942@end menu 943 944@node File Options 945@subsection Choosing Files 946 947When @value{GDBN} starts, it reads any arguments other than options as 948specifying an executable file and core file (or process ID). This is 949the same as if the arguments were specified by the @samp{-se} and 950@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the 951first argument that does not have an associated option flag as 952equivalent to the @samp{-se} option followed by that argument; and the 953second argument that does not have an associated option flag, if any, as 954equivalent to the @samp{-c}/@samp{-p} option followed by that argument.) 955If the second argument begins with a decimal digit, @value{GDBN} will 956first attempt to attach to it as a process, and if that fails, attempt 957to open it as a corefile. If you have a corefile whose name begins with 958a digit, you can prevent @value{GDBN} from treating it as a pid by 959prefixing it with @file{./}, e.g.@: @file{./12345}. 960 961If @value{GDBN} has not been configured to included core file support, 962such as for most embedded targets, then it will complain about a second 963argument and ignore it. 964 965For the @samp{-s}, @samp{-e}, and @samp{-se} options, and their long 966form equivalents, the method used to search the file system for the 967symbol and/or executable file is the same as that used by the 968@code{file} command. @xref{Files, ,file}. 969 970Many options have both long and short forms; both are shown in the 971following list. @value{GDBN} also recognizes the long forms if you truncate 972them, so long as enough of the option is present to be unambiguous. 973(If you prefer, you can flag option arguments with @samp{--} rather 974than @samp{-}, though we illustrate the more usual convention.) 975 976@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This 977@c way, both those who look for -foo and --foo in the index, will find 978@c it. 979 980@table @code 981@item -symbols @var{file} 982@itemx -s @var{file} 983@cindex @code{--symbols} 984@cindex @code{-s} 985Read symbol table from file @var{file}. 986 987@item -exec @var{file} 988@itemx -e @var{file} 989@cindex @code{--exec} 990@cindex @code{-e} 991Use file @var{file} as the executable file to execute when appropriate, 992and for examining pure data in conjunction with a core dump. 993 994@item -se @var{file} 995@cindex @code{--se} 996Read symbol table from file @var{file} and use it as the executable 997file. 998 999@item -core @var{file} 1000@itemx -c @var{file} 1001@cindex @code{--core} 1002@cindex @code{-c} 1003Use file @var{file} as a core dump to examine. 1004 1005@item -pid @var{number} 1006@itemx -p @var{number} 1007@cindex @code{--pid} 1008@cindex @code{-p} 1009Connect to process ID @var{number}, as with the @code{attach} command. 1010 1011@item -command @var{file} 1012@itemx -x @var{file} 1013@cindex @code{--command} 1014@cindex @code{-x} 1015Execute commands from file @var{file}. The contents of this file is 1016evaluated exactly as the @code{source} command would. 1017@xref{Command Files,, Command files}. 1018 1019@item -eval-command @var{command} 1020@itemx -ex @var{command} 1021@cindex @code{--eval-command} 1022@cindex @code{-ex} 1023Execute a single @value{GDBN} command. 1024 1025This option may be used multiple times to call multiple commands. It may 1026also be interleaved with @samp{-command} as required. 1027 1028@smallexample 1029@value{GDBP} -ex 'target sim' -ex 'load' \ 1030 -x setbreakpoints -ex 'run' a.out 1031@end smallexample 1032 1033@item -init-command @var{file} 1034@itemx -ix @var{file} 1035@cindex @code{--init-command} 1036@cindex @code{-ix} 1037Execute commands from file @var{file} before loading the inferior (but 1038after loading gdbinit files). 1039@xref{Startup}. 1040 1041@item -init-eval-command @var{command} 1042@itemx -iex @var{command} 1043@cindex @code{--init-eval-command} 1044@cindex @code{-iex} 1045Execute a single @value{GDBN} command before loading the inferior (but 1046after loading gdbinit files). 1047@xref{Startup}. 1048 1049@item -early-init-command @var{file} 1050@itemx -eix @var{file} 1051@cindex @code{--early-init-command} 1052@cindex @code{-eix} 1053Execute commands from @var{file} very early in the initialization 1054process, before any output is produced. @xref{Startup}. 1055 1056@item -early-init-eval-command @var{command} 1057@itemx -eiex @var{command} 1058@cindex @code{--early-init-eval-command} 1059@cindex @code{-eiex} 1060Execute a single @value{GDBN} command very early in the initialization 1061process, before any output is produced. 1062 1063@item -directory @var{directory} 1064@itemx -d @var{directory} 1065@cindex @code{--directory} 1066@cindex @code{-d} 1067Add @var{directory} to the path to search for source and script files. 1068 1069@item -r 1070@itemx -readnow 1071@cindex @code{--readnow} 1072@cindex @code{-r} 1073Read each symbol file's entire symbol table immediately, rather than 1074the default, which is to read it incrementally as it is needed. 1075This makes startup slower, but makes future operations faster. 1076 1077@item --readnever 1078@anchor{--readnever} 1079@cindex @code{--readnever}, command-line option 1080Do not read each symbol file's symbolic debug information. This makes 1081startup faster but at the expense of not being able to perform 1082symbolic debugging. DWARF unwind information is also not read, 1083meaning backtraces may become incomplete or inaccurate. One use of 1084this is when a user simply wants to do the following sequence: attach, 1085dump core, detach. Loading the debugging information in this case is 1086an unnecessary cause of delay. 1087@end table 1088 1089@node Mode Options 1090@subsection Choosing Modes 1091 1092You can run @value{GDBN} in various alternative modes---for example, in 1093batch mode or quiet mode. 1094 1095@table @code 1096@anchor{-nx} 1097@item -nx 1098@itemx -n 1099@cindex @code{--nx} 1100@cindex @code{-n} 1101Do not execute commands found in any initialization files 1102(@pxref{Initialization Files}). 1103 1104@anchor{-nh} 1105@item -nh 1106@cindex @code{--nh} 1107Do not execute commands found in any home directory initialization 1108file (@pxref{Initialization Files,,Home directory initialization 1109file}). The system wide and current directory initialization files 1110are still loaded. 1111 1112@item -quiet 1113@itemx -silent 1114@itemx -q 1115@cindex @code{--quiet} 1116@cindex @code{--silent} 1117@cindex @code{-q} 1118``Quiet''. Do not print the introductory and copyright messages. These 1119messages are also suppressed in batch mode. 1120 1121@kindex set startup-quietly 1122@kindex show startup-quietly 1123This can also be enabled using @code{set startup-quietly on}. The 1124default is @code{off}. Use @code{show startup-quietly} to see the 1125current setting. Place @code{set startup-quietly on} into your early 1126initialization file (@pxref{Initialization Files,,Initialization 1127Files}) to have future @value{GDBN} sessions startup quietly. 1128 1129@item -batch 1130@cindex @code{--batch} 1131Run in batch mode. Exit with status @code{0} after processing all the 1132command files specified with @samp{-x} (and all commands from 1133initialization files, if not inhibited with @samp{-n}). Exit with 1134nonzero status if an error occurs in executing the @value{GDBN} commands 1135in the command files. Batch mode also disables pagination, sets unlimited 1136terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm 1137off} were in effect (@pxref{Messages/Warnings}). 1138 1139Batch mode may be useful for running @value{GDBN} as a filter, for 1140example to download and run a program on another computer; in order to 1141make this more useful, the message 1142 1143@smallexample 1144Program exited normally. 1145@end smallexample 1146 1147@noindent 1148(which is ordinarily issued whenever a program running under 1149@value{GDBN} control terminates) is not issued when running in batch 1150mode. 1151 1152@item -batch-silent 1153@cindex @code{--batch-silent} 1154Run in batch mode exactly like @samp{-batch}, but totally silently. All 1155@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is 1156unaffected). This is much quieter than @samp{-silent} and would be useless 1157for an interactive session. 1158 1159This is particularly useful when using targets that give @samp{Loading section} 1160messages, for example. 1161 1162Note that targets that give their output via @value{GDBN}, as opposed to 1163writing directly to @code{stdout}, will also be made silent. 1164 1165@item -return-child-result 1166@cindex @code{--return-child-result} 1167The return code from @value{GDBN} will be the return code from the child 1168process (the process being debugged), with the following exceptions: 1169 1170@itemize @bullet 1171@item 1172@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an 1173internal error. In this case the exit code is the same as it would have been 1174without @samp{-return-child-result}. 1175@item 1176The user quits with an explicit value. E.g., @samp{quit 1}. 1177@item 1178The child process never runs, or is not allowed to terminate, in which case 1179the exit code will be -1. 1180@end itemize 1181 1182This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent}, 1183when @value{GDBN} is being used as a remote program loader or simulator 1184interface. 1185 1186@item -nowindows 1187@itemx -nw 1188@cindex @code{--nowindows} 1189@cindex @code{-nw} 1190``No windows''. If @value{GDBN} comes with a graphical user interface 1191(GUI) built in, then this option tells @value{GDBN} to only use the command-line 1192interface. If no GUI is available, this option has no effect. 1193 1194@item -windows 1195@itemx -w 1196@cindex @code{--windows} 1197@cindex @code{-w} 1198If @value{GDBN} includes a GUI, then this option requires it to be 1199used if possible. 1200 1201@item -cd @var{directory} 1202@cindex @code{--cd} 1203Run @value{GDBN} using @var{directory} as its working directory, 1204instead of the current directory. 1205 1206@item -data-directory @var{directory} 1207@itemx -D @var{directory} 1208@cindex @code{--data-directory} 1209@cindex @code{-D} 1210Run @value{GDBN} using @var{directory} as its data directory. 1211The data directory is where @value{GDBN} searches for its 1212auxiliary files. @xref{Data Files}. 1213 1214@item -fullname 1215@itemx -f 1216@cindex @code{--fullname} 1217@cindex @code{-f} 1218@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a 1219subprocess. It tells @value{GDBN} to output the full file name and line 1220number in a standard, recognizable fashion each time a stack frame is 1221displayed (which includes each time your program stops). This 1222recognizable format looks like two @samp{\032} characters, followed by 1223the file name, line number and character position separated by colons, 1224and a newline. The Emacs-to-@value{GDBN} interface program uses the two 1225@samp{\032} characters as a signal to display the source code for the 1226frame. 1227 1228@item -annotate @var{level} 1229@cindex @code{--annotate} 1230This option sets the @dfn{annotation level} inside @value{GDBN}. Its 1231effect is identical to using @samp{set annotate @var{level}} 1232(@pxref{Annotations}). The annotation @var{level} controls how much 1233information @value{GDBN} prints together with its prompt, values of 1234expressions, source lines, and other types of output. Level 0 is the 1235normal, level 1 is for use when @value{GDBN} is run as a subprocess of 1236@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs 1237that control @value{GDBN}, and level 2 has been deprecated. 1238 1239The annotation mechanism has largely been superseded by @sc{gdb/mi} 1240(@pxref{GDB/MI}). 1241 1242@item --args 1243@cindex @code{--args} 1244Change interpretation of command line so that arguments following the 1245executable file are passed as command line arguments to the inferior. 1246This option stops option processing. 1247 1248@item -baud @var{bps} 1249@itemx -b @var{bps} 1250@cindex @code{--baud} 1251@cindex @code{-b} 1252Set the line speed (baud rate or bits per second) of any serial 1253interface used by @value{GDBN} for remote debugging. 1254 1255@item -l @var{timeout} 1256@cindex @code{-l} 1257Set the timeout (in seconds) of any communication used by @value{GDBN} 1258for remote debugging. 1259 1260@item -tty @var{device} 1261@itemx -t @var{device} 1262@cindex @code{--tty} 1263@cindex @code{-t} 1264Run using @var{device} for your program's standard input and output. 1265@c FIXME: kingdon thinks there is more to -tty. Investigate. 1266 1267@c resolve the situation of these eventually 1268@item -tui 1269@cindex @code{--tui} 1270Activate the @dfn{Text User Interface} when starting. The Text User 1271Interface manages several text windows on the terminal, showing 1272source, assembly, registers and @value{GDBN} command outputs 1273(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this 1274option if you run @value{GDBN} from Emacs (@pxref{Emacs, , 1275Using @value{GDBN} under @sc{gnu} Emacs}). 1276 1277@item -interpreter @var{interp} 1278@cindex @code{--interpreter} 1279Use the interpreter @var{interp} for interface with the controlling 1280program or device. This option is meant to be set by programs which 1281communicate with @value{GDBN} using it as a back end. 1282@xref{Interpreters, , Command Interpreters}. 1283 1284@samp{--interpreter=mi} (or @samp{--interpreter=mi3}) causes 1285@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} version 3 (@pxref{GDB/MI, , 1286The @sc{gdb/mi} Interface}) included since @value{GDBN} version 9.1. @sc{gdb/mi} 1287version 2 (@code{mi2}), included in @value{GDBN} 6.0 and version 1 (@code{mi1}), 1288included in @value{GDBN} 5.3, are also available. Earlier @sc{gdb/mi} 1289interfaces are no longer supported. 1290 1291@item -write 1292@cindex @code{--write} 1293Open the executable and core files for both reading and writing. This 1294is equivalent to the @samp{set write on} command inside @value{GDBN} 1295(@pxref{Patching}). 1296 1297@item -statistics 1298@cindex @code{--statistics} 1299This option causes @value{GDBN} to print statistics about time and 1300memory usage after it completes each command and returns to the prompt. 1301 1302@item -version 1303@cindex @code{--version} 1304This option causes @value{GDBN} to print its version number and 1305no-warranty blurb, and exit. 1306 1307@item -configuration 1308@cindex @code{--configuration} 1309This option causes @value{GDBN} to print details about its build-time 1310configuration parameters, and then exit. These details can be 1311important when reporting @value{GDBN} bugs (@pxref{GDB Bugs}). 1312 1313@end table 1314 1315@node Startup 1316@subsection What @value{GDBN} Does During Startup 1317@cindex @value{GDBN} startup 1318 1319Here's the description of what @value{GDBN} does during session startup: 1320 1321@enumerate 1322 1323@item 1324Performs minimal setup required to initialize basic internal state. 1325 1326@item 1327@cindex early initialization file 1328Reads commands from the early initialization file (if any) in your 1329home directory. Only a restricted set of commands can be placed into 1330an early initialization file, see @ref{Initialization Files}, for 1331details. 1332 1333@item 1334Executes commands and command files specified by the @samp{-eiex} and 1335@samp{-eix} command line options in their specified order. Only a 1336restricted set of commands can be used with @samp{-eiex} and 1337@samp{eix}, see @ref{Initialization Files}, for details. 1338 1339@item 1340Sets up the command interpreter as specified by the command line 1341(@pxref{Mode Options, interpreter}). 1342 1343@item 1344@cindex init file 1345Reads the system wide initialization file and the files from the 1346system wide initialization directory, @pxref{System Wide Init Files}. 1347 1348@item 1349Reads the initialization file (if any) in your home directory and 1350executes all the commands in that file, @pxref{Home Directory Init 1351File}. 1352 1353@anchor{Option -init-eval-command} 1354@item 1355Executes commands and command files specified by the @samp{-iex} and 1356@samp{-ix} options in their specified order. Usually you should use the 1357@samp{-ex} and @samp{-x} options instead, but this way you can apply 1358settings before @value{GDBN} init files get executed and before inferior 1359gets loaded. 1360 1361@item 1362Processes command line options and operands. 1363 1364@item 1365Reads and executes the commands from the initialization file (if any) 1366in the current working directory as long as @samp{set auto-load 1367local-gdbinit} is set to @samp{on} (@pxref{Init File in the Current 1368Directory}). This is only done if the current directory is different 1369from your home directory. Thus, you can have more than one init file, 1370one generic in your home directory, and another, specific to the 1371program you are debugging, in the directory where you invoke 1372@value{GDBN}. @xref{Init File in the Current Directory during 1373Startup}. 1374 1375@item 1376If the command line specified a program to debug, or a process to 1377attach to, or a core file, @value{GDBN} loads any auto-loaded 1378scripts provided for the program or for its loaded shared libraries. 1379@xref{Auto-loading}. 1380 1381If you wish to disable the auto-loading during startup, 1382you must do something like the following: 1383 1384@smallexample 1385$ gdb -iex "set auto-load python-scripts off" myprogram 1386@end smallexample 1387 1388Option @samp{-ex} does not work because the auto-loading is then turned 1389off too late. 1390 1391@item 1392Executes commands and command files specified by the @samp{-ex} and 1393@samp{-x} options in their specified order. @xref{Command Files}, for 1394more details about @value{GDBN} command files. 1395 1396@item 1397Reads the command history recorded in the @dfn{history file}. 1398@xref{Command History}, for more details about the command history and the 1399files where @value{GDBN} records it. 1400@end enumerate 1401 1402@node Initialization Files 1403@subsection Initialization Files 1404@cindex init file name 1405 1406During startup (@pxref{Startup}) @value{GDBN} will execute commands 1407from several initialization files. These initialization files use the 1408same syntax as @dfn{command files} (@pxref{Command Files}) and are 1409processed by @value{GDBN} in the same way. 1410 1411To display the list of initialization files loaded by @value{GDBN} at 1412startup, in the order they will be loaded, you can use @kbd{gdb 1413--help}. 1414 1415@cindex early initialization 1416The @dfn{early initialization} file is loaded very early in 1417@value{GDBN}'s initialization process, before the interpreter 1418(@pxref{Interpreters}) has been initialized, and before the default 1419target (@pxref{Targets}) is initialized. Only @code{set} or 1420@code{source} commands should be placed into an early initialization 1421file, and the only @code{set} commands that can be used are those that 1422control how @value{GDBN} starts up. 1423 1424Commands that can be placed into an early initialization file will be 1425documented as such throughout this manual. Any command that is not 1426documented as being suitable for an early initialization file should 1427instead be placed into a general initialization file. Command files 1428passed to @code{--early-init-command} or @code{-eix} are also early 1429initialization files, with the same command restrictions. Only 1430commands that can appear in an early initialization file should be 1431passed to @code{--early-init-eval-command} or @code{-eiex}. 1432 1433@cindex general initialization 1434In contrast, the @dfn{general initialization} files are processed 1435later, after @value{GDBN} has finished its own internal initialization 1436process, any valid command can be used in these files. 1437 1438@cindex initialization file 1439Throughout the rest of this document the term @dfn{initialization 1440file} refers to one of the general initialization files, not the early 1441initialization file. Any discussion of the early initialization file 1442will specifically mention that it is the early initialization file 1443being discussed. 1444 1445As the system wide and home directory initialization files are 1446processed before most command line options, changes to settings 1447(e.g.@: @samp{set complaints}) can affect subsequent processing of 1448command line options and operands. 1449 1450The following sections describe where @value{GDBN} looks for the early 1451initialization and initialization files, and the order that the files 1452are searched for. 1453 1454@subsubsection Home directory early initialization files 1455 1456@value{GDBN} initially looks for an early initialization file in the 1457users home directory@footnote{On DOS/Windows systems, the home 1458directory is the one pointed to by the @env{HOME} environment 1459variable.}. There are a number of locations that @value{GDBN} will 1460search in the home directory, these locations are searched in order 1461and @value{GDBN} will load the first file that it finds, and 1462subsequent locations will not be checked. 1463 1464On non-macOS hosts the locations searched are: 1465@itemize 1466@item 1467The file @file{gdb/gdbearlyinit} within the directory pointed to by the 1468environment variable @env{XDG_CONFIG_HOME}, if it is defined. 1469@item 1470The file @file{.config/gdb/gdbearlyinit} within the directory pointed to 1471by the environment variable @env{HOME}, if it is defined. 1472@item 1473The file @file{.gdbearlyinit} within the directory pointed to by the 1474environment variable @env{HOME}, if it is defined. 1475@end itemize 1476 1477By contrast, on macOS hosts the locations searched are: 1478@itemize 1479@item 1480The file @file{Library/Preferences/gdb/gdbearlyinit} within the 1481directory pointed to by the environment variable @env{HOME}, if it is 1482defined. 1483@item 1484The file @file{.gdbearlyinit} within the directory pointed to by the 1485environment variable @env{HOME}, if it is defined. 1486@end itemize 1487 1488It is possible to prevent the home directory early initialization file 1489from being loaded using the @samp{-nx} or @samp{-nh} command line 1490options, @pxref{Mode Options,,Choosing Modes}. 1491 1492@anchor{System Wide Init Files} 1493@subsubsection System wide initialization files 1494 1495There are two locations that are searched for system wide 1496initialization files. Both of these locations are always checked: 1497 1498@table @code 1499 1500@item @file{system.gdbinit} 1501This is a single system-wide initialization file. Its location is 1502specified with the @code{--with-system-gdbinit} configure option 1503(@pxref{System-wide configuration}). It is loaded first when 1504@value{GDBN} starts, before command line options have been processed. 1505 1506@item @file{system.gdbinit.d} 1507This is the system-wide initialization directory. Its location is 1508specified with the @code{--with-system-gdbinit-dir} configure option 1509(@pxref{System-wide configuration}). Files in this directory are 1510loaded in alphabetical order immediately after @file{system.gdbinit} 1511(if enabled) when @value{GDBN} starts, before command line options 1512have been processed. Files need to have a recognized scripting 1513language extension (@file{.py}/@file{.scm}) or be named with a 1514@file{.gdb} extension to be interpreted as regular @value{GDBN} 1515commands. @value{GDBN} will not recurse into any subdirectories of 1516this directory. 1517 1518@end table 1519 1520It is possible to prevent the system wide initialization files from 1521being loaded using the @samp{-nx} command line option, @pxref{Mode 1522Options,,Choosing Modes}. 1523 1524@anchor{Home Directory Init File} 1525@subsubsection Home directory initialization file 1526@cindex @file{gdbinit} 1527@cindex @file{.gdbinit} 1528@cindex @file{gdb.ini} 1529 1530After loading the system wide initialization files @value{GDBN} will 1531look for an initialization file in the users home 1532directory@footnote{On DOS/Windows systems, the home directory is the 1533one pointed to by the @env{HOME} environment variable.}. There are a 1534number of locations that @value{GDBN} will search in the home 1535directory, these locations are searched in order and @value{GDBN} will 1536load the first file that it finds, and subsequent locations will not 1537be checked. 1538 1539On non-Apple hosts the locations searched are: 1540@table @file 1541@item $XDG_CONFIG_HOME/gdb/gdbinit 1542@item $HOME/.config/gdb/gdbinit 1543@item $HOME/.gdbinit 1544@end table 1545 1546While on Apple hosts the locations searched are: 1547@table @file 1548@item $HOME/Library/Preferences/gdb/gdbinit 1549@item $HOME/.gdbinit 1550@end table 1551 1552It is possible to prevent the home directory initialization file from 1553being loaded using the @samp{-nx} or @samp{-nh} command line options, 1554@pxref{Mode Options,,Choosing Modes}. 1555 1556The DJGPP port of @value{GDBN} uses the name @file{gdb.ini} instead of 1557@file{.gdbinit} or @file{gdbinit}, due to the limitations of file 1558names imposed by DOS filesystems. The Windows port of @value{GDBN} 1559uses the standard name, but if it finds a @file{gdb.ini} file in your 1560home directory, it warns you about that and suggests to rename the 1561file to the standard name. 1562 1563@anchor{Init File in the Current Directory during Startup} 1564@subsubsection Local directory initialization file 1565 1566@value{GDBN} will check the current directory for a file called 1567@file{.gdbinit}. It is loaded last, after command line options 1568other than @samp{-x} and @samp{-ex} have been processed. The command 1569line options @samp{-x} and @samp{-ex} are processed last, after 1570@file{.gdbinit} has been loaded, @pxref{File Options,,Choosing 1571Files}. 1572 1573If the file in the current directory was already loaded as the home 1574directory initialization file then it will not be loaded a second 1575time. 1576 1577It is possible to prevent the local directory initialization file from 1578being loaded using the @samp{-nx} command line option, @pxref{Mode 1579Options,,Choosing Modes}. 1580 1581@node Quitting GDB 1582@section Quitting @value{GDBN} 1583@cindex exiting @value{GDBN} 1584@cindex leaving @value{GDBN} 1585 1586@table @code 1587@kindex quit @r{[}@var{expression}@r{]} 1588@kindex exit @r{[}@var{expression}@r{]} 1589@kindex q @r{(@code{quit})} 1590@item quit @r{[}@var{expression}@r{]} 1591@itemx exit @r{[}@var{expression}@r{]} 1592@itemx q 1593To exit @value{GDBN}, use the @code{quit} command (abbreviated 1594@code{q}), the @code{exit} command, or type an end-of-file 1595character (usually @kbd{Ctrl-d}). If you do not supply @var{expression}, 1596@value{GDBN} will terminate normally; otherwise it will terminate using 1597the result of @var{expression} as the error code. 1598@end table 1599 1600@cindex interrupt 1601An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather 1602terminates the action of any @value{GDBN} command that is in progress and 1603returns to @value{GDBN} command level. It is safe to type the interrupt 1604character at any time because @value{GDBN} does not allow it to take effect 1605until a time when it is safe. 1606 1607If you have been using @value{GDBN} to control an attached process or 1608device, you can release it with the @code{detach} command 1609(@pxref{Attach, ,Debugging an Already-running Process}). 1610 1611@node Shell Commands 1612@section Shell Commands 1613 1614If you need to execute occasional shell commands during your 1615debugging session, there is no need to leave or suspend @value{GDBN}; you can 1616just use the @code{shell} command. 1617 1618@table @code 1619@kindex shell 1620@kindex ! 1621@cindex shell escape 1622@item shell @var{command-string} 1623@itemx !@var{command-string} 1624Invoke a standard shell to execute @var{command-string}. 1625Note that no space is needed between @code{!} and @var{command-string}. 1626On GNU and Unix systems, the environment variable @env{SHELL}, if it 1627exists, determines which shell to run. Otherwise @value{GDBN} uses 1628the default shell (@file{/bin/sh} on GNU and Unix systems, 1629@file{cmd.exe} on MS-Windows, @file{COMMAND.COM} on MS-DOS, etc.). 1630@end table 1631 1632The utility @code{make} is often needed in development environments. 1633You do not have to use the @code{shell} command for this purpose in 1634@value{GDBN}: 1635 1636@table @code 1637@kindex make 1638@cindex calling make 1639@item make @var{make-args} 1640Execute the @code{make} program with the specified 1641arguments. This is equivalent to @samp{shell make @var{make-args}}. 1642@end table 1643 1644@table @code 1645@kindex pipe 1646@kindex | 1647@cindex send the output of a gdb command to a shell command 1648@anchor{pipe} 1649@item pipe [@var{command}] | @var{shell_command} 1650@itemx | [@var{command}] | @var{shell_command} 1651@itemx pipe -d @var{delim} @var{command} @var{delim} @var{shell_command} 1652@itemx | -d @var{delim} @var{command} @var{delim} @var{shell_command} 1653Executes @var{command} and sends its output to @var{shell_command}. 1654Note that no space is needed around @code{|}. 1655If no @var{command} is provided, the last command executed is repeated. 1656 1657In case the @var{command} contains a @code{|}, the option @code{-d @var{delim}} 1658can be used to specify an alternate delimiter string @var{delim} that separates 1659the @var{command} from the @var{shell_command}. 1660 1661Example: 1662@smallexample 1663@group 1664(gdb) p var 1665$1 = @{ 1666 black = 144, 1667 red = 233, 1668 green = 377, 1669 blue = 610, 1670 white = 987 1671@} 1672@end group 1673@group 1674(gdb) pipe p var|wc 1675 7 19 80 1676(gdb) |p var|wc -l 16777 1678@end group 1679@group 1680(gdb) p /x var 1681$4 = @{ 1682 black = 0x90, 1683 red = 0xe9, 1684 green = 0x179, 1685 blue = 0x262, 1686 white = 0x3db 1687@} 1688(gdb) ||grep red 1689 red => 0xe9, 1690@end group 1691@group 1692(gdb) | -d ! echo this contains a | char\n ! sed -e 's/|/PIPE/' 1693this contains a PIPE char 1694(gdb) | -d xxx echo this contains a | char!\n xxx sed -e 's/|/PIPE/' 1695this contains a PIPE char! 1696(gdb) 1697@end group 1698@end smallexample 1699@end table 1700 1701The convenience variables @code{$_shell_exitcode} and @code{$_shell_exitsignal} 1702can be used to examine the exit status of the last shell command launched 1703by @code{shell}, @code{make}, @code{pipe} and @code{|}. 1704@xref{Convenience Vars,, Convenience Variables}. 1705 1706@node Logging Output 1707@section Logging Output 1708@cindex logging @value{GDBN} output 1709@cindex save @value{GDBN} output to a file 1710 1711You may want to save the output of @value{GDBN} commands to a file. 1712There are several commands to control @value{GDBN}'s logging. 1713 1714@table @code 1715@kindex set logging enabled 1716@item set logging enabled [on|off] 1717Enable or disable logging. 1718@cindex logging file name 1719@item set logging file @var{file} 1720Change the name of the current logfile. The default logfile is @file{gdb.txt}. 1721@item set logging overwrite [on|off] 1722By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if 1723you want @code{set logging enabled on} to overwrite the logfile instead. 1724@item set logging redirect [on|off] 1725By default, @value{GDBN} output will go to both the terminal and the logfile. 1726Set @code{redirect} if you want output to go only to the log file. 1727@item set logging debugredirect [on|off] 1728By default, @value{GDBN} debug output will go to both the terminal and the logfile. 1729Set @code{debugredirect} if you want debug output to go only to the log file. 1730@kindex show logging 1731@item show logging 1732Show the current values of the logging settings. 1733@end table 1734 1735You can also redirect the output of a @value{GDBN} command to a 1736shell command. @xref{pipe}. 1737@node Commands 1738@chapter @value{GDBN} Commands 1739 1740You can abbreviate a @value{GDBN} command to the first few letters of the command 1741name, if that abbreviation is unambiguous; and you can repeat certain 1742@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB} 1743key to get @value{GDBN} to fill out the rest of a word in a command (or to 1744show you the alternatives available, if there is more than one possibility). 1745 1746@menu 1747* Command Syntax:: How to give commands to @value{GDBN} 1748* Command Settings:: How to change default behavior of commands 1749* Completion:: Command completion 1750* Command Options:: Command options 1751* Help:: How to ask @value{GDBN} for help 1752@end menu 1753 1754@node Command Syntax 1755@section Command Syntax 1756 1757A @value{GDBN} command is a single line of input. There is no limit on 1758how long it can be. It starts with a command name, which is followed by 1759arguments whose meaning depends on the command name. For example, the 1760command @code{step} accepts an argument which is the number of times to 1761step, as in @samp{step 5}. You can also use the @code{step} command 1762with no arguments. Some commands do not allow any arguments. 1763 1764@cindex abbreviation 1765@value{GDBN} command names may always be truncated if that abbreviation is 1766unambiguous. Other possible command abbreviations are listed in the 1767documentation for individual commands. In some cases, even ambiguous 1768abbreviations are allowed; for example, @code{s} is specially defined as 1769equivalent to @code{step} even though there are other commands whose 1770names start with @code{s}. You can test abbreviations by using them as 1771arguments to the @code{help} command. 1772 1773@cindex repeating commands 1774@kindex RET @r{(repeat last command)} 1775A blank line as input to @value{GDBN} (typing just @key{RET}) means to 1776repeat the previous command. Certain commands (for example, @code{run}) 1777will not repeat this way; these are commands whose unintentional 1778repetition might cause trouble and which you are unlikely to want to 1779repeat. User-defined commands can disable this feature; see 1780@ref{Define, dont-repeat}. 1781 1782The @code{list} and @code{x} commands, when you repeat them with 1783@key{RET}, construct new arguments rather than repeating 1784exactly as typed. This permits easy scanning of source or memory. 1785 1786@value{GDBN} can also use @key{RET} in another way: to partition lengthy 1787output, in a way similar to the common utility @code{more} 1788(@pxref{Screen Size,,Screen Size}). Since it is easy to press one 1789@key{RET} too many in this situation, @value{GDBN} disables command 1790repetition after any command that generates this sort of display. 1791 1792@kindex # @r{(a comment)} 1793@cindex comment 1794Any text from a @kbd{#} to the end of the line is a comment; it does 1795nothing. This is useful mainly in command files (@pxref{Command 1796Files,,Command Files}). 1797 1798@cindex repeating command sequences 1799@kindex Ctrl-o @r{(operate-and-get-next)} 1800The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of 1801commands. This command accepts the current line, like @key{RET}, and 1802then fetches the next line relative to the current line from the history 1803for editing. 1804 1805 1806@node Command Settings 1807@section Command Settings 1808@cindex default behavior of commands, changing 1809@cindex default settings, changing 1810 1811Many commands change their behavior according to command-specific 1812variables or settings. These settings can be changed with the 1813@code{set} subcommands. For example, the @code{print} command 1814(@pxref{Data, ,Examining Data}) prints arrays differently depending on 1815settings changeable with the commands @code{set print elements 1816NUMBER-OF-ELEMENTS} and @code{set print array-indexes}, among others. 1817 1818You can change these settings to your preference in the gdbinit files 1819loaded at @value{GDBN} startup. @xref{Startup}. 1820 1821The settings can also be changed interactively during the debugging 1822session. For example, to change the limit of array elements to print, 1823you can do the following: 1824@smallexample 1825(@value{GDBN}) set print elements 10 1826(@value{GDBN}) print some_array 1827$1 = @{0, 10, 20, 30, 40, 50, 60, 70, 80, 90...@} 1828@end smallexample 1829 1830The above @code{set print elements 10} command changes the number of 1831elements to print from the default of 200 to 10. If you only intend 1832this limit of 10 to be used for printing @code{some_array}, then you 1833must restore the limit back to 200, with @code{set print elements 1834200}. 1835 1836Some commands allow overriding settings with command options. For 1837example, the @code{print} command supports a number of options that 1838allow overriding relevant global print settings as set by @code{set 1839print} subcommands. @xref{print options}. The example above could be 1840rewritten as: 1841@smallexample 1842(@value{GDBN}) print -elements 10 -- some_array 1843$1 = @{0, 10, 20, 30, 40, 50, 60, 70, 80, 90...@} 1844@end smallexample 1845 1846Alternatively, you can use the @code{with} command to change a setting 1847temporarily, for the duration of a command invocation. 1848 1849@table @code 1850@kindex with command 1851@kindex w @r{(@code{with})} 1852@cindex settings 1853@cindex temporarily change settings 1854@item with @var{setting} [@var{value}] [-- @var{command}] 1855@itemx w @var{setting} [@var{value}] [-- @var{command}] 1856Temporarily set @var{setting} to @var{value} for the duration of 1857@var{command}. 1858 1859@var{setting} is any setting you can change with the @code{set} 1860subcommands. @var{value} is the value to assign to @code{setting} 1861while running @code{command}. 1862 1863If no @var{command} is provided, the last command executed is 1864repeated. 1865 1866If a @var{command} is provided, it must be preceded by a double dash 1867(@code{--}) separator. This is required because some settings accept 1868free-form arguments, such as expressions or filenames. 1869 1870For example, the command 1871@smallexample 1872(@value{GDBN}) with print array on -- print some_array 1873@end smallexample 1874@noindent 1875is equivalent to the following 3 commands: 1876@smallexample 1877(@value{GDBN}) set print array on 1878(@value{GDBN}) print some_array 1879(@value{GDBN}) set print array off 1880@end smallexample 1881 1882The @code{with} command is particularly useful when you want to 1883override a setting while running user-defined commands, or commands 1884defined in Python or Guile. @xref{Extending GDB,, Extending GDB}. 1885 1886@smallexample 1887(@value{GDBN}) with print pretty on -- my_complex_command 1888@end smallexample 1889 1890To change several settings for the same command, you can nest 1891@code{with} commands. For example, @code{with language ada -- with 1892print elements 10} temporarily changes the language to Ada and sets a 1893limit of 10 elements to print for arrays and strings. 1894 1895@end table 1896 1897@node Completion 1898@section Command Completion 1899 1900@cindex completion 1901@cindex word completion 1902@value{GDBN} can fill in the rest of a word in a command for you, if there is 1903only one possibility; it can also show you what the valid possibilities 1904are for the next word in a command, at any time. This works for @value{GDBN} 1905commands, @value{GDBN} subcommands, command options, and the names of symbols 1906in your program. 1907 1908Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest 1909of a word. If there is only one possibility, @value{GDBN} fills in the 1910word, and waits for you to finish the command (or press @key{RET} to 1911enter it). For example, if you type 1912 1913@c FIXME "@key" does not distinguish its argument sufficiently to permit 1914@c complete accuracy in these examples; space introduced for clarity. 1915@c If texinfo enhancements make it unnecessary, it would be nice to 1916@c replace " @key" by "@key" in the following... 1917@smallexample 1918(@value{GDBP}) info bre@key{TAB} 1919@end smallexample 1920 1921@noindent 1922@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is 1923the only @code{info} subcommand beginning with @samp{bre}: 1924 1925@smallexample 1926(@value{GDBP}) info breakpoints 1927@end smallexample 1928 1929@noindent 1930You can either press @key{RET} at this point, to run the @code{info 1931breakpoints} command, or backspace and enter something else, if 1932@samp{breakpoints} does not look like the command you expected. (If you 1933were sure you wanted @code{info breakpoints} in the first place, you 1934might as well just type @key{RET} immediately after @samp{info bre}, 1935to exploit command abbreviations rather than command completion). 1936 1937If there is more than one possibility for the next word when you press 1938@key{TAB}, @value{GDBN} sounds a bell. You can either supply more 1939characters and try again, or just press @key{TAB} a second time; 1940@value{GDBN} displays all the possible completions for that word. For 1941example, you might want to set a breakpoint on a subroutine whose name 1942begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN} 1943just sounds the bell. Typing @key{TAB} again displays all the 1944function names in your program that begin with those characters, for 1945example: 1946 1947@smallexample 1948(@value{GDBP}) b make_@key{TAB} 1949@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see: 1950make_a_section_from_file make_environ 1951make_abs_section make_function_type 1952make_blockvector make_pointer_type 1953make_cleanup make_reference_type 1954make_command make_symbol_completion_list 1955(@value{GDBP}) b make_ 1956@end smallexample 1957 1958@noindent 1959After displaying the available possibilities, @value{GDBN} copies your 1960partial input (@samp{b make_} in the example) so you can finish the 1961command. 1962 1963If the command you are trying to complete expects either a keyword or a 1964number to follow, then @samp{NUMBER} will be shown among the available 1965completions, for example: 1966 1967@smallexample 1968(@value{GDBP}) print -elements @key{TAB}@key{TAB} 1969NUMBER unlimited 1970(@value{GDBP}) print -elements@tie{} 1971@end smallexample 1972 1973@noindent 1974Here, the option expects a number (e.g., @code{100}), not literal 1975@code{NUMBER}. Such metasyntactical arguments are always presented in 1976uppercase. 1977 1978If you just want to see the list of alternatives in the first place, you 1979can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?} 1980means @kbd{@key{META} ?}. You can type this either by holding down a 1981key designated as the @key{META} shift on your keyboard (if there is 1982one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}. 1983 1984If the number of possible completions is large, @value{GDBN} will 1985print as much of the list as it has collected, as well as a message 1986indicating that the list may be truncated. 1987 1988@smallexample 1989(@value{GDBP}) b m@key{TAB}@key{TAB} 1990main 1991<... the rest of the possible completions ...> 1992*** List may be truncated, max-completions reached. *** 1993(@value{GDBP}) b m 1994@end smallexample 1995 1996@noindent 1997This behavior can be controlled with the following commands: 1998 1999@table @code 2000@kindex set max-completions 2001@item set max-completions @var{limit} 2002@itemx set max-completions unlimited 2003Set the maximum number of completion candidates. @value{GDBN} will 2004stop looking for more completions once it collects this many candidates. 2005This is useful when completing on things like function names as collecting 2006all the possible candidates can be time consuming. 2007The default value is 200. A value of zero disables tab-completion. 2008Note that setting either no limit or a very large limit can make 2009completion slow. 2010@kindex show max-completions 2011@item show max-completions 2012Show the maximum number of candidates that @value{GDBN} will collect and show 2013during completion. 2014@end table 2015 2016@cindex quotes in commands 2017@cindex completion of quoted strings 2018Sometimes the string you need, while logically a ``word'', may contain 2019parentheses or other characters that @value{GDBN} normally excludes from 2020its notion of a word. To permit word completion to work in this 2021situation, you may enclose words in @code{'} (single quote marks) in 2022@value{GDBN} commands. 2023 2024A likely situation where you might need this is in typing an 2025expression that involves a C@t{++} symbol name with template 2026parameters. This is because when completing expressions, GDB treats 2027the @samp{<} character as word delimiter, assuming that it's the 2028less-than comparison operator (@pxref{C Operators, , C and C@t{++} 2029Operators}). 2030 2031For example, when you want to call a C@t{++} template function 2032interactively using the @code{print} or @code{call} commands, you may 2033need to distinguish whether you mean the version of @code{name} that 2034was specialized for @code{int}, @code{name<int>()}, or the version 2035that was specialized for @code{float}, @code{name<float>()}. To use 2036the word-completion facilities in this situation, type a single quote 2037@code{'} at the beginning of the function name. This alerts 2038@value{GDBN} that it may need to consider more information than usual 2039when you press @key{TAB} or @kbd{M-?} to request word completion: 2040 2041@smallexample 2042(@value{GDBP}) p 'func<@kbd{M-?} 2043func<int>() func<float>() 2044(@value{GDBP}) p 'func< 2045@end smallexample 2046 2047When setting breakpoints however (@pxref{Location Specifications}), you don't 2048usually need to type a quote before the function name, because 2049@value{GDBN} understands that you want to set a breakpoint on a 2050function: 2051 2052@smallexample 2053(@value{GDBP}) b func<@kbd{M-?} 2054func<int>() func<float>() 2055(@value{GDBP}) b func< 2056@end smallexample 2057 2058This is true even in the case of typing the name of C@t{++} overloaded 2059functions (multiple definitions of the same function, distinguished by 2060argument type). For example, when you want to set a breakpoint you 2061don't need to distinguish whether you mean the version of @code{name} 2062that takes an @code{int} parameter, @code{name(int)}, or the version 2063that takes a @code{float} parameter, @code{name(float)}. 2064 2065@smallexample 2066(@value{GDBP}) b bubble(@kbd{M-?} 2067bubble(int) bubble(double) 2068(@value{GDBP}) b bubble(dou@kbd{M-?} 2069bubble(double) 2070@end smallexample 2071 2072See @ref{quoting names} for a description of other scenarios that 2073require quoting. 2074 2075For more information about overloaded functions, see @ref{C Plus Plus 2076Expressions, ,C@t{++} Expressions}. You can use the command @code{set 2077overload-resolution off} to disable overload resolution; 2078see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}. 2079 2080@cindex completion of structure field names 2081@cindex structure field name completion 2082@cindex completion of union field names 2083@cindex union field name completion 2084When completing in an expression which looks up a field in a 2085structure, @value{GDBN} also tries@footnote{The completer can be 2086confused by certain kinds of invalid expressions. Also, it only 2087examines the static type of the expression, not the dynamic type.} to 2088limit completions to the field names available in the type of the 2089left-hand-side: 2090 2091@smallexample 2092(@value{GDBP}) p gdb_stdout.@kbd{M-?} 2093magic to_fputs to_rewind 2094to_data to_isatty to_write 2095to_delete to_put to_write_async_safe 2096to_flush to_read 2097@end smallexample 2098 2099@noindent 2100This is because the @code{gdb_stdout} is a variable of the type 2101@code{struct ui_file} that is defined in @value{GDBN} sources as 2102follows: 2103 2104@smallexample 2105struct ui_file 2106@{ 2107 int *magic; 2108 ui_file_flush_ftype *to_flush; 2109 ui_file_write_ftype *to_write; 2110 ui_file_write_async_safe_ftype *to_write_async_safe; 2111 ui_file_fputs_ftype *to_fputs; 2112 ui_file_read_ftype *to_read; 2113 ui_file_delete_ftype *to_delete; 2114 ui_file_isatty_ftype *to_isatty; 2115 ui_file_rewind_ftype *to_rewind; 2116 ui_file_put_ftype *to_put; 2117 void *to_data; 2118@} 2119@end smallexample 2120 2121@node Command Options 2122@section Command options 2123 2124@cindex command options 2125Some commands accept options starting with a leading dash. For 2126example, @code{print -pretty}. Similarly to command names, you can 2127abbreviate a @value{GDBN} option to the first few letters of the 2128option name, if that abbreviation is unambiguous, and you can also use 2129the @key{TAB} key to get @value{GDBN} to fill out the rest of a word 2130in an option (or to show you the alternatives available, if there is 2131more than one possibility). 2132 2133@cindex command options, raw input 2134Some commands take raw input as argument. For example, the print 2135command processes arbitrary expressions in any of the languages 2136supported by @value{GDBN}. With such commands, because raw input may 2137start with a leading dash that would be confused with an option or any 2138of its abbreviations, e.g.@: @code{print -p} (short for @code{print 2139-pretty} or printing negative @code{p}?), if you specify any command 2140option, then you must use a double-dash (@code{--}) delimiter to 2141indicate the end of options. 2142 2143@cindex command options, boolean 2144 2145Some options are described as accepting an argument which can be 2146either @code{on} or @code{off}. These are known as @dfn{boolean 2147options}. Similarly to boolean settings commands---@code{on} and 2148@code{off} are the typical values, but any of @code{1}, @code{yes} and 2149@code{enable} can also be used as ``true'' value, and any of @code{0}, 2150@code{no} and @code{disable} can also be used as ``false'' value. You 2151can also omit a ``true'' value, as it is implied by default. 2152 2153For example, these are equivalent: 2154 2155@smallexample 2156(@value{GDBP}) print -object on -pretty off -element unlimited -- *myptr 2157(@value{GDBP}) p -o -p 0 -e u -- *myptr 2158@end smallexample 2159 2160You can discover the set of options some command accepts by completing 2161on @code{-} after the command name. For example: 2162 2163@smallexample 2164(@value{GDBP}) print -@key{TAB}@key{TAB} 2165-address -max-depth -object -static-members 2166-array -memory-tag-violations -pretty -symbol 2167-array-indexes -nibbles -raw-values -union 2168-elements -null-stop -repeats -vtbl 2169@end smallexample 2170 2171Completion will in some cases guide you with a suggestion of what kind 2172of argument an option expects. For example: 2173 2174@smallexample 2175(@value{GDBP}) print -elements @key{TAB}@key{TAB} 2176NUMBER unlimited 2177@end smallexample 2178 2179@noindent 2180Here, the option expects a number (e.g., @code{100}), not literal 2181@code{NUMBER}. Such metasyntactical arguments are always presented in 2182uppercase. 2183 2184(For more on using the @code{print} command, see @ref{Data, ,Examining 2185Data}.) 2186 2187@node Help 2188@section Getting Help 2189@cindex online documentation 2190@kindex help 2191 2192You can always ask @value{GDBN} itself for information on its commands, 2193using the command @code{help}. 2194 2195@table @code 2196@kindex h @r{(@code{help})} 2197@item help 2198@itemx h 2199You can use @code{help} (abbreviated @code{h}) with no arguments to 2200display a short list of named classes of commands: 2201 2202@smallexample 2203(@value{GDBP}) help 2204List of classes of commands: 2205 2206aliases -- User-defined aliases of other commands 2207breakpoints -- Making program stop at certain points 2208data -- Examining data 2209files -- Specifying and examining files 2210internals -- Maintenance commands 2211obscure -- Obscure features 2212running -- Running the program 2213stack -- Examining the stack 2214status -- Status inquiries 2215support -- Support facilities 2216tracepoints -- Tracing of program execution without 2217 stopping the program 2218user-defined -- User-defined commands 2219 2220Type "help" followed by a class name for a list of 2221commands in that class. 2222Type "help" followed by command name for full 2223documentation. 2224Command name abbreviations are allowed if unambiguous. 2225(@value{GDBP}) 2226@end smallexample 2227@c the above line break eliminates huge line overfull... 2228 2229@item help @var{class} 2230Using one of the general help classes as an argument, you can get a 2231list of the individual commands in that class. If a command has 2232aliases, the aliases are given after the command name, separated by 2233commas. If an alias has default arguments, the full definition of 2234the alias is given after the first line. 2235For example, here is the help display for the class @code{status}: 2236 2237@smallexample 2238(@value{GDBP}) help status 2239Status inquiries. 2240 2241List of commands: 2242 2243@c Line break in "show" line falsifies real output, but needed 2244@c to fit in smallbook page size. 2245info, inf, i -- Generic command for showing things 2246 about the program being debugged 2247info address, iamain -- Describe where symbol SYM is stored. 2248 alias iamain = info address main 2249info all-registers -- List of all registers and their contents, 2250 for selected stack frame. 2251... 2252show, info set -- Generic command for showing things 2253 about the debugger 2254 2255Type "help" followed by command name for full 2256documentation. 2257Command name abbreviations are allowed if unambiguous. 2258(@value{GDBP}) 2259@end smallexample 2260 2261@item help @var{command} 2262With a command name as @code{help} argument, @value{GDBN} displays a 2263short paragraph on how to use that command. If that command has 2264one or more aliases, @value{GDBN} will display a first line with 2265the command name and all its aliases separated by commas. 2266This first line will be followed by the full definition of all aliases 2267having default arguments. 2268When asking the help for an alias, the documentation for the aliased 2269command is shown. 2270 2271A user-defined alias can optionally be documented using the 2272@code{document} command (@pxref{Define, document}). @value{GDBN} then 2273considers this alias as different from the aliased command: this alias 2274is not listed in the aliased command help output, and asking help for 2275this alias will show the documentation provided for the alias instead of 2276the documentation of the aliased command. 2277 2278@kindex apropos 2279@item apropos [-v] @var{regexp} 2280The @code{apropos} command searches through all of the @value{GDBN} 2281commands and aliases, and their documentation, for the regular expression specified in 2282@var{args}. It prints out all matches found. The optional flag @samp{-v}, 2283which stands for @samp{verbose}, indicates to output the full documentation 2284of the matching commands and highlight the parts of the documentation 2285matching @var{regexp}. For example: 2286 2287@smallexample 2288apropos alias 2289@end smallexample 2290 2291@noindent 2292results in: 2293 2294@smallexample 2295@group 2296alias -- Define a new command that is an alias of an existing command 2297aliases -- User-defined aliases of other commands 2298@end group 2299@end smallexample 2300 2301@noindent 2302while 2303 2304@smallexample 2305apropos -v cut.*thread apply 2306@end smallexample 2307 2308@noindent 2309results in the below output, where @samp{cut for 'thread apply} 2310is highlighted if styling is enabled. 2311 2312@smallexample 2313@group 2314taas -- Apply a command to all threads (ignoring errors 2315and empty output). 2316Usage: taas COMMAND 2317shortcut for 'thread apply all -s COMMAND' 2318 2319tfaas -- Apply a command to all frames of all threads 2320(ignoring errors and empty output). 2321Usage: tfaas COMMAND 2322shortcut for 'thread apply all -s frame apply all -s COMMAND' 2323@end group 2324@end smallexample 2325 2326@kindex complete 2327@item complete @var{args} 2328The @code{complete @var{args}} command lists all the possible completions 2329for the beginning of a command. Use @var{args} to specify the beginning of the 2330command you want completed. For example: 2331 2332@smallexample 2333complete i 2334@end smallexample 2335 2336@noindent results in: 2337 2338@smallexample 2339@group 2340if 2341ignore 2342info 2343inspect 2344@end group 2345@end smallexample 2346 2347@noindent This is intended for use by @sc{gnu} Emacs. 2348@end table 2349 2350In addition to @code{help}, you can use the @value{GDBN} commands @code{info} 2351and @code{show} to inquire about the state of your program, or the state 2352of @value{GDBN} itself. Each command supports many topics of inquiry; this 2353manual introduces each of them in the appropriate context. The listings 2354under @code{info} and under @code{show} in the Command, Variable, and 2355Function Index point to all the sub-commands. @xref{Command and Variable 2356Index}. 2357 2358@c @group 2359@table @code 2360@kindex info 2361@kindex i @r{(@code{info})} 2362@item info 2363This command (abbreviated @code{i}) is for describing the state of your 2364program. For example, you can show the arguments passed to a function 2365with @code{info args}, list the registers currently in use with @code{info 2366registers}, or list the breakpoints you have set with @code{info breakpoints}. 2367You can get a complete list of the @code{info} sub-commands with 2368@w{@code{help info}}. 2369 2370@kindex set 2371@item set 2372You can assign the result of an expression to an environment variable with 2373@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with 2374@code{set prompt $}. 2375 2376@kindex show 2377@item show 2378In contrast to @code{info}, @code{show} is for describing the state of 2379@value{GDBN} itself. 2380You can change most of the things you can @code{show}, by using the 2381related command @code{set}; for example, you can control what number 2382system is used for displays with @code{set radix}, or simply inquire 2383which is currently in use with @code{show radix}. 2384 2385@kindex info set 2386To display all the settable parameters and their current 2387values, you can use @code{show} with no arguments; you may also use 2388@code{info set}. Both commands produce the same display. 2389@c FIXME: "info set" violates the rule that "info" is for state of 2390@c FIXME...program. Ck w/ GNU: "info set" to be called something else, 2391@c FIXME...or change desc of rule---eg "state of prog and debugging session"? 2392@end table 2393@c @end group 2394 2395Here are several miscellaneous @code{show} subcommands, all of which are 2396exceptional in lacking corresponding @code{set} commands: 2397 2398@table @code 2399@kindex show version 2400@cindex @value{GDBN} version number 2401@item show version 2402Show what version of @value{GDBN} is running. You should include this 2403information in @value{GDBN} bug-reports. If multiple versions of 2404@value{GDBN} are in use at your site, you may need to determine which 2405version of @value{GDBN} you are running; as @value{GDBN} evolves, new 2406commands are introduced, and old ones may wither away. Also, many 2407system vendors ship variant versions of @value{GDBN}, and there are 2408variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well. 2409The version number is the same as the one announced when you start 2410@value{GDBN}. 2411 2412@kindex show copying 2413@kindex info copying 2414@cindex display @value{GDBN} copyright 2415@item show copying 2416@itemx info copying 2417Display information about permission for copying @value{GDBN}. 2418 2419@kindex show warranty 2420@kindex info warranty 2421@item show warranty 2422@itemx info warranty 2423Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty, 2424if your version of @value{GDBN} comes with one. 2425 2426@kindex show configuration 2427@item show configuration 2428Display detailed information about the way @value{GDBN} was configured 2429when it was built. This displays the optional arguments passed to the 2430@file{configure} script and also configuration parameters detected 2431automatically by @command{configure}. When reporting a @value{GDBN} 2432bug (@pxref{GDB Bugs}), it is important to include this information in 2433your report. 2434 2435@end table 2436 2437@node Running 2438@chapter Running Programs Under @value{GDBN} 2439 2440When you run a program under @value{GDBN}, you must first generate 2441debugging information when you compile it. 2442 2443You may start @value{GDBN} with its arguments, if any, in an environment 2444of your choice. If you are doing native debugging, you may redirect 2445your program's input and output, debug an already running process, or 2446kill a child process. 2447 2448@menu 2449* Compilation:: Compiling for debugging 2450* Starting:: Starting your program 2451* Arguments:: Your program's arguments 2452* Environment:: Your program's environment 2453 2454* Working Directory:: Your program's working directory 2455* Input/Output:: Your program's input and output 2456* Attach:: Debugging an already-running process 2457* Kill Process:: Killing the child process 2458* Inferiors Connections and Programs:: Debugging multiple inferiors 2459 connections and programs 2460* Threads:: Debugging programs with multiple threads 2461* Forks:: Debugging forks 2462* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later 2463@end menu 2464 2465@node Compilation 2466@section Compiling for Debugging 2467 2468In order to debug a program effectively, you need to generate 2469debugging information when you compile it. This debugging information 2470is stored in the object file; it describes the data type of each 2471variable or function and the correspondence between source line numbers 2472and addresses in the executable code. 2473 2474To request debugging information, specify the @samp{-g} option when you run 2475the compiler. 2476 2477Programs that are to be shipped to your customers are compiled with 2478optimizations, using the @samp{-O} compiler option. However, some 2479compilers are unable to handle the @samp{-g} and @samp{-O} options 2480together. Using those compilers, you cannot generate optimized 2481executables containing debugging information. 2482 2483@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or 2484without @samp{-O}, making it possible to debug optimized code. We 2485recommend that you @emph{always} use @samp{-g} whenever you compile a 2486program. You may think your program is correct, but there is no sense 2487in pushing your luck. For more information, see @ref{Optimized Code}. 2488 2489Older versions of the @sc{gnu} C compiler permitted a variant option 2490@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this 2491format; if your @sc{gnu} C compiler has this option, do not use it. 2492 2493@value{GDBN} knows about preprocessor macros and can show you their 2494expansion (@pxref{Macros}). Most compilers do not include information 2495about preprocessor macros in the debugging information if you specify 2496the @option{-g} flag alone. Version 3.1 and later of @value{NGCC}, 2497the @sc{gnu} C compiler, provides macro information if you are using 2498the DWARF debugging format, and specify the option @option{-g3}. 2499 2500@xref{Debugging Options,,Options for Debugging Your Program or GCC, 2501gcc, Using the @sc{gnu} Compiler Collection (GCC)}, for more 2502information on @value{NGCC} options affecting debug information. 2503 2504You will have the best debugging experience if you use the latest 2505version of the DWARF debugging format that your compiler supports. 2506DWARF is currently the most expressive and best supported debugging 2507format in @value{GDBN}. 2508 2509@need 2000 2510@node Starting 2511@section Starting your Program 2512@cindex starting 2513@cindex running 2514 2515@table @code 2516@kindex run 2517@kindex r @r{(@code{run})} 2518@item run 2519@itemx r 2520Use the @code{run} command to start your program under @value{GDBN}. 2521You must first specify the program name with an argument to 2522@value{GDBN} (@pxref{Invocation, ,Getting In and Out of 2523@value{GDBN}}), or by using the @code{file} or @code{exec-file} 2524command (@pxref{Files, ,Commands to Specify Files}). 2525 2526@end table 2527 2528If you are running your program in an execution environment that 2529supports processes, @code{run} creates an inferior process and makes 2530that process run your program. In some environments without processes, 2531@code{run} jumps to the start of your program. Other targets, 2532like @samp{remote}, are always running. If you get an error 2533message like this one: 2534 2535@smallexample 2536The "remote" target does not support "run". 2537Try "help target" or "continue". 2538@end smallexample 2539 2540@noindent 2541then use @code{continue} to run your program. You may need @code{load} 2542first (@pxref{load}). 2543 2544The execution of a program is affected by certain information it 2545receives from its superior. @value{GDBN} provides ways to specify this 2546information, which you must do @emph{before} starting your program. (You 2547can change it after starting your program, but such changes only affect 2548your program the next time you start it.) This information may be 2549divided into four categories: 2550 2551@table @asis 2552@item The @emph{arguments.} 2553Specify the arguments to give your program as the arguments of the 2554@code{run} command. If a shell is available on your target, the shell 2555is used to pass the arguments, so that you may use normal conventions 2556(such as wildcard expansion or variable substitution) in describing 2557the arguments. 2558In Unix systems, you can control which shell is used with the 2559@env{SHELL} environment variable. If you do not define @env{SHELL}, 2560@value{GDBN} uses the default shell (@file{/bin/sh}). You can disable 2561use of any shell with the @code{set startup-with-shell} command (see 2562below for details). 2563 2564@item The @emph{environment.} 2565Your program normally inherits its environment from @value{GDBN}, but you can 2566use the @value{GDBN} commands @code{set environment} and @code{unset 2567environment} to change parts of the environment that affect 2568your program. @xref{Environment, ,Your Program's Environment}. 2569 2570@item The @emph{working directory.} 2571You can set your program's working directory with the command 2572@kbd{set cwd}. If you do not set any working directory with this 2573command, your program will inherit @value{GDBN}'s working directory if 2574native debugging, or the remote server's working directory if remote 2575debugging. @xref{Working Directory, ,Your Program's Working 2576Directory}. 2577 2578@item The @emph{standard input and output.} 2579Your program normally uses the same device for standard input and 2580standard output as @value{GDBN} is using. You can redirect input and output 2581in the @code{run} command line, or you can use the @code{tty} command to 2582set a different device for your program. 2583@xref{Input/Output, ,Your Program's Input and Output}. 2584 2585@cindex pipes 2586@emph{Warning:} While input and output redirection work, you cannot use 2587pipes to pass the output of the program you are debugging to another 2588program; if you attempt this, @value{GDBN} is likely to wind up debugging the 2589wrong program. 2590@end table 2591 2592When you issue the @code{run} command, your program begins to execute 2593immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion 2594of how to arrange for your program to stop. Once your program has 2595stopped, you may call functions in your program, using the @code{print} 2596or @code{call} commands. @xref{Data, ,Examining Data}. 2597 2598If the modification time of your symbol file has changed since the last 2599time @value{GDBN} read its symbols, @value{GDBN} discards its symbol 2600table, and reads it again. When it does this, @value{GDBN} tries to retain 2601your current breakpoints. 2602 2603@table @code 2604@kindex start 2605@item start 2606@cindex run to main procedure 2607The name of the main procedure can vary from language to language. 2608With C or C@t{++}, the main procedure name is always @code{main}, but 2609other languages such as Ada do not require a specific name for their 2610main procedure. The debugger provides a convenient way to start the 2611execution of the program and to stop at the beginning of the main 2612procedure, depending on the language used. 2613 2614The @samp{start} command does the equivalent of setting a temporary 2615breakpoint at the beginning of the main procedure and then invoking 2616the @samp{run} command. 2617 2618@cindex elaboration phase 2619Some programs contain an @dfn{elaboration} phase where some startup code is 2620executed before the main procedure is called. This depends on the 2621languages used to write your program. In C@t{++}, for instance, 2622constructors for static and global objects are executed before 2623@code{main} is called. It is therefore possible that the debugger stops 2624before reaching the main procedure. However, the temporary breakpoint 2625will remain to halt execution. 2626 2627Specify the arguments to give to your program as arguments to the 2628@samp{start} command. These arguments will be given verbatim to the 2629underlying @samp{run} command. Note that the same arguments will be 2630reused if no argument is provided during subsequent calls to 2631@samp{start} or @samp{run}. 2632 2633It is sometimes necessary to debug the program during elaboration. In 2634these cases, using the @code{start} command would stop the execution 2635of your program too late, as the program would have already completed 2636the elaboration phase. Under these circumstances, either insert 2637breakpoints in your elaboration code before running your program or 2638use the @code{starti} command. 2639 2640@kindex starti 2641@item starti 2642@cindex run to first instruction 2643The @samp{starti} command does the equivalent of setting a temporary 2644breakpoint at the first instruction of a program's execution and then 2645invoking the @samp{run} command. For programs containing an 2646elaboration phase, the @code{starti} command will stop execution at 2647the start of the elaboration phase. 2648 2649@anchor{set exec-wrapper} 2650@kindex set exec-wrapper 2651@item set exec-wrapper @var{wrapper} 2652@itemx show exec-wrapper 2653@itemx unset exec-wrapper 2654When @samp{exec-wrapper} is set, the specified wrapper is used to 2655launch programs for debugging. @value{GDBN} starts your program 2656with a shell command of the form @kbd{exec @var{wrapper} 2657@var{program}}. Quoting is added to @var{program} and its 2658arguments, but not to @var{wrapper}, so you should add quotes if 2659appropriate for your shell. The wrapper runs until it executes 2660your program, and then @value{GDBN} takes control. 2661 2662You can use any program that eventually calls @code{execve} with 2663its arguments as a wrapper. Several standard Unix utilities do 2664this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 2665with @code{exec "$@@"} will also work. 2666 2667For example, you can use @code{env} to pass an environment variable to 2668the debugged program, without setting the variable in your shell's 2669environment: 2670 2671@smallexample 2672(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so' 2673(@value{GDBP}) run 2674@end smallexample 2675 2676This command is available when debugging locally on most targets, excluding 2677@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino. 2678 2679@kindex set startup-with-shell 2680@anchor{set startup-with-shell} 2681@item set startup-with-shell 2682@itemx set startup-with-shell on 2683@itemx set startup-with-shell off 2684@itemx show startup-with-shell 2685On Unix systems, by default, if a shell is available on your target, 2686@value{GDBN}) uses it to start your program. Arguments of the 2687@code{run} command are passed to the shell, which does variable 2688substitution, expands wildcard characters and performs redirection of 2689I/O. In some circumstances, it may be useful to disable such use of a 2690shell, for example, when debugging the shell itself or diagnosing 2691startup failures such as: 2692 2693@smallexample 2694(@value{GDBP}) run 2695Starting program: ./a.out 2696During startup program terminated with signal SIGSEGV, Segmentation fault. 2697@end smallexample 2698 2699@noindent 2700which indicates the shell or the wrapper specified with 2701@samp{exec-wrapper} crashed, not your program. Most often, this is 2702caused by something odd in your shell's non-interactive mode 2703initialization file---such as @file{.cshrc} for C-shell, 2704$@file{.zshenv} for the Z shell, or the file specified in the 2705@env{BASH_ENV} environment variable for BASH. 2706 2707@anchor{set auto-connect-native-target} 2708@kindex set auto-connect-native-target 2709@item set auto-connect-native-target 2710@itemx set auto-connect-native-target on 2711@itemx set auto-connect-native-target off 2712@itemx show auto-connect-native-target 2713 2714By default, if the current inferior is not connected to any target yet 2715(e.g., with @code{target remote}), the @code{run} command starts your 2716program as a native process under @value{GDBN}, on your local machine. 2717If you're sure you don't want to debug programs on your local machine, 2718you can tell @value{GDBN} to not connect to the native target 2719automatically with the @code{set auto-connect-native-target off} 2720command. 2721 2722If @code{on}, which is the default, and if the current inferior is not 2723connected to a target already, the @code{run} command automaticaly 2724connects to the native target, if one is available. 2725 2726If @code{off}, and if the current inferior is not connected to a 2727target already, the @code{run} command fails with an error: 2728 2729@smallexample 2730(@value{GDBP}) run 2731Don't know how to run. Try "help target". 2732@end smallexample 2733 2734If the current inferior is already connected to a target, @value{GDBN} 2735always uses it with the @code{run} command. 2736 2737In any case, you can explicitly connect to the native target with the 2738@code{target native} command. For example, 2739 2740@smallexample 2741(@value{GDBP}) set auto-connect-native-target off 2742(@value{GDBP}) run 2743Don't know how to run. Try "help target". 2744(@value{GDBP}) target native 2745(@value{GDBP}) run 2746Starting program: ./a.out 2747[Inferior 1 (process 10421) exited normally] 2748@end smallexample 2749 2750In case you connected explicitly to the @code{native} target, 2751@value{GDBN} remains connected even if all inferiors exit, ready for 2752the next @code{run} command. Use the @code{disconnect} command to 2753disconnect. 2754 2755Examples of other commands that likewise respect the 2756@code{auto-connect-native-target} setting: @code{attach}, @code{info 2757proc}, @code{info os}. 2758 2759@kindex set disable-randomization 2760@item set disable-randomization 2761@itemx set disable-randomization on 2762This option (enabled by default in @value{GDBN}) will turn off the native 2763randomization of the virtual address space of the started program. This option 2764is useful for multiple debugging sessions to make the execution better 2765reproducible and memory addresses reusable across debugging sessions. 2766 2767This feature is implemented only on certain targets, including @sc{gnu}/Linux. 2768On @sc{gnu}/Linux you can get the same behavior using 2769 2770@smallexample 2771(@value{GDBP}) set exec-wrapper setarch `uname -m` -R 2772@end smallexample 2773 2774@item set disable-randomization off 2775Leave the behavior of the started executable unchanged. Some bugs rear their 2776ugly heads only when the program is loaded at certain addresses. If your bug 2777disappears when you run the program under @value{GDBN}, that might be because 2778@value{GDBN} by default disables the address randomization on platforms, such 2779as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set 2780disable-randomization off} to try to reproduce such elusive bugs. 2781 2782On targets where it is available, virtual address space randomization 2783protects the programs against certain kinds of security attacks. In these 2784cases the attacker needs to know the exact location of a concrete executable 2785code. Randomizing its location makes it impossible to inject jumps misusing 2786a code at its expected addresses. 2787 2788Prelinking shared libraries provides a startup performance advantage but it 2789makes addresses in these libraries predictable for privileged processes by 2790having just unprivileged access at the target system. Reading the shared 2791library binary gives enough information for assembling the malicious code 2792misusing it. Still even a prelinked shared library can get loaded at a new 2793random address just requiring the regular relocation process during the 2794startup. Shared libraries not already prelinked are always loaded at 2795a randomly chosen address. 2796 2797Position independent executables (PIE) contain position independent code 2798similar to the shared libraries and therefore such executables get loaded at 2799a randomly chosen address upon startup. PIE executables always load even 2800already prelinked shared libraries at a random address. You can build such 2801executable using @command{gcc -fPIE -pie}. 2802 2803Heap (malloc storage), stack and custom mmap areas are always placed randomly 2804(as long as the randomization is enabled). 2805 2806@item show disable-randomization 2807Show the current setting of the explicit disable of the native randomization of 2808the virtual address space of the started program. 2809 2810@end table 2811 2812@node Arguments 2813@section Your Program's Arguments 2814 2815@cindex arguments (to your program) 2816The arguments to your program can be specified by the arguments of the 2817@code{run} command. 2818They are passed to a shell, which expands wildcard characters and 2819performs redirection of I/O, and thence to your program. Your 2820@env{SHELL} environment variable (if it exists) specifies what shell 2821@value{GDBN} uses. If you do not define @env{SHELL}, @value{GDBN} uses 2822the default shell (@file{/bin/sh} on Unix). 2823 2824On non-Unix systems, the program is usually invoked directly by 2825@value{GDBN}, which emulates I/O redirection via the appropriate system 2826calls, and the wildcard characters are expanded by the startup code of 2827the program, not by the shell. 2828 2829@code{run} with no arguments uses the same arguments used by the previous 2830@code{run}, or those set by the @code{set args} command. 2831 2832@table @code 2833@kindex set args 2834@item set args 2835Specify the arguments to be used the next time your program is run. If 2836@code{set args} has no arguments, @code{run} executes your program 2837with no arguments. Once you have run your program with arguments, 2838using @code{set args} before the next @code{run} is the only way to run 2839it again without arguments. 2840 2841@kindex show args 2842@item show args 2843Show the arguments to give your program when it is started. 2844@end table 2845 2846@node Environment 2847@section Your Program's Environment 2848 2849@cindex environment (of your program) 2850The @dfn{environment} consists of a set of environment variables and 2851their values. Environment variables conventionally record such things as 2852your user name, your home directory, your terminal type, and your search 2853path for programs to run. Usually you set up environment variables with 2854the shell and they are inherited by all the other programs you run. When 2855debugging, it can be useful to try running your program with a modified 2856environment without having to start @value{GDBN} over again. 2857 2858@table @code 2859@kindex path 2860@item path @var{directory} 2861Add @var{directory} to the front of the @env{PATH} environment variable 2862(the search path for executables) that will be passed to your program. 2863The value of @env{PATH} used by @value{GDBN} does not change. 2864You may specify several directory names, separated by whitespace or by a 2865system-dependent separator character (@samp{:} on Unix, @samp{;} on 2866MS-DOS and MS-Windows). If @var{directory} is already in the path, it 2867is moved to the front, so it is searched sooner. 2868 2869You can use the string @samp{$cwd} to refer to whatever is the current 2870working directory at the time @value{GDBN} searches the path. If you 2871use @samp{.} instead, it refers to the directory where you executed the 2872@code{path} command. @value{GDBN} replaces @samp{.} in the 2873@var{directory} argument (with the current path) before adding 2874@var{directory} to the search path. 2875@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to 2876@c document that, since repeating it would be a no-op. 2877 2878@kindex show paths 2879@item show paths 2880Display the list of search paths for executables (the @env{PATH} 2881environment variable). 2882 2883@kindex show environment 2884@item show environment @r{[}@var{varname}@r{]} 2885Print the value of environment variable @var{varname} to be given to 2886your program when it starts. If you do not supply @var{varname}, 2887print the names and values of all environment variables to be given to 2888your program. You can abbreviate @code{environment} as @code{env}. 2889 2890@kindex set environment 2891@anchor{set environment} 2892@item set environment @var{varname} @r{[}=@var{value}@r{]} 2893Set environment variable @var{varname} to @var{value}. The value 2894changes for your program (and the shell @value{GDBN} uses to launch 2895it), not for @value{GDBN} itself. The @var{value} may be any string; the 2896values of environment variables are just strings, and any 2897interpretation is supplied by your program itself. The @var{value} 2898parameter is optional; if it is eliminated, the variable is set to a 2899null value. 2900@c "any string" here does not include leading, trailing 2901@c blanks. Gnu asks: does anyone care? 2902 2903For example, this command: 2904 2905@smallexample 2906set env USER = foo 2907@end smallexample 2908 2909@noindent 2910tells the debugged program, when subsequently run, that its user is named 2911@samp{foo}. (The spaces around @samp{=} are used for clarity here; they 2912are not actually required.) 2913 2914Note that on Unix systems, @value{GDBN} runs your program via a shell, 2915which also inherits the environment set with @code{set environment}. 2916If necessary, you can avoid that by using the @samp{env} program as a 2917wrapper instead of using @code{set environment}. @xref{set 2918exec-wrapper}, for an example doing just that. 2919 2920Environment variables that are set by the user are also transmitted to 2921@command{gdbserver} to be used when starting the remote inferior. 2922@pxref{QEnvironmentHexEncoded}. 2923 2924@kindex unset environment 2925@anchor{unset environment} 2926@item unset environment @var{varname} 2927Remove variable @var{varname} from the environment to be passed to your 2928program. This is different from @samp{set env @var{varname} =}; 2929@code{unset environment} removes the variable from the environment, 2930rather than assigning it an empty value. 2931 2932Environment variables that are unset by the user are also unset on 2933@command{gdbserver} when starting the remote inferior. 2934@pxref{QEnvironmentUnset}. 2935@end table 2936 2937@emph{Warning:} On Unix systems, @value{GDBN} runs your program using 2938the shell indicated by your @env{SHELL} environment variable if it 2939exists (or @code{/bin/sh} if not). If your @env{SHELL} variable 2940names a shell that runs an initialization file when started 2941non-interactively---such as @file{.cshrc} for C-shell, $@file{.zshenv} 2942for the Z shell, or the file specified in the @env{BASH_ENV} 2943environment variable for BASH---any variables you set in that file 2944affect your program. You may wish to move setting of environment 2945variables to files that are only run when you sign on, such as 2946@file{.login} or @file{.profile}. 2947 2948@node Working Directory 2949@section Your Program's Working Directory 2950 2951@cindex working directory (of your program) 2952Each time you start your program with @code{run}, the inferior will be 2953initialized with the current working directory specified by the 2954@kbd{set cwd} command. If no directory has been specified by this 2955command, then the inferior will inherit @value{GDBN}'s current working 2956directory as its working directory if native debugging, or it will 2957inherit the remote server's current working directory if remote 2958debugging. 2959 2960@table @code 2961@kindex set cwd 2962@cindex change inferior's working directory 2963@anchor{set cwd command} 2964@item set cwd @r{[}@var{directory}@r{]} 2965Set the inferior's working directory to @var{directory}, which will be 2966@code{glob}-expanded in order to resolve tildes (@file{~}). If no 2967argument has been specified, the command clears the setting and resets 2968it to an empty state. This setting has no effect on @value{GDBN}'s 2969working directory, and it only takes effect the next time you start 2970the inferior. The @file{~} in @var{directory} is a short for the 2971@dfn{home directory}, usually pointed to by the @env{HOME} environment 2972variable. On MS-Windows, if @env{HOME} is not defined, @value{GDBN} 2973uses the concatenation of @env{HOMEDRIVE} and @env{HOMEPATH} as 2974fallback. 2975 2976You can also change @value{GDBN}'s current working directory by using 2977the @code{cd} command. 2978@xref{cd command}. 2979 2980@kindex show cwd 2981@cindex show inferior's working directory 2982@item show cwd 2983Show the inferior's working directory. If no directory has been 2984specified by @kbd{set cwd}, then the default inferior's working 2985directory is the same as @value{GDBN}'s working directory. 2986 2987@kindex cd 2988@cindex change @value{GDBN}'s working directory 2989@anchor{cd command} 2990@item cd @r{[}@var{directory}@r{]} 2991Set the @value{GDBN} working directory to @var{directory}. If not 2992given, @var{directory} uses @file{'~'}. 2993 2994The @value{GDBN} working directory serves as a default for the 2995commands that specify files for @value{GDBN} to operate on. 2996@xref{Files, ,Commands to Specify Files}. 2997@xref{set cwd command}. 2998 2999@kindex pwd 3000@item pwd 3001Print the @value{GDBN} working directory. 3002@end table 3003 3004It is generally impossible to find the current working directory of 3005the process being debugged (since a program can change its directory 3006during its run). If you work on a system where @value{GDBN} supports 3007the @code{info proc} command (@pxref{Process Information}), you can 3008use the @code{info proc} command to find out the 3009current working directory of the debuggee. 3010 3011@node Input/Output 3012@section Your Program's Input and Output 3013 3014@cindex redirection 3015@cindex i/o 3016@cindex terminal 3017By default, the program you run under @value{GDBN} does input and output to 3018the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal 3019to its own terminal modes to interact with you, but it records the terminal 3020modes your program was using and switches back to them when you continue 3021running your program. 3022 3023@table @code 3024@kindex info terminal 3025@item info terminal 3026Displays information recorded by @value{GDBN} about the terminal modes your 3027program is using. 3028@end table 3029 3030You can redirect your program's input and/or output using shell 3031redirection with the @code{run} command. For example, 3032 3033@smallexample 3034run > outfile 3035@end smallexample 3036 3037@noindent 3038starts your program, diverting its output to the file @file{outfile}. 3039 3040@kindex tty 3041@cindex controlling terminal 3042Another way to specify where your program should do input and output is 3043with the @code{tty} command. This command accepts a file name as 3044argument, and causes this file to be the default for future @code{run} 3045commands. It also resets the controlling terminal for the child 3046process, for future @code{run} commands. For example, 3047 3048@smallexample 3049tty /dev/ttyb 3050@end smallexample 3051 3052@noindent 3053directs that processes started with subsequent @code{run} commands 3054default to do input and output on the terminal @file{/dev/ttyb} and have 3055that as their controlling terminal. 3056 3057An explicit redirection in @code{run} overrides the @code{tty} command's 3058effect on the input/output device, but not its effect on the controlling 3059terminal. 3060 3061When you use the @code{tty} command or redirect input in the @code{run} 3062command, only the input @emph{for your program} is affected. The input 3063for @value{GDBN} still comes from your terminal. @code{tty} is an alias 3064for @code{set inferior-tty}. 3065 3066@cindex inferior tty 3067@cindex set inferior controlling terminal 3068You can use the @code{show inferior-tty} command to tell @value{GDBN} to 3069display the name of the terminal that will be used for future runs of your 3070program. 3071 3072@table @code 3073@item set inferior-tty [ @var{tty} ] 3074@kindex set inferior-tty 3075Set the tty for the program being debugged to @var{tty}. Omitting @var{tty} 3076restores the default behavior, which is to use the same terminal as 3077@value{GDBN}. 3078 3079@item show inferior-tty 3080@kindex show inferior-tty 3081Show the current tty for the program being debugged. 3082@end table 3083 3084@node Attach 3085@section Debugging an Already-running Process 3086@kindex attach 3087@cindex attach 3088 3089@table @code 3090@item attach @var{process-id} 3091This command attaches to a running process---one that was started 3092outside @value{GDBN}. (@code{info files} shows your active 3093targets.) The command takes as argument a process ID. The usual way to 3094find out the @var{process-id} of a Unix process is with the @code{ps} utility, 3095or with the @samp{jobs -l} shell command. 3096 3097@code{attach} does not repeat if you press @key{RET} a second time after 3098executing the command. 3099@end table 3100 3101To use @code{attach}, your program must be running in an environment 3102which supports processes; for example, @code{attach} does not work for 3103programs on bare-board targets that lack an operating system. You must 3104also have permission to send the process a signal. 3105 3106When you use @code{attach}, the debugger finds the program running in 3107the process first by looking in the current working directory, then (if 3108the program is not found) by using the source file search path 3109(@pxref{Source Path, ,Specifying Source Directories}). You can also use 3110the @code{file} command to load the program. @xref{Files, ,Commands to 3111Specify Files}. 3112 3113@anchor{set exec-file-mismatch} 3114If the debugger can determine that the executable file running in the 3115process it is attaching to does not match the current exec-file loaded 3116by @value{GDBN}, the option @code{exec-file-mismatch} specifies how to 3117handle the mismatch. @value{GDBN} tries to compare the files by 3118comparing their build IDs (@pxref{build ID}), if available. 3119 3120@table @code 3121@kindex exec-file-mismatch 3122@cindex set exec-file-mismatch 3123@item set exec-file-mismatch @samp{ask|warn|off} 3124 3125Whether to detect mismatch between the current executable file loaded 3126by @value{GDBN} and the executable file used to start the process. If 3127@samp{ask}, the default, display a warning and ask the user whether to 3128load the process executable file; if @samp{warn}, just display a 3129warning; if @samp{off}, don't attempt to detect a mismatch. 3130If the user confirms loading the process executable file, then its symbols 3131will be loaded as well. 3132 3133@cindex show exec-file-mismatch 3134@item show exec-file-mismatch 3135Show the current value of @code{exec-file-mismatch}. 3136 3137@end table 3138 3139The first thing @value{GDBN} does after arranging to debug the specified 3140process is to stop it. You can examine and modify an attached process 3141with all the @value{GDBN} commands that are ordinarily available when 3142you start processes with @code{run}. You can insert breakpoints; you 3143can step and continue; you can modify storage. If you would rather the 3144process continue running, you may use the @code{continue} command after 3145attaching @value{GDBN} to the process. 3146 3147@table @code 3148@kindex detach 3149@item detach 3150When you have finished debugging the attached process, you can use the 3151@code{detach} command to release it from @value{GDBN} control. Detaching 3152the process continues its execution. After the @code{detach} command, 3153that process and @value{GDBN} become completely independent once more, and you 3154are ready to @code{attach} another process or start one with @code{run}. 3155@code{detach} does not repeat if you press @key{RET} again after 3156executing the command. 3157@end table 3158 3159If you exit @value{GDBN} while you have an attached process, you detach 3160that process. If you use the @code{run} command, you kill that process. 3161By default, @value{GDBN} asks for confirmation if you try to do either of these 3162things; you can control whether or not you need to confirm by using the 3163@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and 3164Messages}). 3165 3166@node Kill Process 3167@section Killing the Child Process 3168 3169@table @code 3170@kindex kill 3171@item kill 3172Kill the child process in which your program is running under @value{GDBN}. 3173@end table 3174 3175This command is useful if you wish to debug a core dump instead of a 3176running process. @value{GDBN} ignores any core dump file while your program 3177is running. 3178 3179On some operating systems, a program cannot be executed outside @value{GDBN} 3180while you have breakpoints set on it inside @value{GDBN}. You can use the 3181@code{kill} command in this situation to permit running your program 3182outside the debugger. 3183 3184The @code{kill} command is also useful if you wish to recompile and 3185relink your program, since on many systems it is impossible to modify an 3186executable file while it is running in a process. In this case, when you 3187next type @code{run}, @value{GDBN} notices that the file has changed, and 3188reads the symbol table again (while trying to preserve your current 3189breakpoint settings). 3190 3191@node Inferiors Connections and Programs 3192@section Debugging Multiple Inferiors Connections and Programs 3193 3194@value{GDBN} lets you run and debug multiple programs in a single 3195session. In addition, @value{GDBN} on some systems may let you run 3196several programs simultaneously (otherwise you have to exit from one 3197before starting another). On some systems @value{GDBN} may even let 3198you debug several programs simultaneously on different remote systems. 3199In the most general case, you can have multiple threads of execution 3200in each of multiple processes, launched from multiple executables, 3201running on different machines. 3202 3203@cindex inferior 3204@value{GDBN} represents the state of each program execution with an 3205object called an @dfn{inferior}. An inferior typically corresponds to 3206a process, but is more general and applies also to targets that do not 3207have processes. Inferiors may be created before a process runs, and 3208may be retained after a process exits. Inferiors have unique 3209identifiers that are different from process ids. Usually each 3210inferior will also have its own distinct address space, although some 3211embedded targets may have several inferiors running in different parts 3212of a single address space. Each inferior may in turn have multiple 3213threads running in it. 3214 3215To find out what inferiors exist at any moment, use @w{@code{info 3216inferiors}}: 3217 3218@table @code 3219@kindex info inferiors [ @var{id}@dots{} ] 3220@item info inferiors 3221Print a list of all inferiors currently being managed by @value{GDBN}. 3222By default all inferiors are printed, but the argument @var{id}@dots{} 3223-- a space separated list of inferior numbers -- can be used to limit 3224the display to just the requested inferiors. 3225 3226@value{GDBN} displays for each inferior (in this order): 3227 3228@enumerate 3229@item 3230the inferior number assigned by @value{GDBN} 3231 3232@item 3233the target system's inferior identifier 3234 3235@item 3236the target connection the inferior is bound to, including the unique 3237connection number assigned by @value{GDBN}, and the protocol used by 3238the connection. 3239 3240@item 3241the name of the executable the inferior is running. 3242 3243@end enumerate 3244 3245@noindent 3246An asterisk @samp{*} preceding the @value{GDBN} inferior number 3247indicates the current inferior. 3248 3249For example, 3250@end table 3251@c end table here to get a little more width for example 3252 3253@smallexample 3254(@value{GDBP}) info inferiors 3255 Num Description Connection Executable 3256* 1 process 3401 1 (native) goodbye 3257 2 process 2307 2 (extended-remote host:10000) hello 3258@end smallexample 3259 3260To get informations about the current inferior, use @code{inferior}: 3261 3262@table @code 3263@kindex inferior 3264@item inferior 3265Shows information about the current inferior. 3266 3267For example, 3268@end table 3269@c end table here to get a little more width for example 3270 3271@smallexample 3272(@value{GDBP}) inferior 3273[Current inferior is 1 [process 3401] (helloworld)] 3274@end smallexample 3275 3276To find out what open target connections exist at any moment, use 3277@w{@code{info connections}}: 3278 3279@table @code 3280@kindex info connections [ @var{id}@dots{} ] 3281@item info connections 3282Print a list of all open target connections currently being managed by 3283@value{GDBN}. By default all connections are printed, but the 3284argument @var{id}@dots{} -- a space separated list of connections 3285numbers -- can be used to limit the display to just the requested 3286connections. 3287 3288@value{GDBN} displays for each connection (in this order): 3289 3290@enumerate 3291@item 3292the connection number assigned by @value{GDBN}. 3293 3294@item 3295the protocol used by the connection. 3296 3297@item 3298a textual description of the protocol used by the connection. 3299 3300@end enumerate 3301 3302@noindent 3303An asterisk @samp{*} preceding the connection number indicates the 3304connection of the current inferior. 3305 3306For example, 3307@end table 3308@c end table here to get a little more width for example 3309 3310@smallexample 3311(@value{GDBP}) info connections 3312 Num What Description 3313* 1 extended-remote host:10000 Extended remote serial target in gdb-specific protocol 3314 2 native Native process 3315 3 core Local core dump file 3316@end smallexample 3317 3318To switch focus between inferiors, use the @code{inferior} command: 3319 3320@table @code 3321@kindex inferior @var{infno} 3322@item inferior @var{infno} 3323Make inferior number @var{infno} the current inferior. The argument 3324@var{infno} is the inferior number assigned by @value{GDBN}, as shown 3325in the first field of the @samp{info inferiors} display. 3326@end table 3327 3328@vindex $_inferior@r{, convenience variable} 3329The debugger convenience variable @samp{$_inferior} contains the 3330number of the current inferior. You may find this useful in writing 3331breakpoint conditional expressions, command scripts, and so forth. 3332@xref{Convenience Vars,, Convenience Variables}, for general 3333information on convenience variables. 3334 3335You can get multiple executables into a debugging session via the 3336@code{add-inferior} and @w{@code{clone-inferior}} commands. On some 3337systems @value{GDBN} can add inferiors to the debug session 3338automatically by following calls to @code{fork} and @code{exec}. To 3339remove inferiors from the debugging session use the 3340@w{@code{remove-inferiors}} command. 3341 3342@table @code 3343@anchor{add_inferior_cli} 3344@kindex add-inferior 3345@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ] [-no-connection ] 3346Adds @var{n} inferiors to be run using @var{executable} as the 3347executable; @var{n} defaults to 1. If no executable is specified, 3348the inferiors begins empty, with no program. You can still assign or 3349change the program assigned to the inferior at any time by using the 3350@code{file} command with the executable name as its argument. 3351 3352By default, the new inferior begins connected to the same target 3353connection as the current inferior. For example, if the current 3354inferior was connected to @code{gdbserver} with @code{target remote}, 3355then the new inferior will be connected to the same @code{gdbserver} 3356instance. The @samp{-no-connection} option starts the new inferior 3357with no connection yet. You can then for example use the @code{target 3358remote} command to connect to some other @code{gdbserver} instance, 3359use @code{run} to spawn a local program, etc. 3360 3361@kindex clone-inferior 3362@item clone-inferior [ -copies @var{n} ] [ @var{infno} ] 3363Adds @var{n} inferiors ready to execute the same program as inferior 3364@var{infno}; @var{n} defaults to 1, and @var{infno} defaults to the 3365number of the current inferior. This command copies the values of the 3366@var{args}, @w{@var{inferior-tty}} and @var{cwd} properties from the 3367current inferior to the new one. It also propagates changes the user 3368made to environment variables using the @w{@code{set environment}} and 3369@w{@code{unset environment}} commands. This is a convenient command 3370when you want to run another instance of the inferior you are debugging. 3371 3372@smallexample 3373(@value{GDBP}) info inferiors 3374 Num Description Connection Executable 3375* 1 process 29964 1 (native) helloworld 3376(@value{GDBP}) clone-inferior 3377Added inferior 2. 33781 inferiors added. 3379(@value{GDBP}) info inferiors 3380 Num Description Connection Executable 3381* 1 process 29964 1 (native) helloworld 3382 2 <null> 1 (native) helloworld 3383@end smallexample 3384 3385You can now simply switch focus to inferior 2 and run it. 3386 3387@kindex remove-inferiors 3388@item remove-inferiors @var{infno}@dots{} 3389Removes the inferior or inferiors @var{infno}@dots{}. It is not 3390possible to remove an inferior that is running with this command. For 3391those, use the @code{kill} or @code{detach} command first. 3392 3393@end table 3394 3395To quit debugging one of the running inferiors that is not the current 3396inferior, you can either detach from it by using the @w{@code{detach 3397inferior}} command (allowing it to run independently), or kill it 3398using the @w{@code{kill inferiors}} command: 3399 3400@table @code 3401@kindex detach inferiors @var{infno}@dots{} 3402@item detach inferior @var{infno}@dots{} 3403Detach from the inferior or inferiors identified by @value{GDBN} 3404inferior number(s) @var{infno}@dots{}. Note that the inferior's entry 3405still stays on the list of inferiors shown by @code{info inferiors}, 3406but its Description will show @samp{<null>}. 3407 3408@kindex kill inferiors @var{infno}@dots{} 3409@item kill inferiors @var{infno}@dots{} 3410Kill the inferior or inferiors identified by @value{GDBN} inferior 3411number(s) @var{infno}@dots{}. Note that the inferior's entry still 3412stays on the list of inferiors shown by @code{info inferiors}, but its 3413Description will show @samp{<null>}. 3414@end table 3415 3416After the successful completion of a command such as @code{detach}, 3417@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after 3418a normal process exit, the inferior is still valid and listed with 3419@code{info inferiors}, ready to be restarted. 3420 3421 3422To be notified when inferiors are started or exit under @value{GDBN}'s 3423control use @w{@code{set print inferior-events}}: 3424 3425@table @code 3426@kindex set print inferior-events 3427@cindex print messages on inferior start and exit 3428@item set print inferior-events 3429@itemx set print inferior-events on 3430@itemx set print inferior-events off 3431The @code{set print inferior-events} command allows you to enable or 3432disable printing of messages when @value{GDBN} notices that new 3433inferiors have started or that inferiors have exited or have been 3434detached. By default, these messages will be printed. 3435 3436@kindex show print inferior-events 3437@item show print inferior-events 3438Show whether messages will be printed when @value{GDBN} detects that 3439inferiors have started, exited or have been detached. 3440@end table 3441 3442Many commands will work the same with multiple programs as with a 3443single program: e.g., @code{print myglobal} will simply display the 3444value of @code{myglobal} in the current inferior. 3445 3446 3447Occasionally, when debugging @value{GDBN} itself, it may be useful to 3448get more info about the relationship of inferiors, programs, address 3449spaces in a debug session. You can do that with the @w{@code{maint 3450info program-spaces}} command. 3451 3452@table @code 3453@kindex maint info program-spaces 3454@item maint info program-spaces 3455Print a list of all program spaces currently being managed by 3456@value{GDBN}. 3457 3458@value{GDBN} displays for each program space (in this order): 3459 3460@enumerate 3461@item 3462the program space number assigned by @value{GDBN} 3463 3464@item 3465the name of the executable loaded into the program space, with e.g., 3466the @code{file} command. 3467 3468@item 3469the name of the core file loaded into the program space, with e.g., 3470the @code{core-file} command. 3471 3472@end enumerate 3473 3474@noindent 3475An asterisk @samp{*} preceding the @value{GDBN} program space number 3476indicates the current program space. 3477 3478In addition, below each program space line, @value{GDBN} prints extra 3479information that isn't suitable to display in tabular form. For 3480example, the list of inferiors bound to the program space. 3481 3482@smallexample 3483(@value{GDBP}) maint info program-spaces 3484 Id Executable Core File 3485* 1 hello 3486 2 goodbye 3487 Bound inferiors: ID 1 (process 21561) 3488@end smallexample 3489 3490Here we can see that no inferior is running the program @code{hello}, 3491while @code{process 21561} is running the program @code{goodbye}. On 3492some targets, it is possible that multiple inferiors are bound to the 3493same program space. The most common example is that of debugging both 3494the parent and child processes of a @code{vfork} call. For example, 3495 3496@smallexample 3497(@value{GDBP}) maint info program-spaces 3498 Id Executable Core File 3499* 1 vfork-test 3500 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045) 3501@end smallexample 3502 3503Here, both inferior 2 and inferior 1 are running in the same program 3504space as a result of inferior 1 having executed a @code{vfork} call. 3505@end table 3506 3507@node Threads 3508@section Debugging Programs with Multiple Threads 3509 3510@cindex threads of execution 3511@cindex multiple threads 3512@cindex switching threads 3513In some operating systems, such as GNU/Linux and Solaris, a single program 3514may have more than one @dfn{thread} of execution. The precise semantics 3515of threads differ from one operating system to another, but in general 3516the threads of a single program are akin to multiple processes---except 3517that they share one address space (that is, they can all examine and 3518modify the same variables). On the other hand, each thread has its own 3519registers and execution stack, and perhaps private memory. 3520 3521@value{GDBN} provides these facilities for debugging multi-thread 3522programs: 3523 3524@itemize @bullet 3525@item automatic notification of new threads 3526@item @samp{thread @var{thread-id}}, a command to switch among threads 3527@item @samp{info threads}, a command to inquire about existing threads 3528@item @samp{thread apply [@var{thread-id-list} | all] @var{args}}, 3529a command to apply a command to a list of threads 3530@item thread-specific breakpoints 3531@item @samp{set print thread-events}, which controls printing of 3532messages on thread start and exit. 3533@item @samp{set libthread-db-search-path @var{path}}, which lets 3534the user specify which @code{libthread_db} to use if the default choice 3535isn't compatible with the program. 3536@end itemize 3537 3538@cindex focus of debugging 3539@cindex current thread 3540The @value{GDBN} thread debugging facility allows you to observe all 3541threads while your program runs---but whenever @value{GDBN} takes 3542control, one thread in particular is always the focus of debugging. 3543This thread is called the @dfn{current thread}. Debugging commands show 3544program information from the perspective of the current thread. 3545 3546@cindex @code{New} @var{systag} message 3547@cindex thread identifier (system) 3548@c FIXME-implementors!! It would be more helpful if the [New...] message 3549@c included GDB's numeric thread handle, so you could just go to that 3550@c thread without first checking `info threads'. 3551Whenever @value{GDBN} detects a new thread in your program, it displays 3552the target system's identification for the thread with a message in the 3553form @samp{[New @var{systag}]}, where @var{systag} is a thread identifier 3554whose form varies depending on the particular system. For example, on 3555@sc{gnu}/Linux, you might see 3556 3557@smallexample 3558[New Thread 0x41e02940 (LWP 25582)] 3559@end smallexample 3560 3561@noindent 3562when @value{GDBN} notices a new thread. In contrast, on other systems, 3563the @var{systag} is simply something like @samp{process 368}, with no 3564further qualifier. 3565 3566@c FIXME!! (1) Does the [New...] message appear even for the very first 3567@c thread of a program, or does it only appear for the 3568@c second---i.e.@: when it becomes obvious we have a multithread 3569@c program? 3570@c (2) *Is* there necessarily a first thread always? Or do some 3571@c multithread systems permit starting a program with multiple 3572@c threads ab initio? 3573 3574@anchor{thread numbers} 3575@cindex thread number, per inferior 3576@cindex thread identifier (GDB) 3577For debugging purposes, @value{GDBN} associates its own thread number 3578---always a single integer---with each thread of an inferior. This 3579number is unique between all threads of an inferior, but not unique 3580between threads of different inferiors. 3581 3582@cindex qualified thread ID 3583You can refer to a given thread in an inferior using the qualified 3584@var{inferior-num}.@var{thread-num} syntax, also known as 3585@dfn{qualified thread ID}, with @var{inferior-num} being the inferior 3586number and @var{thread-num} being the thread number of the given 3587inferior. For example, thread @code{2.3} refers to thread number 3 of 3588inferior 2. If you omit @var{inferior-num} (e.g., @code{thread 3}), 3589then @value{GDBN} infers you're referring to a thread of the current 3590inferior. 3591 3592Until you create a second inferior, @value{GDBN} does not show the 3593@var{inferior-num} part of thread IDs, even though you can always use 3594the full @var{inferior-num}.@var{thread-num} form to refer to threads 3595of inferior 1, the initial inferior. 3596 3597@anchor{thread ID lists} 3598@cindex thread ID lists 3599Some commands accept a space-separated @dfn{thread ID list} as 3600argument. A list element can be: 3601 3602@enumerate 3603@item 3604A thread ID as shown in the first field of the @samp{info threads} 3605display, with or without an inferior qualifier. E.g., @samp{2.1} or 3606@samp{1}. 3607 3608@item 3609A range of thread numbers, again with or without an inferior 3610qualifier, as in @var{inf}.@var{thr1}-@var{thr2} or 3611@var{thr1}-@var{thr2}. E.g., @samp{1.2-4} or @samp{2-4}. 3612 3613@item 3614All threads of an inferior, specified with a star wildcard, with or 3615without an inferior qualifier, as in @var{inf}.@code{*} (e.g., 3616@samp{1.*}) or @code{*}. The former refers to all threads of the 3617given inferior, and the latter form without an inferior qualifier 3618refers to all threads of the current inferior. 3619 3620@end enumerate 3621 3622For example, if the current inferior is 1, and inferior 7 has one 3623thread with ID 7.1, the thread list @samp{1 2-3 4.5 6.7-9 7.*} 3624includes threads 1 to 3 of inferior 1, thread 5 of inferior 4, threads 36257 to 9 of inferior 6 and all threads of inferior 7. That is, in 3626expanded qualified form, the same as @samp{1.1 1.2 1.3 4.5 6.7 6.8 6.9 36277.1}. 3628 3629 3630@anchor{global thread numbers} 3631@cindex global thread number 3632@cindex global thread identifier (GDB) 3633In addition to a @emph{per-inferior} number, each thread is also 3634assigned a unique @emph{global} number, also known as @dfn{global 3635thread ID}, a single integer. Unlike the thread number component of 3636the thread ID, no two threads have the same global ID, even when 3637you're debugging multiple inferiors. 3638 3639From @value{GDBN}'s perspective, a process always has at least one 3640thread. In other words, @value{GDBN} assigns a thread number to the 3641program's ``main thread'' even if the program is not multi-threaded. 3642 3643@vindex $_thread@r{, convenience variable} 3644@vindex $_gthread@r{, convenience variable} 3645The debugger convenience variables @samp{$_thread} and 3646@samp{$_gthread} contain, respectively, the per-inferior thread number 3647and the global thread number of the current thread. You may find this 3648useful in writing breakpoint conditional expressions, command scripts, 3649and so forth. The convenience variable @samp{$_inferior_thread_count} 3650contains the number of live threads in the current inferior. 3651@xref{Convenience Vars,, Convenience Variables}, for general 3652information on convenience variables. 3653 3654When running in non-stop mode (@pxref{Non-Stop Mode}), where new 3655threads can be created, and existing threads exit, at any time, 3656@samp{$_inferior_thread_count} could return a different value each 3657time it is evaluated. 3658 3659If @value{GDBN} detects the program is multi-threaded, it augments the 3660usual message about stopping at a breakpoint with the ID and name of 3661the thread that hit the breakpoint. 3662 3663@smallexample 3664Thread 2 "client" hit Breakpoint 1, send_message () at client.c:68 3665@end smallexample 3666 3667Likewise when the program receives a signal: 3668 3669@smallexample 3670Thread 1 "main" received signal SIGINT, Interrupt. 3671@end smallexample 3672 3673@table @code 3674@anchor{info_threads} 3675@kindex info threads 3676@item info threads @r{[}@var{thread-id-list}@r{]} 3677 3678Display information about one or more threads. With no arguments 3679displays information about all threads. You can specify the list of 3680threads that you want to display using the thread ID list syntax 3681(@pxref{thread ID lists}). 3682 3683@value{GDBN} displays for each thread (in this order): 3684 3685@enumerate 3686@item 3687the per-inferior thread number assigned by @value{GDBN} 3688 3689@item 3690the global thread number assigned by @value{GDBN}, if the @samp{-gid} 3691option was specified 3692 3693@item 3694the target system's thread identifier (@var{systag}) 3695 3696@item 3697the thread's name, if one is known. A thread can either be named by 3698the user (see @code{thread name}, below), or, in some cases, by the 3699program itself. 3700 3701@item 3702the current stack frame summary for that thread 3703@end enumerate 3704 3705@noindent 3706An asterisk @samp{*} to the left of the @value{GDBN} thread number 3707indicates the current thread. 3708 3709For example, 3710@end table 3711@c end table here to get a little more width for example 3712 3713@smallexample 3714(@value{GDBP}) info threads 3715 Id Target Id Frame 3716* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) 3717 2 process 35 thread 23 0x34e5 in sigpause () 3718 3 process 35 thread 27 0x34e5 in sigpause () 3719 at threadtest.c:68 3720@end smallexample 3721 3722If you're debugging multiple inferiors, @value{GDBN} displays thread 3723IDs using the qualified @var{inferior-num}.@var{thread-num} format. 3724Otherwise, only @var{thread-num} is shown. 3725 3726If you specify the @samp{-gid} option, @value{GDBN} displays a column 3727indicating each thread's global thread ID: 3728 3729@smallexample 3730(@value{GDBP}) info threads 3731 Id GId Target Id Frame 3732 1.1 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) 3733 1.2 3 process 35 thread 23 0x34e5 in sigpause () 3734 1.3 4 process 35 thread 27 0x34e5 in sigpause () 3735* 2.1 2 process 65 thread 1 main (argc=1, argv=0x7ffffff8) 3736@end smallexample 3737 3738On Solaris, you can display more information about user threads with a 3739Solaris-specific command: 3740 3741@table @code 3742@item maint info sol-threads 3743@kindex maint info sol-threads 3744@cindex thread info (Solaris) 3745Display info on Solaris user threads. 3746@end table 3747 3748@table @code 3749@kindex thread @var{thread-id} 3750@item thread @var{thread-id} 3751Make thread ID @var{thread-id} the current thread. The command 3752argument @var{thread-id} is the @value{GDBN} thread ID, as shown in 3753the first field of the @samp{info threads} display, with or without an 3754inferior qualifier (e.g., @samp{2.1} or @samp{1}). 3755 3756@value{GDBN} responds by displaying the system identifier of the 3757thread you selected, and its current stack frame summary: 3758 3759@smallexample 3760(@value{GDBP}) thread 2 3761[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))] 3762#0 some_function (ignore=0x0) at example.c:8 37638 printf ("hello\n"); 3764@end smallexample 3765 3766@noindent 3767As with the @samp{[New @dots{}]} message, the form of the text after 3768@samp{Switching to} depends on your system's conventions for identifying 3769threads. 3770 3771@anchor{thread apply all} 3772@kindex thread apply 3773@cindex apply command to several threads 3774@item thread apply [@var{thread-id-list} | all [-ascending]] [@var{flag}]@dots{} @var{command} 3775The @code{thread apply} command allows you to apply the named 3776@var{command} to one or more threads. Specify the threads that you 3777want affected using the thread ID list syntax (@pxref{thread ID 3778lists}), or specify @code{all} to apply to all threads. To apply a 3779command to all threads in descending order, type @kbd{thread apply all 3780@var{command}}. To apply a command to all threads in ascending order, 3781type @kbd{thread apply all -ascending @var{command}}. 3782 3783The @var{flag} arguments control what output to produce and how to handle 3784errors raised when applying @var{command} to a thread. @var{flag} 3785must start with a @code{-} directly followed by one letter in 3786@code{qcs}. If several flags are provided, they must be given 3787individually, such as @code{-c -q}. 3788 3789By default, @value{GDBN} displays some thread information before the 3790output produced by @var{command}, and an error raised during the 3791execution of a @var{command} will abort @code{thread apply}. The 3792following flags can be used to fine-tune this behavior: 3793 3794@table @code 3795@item -c 3796The flag @code{-c}, which stands for @samp{continue}, causes any 3797errors in @var{command} to be displayed, and the execution of 3798@code{thread apply} then continues. 3799@item -s 3800The flag @code{-s}, which stands for @samp{silent}, causes any errors 3801or empty output produced by a @var{command} to be silently ignored. 3802That is, the execution continues, but the thread information and errors 3803are not printed. 3804@item -q 3805The flag @code{-q} (@samp{quiet}) disables printing the thread 3806information. 3807@end table 3808 3809Flags @code{-c} and @code{-s} cannot be used together. 3810 3811@kindex taas 3812@cindex apply command to all threads (ignoring errors and empty output) 3813@item taas [@var{option}]@dots{} @var{command} 3814Shortcut for @code{thread apply all -s [@var{option}]@dots{} @var{command}}. 3815Applies @var{command} on all threads, ignoring errors and empty output. 3816 3817The @code{taas} command accepts the same options as the @code{thread 3818apply all} command. @xref{thread apply all}. 3819 3820@kindex tfaas 3821@cindex apply a command to all frames of all threads (ignoring errors and empty output) 3822@item tfaas [@var{option}]@dots{} @var{command} 3823Shortcut for @code{thread apply all -s -- frame apply all -s [@var{option}]@dots{} @var{command}}. 3824Applies @var{command} on all frames of all threads, ignoring errors 3825and empty output. Note that the flag @code{-s} is specified twice: 3826The first @code{-s} ensures that @code{thread apply} only shows the thread 3827information of the threads for which @code{frame apply} produces 3828some output. The second @code{-s} is needed to ensure that @code{frame 3829apply} shows the frame information of a frame only if the 3830@var{command} successfully produced some output. 3831 3832It can for example be used to print a local variable or a function 3833argument without knowing the thread or frame where this variable or argument 3834is, using: 3835@smallexample 3836(@value{GDBP}) tfaas p some_local_var_i_do_not_remember_where_it_is 3837@end smallexample 3838 3839The @code{tfaas} command accepts the same options as the @code{frame 3840apply} command. @xref{Frame Apply,,frame apply}. 3841 3842@kindex thread name 3843@cindex name a thread 3844@item thread name [@var{name}] 3845This command assigns a name to the current thread. If no argument is 3846given, any existing user-specified name is removed. The thread name 3847appears in the @samp{info threads} display. 3848 3849On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to 3850determine the name of the thread as given by the OS. On these 3851systems, a name specified with @samp{thread name} will override the 3852system-give name, and removing the user-specified name will cause 3853@value{GDBN} to once again display the system-specified name. 3854 3855@kindex thread find 3856@cindex search for a thread 3857@item thread find [@var{regexp}] 3858Search for and display thread ids whose name or @var{systag} 3859matches the supplied regular expression. 3860 3861As well as being the complement to the @samp{thread name} command, 3862this command also allows you to identify a thread by its target 3863@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag} 3864is the LWP id. 3865 3866@smallexample 3867(@value{GDBN}) thread find 26688 3868Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)' 3869(@value{GDBN}) info thread 4 3870 Id Target Id Frame 3871 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select () 3872@end smallexample 3873 3874@kindex set print thread-events 3875@cindex print messages on thread start and exit 3876@item set print thread-events 3877@itemx set print thread-events on 3878@itemx set print thread-events off 3879The @code{set print thread-events} command allows you to enable or 3880disable printing of messages when @value{GDBN} notices that new threads have 3881started or that threads have exited. By default, these messages will 3882be printed if detection of these events is supported by the target. 3883Note that these messages cannot be disabled on all targets. 3884 3885@kindex show print thread-events 3886@item show print thread-events 3887Show whether messages will be printed when @value{GDBN} detects that threads 3888have started and exited. 3889@end table 3890 3891@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for 3892more information about how @value{GDBN} behaves when you stop and start 3893programs with multiple threads. 3894 3895@xref{Set Watchpoints,,Setting Watchpoints}, for information about 3896watchpoints in programs with multiple threads. 3897 3898@anchor{set libthread-db-search-path} 3899@table @code 3900@kindex set libthread-db-search-path 3901@cindex search path for @code{libthread_db} 3902@item set libthread-db-search-path @r{[}@var{path}@r{]} 3903If this variable is set, @var{path} is a colon-separated list of 3904directories @value{GDBN} will use to search for @code{libthread_db}. 3905If you omit @var{path}, @samp{libthread-db-search-path} will be reset to 3906its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems). 3907Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH} 3908macro. 3909 3910On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper'' 3911@code{libthread_db} library to obtain information about threads in the 3912inferior process. @value{GDBN} will use @samp{libthread-db-search-path} 3913to find @code{libthread_db}. @value{GDBN} also consults first if inferior 3914specific thread debugging library loading is enabled 3915by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}). 3916 3917A special entry @samp{$sdir} for @samp{libthread-db-search-path} 3918refers to the default system directories that are 3919normally searched for loading shared libraries. The @samp{$sdir} entry 3920is the only kind not needing to be enabled by @samp{set auto-load libthread-db} 3921(@pxref{libthread_db.so.1 file}). 3922 3923A special entry @samp{$pdir} for @samp{libthread-db-search-path} 3924refers to the directory from which @code{libpthread} 3925was loaded in the inferior process. 3926 3927For any @code{libthread_db} library @value{GDBN} finds in above directories, 3928@value{GDBN} attempts to initialize it with the current inferior process. 3929If this initialization fails (which could happen because of a version 3930mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN} 3931will unload @code{libthread_db}, and continue with the next directory. 3932If none of @code{libthread_db} libraries initialize successfully, 3933@value{GDBN} will issue a warning and thread debugging will be disabled. 3934 3935Setting @code{libthread-db-search-path} is currently implemented 3936only on some platforms. 3937 3938@kindex show libthread-db-search-path 3939@item show libthread-db-search-path 3940Display current libthread_db search path. 3941 3942@kindex set debug libthread-db 3943@kindex show debug libthread-db 3944@cindex debugging @code{libthread_db} 3945@item set debug libthread-db 3946@itemx show debug libthread-db 3947Turns on or off display of @code{libthread_db}-related events. 3948Use @code{1} to enable, @code{0} to disable. 3949 3950@kindex set debug threads 3951@kindex show debug threads 3952@cindex debugging @code{threads} 3953@item set debug threads @r{[}on@r{|}off@r{]} 3954@itemx show debug threads 3955When @samp{on} @value{GDBN} will print additional messages when 3956threads are created and deleted. 3957@end table 3958 3959@node Forks 3960@section Debugging Forks 3961 3962@cindex fork, debugging programs which call 3963@cindex multiple processes 3964@cindex processes, multiple 3965On most systems, @value{GDBN} has no special support for debugging 3966programs which create additional processes using the @code{fork} 3967function. When a program forks, @value{GDBN} will continue to debug the 3968parent process and the child process will run unimpeded. If you have 3969set a breakpoint in any code which the child then executes, the child 3970will get a @code{SIGTRAP} signal which (unless it catches the signal) 3971will cause it to terminate. 3972 3973However, if you want to debug the child process there is a workaround 3974which isn't too painful. Put a call to @code{sleep} in the code which 3975the child process executes after the fork. It may be useful to sleep 3976only if a certain environment variable is set, or a certain file exists, 3977so that the delay need not occur when you don't want to run @value{GDBN} 3978on the child. While the child is sleeping, use the @code{ps} program to 3979get its process ID. Then tell @value{GDBN} (a new invocation of 3980@value{GDBN} if you are also debugging the parent process) to attach to 3981the child process (@pxref{Attach}). From that point on you can debug 3982the child process just like any other process which you attached to. 3983 3984On some systems, @value{GDBN} provides support for debugging programs 3985that create additional processes using the @code{fork} or @code{vfork} 3986functions. On @sc{gnu}/Linux platforms, this feature is supported 3987with kernel version 2.5.46 and later. 3988 3989The fork debugging commands are supported in native mode and when 3990connected to @code{gdbserver} in either @code{target remote} mode or 3991@code{target extended-remote} mode. 3992 3993By default, when a program forks, @value{GDBN} will continue to debug 3994the parent process and the child process will run unimpeded. 3995 3996If you want to follow the child process instead of the parent process, 3997use the command @w{@code{set follow-fork-mode}}. 3998 3999@table @code 4000@kindex set follow-fork-mode 4001@item set follow-fork-mode @var{mode} 4002Set the debugger response to a program call of @code{fork} or 4003@code{vfork}. A call to @code{fork} or @code{vfork} creates a new 4004process. The @var{mode} argument can be: 4005 4006@table @code 4007@item parent 4008The original process is debugged after a fork. The child process runs 4009unimpeded. This is the default. 4010 4011@item child 4012The new process is debugged after a fork. The parent process runs 4013unimpeded. 4014 4015@end table 4016 4017@kindex show follow-fork-mode 4018@item show follow-fork-mode 4019Display the current debugger response to a @code{fork} or @code{vfork} call. 4020@end table 4021 4022@cindex debugging multiple processes 4023On Linux, if you want to debug both the parent and child processes, use the 4024command @w{@code{set detach-on-fork}}. 4025 4026@table @code 4027@kindex set detach-on-fork 4028@item set detach-on-fork @var{mode} 4029Tells gdb whether to detach one of the processes after a fork, or 4030retain debugger control over them both. 4031 4032@table @code 4033@item on 4034The child process (or parent process, depending on the value of 4035@code{follow-fork-mode}) will be detached and allowed to run 4036independently. This is the default. 4037 4038@item off 4039Both processes will be held under the control of @value{GDBN}. 4040One process (child or parent, depending on the value of 4041@code{follow-fork-mode}) is debugged as usual, while the other 4042is held suspended. 4043 4044@end table 4045 4046@kindex show detach-on-fork 4047@item show detach-on-fork 4048Show whether detach-on-fork mode is on/off. 4049@end table 4050 4051If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN} 4052will retain control of all forked processes (including nested forks). 4053You can list the forked processes under the control of @value{GDBN} by 4054using the @w{@code{info inferiors}} command, and switch from one fork 4055to another by using the @code{inferior} command (@pxref{Inferiors Connections and 4056Programs, ,Debugging Multiple Inferiors Connections and Programs}). 4057 4058To quit debugging one of the forked processes, you can either detach 4059from it by using the @w{@code{detach inferiors}} command (allowing it 4060to run independently), or kill it using the @w{@code{kill inferiors}} 4061command. @xref{Inferiors Connections and Programs, ,Debugging 4062Multiple Inferiors Connections and Programs}. 4063 4064If you ask to debug a child process and a @code{vfork} is followed by an 4065@code{exec}, @value{GDBN} executes the new target up to the first 4066breakpoint in the new target. If you have a breakpoint set on 4067@code{main} in your original program, the breakpoint will also be set on 4068the child process's @code{main}. 4069 4070On some systems, when a child process is spawned by @code{vfork}, you 4071cannot debug the child or parent until an @code{exec} call completes. 4072 4073If you issue a @code{run} command to @value{GDBN} after an @code{exec} 4074call executes, the new target restarts. To restart the parent 4075process, use the @code{file} command with the parent executable name 4076as its argument. By default, after an @code{exec} call executes, 4077@value{GDBN} discards the symbols of the previous executable image. 4078You can change this behaviour with the @w{@code{set follow-exec-mode}} 4079command. 4080 4081@table @code 4082@kindex set follow-exec-mode 4083@item set follow-exec-mode @var{mode} 4084 4085Set debugger response to a program call of @code{exec}. An 4086@code{exec} call replaces the program image of a process. 4087 4088@code{follow-exec-mode} can be: 4089 4090@table @code 4091@item new 4092@value{GDBN} creates a new inferior and rebinds the process to this 4093new inferior. The program the process was running before the 4094@code{exec} call can be restarted afterwards by restarting the 4095original inferior. 4096 4097For example: 4098 4099@smallexample 4100(@value{GDBP}) info inferiors 4101(gdb) info inferior 4102 Id Description Executable 4103* 1 <null> prog1 4104(@value{GDBP}) run 4105process 12020 is executing new program: prog2 4106Program exited normally. 4107(@value{GDBP}) info inferiors 4108 Id Description Executable 4109 1 <null> prog1 4110* 2 <null> prog2 4111@end smallexample 4112 4113@item same 4114@value{GDBN} keeps the process bound to the same inferior. The new 4115executable image replaces the previous executable loaded in the 4116inferior. Restarting the inferior after the @code{exec} call, with 4117e.g., the @code{run} command, restarts the executable the process was 4118running after the @code{exec} call. This is the default mode. 4119 4120For example: 4121 4122@smallexample 4123(@value{GDBP}) info inferiors 4124 Id Description Executable 4125* 1 <null> prog1 4126(@value{GDBP}) run 4127process 12020 is executing new program: prog2 4128Program exited normally. 4129(@value{GDBP}) info inferiors 4130 Id Description Executable 4131* 1 <null> prog2 4132@end smallexample 4133 4134@end table 4135@end table 4136 4137@code{follow-exec-mode} is supported in native mode and 4138@code{target extended-remote} mode. 4139 4140You can use the @code{catch} command to make @value{GDBN} stop whenever 4141a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set 4142Catchpoints, ,Setting Catchpoints}. 4143 4144@node Checkpoint/Restart 4145@section Setting a @emph{Bookmark} to Return to Later 4146 4147@cindex checkpoint 4148@cindex restart 4149@cindex bookmark 4150@cindex snapshot of a process 4151@cindex rewind program state 4152 4153On certain operating systems@footnote{Currently, only 4154@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a 4155program's state, called a @dfn{checkpoint}, and come back to it 4156later. 4157 4158Returning to a checkpoint effectively undoes everything that has 4159happened in the program since the @code{checkpoint} was saved. This 4160includes changes in memory, registers, and even (within some limits) 4161system state. Effectively, it is like going back in time to the 4162moment when the checkpoint was saved. 4163 4164Thus, if you're stepping thru a program and you think you're 4165getting close to the point where things go wrong, you can save 4166a checkpoint. Then, if you accidentally go too far and miss 4167the critical statement, instead of having to restart your program 4168from the beginning, you can just go back to the checkpoint and 4169start again from there. 4170 4171This can be especially useful if it takes a lot of time or 4172steps to reach the point where you think the bug occurs. 4173 4174To use the @code{checkpoint}/@code{restart} method of debugging: 4175 4176@table @code 4177@kindex checkpoint 4178@item checkpoint 4179Save a snapshot of the debugged program's current execution state. 4180The @code{checkpoint} command takes no arguments, but each checkpoint 4181is assigned a small integer id, similar to a breakpoint id. 4182 4183@kindex info checkpoints 4184@item info checkpoints 4185List the checkpoints that have been saved in the current debugging 4186session. For each checkpoint, the following information will be 4187listed: 4188 4189@table @code 4190@item Checkpoint ID 4191@item Process ID 4192@item Code Address 4193@item Source line, or label 4194@end table 4195 4196@kindex restart @var{checkpoint-id} 4197@item restart @var{checkpoint-id} 4198Restore the program state that was saved as checkpoint number 4199@var{checkpoint-id}. All program variables, registers, stack frames 4200etc.@: will be returned to the values that they had when the checkpoint 4201was saved. In essence, gdb will ``wind back the clock'' to the point 4202in time when the checkpoint was saved. 4203 4204Note that breakpoints, @value{GDBN} variables, command history etc. 4205are not affected by restoring a checkpoint. In general, a checkpoint 4206only restores things that reside in the program being debugged, not in 4207the debugger. 4208 4209@kindex delete checkpoint @var{checkpoint-id} 4210@item delete checkpoint @var{checkpoint-id} 4211Delete the previously-saved checkpoint identified by @var{checkpoint-id}. 4212 4213@end table 4214 4215Returning to a previously saved checkpoint will restore the user state 4216of the program being debugged, plus a significant subset of the system 4217(OS) state, including file pointers. It won't ``un-write'' data from 4218a file, but it will rewind the file pointer to the previous location, 4219so that the previously written data can be overwritten. For files 4220opened in read mode, the pointer will also be restored so that the 4221previously read data can be read again. 4222 4223Of course, characters that have been sent to a printer (or other 4224external device) cannot be ``snatched back'', and characters received 4225from eg.@: a serial device can be removed from internal program buffers, 4226but they cannot be ``pushed back'' into the serial pipeline, ready to 4227be received again. Similarly, the actual contents of files that have 4228been changed cannot be restored (at this time). 4229 4230However, within those constraints, you actually can ``rewind'' your 4231program to a previously saved point in time, and begin debugging it 4232again --- and you can change the course of events so as to debug a 4233different execution path this time. 4234 4235@cindex checkpoints and process id 4236Finally, there is one bit of internal program state that will be 4237different when you return to a checkpoint --- the program's process 4238id. Each checkpoint will have a unique process id (or @var{pid}), 4239and each will be different from the program's original @var{pid}. 4240If your program has saved a local copy of its process id, this could 4241potentially pose a problem. 4242 4243@subsection A Non-obvious Benefit of Using Checkpoints 4244 4245On some systems such as @sc{gnu}/Linux, address space randomization 4246is performed on new processes for security reasons. This makes it 4247difficult or impossible to set a breakpoint, or watchpoint, on an 4248absolute address if you have to restart the program, since the 4249absolute location of a symbol will change from one execution to the 4250next. 4251 4252A checkpoint, however, is an @emph{identical} copy of a process. 4253Therefore if you create a checkpoint at (eg.@:) the start of main, 4254and simply return to that checkpoint instead of restarting the 4255process, you can avoid the effects of address randomization and 4256your symbols will all stay in the same place. 4257 4258@node Stopping 4259@chapter Stopping and Continuing 4260 4261The principal purposes of using a debugger are so that you can stop your 4262program before it terminates; or so that, if your program runs into 4263trouble, you can investigate and find out why. 4264 4265Inside @value{GDBN}, your program may stop for any of several reasons, 4266such as a signal, a breakpoint, or reaching a new line after a 4267@value{GDBN} command such as @code{step}. You may then examine and 4268change variables, set new breakpoints or remove old ones, and then 4269continue execution. Usually, the messages shown by @value{GDBN} provide 4270ample explanation of the status of your program---but you can also 4271explicitly request this information at any time. 4272 4273@table @code 4274@kindex info program 4275@item info program 4276Display information about the status of your program: whether it is 4277running or not, what process it is, and why it stopped. 4278@end table 4279 4280@menu 4281* Breakpoints:: Breakpoints, watchpoints, and catchpoints 4282* Continuing and Stepping:: Resuming execution 4283* Skipping Over Functions and Files:: 4284 Skipping over functions and files 4285* Signals:: Signals 4286* Thread Stops:: Stopping and starting multi-thread programs 4287@end menu 4288 4289@node Breakpoints 4290@section Breakpoints, Watchpoints, and Catchpoints 4291 4292@cindex breakpoints 4293A @dfn{breakpoint} makes your program stop whenever a certain point in 4294the program is reached. For each breakpoint, you can add conditions to 4295control in finer detail whether your program stops. You can set 4296breakpoints with the @code{break} command and its variants (@pxref{Set 4297Breaks, ,Setting Breakpoints}), to specify the place where your program 4298should stop by line number, function name or exact address in the 4299program. 4300 4301On some systems, you can set breakpoints in shared libraries before 4302the executable is run. 4303 4304@cindex watchpoints 4305@cindex data breakpoints 4306@cindex memory tracing 4307@cindex breakpoint on memory address 4308@cindex breakpoint on variable modification 4309A @dfn{watchpoint} is a special breakpoint that stops your program 4310when the value of an expression changes. The expression may be a value 4311of a variable, or it could involve values of one or more variables 4312combined by operators, such as @samp{a + b}. This is sometimes called 4313@dfn{data breakpoints}. You must use a different command to set 4314watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside 4315from that, you can manage a watchpoint like any other breakpoint: you 4316enable, disable, and delete both breakpoints and watchpoints using the 4317same commands. 4318 4319You can arrange to have values from your program displayed automatically 4320whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,, 4321Automatic Display}. 4322 4323@cindex catchpoints 4324@cindex breakpoint on events 4325A @dfn{catchpoint} is another special breakpoint that stops your program 4326when a certain kind of event occurs, such as the throwing of a C@t{++} 4327exception or the loading of a library. As with watchpoints, you use a 4328different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting 4329Catchpoints}), but aside from that, you can manage a catchpoint like any 4330other breakpoint. (To stop when your program receives a signal, use the 4331@code{handle} command; see @ref{Signals, ,Signals}.) 4332 4333@cindex breakpoint numbers 4334@cindex numbers for breakpoints 4335@value{GDBN} assigns a number to each breakpoint, watchpoint, or 4336catchpoint when you create it; these numbers are successive integers 4337starting with one. In many of the commands for controlling various 4338features of breakpoints you use the breakpoint number to say which 4339breakpoint you want to change. Each breakpoint may be @dfn{enabled} or 4340@dfn{disabled}; if disabled, it has no effect on your program until you 4341enable it again. 4342 4343@cindex breakpoint ranges 4344@cindex breakpoint lists 4345@cindex ranges of breakpoints 4346@cindex lists of breakpoints 4347Some @value{GDBN} commands accept a space-separated list of breakpoints 4348on which to operate. A list element can be either a single breakpoint number, 4349like @samp{5}, or a range of such numbers, like @samp{5-7}. 4350When a breakpoint list is given to a command, all breakpoints in that list 4351are operated on. 4352 4353@menu 4354* Set Breaks:: Setting breakpoints 4355* Set Watchpoints:: Setting watchpoints 4356* Set Catchpoints:: Setting catchpoints 4357* Delete Breaks:: Deleting breakpoints 4358* Disabling:: Disabling breakpoints 4359* Conditions:: Break conditions 4360* Break Commands:: Breakpoint command lists 4361* Dynamic Printf:: Dynamic printf 4362* Save Breakpoints:: How to save breakpoints in a file 4363* Static Probe Points:: Listing static probe points 4364* Error in Breakpoints:: ``Cannot insert breakpoints'' 4365* Breakpoint-related Warnings:: ``Breakpoint address adjusted...'' 4366@end menu 4367 4368@node Set Breaks 4369@subsection Setting Breakpoints 4370 4371@c FIXME LMB what does GDB do if no code on line of breakpt? 4372@c consider in particular declaration with/without initialization. 4373@c 4374@c FIXME 2 is there stuff on this already? break at fun start, already init? 4375 4376@kindex break 4377@kindex b @r{(@code{break})} 4378@vindex $bpnum@r{, convenience variable} 4379@cindex latest breakpoint 4380Breakpoints are set with the @code{break} command (abbreviated 4381@code{b}). The debugger convenience variable @samp{$bpnum} records the 4382number of the breakpoint you've set most recently: 4383@smallexample 4384(gdb) b main 4385Breakpoint 1 at 0x11c6: file zeoes.c, line 24. 4386(gdb) p $bpnum 4387$1 = 1 4388@end smallexample 4389 4390A breakpoint may be mapped to multiple code locations for example with 4391inlined functions, Ada generics, C@t{++} templates or overloaded function names. 4392@value{GDBN} then indicates the number of code locations in the breakpoint 4393command output: 4394@smallexample 4395(gdb) b some_func 4396Breakpoint 2 at 0x1179: some_func. (3 locations) 4397(gdb) p $bpnum 4398$2 = 2 4399(gdb) 4400@end smallexample 4401 4402@vindex $_hit_bpnum@r{, convenience variable} 4403@vindex $_hit_locno@r{, convenience variable} 4404When your program stops on a breakpoint, the convenience variables 4405@samp{$_hit_bpnum} and @samp{$_hit_locno} are respectively set to the number of 4406the encountered breakpoint and the number of the breakpoint's code location: 4407@smallexample 4408Thread 1 "zeoes" hit Breakpoint 2.1, some_func () at zeoes.c:8 44098 printf("some func\n"); 4410(gdb) p $_hit_bpnum 4411$5 = 2 4412(gdb) p $_hit_locno 4413$6 = 1 4414(gdb) 4415@end smallexample 4416 4417Note that @samp{$_hit_bpnum} and @samp{$bpnum} are not equivalent: 4418@samp{$_hit_bpnum} is set to the breakpoint number @b{last hit}, while 4419@samp{$bpnum} is set to the breakpoint number @b{last set}. 4420 4421 4422If the encountered breakpoint has only one code location, @samp{$_hit_locno} 4423is set to 1: 4424@smallexample 4425Breakpoint 1, main (argc=1, argv=0x7fffffffe018) at zeoes.c:24 442624 if (argc > 1) 4427(gdb) p $_hit_bpnum 4428$3 = 1 4429(gdb) p $_hit_locno 4430$4 = 1 4431(gdb) 4432@end smallexample 4433 4434The @samp{$_hit_bpnum} and @samp{$_hit_locno} variables can typically be used 4435in a breakpoint command list. 4436(@pxref{Break Commands, ,Breakpoint Command Lists}). For example, as 4437part of the breakpoint command list, you can disable completely the 4438encountered breakpoint using @kbd{disable $_hit_bpnum} or disable the 4439specific encountered breakpoint location using 4440@kbd{disable $_hit_bpnum.$_hit_locno}. 4441If a breakpoint has only one location, @samp{$_hit_locno} is set to 1 4442and the commands @kbd{disable $_hit_bpnum} and 4443@kbd{disable $_hit_bpnum.$_hit_locno} both disable the breakpoint. 4444 4445You can also define aliases to easily disable the last hit location or 4446last hit breakpoint: 4447@smallexample 4448(gdb) alias lld = disable $_hit_bpnum.$_hit_locno 4449(gdb) alias lbd = disable $_hit_bpnum 4450@end smallexample 4451 4452@table @code 4453@item break @var{locspec} 4454Set a breakpoint at all the code locations in your program that result 4455from resolving the given @var{locspec}. @var{locspec} can specify a 4456function name, a line number, an address of an instruction, and more. 4457@xref{Location Specifications}, for the various forms of 4458@var{locspec}. The breakpoint will stop your program just before it 4459executes the instruction at the address of any of the breakpoint's 4460code locations. 4461 4462When using source languages that permit overloading of symbols, such 4463as C@t{++}, a function name may refer to more than one symbol, and 4464thus more than one place to break. @xref{Ambiguous 4465Expressions,,Ambiguous Expressions}, for a discussion of that 4466situation. 4467 4468It is also possible to insert a breakpoint that will stop the program 4469only if a specific thread (@pxref{Thread-Specific Breakpoints}) 4470or a specific task (@pxref{Ada Tasks}) hits that breakpoint. 4471 4472@item break 4473When called without any arguments, @code{break} sets a breakpoint at 4474the next instruction to be executed in the selected stack frame 4475(@pxref{Stack, ,Examining the Stack}). In any selected frame but the 4476innermost, this makes your program stop as soon as control 4477returns to that frame. This is similar to the effect of a 4478@code{finish} command in the frame inside the selected frame---except 4479that @code{finish} does not leave an active breakpoint. If you use 4480@code{break} without an argument in the innermost frame, @value{GDBN} stops 4481the next time it reaches the current location; this may be useful 4482inside loops. 4483 4484@value{GDBN} normally ignores breakpoints when it resumes execution, until at 4485least one instruction has been executed. If it did not do this, you 4486would be unable to proceed past a breakpoint without first disabling the 4487breakpoint. This rule applies whether or not the breakpoint already 4488existed when your program stopped. 4489 4490@item break @dots{} if @var{cond} 4491Set a breakpoint with condition @var{cond}; evaluate the expression 4492@var{cond} each time the breakpoint is reached, and stop only if the 4493value is nonzero---that is, if @var{cond} evaluates as true. 4494@samp{@dots{}} stands for one of the possible arguments described 4495above (or no argument) specifying where to break. @xref{Conditions, 4496,Break Conditions}, for more information on breakpoint conditions. 4497 4498The breakpoint may be mapped to multiple locations. If the breakpoint 4499condition @var{cond} is invalid at some but not all of the locations, 4500the locations for which the condition is invalid are disabled. For 4501example, @value{GDBN} reports below that two of the three locations 4502are disabled. 4503 4504@smallexample 4505(@value{GDBP}) break func if a == 10 4506warning: failed to validate condition at location 0x11ce, disabling: 4507 No symbol "a" in current context. 4508warning: failed to validate condition at location 0x11b6, disabling: 4509 No symbol "a" in current context. 4510Breakpoint 1 at 0x11b6: func. (3 locations) 4511@end smallexample 4512 4513Locations that are disabled because of the condition are denoted by an 4514uppercase @code{N} in the output of the @code{info breakpoints} 4515command: 4516 4517@smallexample 4518(@value{GDBP}) info breakpoints 4519Num Type Disp Enb Address What 45201 breakpoint keep y <MULTIPLE> 4521 stop only if a == 10 45221.1 N* 0x00000000000011b6 in ... 45231.2 y 0x00000000000011c2 in ... 45241.3 N* 0x00000000000011ce in ... 4525(*): Breakpoint condition is invalid at this location. 4526@end smallexample 4527 4528If the breakpoint condition @var{cond} is invalid in the context of 4529@emph{all} the locations of the breakpoint, @value{GDBN} refuses to 4530define the breakpoint. For example, if variable @code{foo} is an 4531undefined variable: 4532 4533@smallexample 4534(@value{GDBP}) break func if foo 4535No symbol "foo" in current context. 4536@end smallexample 4537 4538@item break @dots{} -force-condition if @var{cond} 4539There may be cases where the condition @var{cond} is invalid at all 4540the current locations, but the user knows that it will be valid at a 4541future location; for example, because of a library load. In such 4542cases, by using the @code{-force-condition} keyword before @samp{if}, 4543@value{GDBN} can be forced to define the breakpoint with the given 4544condition expression instead of refusing it. 4545 4546@smallexample 4547(@value{GDBP}) break func -force-condition if foo 4548warning: failed to validate condition at location 1, disabling: 4549 No symbol "foo" in current context. 4550warning: failed to validate condition at location 2, disabling: 4551 No symbol "foo" in current context. 4552warning: failed to validate condition at location 3, disabling: 4553 No symbol "foo" in current context. 4554Breakpoint 1 at 0x1158: test.c:18. (3 locations) 4555@end smallexample 4556 4557This causes all the present locations where the breakpoint would 4558otherwise be inserted, to be disabled, as seen in the example above. 4559However, if there exist locations at which the condition is valid, the 4560@code{-force-condition} keyword has no effect. 4561 4562@kindex tbreak 4563@item tbreak @var{args} 4564Set a breakpoint enabled only for one stop. The @var{args} are the 4565same as for the @code{break} command, and the breakpoint is set in the same 4566way, but the breakpoint is automatically deleted after the first time your 4567program stops there. @xref{Disabling, ,Disabling Breakpoints}. 4568 4569@kindex hbreak 4570@cindex hardware breakpoints 4571@item hbreak @var{args} 4572Set a hardware-assisted breakpoint. The @var{args} are the same as for the 4573@code{break} command and the breakpoint is set in the same way, but the 4574breakpoint requires hardware support and some target hardware may not 4575have this support. The main purpose of this is EPROM/ROM code 4576debugging, so you can set a breakpoint at an instruction without 4577changing the instruction. This can be used with the new trap-generation 4578provided by SPARClite DSU and most x86-based targets. These targets 4579will generate traps when a program accesses some data or instruction 4580address that is assigned to the debug registers. However the hardware 4581breakpoint registers can take a limited number of breakpoints. For 4582example, on the DSU, only two data breakpoints can be set at a time, and 4583@value{GDBN} will reject this command if more than two are used. Delete 4584or disable unused hardware breakpoints before setting new ones 4585(@pxref{Disabling, ,Disabling Breakpoints}). 4586@xref{Conditions, ,Break Conditions}. 4587For remote targets, you can restrict the number of hardware 4588breakpoints @value{GDBN} will use, see @ref{set remote 4589hardware-breakpoint-limit}. 4590 4591@kindex thbreak 4592@item thbreak @var{args} 4593Set a hardware-assisted breakpoint enabled only for one stop. The @var{args} 4594are the same as for the @code{hbreak} command and the breakpoint is set in 4595the same way. However, like the @code{tbreak} command, 4596the breakpoint is automatically deleted after the 4597first time your program stops there. Also, like the @code{hbreak} 4598command, the breakpoint requires hardware support and some target hardware 4599may not have this support. @xref{Disabling, ,Disabling Breakpoints}. 4600See also @ref{Conditions, ,Break Conditions}. 4601 4602@kindex rbreak 4603@cindex regular expression 4604@cindex breakpoints at functions matching a regexp 4605@cindex set breakpoints in many functions 4606@item rbreak @var{regex} 4607Set breakpoints on all functions matching the regular expression 4608@var{regex}. This command sets an unconditional breakpoint on all 4609matches, printing a list of all breakpoints it set. Once these 4610breakpoints are set, they are treated just like the breakpoints set with 4611the @code{break} command. You can delete them, disable them, or make 4612them conditional the same way as any other breakpoint. 4613 4614In programs using different languages, @value{GDBN} chooses the syntax 4615to print the list of all breakpoints it sets according to the 4616@samp{set language} value: using @samp{set language auto} 4617(see @ref{Automatically, ,Set Language Automatically}) means to use the 4618language of the breakpoint's function, other values mean to use 4619the manually specified language (see @ref{Manually, ,Set Language Manually}). 4620 4621The syntax of the regular expression is the standard one used with tools 4622like @file{grep}. Note that this is different from the syntax used by 4623shells, so for instance @code{foo*} matches all functions that include 4624an @code{fo} followed by zero or more @code{o}s. There is an implicit 4625@code{.*} leading and trailing the regular expression you supply, so to 4626match only functions that begin with @code{foo}, use @code{^foo}. 4627 4628@cindex non-member C@t{++} functions, set breakpoint in 4629When debugging C@t{++} programs, @code{rbreak} is useful for setting 4630breakpoints on overloaded functions that are not members of any special 4631classes. 4632 4633@cindex set breakpoints on all functions 4634The @code{rbreak} command can be used to set breakpoints in 4635@strong{all} the functions in a program, like this: 4636 4637@smallexample 4638(@value{GDBP}) rbreak . 4639@end smallexample 4640 4641@item rbreak @var{file}:@var{regex} 4642If @code{rbreak} is called with a filename qualification, it limits 4643the search for functions matching the given regular expression to the 4644specified @var{file}. This can be used, for example, to set breakpoints on 4645every function in a given file: 4646 4647@smallexample 4648(@value{GDBP}) rbreak file.c:. 4649@end smallexample 4650 4651The colon separating the filename qualifier from the regex may 4652optionally be surrounded by spaces. 4653 4654@kindex info breakpoints 4655@cindex @code{$_} and @code{info breakpoints} 4656@item info breakpoints @r{[}@var{list}@dots{}@r{]} 4657@itemx info break @r{[}@var{list}@dots{}@r{]} 4658Print a table of all breakpoints, watchpoints, and catchpoints set and 4659not deleted. Optional argument @var{n} means print information only 4660about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)). 4661For each breakpoint, following columns are printed: 4662 4663@table @emph 4664@item Breakpoint Numbers 4665@item Type 4666Breakpoint, watchpoint, or catchpoint. 4667@item Disposition 4668Whether the breakpoint is marked to be disabled or deleted when hit. 4669@item Enabled or Disabled 4670Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints 4671that are not enabled. 4672@item Address 4673Where the breakpoint is in your program, as a memory address. For a 4674pending breakpoint whose address is not yet known, this field will 4675contain @samp{<PENDING>}. Such breakpoint won't fire until a shared 4676library that has the symbol or line referred by breakpoint is loaded. 4677See below for details. A breakpoint with several locations will 4678have @samp{<MULTIPLE>} in this field---see below for details. 4679@item What 4680Where the breakpoint is in the source for your program, as a file and 4681line number. For a pending breakpoint, the original string passed to 4682the breakpoint command will be listed as it cannot be resolved until 4683the appropriate shared library is loaded in the future. 4684@end table 4685 4686@noindent 4687If a breakpoint is conditional, there are two evaluation modes: ``host'' and 4688``target''. If mode is ``host'', breakpoint condition evaluation is done by 4689@value{GDBN} on the host's side. If it is ``target'', then the condition 4690is evaluated by the target. The @code{info break} command shows 4691the condition on the line following the affected breakpoint, together with 4692its condition evaluation mode in between parentheses. 4693 4694Breakpoint commands, if any, are listed after that. A pending breakpoint is 4695allowed to have a condition specified for it. The condition is not parsed for 4696validity until a shared library is loaded that allows the pending 4697breakpoint to resolve to a valid location. 4698 4699@noindent 4700@code{info break} with a breakpoint 4701number @var{n} as argument lists only that breakpoint. The 4702convenience variable @code{$_} and the default examining-address for 4703the @code{x} command are set to the address of the last breakpoint 4704listed (@pxref{Memory, ,Examining Memory}). 4705 4706@noindent 4707@code{info break} displays a count of the number of times the breakpoint 4708has been hit. This is especially useful in conjunction with the 4709@code{ignore} command. You can ignore a large number of breakpoint 4710hits, look at the breakpoint info to see how many times the breakpoint 4711was hit, and then run again, ignoring one less than that number. This 4712will get you quickly to the last hit of that breakpoint. 4713 4714@noindent 4715For a breakpoints with an enable count (xref) greater than 1, 4716@code{info break} also displays that count. 4717 4718@end table 4719 4720@value{GDBN} allows you to set any number of breakpoints at the same place in 4721your program. There is nothing silly or meaningless about this. When 4722the breakpoints are conditional, this is even useful 4723(@pxref{Conditions, ,Break Conditions}). 4724 4725@cindex multiple locations, breakpoints 4726@cindex breakpoints, multiple locations 4727It is possible that a single logical breakpoint is set at several code 4728locations in your program. @xref{Location Specifications}, for 4729examples. 4730 4731A breakpoint with multiple code locations is displayed in the 4732breakpoint table using several rows---one header row, followed by one 4733row for each code location. The header row has @samp{<MULTIPLE>} in 4734the address column. Each code location row contains the actual 4735address, source file, source line and function of its code location. 4736The number column for a code location is of the form 4737@var{breakpoint-number}.@var{location-number}. 4738 4739For example: 4740 4741@smallexample 4742Num Type Disp Enb Address What 47431 breakpoint keep y <MULTIPLE> 4744 stop only if i==1 4745 breakpoint already hit 1 time 47461.1 y 0x080486a2 in void foo<int>() at t.cc:8 47471.2 y 0x080486ca in void foo<double>() at t.cc:8 4748@end smallexample 4749 4750You cannot delete the individual locations from a breakpoint. However, 4751each location can be individually enabled or disabled by passing 4752@var{breakpoint-number}.@var{location-number} as argument to the 4753@code{enable} and @code{disable} commands. It's also possible to 4754@code{enable} and @code{disable} a range of @var{location-number} 4755locations using a @var{breakpoint-number} and two @var{location-number}s, 4756in increasing order, separated by a hyphen, like 4757@kbd{@var{breakpoint-number}.@var{location-number1}-@var{location-number2}}, 4758in which case @value{GDBN} acts on all the locations in the range (inclusive). 4759Disabling or enabling the parent breakpoint (@pxref{Disabling}) affects 4760all of the locations that belong to that breakpoint. 4761 4762Locations that are enabled while their parent breakpoint is disabled 4763won't trigger a break, and are denoted by @code{y-} in the @code{Enb} 4764column. For example: 4765 4766@smallexample 4767(@value{GDBP}) info breakpoints 4768Num Type Disp Enb Address What 47691 breakpoint keep n <MULTIPLE> 47701.1 y- 0x00000000000011b6 in ... 47711.2 y- 0x00000000000011c2 in ... 47721.3 n 0x00000000000011ce in ... 4773@end smallexample 4774 4775@cindex pending breakpoints 4776It's quite common to have a breakpoint inside a shared library. 4777Shared libraries can be loaded and unloaded explicitly, 4778and possibly repeatedly, as the program is executed. To support 4779this use case, @value{GDBN} updates breakpoint locations whenever 4780any shared library is loaded or unloaded. Typically, you would 4781set a breakpoint in a shared library at the beginning of your 4782debugging session, when the library is not loaded, and when the 4783symbols from the library are not available. When you try to set 4784breakpoint, @value{GDBN} will ask you if you want to set 4785a so called @dfn{pending breakpoint}---breakpoint whose address 4786is not yet resolved. 4787 4788After the program is run, whenever a new shared library is loaded, 4789@value{GDBN} reevaluates all the breakpoints. When a newly loaded 4790shared library contains the symbol or line referred to by some 4791pending breakpoint, that breakpoint is resolved and becomes an 4792ordinary breakpoint. When a library is unloaded, all breakpoints 4793that refer to its symbols or source lines become pending again. 4794 4795This logic works for breakpoints with multiple locations, too. For 4796example, if you have a breakpoint in a C@t{++} template function, and 4797a newly loaded shared library has an instantiation of that template, 4798a new location is added to the list of locations for the breakpoint. 4799 4800Except for having unresolved address, pending breakpoints do not 4801differ from regular breakpoints. You can set conditions or commands, 4802enable and disable them and perform other breakpoint operations. 4803 4804@value{GDBN} provides some additional commands for controlling what 4805happens when the @samp{break} command cannot resolve the location spec 4806to any code location in your program (@pxref{Location 4807Specifications}): 4808 4809@kindex set breakpoint pending 4810@kindex show breakpoint pending 4811@table @code 4812@item set breakpoint pending auto 4813This is the default behavior. When @value{GDBN} cannot resolve the 4814location spec, it queries you whether a pending breakpoint should be 4815created. 4816 4817@item set breakpoint pending on 4818This indicates that when @value{GDBN} cannot resolve the location 4819spec, it should create a pending breakpoint without confirmation. 4820 4821@item set breakpoint pending off 4822This indicates that pending breakpoints are not to be created. If 4823@value{GDBN} cannot resolve the location spec, it aborts the 4824breakpoint creation with an error. This setting does not affect any 4825pending breakpoints previously created. 4826 4827@item show breakpoint pending 4828Show the current behavior setting for creating pending breakpoints. 4829@end table 4830 4831The settings above only affect the @code{break} command and its 4832variants. Once a breakpoint is set, it will be automatically updated 4833as shared libraries are loaded and unloaded. 4834 4835@cindex automatic hardware breakpoints 4836For some targets, @value{GDBN} can automatically decide if hardware or 4837software breakpoints should be used, depending on whether the 4838breakpoint address is read-only or read-write. This applies to 4839breakpoints set with the @code{break} command as well as to internal 4840breakpoints set by commands like @code{next} and @code{finish}. For 4841breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware 4842breakpoints. 4843 4844You can control this automatic behaviour with the following commands: 4845 4846@kindex set breakpoint auto-hw 4847@kindex show breakpoint auto-hw 4848@table @code 4849@item set breakpoint auto-hw on 4850This is the default behavior. When @value{GDBN} sets a breakpoint, it 4851will try to use the target memory map to decide if software or hardware 4852breakpoint must be used. 4853 4854@item set breakpoint auto-hw off 4855This indicates @value{GDBN} should not automatically select breakpoint 4856type. If the target provides a memory map, @value{GDBN} will warn when 4857trying to set software breakpoint at a read-only address. 4858@end table 4859 4860@value{GDBN} normally implements breakpoints by replacing the program code 4861at the breakpoint address with a special instruction, which, when 4862executed, given control to the debugger. By default, the program 4863code is so modified only when the program is resumed. As soon as 4864the program stops, @value{GDBN} restores the original instructions. This 4865behaviour guards against leaving breakpoints inserted in the 4866target should gdb abrubptly disconnect. However, with slow remote 4867targets, inserting and removing breakpoint can reduce the performance. 4868This behavior can be controlled with the following commands:: 4869 4870@kindex set breakpoint always-inserted 4871@kindex show breakpoint always-inserted 4872@table @code 4873@item set breakpoint always-inserted off 4874All breakpoints, including newly added by the user, are inserted in 4875the target only when the target is resumed. All breakpoints are 4876removed from the target when it stops. This is the default mode. 4877 4878@item set breakpoint always-inserted on 4879Causes all breakpoints to be inserted in the target at all times. If 4880the user adds a new breakpoint, or changes an existing breakpoint, the 4881breakpoints in the target are updated immediately. A breakpoint is 4882removed from the target only when breakpoint itself is deleted. 4883@end table 4884 4885@value{GDBN} handles conditional breakpoints by evaluating these conditions 4886when a breakpoint breaks. If the condition is true, then the process being 4887debugged stops, otherwise the process is resumed. 4888 4889If the target supports evaluating conditions on its end, @value{GDBN} may 4890download the breakpoint, together with its conditions, to it. 4891 4892This feature can be controlled via the following commands: 4893 4894@kindex set breakpoint condition-evaluation 4895@kindex show breakpoint condition-evaluation 4896@table @code 4897@item set breakpoint condition-evaluation host 4898This option commands @value{GDBN} to evaluate the breakpoint 4899conditions on the host's side. Unconditional breakpoints are sent to 4900the target which in turn receives the triggers and reports them back to GDB 4901for condition evaluation. This is the standard evaluation mode. 4902 4903@item set breakpoint condition-evaluation target 4904This option commands @value{GDBN} to download breakpoint conditions 4905to the target at the moment of their insertion. The target 4906is responsible for evaluating the conditional expression and reporting 4907breakpoint stop events back to @value{GDBN} whenever the condition 4908is true. Due to limitations of target-side evaluation, some conditions 4909cannot be evaluated there, e.g., conditions that depend on local data 4910that is only known to the host. Examples include 4911conditional expressions involving convenience variables, complex types 4912that cannot be handled by the agent expression parser and expressions 4913that are too long to be sent over to the target, specially when the 4914target is a remote system. In these cases, the conditions will be 4915evaluated by @value{GDBN}. 4916 4917@item set breakpoint condition-evaluation auto 4918This is the default mode. If the target supports evaluating breakpoint 4919conditions on its end, @value{GDBN} will download breakpoint conditions to 4920the target (limitations mentioned previously apply). If the target does 4921not support breakpoint condition evaluation, then @value{GDBN} will fallback 4922to evaluating all these conditions on the host's side. 4923@end table 4924 4925 4926@cindex negative breakpoint numbers 4927@cindex internal @value{GDBN} breakpoints 4928@value{GDBN} itself sometimes sets breakpoints in your program for 4929special purposes, such as proper handling of @code{longjmp} (in C 4930programs). These internal breakpoints are assigned negative numbers, 4931starting with @code{-1}; @samp{info breakpoints} does not display them. 4932You can see these breakpoints with the @value{GDBN} maintenance command 4933@samp{maint info breakpoints} (@pxref{maint info breakpoints}). 4934 4935 4936@node Set Watchpoints 4937@subsection Setting Watchpoints 4938 4939@cindex setting watchpoints 4940You can use a watchpoint to stop execution whenever the value of an 4941expression changes, without having to predict a particular place where 4942this may happen. (This is sometimes called a @dfn{data breakpoint}.) 4943The expression may be as simple as the value of a single variable, or 4944as complex as many variables combined by operators. Examples include: 4945 4946@itemize @bullet 4947@item 4948A reference to the value of a single variable. 4949 4950@item 4951An address cast to an appropriate data type. For example, 4952@samp{*(int *)0x12345678} will watch a 4-byte region at the specified 4953address (assuming an @code{int} occupies 4 bytes). 4954 4955@item 4956An arbitrarily complex expression, such as @samp{a*b + c/d}. The 4957expression can use any operators valid in the program's native 4958language (@pxref{Languages}). 4959@end itemize 4960 4961You can set a watchpoint on an expression even if the expression can 4962not be evaluated yet. For instance, you can set a watchpoint on 4963@samp{*global_ptr} before @samp{global_ptr} is initialized. 4964@value{GDBN} will stop when your program sets @samp{global_ptr} and 4965the expression produces a valid value. If the expression becomes 4966valid in some other way than changing a variable (e.g.@: if the memory 4967pointed to by @samp{*global_ptr} becomes readable as the result of a 4968@code{malloc} call), @value{GDBN} may not stop until the next time 4969the expression changes. 4970 4971@cindex software watchpoints 4972@cindex hardware watchpoints 4973Depending on your system, watchpoints may be implemented in software or 4974hardware. @value{GDBN} does software watchpointing by single-stepping your 4975program and testing the variable's value each time, which is hundreds of 4976times slower than normal execution. (But this may still be worth it, to 4977catch errors where you have no clue what part of your program is the 4978culprit.) 4979 4980On some systems, such as most PowerPC or x86-based targets, 4981@value{GDBN} includes support for hardware watchpoints, which do not 4982slow down the running of your program. 4983 4984@table @code 4985@kindex watch 4986@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]} @r{[}task @var{task-id}@r{]} 4987Set a watchpoint for an expression. @value{GDBN} will break when the 4988expression @var{expr} is written into by the program and its value 4989changes. The simplest (and the most popular) use of this command is 4990to watch the value of a single variable: 4991 4992@smallexample 4993(@value{GDBP}) watch foo 4994@end smallexample 4995 4996If the command includes a @code{@r{[}thread @var{thread-id}@r{]}} 4997argument, @value{GDBN} breaks only when the thread identified by 4998@var{thread-id} changes the value of @var{expr}. If any other threads 4999change the value of @var{expr}, @value{GDBN} will not break. Note 5000that watchpoints restricted to a single thread in this way only work 5001with Hardware Watchpoints. 5002 5003Similarly, if the @code{task} argument is given, then the watchpoint 5004will be specific to the indicated Ada task (@pxref{Ada Tasks}). 5005 5006Ordinarily a watchpoint respects the scope of variables in @var{expr} 5007(see below). The @code{-location} argument tells @value{GDBN} to 5008instead watch the memory referred to by @var{expr}. In this case, 5009@value{GDBN} will evaluate @var{expr}, take the address of the result, 5010and watch the memory at that address. The type of the result is used 5011to determine the size of the watched memory. If the expression's 5012result does not have an address, then @value{GDBN} will print an 5013error. 5014 5015The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation 5016of masked watchpoints, if the current architecture supports this 5017feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC 5018Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition 5019to an address to watch. The mask specifies that some bits of an address 5020(the bits which are reset in the mask) should be ignored when matching 5021the address accessed by the inferior against the watchpoint address. 5022Thus, a masked watchpoint watches many addresses simultaneously---those 5023addresses whose unmasked bits are identical to the unmasked bits in the 5024watchpoint address. The @code{mask} argument implies @code{-location}. 5025Examples: 5026 5027@smallexample 5028(@value{GDBP}) watch foo mask 0xffff00ff 5029(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00 5030@end smallexample 5031 5032@kindex rwatch 5033@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]} 5034Set a watchpoint that will break when the value of @var{expr} is read 5035by the program. 5036 5037@kindex awatch 5038@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{thread-id}@r{]} @r{[}mask @var{maskvalue}@r{]} 5039Set a watchpoint that will break when @var{expr} is either read from 5040or written into by the program. 5041 5042@kindex info watchpoints @r{[}@var{list}@dots{}@r{]} 5043@item info watchpoints @r{[}@var{list}@dots{}@r{]} 5044This command prints a list of watchpoints, using the same format as 5045@code{info break} (@pxref{Set Breaks}). 5046@end table 5047 5048If you watch for a change in a numerically entered address you need to 5049dereference it, as the address itself is just a constant number which will 5050never change. @value{GDBN} refuses to create a watchpoint that watches 5051a never-changing value: 5052 5053@smallexample 5054(@value{GDBP}) watch 0x600850 5055Cannot watch constant value 0x600850. 5056(@value{GDBP}) watch *(int *) 0x600850 5057Watchpoint 1: *(int *) 6293584 5058@end smallexample 5059 5060@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware 5061watchpoints execute very quickly, and the debugger reports a change in 5062value at the exact instruction where the change occurs. If @value{GDBN} 5063cannot set a hardware watchpoint, it sets a software watchpoint, which 5064executes more slowly and reports the change in value at the next 5065@emph{statement}, not the instruction, after the change occurs. 5066 5067@cindex use only software watchpoints 5068You can force @value{GDBN} to use only software watchpoints with the 5069@kbd{set can-use-hw-watchpoints 0} command. With this variable set to 5070zero, @value{GDBN} will never try to use hardware watchpoints, even if 5071the underlying system supports them. (Note that hardware-assisted 5072watchpoints that were set @emph{before} setting 5073@code{can-use-hw-watchpoints} to zero will still use the hardware 5074mechanism of watching expression values.) 5075 5076@table @code 5077@item set can-use-hw-watchpoints 5078@kindex set can-use-hw-watchpoints 5079Set whether or not to use hardware watchpoints. 5080 5081@item show can-use-hw-watchpoints 5082@kindex show can-use-hw-watchpoints 5083Show the current mode of using hardware watchpoints. 5084@end table 5085 5086For remote targets, you can restrict the number of hardware 5087watchpoints @value{GDBN} will use, see @ref{set remote 5088hardware-breakpoint-limit}. 5089 5090When you issue the @code{watch} command, @value{GDBN} reports 5091 5092@smallexample 5093Hardware watchpoint @var{num}: @var{expr} 5094@end smallexample 5095 5096@noindent 5097if it was able to set a hardware watchpoint. 5098 5099Currently, the @code{awatch} and @code{rwatch} commands can only set 5100hardware watchpoints, because accesses to data that don't change the 5101value of the watched expression cannot be detected without examining 5102every instruction as it is being executed, and @value{GDBN} does not do 5103that currently. If @value{GDBN} finds that it is unable to set a 5104hardware breakpoint with the @code{awatch} or @code{rwatch} command, it 5105will print a message like this: 5106 5107@smallexample 5108Expression cannot be implemented with read/access watchpoint. 5109@end smallexample 5110 5111Sometimes, @value{GDBN} cannot set a hardware watchpoint because the 5112data type of the watched expression is wider than what a hardware 5113watchpoint on the target machine can handle. For example, some systems 5114can only watch regions that are up to 4 bytes wide; on such systems you 5115cannot set hardware watchpoints for an expression that yields a 5116double-precision floating-point number (which is typically 8 bytes 5117wide). As a work-around, it might be possible to break the large region 5118into a series of smaller ones and watch them with separate watchpoints. 5119 5120If you set too many hardware watchpoints, @value{GDBN} might be unable 5121to insert all of them when you resume the execution of your program. 5122Since the precise number of active watchpoints is unknown until such 5123time as the program is about to be resumed, @value{GDBN} might not be 5124able to warn you about this when you set the watchpoints, and the 5125warning will be printed only when the program is resumed: 5126 5127@smallexample 5128Hardware watchpoint @var{num}: Could not insert watchpoint 5129@end smallexample 5130 5131@noindent 5132If this happens, delete or disable some of the watchpoints. 5133 5134Watching complex expressions that reference many variables can also 5135exhaust the resources available for hardware-assisted watchpoints. 5136That's because @value{GDBN} needs to watch every variable in the 5137expression with separately allocated resources. 5138 5139If you call a function interactively using @code{print} or @code{call}, 5140any watchpoints you have set will be inactive until @value{GDBN} reaches another 5141kind of breakpoint or the call completes. 5142 5143@value{GDBN} automatically deletes watchpoints that watch local 5144(automatic) variables, or expressions that involve such variables, when 5145they go out of scope, that is, when the execution leaves the block in 5146which these variables were defined. In particular, when the program 5147being debugged terminates, @emph{all} local variables go out of scope, 5148and so only watchpoints that watch global variables remain set. If you 5149rerun the program, you will need to set all such watchpoints again. One 5150way of doing that would be to set a code breakpoint at the entry to the 5151@code{main} function and when it breaks, set all the watchpoints. 5152 5153@cindex watchpoints and threads 5154@cindex threads and watchpoints 5155In multi-threaded programs, watchpoints will detect changes to the 5156watched expression from every thread. 5157 5158@quotation 5159@emph{Warning:} In multi-threaded programs, software watchpoints 5160have only limited usefulness. If @value{GDBN} creates a software 5161watchpoint, it can only watch the value of an expression @emph{in a 5162single thread}. If you are confident that the expression can only 5163change due to the current thread's activity (and if you are also 5164confident that no other thread can become current), then you can use 5165software watchpoints as usual. However, @value{GDBN} may not notice 5166when a non-current thread's activity changes the expression. (Hardware 5167watchpoints, in contrast, watch an expression in all threads.) 5168@end quotation 5169 5170@xref{set remote hardware-watchpoint-limit}. 5171 5172@node Set Catchpoints 5173@subsection Setting Catchpoints 5174@cindex catchpoints, setting 5175@cindex exception handlers 5176@cindex event handling 5177 5178You can use @dfn{catchpoints} to cause the debugger to stop for certain 5179kinds of program events, such as C@t{++} exceptions or the loading of a 5180shared library. Use the @code{catch} command to set a catchpoint. 5181 5182@table @code 5183@kindex catch 5184@item catch @var{event} 5185Stop when @var{event} occurs. The @var{event} can be any of the following: 5186 5187@table @code 5188@item throw @r{[}@var{regexp}@r{]} 5189@itemx rethrow @r{[}@var{regexp}@r{]} 5190@itemx catch @r{[}@var{regexp}@r{]} 5191@kindex catch throw 5192@kindex catch rethrow 5193@kindex catch catch 5194@cindex stop on C@t{++} exceptions 5195The throwing, re-throwing, or catching of a C@t{++} exception. 5196 5197If @var{regexp} is given, then only exceptions whose type matches the 5198regular expression will be caught. 5199 5200@vindex $_exception@r{, convenience variable} 5201The convenience variable @code{$_exception} is available at an 5202exception-related catchpoint, on some systems. This holds the 5203exception being thrown. 5204 5205There are currently some limitations to C@t{++} exception handling in 5206@value{GDBN}: 5207 5208@itemize @bullet 5209@item 5210The support for these commands is system-dependent. Currently, only 5211systems using the @samp{gnu-v3} C@t{++} ABI (@pxref{ABI}) are 5212supported. 5213 5214@item 5215The regular expression feature and the @code{$_exception} convenience 5216variable rely on the presence of some SDT probes in @code{libstdc++}. 5217If these probes are not present, then these features cannot be used. 5218These probes were first available in the GCC 4.8 release, but whether 5219or not they are available in your GCC also depends on how it was 5220built. 5221 5222@item 5223The @code{$_exception} convenience variable is only valid at the 5224instruction at which an exception-related catchpoint is set. 5225 5226@item 5227When an exception-related catchpoint is hit, @value{GDBN} stops at a 5228location in the system library which implements runtime exception 5229support for C@t{++}, usually @code{libstdc++}. You can use @code{up} 5230(@pxref{Selection}) to get to your code. 5231 5232@item 5233If you call a function interactively, @value{GDBN} normally returns 5234control to you when the function has finished executing. If the call 5235raises an exception, however, the call may bypass the mechanism that 5236returns control to you and cause your program either to abort or to 5237simply continue running until it hits a breakpoint, catches a signal 5238that @value{GDBN} is listening for, or exits. This is the case even if 5239you set a catchpoint for the exception; catchpoints on exceptions are 5240disabled within interactive calls. @xref{Calling}, for information on 5241controlling this with @code{set unwind-on-terminating-exception}. 5242 5243@item 5244You cannot raise an exception interactively. 5245 5246@item 5247You cannot install an exception handler interactively. 5248@end itemize 5249 5250@item exception @r{[}@var{name}@r{]} 5251@kindex catch exception 5252@cindex Ada exception catching 5253@cindex catch Ada exceptions 5254An Ada exception being raised. If an exception name is specified 5255at the end of the command (eg @code{catch exception Program_Error}), 5256the debugger will stop only when this specific exception is raised. 5257Otherwise, the debugger stops execution when any Ada exception is raised. 5258 5259When inserting an exception catchpoint on a user-defined exception whose 5260name is identical to one of the exceptions defined by the language, the 5261fully qualified name must be used as the exception name. Otherwise, 5262@value{GDBN} will assume that it should stop on the pre-defined exception 5263rather than the user-defined one. For instance, assuming an exception 5264called @code{Constraint_Error} is defined in package @code{Pck}, then 5265the command to use to catch such exceptions is @kbd{catch exception 5266Pck.Constraint_Error}. 5267 5268@vindex $_ada_exception@r{, convenience variable} 5269The convenience variable @code{$_ada_exception} holds the address of 5270the exception being thrown. This can be useful when setting a 5271condition for such a catchpoint. 5272 5273@item exception unhandled 5274@kindex catch exception unhandled 5275An exception that was raised but is not handled by the program. The 5276convenience variable @code{$_ada_exception} is set as for @code{catch 5277exception}. 5278 5279@item handlers @r{[}@var{name}@r{]} 5280@kindex catch handlers 5281@cindex Ada exception handlers catching 5282@cindex catch Ada exceptions when handled 5283An Ada exception being handled. If an exception name is 5284specified at the end of the command 5285 (eg @kbd{catch handlers Program_Error}), the debugger will stop 5286only when this specific exception is handled. 5287Otherwise, the debugger stops execution when any Ada exception is handled. 5288 5289When inserting a handlers catchpoint on a user-defined 5290exception whose name is identical to one of the exceptions 5291defined by the language, the fully qualified name must be used 5292as the exception name. Otherwise, @value{GDBN} will assume that it 5293should stop on the pre-defined exception rather than the 5294user-defined one. For instance, assuming an exception called 5295 @code{Constraint_Error} is defined in package @code{Pck}, then the 5296command to use to catch such exceptions handling is 5297@kbd{catch handlers Pck.Constraint_Error}. 5298 5299The convenience variable @code{$_ada_exception} is set as for 5300@code{catch exception}. 5301 5302@item assert 5303@kindex catch assert 5304A failed Ada assertion. Note that the convenience variable 5305@code{$_ada_exception} is @emph{not} set by this catchpoint. 5306 5307@item exec 5308@kindex catch exec 5309@cindex break on fork/exec 5310A call to @code{exec}. 5311 5312@anchor{catch syscall} 5313@item syscall 5314@itemx syscall @r{[}@var{name} @r{|} @var{number} @r{|} @r{group:}@var{groupname} @r{|} @r{g:}@var{groupname}@r{]} @dots{} 5315@kindex catch syscall 5316@cindex break on a system call. 5317A call to or return from a system call, a.k.a.@: @dfn{syscall}. A 5318syscall is a mechanism for application programs to request a service 5319from the operating system (OS) or one of the OS system services. 5320@value{GDBN} can catch some or all of the syscalls issued by the 5321debuggee, and show the related information for each syscall. If no 5322argument is specified, calls to and returns from all system calls 5323will be caught. 5324 5325@var{name} can be any system call name that is valid for the 5326underlying OS. Just what syscalls are valid depends on the OS. On 5327GNU and Unix systems, you can find the full list of valid syscall 5328names on @file{/usr/include/asm/unistd.h}. 5329 5330@c For MS-Windows, the syscall names and the corresponding numbers 5331@c can be found, e.g., on this URL: 5332@c http://www.metasploit.com/users/opcode/syscalls.html 5333@c but we don't support Windows syscalls yet. 5334 5335Normally, @value{GDBN} knows in advance which syscalls are valid for 5336each OS, so you can use the @value{GDBN} command-line completion 5337facilities (@pxref{Completion,, command completion}) to list the 5338available choices. 5339 5340You may also specify the system call numerically. A syscall's 5341number is the value passed to the OS's syscall dispatcher to 5342identify the requested service. When you specify the syscall by its 5343name, @value{GDBN} uses its database of syscalls to convert the name 5344into the corresponding numeric code, but using the number directly 5345may be useful if @value{GDBN}'s database does not have the complete 5346list of syscalls on your system (e.g., because @value{GDBN} lags 5347behind the OS upgrades). 5348 5349You may specify a group of related syscalls to be caught at once using 5350the @code{group:} syntax (@code{g:} is a shorter equivalent). For 5351instance, on some platforms @value{GDBN} allows you to catch all 5352network related syscalls, by passing the argument @code{group:network} 5353to @code{catch syscall}. Note that not all syscall groups are 5354available in every system. You can use the command completion 5355facilities (@pxref{Completion,, command completion}) to list the 5356syscall groups available on your environment. 5357 5358The example below illustrates how this command works if you don't provide 5359arguments to it: 5360 5361@smallexample 5362(@value{GDBP}) catch syscall 5363Catchpoint 1 (syscall) 5364(@value{GDBP}) r 5365Starting program: /tmp/catch-syscall 5366 5367Catchpoint 1 (call to syscall 'close'), \ 5368 0xffffe424 in __kernel_vsyscall () 5369(@value{GDBP}) c 5370Continuing. 5371 5372Catchpoint 1 (returned from syscall 'close'), \ 5373 0xffffe424 in __kernel_vsyscall () 5374(@value{GDBP}) 5375@end smallexample 5376 5377Here is an example of catching a system call by name: 5378 5379@smallexample 5380(@value{GDBP}) catch syscall chroot 5381Catchpoint 1 (syscall 'chroot' [61]) 5382(@value{GDBP}) r 5383Starting program: /tmp/catch-syscall 5384 5385Catchpoint 1 (call to syscall 'chroot'), \ 5386 0xffffe424 in __kernel_vsyscall () 5387(@value{GDBP}) c 5388Continuing. 5389 5390Catchpoint 1 (returned from syscall 'chroot'), \ 5391 0xffffe424 in __kernel_vsyscall () 5392(@value{GDBP}) 5393@end smallexample 5394 5395An example of specifying a system call numerically. In the case 5396below, the syscall number has a corresponding entry in the XML 5397file, so @value{GDBN} finds its name and prints it: 5398 5399@smallexample 5400(@value{GDBP}) catch syscall 252 5401Catchpoint 1 (syscall(s) 'exit_group') 5402(@value{GDBP}) r 5403Starting program: /tmp/catch-syscall 5404 5405Catchpoint 1 (call to syscall 'exit_group'), \ 5406 0xffffe424 in __kernel_vsyscall () 5407(@value{GDBP}) c 5408Continuing. 5409 5410Program exited normally. 5411(@value{GDBP}) 5412@end smallexample 5413 5414Here is an example of catching a syscall group: 5415 5416@smallexample 5417(@value{GDBP}) catch syscall group:process 5418Catchpoint 1 (syscalls 'exit' [1] 'fork' [2] 'waitpid' [7] 5419'execve' [11] 'wait4' [114] 'clone' [120] 'vfork' [190] 5420'exit_group' [252] 'waitid' [284] 'unshare' [310]) 5421(@value{GDBP}) r 5422Starting program: /tmp/catch-syscall 5423 5424Catchpoint 1 (call to syscall fork), 0x00007ffff7df4e27 in open64 () 5425 from /lib64/ld-linux-x86-64.so.2 5426 5427(@value{GDBP}) c 5428Continuing. 5429@end smallexample 5430 5431However, there can be situations when there is no corresponding name 5432in XML file for that syscall number. In this case, @value{GDBN} prints 5433a warning message saying that it was not able to find the syscall name, 5434but the catchpoint will be set anyway. See the example below: 5435 5436@smallexample 5437(@value{GDBP}) catch syscall 764 5438warning: The number '764' does not represent a known syscall. 5439Catchpoint 2 (syscall 764) 5440(@value{GDBP}) 5441@end smallexample 5442 5443If you configure @value{GDBN} using the @samp{--without-expat} option, 5444it will not be able to display syscall names. Also, if your 5445architecture does not have an XML file describing its system calls, 5446you will not be able to see the syscall names. It is important to 5447notice that these two features are used for accessing the syscall 5448name database. In either case, you will see a warning like this: 5449 5450@smallexample 5451(@value{GDBP}) catch syscall 5452warning: Could not open "syscalls/i386-linux.xml" 5453warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'. 5454GDB will not be able to display syscall names. 5455Catchpoint 1 (syscall) 5456(@value{GDBP}) 5457@end smallexample 5458 5459Of course, the file name will change depending on your architecture and system. 5460 5461Still using the example above, you can also try to catch a syscall by its 5462number. In this case, you would see something like: 5463 5464@smallexample 5465(@value{GDBP}) catch syscall 252 5466Catchpoint 1 (syscall(s) 252) 5467@end smallexample 5468 5469Again, in this case @value{GDBN} would not be able to display syscall's names. 5470 5471@item fork 5472@kindex catch fork 5473A call to @code{fork}. 5474 5475@item vfork 5476@kindex catch vfork 5477A call to @code{vfork}. 5478 5479@item load @r{[}@var{regexp}@r{]} 5480@itemx unload @r{[}@var{regexp}@r{]} 5481@kindex catch load 5482@kindex catch unload 5483The loading or unloading of a shared library. If @var{regexp} is 5484given, then the catchpoint will stop only if the regular expression 5485matches one of the affected libraries. 5486 5487@item signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 5488@kindex catch signal 5489The delivery of a signal. 5490 5491With no arguments, this catchpoint will catch any signal that is not 5492used internally by @value{GDBN}, specifically, all signals except 5493@samp{SIGTRAP} and @samp{SIGINT}. 5494 5495With the argument @samp{all}, all signals, including those used by 5496@value{GDBN}, will be caught. This argument cannot be used with other 5497signal names. 5498 5499Otherwise, the arguments are a list of signal names as given to 5500@code{handle} (@pxref{Signals}). Only signals specified in this list 5501will be caught. 5502 5503One reason that @code{catch signal} can be more useful than 5504@code{handle} is that you can attach commands and conditions to the 5505catchpoint. 5506 5507When a signal is caught by a catchpoint, the signal's @code{stop} and 5508@code{print} settings, as specified by @code{handle}, are ignored. 5509However, whether the signal is still delivered to the inferior depends 5510on the @code{pass} setting; this can be changed in the catchpoint's 5511commands. 5512 5513@end table 5514 5515@item tcatch @var{event} 5516@kindex tcatch 5517Set a catchpoint that is enabled only for one stop. The catchpoint is 5518automatically deleted after the first time the event is caught. 5519 5520@end table 5521 5522Use the @code{info break} command to list the current catchpoints. 5523 5524 5525@node Delete Breaks 5526@subsection Deleting Breakpoints 5527 5528@cindex clearing breakpoints, watchpoints, catchpoints 5529@cindex deleting breakpoints, watchpoints, catchpoints 5530It is often necessary to eliminate a breakpoint, watchpoint, or 5531catchpoint once it has done its job and you no longer want your program 5532to stop there. This is called @dfn{deleting} the breakpoint. A 5533breakpoint that has been deleted no longer exists; it is forgotten. 5534 5535With the @code{clear} command you can delete breakpoints according to 5536where they are in your program. With the @code{delete} command you can 5537delete individual breakpoints, watchpoints, or catchpoints by specifying 5538their breakpoint numbers. 5539 5540It is not necessary to delete a breakpoint to proceed past it. @value{GDBN} 5541automatically ignores breakpoints on the first instruction to be executed 5542when you continue execution without changing the execution address. 5543 5544@table @code 5545@kindex clear 5546@item clear 5547Delete any breakpoints at the next instruction to be executed in the 5548selected stack frame (@pxref{Selection, ,Selecting a Frame}). When 5549the innermost frame is selected, this is a good way to delete a 5550breakpoint where your program just stopped. 5551 5552@item clear @var{locspec} 5553Delete any breakpoint with a code location that corresponds to 5554@var{locspec}. @xref{Location Specifications}, for the various forms 5555of @var{locspec}. Which code locations correspond to @var{locspec} 5556depends on the form used in the location specification @var{locspec}: 5557 5558@table @code 5559@item @var{linenum} 5560@itemx @var{filename}:@var{linenum} 5561@itemx -line @var{linenum} 5562@itemx -source @var{filename} -line @var{linenum} 5563If @var{locspec} specifies a line number, with or without a file name, 5564the command deletes any breakpoint with a code location that is at or 5565within the specified line @var{linenum} in files that match the 5566specified @var{filename}. If @var{filename} is omitted, it defaults 5567to the current source file. 5568 5569@item *@var{address} 5570If @var{locspec} specifies an address, the command deletes any 5571breakpoint with a code location that is at the given @var{address}. 5572 5573@item @var{function} 5574@itemx -function @var{function} 5575If @var{locspec} specifies a function, the command deletes any 5576breakpoint with a code location that is at the entry to any function 5577whose name matches @var{function}. 5578@end table 5579 5580Ambiguity in names of files and functions can be resolved as described 5581in @ref{Location Specifications}. 5582 5583@cindex delete breakpoints 5584@kindex delete 5585@kindex d @r{(@code{delete})} 5586@item delete @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]} 5587Delete the breakpoints, watchpoints, or catchpoints of the breakpoint 5588list specified as argument. If no argument is specified, delete all 5589breakpoints (@value{GDBN} asks confirmation, unless you have @code{set 5590confirm off}). You can abbreviate this command as @code{d}. 5591@end table 5592 5593@node Disabling 5594@subsection Disabling Breakpoints 5595 5596@cindex enable/disable a breakpoint 5597Rather than deleting a breakpoint, watchpoint, or catchpoint, you might 5598prefer to @dfn{disable} it. This makes the breakpoint inoperative as if 5599it had been deleted, but remembers the information on the breakpoint so 5600that you can @dfn{enable} it again later. 5601 5602You disable and enable breakpoints, watchpoints, and catchpoints with 5603the @code{enable} and @code{disable} commands, optionally specifying 5604one or more breakpoint numbers as arguments. Use @code{info break} to 5605print a list of all breakpoints, watchpoints, and catchpoints if you 5606do not know which numbers to use. 5607 5608Disabling and enabling a breakpoint that has multiple locations 5609affects all of its locations. 5610 5611A breakpoint, watchpoint, or catchpoint can have any of several 5612different states of enablement: 5613 5614@itemize @bullet 5615@item 5616Enabled. The breakpoint stops your program. A breakpoint set 5617with the @code{break} command starts out in this state. 5618@item 5619Disabled. The breakpoint has no effect on your program. 5620@item 5621Enabled once. The breakpoint stops your program, but then becomes 5622disabled. 5623@item 5624Enabled for a count. The breakpoint stops your program for the next 5625N times, then becomes disabled. 5626@item 5627Enabled for deletion. The breakpoint stops your program, but 5628immediately after it does so it is deleted permanently. A breakpoint 5629set with the @code{tbreak} command starts out in this state. 5630@end itemize 5631 5632You can use the following commands to enable or disable breakpoints, 5633watchpoints, and catchpoints: 5634 5635@table @code 5636@kindex disable 5637@kindex dis @r{(@code{disable})} 5638@item disable @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]} 5639Disable the specified breakpoints---or all breakpoints, if none are 5640listed. A disabled breakpoint has no effect but is not forgotten. All 5641options such as ignore-counts, conditions and commands are remembered in 5642case the breakpoint is enabled again later. You may abbreviate 5643@code{disable} as @code{dis}. 5644 5645@kindex enable 5646@item enable @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]} 5647Enable the specified breakpoints (or all defined breakpoints). They 5648become effective once again in stopping your program. 5649 5650@item enable @r{[}breakpoints@r{]} once @var{list}@dots{} 5651Enable the specified breakpoints temporarily. @value{GDBN} disables any 5652of these breakpoints immediately after stopping your program. 5653 5654@item enable @r{[}breakpoints@r{]} count @var{count} @var{list}@dots{} 5655Enable the specified breakpoints temporarily. @value{GDBN} records 5656@var{count} with each of the specified breakpoints, and decrements a 5657breakpoint's count when it is hit. When any count reaches 0, 5658@value{GDBN} disables that breakpoint. If a breakpoint has an ignore 5659count (@pxref{Conditions, ,Break Conditions}), that will be 5660decremented to 0 before @var{count} is affected. 5661 5662@item enable @r{[}breakpoints@r{]} delete @var{list}@dots{} 5663Enable the specified breakpoints to work once, then die. @value{GDBN} 5664deletes any of these breakpoints as soon as your program stops there. 5665Breakpoints set by the @code{tbreak} command start out in this state. 5666@end table 5667 5668@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is 5669@c confusing: tbreak is also initially enabled. 5670Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks, 5671,Setting Breakpoints}), breakpoints that you set are initially enabled; 5672subsequently, they become disabled or enabled only when you use one of 5673the commands above. (The command @code{until} can set and delete a 5674breakpoint of its own, but it does not change the state of your other 5675breakpoints; see @ref{Continuing and Stepping, ,Continuing and 5676Stepping}.) 5677 5678@node Conditions 5679@subsection Break Conditions 5680@cindex conditional breakpoints 5681@cindex breakpoint conditions 5682 5683@c FIXME what is scope of break condition expr? Context where wanted? 5684@c in particular for a watchpoint? 5685The simplest sort of breakpoint breaks every time your program reaches a 5686specified place. You can also specify a @dfn{condition} for a 5687breakpoint. A condition is just a Boolean expression in your 5688programming language (@pxref{Expressions, ,Expressions}). A breakpoint with 5689a condition evaluates the expression each time your program reaches it, 5690and your program stops only if the condition is @emph{true}. 5691 5692This is the converse of using assertions for program validation; in that 5693situation, you want to stop when the assertion is violated---that is, 5694when the condition is false. In C, if you want to test an assertion expressed 5695by the condition @var{assert}, you should set the condition 5696@samp{! @var{assert}} on the appropriate breakpoint. 5697 5698Conditions are also accepted for watchpoints; you may not need them, 5699since a watchpoint is inspecting the value of an expression anyhow---but 5700it might be simpler, say, to just set a watchpoint on a variable name, 5701and specify a condition that tests whether the new value is an interesting 5702one. 5703 5704Break conditions can have side effects, and may even call functions in 5705your program. This can be useful, for example, to activate functions 5706that log program progress, or to use your own print functions to 5707format special data structures. The effects are completely predictable 5708unless there is another enabled breakpoint at the same address. (In 5709that case, @value{GDBN} might see the other breakpoint first and stop your 5710program without checking the condition of this one.) Note that 5711breakpoint commands are usually more convenient and flexible than break 5712conditions for the 5713purpose of performing side effects when a breakpoint is reached 5714(@pxref{Break Commands, ,Breakpoint Command Lists}). 5715 5716Breakpoint conditions can also be evaluated on the target's side if 5717the target supports it. Instead of evaluating the conditions locally, 5718@value{GDBN} encodes the expression into an agent expression 5719(@pxref{Agent Expressions}) suitable for execution on the target, 5720independently of @value{GDBN}. Global variables become raw memory 5721locations, locals become stack accesses, and so forth. 5722 5723In this case, @value{GDBN} will only be notified of a breakpoint trigger 5724when its condition evaluates to true. This mechanism may provide faster 5725response times depending on the performance characteristics of the target 5726since it does not need to keep @value{GDBN} informed about 5727every breakpoint trigger, even those with false conditions. 5728 5729Break conditions can be specified when a breakpoint is set, by using 5730@samp{if} in the arguments to the @code{break} command. @xref{Set 5731Breaks, ,Setting Breakpoints}. They can also be changed at any time 5732with the @code{condition} command. 5733 5734You can also use the @code{if} keyword with the @code{watch} command. 5735The @code{catch} command does not recognize the @code{if} keyword; 5736@code{condition} is the only way to impose a further condition on a 5737catchpoint. 5738 5739@table @code 5740@kindex condition 5741@item condition @var{bnum} @var{expression} 5742Specify @var{expression} as the break condition for breakpoint, 5743watchpoint, or catchpoint number @var{bnum}. After you set a condition, 5744breakpoint @var{bnum} stops your program only if the value of 5745@var{expression} is true (nonzero, in C). When you use 5746@code{condition}, @value{GDBN} checks @var{expression} immediately for 5747syntactic correctness, and to determine whether symbols in it have 5748referents in the context of your breakpoint. If @var{expression} uses 5749symbols not referenced in the context of the breakpoint, @value{GDBN} 5750prints an error message: 5751 5752@smallexample 5753No symbol "foo" in current context. 5754@end smallexample 5755 5756@noindent 5757@value{GDBN} does 5758not actually evaluate @var{expression} at the time the @code{condition} 5759command (or a command that sets a breakpoint with a condition, like 5760@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}. 5761 5762@item condition -force @var{bnum} @var{expression} 5763When the @code{-force} flag is used, define the condition even if 5764@var{expression} is invalid at all the current locations of breakpoint 5765@var{bnum}. This is similar to the @code{-force-condition} option 5766of the @code{break} command. 5767 5768@item condition @var{bnum} 5769Remove the condition from breakpoint number @var{bnum}. It becomes 5770an ordinary unconditional breakpoint. 5771@end table 5772 5773@cindex ignore count (of breakpoint) 5774A special case of a breakpoint condition is to stop only when the 5775breakpoint has been reached a certain number of times. This is so 5776useful that there is a special way to do it, using the @dfn{ignore 5777count} of the breakpoint. Every breakpoint has an ignore count, which 5778is an integer. Most of the time, the ignore count is zero, and 5779therefore has no effect. But if your program reaches a breakpoint whose 5780ignore count is positive, then instead of stopping, it just decrements 5781the ignore count by one and continues. As a result, if the ignore count 5782value is @var{n}, the breakpoint does not stop the next @var{n} times 5783your program reaches it. 5784 5785@table @code 5786@kindex ignore 5787@item ignore @var{bnum} @var{count} 5788Set the ignore count of breakpoint number @var{bnum} to @var{count}. 5789The next @var{count} times the breakpoint is reached, your program's 5790execution does not stop; other than to decrement the ignore count, @value{GDBN} 5791takes no action. 5792 5793To make the breakpoint stop the next time it is reached, specify 5794a count of zero. 5795 5796When you use @code{continue} to resume execution of your program from a 5797breakpoint, you can specify an ignore count directly as an argument to 5798@code{continue}, rather than using @code{ignore}. @xref{Continuing and 5799Stepping,,Continuing and Stepping}. 5800 5801If a breakpoint has a positive ignore count and a condition, the 5802condition is not checked. Once the ignore count reaches zero, 5803@value{GDBN} resumes checking the condition. 5804 5805You could achieve the effect of the ignore count with a condition such 5806as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that 5807is decremented each time. @xref{Convenience Vars, ,Convenience 5808Variables}. 5809@end table 5810 5811Ignore counts apply to breakpoints, watchpoints, and catchpoints. 5812 5813 5814@node Break Commands 5815@subsection Breakpoint Command Lists 5816 5817@cindex breakpoint commands 5818You can give any breakpoint (or watchpoint or catchpoint) a series of 5819commands to execute when your program stops due to that breakpoint. For 5820example, you might want to print the values of certain expressions, or 5821enable other breakpoints. 5822 5823@table @code 5824@kindex commands 5825@kindex end@r{ (breakpoint commands)} 5826@item commands @r{[}@var{list}@dots{}@r{]} 5827@itemx @dots{} @var{command-list} @dots{} 5828@itemx end 5829Specify a list of commands for the given breakpoints. The commands 5830themselves appear on the following lines. Type a line containing just 5831@code{end} to terminate the commands. 5832 5833To remove all commands from a breakpoint, type @code{commands} and 5834follow it immediately with @code{end}; that is, give no commands. 5835 5836With no argument, @code{commands} refers to the last breakpoint, 5837watchpoint, or catchpoint set (not to the breakpoint most recently 5838encountered). If the most recent breakpoints were set with a single 5839command, then the @code{commands} will apply to all the breakpoints 5840set by that command. This applies to breakpoints set by 5841@code{rbreak}, and also applies when a single @code{break} command 5842creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous 5843Expressions}). 5844@end table 5845 5846Pressing @key{RET} as a means of repeating the last @value{GDBN} command is 5847disabled within a @var{command-list}. 5848 5849Inside a command list, you can use the command 5850@kbd{disable $_hit_bpnum} to disable the encountered breakpoint. 5851 5852If your breakpoint has several code locations, the command 5853@kbd{disable $_hit_bpnum.$_hit_locno} will disable the specific breakpoint 5854code location encountered. If the breakpoint has only one location, 5855this command will disable the encountered breakpoint. 5856 5857You can use breakpoint commands to start your program up again. Simply 5858use the @code{continue} command, or @code{step}, or any other command 5859that resumes execution. 5860 5861Any other commands in the command list, after a command that resumes 5862execution, are ignored. This is because any time you resume execution 5863(even with a simple @code{next} or @code{step}), you may encounter 5864another breakpoint---which could have its own command list, leading to 5865ambiguities about which list to execute. 5866 5867@kindex silent 5868If the first command you specify in a command list is @code{silent}, the 5869usual message about stopping at a breakpoint is not printed. This may 5870be desirable for breakpoints that are to print a specific message and 5871then continue. If none of the remaining commands print anything, you 5872see no sign that the breakpoint was reached. @code{silent} is 5873meaningful only at the beginning of a breakpoint command list. 5874 5875The commands @code{echo}, @code{output}, and @code{printf} allow you to 5876print precisely controlled output, and are often useful in silent 5877breakpoints. @xref{Output, ,Commands for Controlled Output}. 5878 5879For example, here is how you could use breakpoint commands to print the 5880value of @code{x} at entry to @code{foo} whenever @code{x} is positive. 5881 5882@smallexample 5883break foo if x>0 5884commands 5885silent 5886printf "x is %d\n",x 5887cont 5888end 5889@end smallexample 5890 5891One application for breakpoint commands is to compensate for one bug so 5892you can test for another. Put a breakpoint just after the erroneous line 5893of code, give it a condition to detect the case in which something 5894erroneous has been done, and give it commands to assign correct values 5895to any variables that need them. End with the @code{continue} command 5896so that your program does not stop, and start with the @code{silent} 5897command so that no output is produced. Here is an example: 5898 5899@smallexample 5900break 403 5901commands 5902silent 5903set x = y + 4 5904cont 5905end 5906@end smallexample 5907 5908@node Dynamic Printf 5909@subsection Dynamic Printf 5910 5911@cindex dynamic printf 5912@cindex dprintf 5913The dynamic printf command @code{dprintf} combines a breakpoint with 5914formatted printing of your program's data to give you the effect of 5915inserting @code{printf} calls into your program on-the-fly, without 5916having to recompile it. 5917 5918In its most basic form, the output goes to the GDB console. However, 5919you can set the variable @code{dprintf-style} for alternate handling. 5920For instance, you can ask to format the output by calling your 5921program's @code{printf} function. This has the advantage that the 5922characters go to the program's output device, so they can recorded in 5923redirects to files and so forth. 5924 5925If you are doing remote debugging with a stub or agent, you can also 5926ask to have the printf handled by the remote agent. In addition to 5927ensuring that the output goes to the remote program's device along 5928with any other output the program might produce, you can also ask that 5929the dprintf remain active even after disconnecting from the remote 5930target. Using the stub/agent is also more efficient, as it can do 5931everything without needing to communicate with @value{GDBN}. 5932 5933@table @code 5934@kindex dprintf 5935@item dprintf @var{locspec},@var{template},@var{expression}[,@var{expression}@dots{}] 5936Whenever execution reaches a code location that results from resolving 5937@var{locspec}, print the values of one or more @var{expressions} under 5938the control of the string @var{template}. To print several values, 5939separate them with commas. 5940 5941@item set dprintf-style @var{style} 5942Set the dprintf output to be handled in one of several different 5943styles enumerated below. A change of style affects all existing 5944dynamic printfs immediately. (If you need individual control over the 5945print commands, simply define normal breakpoints with 5946explicitly-supplied command lists.) 5947 5948@table @code 5949@item gdb 5950@kindex dprintf-style gdb 5951Handle the output using the @value{GDBN} @code{printf} command. 5952 5953@item call 5954@kindex dprintf-style call 5955Handle the output by calling a function in your program (normally 5956@code{printf}). 5957 5958@item agent 5959@kindex dprintf-style agent 5960Have the remote debugging agent (such as @code{gdbserver}) handle 5961the output itself. This style is only available for agents that 5962support running commands on the target. 5963@end table 5964 5965@item set dprintf-function @var{function} 5966Set the function to call if the dprintf style is @code{call}. By 5967default its value is @code{printf}. You may set it to any expression. 5968that @value{GDBN} can evaluate to a function, as per the @code{call} 5969command. 5970 5971@item set dprintf-channel @var{channel} 5972Set a ``channel'' for dprintf. If set to a non-empty value, 5973@value{GDBN} will evaluate it as an expression and pass the result as 5974a first argument to the @code{dprintf-function}, in the manner of 5975@code{fprintf} and similar functions. Otherwise, the dprintf format 5976string will be the first argument, in the manner of @code{printf}. 5977 5978As an example, if you wanted @code{dprintf} output to go to a logfile 5979that is a standard I/O stream assigned to the variable @code{mylog}, 5980you could do the following: 5981 5982@example 5983(gdb) set dprintf-style call 5984(gdb) set dprintf-function fprintf 5985(gdb) set dprintf-channel mylog 5986(gdb) dprintf 25,"at line 25, glob=%d\n",glob 5987Dprintf 1 at 0x123456: file main.c, line 25. 5988(gdb) info break 59891 dprintf keep y 0x00123456 in main at main.c:25 5990 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob) 5991 continue 5992(gdb) 5993@end example 5994 5995Note that the @code{info break} displays the dynamic printf commands 5996as normal breakpoint commands; you can thus easily see the effect of 5997the variable settings. 5998 5999@item set disconnected-dprintf on 6000@itemx set disconnected-dprintf off 6001@kindex set disconnected-dprintf 6002Choose whether @code{dprintf} commands should continue to run if 6003@value{GDBN} has disconnected from the target. This only applies 6004if the @code{dprintf-style} is @code{agent}. 6005 6006@item show disconnected-dprintf off 6007@kindex show disconnected-dprintf 6008Show the current choice for disconnected @code{dprintf}. 6009 6010@end table 6011 6012@value{GDBN} does not check the validity of function and channel, 6013relying on you to supply values that are meaningful for the contexts 6014in which they are being used. For instance, the function and channel 6015may be the values of local variables, but if that is the case, then 6016all enabled dynamic prints must be at locations within the scope of 6017those locals. If evaluation fails, @value{GDBN} will report an error. 6018 6019@node Save Breakpoints 6020@subsection How to save breakpoints to a file 6021 6022To save breakpoint definitions to a file use the @w{@code{save 6023breakpoints}} command. 6024 6025@table @code 6026@kindex save breakpoints 6027@cindex save breakpoints to a file for future sessions 6028@item save breakpoints [@var{filename}] 6029This command saves all current breakpoint definitions together with 6030their commands and ignore counts, into a file @file{@var{filename}} 6031suitable for use in a later debugging session. This includes all 6032types of breakpoints (breakpoints, watchpoints, catchpoints, 6033tracepoints). To read the saved breakpoint definitions, use the 6034@code{source} command (@pxref{Command Files}). Note that watchpoints 6035with expressions involving local variables may fail to be recreated 6036because it may not be possible to access the context where the 6037watchpoint is valid anymore. Because the saved breakpoint definitions 6038are simply a sequence of @value{GDBN} commands that recreate the 6039breakpoints, you can edit the file in your favorite editing program, 6040and remove the breakpoint definitions you're not interested in, or 6041that can no longer be recreated. 6042@end table 6043 6044@node Static Probe Points 6045@subsection Static Probe Points 6046 6047@cindex static probe point, SystemTap 6048@cindex static probe point, DTrace 6049@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands 6050for Statically Defined Tracing, and the probes are designed to have a tiny 6051runtime code and data footprint, and no dynamic relocations. 6052 6053Currently, the following types of probes are supported on 6054ELF-compatible systems: 6055 6056@itemize @bullet 6057 6058@item @code{SystemTap} (@uref{http://sourceware.org/systemtap/}) 6059@acronym{SDT} probes@footnote{See 6060@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps} 6061for more information on how to add @code{SystemTap} @acronym{SDT} 6062probes in your applications.}. @code{SystemTap} probes are usable 6063from assembly, C and C@t{++} languages@footnote{See 6064@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation} 6065for a good reference on how the @acronym{SDT} probes are implemented.}. 6066 6067@item @code{DTrace} (@uref{http://oss.oracle.com/projects/DTrace}) 6068@acronym{USDT} probes. @code{DTrace} probes are usable from C and 6069C@t{++} languages. 6070@end itemize 6071 6072@cindex semaphores on static probe points 6073Some @code{SystemTap} probes have an associated semaphore variable; 6074for instance, this happens automatically if you defined your probe 6075using a DTrace-style @file{.d} file. If your probe has a semaphore, 6076@value{GDBN} will automatically enable it when you specify a 6077breakpoint using the @samp{-probe-stap} notation. But, if you put a 6078breakpoint at a probe's location by some other method (e.g., 6079@code{break file:line}), then @value{GDBN} will not automatically set 6080the semaphore. @code{DTrace} probes do not support semaphores. 6081 6082You can examine the available static static probes using @code{info 6083probes}, with optional arguments: 6084 6085@table @code 6086@kindex info probes 6087@item info probes @r{[}@var{type}@r{]} @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 6088If given, @var{type} is either @code{stap} for listing 6089@code{SystemTap} probes or @code{dtrace} for listing @code{DTrace} 6090probes. If omitted all probes are listed regardless of their types. 6091 6092If given, @var{provider} is a regular expression used to match against provider 6093names when selecting which probes to list. If omitted, probes by all 6094probes from all providers are listed. 6095 6096If given, @var{name} is a regular expression to match against probe names 6097when selecting which probes to list. If omitted, probe names are not 6098considered when deciding whether to display them. 6099 6100If given, @var{objfile} is a regular expression used to select which 6101object files (executable or shared libraries) to examine. If not 6102given, all object files are considered. 6103 6104@item info probes all 6105List the available static probes, from all types. 6106@end table 6107 6108@cindex enabling and disabling probes 6109Some probe points can be enabled and/or disabled. The effect of 6110enabling or disabling a probe depends on the type of probe being 6111handled. Some @code{DTrace} probes can be enabled or 6112disabled, but @code{SystemTap} probes cannot be disabled. 6113 6114You can enable (or disable) one or more probes using the following 6115commands, with optional arguments: 6116 6117@table @code 6118@kindex enable probes 6119@item enable probes @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 6120If given, @var{provider} is a regular expression used to match against 6121provider names when selecting which probes to enable. If omitted, 6122all probes from all providers are enabled. 6123 6124If given, @var{name} is a regular expression to match against probe 6125names when selecting which probes to enable. If omitted, probe names 6126are not considered when deciding whether to enable them. 6127 6128If given, @var{objfile} is a regular expression used to select which 6129object files (executable or shared libraries) to examine. If not 6130given, all object files are considered. 6131 6132@kindex disable probes 6133@item disable probes @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]} 6134See the @code{enable probes} command above for a description of the 6135optional arguments accepted by this command. 6136@end table 6137 6138@vindex $_probe_arg@r{, convenience variable} 6139A probe may specify up to twelve arguments. These are available at the 6140point at which the probe is defined---that is, when the current PC is 6141at the probe's location. The arguments are available using the 6142convenience variables (@pxref{Convenience Vars}) 6143@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. In @code{SystemTap} 6144probes each probe argument is an integer of the appropriate size; 6145types are not preserved. In @code{DTrace} probes types are preserved 6146provided that they are recognized as such by @value{GDBN}; otherwise 6147the value of the probe argument will be a long integer. The 6148convenience variable @code{$_probe_argc} holds the number of arguments 6149at the current probe point. 6150 6151These variables are always available, but attempts to access them at 6152any location other than a probe point will cause @value{GDBN} to give 6153an error message. 6154 6155 6156@c @ifclear BARETARGET 6157@node Error in Breakpoints 6158@subsection ``Cannot insert breakpoints'' 6159 6160If you request too many active hardware-assisted breakpoints and 6161watchpoints, you will see this error message: 6162 6163@c FIXME: the precise wording of this message may change; the relevant 6164@c source change is not committed yet (Sep 3, 1999). 6165@smallexample 6166Stopped; cannot insert breakpoints. 6167You may have requested too many hardware breakpoints and watchpoints. 6168@end smallexample 6169 6170@noindent 6171This message is printed when you attempt to resume the program, since 6172only then @value{GDBN} knows exactly how many hardware breakpoints and 6173watchpoints it needs to insert. 6174 6175When this message is printed, you need to disable or remove some of the 6176hardware-assisted breakpoints and watchpoints, and then continue. 6177 6178@node Breakpoint-related Warnings 6179@subsection ``Breakpoint address adjusted...'' 6180@cindex breakpoint address adjusted 6181 6182Some processor architectures place constraints on the addresses at 6183which breakpoints may be placed. For architectures thus constrained, 6184@value{GDBN} will attempt to adjust the breakpoint's address to comply 6185with the constraints dictated by the architecture. 6186 6187One example of such an architecture is the Fujitsu FR-V. The FR-V is 6188a VLIW architecture in which a number of RISC-like instructions may be 6189bundled together for parallel execution. The FR-V architecture 6190constrains the location of a breakpoint instruction within such a 6191bundle to the instruction with the lowest address. @value{GDBN} 6192honors this constraint by adjusting a breakpoint's address to the 6193first in the bundle. 6194 6195It is not uncommon for optimized code to have bundles which contain 6196instructions from different source statements, thus it may happen that 6197a breakpoint's address will be adjusted from one source statement to 6198another. Since this adjustment may significantly alter @value{GDBN}'s 6199breakpoint related behavior from what the user expects, a warning is 6200printed when the breakpoint is first set and also when the breakpoint 6201is hit. 6202 6203A warning like the one below is printed when setting a breakpoint 6204that's been subject to address adjustment: 6205 6206@smallexample 6207warning: Breakpoint address adjusted from 0x00010414 to 0x00010410. 6208@end smallexample 6209 6210Such warnings are printed both for user settable and @value{GDBN}'s 6211internal breakpoints. If you see one of these warnings, you should 6212verify that a breakpoint set at the adjusted address will have the 6213desired affect. If not, the breakpoint in question may be removed and 6214other breakpoints may be set which will have the desired behavior. 6215E.g., it may be sufficient to place the breakpoint at a later 6216instruction. A conditional breakpoint may also be useful in some 6217cases to prevent the breakpoint from triggering too often. 6218 6219@value{GDBN} will also issue a warning when stopping at one of these 6220adjusted breakpoints: 6221 6222@smallexample 6223warning: Breakpoint 1 address previously adjusted from 0x00010414 6224to 0x00010410. 6225@end smallexample 6226 6227When this warning is encountered, it may be too late to take remedial 6228action except in cases where the breakpoint is hit earlier or more 6229frequently than expected. 6230 6231@node Continuing and Stepping 6232@section Continuing and Stepping 6233 6234@cindex stepping 6235@cindex continuing 6236@cindex resuming execution 6237@dfn{Continuing} means resuming program execution until your program 6238completes normally. In contrast, @dfn{stepping} means executing just 6239one more ``step'' of your program, where ``step'' may mean either one 6240line of source code, or one machine instruction (depending on what 6241particular command you use). Either when continuing or when stepping, 6242your program may stop even sooner, due to a breakpoint or a signal. (If 6243it stops due to a signal, you may want to use @code{handle}, or use 6244@samp{signal 0} to resume execution (@pxref{Signals, ,Signals}), 6245or you may step into the signal's handler (@pxref{stepping and signal 6246handlers}).) 6247 6248@table @code 6249@kindex continue 6250@kindex c @r{(@code{continue})} 6251@kindex fg @r{(resume foreground execution)} 6252@item continue @r{[}@var{ignore-count}@r{]} 6253@itemx c @r{[}@var{ignore-count}@r{]} 6254@itemx fg @r{[}@var{ignore-count}@r{]} 6255Resume program execution, at the address where your program last stopped; 6256any breakpoints set at that address are bypassed. The optional argument 6257@var{ignore-count} allows you to specify a further number of times to 6258ignore a breakpoint at this location; its effect is like that of 6259@code{ignore} (@pxref{Conditions, ,Break Conditions}). 6260 6261The argument @var{ignore-count} is meaningful only when your program 6262stopped due to a breakpoint. At other times, the argument to 6263@code{continue} is ignored. 6264 6265The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the 6266debugged program is deemed to be the foreground program) are provided 6267purely for convenience, and have exactly the same behavior as 6268@code{continue}. 6269@end table 6270 6271To resume execution at a different place, you can use @code{return} 6272(@pxref{Returning, ,Returning from a Function}) to go back to the 6273calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a 6274Different Address}) to go to an arbitrary location in your program. 6275 6276A typical technique for using stepping is to set a breakpoint 6277(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the 6278beginning of the function or the section of your program where a problem 6279is believed to lie, run your program until it stops at that breakpoint, 6280and then step through the suspect area, examining the variables that are 6281interesting, until you see the problem happen. 6282 6283@table @code 6284@kindex step 6285@kindex s @r{(@code{step})} 6286@item step 6287Continue running your program until control reaches a different source 6288line, then stop it and return control to @value{GDBN}. This command is 6289abbreviated @code{s}. 6290 6291@quotation 6292@c "without debugging information" is imprecise; actually "without line 6293@c numbers in the debugging information". (gcc -g1 has debugging info but 6294@c not line numbers). But it seems complex to try to make that 6295@c distinction here. 6296@emph{Warning:} If you use the @code{step} command while control is 6297within a function that was compiled without debugging information, 6298execution proceeds until control reaches a function that does have 6299debugging information. Likewise, it will not step into a function which 6300is compiled without debugging information. To step through functions 6301without debugging information, use the @code{stepi} command, described 6302below. 6303@end quotation 6304 6305The @code{step} command only stops at the first instruction of a source 6306line. This prevents the multiple stops that could otherwise occur in 6307@code{switch} statements, @code{for} loops, etc. @code{step} continues 6308to stop if a function that has debugging information is called within 6309the line. In other words, @code{step} @emph{steps inside} any functions 6310called within the line. 6311 6312Also, the @code{step} command only enters a function if there is line 6313number information for the function. Otherwise it acts like the 6314@code{next} command. This avoids problems when using @code{cc -gl} 6315on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there 6316was any debugging information about the routine. 6317 6318@item step @var{count} 6319Continue running as in @code{step}, but do so @var{count} times. If a 6320breakpoint is reached, or a signal not related to stepping occurs before 6321@var{count} steps, stepping stops right away. 6322 6323@kindex next 6324@kindex n @r{(@code{next})} 6325@item next @r{[}@var{count}@r{]} 6326Continue to the next source line in the current (innermost) stack frame. 6327This is similar to @code{step}, but function calls that appear within 6328the line of code are executed without stopping. Execution stops when 6329control reaches a different line of code at the original stack level 6330that was executing when you gave the @code{next} command. This command 6331is abbreviated @code{n}. 6332 6333An argument @var{count} is a repeat count, as for @code{step}. 6334 6335 6336@c FIX ME!! Do we delete this, or is there a way it fits in with 6337@c the following paragraph? --- Vctoria 6338@c 6339@c @code{next} within a function that lacks debugging information acts like 6340@c @code{step}, but any function calls appearing within the code of the 6341@c function are executed without stopping. 6342 6343The @code{next} command only stops at the first instruction of a 6344source line. This prevents multiple stops that could otherwise occur in 6345@code{switch} statements, @code{for} loops, etc. 6346 6347@kindex set step-mode 6348@item set step-mode 6349@cindex functions without line info, and stepping 6350@cindex stepping into functions with no line info 6351@itemx set step-mode on 6352The @code{set step-mode on} command causes the @code{step} command to 6353stop at the first instruction of a function which contains no debug line 6354information rather than stepping over it. 6355 6356This is useful in cases where you may be interested in inspecting the 6357machine instructions of a function which has no symbolic info and do not 6358want @value{GDBN} to automatically skip over this function. 6359 6360@item set step-mode off 6361Causes the @code{step} command to step over any functions which contains no 6362debug information. This is the default. 6363 6364@item show step-mode 6365Show whether @value{GDBN} will stop in or step over functions without 6366source line debug information. 6367 6368@kindex finish 6369@kindex fin @r{(@code{finish})} 6370@item finish 6371Continue running until just after function in the selected stack frame 6372returns. Print the returned value (if any). This command can be 6373abbreviated as @code{fin}. 6374 6375Contrast this with the @code{return} command (@pxref{Returning, 6376,Returning from a Function}). 6377 6378@kindex set print finish 6379@kindex show print finish 6380@item set print finish @r{[}on|off@r{]} 6381@itemx show print finish 6382By default the @code{finish} command will show the value that is 6383returned by the function. This can be disabled using @code{set print 6384finish off}. When disabled, the value is still entered into the value 6385history (@pxref{Value History}), but not displayed. 6386 6387@kindex until 6388@kindex u @r{(@code{until})} 6389@cindex run until specified location 6390@item until 6391@itemx u 6392Continue running until a source line past the current line, in the 6393current stack frame, is reached. This command is used to avoid single 6394stepping through a loop more than once. It is like the @code{next} 6395command, except that when @code{until} encounters a jump, it 6396automatically continues execution until the program counter is greater 6397than the address of the jump. 6398 6399This means that when you reach the end of a loop after single stepping 6400though it, @code{until} makes your program continue execution until it 6401exits the loop. In contrast, a @code{next} command at the end of a loop 6402simply steps back to the beginning of the loop, which forces you to step 6403through the next iteration. 6404 6405@code{until} always stops your program if it attempts to exit the current 6406stack frame. 6407 6408@code{until} may produce somewhat counterintuitive results if the order 6409of machine code does not match the order of the source lines. For 6410example, in the following excerpt from a debugging session, the @code{f} 6411(@code{frame}) command shows that execution is stopped at line 6412@code{206}; yet when we use @code{until}, we get to line @code{195}: 6413 6414@smallexample 6415(@value{GDBP}) f 6416#0 main (argc=4, argv=0xf7fffae8) at m4.c:206 6417206 expand_input(); 6418(@value{GDBP}) until 6419195 for ( ; argc > 0; NEXTARG) @{ 6420@end smallexample 6421 6422This happened because, for execution efficiency, the compiler had 6423generated code for the loop closure test at the end, rather than the 6424start, of the loop---even though the test in a C @code{for}-loop is 6425written before the body of the loop. The @code{until} command appeared 6426to step back to the beginning of the loop when it advanced to this 6427expression; however, it has not really gone to an earlier 6428statement---not in terms of the actual machine code. 6429 6430@code{until} with no argument works by means of single 6431instruction stepping, and hence is slower than @code{until} with an 6432argument. 6433 6434@item until @var{locspec} 6435@itemx u @var{locspec} 6436Continue running your program until either it reaches a code location 6437that results from resolving @var{locspec}, or the current stack frame 6438returns. @var{locspec} is any of the forms described in @ref{Location 6439Specifications}. 6440This form of the command uses temporary breakpoints, and 6441hence is quicker than @code{until} without an argument. The specified 6442location is actually reached only if it is in the current frame. This 6443implies that @code{until} can be used to skip over recursive function 6444invocations. For instance in the code below, if the current location is 6445line @code{96}, issuing @code{until 99} will execute the program up to 6446line @code{99} in the same invocation of factorial, i.e., after the inner 6447invocations have returned. 6448 6449@smallexample 645094 int factorial (int value) 645195 @{ 645296 if (value > 1) @{ 645397 value *= factorial (value - 1); 645498 @} 645599 return (value); 6456100 @} 6457@end smallexample 6458 6459 6460@kindex advance @var{locspec} 6461@item advance @var{locspec} 6462Continue running your program until either it reaches a code location 6463that results from resolving @var{locspec}, or the current stack frame 6464returns. @var{locspec} is any of the forms described in @ref{Location 6465Specifications}. This command is similar to @code{until}, but 6466@code{advance} will not skip over recursive function calls, and the 6467target code location doesn't have to be in the same frame as the 6468current one. 6469 6470 6471@kindex stepi 6472@kindex si @r{(@code{stepi})} 6473@item stepi 6474@itemx stepi @var{arg} 6475@itemx si 6476Execute one machine instruction, then stop and return to the debugger. 6477 6478It is often useful to do @samp{display/i $pc} when stepping by machine 6479instructions. This makes @value{GDBN} automatically display the next 6480instruction to be executed, each time your program stops. @xref{Auto 6481Display,, Automatic Display}. 6482 6483An argument is a repeat count, as in @code{step}. 6484 6485@need 750 6486@kindex nexti 6487@kindex ni @r{(@code{nexti})} 6488@item nexti 6489@itemx nexti @var{arg} 6490@itemx ni 6491Execute one machine instruction, but if it is a function call, 6492proceed until the function returns. 6493 6494An argument is a repeat count, as in @code{next}. 6495 6496@end table 6497 6498@anchor{range stepping} 6499@cindex range stepping 6500@cindex target-assisted range stepping 6501By default, and if available, @value{GDBN} makes use of 6502target-assisted @dfn{range stepping}. In other words, whenever you 6503use a stepping command (e.g., @code{step}, @code{next}), @value{GDBN} 6504tells the target to step the corresponding range of instruction 6505addresses instead of issuing multiple single-steps. This speeds up 6506line stepping, particularly for remote targets. Ideally, there should 6507be no reason you would want to turn range stepping off. However, it's 6508possible that a bug in the debug info, a bug in the remote stub (for 6509remote targets), or even a bug in @value{GDBN} could make line 6510stepping behave incorrectly when target-assisted range stepping is 6511enabled. You can use the following command to turn off range stepping 6512if necessary: 6513 6514@table @code 6515@kindex set range-stepping 6516@kindex show range-stepping 6517@item set range-stepping 6518@itemx show range-stepping 6519Control whether range stepping is enabled. 6520 6521If @code{on}, and the target supports it, @value{GDBN} tells the 6522target to step a range of addresses itself, instead of issuing 6523multiple single-steps. If @code{off}, @value{GDBN} always issues 6524single-steps, even if range stepping is supported by the target. The 6525default is @code{on}. 6526 6527@end table 6528 6529@node Skipping Over Functions and Files 6530@section Skipping Over Functions and Files 6531@cindex skipping over functions and files 6532 6533The program you are debugging may contain some functions which are 6534uninteresting to debug. The @code{skip} command lets you tell @value{GDBN} to 6535skip a function, all functions in a file or a particular function in 6536a particular file when stepping. 6537 6538For example, consider the following C function: 6539 6540@smallexample 6541101 int func() 6542102 @{ 6543103 foo(boring()); 6544104 bar(boring()); 6545105 @} 6546@end smallexample 6547 6548@noindent 6549Suppose you wish to step into the functions @code{foo} and @code{bar}, but you 6550are not interested in stepping through @code{boring}. If you run @code{step} 6551at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll 6552step over both @code{foo} and @code{boring}! 6553 6554One solution is to @code{step} into @code{boring} and use the @code{finish} 6555command to immediately exit it. But this can become tedious if @code{boring} 6556is called from many places. 6557 6558A more flexible solution is to execute @kbd{skip boring}. This instructs 6559@value{GDBN} never to step into @code{boring}. Now when you execute 6560@code{step} at line 103, you'll step over @code{boring} and directly into 6561@code{foo}. 6562 6563Functions may be skipped by providing either a function name, linespec 6564(@pxref{Location Specifications}), regular expression that matches the function's 6565name, file name or a @code{glob}-style pattern that matches the file name. 6566 6567On Posix systems the form of the regular expression is 6568``Extended Regular Expressions''. See for example @samp{man 7 regex} 6569on @sc{gnu}/Linux systems. On non-Posix systems the form of the regular 6570expression is whatever is provided by the @code{regcomp} function of 6571the underlying system. 6572See for example @samp{man 7 glob} on @sc{gnu}/Linux systems for a 6573description of @code{glob}-style patterns. 6574 6575@table @code 6576@kindex skip 6577@item skip @r{[}@var{options}@r{]} 6578The basic form of the @code{skip} command takes zero or more options 6579that specify what to skip. 6580The @var{options} argument is any useful combination of the following: 6581 6582@table @code 6583@item -file @var{file} 6584@itemx -fi @var{file} 6585Functions in @var{file} will be skipped over when stepping. 6586 6587@item -gfile @var{file-glob-pattern} 6588@itemx -gfi @var{file-glob-pattern} 6589@cindex skipping over files via glob-style patterns 6590Functions in files matching @var{file-glob-pattern} will be skipped 6591over when stepping. 6592 6593@smallexample 6594(gdb) skip -gfi utils/*.c 6595@end smallexample 6596 6597@item -function @var{linespec} 6598@itemx -fu @var{linespec} 6599Functions named by @var{linespec} or the function containing the line 6600named by @var{linespec} will be skipped over when stepping. 6601@xref{Location Specifications}. 6602 6603@item -rfunction @var{regexp} 6604@itemx -rfu @var{regexp} 6605@cindex skipping over functions via regular expressions 6606Functions whose name matches @var{regexp} will be skipped over when stepping. 6607 6608This form is useful for complex function names. 6609For example, there is generally no need to step into C@t{++} @code{std::string} 6610constructors or destructors. Plus with C@t{++} templates it can be hard to 6611write out the full name of the function, and often it doesn't matter what 6612the template arguments are. Specifying the function to be skipped as a 6613regular expression makes this easier. 6614 6615@smallexample 6616(gdb) skip -rfu ^std::(allocator|basic_string)<.*>::~?\1 *\( 6617@end smallexample 6618 6619If you want to skip every templated C@t{++} constructor and destructor 6620in the @code{std} namespace you can do: 6621 6622@smallexample 6623(gdb) skip -rfu ^std::([a-zA-z0-9_]+)<.*>::~?\1 *\( 6624@end smallexample 6625@end table 6626 6627If no options are specified, the function you're currently debugging 6628will be skipped. 6629 6630@kindex skip function 6631@item skip function @r{[}@var{linespec}@r{]} 6632After running this command, the function named by @var{linespec} or the 6633function containing the line named by @var{linespec} will be skipped over when 6634stepping. @xref{Location Specifications}. 6635 6636If you do not specify @var{linespec}, the function you're currently debugging 6637will be skipped. 6638 6639(If you have a function called @code{file} that you want to skip, use 6640@kbd{skip function file}.) 6641 6642@kindex skip file 6643@item skip file @r{[}@var{filename}@r{]} 6644After running this command, any function whose source lives in @var{filename} 6645will be skipped over when stepping. 6646 6647@smallexample 6648(gdb) skip file boring.c 6649File boring.c will be skipped when stepping. 6650@end smallexample 6651 6652If you do not specify @var{filename}, functions whose source lives in the file 6653you're currently debugging will be skipped. 6654@end table 6655 6656Skips can be listed, deleted, disabled, and enabled, much like breakpoints. 6657These are the commands for managing your list of skips: 6658 6659@table @code 6660@kindex info skip 6661@item info skip @r{[}@var{range}@r{]} 6662Print details about the specified skip(s). If @var{range} is not specified, 6663print a table with details about all functions and files marked for skipping. 6664@code{info skip} prints the following information about each skip: 6665 6666@table @emph 6667@item Identifier 6668A number identifying this skip. 6669@item Enabled or Disabled 6670Enabled skips are marked with @samp{y}. 6671Disabled skips are marked with @samp{n}. 6672@item Glob 6673If the file name is a @samp{glob} pattern this is @samp{y}. 6674Otherwise it is @samp{n}. 6675@item File 6676The name or @samp{glob} pattern of the file to be skipped. 6677If no file is specified this is @samp{<none>}. 6678@item RE 6679If the function name is a @samp{regular expression} this is @samp{y}. 6680Otherwise it is @samp{n}. 6681@item Function 6682The name or regular expression of the function to skip. 6683If no function is specified this is @samp{<none>}. 6684@end table 6685 6686@kindex skip delete 6687@item skip delete @r{[}@var{range}@r{]} 6688Delete the specified skip(s). If @var{range} is not specified, delete all 6689skips. 6690 6691@kindex skip enable 6692@item skip enable @r{[}@var{range}@r{]} 6693Enable the specified skip(s). If @var{range} is not specified, enable all 6694skips. 6695 6696@kindex skip disable 6697@item skip disable @r{[}@var{range}@r{]} 6698Disable the specified skip(s). If @var{range} is not specified, disable all 6699skips. 6700 6701@kindex set debug skip 6702@item set debug skip @r{[}on|off@r{]} 6703Set whether to print the debug output about skipping files and functions. 6704 6705@kindex show debug skip 6706@item show debug skip 6707Show whether the debug output about skipping files and functions is printed. 6708 6709@end table 6710 6711@node Signals 6712@section Signals 6713@cindex signals 6714 6715A signal is an asynchronous event that can happen in a program. The 6716operating system defines the possible kinds of signals, and gives each 6717kind a name and a number. For example, in Unix @code{SIGINT} is the 6718signal a program gets when you type an interrupt character (often @kbd{Ctrl-c}); 6719@code{SIGSEGV} is the signal a program gets from referencing a place in 6720memory far away from all the areas in use; @code{SIGALRM} occurs when 6721the alarm clock timer goes off (which happens only if your program has 6722requested an alarm). 6723 6724@cindex fatal signals 6725Some signals, including @code{SIGALRM}, are a normal part of the 6726functioning of your program. Others, such as @code{SIGSEGV}, indicate 6727errors; these signals are @dfn{fatal} (they kill your program immediately) if the 6728program has not specified in advance some other way to handle the signal. 6729@code{SIGINT} does not indicate an error in your program, but it is normally 6730fatal so it can carry out the purpose of the interrupt: to kill the program. 6731 6732@value{GDBN} has the ability to detect any occurrence of a signal in your 6733program. You can tell @value{GDBN} in advance what to do for each kind of 6734signal. 6735 6736@cindex handling signals 6737Normally, @value{GDBN} is set up to let the non-erroneous signals like 6738@code{SIGALRM} be silently passed to your program 6739(so as not to interfere with their role in the program's functioning) 6740but to stop your program immediately whenever an error signal happens. 6741You can change these settings with the @code{handle} command. 6742 6743@table @code 6744@kindex info signals 6745@kindex info handle 6746@item info signals 6747@itemx info handle 6748Print a table of all the kinds of signals and how @value{GDBN} has been told to 6749handle each one. You can use this to see the signal numbers of all 6750the defined types of signals. 6751 6752@item info signals @var{sig} 6753Similar, but print information only about the specified signal number. 6754 6755@code{info handle} is an alias for @code{info signals}. 6756 6757@item catch signal @r{[}@var{signal}@dots{} @r{|} @samp{all}@r{]} 6758Set a catchpoint for the indicated signals. @xref{Set Catchpoints}, 6759for details about this command. 6760 6761@kindex handle 6762@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]} 6763Change the way @value{GDBN} handles signal @var{signal}. The @var{signal} 6764can be the number of a signal or its name (with or without the 6765@samp{SIG} at the beginning); a list of signal numbers of the form 6766@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the 6767known signals. Optional arguments @var{keywords}, described below, 6768say what change to make. 6769@end table 6770 6771@c @group 6772The keywords allowed by the @code{handle} command can be abbreviated. 6773Their full names are: 6774 6775@table @code 6776@item nostop 6777@value{GDBN} should not stop your program when this signal happens. It may 6778still print a message telling you that the signal has come in. 6779 6780@item stop 6781@value{GDBN} should stop your program when this signal happens. This implies 6782the @code{print} keyword as well. 6783 6784@item print 6785@value{GDBN} should print a message when this signal happens. 6786 6787@item noprint 6788@value{GDBN} should not mention the occurrence of the signal at all. This 6789implies the @code{nostop} keyword as well. 6790 6791@item pass 6792@itemx noignore 6793@value{GDBN} should allow your program to see this signal; your program 6794can handle the signal, or else it may terminate if the signal is fatal 6795and not handled. @code{pass} and @code{noignore} are synonyms. 6796 6797@item nopass 6798@itemx ignore 6799@value{GDBN} should not allow your program to see this signal. 6800@code{nopass} and @code{ignore} are synonyms. 6801@end table 6802@c @end group 6803 6804When a signal stops your program, the signal is not visible to the 6805program until you 6806continue. Your program sees the signal then, if @code{pass} is in 6807effect for the signal in question @emph{at that time}. In other words, 6808after @value{GDBN} reports a signal, you can use the @code{handle} 6809command with @code{pass} or @code{nopass} to control whether your 6810program sees that signal when you continue. 6811 6812The default is set to @code{nostop}, @code{noprint}, @code{pass} for 6813non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and 6814@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the 6815erroneous signals. 6816 6817You can also use the @code{signal} command to prevent your program from 6818seeing a signal, or cause it to see a signal it normally would not see, 6819or to give it any signal at any time. For example, if your program stopped 6820due to some sort of memory reference error, you might store correct 6821values into the erroneous variables and continue, hoping to see more 6822execution; but your program would probably terminate immediately as 6823a result of the fatal signal once it saw the signal. To prevent this, 6824you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your 6825Program a Signal}. 6826 6827@cindex stepping and signal handlers 6828@anchor{stepping and signal handlers} 6829 6830@value{GDBN} optimizes for stepping the mainline code. If a signal 6831that has @code{handle nostop} and @code{handle pass} set arrives while 6832a stepping command (e.g., @code{stepi}, @code{step}, @code{next}) is 6833in progress, @value{GDBN} lets the signal handler run and then resumes 6834stepping the mainline code once the signal handler returns. In other 6835words, @value{GDBN} steps over the signal handler. This prevents 6836signals that you've specified as not interesting (with @code{handle 6837nostop}) from changing the focus of debugging unexpectedly. Note that 6838the signal handler itself may still hit a breakpoint, stop for another 6839signal that has @code{handle stop} in effect, or for any other event 6840that normally results in stopping the stepping command sooner. Also 6841note that @value{GDBN} still informs you that the program received a 6842signal if @code{handle print} is set. 6843 6844@anchor{stepping into signal handlers} 6845 6846If you set @code{handle pass} for a signal, and your program sets up a 6847handler for it, then issuing a stepping command, such as @code{step} 6848or @code{stepi}, when your program is stopped due to the signal will 6849step @emph{into} the signal handler (if the target supports that). 6850 6851Likewise, if you use the @code{queue-signal} command to queue a signal 6852to be delivered to the current thread when execution of the thread 6853resumes (@pxref{Signaling, ,Giving your Program a Signal}), then a 6854stepping command will step into the signal handler. 6855 6856Here's an example, using @code{stepi} to step to the first instruction 6857of @code{SIGUSR1}'s handler: 6858 6859@smallexample 6860(@value{GDBP}) handle SIGUSR1 6861Signal Stop Print Pass to program Description 6862SIGUSR1 Yes Yes Yes User defined signal 1 6863(@value{GDBP}) c 6864Continuing. 6865 6866Program received signal SIGUSR1, User defined signal 1. 6867main () sigusr1.c:28 686828 p = 0; 6869(@value{GDBP}) si 6870sigusr1_handler () at sigusr1.c:9 68719 @{ 6872@end smallexample 6873 6874The same, but using @code{queue-signal} instead of waiting for the 6875program to receive the signal first: 6876 6877@smallexample 6878(@value{GDBP}) n 687928 p = 0; 6880(@value{GDBP}) queue-signal SIGUSR1 6881(@value{GDBP}) si 6882sigusr1_handler () at sigusr1.c:9 68839 @{ 6884(@value{GDBP}) 6885@end smallexample 6886 6887@cindex extra signal information 6888@anchor{extra signal information} 6889 6890On some targets, @value{GDBN} can inspect extra signal information 6891associated with the intercepted signal, before it is actually 6892delivered to the program being debugged. This information is exported 6893by the convenience variable @code{$_siginfo}, and consists of data 6894that is passed by the kernel to the signal handler at the time of the 6895receipt of a signal. The data type of the information itself is 6896target dependent. You can see the data type using the @code{ptype 6897$_siginfo} command. On Unix systems, it typically corresponds to the 6898standard @code{siginfo_t} type, as defined in the @file{signal.h} 6899system header. 6900 6901Here's an example, on a @sc{gnu}/Linux system, printing the stray 6902referenced address that raised a segmentation fault. 6903 6904@smallexample 6905@group 6906(@value{GDBP}) continue 6907Program received signal SIGSEGV, Segmentation fault. 69080x0000000000400766 in main () 690969 *(int *)p = 0; 6910(@value{GDBP}) ptype $_siginfo 6911type = struct @{ 6912 int si_signo; 6913 int si_errno; 6914 int si_code; 6915 union @{ 6916 int _pad[28]; 6917 struct @{...@} _kill; 6918 struct @{...@} _timer; 6919 struct @{...@} _rt; 6920 struct @{...@} _sigchld; 6921 struct @{...@} _sigfault; 6922 struct @{...@} _sigpoll; 6923 @} _sifields; 6924@} 6925(@value{GDBP}) ptype $_siginfo._sifields._sigfault 6926type = struct @{ 6927 void *si_addr; 6928@} 6929(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr 6930$1 = (void *) 0x7ffff7ff7000 6931@end group 6932@end smallexample 6933 6934Depending on target support, @code{$_siginfo} may also be writable. 6935 6936@cindex Intel MPX boundary violations 6937@cindex boundary violations, Intel MPX 6938On some targets, a @code{SIGSEGV} can be caused by a boundary 6939violation, i.e., accessing an address outside of the allowed range. 6940In those cases @value{GDBN} may displays additional information, 6941depending on how @value{GDBN} has been told to handle the signal. 6942With @code{handle stop SIGSEGV}, @value{GDBN} displays the violation 6943kind: "Upper" or "Lower", the memory address accessed and the 6944bounds, while with @code{handle nostop SIGSEGV} no additional 6945information is displayed. 6946 6947The usual output of a segfault is: 6948@smallexample 6949Program received signal SIGSEGV, Segmentation fault 69500x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68 695168 value = *(p + len); 6952@end smallexample 6953 6954While a bound violation is presented as: 6955@smallexample 6956Program received signal SIGSEGV, Segmentation fault 6957Upper bound violation while accessing address 0x7fffffffc3b3 6958Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3] 69590x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68 696068 value = *(p + len); 6961@end smallexample 6962 6963@node Thread Stops 6964@section Stopping and Starting Multi-thread Programs 6965 6966@cindex stopped threads 6967@cindex threads, stopped 6968 6969@cindex continuing threads 6970@cindex threads, continuing 6971 6972@value{GDBN} supports debugging programs with multiple threads 6973(@pxref{Threads,, Debugging Programs with Multiple Threads}). There 6974are two modes of controlling execution of your program within the 6975debugger. In the default mode, referred to as @dfn{all-stop mode}, 6976when any thread in your program stops (for example, at a breakpoint 6977or while being stepped), all other threads in the program are also stopped by 6978@value{GDBN}. On some targets, @value{GDBN} also supports 6979@dfn{non-stop mode}, in which other threads can continue to run freely while 6980you examine the stopped thread in the debugger. 6981 6982@menu 6983* All-Stop Mode:: All threads stop when GDB takes control 6984* Non-Stop Mode:: Other threads continue to execute 6985* Background Execution:: Running your program asynchronously 6986* Thread-Specific Breakpoints:: Controlling breakpoints 6987* Interrupted System Calls:: GDB may interfere with system calls 6988* Observer Mode:: GDB does not alter program behavior 6989@end menu 6990 6991@node All-Stop Mode 6992@subsection All-Stop Mode 6993 6994@cindex all-stop mode 6995 6996In all-stop mode, whenever your program stops under @value{GDBN} for any reason, 6997@emph{all} threads of execution stop, not just the current thread. This 6998allows you to examine the overall state of the program, including 6999switching between threads, without worrying that things may change 7000underfoot. 7001 7002Conversely, whenever you restart the program, @emph{all} threads start 7003executing. @emph{This is true even when single-stepping} with commands 7004like @code{step} or @code{next}. 7005 7006In particular, @value{GDBN} cannot single-step all threads in lockstep. 7007Since thread scheduling is up to your debugging target's operating 7008system (not controlled by @value{GDBN}), other threads may 7009execute more than one statement while the current thread completes a 7010single step. Moreover, in general other threads stop in the middle of a 7011statement, rather than at a clean statement boundary, when the program 7012stops. 7013 7014You might even find your program stopped in another thread after 7015continuing or even single-stepping. This happens whenever some other 7016thread runs into a breakpoint, a signal, or an exception before the 7017first thread completes whatever you requested. 7018 7019@cindex automatic thread selection 7020@cindex switching threads automatically 7021@cindex threads, automatic switching 7022Whenever @value{GDBN} stops your program, due to a breakpoint or a 7023signal, it automatically selects the thread where that breakpoint or 7024signal happened. @value{GDBN} alerts you to the context switch with a 7025message such as @samp{[Switching to Thread @var{n}]} to identify the 7026thread. 7027 7028On some OSes, you can modify @value{GDBN}'s default behavior by 7029locking the OS scheduler to allow only a single thread to run. 7030 7031@table @code 7032@item set scheduler-locking @var{mode} 7033@cindex scheduler locking mode 7034@cindex lock scheduler 7035Set the scheduler locking mode. It applies to normal execution, 7036record mode, and replay mode. @var{mode} can be one of 7037the following: 7038 7039@table @code 7040@item off 7041There is no locking and any thread may run at any time. 7042 7043@item on 7044Only the current thread may run when the inferior is resumed. 7045 7046@item step 7047Behaves like @code{on} when stepping, and @code{off} otherwise. 7048Threads other than the current never get a chance to run when you 7049step, and they are completely free to run when you use commands like 7050@samp{continue}, @samp{until}, or @samp{finish}. 7051 7052This mode optimizes for single-stepping; it prevents other threads 7053from preempting the current thread while you are stepping, so that the 7054focus of debugging does not change unexpectedly. However, unless 7055another thread hits a breakpoint during its timeslice, @value{GDBN} 7056does not change the current thread away from the thread that you are 7057debugging. 7058 7059@item replay 7060Behaves like @code{on} in replay mode, and @code{off} in either record 7061mode or during normal execution. This is the default mode. 7062@end table 7063 7064@item show scheduler-locking 7065Display the current scheduler locking mode. 7066@end table 7067 7068@cindex resume threads of multiple processes simultaneously 7069By default, when you issue one of the execution commands such as 7070@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only 7071threads of the current inferior to run. For example, if @value{GDBN} 7072is attached to two inferiors, each with two threads, the 7073@code{continue} command resumes only the two threads of the current 7074inferior. This is useful, for example, when you debug a program that 7075forks and you want to hold the parent stopped (so that, for instance, 7076it doesn't run to exit), while you debug the child. In other 7077situations, you may not be interested in inspecting the current state 7078of any of the processes @value{GDBN} is attached to, and you may want 7079to resume them all until some breakpoint is hit. In the latter case, 7080you can instruct @value{GDBN} to allow all threads of all the 7081inferiors to run with the @w{@code{set schedule-multiple}} command. 7082 7083@table @code 7084@kindex set schedule-multiple 7085@item set schedule-multiple 7086Set the mode for allowing threads of multiple processes to be resumed 7087when an execution command is issued. When @code{on}, all threads of 7088all processes are allowed to run. When @code{off}, only the threads 7089of the current process are resumed. The default is @code{off}. The 7090@code{scheduler-locking} mode takes precedence when set to @code{on}, 7091or while you are stepping and set to @code{step}. 7092 7093@item show schedule-multiple 7094Display the current mode for resuming the execution of threads of 7095multiple processes. 7096@end table 7097 7098@node Non-Stop Mode 7099@subsection Non-Stop Mode 7100 7101@cindex non-stop mode 7102 7103@c This section is really only a place-holder, and needs to be expanded 7104@c with more details. 7105 7106For some multi-threaded targets, @value{GDBN} supports an optional 7107mode of operation in which you can examine stopped program threads in 7108the debugger while other threads continue to execute freely. This 7109minimizes intrusion when debugging live systems, such as programs 7110where some threads have real-time constraints or must continue to 7111respond to external events. This is referred to as @dfn{non-stop} mode. 7112 7113In non-stop mode, when a thread stops to report a debugging event, 7114@emph{only} that thread is stopped; @value{GDBN} does not stop other 7115threads as well, in contrast to the all-stop mode behavior. Additionally, 7116execution commands such as @code{continue} and @code{step} apply by default 7117only to the current thread in non-stop mode, rather than all threads as 7118in all-stop mode. This allows you to control threads explicitly in 7119ways that are not possible in all-stop mode --- for example, stepping 7120one thread while allowing others to run freely, stepping 7121one thread while holding all others stopped, or stepping several threads 7122independently and simultaneously. 7123 7124To enter non-stop mode, use this sequence of commands before you run 7125or attach to your program: 7126 7127@smallexample 7128# If using the CLI, pagination breaks non-stop. 7129set pagination off 7130 7131# Finally, turn it on! 7132set non-stop on 7133@end smallexample 7134 7135You can use these commands to manipulate the non-stop mode setting: 7136 7137@table @code 7138@kindex set non-stop 7139@item set non-stop on 7140Enable selection of non-stop mode. 7141@item set non-stop off 7142Disable selection of non-stop mode. 7143@kindex show non-stop 7144@item show non-stop 7145Show the current non-stop enablement setting. 7146@end table 7147 7148Note these commands only reflect whether non-stop mode is enabled, 7149not whether the currently-executing program is being run in non-stop mode. 7150In particular, the @code{set non-stop} preference is only consulted when 7151@value{GDBN} starts or connects to the target program, and it is generally 7152not possible to switch modes once debugging has started. Furthermore, 7153since not all targets support non-stop mode, even when you have enabled 7154non-stop mode, @value{GDBN} may still fall back to all-stop operation by 7155default. 7156 7157In non-stop mode, all execution commands apply only to the current thread 7158by default. That is, @code{continue} only continues one thread. 7159To continue all threads, issue @code{continue -a} or @code{c -a}. 7160 7161You can use @value{GDBN}'s background execution commands 7162(@pxref{Background Execution}) to run some threads in the background 7163while you continue to examine or step others from @value{GDBN}. 7164The MI execution commands (@pxref{GDB/MI Program Execution}) are 7165always executed asynchronously in non-stop mode. 7166 7167Suspending execution is done with the @code{interrupt} command when 7168running in the background, or @kbd{Ctrl-c} during foreground execution. 7169In all-stop mode, this stops the whole process; 7170but in non-stop mode the interrupt applies only to the current thread. 7171To stop the whole program, use @code{interrupt -a}. 7172 7173Other execution commands do not currently support the @code{-a} option. 7174 7175In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make 7176that thread current, as it does in all-stop mode. This is because the 7177thread stop notifications are asynchronous with respect to @value{GDBN}'s 7178command interpreter, and it would be confusing if @value{GDBN} unexpectedly 7179changed to a different thread just as you entered a command to operate on the 7180previously current thread. 7181 7182@node Background Execution 7183@subsection Background Execution 7184 7185@cindex foreground execution 7186@cindex background execution 7187@cindex asynchronous execution 7188@cindex execution, foreground, background and asynchronous 7189 7190@value{GDBN}'s execution commands have two variants: the normal 7191foreground (synchronous) behavior, and a background 7192(asynchronous) behavior. In foreground execution, @value{GDBN} waits for 7193the program to report that some thread has stopped before prompting for 7194another command. In background execution, @value{GDBN} immediately gives 7195a command prompt so that you can issue other commands while your program runs. 7196 7197If the target doesn't support async mode, @value{GDBN} issues an error 7198message if you attempt to use the background execution commands. 7199 7200@cindex @code{&}, background execution of commands 7201To specify background execution, add a @code{&} to the command. For example, 7202the background form of the @code{continue} command is @code{continue&}, or 7203just @code{c&}. The execution commands that accept background execution 7204are: 7205 7206@table @code 7207@kindex run& 7208@item run 7209@xref{Starting, , Starting your Program}. 7210 7211@item attach 7212@kindex attach& 7213@xref{Attach, , Debugging an Already-running Process}. 7214 7215@item step 7216@kindex step& 7217@xref{Continuing and Stepping, step}. 7218 7219@item stepi 7220@kindex stepi& 7221@xref{Continuing and Stepping, stepi}. 7222 7223@item next 7224@kindex next& 7225@xref{Continuing and Stepping, next}. 7226 7227@item nexti 7228@kindex nexti& 7229@xref{Continuing and Stepping, nexti}. 7230 7231@item continue 7232@kindex continue& 7233@xref{Continuing and Stepping, continue}. 7234 7235@item finish 7236@kindex finish& 7237@xref{Continuing and Stepping, finish}. 7238 7239@item until 7240@kindex until& 7241@xref{Continuing and Stepping, until}. 7242 7243@end table 7244 7245Background execution is especially useful in conjunction with non-stop 7246mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}. 7247However, you can also use these commands in the normal all-stop mode with 7248the restriction that you cannot issue another execution command until the 7249previous one finishes. Examples of commands that are valid in all-stop 7250mode while the program is running include @code{help} and @code{info break}. 7251 7252You can interrupt your program while it is running in the background by 7253using the @code{interrupt} command. 7254 7255@table @code 7256@kindex interrupt 7257@item interrupt 7258@itemx interrupt -a 7259 7260Suspend execution of the running program. In all-stop mode, 7261@code{interrupt} stops the whole process, but in non-stop mode, it stops 7262only the current thread. To stop the whole program in non-stop mode, 7263use @code{interrupt -a}. 7264@end table 7265 7266@node Thread-Specific Breakpoints 7267@subsection Thread-Specific Breakpoints 7268 7269When your program has multiple threads (@pxref{Threads,, Debugging 7270Programs with Multiple Threads}), you can choose whether to set 7271breakpoints on all threads, or on a particular thread. 7272 7273@table @code 7274@cindex breakpoints and threads 7275@cindex thread breakpoints 7276@kindex break @dots{} thread @var{thread-id} 7277@item break @var{locspec} thread @var{thread-id} 7278@itemx break @var{locspec} thread @var{thread-id} if @dots{} 7279@var{locspec} specifies a code location or locations in your program. 7280@xref{Location Specifications}, for details. 7281 7282Use the qualifier @samp{thread @var{thread-id}} with a breakpoint command 7283to specify that you only want @value{GDBN} to stop the program when a 7284particular thread reaches this breakpoint. The @var{thread-id} specifier 7285is one of the thread identifiers assigned by @value{GDBN}, shown 7286in the first column of the @samp{info threads} display. 7287 7288If you do not specify @samp{thread @var{thread-id}} when you set a 7289breakpoint, the breakpoint applies to @emph{all} threads of your 7290program. 7291 7292You can use the @code{thread} qualifier on conditional breakpoints as 7293well; in this case, place @samp{thread @var{thread-id}} before or 7294after the breakpoint condition, like this: 7295 7296@smallexample 7297(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim 7298@end smallexample 7299 7300@end table 7301 7302Thread-specific breakpoints are automatically deleted when 7303@value{GDBN} detects the corresponding thread is no longer in the 7304thread list. For example: 7305 7306@smallexample 7307(@value{GDBP}) c 7308Thread-specific breakpoint 3 deleted - thread 28 no longer in the thread list. 7309@end smallexample 7310 7311There are several ways for a thread to disappear, such as a regular 7312thread exit, but also when you detach from the process with the 7313@code{detach} command (@pxref{Attach, ,Debugging an Already-running 7314Process}), or if @value{GDBN} loses the remote connection 7315(@pxref{Remote Debugging}), etc. Note that with some targets, 7316@value{GDBN} is only able to detect a thread has exited when the user 7317explictly asks for the thread list with the @code{info threads} 7318command. 7319 7320@node Interrupted System Calls 7321@subsection Interrupted System Calls 7322 7323@cindex thread breakpoints and system calls 7324@cindex system calls and thread breakpoints 7325@cindex premature return from system calls 7326There is an unfortunate side effect when using @value{GDBN} to debug 7327multi-threaded programs. If one thread stops for a 7328breakpoint, or for some other reason, and another thread is blocked in a 7329system call, then the system call may return prematurely. This is a 7330consequence of the interaction between multiple threads and the signals 7331that @value{GDBN} uses to implement breakpoints and other events that 7332stop execution. 7333 7334To handle this problem, your program should check the return value of 7335each system call and react appropriately. This is good programming 7336style anyways. 7337 7338For example, do not write code like this: 7339 7340@smallexample 7341 sleep (10); 7342@end smallexample 7343 7344The call to @code{sleep} will return early if a different thread stops 7345at a breakpoint or for some other reason. 7346 7347Instead, write this: 7348 7349@smallexample 7350 int unslept = 10; 7351 while (unslept > 0) 7352 unslept = sleep (unslept); 7353@end smallexample 7354 7355A system call is allowed to return early, so the system is still 7356conforming to its specification. But @value{GDBN} does cause your 7357multi-threaded program to behave differently than it would without 7358@value{GDBN}. 7359 7360Also, @value{GDBN} uses internal breakpoints in the thread library to 7361monitor certain events such as thread creation and thread destruction. 7362When such an event happens, a system call in another thread may return 7363prematurely, even though your program does not appear to stop. 7364 7365@node Observer Mode 7366@subsection Observer Mode 7367 7368If you want to build on non-stop mode and observe program behavior 7369without any chance of disruption by @value{GDBN}, you can set 7370variables to disable all of the debugger's attempts to modify state, 7371whether by writing memory, inserting breakpoints, etc. These operate 7372at a low level, intercepting operations from all commands. 7373 7374When all of these are set to @code{off}, then @value{GDBN} is said to 7375be @dfn{observer mode}. As a convenience, the variable 7376@code{observer} can be set to disable these, plus enable non-stop 7377mode. 7378 7379Note that @value{GDBN} will not prevent you from making nonsensical 7380combinations of these settings. For instance, if you have enabled 7381@code{may-insert-breakpoints} but disabled @code{may-write-memory}, 7382then breakpoints that work by writing trap instructions into the code 7383stream will still not be able to be placed. 7384 7385@table @code 7386 7387@kindex observer 7388@item set observer on 7389@itemx set observer off 7390When set to @code{on}, this disables all the permission variables 7391below (except for @code{insert-fast-tracepoints}), plus enables 7392non-stop debugging. Setting this to @code{off} switches back to 7393normal debugging, though remaining in non-stop mode. 7394 7395@item show observer 7396Show whether observer mode is on or off. 7397 7398@kindex may-write-registers 7399@item set may-write-registers on 7400@itemx set may-write-registers off 7401This controls whether @value{GDBN} will attempt to alter the values of 7402registers, such as with assignment expressions in @code{print}, or the 7403@code{jump} command. It defaults to @code{on}. 7404 7405@item show may-write-registers 7406Show the current permission to write registers. 7407 7408@kindex may-write-memory 7409@item set may-write-memory on 7410@itemx set may-write-memory off 7411This controls whether @value{GDBN} will attempt to alter the contents 7412of memory, such as with assignment expressions in @code{print}. It 7413defaults to @code{on}. 7414 7415@item show may-write-memory 7416Show the current permission to write memory. 7417 7418@kindex may-insert-breakpoints 7419@item set may-insert-breakpoints on 7420@itemx set may-insert-breakpoints off 7421This controls whether @value{GDBN} will attempt to insert breakpoints. 7422This affects all breakpoints, including internal breakpoints defined 7423by @value{GDBN}. It defaults to @code{on}. 7424 7425@item show may-insert-breakpoints 7426Show the current permission to insert breakpoints. 7427 7428@kindex may-insert-tracepoints 7429@item set may-insert-tracepoints on 7430@itemx set may-insert-tracepoints off 7431This controls whether @value{GDBN} will attempt to insert (regular) 7432tracepoints at the beginning of a tracing experiment. It affects only 7433non-fast tracepoints, fast tracepoints being under the control of 7434@code{may-insert-fast-tracepoints}. It defaults to @code{on}. 7435 7436@item show may-insert-tracepoints 7437Show the current permission to insert tracepoints. 7438 7439@kindex may-insert-fast-tracepoints 7440@item set may-insert-fast-tracepoints on 7441@itemx set may-insert-fast-tracepoints off 7442This controls whether @value{GDBN} will attempt to insert fast 7443tracepoints at the beginning of a tracing experiment. It affects only 7444fast tracepoints, regular (non-fast) tracepoints being under the 7445control of @code{may-insert-tracepoints}. It defaults to @code{on}. 7446 7447@item show may-insert-fast-tracepoints 7448Show the current permission to insert fast tracepoints. 7449 7450@kindex may-interrupt 7451@item set may-interrupt on 7452@itemx set may-interrupt off 7453This controls whether @value{GDBN} will attempt to interrupt or stop 7454program execution. When this variable is @code{off}, the 7455@code{interrupt} command will have no effect, nor will 7456@kbd{Ctrl-c}. It defaults to @code{on}. 7457 7458@item show may-interrupt 7459Show the current permission to interrupt or stop the program. 7460 7461@end table 7462 7463@node Reverse Execution 7464@chapter Running programs backward 7465@cindex reverse execution 7466@cindex running programs backward 7467 7468When you are debugging a program, it is not unusual to realize that 7469you have gone too far, and some event of interest has already happened. 7470If the target environment supports it, @value{GDBN} can allow you to 7471``rewind'' the program by running it backward. 7472 7473A target environment that supports reverse execution should be able 7474to ``undo'' the changes in machine state that have taken place as the 7475program was executing normally. Variables, registers etc.@: should 7476revert to their previous values. Obviously this requires a great 7477deal of sophistication on the part of the target environment; not 7478all target environments can support reverse execution. 7479 7480When a program is executed in reverse, the instructions that 7481have most recently been executed are ``un-executed'', in reverse 7482order. The program counter runs backward, following the previous 7483thread of execution in reverse. As each instruction is ``un-executed'', 7484the values of memory and/or registers that were changed by that 7485instruction are reverted to their previous states. After executing 7486a piece of source code in reverse, all side effects of that code 7487should be ``undone'', and all variables should be returned to their 7488prior values@footnote{ 7489Note that some side effects are easier to undo than others. For instance, 7490memory and registers are relatively easy, but device I/O is hard. Some 7491targets may be able undo things like device I/O, and some may not. 7492 7493The contract between @value{GDBN} and the reverse executing target 7494requires only that the target do something reasonable when 7495@value{GDBN} tells it to execute backwards, and then report the 7496results back to @value{GDBN}. Whatever the target reports back to 7497@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN} 7498assumes that the memory and registers that the target reports are in a 7499consistent state, but @value{GDBN} accepts whatever it is given. 7500}. 7501 7502On some platforms, @value{GDBN} has built-in support for reverse 7503execution, activated with the @code{record} or @code{record btrace} 7504commands. @xref{Process Record and Replay}. Some remote targets, 7505typically full system emulators, support reverse execution directly 7506without requiring any special command. 7507 7508If you are debugging in a target environment that supports 7509reverse execution, @value{GDBN} provides the following commands. 7510 7511@table @code 7512@kindex reverse-continue 7513@kindex rc @r{(@code{reverse-continue})} 7514@item reverse-continue @r{[}@var{ignore-count}@r{]} 7515@itemx rc @r{[}@var{ignore-count}@r{]} 7516Beginning at the point where your program last stopped, start executing 7517in reverse. Reverse execution will stop for breakpoints and synchronous 7518exceptions (signals), just like normal execution. Behavior of 7519asynchronous signals depends on the target environment. 7520 7521@kindex reverse-step 7522@kindex rs @r{(@code{step})} 7523@item reverse-step @r{[}@var{count}@r{]} 7524Run the program backward until control reaches the start of a 7525different source line; then stop it, and return control to @value{GDBN}. 7526 7527Like the @code{step} command, @code{reverse-step} will only stop 7528at the beginning of a source line. It ``un-executes'' the previously 7529executed source line. If the previous source line included calls to 7530debuggable functions, @code{reverse-step} will step (backward) into 7531the called function, stopping at the beginning of the @emph{last} 7532statement in the called function (typically a return statement). 7533 7534Also, as with the @code{step} command, if non-debuggable functions are 7535called, @code{reverse-step} will run thru them backward without stopping. 7536 7537@kindex reverse-stepi 7538@kindex rsi @r{(@code{reverse-stepi})} 7539@item reverse-stepi @r{[}@var{count}@r{]} 7540Reverse-execute one machine instruction. Note that the instruction 7541to be reverse-executed is @emph{not} the one pointed to by the program 7542counter, but the instruction executed prior to that one. For instance, 7543if the last instruction was a jump, @code{reverse-stepi} will take you 7544back from the destination of the jump to the jump instruction itself. 7545 7546@kindex reverse-next 7547@kindex rn @r{(@code{reverse-next})} 7548@item reverse-next @r{[}@var{count}@r{]} 7549Run backward to the beginning of the previous line executed in 7550the current (innermost) stack frame. If the line contains function 7551calls, they will be ``un-executed'' without stopping. Starting from 7552the first line of a function, @code{reverse-next} will take you back 7553to the caller of that function, @emph{before} the function was called, 7554just as the normal @code{next} command would take you from the last 7555line of a function back to its return to its caller 7556@footnote{Unless the code is too heavily optimized.}. 7557 7558@kindex reverse-nexti 7559@kindex rni @r{(@code{reverse-nexti})} 7560@item reverse-nexti @r{[}@var{count}@r{]} 7561Like @code{nexti}, @code{reverse-nexti} executes a single instruction 7562in reverse, except that called functions are ``un-executed'' atomically. 7563That is, if the previously executed instruction was a return from 7564another function, @code{reverse-nexti} will continue to execute 7565in reverse until the call to that function (from the current stack 7566frame) is reached. 7567 7568@kindex reverse-finish 7569@item reverse-finish 7570Just as the @code{finish} command takes you to the point where the 7571current function returns, @code{reverse-finish} takes you to the point 7572where it was called. Instead of ending up at the end of the current 7573function invocation, you end up at the beginning. 7574 7575@kindex set exec-direction 7576@item set exec-direction 7577Set the direction of target execution. 7578@item set exec-direction reverse 7579@cindex execute forward or backward in time 7580@value{GDBN} will perform all execution commands in reverse, until the 7581exec-direction mode is changed to ``forward''. Affected commands include 7582@code{step, stepi, next, nexti, continue, and finish}. The @code{return} 7583command cannot be used in reverse mode. 7584@item set exec-direction forward 7585@value{GDBN} will perform all execution commands in the normal fashion. 7586This is the default. 7587@end table 7588 7589 7590@node Process Record and Replay 7591@chapter Recording Inferior's Execution and Replaying It 7592@cindex process record and replay 7593@cindex recording inferior's execution and replaying it 7594 7595On some platforms, @value{GDBN} provides a special @dfn{process record 7596and replay} target that can record a log of the process execution, and 7597replay it later with both forward and reverse execution commands. 7598 7599@cindex replay mode 7600When this target is in use, if the execution log includes the record 7601for the next instruction, @value{GDBN} will debug in @dfn{replay 7602mode}. In the replay mode, the inferior does not really execute code 7603instructions. Instead, all the events that normally happen during 7604code execution are taken from the execution log. While code is not 7605really executed in replay mode, the values of registers (including the 7606program counter register) and the memory of the inferior are still 7607changed as they normally would. Their contents are taken from the 7608execution log. 7609 7610@cindex record mode 7611If the record for the next instruction is not in the execution log, 7612@value{GDBN} will debug in @dfn{record mode}. In this mode, the 7613inferior executes normally, and @value{GDBN} records the execution log 7614for future replay. 7615 7616The process record and replay target supports reverse execution 7617(@pxref{Reverse Execution}), even if the platform on which the 7618inferior runs does not. However, the reverse execution is limited in 7619this case by the range of the instructions recorded in the execution 7620log. In other words, reverse execution on platforms that don't 7621support it directly can only be done in the replay mode. 7622 7623When debugging in the reverse direction, @value{GDBN} will work in 7624replay mode as long as the execution log includes the record for the 7625previous instruction; otherwise, it will work in record mode, if the 7626platform supports reverse execution, or stop if not. 7627 7628Currently, process record and replay is supported on ARM, Aarch64, 7629Moxie, PowerPC, PowerPC64, S/390, and x86 (i386/amd64) running 7630GNU/Linux. Process record and replay can be used both when native 7631debugging, and when remote debugging via @code{gdbserver}. 7632 7633For architecture environments that support process record and replay, 7634@value{GDBN} provides the following commands: 7635 7636@table @code 7637@kindex target record 7638@kindex target record-full 7639@kindex target record-btrace 7640@kindex record 7641@kindex record full 7642@kindex record btrace 7643@kindex record btrace bts 7644@kindex record btrace pt 7645@kindex record bts 7646@kindex record pt 7647@kindex rec 7648@kindex rec full 7649@kindex rec btrace 7650@kindex rec btrace bts 7651@kindex rec btrace pt 7652@kindex rec bts 7653@kindex rec pt 7654@item record @var{method} 7655This command starts the process record and replay target. The 7656recording method can be specified as parameter. Without a parameter 7657the command uses the @code{full} recording method. The following 7658recording methods are available: 7659 7660@table @code 7661@item full 7662Full record/replay recording using @value{GDBN}'s software record and 7663replay implementation. This method allows replaying and reverse 7664execution. 7665 7666@item btrace @var{format} 7667Hardware-supported instruction recording, supported on Intel 7668processors. This method does not record data. Further, the data is 7669collected in a ring buffer so old data will be overwritten when the 7670buffer is full. It allows limited reverse execution. Variables and 7671registers are not available during reverse execution. In remote 7672debugging, recording continues on disconnect. Recorded data can be 7673inspected after reconnecting. The recording may be stopped using 7674@code{record stop}. 7675 7676The recording format can be specified as parameter. Without a parameter 7677the command chooses the recording format. The following recording 7678formats are available: 7679 7680@table @code 7681@item bts 7682@cindex branch trace store 7683Use the @dfn{Branch Trace Store} (@acronym{BTS}) recording format. In 7684this format, the processor stores a from/to record for each executed 7685branch in the btrace ring buffer. 7686 7687@item pt 7688@cindex Intel Processor Trace 7689Use the @dfn{Intel Processor Trace} recording format. In this 7690format, the processor stores the execution trace in a compressed form 7691that is afterwards decoded by @value{GDBN}. 7692 7693The trace can be recorded with very low overhead. The compressed 7694trace format also allows small trace buffers to already contain a big 7695number of instructions compared to @acronym{BTS}. 7696 7697Decoding the recorded execution trace, on the other hand, is more 7698expensive than decoding @acronym{BTS} trace. This is mostly due to the 7699increased number of instructions to process. You should increase the 7700buffer-size with care. 7701@end table 7702 7703Not all recording formats may be available on all processors. 7704@end table 7705 7706The process record and replay target can only debug a process that is 7707already running. Therefore, you need first to start the process with 7708the @kbd{run} or @kbd{start} commands, and then start the recording 7709with the @kbd{record @var{method}} command. 7710 7711@cindex displaced stepping, and process record and replay 7712Displaced stepping (@pxref{Maintenance Commands,, displaced stepping}) 7713will be automatically disabled when process record and replay target 7714is started. That's because the process record and replay target 7715doesn't support displaced stepping. 7716 7717@cindex non-stop mode, and process record and replay 7718@cindex asynchronous execution, and process record and replay 7719If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in 7720the asynchronous execution mode (@pxref{Background Execution}), not 7721all recording methods are available. The @code{full} recording method 7722does not support these two modes. 7723 7724@kindex record stop 7725@kindex rec s 7726@item record stop 7727Stop the process record and replay target. When process record and 7728replay target stops, the entire execution log will be deleted and the 7729inferior will either be terminated, or will remain in its final state. 7730 7731When you stop the process record and replay target in record mode (at 7732the end of the execution log), the inferior will be stopped at the 7733next instruction that would have been recorded. In other words, if 7734you record for a while and then stop recording, the inferior process 7735will be left in the same state as if the recording never happened. 7736 7737On the other hand, if the process record and replay target is stopped 7738while in replay mode (that is, not at the end of the execution log, 7739but at some earlier point), the inferior process will become ``live'' 7740at that earlier state, and it will then be possible to continue the 7741usual ``live'' debugging of the process from that state. 7742 7743When the inferior process exits, or @value{GDBN} detaches from it, 7744process record and replay target will automatically stop itself. 7745 7746@kindex record goto 7747@item record goto 7748Go to a specific location in the execution log. There are several 7749ways to specify the location to go to: 7750 7751@table @code 7752@item record goto begin 7753@itemx record goto start 7754Go to the beginning of the execution log. 7755 7756@item record goto end 7757Go to the end of the execution log. 7758 7759@item record goto @var{n} 7760Go to instruction number @var{n} in the execution log. 7761@end table 7762 7763@kindex record save 7764@item record save @var{filename} 7765Save the execution log to a file @file{@var{filename}}. 7766Default filename is @file{gdb_record.@var{process_id}}, where 7767@var{process_id} is the process ID of the inferior. 7768 7769This command may not be available for all recording methods. 7770 7771@kindex record restore 7772@item record restore @var{filename} 7773Restore the execution log from a file @file{@var{filename}}. 7774File must have been created with @code{record save}. 7775 7776@kindex set record full 7777@item set record full insn-number-max @var{limit} 7778@itemx set record full insn-number-max unlimited 7779Set the limit of instructions to be recorded for the @code{full} 7780recording method. Default value is 200000. 7781 7782If @var{limit} is a positive number, then @value{GDBN} will start 7783deleting instructions from the log once the number of the record 7784instructions becomes greater than @var{limit}. For every new recorded 7785instruction, @value{GDBN} will delete the earliest recorded 7786instruction to keep the number of recorded instructions at the limit. 7787(Since deleting recorded instructions loses information, @value{GDBN} 7788lets you control what happens when the limit is reached, by means of 7789the @code{stop-at-limit} option, described below.) 7790 7791If @var{limit} is @code{unlimited} or zero, @value{GDBN} will never 7792delete recorded instructions from the execution log. The number of 7793recorded instructions is limited only by the available memory. 7794 7795@kindex show record full 7796@item show record full insn-number-max 7797Show the limit of instructions to be recorded with the @code{full} 7798recording method. 7799 7800@item set record full stop-at-limit 7801Control the behavior of the @code{full} recording method when the 7802number of recorded instructions reaches the limit. If ON (the 7803default), @value{GDBN} will stop when the limit is reached for the 7804first time and ask you whether you want to stop the inferior or 7805continue running it and recording the execution log. If you decide 7806to continue recording, each new recorded instruction will cause the 7807oldest one to be deleted. 7808 7809If this option is OFF, @value{GDBN} will automatically delete the 7810oldest record to make room for each new one, without asking. 7811 7812@item show record full stop-at-limit 7813Show the current setting of @code{stop-at-limit}. 7814 7815@item set record full memory-query 7816Control the behavior when @value{GDBN} is unable to record memory 7817changes caused by an instruction for the @code{full} recording method. 7818If ON, @value{GDBN} will query whether to stop the inferior in that 7819case. 7820 7821If this option is OFF (the default), @value{GDBN} will automatically 7822ignore the effect of such instructions on memory. Later, when 7823@value{GDBN} replays this execution log, it will mark the log of this 7824instruction as not accessible, and it will not affect the replay 7825results. 7826 7827@item show record full memory-query 7828Show the current setting of @code{memory-query}. 7829 7830@kindex set record btrace 7831The @code{btrace} record target does not trace data. As a 7832convenience, when replaying, @value{GDBN} reads read-only memory off 7833the live program directly, assuming that the addresses of the 7834read-only areas don't change. This for example makes it possible to 7835disassemble code while replaying, but not to print variables. 7836In some cases, being able to inspect variables might be useful. 7837You can use the following command for that: 7838 7839@item set record btrace replay-memory-access 7840Control the behavior of the @code{btrace} recording method when 7841accessing memory during replay. If @code{read-only} (the default), 7842@value{GDBN} will only allow accesses to read-only memory. 7843If @code{read-write}, @value{GDBN} will allow accesses to read-only 7844and to read-write memory. Beware that the accessed memory corresponds 7845to the live target and not necessarily to the current replay 7846position. 7847 7848@item set record btrace cpu @var{identifier} 7849Set the processor to be used for enabling workarounds for processor 7850errata when decoding the trace. 7851 7852Processor errata are defects in processor operation, caused by its 7853design or manufacture. They can cause a trace not to match the 7854specification. This, in turn, may cause trace decode to fail. 7855@value{GDBN} can detect erroneous trace packets and correct them, thus 7856avoiding the decoding failures. These corrections are known as 7857@dfn{errata workarounds}, and are enabled based on the processor on 7858which the trace was recorded. 7859 7860By default, @value{GDBN} attempts to detect the processor 7861automatically, and apply the necessary workarounds for it. However, 7862you may need to specify the processor if @value{GDBN} does not yet 7863support it. This command allows you to do that, and also allows to 7864disable the workarounds. 7865 7866The argument @var{identifier} identifies the @sc{cpu} and is of the 7867form: @code{@var{vendor}:@var{processor identifier}}. In addition, 7868there are two special identifiers, @code{none} and @code{auto} 7869(default). 7870 7871The following vendor identifiers and corresponding processor 7872identifiers are currently supported: 7873 7874@multitable @columnfractions .1 .9 7875 7876@item @code{intel} 7877@tab @var{family}/@var{model}[/@var{stepping}] 7878 7879@end multitable 7880 7881On GNU/Linux systems, the processor @var{family}, @var{model}, and 7882@var{stepping} can be obtained from @code{/proc/cpuinfo}. 7883 7884If @var{identifier} is @code{auto}, enable errata workarounds for the 7885processor on which the trace was recorded. If @var{identifier} is 7886@code{none}, errata workarounds are disabled. 7887 7888For example, when using an old @value{GDBN} on a new system, decode 7889may fail because @value{GDBN} does not support the new processor. It 7890often suffices to specify an older processor that @value{GDBN} 7891supports. 7892 7893@smallexample 7894(gdb) info record 7895Active record target: record-btrace 7896Recording format: Intel Processor Trace. 7897Buffer size: 16kB. 7898Failed to configure the Intel Processor Trace decoder: unknown cpu. 7899(gdb) set record btrace cpu intel:6/158 7900(gdb) info record 7901Active record target: record-btrace 7902Recording format: Intel Processor Trace. 7903Buffer size: 16kB. 7904Recorded 84872 instructions in 3189 functions (0 gaps) for thread 1 (...). 7905@end smallexample 7906 7907@kindex show record btrace 7908@item show record btrace replay-memory-access 7909Show the current setting of @code{replay-memory-access}. 7910 7911@item show record btrace cpu 7912Show the processor to be used for enabling trace decode errata 7913workarounds. 7914 7915@kindex set record btrace bts 7916@item set record btrace bts buffer-size @var{size} 7917@itemx set record btrace bts buffer-size unlimited 7918Set the requested ring buffer size for branch tracing in @acronym{BTS} 7919format. Default is 64KB. 7920 7921If @var{size} is a positive number, then @value{GDBN} will try to 7922allocate a buffer of at least @var{size} bytes for each new thread 7923that uses the btrace recording method and the @acronym{BTS} format. 7924The actually obtained buffer size may differ from the requested 7925@var{size}. Use the @code{info record} command to see the actual 7926buffer size for each thread that uses the btrace recording method and 7927the @acronym{BTS} format. 7928 7929If @var{limit} is @code{unlimited} or zero, @value{GDBN} will try to 7930allocate a buffer of 4MB. 7931 7932Bigger buffers mean longer traces. On the other hand, @value{GDBN} will 7933also need longer to process the branch trace data before it can be used. 7934 7935@item show record btrace bts buffer-size @var{size} 7936Show the current setting of the requested ring buffer size for branch 7937tracing in @acronym{BTS} format. 7938 7939@kindex set record btrace pt 7940@item set record btrace pt buffer-size @var{size} 7941@itemx set record btrace pt buffer-size unlimited 7942Set the requested ring buffer size for branch tracing in Intel 7943Processor Trace format. Default is 16KB. 7944 7945If @var{size} is a positive number, then @value{GDBN} will try to 7946allocate a buffer of at least @var{size} bytes for each new thread 7947that uses the btrace recording method and the Intel Processor Trace 7948format. The actually obtained buffer size may differ from the 7949requested @var{size}. Use the @code{info record} command to see the 7950actual buffer size for each thread. 7951 7952If @var{limit} is @code{unlimited} or zero, @value{GDBN} will try to 7953allocate a buffer of 4MB. 7954 7955Bigger buffers mean longer traces. On the other hand, @value{GDBN} will 7956also need longer to process the branch trace data before it can be used. 7957 7958@item show record btrace pt buffer-size @var{size} 7959Show the current setting of the requested ring buffer size for branch 7960tracing in Intel Processor Trace format. 7961 7962@kindex info record 7963@item info record 7964Show various statistics about the recording depending on the recording 7965method: 7966 7967@table @code 7968@item full 7969For the @code{full} recording method, it shows the state of process 7970record and its in-memory execution log buffer, including: 7971 7972@itemize @bullet 7973@item 7974Whether in record mode or replay mode. 7975@item 7976Lowest recorded instruction number (counting from when the current execution log started recording instructions). 7977@item 7978Highest recorded instruction number. 7979@item 7980Current instruction about to be replayed (if in replay mode). 7981@item 7982Number of instructions contained in the execution log. 7983@item 7984Maximum number of instructions that may be contained in the execution log. 7985@end itemize 7986 7987@item btrace 7988For the @code{btrace} recording method, it shows: 7989 7990@itemize @bullet 7991@item 7992Recording format. 7993@item 7994Number of instructions that have been recorded. 7995@item 7996Number of blocks of sequential control-flow formed by the recorded 7997instructions. 7998@item 7999Whether in record mode or replay mode. 8000@end itemize 8001 8002For the @code{bts} recording format, it also shows: 8003@itemize @bullet 8004@item 8005Size of the perf ring buffer. 8006@end itemize 8007 8008For the @code{pt} recording format, it also shows: 8009@itemize @bullet 8010@item 8011Size of the perf ring buffer. 8012@end itemize 8013@end table 8014 8015@kindex record delete 8016@kindex rec del 8017@item record delete 8018When record target runs in replay mode (``in the past''), delete the 8019subsequent execution log and begin to record a new execution log starting 8020from the current address. This means you will abandon the previously 8021recorded ``future'' and begin recording a new ``future''. 8022 8023@kindex record instruction-history 8024@kindex rec instruction-history 8025@item record instruction-history 8026Disassembles instructions from the recorded execution log. By 8027default, ten instructions are disassembled. This can be changed using 8028the @code{set record instruction-history-size} command. Instructions 8029are printed in execution order. 8030 8031It can also print mixed source+disassembly if you specify the the 8032@code{/m} or @code{/s} modifier, and print the raw instructions in hex 8033as well as in symbolic form by specifying the @code{/r} or @code{/b} 8034modifier. The behaviour of the @code{/m}, @code{/s}, @code{/r}, and 8035@code{/b} modifiers are the same as for the @kbd{disassemble} command 8036(@pxref{disassemble,,@kbd{disassemble}}). 8037 8038The current position marker is printed for the instruction at the 8039current program counter value. This instruction can appear multiple 8040times in the trace and the current position marker will be printed 8041every time. To omit the current position marker, specify the 8042@code{/p} modifier. 8043 8044To better align the printed instructions when the trace contains 8045instructions from more than one function, the function name may be 8046omitted by specifying the @code{/f} modifier. 8047 8048Speculatively executed instructions are prefixed with @samp{?}. This 8049feature is not available for all recording formats. 8050 8051There are several ways to specify what part of the execution log to 8052disassemble: 8053 8054@table @code 8055@item record instruction-history @var{insn} 8056Disassembles ten instructions starting from instruction number 8057@var{insn}. 8058 8059@item record instruction-history @var{insn}, +/-@var{n} 8060Disassembles @var{n} instructions around instruction number 8061@var{insn}. If @var{n} is preceded with @code{+}, disassembles 8062@var{n} instructions after instruction number @var{insn}. If 8063@var{n} is preceded with @code{-}, disassembles @var{n} 8064instructions before instruction number @var{insn}. 8065 8066@item record instruction-history 8067Disassembles ten more instructions after the last disassembly. 8068 8069@item record instruction-history - 8070Disassembles ten more instructions before the last disassembly. 8071 8072@item record instruction-history @var{begin}, @var{end} 8073Disassembles instructions beginning with instruction number 8074@var{begin} until instruction number @var{end}. The instruction 8075number @var{end} is included. 8076@end table 8077 8078This command may not be available for all recording methods. 8079 8080@kindex set record 8081@item set record instruction-history-size @var{size} 8082@itemx set record instruction-history-size unlimited 8083Define how many instructions to disassemble in the @code{record 8084instruction-history} command. The default value is 10. 8085A @var{size} of @code{unlimited} means unlimited instructions. 8086 8087@kindex show record 8088@item show record instruction-history-size 8089Show how many instructions to disassemble in the @code{record 8090instruction-history} command. 8091 8092@kindex record function-call-history 8093@kindex rec function-call-history 8094@item record function-call-history 8095Prints the execution history at function granularity. For each sequence 8096of instructions that belong to the same function, it prints the name of 8097that function, the source lines for this instruction sequence (if the 8098@code{/l} modifier is specified), and the instructions numbers that form 8099the sequence (if the @code{/i} modifier is specified). The function names 8100are indented to reflect the call stack depth if the @code{/c} modifier is 8101specified. The @code{/l}, @code{/i}, and @code{/c} modifiers can be given 8102together. 8103 8104@smallexample 8105(@value{GDBP}) @b{list 1, 10} 81061 void foo (void) 81072 @{ 81083 @} 81094 81105 void bar (void) 81116 @{ 81127 ... 81138 foo (); 81149 ... 811510 @} 8116(@value{GDBP}) @b{record function-call-history /ilc} 81171 bar inst 1,4 at foo.c:6,8 81182 foo inst 5,10 at foo.c:2,3 81193 bar inst 11,13 at foo.c:9,10 8120@end smallexample 8121 8122By default, ten functions are printed. This can be changed using the 8123@code{set record function-call-history-size} command. Functions are 8124printed in execution order. There are several ways to specify what 8125to print: 8126 8127@table @code 8128@item record function-call-history @var{func} 8129Prints ten functions starting from function number @var{func}. 8130 8131@item record function-call-history @var{func}, +/-@var{n} 8132Prints @var{n} functions around function number @var{func}. If 8133@var{n} is preceded with @code{+}, prints @var{n} functions after 8134function number @var{func}. If @var{n} is preceded with @code{-}, 8135prints @var{n} functions before function number @var{func}. 8136 8137@item record function-call-history 8138Prints ten more functions after the last ten-function print. 8139 8140@item record function-call-history - 8141Prints ten more functions before the last ten-function print. 8142 8143@item record function-call-history @var{begin}, @var{end} 8144Prints functions beginning with function number @var{begin} until 8145function number @var{end}. The function number @var{end} is included. 8146@end table 8147 8148This command may not be available for all recording methods. 8149 8150@item set record function-call-history-size @var{size} 8151@itemx set record function-call-history-size unlimited 8152Define how many functions to print in the 8153@code{record function-call-history} command. The default value is 10. 8154A size of @code{unlimited} means unlimited functions. 8155 8156@item show record function-call-history-size 8157Show how many functions to print in the 8158@code{record function-call-history} command. 8159@end table 8160 8161 8162@node Stack 8163@chapter Examining the Stack 8164 8165When your program has stopped, the first thing you need to know is where it 8166stopped and how it got there. 8167 8168@cindex call stack 8169Each time your program performs a function call, information about the call 8170is generated. 8171That information includes the location of the call in your program, 8172the arguments of the call, 8173and the local variables of the function being called. 8174The information is saved in a block of data called a @dfn{stack frame}. 8175The stack frames are allocated in a region of memory called the @dfn{call 8176stack}. 8177 8178When your program stops, the @value{GDBN} commands for examining the 8179stack allow you to see all of this information. 8180 8181@cindex selected frame 8182One of the stack frames is @dfn{selected} by @value{GDBN} and many 8183@value{GDBN} commands refer implicitly to the selected frame. In 8184particular, whenever you ask @value{GDBN} for the value of a variable in 8185your program, the value is found in the selected frame. There are 8186special @value{GDBN} commands to select whichever frame you are 8187interested in. @xref{Selection, ,Selecting a Frame}. 8188 8189When your program stops, @value{GDBN} automatically selects the 8190currently executing frame and describes it briefly, similar to the 8191@code{frame} command (@pxref{Frame Info, ,Information about a Frame}). 8192 8193@menu 8194* Frames:: Stack frames 8195* Backtrace:: Backtraces 8196* Selection:: Selecting a frame 8197* Frame Info:: Information on a frame 8198* Frame Apply:: Applying a command to several frames 8199* Frame Filter Management:: Managing frame filters 8200 8201@end menu 8202 8203@node Frames 8204@section Stack Frames 8205 8206@cindex frame, definition 8207@cindex stack frame 8208The call stack is divided up into contiguous pieces called @dfn{stack 8209frames}, or @dfn{frames} for short; each frame is the data associated 8210with one call to one function. The frame contains the arguments given 8211to the function, the function's local variables, and the address at 8212which the function is executing. 8213 8214@cindex initial frame 8215@cindex outermost frame 8216@cindex innermost frame 8217When your program is started, the stack has only one frame, that of the 8218function @code{main}. This is called the @dfn{initial} frame or the 8219@dfn{outermost} frame. Each time a function is called, a new frame is 8220made. Each time a function returns, the frame for that function invocation 8221is eliminated. If a function is recursive, there can be many frames for 8222the same function. The frame for the function in which execution is 8223actually occurring is called the @dfn{innermost} frame. This is the most 8224recently created of all the stack frames that still exist. 8225 8226@cindex frame pointer 8227Inside your program, stack frames are identified by their addresses. A 8228stack frame consists of many bytes, each of which has its own address; each 8229kind of computer has a convention for choosing one byte whose 8230address serves as the address of the frame. Usually this address is kept 8231in a register called the @dfn{frame pointer register} 8232(@pxref{Registers, $fp}) while execution is going on in that frame. 8233 8234@cindex frame level 8235@cindex frame number 8236@value{GDBN} labels each existing stack frame with a @dfn{level}, a 8237number that is zero for the innermost frame, one for the frame that 8238called it, and so on upward. These level numbers give you a way of 8239designating stack frames in @value{GDBN} commands. The terms 8240@dfn{frame number} and @dfn{frame level} can be used interchangeably to 8241describe this number. 8242 8243@c The -fomit-frame-pointer below perennially causes hbox overflow 8244@c underflow problems. 8245@cindex frameless execution 8246Some compilers provide a way to compile functions so that they operate 8247without stack frames. (For example, the @value{NGCC} option 8248@smallexample 8249@samp{-fomit-frame-pointer} 8250@end smallexample 8251generates functions without a frame.) 8252This is occasionally done with heavily used library functions to save 8253the frame setup time. @value{GDBN} has limited facilities for dealing 8254with these function invocations. If the innermost function invocation 8255has no stack frame, @value{GDBN} nevertheless regards it as though 8256it had a separate frame, which is numbered zero as usual, allowing 8257correct tracing of the function call chain. However, @value{GDBN} has 8258no provision for frameless functions elsewhere in the stack. 8259 8260@node Backtrace 8261@section Backtraces 8262 8263@cindex traceback 8264@cindex call stack traces 8265A backtrace is a summary of how your program got where it is. It shows one 8266line per frame, for many frames, starting with the currently executing 8267frame (frame zero), followed by its caller (frame one), and on up the 8268stack. 8269 8270@anchor{backtrace-command} 8271@kindex backtrace 8272@kindex bt @r{(@code{backtrace})} 8273To print a backtrace of the entire stack, use the @code{backtrace} 8274command, or its alias @code{bt}. This command will print one line per 8275frame for frames in the stack. By default, all stack frames are 8276printed. You can stop the backtrace at any time by typing the system 8277interrupt character, normally @kbd{Ctrl-c}. 8278 8279@table @code 8280@item backtrace [@var{option}]@dots{} [@var{qualifier}]@dots{} [@var{count}] 8281@itemx bt [@var{option}]@dots{} [@var{qualifier}]@dots{} [@var{count}] 8282Print the backtrace of the entire stack. 8283 8284The optional @var{count} can be one of the following: 8285 8286@table @code 8287@item @var{n} 8288@itemx @var{n} 8289Print only the innermost @var{n} frames, where @var{n} is a positive 8290number. 8291 8292@item -@var{n} 8293@itemx -@var{n} 8294Print only the outermost @var{n} frames, where @var{n} is a positive 8295number. 8296@end table 8297 8298Options: 8299 8300@table @code 8301@item -full 8302Print the values of the local variables also. This can be combined 8303with the optional @var{count} to limit the number of frames shown. 8304 8305@item -no-filters 8306Do not run Python frame filters on this backtrace. @xref{Frame 8307Filter API}, for more information. Additionally use @ref{disable 8308frame-filter all} to turn off all frame filters. This is only 8309relevant when @value{GDBN} has been configured with @code{Python} 8310support. 8311 8312@item -hide 8313A Python frame filter might decide to ``elide'' some frames. Normally 8314such elided frames are still printed, but they are indented relative 8315to the filtered frames that cause them to be elided. The @code{-hide} 8316option causes elided frames to not be printed at all. 8317@end table 8318 8319The @code{backtrace} command also supports a number of options that 8320allow overriding relevant global print settings as set by @code{set 8321backtrace} and @code{set print} subcommands: 8322 8323@table @code 8324@item -past-main [@code{on}|@code{off}] 8325Set whether backtraces should continue past @code{main}. Related setting: 8326@ref{set backtrace past-main}. 8327 8328@item -past-entry [@code{on}|@code{off}] 8329Set whether backtraces should continue past the entry point of a program. 8330Related setting: @ref{set backtrace past-entry}. 8331 8332@item -entry-values @code{no}|@code{only}|@code{preferred}|@code{if-needed}|@code{both}|@code{compact}|@code{default} 8333Set printing of function arguments at function entry. 8334Related setting: @ref{set print entry-values}. 8335 8336@item -frame-arguments @code{all}|@code{scalars}|@code{none} 8337Set printing of non-scalar frame arguments. 8338Related setting: @ref{set print frame-arguments}. 8339 8340@item -raw-frame-arguments [@code{on}|@code{off}] 8341Set whether to print frame arguments in raw form. 8342Related setting: @ref{set print raw-frame-arguments}. 8343 8344@item -frame-info @code{auto}|@code{source-line}|@code{location}|@code{source-and-location}|@code{location-and-address}|@code{short-location} 8345Set printing of frame information. 8346Related setting: @ref{set print frame-info}. 8347@end table 8348 8349The optional @var{qualifier} is maintained for backward compatibility. 8350It can be one of the following: 8351 8352@table @code 8353@item full 8354Equivalent to the @code{-full} option. 8355 8356@item no-filters 8357Equivalent to the @code{-no-filters} option. 8358 8359@item hide 8360Equivalent to the @code{-hide} option. 8361@end table 8362 8363@end table 8364 8365@kindex where 8366@kindex info stack 8367The names @code{where} and @code{info stack} (abbreviated @code{info s}) 8368are additional aliases for @code{backtrace}. 8369 8370@cindex multiple threads, backtrace 8371In a multi-threaded program, @value{GDBN} by default shows the 8372backtrace only for the current thread. To display the backtrace for 8373several or all of the threads, use the command @code{thread apply} 8374(@pxref{Threads, thread apply}). For example, if you type @kbd{thread 8375apply all backtrace}, @value{GDBN} will display the backtrace for all 8376the threads; this is handy when you debug a core dump of a 8377multi-threaded program. 8378 8379Each line in the backtrace shows the frame number and the function name. 8380The program counter value is also shown---unless you use @code{set 8381print address off}. The backtrace also shows the source file name and 8382line number, as well as the arguments to the function. The program 8383counter value is omitted if it is at the beginning of the code for that 8384line number. 8385 8386Here is an example of a backtrace. It was made with the command 8387@samp{bt 3}, so it shows the innermost three frames. 8388 8389@smallexample 8390@group 8391#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 8392 at builtin.c:993 8393#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242 8394#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08) 8395 at macro.c:71 8396(More stack frames follow...) 8397@end group 8398@end smallexample 8399 8400@noindent 8401The display for frame zero does not begin with a program counter 8402value, indicating that your program has stopped at the beginning of the 8403code for line @code{993} of @code{builtin.c}. 8404 8405@noindent 8406The value of parameter @code{data} in frame 1 has been replaced by 8407@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter 8408only if it is a scalar (integer, pointer, enumeration, etc). See command 8409@kbd{set print frame-arguments} in @ref{Print Settings} for more details 8410on how to configure the way function parameter values are printed. 8411The command @kbd{set print frame-info} (@pxref{Print Settings}) controls 8412what frame information is printed. 8413 8414@cindex optimized out, in backtrace 8415@cindex function call arguments, optimized out 8416If your program was compiled with optimizations, some compilers will 8417optimize away arguments passed to functions if those arguments are 8418never used after the call. Such optimizations generate code that 8419passes arguments through registers, but doesn't store those arguments 8420in the stack frame. @value{GDBN} has no way of displaying such 8421arguments in stack frames other than the innermost one. Here's what 8422such a backtrace might look like: 8423 8424@smallexample 8425@group 8426#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) 8427 at builtin.c:993 8428#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242 8429#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08) 8430 at macro.c:71 8431(More stack frames follow...) 8432@end group 8433@end smallexample 8434 8435@noindent 8436The values of arguments that were not saved in their stack frames are 8437shown as @samp{<optimized out>}. 8438 8439If you need to display the values of such optimized-out arguments, 8440either deduce that from other variables whose values depend on the one 8441you are interested in, or recompile without optimizations. 8442 8443@cindex backtrace beyond @code{main} function 8444@cindex program entry point 8445@cindex startup code, and backtrace 8446Most programs have a standard user entry point---a place where system 8447libraries and startup code transition into user code. For C this is 8448@code{main}@footnote{ 8449Note that embedded programs (the so-called ``free-standing'' 8450environment) are not required to have a @code{main} function as the 8451entry point. They could even have multiple entry points.}. 8452When @value{GDBN} finds the entry function in a backtrace 8453it will terminate the backtrace, to avoid tracing into highly 8454system-specific (and generally uninteresting) code. 8455 8456If you need to examine the startup code, or limit the number of levels 8457in a backtrace, you can change this behavior: 8458 8459@table @code 8460@item set backtrace past-main 8461@itemx set backtrace past-main on 8462@anchor{set backtrace past-main} 8463@kindex set backtrace 8464Backtraces will continue past the user entry point. 8465 8466@item set backtrace past-main off 8467Backtraces will stop when they encounter the user entry point. This is the 8468default. 8469 8470@item show backtrace past-main 8471@kindex show backtrace 8472Display the current user entry point backtrace policy. 8473 8474@item set backtrace past-entry 8475@itemx set backtrace past-entry on 8476@anchor{set backtrace past-entry} 8477Backtraces will continue past the internal entry point of an application. 8478This entry point is encoded by the linker when the application is built, 8479and is likely before the user entry point @code{main} (or equivalent) is called. 8480 8481@item set backtrace past-entry off 8482Backtraces will stop when they encounter the internal entry point of an 8483application. This is the default. 8484 8485@item show backtrace past-entry 8486Display the current internal entry point backtrace policy. 8487 8488@item set backtrace limit @var{n} 8489@itemx set backtrace limit 0 8490@itemx set backtrace limit unlimited 8491@anchor{set backtrace limit} 8492@cindex backtrace limit 8493Limit the backtrace to @var{n} levels. A value of @code{unlimited} 8494or zero means unlimited levels. 8495 8496@item show backtrace limit 8497Display the current limit on backtrace levels. 8498@end table 8499 8500You can control how file names are displayed. 8501 8502@table @code 8503@item set filename-display 8504@itemx set filename-display relative 8505@cindex filename-display 8506Display file names relative to the compilation directory. This is the default. 8507 8508@item set filename-display basename 8509Display only basename of a filename. 8510 8511@item set filename-display absolute 8512Display an absolute filename. 8513 8514@item show filename-display 8515Show the current way to display filenames. 8516@end table 8517 8518@node Selection 8519@section Selecting a Frame 8520 8521Most commands for examining the stack and other data in your program work on 8522whichever stack frame is selected at the moment. Here are the commands for 8523selecting a stack frame; all of them finish by printing a brief description 8524of the stack frame just selected. 8525 8526@table @code 8527@kindex frame@r{, selecting} 8528@kindex f @r{(@code{frame})} 8529@item frame @r{[} @var{frame-selection-spec} @r{]} 8530@item f @r{[} @var{frame-selection-spec} @r{]} 8531The @command{frame} command allows different stack frames to be 8532selected. The @var{frame-selection-spec} can be any of the following: 8533 8534@table @code 8535@kindex frame level 8536@item @var{num} 8537@item level @var{num} 8538Select frame level @var{num}. Recall that frame zero is the innermost 8539(currently executing) frame, frame one is the frame that called the 8540innermost one, and so on. The highest level frame is usually the one 8541for @code{main}. 8542 8543As this is the most common method of navigating the frame stack, the 8544string @command{level} can be omitted. For example, the following two 8545commands are equivalent: 8546 8547@smallexample 8548(@value{GDBP}) frame 3 8549(@value{GDBP}) frame level 3 8550@end smallexample 8551 8552@kindex frame address 8553@item address @var{stack-address} 8554Select the frame with stack address @var{stack-address}. The 8555@var{stack-address} for a frame can be seen in the output of 8556@command{info frame}, for example: 8557 8558@smallexample 8559(gdb) info frame 8560Stack level 1, frame at 0x7fffffffda30: 8561 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5 8562 tail call frame, caller of frame at 0x7fffffffda30 8563 source language c++. 8564 Arglist at unknown address. 8565 Locals at unknown address, Previous frame's sp is 0x7fffffffda30 8566@end smallexample 8567 8568The @var{stack-address} for this frame is @code{0x7fffffffda30} as 8569indicated by the line: 8570 8571@smallexample 8572Stack level 1, frame at 0x7fffffffda30: 8573@end smallexample 8574 8575@kindex frame function 8576@item function @var{function-name} 8577Select the stack frame for function @var{function-name}. If there are 8578multiple stack frames for function @var{function-name} then the inner 8579most stack frame is selected. 8580 8581@kindex frame view 8582@item view @var{stack-address} @r{[} @var{pc-addr} @r{]} 8583View a frame that is not part of @value{GDBN}'s backtrace. The frame 8584viewed has stack address @var{stack-addr}, and optionally, a program 8585counter address of @var{pc-addr}. 8586 8587This is useful mainly if the chaining of stack frames has been 8588damaged by a bug, making it impossible for @value{GDBN} to assign 8589numbers properly to all frames. In addition, this can be useful 8590when your program has multiple stacks and switches between them. 8591 8592When viewing a frame outside the current backtrace using 8593@command{frame view} then you can always return to the original 8594stack using one of the previous stack frame selection instructions, 8595for example @command{frame level 0}. 8596 8597@end table 8598 8599@kindex up 8600@item up @var{n} 8601Move @var{n} frames up the stack; @var{n} defaults to 1. For positive 8602numbers @var{n}, this advances toward the outermost frame, to higher 8603frame numbers, to frames that have existed longer. 8604 8605@kindex down 8606@kindex do @r{(@code{down})} 8607@item down @var{n} 8608Move @var{n} frames down the stack; @var{n} defaults to 1. For 8609positive numbers @var{n}, this advances toward the innermost frame, to 8610lower frame numbers, to frames that were created more recently. 8611You may abbreviate @code{down} as @code{do}. 8612@end table 8613 8614All of these commands end by printing two lines of output describing the 8615frame. The first line shows the frame number, the function name, the 8616arguments, and the source file and line number of execution in that 8617frame. The second line shows the text of that source line. 8618 8619@need 1000 8620For example: 8621 8622@smallexample 8623@group 8624(@value{GDBP}) up 8625#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc) 8626 at env.c:10 862710 read_input_file (argv[i]); 8628@end group 8629@end smallexample 8630 8631After such a printout, the @code{list} command with no arguments 8632prints ten lines centered on the point of execution in the frame. 8633You can also edit the program at the point of execution with your favorite 8634editing program by typing @code{edit}. 8635@xref{List, ,Printing Source Lines}, 8636for details. 8637 8638@table @code 8639@kindex select-frame 8640@item select-frame @r{[} @var{frame-selection-spec} @r{]} 8641The @code{select-frame} command is a variant of @code{frame} that does 8642not display the new frame after selecting it. This command is 8643intended primarily for use in @value{GDBN} command scripts, where the 8644output might be unnecessary and distracting. The 8645@var{frame-selection-spec} is as for the @command{frame} command 8646described in @ref{Selection, ,Selecting a Frame}. 8647 8648@kindex down-silently 8649@kindex up-silently 8650@item up-silently @var{n} 8651@itemx down-silently @var{n} 8652These two commands are variants of @code{up} and @code{down}, 8653respectively; they differ in that they do their work silently, without 8654causing display of the new frame. They are intended primarily for use 8655in @value{GDBN} command scripts, where the output might be unnecessary and 8656distracting. 8657@end table 8658 8659@node Frame Info 8660@section Information About a Frame 8661 8662There are several other commands to print information about the selected 8663stack frame. 8664 8665@table @code 8666@item frame 8667@itemx f 8668When used without any argument, this command does not change which 8669frame is selected, but prints a brief description of the currently 8670selected stack frame. It can be abbreviated @code{f}. With an 8671argument, this command is used to select a stack frame. 8672@xref{Selection, ,Selecting a Frame}. 8673 8674@kindex info frame 8675@kindex info f @r{(@code{info frame})} 8676@item info frame 8677@itemx info f 8678This command prints a verbose description of the selected stack frame, 8679including: 8680 8681@itemize @bullet 8682@item 8683the address of the frame 8684@item 8685the address of the next frame down (called by this frame) 8686@item 8687the address of the next frame up (caller of this frame) 8688@item 8689the language in which the source code corresponding to this frame is written 8690@item 8691the address of the frame's arguments 8692@item 8693the address of the frame's local variables 8694@item 8695the program counter saved in it (the address of execution in the caller frame) 8696@item 8697which registers were saved in the frame 8698@end itemize 8699 8700@noindent The verbose description is useful when 8701something has gone wrong that has made the stack format fail to fit 8702the usual conventions. 8703 8704@item info frame @r{[} @var{frame-selection-spec} @r{]} 8705@itemx info f @r{[} @var{frame-selection-spec} @r{]} 8706Print a verbose description of the frame selected by 8707@var{frame-selection-spec}. The @var{frame-selection-spec} is the 8708same as for the @command{frame} command (@pxref{Selection, ,Selecting 8709a Frame}). The selected frame remains unchanged by this command. 8710 8711@kindex info args 8712@item info args [-q] 8713Print the arguments of the selected frame, each on a separate line. 8714 8715The optional flag @samp{-q}, which stands for @samp{quiet}, disables 8716printing header information and messages explaining why no argument 8717have been printed. 8718 8719@item info args [-q] [-t @var{type_regexp}] [@var{regexp}] 8720Like @kbd{info args}, but only print the arguments selected 8721with the provided regexp(s). 8722 8723If @var{regexp} is provided, print only the arguments whose names 8724match the regular expression @var{regexp}. 8725 8726If @var{type_regexp} is provided, print only the arguments whose 8727types, as printed by the @code{whatis} command, match 8728the regular expression @var{type_regexp}. 8729If @var{type_regexp} contains space(s), it should be enclosed in 8730quote characters. If needed, use backslash to escape the meaning 8731of special characters or quotes. 8732 8733If both @var{regexp} and @var{type_regexp} are provided, an argument 8734is printed only if its name matches @var{regexp} and its type matches 8735@var{type_regexp}. 8736 8737@item info locals [-q] 8738@kindex info locals 8739Print the local variables of the selected frame, each on a separate 8740line. These are all variables (declared either static or automatic) 8741accessible at the point of execution of the selected frame. 8742 8743The optional flag @samp{-q}, which stands for @samp{quiet}, disables 8744printing header information and messages explaining why no local variables 8745have been printed. 8746 8747@item info locals [-q] [-t @var{type_regexp}] [@var{regexp}] 8748Like @kbd{info locals}, but only print the local variables selected 8749with the provided regexp(s). 8750 8751If @var{regexp} is provided, print only the local variables whose names 8752match the regular expression @var{regexp}. 8753 8754If @var{type_regexp} is provided, print only the local variables whose 8755types, as printed by the @code{whatis} command, match 8756the regular expression @var{type_regexp}. 8757If @var{type_regexp} contains space(s), it should be enclosed in 8758quote characters. If needed, use backslash to escape the meaning 8759of special characters or quotes. 8760 8761If both @var{regexp} and @var{type_regexp} are provided, a local variable 8762is printed only if its name matches @var{regexp} and its type matches 8763@var{type_regexp}. 8764 8765The command @kbd{info locals -q -t @var{type_regexp}} can usefully be 8766combined with the commands @kbd{frame apply} and @kbd{thread apply}. 8767For example, your program might use Resource Acquisition Is 8768Initialization types (RAII) such as @code{lock_something_t}: each 8769local variable of type @code{lock_something_t} automatically places a 8770lock that is destroyed when the variable goes out of scope. You can 8771then list all acquired locks in your program by doing 8772@smallexample 8773thread apply all -s frame apply all -s info locals -q -t lock_something_t 8774@end smallexample 8775@noindent 8776or the equivalent shorter form 8777@smallexample 8778tfaas i lo -q -t lock_something_t 8779@end smallexample 8780 8781@end table 8782 8783@node Frame Apply 8784@section Applying a Command to Several Frames. 8785@kindex frame apply 8786@cindex apply command to several frames 8787@table @code 8788@item frame apply [all | @var{count} | @var{-count} | level @var{level}@dots{}] [@var{option}]@dots{} @var{command} 8789The @code{frame apply} command allows you to apply the named 8790@var{command} to one or more frames. 8791 8792@table @code 8793@item @code{all} 8794Specify @code{all} to apply @var{command} to all frames. 8795 8796@item @var{count} 8797Use @var{count} to apply @var{command} to the innermost @var{count} 8798frames, where @var{count} is a positive number. 8799 8800@item @var{-count} 8801Use @var{-count} to apply @var{command} to the outermost @var{count} 8802frames, where @var{count} is a positive number. 8803 8804@item @code{level} 8805Use @code{level} to apply @var{command} to the set of frames identified 8806by the @var{level} list. @var{level} is a frame level or a range of frame 8807levels as @var{level1}-@var{level2}. The frame level is the number shown 8808in the first field of the @samp{backtrace} command output. 8809E.g., @samp{2-4 6-8 3} indicates to apply @var{command} for the frames 8810at levels 2, 3, 4, 6, 7, 8, and then again on frame at level 3. 8811 8812@end table 8813 8814Note that the frames on which @code{frame apply} applies a command are 8815also influenced by the @code{set backtrace} settings such as @code{set 8816backtrace past-main} and @code{set backtrace limit N}. 8817@xref{Backtrace,,Backtraces}. 8818 8819The @code{frame apply} command also supports a number of options that 8820allow overriding relevant @code{set backtrace} settings: 8821 8822@table @code 8823@item -past-main [@code{on}|@code{off}] 8824Whether backtraces should continue past @code{main}. 8825Related setting: @ref{set backtrace past-main}. 8826 8827@item -past-entry [@code{on}|@code{off}] 8828Whether backtraces should continue past the entry point of a program. 8829Related setting: @ref{set backtrace past-entry}. 8830@end table 8831 8832By default, @value{GDBN} displays some frame information before the 8833output produced by @var{command}, and an error raised during the 8834execution of a @var{command} will abort @code{frame apply}. The 8835following options can be used to fine-tune these behaviors: 8836 8837@table @code 8838@item -c 8839The flag @code{-c}, which stands for @samp{continue}, causes any 8840errors in @var{command} to be displayed, and the execution of 8841@code{frame apply} then continues. 8842@item -s 8843The flag @code{-s}, which stands for @samp{silent}, causes any errors 8844or empty output produced by a @var{command} to be silently ignored. 8845That is, the execution continues, but the frame information and errors 8846are not printed. 8847@item -q 8848The flag @code{-q} (@samp{quiet}) disables printing the frame 8849information. 8850@end table 8851 8852The following example shows how the flags @code{-c} and @code{-s} are 8853working when applying the command @code{p j} to all frames, where 8854variable @code{j} can only be successfully printed in the outermost 8855@code{#1 main} frame. 8856 8857@smallexample 8858@group 8859(gdb) frame apply all p j 8860#0 some_function (i=5) at fun.c:4 8861No symbol "j" in current context. 8862(gdb) frame apply all -c p j 8863#0 some_function (i=5) at fun.c:4 8864No symbol "j" in current context. 8865#1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 8866$1 = 5 8867(gdb) frame apply all -s p j 8868#1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 8869$2 = 5 8870(gdb) 8871@end group 8872@end smallexample 8873 8874By default, @samp{frame apply}, prints the frame location 8875information before the command output: 8876 8877@smallexample 8878@group 8879(gdb) frame apply all p $sp 8880#0 some_function (i=5) at fun.c:4 8881$4 = (void *) 0xffffd1e0 8882#1 0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11 8883$5 = (void *) 0xffffd1f0 8884(gdb) 8885@end group 8886@end smallexample 8887 8888If the flag @code{-q} is given, no frame information is printed: 8889@smallexample 8890@group 8891(gdb) frame apply all -q p $sp 8892$12 = (void *) 0xffffd1e0 8893$13 = (void *) 0xffffd1f0 8894(gdb) 8895@end group 8896@end smallexample 8897 8898@end table 8899 8900@table @code 8901 8902@kindex faas 8903@cindex apply a command to all frames (ignoring errors and empty output) 8904@item faas @var{command} 8905Shortcut for @code{frame apply all -s @var{command}}. 8906Applies @var{command} on all frames, ignoring errors and empty output. 8907 8908It can for example be used to print a local variable or a function 8909argument without knowing the frame where this variable or argument 8910is, using: 8911@smallexample 8912(@value{GDBP}) faas p some_local_var_i_do_not_remember_where_it_is 8913@end smallexample 8914 8915The @code{faas} command accepts the same options as the @code{frame 8916apply} command. @xref{Frame Apply,,frame apply}. 8917 8918Note that the command @code{tfaas @var{command}} applies @var{command} 8919on all frames of all threads. See @xref{Threads,,Threads}. 8920@end table 8921 8922 8923@node Frame Filter Management 8924@section Management of Frame Filters. 8925@cindex managing frame filters 8926 8927Frame filters are Python based utilities to manage and decorate the 8928output of frames. @xref{Frame Filter API}, for further information. 8929 8930Managing frame filters is performed by several commands available 8931within @value{GDBN}, detailed here. 8932 8933@table @code 8934@kindex info frame-filter 8935@item info frame-filter 8936Print a list of installed frame filters from all dictionaries, showing 8937their name, priority and enabled status. 8938 8939@kindex disable frame-filter 8940@anchor{disable frame-filter all} 8941@item disable frame-filter @var{filter-dictionary} @var{filter-name} 8942Disable a frame filter in the dictionary matching 8943@var{filter-dictionary} and @var{filter-name}. The 8944@var{filter-dictionary} may be @code{all}, @code{global}, 8945@code{progspace}, or the name of the object file where the frame filter 8946dictionary resides. When @code{all} is specified, all frame filters 8947across all dictionaries are disabled. The @var{filter-name} is the name 8948of the frame filter and is used when @code{all} is not the option for 8949@var{filter-dictionary}. A disabled frame-filter is not deleted, it 8950may be enabled again later. 8951 8952@kindex enable frame-filter 8953@item enable frame-filter @var{filter-dictionary} @var{filter-name} 8954Enable a frame filter in the dictionary matching 8955@var{filter-dictionary} and @var{filter-name}. The 8956@var{filter-dictionary} may be @code{all}, @code{global}, 8957@code{progspace} or the name of the object file where the frame filter 8958dictionary resides. When @code{all} is specified, all frame filters across 8959all dictionaries are enabled. The @var{filter-name} is the name of the frame 8960filter and is used when @code{all} is not the option for 8961@var{filter-dictionary}. 8962 8963Example: 8964 8965@smallexample 8966(gdb) info frame-filter 8967 8968global frame-filters: 8969 Priority Enabled Name 8970 1000 No PrimaryFunctionFilter 8971 100 Yes Reverse 8972 8973progspace /build/test frame-filters: 8974 Priority Enabled Name 8975 100 Yes ProgspaceFilter 8976 8977objfile /build/test frame-filters: 8978 Priority Enabled Name 8979 999 Yes BuildProgramFilter 8980 8981(gdb) disable frame-filter /build/test BuildProgramFilter 8982(gdb) info frame-filter 8983 8984global frame-filters: 8985 Priority Enabled Name 8986 1000 No PrimaryFunctionFilter 8987 100 Yes Reverse 8988 8989progspace /build/test frame-filters: 8990 Priority Enabled Name 8991 100 Yes ProgspaceFilter 8992 8993objfile /build/test frame-filters: 8994 Priority Enabled Name 8995 999 No BuildProgramFilter 8996 8997(gdb) enable frame-filter global PrimaryFunctionFilter 8998(gdb) info frame-filter 8999 9000global frame-filters: 9001 Priority Enabled Name 9002 1000 Yes PrimaryFunctionFilter 9003 100 Yes Reverse 9004 9005progspace /build/test frame-filters: 9006 Priority Enabled Name 9007 100 Yes ProgspaceFilter 9008 9009objfile /build/test frame-filters: 9010 Priority Enabled Name 9011 999 No BuildProgramFilter 9012@end smallexample 9013 9014@kindex set frame-filter priority 9015@item set frame-filter priority @var{filter-dictionary} @var{filter-name} @var{priority} 9016Set the @var{priority} of a frame filter in the dictionary matching 9017@var{filter-dictionary}, and the frame filter name matching 9018@var{filter-name}. The @var{filter-dictionary} may be @code{global}, 9019@code{progspace} or the name of the object file where the frame filter 9020dictionary resides. The @var{priority} is an integer. 9021 9022@kindex show frame-filter priority 9023@item show frame-filter priority @var{filter-dictionary} @var{filter-name} 9024Show the @var{priority} of a frame filter in the dictionary matching 9025@var{filter-dictionary}, and the frame filter name matching 9026@var{filter-name}. The @var{filter-dictionary} may be @code{global}, 9027@code{progspace} or the name of the object file where the frame filter 9028dictionary resides. 9029 9030Example: 9031 9032@smallexample 9033(gdb) info frame-filter 9034 9035global frame-filters: 9036 Priority Enabled Name 9037 1000 Yes PrimaryFunctionFilter 9038 100 Yes Reverse 9039 9040progspace /build/test frame-filters: 9041 Priority Enabled Name 9042 100 Yes ProgspaceFilter 9043 9044objfile /build/test frame-filters: 9045 Priority Enabled Name 9046 999 No BuildProgramFilter 9047 9048(gdb) set frame-filter priority global Reverse 50 9049(gdb) info frame-filter 9050 9051global frame-filters: 9052 Priority Enabled Name 9053 1000 Yes PrimaryFunctionFilter 9054 50 Yes Reverse 9055 9056progspace /build/test frame-filters: 9057 Priority Enabled Name 9058 100 Yes ProgspaceFilter 9059 9060objfile /build/test frame-filters: 9061 Priority Enabled Name 9062 999 No BuildProgramFilter 9063@end smallexample 9064@end table 9065 9066@node Source 9067@chapter Examining Source Files 9068 9069@value{GDBN} can print parts of your program's source, since the debugging 9070information recorded in the program tells @value{GDBN} what source files were 9071used to build it. When your program stops, @value{GDBN} spontaneously prints 9072the line where it stopped. Likewise, when you select a stack frame 9073(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where 9074execution in that frame has stopped. You can print other portions of 9075source files by explicit command. 9076 9077If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may 9078prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using 9079@value{GDBN} under @sc{gnu} Emacs}. 9080 9081@menu 9082* List:: Printing source lines 9083* Location Specifications:: How to specify code locations 9084* Edit:: Editing source files 9085* Search:: Searching source files 9086* Source Path:: Specifying source directories 9087* Machine Code:: Source and machine code 9088* Disable Reading Source:: Disable Reading Source Code 9089@end menu 9090 9091@node List 9092@section Printing Source Lines 9093 9094@kindex list 9095@kindex l @r{(@code{list})} 9096To print lines from a source file, use the @code{list} command 9097(abbreviated @code{l}). By default, ten lines are printed. 9098There are several ways to specify what part of the file you want to 9099print; see @ref{Location Specifications}, for the full list. 9100 9101Here are the forms of the @code{list} command most commonly used: 9102 9103@table @code 9104@item list @var{linenum} 9105Print lines centered around line number @var{linenum} in the 9106current source file. 9107 9108@item list @var{function} 9109Print lines centered around the beginning of function 9110@var{function}. 9111 9112@item list 9113Print more lines. If the last lines printed were printed with a 9114@code{list} command, this prints lines following the last lines 9115printed; however, if the last line printed was a solitary line printed 9116as part of displaying a stack frame (@pxref{Stack, ,Examining the 9117Stack}), this prints lines centered around that line. 9118 9119@item list - 9120Print lines just before the lines last printed. 9121@end table 9122 9123@cindex @code{list}, how many lines to display 9124By default, @value{GDBN} prints ten source lines with any of these forms of 9125the @code{list} command. You can change this using @code{set listsize}: 9126 9127@table @code 9128@kindex set listsize 9129@item set listsize @var{count} 9130@itemx set listsize unlimited 9131Make the @code{list} command display @var{count} source lines (unless 9132the @code{list} argument explicitly specifies some other number). 9133Setting @var{count} to @code{unlimited} or 0 means there's no limit. 9134 9135@kindex show listsize 9136@item show listsize 9137Display the number of lines that @code{list} prints. 9138@end table 9139 9140Repeating a @code{list} command with @key{RET} discards the argument, 9141so it is equivalent to typing just @code{list}. This is more useful 9142than listing the same lines again. An exception is made for an 9143argument of @samp{-}; that argument is preserved in repetition so that 9144each repetition moves up in the source file. 9145 9146In general, the @code{list} command expects you to supply zero, one or 9147two location specs. These location specs are interpreted to resolve 9148to source code lines; there are several ways of writing them 9149(@pxref{Location Specifications}), but the effect is always to resolve 9150to some source lines to display. 9151 9152Here is a complete description of the possible arguments for @code{list}: 9153 9154@table @code 9155@item list @var{locspec} 9156Print lines centered around the line or lines of all the code 9157locations that result from resolving @var{locspec}. 9158 9159@item list @var{first},@var{last} 9160Print lines from @var{first} to @var{last}. Both arguments are 9161location specs. When a @code{list} command has two location specs, 9162and the source file of the second location spec is omitted, this 9163refers to the same source file as the first location spec. If either 9164@var{first} or @var{last} resolve to more than one source line in the 9165program, then the list command shows the list of resolved source 9166lines and does not proceed with the source code listing. 9167 9168@item list ,@var{last} 9169Print lines ending with @var{last}. 9170 9171Likewise, if @var{last} resolves to more than one source line in the 9172program, then the list command prints the list of resolved source 9173lines and does not proceed with the source code listing. 9174 9175@item list @var{first}, 9176Print lines starting with @var{first}. 9177 9178@item list + 9179Print lines just after the lines last printed. 9180 9181@item list - 9182Print lines just before the lines last printed. 9183 9184@item list 9185As described in the preceding table. 9186@end table 9187 9188@node Location Specifications 9189@section Location Specifications 9190@cindex specifying location 9191@cindex locspec 9192@cindex source location 9193@cindex code location 9194 9195@cindex location spec 9196Several @value{GDBN} commands accept arguments that specify a location 9197or locations of your program's code. Many times locations are 9198specified using a source line number, but they can also be specified 9199by a function name, an address, a label, etc. The different 9200forms of specifying a location that @value{GDBN} recognizes are 9201collectively known as forms of @dfn{location specification}, or 9202@dfn{location spec}. This section documents the forms of specifying 9203locations that @value{GDBN} recognizes. 9204 9205@cindex location resolution 9206@cindex resolution of location spec 9207When you specify a location, @value{GDBN} needs to find the place in 9208your program, known as @dfn{code location}, that corresponds to the 9209given location spec. We call this process of finding actual code 9210locations corresponding to a location spec @dfn{location resolution}. 9211 9212A concrete code location in your program is uniquely identifiable by a 9213set of several attributes: its source line number, the name of its 9214source file, the fully-qualified and prototyped function in which it 9215is defined, and an instruction address. Because each inferior has its 9216own address space, the inferior number is also a necessary part of 9217these attributes. 9218 9219By contrast, location specs you type will many times omit some of 9220these attributes. For example, it is customary to specify just the 9221source line number to mean a line in the current source file, or 9222specify just the basename of the file, omitting its directories. In 9223other words, a location spec is usually incomplete, a kind of 9224blueprint, and @value{GDBN} needs to complete the missing attributes 9225by using the implied defaults, and by considering the source code and 9226the debug information available to it. This is what location 9227resolution is about. 9228 9229The resolution of an incomplete location spec can produce more than a 9230single code location, if the spec doesn't allow distinguishing between 9231them. Here are some examples of situations that result in a location 9232spec matching multiple code locations in your program: 9233 9234@itemize @bullet 9235@item 9236The location spec specifies a function name, and there are several 9237functions in the program which have that name. (To distinguish 9238between them, you can specify a fully-qualified and prototyped 9239function name, such as @code{A::func(int)} instead of just 9240@code{func}.) 9241 9242@item 9243The location spec specifies a source file name, and there are several 9244source files in the program that share the same name, for example 9245several files with the same basename in different subdirectories. (To 9246distinguish between them, specify enough leading directories with the 9247file name.) 9248 9249@item 9250For a C@t{++} constructor, the @value{NGCC} compiler generates several 9251instances of the function body, used in different cases, but their 9252source-level names are identical. 9253 9254@item 9255For a C@t{++} template function, a given line in the function can 9256correspond to any number of instantiations. 9257 9258@item 9259For an inlined function, a given source line can correspond to several 9260actual code locations with that function's inlined code. 9261@end itemize 9262 9263Resolution of a location spec can also fail to produce a complete code 9264location, or even fail to produce any code location. Here are some 9265examples of such situations: 9266 9267@itemize @bullet 9268@item 9269Some parts of the program lack detailed enough debug info, so the 9270resolved code location lacks some attributes, like source file name 9271and line number, leaving just the instruction address and perhaps also 9272a function name. Such an incomplete code location is only usable in 9273contexts that work with addresses and/or function names. Some 9274commands can only work with complete code locations. 9275 9276@item 9277The location spec specifies a function name, and there are no 9278functions in the program by that name, or they only exist in a 9279yet-unloaded shared library. 9280 9281@item 9282The location spec specifies a source file name, and there are no 9283source files in the program by that name, or they only exist in a 9284yet-unloaded shared library. 9285 9286@item 9287The location spec specifies both a source file name and a source line 9288number, and even though there are source files in the program that 9289match the file name, none of those files has the specified line 9290number. 9291@end itemize 9292 9293Locations may be specified using three different formats: linespec 9294locations, explicit locations, or address locations. The following 9295subsections describe these formats. 9296 9297@menu 9298* Linespec Locations:: Linespec locations 9299* Explicit Locations:: Explicit locations 9300* Address Locations:: Address locations 9301@end menu 9302 9303@node Linespec Locations 9304@subsection Linespec Locations 9305@cindex linespec locations 9306 9307A @dfn{linespec} is a colon-separated list of source location parameters such 9308as file name, function name, etc. Here are all the different ways of 9309specifying a linespec: 9310 9311@table @code 9312@item @var{linenum} 9313Specifies the line number @var{linenum} of the current source file. 9314 9315@item -@var{offset} 9316@itemx +@var{offset} 9317Specifies the line @var{offset} lines before or after the @dfn{current 9318line}. For the @code{list} command, the current line is the last one 9319printed; for the breakpoint commands, this is the line at which 9320execution stopped in the currently selected @dfn{stack frame} 9321(@pxref{Frames, ,Frames}, for a description of stack frames.) When 9322used as the second of the two linespecs in a @code{list} command, 9323this specifies the line @var{offset} lines up or down from the first 9324linespec. 9325 9326@item @var{filename}:@var{linenum} 9327Specifies the line @var{linenum} in the source file @var{filename}. 9328If @var{filename} is a relative file name, then it will match any 9329source file name with the same trailing components. For example, if 9330@var{filename} is @samp{gcc/expr.c}, then it will match source file 9331name of @file{/build/trunk/gcc/expr.c}, but not 9332@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}. 9333 9334@item @var{function} 9335Specifies the line that begins the body of the function @var{function}. 9336For example, in C, this is the line with the open brace. 9337 9338By default, in C@t{++} and Ada, @var{function} is interpreted as 9339specifying all functions named @var{function} in all scopes. For 9340C@t{++}, this means in all namespaces and classes. For Ada, this 9341means in all packages. 9342 9343For example, assuming a program with C@t{++} symbols named 9344@code{A::B::func} and @code{B::func}, both commands @w{@kbd{break 9345func}} and @w{@kbd{break B::func}} set a breakpoint on both symbols. 9346 9347Commands that accept a linespec let you override this with the 9348@code{-qualified} option. For example, @w{@kbd{break -qualified 9349func}} sets a breakpoint on a free-function named @code{func} ignoring 9350any C@t{++} class methods and namespace functions called @code{func}. 9351 9352@xref{Explicit Locations}. 9353 9354@item @var{function}:@var{label} 9355Specifies the line where @var{label} appears in @var{function}. 9356 9357@item @var{filename}:@var{function} 9358Specifies the line that begins the body of the function @var{function} 9359in the file @var{filename}. You only need the file name with a 9360function name to avoid ambiguity when there are identically named 9361functions in different source files. 9362 9363@item @var{label} 9364Specifies the line at which the label named @var{label} appears 9365in the function corresponding to the currently selected stack frame. 9366If there is no current selected stack frame (for instance, if the inferior 9367is not running), then @value{GDBN} will not search for a label. 9368 9369@cindex breakpoint at static probe point 9370@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name} 9371The @sc{gnu}/Linux tool @code{SystemTap} provides a way for 9372applications to embed static probes. @xref{Static Probe Points}, for more 9373information on finding and using static probes. This form of linespec 9374specifies the location of such a static probe. 9375 9376If @var{objfile} is given, only probes coming from that shared library 9377or executable matching @var{objfile} as a regular expression are considered. 9378If @var{provider} is given, then only probes from that provider are considered. 9379If several probes match the spec, @value{GDBN} will insert a breakpoint at 9380each one of those probes. 9381@end table 9382 9383@node Explicit Locations 9384@subsection Explicit Locations 9385@cindex explicit locations 9386 9387@dfn{Explicit locations} allow the user to directly specify the source 9388location's parameters using option-value pairs. 9389 9390Explicit locations are useful when several functions, labels, or 9391file names have the same name (base name for files) in the program's 9392sources. In these cases, explicit locations point to the source 9393line you meant more accurately and unambiguously. Also, using 9394explicit locations might be faster in large programs. 9395 9396For example, the linespec @samp{foo:bar} may refer to a function @code{bar} 9397defined in the file named @file{foo} or the label @code{bar} in a function 9398named @code{foo}. @value{GDBN} must search either the file system or 9399the symbol table to know. 9400 9401The list of valid explicit location options is summarized in the 9402following table: 9403 9404@table @code 9405@item -source @var{filename} 9406The value specifies the source file name. To differentiate between 9407files with the same base name, prepend as many directories as is necessary 9408to uniquely identify the desired file, e.g., @file{foo/bar/baz.c}. Otherwise 9409@value{GDBN} will use the first file it finds with the given base 9410name. This option requires the use of either @code{-function} or @code{-line}. 9411 9412@item -function @var{function} 9413The value specifies the name of a function. Operations 9414on function locations unmodified by other options (such as @code{-label} 9415or @code{-line}) refer to the line that begins the body of the function. 9416In C, for example, this is the line with the open brace. 9417 9418By default, in C@t{++} and Ada, @var{function} is interpreted as 9419specifying all functions named @var{function} in all scopes. For 9420C@t{++}, this means in all namespaces and classes. For Ada, this 9421means in all packages. 9422 9423For example, assuming a program with C@t{++} symbols named 9424@code{A::B::func} and @code{B::func}, both commands @w{@kbd{break 9425-function func}} and @w{@kbd{break -function B::func}} set a 9426breakpoint on both symbols. 9427 9428You can use the @kbd{-qualified} flag to override this (see below). 9429 9430@item -qualified 9431 9432This flag makes @value{GDBN} interpret a function name specified with 9433@kbd{-function} as a complete fully-qualified name. 9434 9435For example, assuming a C@t{++} program with symbols named 9436@code{A::B::func} and @code{B::func}, the @w{@kbd{break -qualified 9437-function B::func}} command sets a breakpoint on @code{B::func}, only. 9438 9439(Note: the @kbd{-qualified} option can precede a linespec as well 9440(@pxref{Linespec Locations}), so the particular example above could be 9441simplified as @w{@kbd{break -qualified B::func}}.) 9442 9443@item -label @var{label} 9444The value specifies the name of a label. When the function 9445name is not specified, the label is searched in the function of the currently 9446selected stack frame. 9447 9448@item -line @var{number} 9449The value specifies a line offset for the location. The offset may either 9450be absolute (@code{-line 3}) or relative (@code{-line +3}), depending on 9451the command. When specified without any other options, the line offset is 9452relative to the current line. 9453@end table 9454 9455Explicit location options may be abbreviated by omitting any non-unique 9456trailing characters from the option name, e.g., @w{@kbd{break -s main.c -li 3}}. 9457 9458@node Address Locations 9459@subsection Address Locations 9460@cindex address locations 9461 9462@dfn{Address locations} indicate a specific program address. They have 9463the generalized form *@var{address}. 9464 9465For line-oriented commands, such as @code{list} and @code{edit}, this 9466specifies a source line that contains @var{address}. For @code{break} and 9467other breakpoint-oriented commands, this can be used to set breakpoints in 9468parts of your program which do not have debugging information or 9469source files. 9470 9471Here @var{address} may be any expression valid in the current working 9472language (@pxref{Languages, working language}) that specifies a code 9473address. In addition, as a convenience, @value{GDBN} extends the 9474semantics of expressions used in locations to cover several situations 9475that frequently occur during debugging. Here are the various forms 9476of @var{address}: 9477 9478@table @code 9479@item @var{expression} 9480Any expression valid in the current working language. 9481 9482@item @var{funcaddr} 9483An address of a function or procedure derived from its name. In C, 9484C@t{++}, Objective-C, Fortran, minimal, and assembly, this is 9485simply the function's name @var{function} (and actually a special case 9486of a valid expression). In Pascal and Modula-2, this is 9487@code{&@var{function}}. In Ada, this is @code{@var{function}'Address} 9488(although the Pascal form also works). 9489 9490This form specifies the address of the function's first instruction, 9491before the stack frame and arguments have been set up. 9492 9493@item '@var{filename}':@var{funcaddr} 9494Like @var{funcaddr} above, but also specifies the name of the source 9495file explicitly. This is useful if the name of the function does not 9496specify the function unambiguously, e.g., if there are several 9497functions with identical names in different source files. 9498@end table 9499 9500@node Edit 9501@section Editing Source Files 9502@cindex editing source files 9503 9504@kindex edit 9505@kindex e @r{(@code{edit})} 9506To edit the lines in a source file, use the @code{edit} command. 9507The editing program of your choice 9508is invoked with the current line set to 9509the active line in the program. 9510Alternatively, there are several ways to specify what part of the file you 9511want to print if you want to see other parts of the program: 9512 9513@table @code 9514@item edit @var{locspec} 9515Edit the source file of the code location that results from resolving 9516@code{locspec}. Editing starts at the source file and source line 9517@code{locspec} resolves to. 9518@xref{Location Specifications}, for all the possible forms of the 9519@var{locspec} argument. 9520 9521If @code{locspec} resolves to more than one source line in your 9522program, then the command prints the list of resolved source lines and 9523does not proceed with the editing. 9524 9525Here are the forms of the @code{edit} command most commonly used: 9526 9527@table @code 9528@item edit @var{number} 9529Edit the current source file with @var{number} as the active line number. 9530 9531@item edit @var{function} 9532Edit the file containing @var{function} at the beginning of its definition. 9533@end table 9534 9535@end table 9536 9537@subsection Choosing your Editor 9538You can customize @value{GDBN} to use any editor you want 9539@footnote{ 9540The only restriction is that your editor (say @code{ex}), recognizes the 9541following command-line syntax: 9542@smallexample 9543ex +@var{number} file 9544@end smallexample 9545The optional numeric value +@var{number} specifies the number of the line in 9546the file where to start editing.}. 9547By default, it is @file{@value{EDITOR}}, but you can change this 9548by setting the environment variable @env{EDITOR} before using 9549@value{GDBN}. For example, to configure @value{GDBN} to use the 9550@code{vi} editor, you could use these commands with the @code{sh} shell: 9551@smallexample 9552EDITOR=/usr/bin/vi 9553export EDITOR 9554gdb @dots{} 9555@end smallexample 9556or in the @code{csh} shell, 9557@smallexample 9558setenv EDITOR /usr/bin/vi 9559gdb @dots{} 9560@end smallexample 9561 9562@node Search 9563@section Searching Source Files 9564@cindex searching source files 9565 9566There are two commands for searching through the current source file for a 9567regular expression. 9568 9569@table @code 9570@kindex search 9571@kindex forward-search 9572@kindex fo @r{(@code{forward-search})} 9573@item forward-search @var{regexp} 9574@itemx search @var{regexp} 9575The command @samp{forward-search @var{regexp}} checks each line, 9576starting with the one following the last line listed, for a match for 9577@var{regexp}. It lists the line that is found. You can use the 9578synonym @samp{search @var{regexp}} or abbreviate the command name as 9579@code{fo}. 9580 9581@kindex reverse-search 9582@item reverse-search @var{regexp} 9583The command @samp{reverse-search @var{regexp}} checks each line, starting 9584with the one before the last line listed and going backward, for a match 9585for @var{regexp}. It lists the line that is found. You can abbreviate 9586this command as @code{rev}. 9587@end table 9588 9589@node Source Path 9590@section Specifying Source Directories 9591 9592@cindex source path 9593@cindex directories for source files 9594Executable programs sometimes do not record the directories of the source 9595files from which they were compiled, just the names. Even when they do, 9596the directories could be moved between the compilation and your debugging 9597session. @value{GDBN} has a list of directories to search for source files; 9598this is called the @dfn{source path}. Each time @value{GDBN} wants a source file, 9599it tries all the directories in the list, in the order they are present 9600in the list, until it finds a file with the desired name. 9601 9602For example, suppose an executable references the file 9603@file{/usr/src/foo-1.0/lib/foo.c}, does not record a compilation 9604directory, and the @dfn{source path} is @file{/mnt/cross}. 9605@value{GDBN} would look for the source file in the following 9606locations: 9607 9608@enumerate 9609 9610@item @file{/usr/src/foo-1.0/lib/foo.c} 9611@item @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} 9612@item @file{/mnt/cross/foo.c} 9613 9614@end enumerate 9615 9616If the source file is not present at any of the above locations then 9617an error is printed. @value{GDBN} does not look up the parts of the 9618source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}. 9619Likewise, the subdirectories of the source path are not searched: if 9620the source path is @file{/mnt/cross}, and the binary refers to 9621@file{foo.c}, @value{GDBN} would not find it under 9622@file{/mnt/cross/usr/src/foo-1.0/lib}. 9623 9624Plain file names, relative file names with leading directories, file 9625names containing dots, etc.@: are all treated as described above, 9626except that non-absolute file names are not looked up literally. If 9627the @dfn{source path} is @file{/mnt/cross}, the source file is 9628recorded as @file{../lib/foo.c}, and no compilation directory is 9629recorded, then @value{GDBN} will search in the following locations: 9630 9631@enumerate 9632 9633@item @file{/mnt/cross/../lib/foo.c} 9634@item @file{/mnt/cross/foo.c} 9635 9636@end enumerate 9637 9638@kindex cdir 9639@kindex cwd 9640@vindex $cdir@r{, convenience variable} 9641@vindex $cwd@r{, convenience variable} 9642@cindex compilation directory 9643@cindex current directory 9644@cindex working directory 9645@cindex directory, current 9646@cindex directory, compilation 9647The @dfn{source path} will always include two special entries 9648@samp{$cdir} and @samp{$cwd}, these refer to the compilation directory 9649(if one is recorded) and the current working directory respectively. 9650 9651@samp{$cdir} causes @value{GDBN} to search within the compilation 9652directory, if one is recorded in the debug information. If no 9653compilation directory is recorded in the debug information then 9654@samp{$cdir} is ignored. 9655 9656@samp{$cwd} is not the same as @samp{.}---the former tracks the 9657current working directory as it changes during your @value{GDBN} 9658session, while the latter is immediately expanded to the current 9659directory at the time you add an entry to the source path. 9660 9661If a compilation directory is recorded in the debug information, and 9662@value{GDBN} has not found the source file after the first search 9663using @dfn{source path}, then @value{GDBN} will combine the 9664compilation directory and the filename, and then search for the source 9665file again using the @dfn{source path}. 9666 9667For example, if the executable records the source file as 9668@file{/usr/src/foo-1.0/lib/foo.c}, the compilation directory is 9669recorded as @file{/project/build}, and the @dfn{source path} is 9670@file{/mnt/cross:$cdir:$cwd} while the current working directory of 9671the @value{GDBN} session is @file{/home/user}, then @value{GDBN} will 9672search for the source file in the following locations: 9673 9674@enumerate 9675 9676@item @file{/usr/src/foo-1.0/lib/foo.c} 9677@item @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} 9678@item @file{/project/build/usr/src/foo-1.0/lib/foo.c} 9679@item @file{/home/user/usr/src/foo-1.0/lib/foo.c} 9680@item @file{/mnt/cross/project/build/usr/src/foo-1.0/lib/foo.c} 9681@item @file{/project/build/project/build/usr/src/foo-1.0/lib/foo.c} 9682@item @file{/home/user/project/build/usr/src/foo-1.0/lib/foo.c} 9683@item @file{/mnt/cross/foo.c} 9684@item @file{/project/build/foo.c} 9685@item @file{/home/user/foo.c} 9686 9687@end enumerate 9688 9689If the file name in the previous example had been recorded in the 9690executable as a relative path rather than an absolute path, then the 9691first look up would not have occurred, but all of the remaining steps 9692would be similar. 9693 9694When searching for source files on MS-DOS and MS-Windows, where 9695absolute paths start with a drive letter (e.g.@: 9696@file{C:/project/foo.c}), @value{GDBN} will remove the drive letter 9697from the file name before appending it to a search directory from 9698@dfn{source path}; for instance if the executable references the 9699source file @file{C:/project/foo.c} and @dfn{source path} is set to 9700@file{D:/mnt/cross}, then @value{GDBN} will search in the following 9701locations for the source file: 9702 9703@enumerate 9704 9705@item @file{C:/project/foo.c} 9706@item @file{D:/mnt/cross/project/foo.c} 9707@item @file{D:/mnt/cross/foo.c} 9708 9709@end enumerate 9710 9711Note that the executable search path is @emph{not} used to locate the 9712source files. 9713 9714Whenever you reset or rearrange the source path, @value{GDBN} clears out 9715any information it has cached about where source files are found and where 9716each line is in the file. 9717 9718@kindex directory 9719@kindex dir 9720When you start @value{GDBN}, its source path includes only @samp{$cdir} 9721and @samp{$cwd}, in that order. 9722To add other directories, use the @code{directory} command. 9723 9724The search path is used to find both program source files and @value{GDBN} 9725script files (read using the @samp{-command} option and @samp{source} command). 9726 9727In addition to the source path, @value{GDBN} provides a set of commands 9728that manage a list of source path substitution rules. A @dfn{substitution 9729rule} specifies how to rewrite source directories stored in the program's 9730debug information in case the sources were moved to a different 9731directory between compilation and debugging. A rule is made of 9732two strings, the first specifying what needs to be rewritten in 9733the path, and the second specifying how it should be rewritten. 9734In @ref{set substitute-path}, we name these two parts @var{from} and 9735@var{to} respectively. @value{GDBN} does a simple string replacement 9736of @var{from} with @var{to} at the start of the directory part of the 9737source file name, and uses that result instead of the original file 9738name to look up the sources. 9739 9740Using the previous example, suppose the @file{foo-1.0} tree has been 9741moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell 9742@value{GDBN} to replace @file{/usr/src} in all source path names with 9743@file{/mnt/cross}. The first lookup will then be 9744@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location 9745of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path 9746substitution rule, use the @code{set substitute-path} command 9747(@pxref{set substitute-path}). 9748 9749To avoid unexpected substitution results, a rule is applied only if the 9750@var{from} part of the directory name ends at a directory separator. 9751For instance, a rule substituting @file{/usr/source} into 9752@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but 9753not to @file{/usr/sourceware/foo-2.0}. And because the substitution 9754is applied only at the beginning of the directory name, this rule will 9755not be applied to @file{/root/usr/source/baz.c} either. 9756 9757In many cases, you can achieve the same result using the @code{directory} 9758command. However, @code{set substitute-path} can be more efficient in 9759the case where the sources are organized in a complex tree with multiple 9760subdirectories. With the @code{directory} command, you need to add each 9761subdirectory of your project. If you moved the entire tree while 9762preserving its internal organization, then @code{set substitute-path} 9763allows you to direct the debugger to all the sources with one single 9764command. 9765 9766@code{set substitute-path} is also more than just a shortcut command. 9767The source path is only used if the file at the original location no 9768longer exists. On the other hand, @code{set substitute-path} modifies 9769the debugger behavior to look at the rewritten location instead. So, if 9770for any reason a source file that is not relevant to your executable is 9771located at the original location, a substitution rule is the only 9772method available to point @value{GDBN} at the new location. 9773 9774@cindex @samp{--with-relocated-sources} 9775@cindex default source path substitution 9776You can configure a default source path substitution rule by 9777configuring @value{GDBN} with the 9778@samp{--with-relocated-sources=@var{dir}} option. The @var{dir} 9779should be the name of a directory under @value{GDBN}'s configured 9780prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and 9781directory names in debug information under @var{dir} will be adjusted 9782automatically if the installed @value{GDBN} is moved to a new 9783location. This is useful if @value{GDBN}, libraries or executables 9784with debug information and corresponding source code are being moved 9785together. 9786 9787@table @code 9788@item directory @var{dirname} @dots{} 9789@item dir @var{dirname} @dots{} 9790Add directory @var{dirname} to the front of the source path. Several 9791directory names may be given to this command, separated by @samp{:} 9792(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as 9793part of absolute file names) or 9794whitespace. You may specify a directory that is already in the source 9795path; this moves it forward, so @value{GDBN} searches it sooner. 9796 9797The special strings @samp{$cdir} (to refer to the compilation 9798directory, if one is recorded), and @samp{$cwd} (to refer to the 9799current working directory) can also be included in the list of 9800directories @var{dirname}. Though these will already be in the source 9801path they will be moved forward in the list so @value{GDBN} searches 9802them sooner. 9803 9804@item directory 9805Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation. 9806 9807@c RET-repeat for @code{directory} is explicitly disabled, but since 9808@c repeating it would be a no-op we do not say that. (thanks to RMS) 9809 9810@item set directories @var{path-list} 9811@kindex set directories 9812Set the source path to @var{path-list}. 9813@samp{$cdir:$cwd} are added if missing. 9814 9815@item show directories 9816@kindex show directories 9817Print the source path: show which directories it contains. 9818 9819@anchor{set substitute-path} 9820@item set substitute-path @var{from} @var{to} 9821@kindex set substitute-path 9822Define a source path substitution rule, and add it at the end of the 9823current list of existing substitution rules. If a rule with the same 9824@var{from} was already defined, then the old rule is also deleted. 9825 9826For example, if the file @file{/foo/bar/baz.c} was moved to 9827@file{/mnt/cross/baz.c}, then the command 9828 9829@smallexample 9830(@value{GDBP}) set substitute-path /foo/bar /mnt/cross 9831@end smallexample 9832 9833@noindent 9834will tell @value{GDBN} to replace @samp{/foo/bar} with 9835@samp{/mnt/cross}, which will allow @value{GDBN} to find the file 9836@file{baz.c} even though it was moved. 9837 9838In the case when more than one substitution rule have been defined, 9839the rules are evaluated one by one in the order where they have been 9840defined. The first one matching, if any, is selected to perform 9841the substitution. 9842 9843For instance, if we had entered the following commands: 9844 9845@smallexample 9846(@value{GDBP}) set substitute-path /usr/src/include /mnt/include 9847(@value{GDBP}) set substitute-path /usr/src /mnt/src 9848@end smallexample 9849 9850@noindent 9851@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into 9852@file{/mnt/include/defs.h} by using the first rule. However, it would 9853use the second rule to rewrite @file{/usr/src/lib/foo.c} into 9854@file{/mnt/src/lib/foo.c}. 9855 9856 9857@item unset substitute-path [path] 9858@kindex unset substitute-path 9859If a path is specified, search the current list of substitution rules 9860for a rule that would rewrite that path. Delete that rule if found. 9861A warning is emitted by the debugger if no rule could be found. 9862 9863If no path is specified, then all substitution rules are deleted. 9864 9865@item show substitute-path [path] 9866@kindex show substitute-path 9867If a path is specified, then print the source path substitution rule 9868which would rewrite that path, if any. 9869 9870If no path is specified, then print all existing source path substitution 9871rules. 9872 9873@end table 9874 9875If your source path is cluttered with directories that are no longer of 9876interest, @value{GDBN} may sometimes cause confusion by finding the wrong 9877versions of source. You can correct the situation as follows: 9878 9879@enumerate 9880@item 9881Use @code{directory} with no argument to reset the source path to its default value. 9882 9883@item 9884Use @code{directory} with suitable arguments to reinstall the 9885directories you want in the source path. You can add all the 9886directories in one command. 9887@end enumerate 9888 9889@node Machine Code 9890@section Source and Machine Code 9891@cindex source line and its code address 9892 9893You can use the command @code{info line} to map source lines to program 9894addresses (and vice versa), and the command @code{disassemble} to display 9895a range of addresses as machine instructions. You can use the command 9896@code{set disassemble-next-line} to set whether to disassemble next 9897source line when execution stops. When run under @sc{gnu} Emacs 9898mode, the @code{info line} command causes the arrow to point to the 9899line specified. Also, @code{info line} prints addresses in symbolic form as 9900well as hex. 9901 9902@table @code 9903@kindex info line 9904@item info line 9905@itemx info line @var{locspec} 9906Print the starting and ending addresses of the compiled code for the 9907source lines of the code locations that result from resolving 9908@var{locspec}. @xref{Location Specifications}, for the various forms 9909of @var{locspec}. 9910With no @var{locspec}, information about the current source line is 9911printed. 9912@end table 9913 9914For example, we can use @code{info line} to discover the location of 9915the object code for the first line of function 9916@code{m4_changequote}: 9917 9918@smallexample 9919(@value{GDBP}) info line m4_changequote 9920Line 895 of "builtin.c" starts at pc 0x634c <m4_changequote> and \ 9921 ends at 0x6350 <m4_changequote+4>. 9922@end smallexample 9923 9924@noindent 9925@cindex code address and its source line 9926We can also inquire, using @code{*@var{addr}} as the form for 9927@var{locspec}, what source line covers a particular address 9928@var{addr}: 9929@smallexample 9930(@value{GDBP}) info line *0x63ff 9931Line 926 of "builtin.c" starts at pc 0x63e4 <m4_changequote+152> and \ 9932 ends at 0x6404 <m4_changequote+184>. 9933@end smallexample 9934 9935@cindex @code{$_} and @code{info line} 9936@cindex @code{x} command, default address 9937@kindex x@r{(examine), and} info line 9938After @code{info line}, the default address for the @code{x} command 9939is changed to the starting address of the line, so that @samp{x/i} is 9940sufficient to begin examining the machine code (@pxref{Memory, 9941,Examining Memory}). Also, this address is saved as the value of the 9942convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience 9943Variables}). 9944 9945@cindex info line, repeated calls 9946After @code{info line}, using @code{info line} again without 9947specifying a location will display information about the next source 9948line. 9949 9950@anchor{disassemble} 9951@table @code 9952@kindex disassemble 9953@cindex assembly instructions 9954@cindex instructions, assembly 9955@cindex machine instructions 9956@cindex listing machine instructions 9957@item disassemble 9958@itemx disassemble /m 9959@itemx disassemble /s 9960@itemx disassemble /r 9961@itemx disassemble /b 9962This specialized command dumps a range of memory as machine 9963instructions. It can also print mixed source+disassembly by specifying 9964the @code{/m} or @code{/s} modifier and print the raw instructions in 9965hex as well as in symbolic form by specifying the @code{/r} or @code{/b} 9966modifier. The default memory range is the function surrounding the 9967program counter of the selected frame. A single argument to this 9968command is a program counter value; @value{GDBN} dumps the function 9969surrounding this value. When two arguments are given, they should be 9970separated by a comma, possibly surrounded by whitespace. The arguments 9971specify a range of addresses to dump, in one of two forms: 9972 9973@table @code 9974@item @var{start},@var{end} 9975the addresses from @var{start} (inclusive) to @var{end} (exclusive) 9976@item @var{start},+@var{length} 9977the addresses from @var{start} (inclusive) to 9978@code{@var{start}+@var{length}} (exclusive). 9979@end table 9980 9981@noindent 9982When 2 arguments are specified, the name of the function is also 9983printed (since there could be several functions in the given range). 9984 9985The argument(s) can be any expression yielding a numeric value, such as 9986@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}. 9987 9988If the range of memory being disassembled contains current program counter, 9989the instruction at that location is shown with a @code{=>} marker. 9990@end table 9991 9992The following example shows the disassembly of a range of addresses of 9993HP PA-RISC 2.0 code: 9994 9995@smallexample 9996(@value{GDBP}) disas 0x32c4, 0x32e4 9997Dump of assembler code from 0x32c4 to 0x32e4: 9998 0x32c4 <main+204>: addil 0,dp 9999 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26 10000 0x32cc <main+212>: ldil 0x3000,r31 10001 0x32d0 <main+216>: ble 0x3f8(sr4,r31) 10002 0x32d4 <main+220>: ldo 0(r31),rp 10003 0x32d8 <main+224>: addil -0x800,dp 10004 0x32dc <main+228>: ldo 0x588(r1),r26 10005 0x32e0 <main+232>: ldil 0x3000,r31 10006End of assembler dump. 10007@end smallexample 10008 10009The following two examples are for RISC-V, and demonstrates the 10010difference between the @code{/r} and @code{/b} modifiers. First with 10011@code{/b}, the bytes of the instruction are printed, in hex, in memory 10012order: 10013 10014@smallexample 10015(@value{GDBP}) disassemble /b 0x00010150,0x0001015c 10016Dump of assembler code from 0x10150 to 0x1015c: 10017 0x00010150 <call_me+4>: 22 dc sw s0,56(sp) 10018 0x00010152 <call_me+6>: 80 00 addi s0,sp,64 10019 0x00010154 <call_me+8>: 23 26 a4 fe sw a0,-20(s0) 10020 0x00010158 <call_me+12>: 23 24 b4 fe sw a1,-24(s0) 10021End of assembler dump. 10022@end smallexample 10023 10024In contrast, with @code{/r} the bytes of the instruction are displayed 10025in the instruction order, for RISC-V this means that the bytes have been 10026swapped to little-endian order: 10027 10028@smallexample 10029(@value{GDBP}) disassemble /r 0x00010150,0x0001015c 10030Dump of assembler code from 0x10150 to 0x1015c: 10031 0x00010150 <call_me+4>: dc22 sw s0,56(sp) 10032 0x00010152 <call_me+6>: 0080 addi s0,sp,64 10033 0x00010154 <call_me+8>: fea42623 sw a0,-20(s0) 10034 0x00010158 <call_me+12>: feb42423 sw a1,-24(s0) 10035End of assembler dump. 10036@end smallexample 10037 10038Here is an example showing mixed source+assembly for Intel x86 10039with @code{/m} or @code{/s}, when the program is stopped just after 10040function prologue in a non-optimized function with no inline code. 10041 10042@smallexample 10043(@value{GDBP}) disas /m main 10044Dump of assembler code for function main: 100455 @{ 10046 0x08048330 <+0>: push %ebp 10047 0x08048331 <+1>: mov %esp,%ebp 10048 0x08048333 <+3>: sub $0x8,%esp 10049 0x08048336 <+6>: and $0xfffffff0,%esp 10050 0x08048339 <+9>: sub $0x10,%esp 10051 100526 printf ("Hello.\n"); 10053=> 0x0804833c <+12>: movl $0x8048440,(%esp) 10054 0x08048343 <+19>: call 0x8048284 <puts@@plt> 10055 100567 return 0; 100578 @} 10058 0x08048348 <+24>: mov $0x0,%eax 10059 0x0804834d <+29>: leave 10060 0x0804834e <+30>: ret 10061 10062End of assembler dump. 10063@end smallexample 10064 10065The @code{/m} option is deprecated as its output is not useful when 10066there is either inlined code or re-ordered code. 10067The @code{/s} option is the preferred choice. 10068Here is an example for AMD x86-64 showing the difference between 10069@code{/m} output and @code{/s} output. 10070This example has one inline function defined in a header file, 10071and the code is compiled with @samp{-O2} optimization. 10072Note how the @code{/m} output is missing the disassembly of 10073several instructions that are present in the @code{/s} output. 10074 10075@file{foo.h}: 10076 10077@smallexample 10078int 10079foo (int a) 10080@{ 10081 if (a < 0) 10082 return a * 2; 10083 if (a == 0) 10084 return 1; 10085 return a + 10; 10086@} 10087@end smallexample 10088 10089@file{foo.c}: 10090 10091@smallexample 10092#include "foo.h" 10093volatile int x, y; 10094int 10095main () 10096@{ 10097 x = foo (y); 10098 return 0; 10099@} 10100@end smallexample 10101 10102@smallexample 10103(@value{GDBP}) disas /m main 10104Dump of assembler code for function main: 101055 @{ 10106 101076 x = foo (y); 10108 0x0000000000400400 <+0>: mov 0x200c2e(%rip),%eax # 0x601034 <y> 10109 0x0000000000400417 <+23>: mov %eax,0x200c13(%rip) # 0x601030 <x> 10110 101117 return 0; 101128 @} 10113 0x000000000040041d <+29>: xor %eax,%eax 10114 0x000000000040041f <+31>: retq 10115 0x0000000000400420 <+32>: add %eax,%eax 10116 0x0000000000400422 <+34>: jmp 0x400417 <main+23> 10117 10118End of assembler dump. 10119(@value{GDBP}) disas /s main 10120Dump of assembler code for function main: 10121foo.c: 101225 @{ 101236 x = foo (y); 10124 0x0000000000400400 <+0>: mov 0x200c2e(%rip),%eax # 0x601034 <y> 10125 10126foo.h: 101274 if (a < 0) 10128 0x0000000000400406 <+6>: test %eax,%eax 10129 0x0000000000400408 <+8>: js 0x400420 <main+32> 10130 101316 if (a == 0) 101327 return 1; 101338 return a + 10; 10134 0x000000000040040a <+10>: lea 0xa(%rax),%edx 10135 0x000000000040040d <+13>: test %eax,%eax 10136 0x000000000040040f <+15>: mov $0x1,%eax 10137 0x0000000000400414 <+20>: cmovne %edx,%eax 10138 10139foo.c: 101406 x = foo (y); 10141 0x0000000000400417 <+23>: mov %eax,0x200c13(%rip) # 0x601030 <x> 10142 101437 return 0; 101448 @} 10145 0x000000000040041d <+29>: xor %eax,%eax 10146 0x000000000040041f <+31>: retq 10147 10148foo.h: 101495 return a * 2; 10150 0x0000000000400420 <+32>: add %eax,%eax 10151 0x0000000000400422 <+34>: jmp 0x400417 <main+23> 10152End of assembler dump. 10153@end smallexample 10154 10155Here is another example showing raw instructions in hex for AMD x86-64, 10156 10157@smallexample 10158(gdb) disas /r 0x400281,+10 10159Dump of assembler code from 0x400281 to 0x40028b: 10160 0x0000000000400281: 38 36 cmp %dh,(%rsi) 10161 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax 10162 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx) 10163 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al 10164End of assembler dump. 10165@end smallexample 10166 10167Note that the @samp{disassemble} command's address arguments are 10168specified using expressions in your programming language 10169(@pxref{Expressions, ,Expressions}), not location specs 10170(@pxref{Location Specifications}). So, for example, if you want to 10171disassemble function @code{bar} in file @file{foo.c}, you must type 10172@samp{disassemble 'foo.c'::bar} and not @samp{disassemble foo.c:bar}. 10173 10174Some architectures have more than one commonly-used set of instruction 10175mnemonics or other syntax. 10176 10177For programs that were dynamically linked and use shared libraries, 10178instructions that call functions or branch to locations in the shared 10179libraries might show a seemingly bogus location---it's actually a 10180location of the relocation table. On some architectures, @value{GDBN} 10181might be able to resolve these to actual function names. 10182 10183@table @code 10184@kindex set disassembler-options 10185@cindex disassembler options 10186@item set disassembler-options @var{option1}[,@var{option2}@dots{}] 10187This command controls the passing of target specific information to 10188the disassembler. For a list of valid options, please refer to the 10189@code{-M}/@code{--disassembler-options} section of the @samp{objdump} 10190manual and/or the output of @kbd{objdump --help} 10191(@pxref{objdump,,objdump,binutils,The GNU Binary Utilities}). 10192The default value is the empty string. 10193 10194If it is necessary to specify more than one disassembler option, then 10195multiple options can be placed together into a comma separated list. 10196Currently this command is only supported on targets ARC, ARM, MIPS, 10197PowerPC and S/390. 10198 10199@kindex show disassembler-options 10200@item show disassembler-options 10201Show the current setting of the disassembler options. 10202@end table 10203 10204@table @code 10205@kindex set disassembly-flavor 10206@cindex Intel disassembly flavor 10207@cindex AT&T disassembly flavor 10208@item set disassembly-flavor @var{instruction-set} 10209Select the instruction set to use when disassembling the 10210program via the @code{disassemble} or @code{x/i} commands. 10211 10212Currently this command is only defined for the Intel x86 family. You 10213can set @var{instruction-set} to either @code{intel} or @code{att}. 10214The default is @code{att}, the AT&T flavor used by default by Unix 10215assemblers for x86-based targets. 10216 10217@kindex show disassembly-flavor 10218@item show disassembly-flavor 10219Show the current setting of the disassembly flavor. 10220@end table 10221 10222@table @code 10223@kindex set disassemble-next-line 10224@kindex show disassemble-next-line 10225@item set disassemble-next-line 10226@itemx show disassemble-next-line 10227Control whether or not @value{GDBN} will disassemble the next source 10228line or instruction when execution stops. If ON, @value{GDBN} will 10229display disassembly of the next source line when execution of the 10230program being debugged stops. This is @emph{in addition} to 10231displaying the source line itself, which @value{GDBN} always does if 10232possible. If the next source line cannot be displayed for some reason 10233(e.g., if @value{GDBN} cannot find the source file, or there's no line 10234info in the debug info), @value{GDBN} will display disassembly of the 10235next @emph{instruction} instead of showing the next source line. If 10236AUTO, @value{GDBN} will display disassembly of next instruction only 10237if the source line cannot be displayed. This setting causes 10238@value{GDBN} to display some feedback when you step through a function 10239with no line info or whose source file is unavailable. The default is 10240OFF, which means never display the disassembly of the next line or 10241instruction. 10242@end table 10243 10244@node Disable Reading Source 10245@section Disable Reading Source Code 10246@cindex source code, disable access 10247 10248In some cases it can be desirable to prevent @value{GDBN} from 10249accessing source code files. One case where this might be desirable 10250is if the source code files are located over a slow network 10251connection. 10252 10253The following command can be used to control whether @value{GDBN} 10254should access source code files or not: 10255 10256@table @code 10257@kindex set source open 10258@kindex show source open 10259@item set source open @r{[}on@r{|}off@r{]} 10260@itemx show source open 10261When this option is @code{on}, which is the default, @value{GDBN} will 10262access source code files when needed, for example to print source 10263lines when @value{GDBN} stops, or in response to the @code{list} 10264command. 10265 10266When this option is @code{off}, @value{GDBN} will not access source 10267code files. 10268@end table 10269 10270@node Data 10271@chapter Examining Data 10272 10273@cindex printing data 10274@cindex examining data 10275@kindex print 10276@kindex inspect 10277The usual way to examine data in your program is with the @code{print} 10278command (abbreviated @code{p}), or its synonym @code{inspect}. It 10279evaluates and prints the value of an expression of the language your 10280program is written in (@pxref{Languages, ,Using @value{GDBN} with 10281Different Languages}). It may also print the expression using a 10282Python-based pretty-printer (@pxref{Pretty Printing}). 10283 10284@table @code 10285@item print [[@var{options}] --] @var{expr} 10286@itemx print [[@var{options}] --] /@var{f} @var{expr} 10287@var{expr} is an expression (in the source language). By default the 10288value of @var{expr} is printed in a format appropriate to its data type; 10289you can choose a different format by specifying @samp{/@var{f}}, where 10290@var{f} is a letter specifying the format; see @ref{Output Formats,,Output 10291Formats}. 10292 10293@anchor{print options} 10294The @code{print} command supports a number of options that allow 10295overriding relevant global print settings as set by @code{set print} 10296subcommands: 10297 10298@table @code 10299@item -address [@code{on}|@code{off}] 10300Set printing of addresses. 10301Related setting: @ref{set print address}. 10302 10303@item -array [@code{on}|@code{off}] 10304Pretty formatting of arrays. 10305Related setting: @ref{set print array}. 10306 10307@item -array-indexes [@code{on}|@code{off}] 10308Set printing of array indexes. 10309Related setting: @ref{set print array-indexes}. 10310 10311@item -elements @var{number-of-elements}|@code{unlimited} 10312Set limit on string chars or array elements to print. The value 10313@code{unlimited} causes there to be no limit. Related setting: 10314@ref{set print elements}. 10315 10316@item -max-depth @var{depth}|@code{unlimited} 10317Set the threshold after which nested structures are replaced with 10318ellipsis. Related setting: @ref{set print max-depth}. 10319 10320@item -nibbles [@code{on}|@code{off}] 10321Set whether to print binary values in groups of four bits, known 10322as ``nibbles''. @xref{set print nibbles}. 10323 10324@item -memory-tag-violations [@code{on}|@code{off}] 10325Set printing of additional information about memory tag violations. 10326@xref{set print memory-tag-violations}. 10327 10328@item -null-stop [@code{on}|@code{off}] 10329Set printing of char arrays to stop at first null char. Related 10330setting: @ref{set print null-stop}. 10331 10332@item -object [@code{on}|@code{off}] 10333Set printing C@t{++} virtual function tables. Related setting: 10334@ref{set print object}. 10335 10336@item -pretty [@code{on}|@code{off}] 10337Set pretty formatting of structures. Related setting: @ref{set print 10338pretty}. 10339 10340@item -raw-values [@code{on}|@code{off}] 10341Set whether to print values in raw form, bypassing any 10342pretty-printers for that value. Related setting: @ref{set print 10343raw-values}. 10344 10345@item -repeats @var{number-of-repeats}|@code{unlimited} 10346Set threshold for repeated print elements. @code{unlimited} causes 10347all elements to be individually printed. Related setting: @ref{set 10348print repeats}. 10349 10350@item -static-members [@code{on}|@code{off}] 10351Set printing C@t{++} static members. Related setting: @ref{set print 10352static-members}. 10353 10354@item -symbol [@code{on}|@code{off}] 10355Set printing of symbol names when printing pointers. Related setting: 10356@ref{set print symbol}. 10357 10358@item -union [@code{on}|@code{off}] 10359Set printing of unions interior to structures. Related setting: 10360@ref{set print union}. 10361 10362@item -vtbl [@code{on}|@code{off}] 10363Set printing of C++ virtual function tables. Related setting: 10364@ref{set print vtbl}. 10365@end table 10366 10367Because the @code{print} command accepts arbitrary expressions which 10368may look like options (including abbreviations), if you specify any 10369command option, then you must use a double dash (@code{--}) to mark 10370the end of option processing. 10371 10372For example, this prints the value of the @code{-p} expression: 10373 10374@smallexample 10375(@value{GDBP}) print -p 10376@end smallexample 10377 10378While this repeats the last value in the value history (see below) 10379with the @code{-pretty} option in effect: 10380 10381@smallexample 10382(@value{GDBP}) print -p -- 10383@end smallexample 10384 10385Here is an example including both on option and an expression: 10386 10387@smallexample 10388@group 10389(@value{GDBP}) print -pretty -- *myptr 10390$1 = @{ 10391 next = 0x0, 10392 flags = @{ 10393 sweet = 1, 10394 sour = 1 10395 @}, 10396 meat = 0x54 "Pork" 10397@} 10398@end group 10399@end smallexample 10400 10401@item print [@var{options}] 10402@itemx print [@var{options}] /@var{f} 10403@cindex reprint the last value 10404If you omit @var{expr}, @value{GDBN} displays the last value again (from the 10405@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to 10406conveniently inspect the same value in an alternative format. 10407@end table 10408 10409If the architecture supports memory tagging, the @code{print} command will 10410display pointer/memory tag mismatches if what is being printed is a pointer 10411or reference type. @xref{Memory Tagging}. 10412 10413A more low-level way of examining data is with the @code{x} command. 10414It examines data in memory at a specified address and prints it in a 10415specified format. @xref{Memory, ,Examining Memory}. 10416 10417If you are interested in information about types, or about how the 10418fields of a struct or a class are declared, use the @code{ptype @var{expr}} 10419command rather than @code{print}. @xref{Symbols, ,Examining the Symbol 10420Table}. 10421 10422@cindex exploring hierarchical data structures 10423@kindex explore 10424Another way of examining values of expressions and type information is 10425through the Python extension command @code{explore} (available only if 10426the @value{GDBN} build is configured with @code{--with-python}). It 10427offers an interactive way to start at the highest level (or, the most 10428abstract level) of the data type of an expression (or, the data type 10429itself) and explore all the way down to leaf scalar values/fields 10430embedded in the higher level data types. 10431 10432@table @code 10433@item explore @var{arg} 10434@var{arg} is either an expression (in the source language), or a type 10435visible in the current context of the program being debugged. 10436@end table 10437 10438The working of the @code{explore} command can be illustrated with an 10439example. If a data type @code{struct ComplexStruct} is defined in your 10440C program as 10441 10442@smallexample 10443struct SimpleStruct 10444@{ 10445 int i; 10446 double d; 10447@}; 10448 10449struct ComplexStruct 10450@{ 10451 struct SimpleStruct *ss_p; 10452 int arr[10]; 10453@}; 10454@end smallexample 10455 10456@noindent 10457followed by variable declarations as 10458 10459@smallexample 10460struct SimpleStruct ss = @{ 10, 1.11 @}; 10461struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @}; 10462@end smallexample 10463 10464@noindent 10465then, the value of the variable @code{cs} can be explored using the 10466@code{explore} command as follows. 10467 10468@smallexample 10469(gdb) explore cs 10470The value of `cs' is a struct/class of type `struct ComplexStruct' with 10471the following fields: 10472 10473 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'> 10474 arr = <Enter 1 to explore this field of type `int [10]'> 10475 10476Enter the field number of choice: 10477@end smallexample 10478 10479@noindent 10480Since the fields of @code{cs} are not scalar values, you are being 10481prompted to chose the field you want to explore. Let's say you choose 10482the field @code{ss_p} by entering @code{0}. Then, since this field is a 10483pointer, you will be asked if it is pointing to a single value. From 10484the declaration of @code{cs} above, it is indeed pointing to a single 10485value, hence you enter @code{y}. If you enter @code{n}, then you will 10486be asked if it were pointing to an array of values, in which case this 10487field will be explored as if it were an array. 10488 10489@smallexample 10490`cs.ss_p' is a pointer to a value of type `struct SimpleStruct' 10491Continue exploring it as a pointer to a single value [y/n]: y 10492The value of `*(cs.ss_p)' is a struct/class of type `struct 10493SimpleStruct' with the following fields: 10494 10495 i = 10 .. (Value of type `int') 10496 d = 1.1100000000000001 .. (Value of type `double') 10497 10498Press enter to return to parent value: 10499@end smallexample 10500 10501@noindent 10502If the field @code{arr} of @code{cs} was chosen for exploration by 10503entering @code{1} earlier, then since it is as array, you will be 10504prompted to enter the index of the element in the array that you want 10505to explore. 10506 10507@smallexample 10508`cs.arr' is an array of `int'. 10509Enter the index of the element you want to explore in `cs.arr': 5 10510 10511`(cs.arr)[5]' is a scalar value of type `int'. 10512 10513(cs.arr)[5] = 4 10514 10515Press enter to return to parent value: 10516@end smallexample 10517 10518In general, at any stage of exploration, you can go deeper towards the 10519leaf values by responding to the prompts appropriately, or hit the 10520return key to return to the enclosing data structure (the @i{higher} 10521level data structure). 10522 10523Similar to exploring values, you can use the @code{explore} command to 10524explore types. Instead of specifying a value (which is typically a 10525variable name or an expression valid in the current context of the 10526program being debugged), you specify a type name. If you consider the 10527same example as above, your can explore the type 10528@code{struct ComplexStruct} by passing the argument 10529@code{struct ComplexStruct} to the @code{explore} command. 10530 10531@smallexample 10532(gdb) explore struct ComplexStruct 10533@end smallexample 10534 10535@noindent 10536By responding to the prompts appropriately in the subsequent interactive 10537session, you can explore the type @code{struct ComplexStruct} in a 10538manner similar to how the value @code{cs} was explored in the above 10539example. 10540 10541The @code{explore} command also has two sub-commands, 10542@code{explore value} and @code{explore type}. The former sub-command is 10543a way to explicitly specify that value exploration of the argument is 10544being invoked, while the latter is a way to explicitly specify that type 10545exploration of the argument is being invoked. 10546 10547@table @code 10548@item explore value @var{expr} 10549@cindex explore value 10550This sub-command of @code{explore} explores the value of the 10551expression @var{expr} (if @var{expr} is an expression valid in the 10552current context of the program being debugged). The behavior of this 10553command is identical to that of the behavior of the @code{explore} 10554command being passed the argument @var{expr}. 10555 10556@item explore type @var{arg} 10557@cindex explore type 10558This sub-command of @code{explore} explores the type of @var{arg} (if 10559@var{arg} is a type visible in the current context of program being 10560debugged), or the type of the value/expression @var{arg} (if @var{arg} 10561is an expression valid in the current context of the program being 10562debugged). If @var{arg} is a type, then the behavior of this command is 10563identical to that of the @code{explore} command being passed the 10564argument @var{arg}. If @var{arg} is an expression, then the behavior of 10565this command will be identical to that of the @code{explore} command 10566being passed the type of @var{arg} as the argument. 10567@end table 10568 10569@menu 10570* Expressions:: Expressions 10571* Ambiguous Expressions:: Ambiguous Expressions 10572* Variables:: Program variables 10573* Arrays:: Artificial arrays 10574* Output Formats:: Output formats 10575* Memory:: Examining memory 10576* Memory Tagging:: Memory Tagging 10577* Auto Display:: Automatic display 10578* Print Settings:: Print settings 10579* Pretty Printing:: Python pretty printing 10580* Value History:: Value history 10581* Convenience Vars:: Convenience variables 10582* Convenience Funs:: Convenience functions 10583* Registers:: Registers 10584* Floating Point Hardware:: Floating point hardware 10585* Vector Unit:: Vector Unit 10586* OS Information:: Auxiliary data provided by operating system 10587* Memory Region Attributes:: Memory region attributes 10588* Dump/Restore Files:: Copy between memory and a file 10589* Core File Generation:: Cause a program dump its core 10590* Character Sets:: Debugging programs that use a different 10591 character set than GDB does 10592* Caching Target Data:: Data caching for targets 10593* Searching Memory:: Searching memory for a sequence of bytes 10594* Value Sizes:: Managing memory allocated for values 10595@end menu 10596 10597@node Expressions 10598@section Expressions 10599 10600@cindex expressions 10601@code{print} and many other @value{GDBN} commands accept an expression and 10602compute its value. Any kind of constant, variable or operator defined 10603by the programming language you are using is valid in an expression in 10604@value{GDBN}. This includes conditional expressions, function calls, 10605casts, and string constants. It also includes preprocessor macros, if 10606you compiled your program to include this information; see 10607@ref{Compilation}. 10608 10609@cindex arrays in expressions 10610@value{GDBN} supports array constants in expressions input by 10611the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example, 10612you can use the command @code{print @{1, 2, 3@}} to create an array 10613of three integers. If you pass an array to a function or assign it 10614to a program variable, @value{GDBN} copies the array to memory that 10615is @code{malloc}ed in the target program. 10616 10617Because C is so widespread, most of the expressions shown in examples in 10618this manual are in C. @xref{Languages, , Using @value{GDBN} with Different 10619Languages}, for information on how to use expressions in other 10620languages. 10621 10622In this section, we discuss operators that you can use in @value{GDBN} 10623expressions regardless of your programming language. 10624 10625@cindex casts, in expressions 10626Casts are supported in all languages, not just in C, because it is so 10627useful to cast a number into a pointer in order to examine a structure 10628at that address in memory. 10629@c FIXME: casts supported---Mod2 true? 10630 10631@value{GDBN} supports these operators, in addition to those common 10632to programming languages: 10633 10634@table @code 10635@item @@ 10636@samp{@@} is a binary operator for treating parts of memory as arrays. 10637@xref{Arrays, ,Artificial Arrays}, for more information. 10638 10639@item :: 10640@samp{::} allows you to specify a variable in terms of the file or 10641function where it is defined. @xref{Variables, ,Program Variables}. 10642 10643@cindex @{@var{type}@} 10644@cindex type casting memory 10645@cindex memory, viewing as typed object 10646@cindex casts, to view memory 10647@item @{@var{type}@} @var{addr} 10648Refers to an object of type @var{type} stored at address @var{addr} in 10649memory. The address @var{addr} may be any expression whose value is 10650an integer or pointer (but parentheses are required around binary 10651operators, just as in a cast). This construct is allowed regardless 10652of what kind of data is normally supposed to reside at @var{addr}. 10653@end table 10654 10655@node Ambiguous Expressions 10656@section Ambiguous Expressions 10657@cindex ambiguous expressions 10658 10659Expressions can sometimes contain some ambiguous elements. For instance, 10660some programming languages (notably Ada, C@t{++} and Objective-C) permit 10661a single function name to be defined several times, for application in 10662different contexts. This is called @dfn{overloading}. Another example 10663involving Ada is generics. A @dfn{generic package} is similar to C@t{++} 10664templates and is typically instantiated several times, resulting in 10665the same function name being defined in different contexts. 10666 10667In some cases and depending on the language, it is possible to adjust 10668the expression to remove the ambiguity. For instance in C@t{++}, you 10669can specify the signature of the function you want to break on, as in 10670@kbd{break @var{function}(@var{types})}. In Ada, using the fully 10671qualified name of your function often makes the expression unambiguous 10672as well. 10673 10674When an ambiguity that needs to be resolved is detected, the debugger 10675has the capability to display a menu of numbered choices for each 10676possibility, and then waits for the selection with the prompt @samp{>}. 10677The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}} 10678aborts the current command. If the command in which the expression was 10679used allows more than one choice to be selected, the next option in the 10680menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible 10681choices. 10682 10683For example, the following session excerpt shows an attempt to set a 10684breakpoint at the overloaded symbol @code{String::after}. 10685We choose three particular definitions of that function name: 10686 10687@c FIXME! This is likely to change to show arg type lists, at least 10688@smallexample 10689@group 10690(@value{GDBP}) b String::after 10691[0] cancel 10692[1] all 10693[2] file:String.cc; line number:867 10694[3] file:String.cc; line number:860 10695[4] file:String.cc; line number:875 10696[5] file:String.cc; line number:853 10697[6] file:String.cc; line number:846 10698[7] file:String.cc; line number:735 10699> 2 4 6 10700Breakpoint 1 at 0xb26c: file String.cc, line 867. 10701Breakpoint 2 at 0xb344: file String.cc, line 875. 10702Breakpoint 3 at 0xafcc: file String.cc, line 846. 10703Multiple breakpoints were set. 10704Use the "delete" command to delete unwanted 10705 breakpoints. 10706(@value{GDBP}) 10707@end group 10708@end smallexample 10709 10710@table @code 10711@kindex set multiple-symbols 10712@item set multiple-symbols @var{mode} 10713@cindex multiple-symbols menu 10714 10715This option allows you to adjust the debugger behavior when an expression 10716is ambiguous. 10717 10718By default, @var{mode} is set to @code{all}. If the command with which 10719the expression is used allows more than one choice, then @value{GDBN} 10720automatically selects all possible choices. For instance, inserting 10721a breakpoint on a function using an ambiguous name results in a breakpoint 10722inserted on each possible match. However, if a unique choice must be made, 10723then @value{GDBN} uses the menu to help you disambiguate the expression. 10724For instance, printing the address of an overloaded function will result 10725in the use of the menu. 10726 10727When @var{mode} is set to @code{ask}, the debugger always uses the menu 10728when an ambiguity is detected. 10729 10730Finally, when @var{mode} is set to @code{cancel}, the debugger reports 10731an error due to the ambiguity and the command is aborted. 10732 10733@kindex show multiple-symbols 10734@item show multiple-symbols 10735Show the current value of the @code{multiple-symbols} setting. 10736@end table 10737 10738@node Variables 10739@section Program Variables 10740 10741The most common kind of expression to use is the name of a variable 10742in your program. 10743 10744Variables in expressions are understood in the selected stack frame 10745(@pxref{Selection, ,Selecting a Frame}); they must be either: 10746 10747@itemize @bullet 10748@item 10749global (or file-static) 10750@end itemize 10751 10752@noindent or 10753 10754@itemize @bullet 10755@item 10756visible according to the scope rules of the 10757programming language from the point of execution in that frame 10758@end itemize 10759 10760@noindent This means that in the function 10761 10762@smallexample 10763foo (a) 10764 int a; 10765@{ 10766 bar (a); 10767 @{ 10768 int b = test (); 10769 bar (b); 10770 @} 10771@} 10772@end smallexample 10773 10774@noindent 10775you can examine and use the variable @code{a} whenever your program is 10776executing within the function @code{foo}, but you can only use or 10777examine the variable @code{b} while your program is executing inside 10778the block where @code{b} is declared. 10779 10780@cindex variable name conflict 10781There is an exception: you can refer to a variable or function whose 10782scope is a single source file even if the current execution point is not 10783in this file. But it is possible to have more than one such variable or 10784function with the same name (in different source files). If that 10785happens, referring to that name has unpredictable effects. If you wish, 10786you can specify a static variable in a particular function or file by 10787using the colon-colon (@code{::}) notation: 10788 10789@cindex colon-colon, context for variables/functions 10790@ifnotinfo 10791@c info cannot cope with a :: index entry, but why deprive hard copy readers? 10792@cindex @code{::}, context for variables/functions 10793@end ifnotinfo 10794@smallexample 10795@var{file}::@var{variable} 10796@var{function}::@var{variable} 10797@end smallexample 10798 10799@noindent 10800Here @var{file} or @var{function} is the name of the context for the 10801static @var{variable}. In the case of file names, you can use quotes to 10802make sure @value{GDBN} parses the file name as a single word---for example, 10803to print a global value of @code{x} defined in @file{f2.c}: 10804 10805@smallexample 10806(@value{GDBP}) p 'f2.c'::x 10807@end smallexample 10808 10809The @code{::} notation is normally used for referring to 10810static variables, since you typically disambiguate uses of local variables 10811in functions by selecting the appropriate frame and using the 10812simple name of the variable. However, you may also use this notation 10813to refer to local variables in frames enclosing the selected frame: 10814 10815@smallexample 10816void 10817foo (int a) 10818@{ 10819 if (a < 10) 10820 bar (a); 10821 else 10822 process (a); /* Stop here */ 10823@} 10824 10825int 10826bar (int a) 10827@{ 10828 foo (a + 5); 10829@} 10830@end smallexample 10831 10832@noindent 10833For example, if there is a breakpoint at the commented line, 10834here is what you might see 10835when the program stops after executing the call @code{bar(0)}: 10836 10837@smallexample 10838(@value{GDBP}) p a 10839$1 = 10 10840(@value{GDBP}) p bar::a 10841$2 = 5 10842(@value{GDBP}) up 2 10843#2 0x080483d0 in foo (a=5) at foobar.c:12 10844(@value{GDBP}) p a 10845$3 = 5 10846(@value{GDBP}) p bar::a 10847$4 = 0 10848@end smallexample 10849 10850@cindex C@t{++} scope resolution 10851These uses of @samp{::} are very rarely in conflict with the very 10852similar use of the same notation in C@t{++}. When they are in 10853conflict, the C@t{++} meaning takes precedence; however, this can be 10854overridden by quoting the file or function name with single quotes. 10855 10856For example, suppose the program is stopped in a method of a class 10857that has a field named @code{includefile}, and there is also an 10858include file named @file{includefile} that defines a variable, 10859@code{some_global}. 10860 10861@smallexample 10862(@value{GDBP}) p includefile 10863$1 = 23 10864(@value{GDBP}) p includefile::some_global 10865A syntax error in expression, near `'. 10866(@value{GDBP}) p 'includefile'::some_global 10867$2 = 27 10868@end smallexample 10869 10870@cindex wrong values 10871@cindex variable values, wrong 10872@cindex function entry/exit, wrong values of variables 10873@cindex optimized code, wrong values of variables 10874@quotation 10875@emph{Warning:} Occasionally, a local variable may appear to have the 10876wrong value at certain points in a function---just after entry to a new 10877scope, and just before exit. 10878@end quotation 10879You may see this problem when you are stepping by machine instructions. 10880This is because, on most machines, it takes more than one instruction to 10881set up a stack frame (including local variable definitions); if you are 10882stepping by machine instructions, variables may appear to have the wrong 10883values until the stack frame is completely built. On exit, it usually 10884also takes more than one machine instruction to destroy a stack frame; 10885after you begin stepping through that group of instructions, local 10886variable definitions may be gone. 10887 10888This may also happen when the compiler does significant optimizations. 10889To be sure of always seeing accurate values, turn off all optimization 10890when compiling. 10891 10892@cindex ``No symbol "foo" in current context'' 10893Another possible effect of compiler optimizations is to optimize 10894unused variables out of existence, or assign variables to registers (as 10895opposed to memory addresses). Depending on the support for such cases 10896offered by the debug info format used by the compiler, @value{GDBN} 10897might not be able to display values for such local variables. If that 10898happens, @value{GDBN} will print a message like this: 10899 10900@smallexample 10901No symbol "foo" in current context. 10902@end smallexample 10903 10904To solve such problems, either recompile without optimizations, or use a 10905different debug info format, if the compiler supports several such 10906formats. @xref{Compilation}, for more information on choosing compiler 10907options. @xref{C, ,C and C@t{++}}, for more information about debug 10908info formats that are best suited to C@t{++} programs. 10909 10910If you ask to print an object whose contents are unknown to 10911@value{GDBN}, e.g., because its data type is not completely specified 10912by the debug information, @value{GDBN} will say @samp{<incomplete 10913type>}. @xref{Symbols, incomplete type}, for more about this. 10914 10915@cindex no debug info variables 10916If you try to examine or use the value of a (global) variable for 10917which @value{GDBN} has no type information, e.g., because the program 10918includes no debug information, @value{GDBN} displays an error message. 10919@xref{Symbols, unknown type}, for more about unknown types. If you 10920cast the variable to its declared type, @value{GDBN} gets the 10921variable's value using the cast-to type as the variable's type. For 10922example, in a C program: 10923 10924@smallexample 10925 (@value{GDBP}) p var 10926 'var' has unknown type; cast it to its declared type 10927 (@value{GDBP}) p (float) var 10928 $1 = 3.14 10929@end smallexample 10930 10931If you append @kbd{@@entry} string to a function parameter name you get its 10932value at the time the function got called. If the value is not available an 10933error message is printed. Entry values are available only with some compilers. 10934Entry values are normally also printed at the function parameter list according 10935to @ref{set print entry-values}. 10936 10937@smallexample 10938Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29 1093929 i++; 10940(gdb) next 1094130 e (i); 10942(gdb) print i 10943$1 = 31 10944(gdb) print i@@entry 10945$2 = 30 10946@end smallexample 10947 10948Strings are identified as arrays of @code{char} values without specified 10949signedness. Arrays of either @code{signed char} or @code{unsigned char} get 10950printed as arrays of 1 byte sized integers. @code{-fsigned-char} or 10951@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN} 10952defines literal string type @code{"char"} as @code{char} without a sign. 10953For program code 10954 10955@smallexample 10956char var0[] = "A"; 10957signed char var1[] = "A"; 10958@end smallexample 10959 10960You get during debugging 10961@smallexample 10962(gdb) print var0 10963$1 = "A" 10964(gdb) print var1 10965$2 = @{65 'A', 0 '\0'@} 10966@end smallexample 10967 10968@node Arrays 10969@section Artificial Arrays 10970 10971@cindex artificial array 10972@cindex arrays 10973@kindex @@@r{, referencing memory as an array} 10974It is often useful to print out several successive objects of the 10975same type in memory; a section of an array, or an array of 10976dynamically determined size for which only a pointer exists in the 10977program. 10978 10979You can do this by referring to a contiguous span of memory as an 10980@dfn{artificial array}, using the binary operator @samp{@@}. The left 10981operand of @samp{@@} should be the first element of the desired array 10982and be an individual object. The right operand should be the desired length 10983of the array. The result is an array value whose elements are all of 10984the type of the left argument. The first element is actually the left 10985argument; the second element comes from bytes of memory immediately 10986following those that hold the first element, and so on. Here is an 10987example. If a program says 10988 10989@smallexample 10990int *array = (int *) malloc (len * sizeof (int)); 10991@end smallexample 10992 10993@noindent 10994you can print the contents of @code{array} with 10995 10996@smallexample 10997p *array@@len 10998@end smallexample 10999 11000The left operand of @samp{@@} must reside in memory. Array values made 11001with @samp{@@} in this way behave just like other arrays in terms of 11002subscripting, and are coerced to pointers when used in expressions. 11003Artificial arrays most often appear in expressions via the value history 11004(@pxref{Value History, ,Value History}), after printing one out. 11005 11006Another way to create an artificial array is to use a cast. 11007This re-interprets a value as if it were an array. 11008The value need not be in memory: 11009@smallexample 11010(@value{GDBP}) p/x (short[2])0x12345678 11011$1 = @{0x1234, 0x5678@} 11012@end smallexample 11013 11014As a convenience, if you leave the array length out (as in 11015@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill 11016the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}: 11017@smallexample 11018(@value{GDBP}) p/x (short[])0x12345678 11019$2 = @{0x1234, 0x5678@} 11020@end smallexample 11021 11022Sometimes the artificial array mechanism is not quite enough; in 11023moderately complex data structures, the elements of interest may not 11024actually be adjacent---for example, if you are interested in the values 11025of pointers in an array. One useful work-around in this situation is 11026to use a convenience variable (@pxref{Convenience Vars, ,Convenience 11027Variables}) as a counter in an expression that prints the first 11028interesting value, and then repeat that expression via @key{RET}. For 11029instance, suppose you have an array @code{dtab} of pointers to 11030structures, and you are interested in the values of a field @code{fv} 11031in each structure. Here is an example of what you might type: 11032 11033@smallexample 11034set $i = 0 11035p dtab[$i++]->fv 11036@key{RET} 11037@key{RET} 11038@dots{} 11039@end smallexample 11040 11041@node Output Formats 11042@section Output Formats 11043 11044@cindex formatted output 11045@cindex output formats 11046By default, @value{GDBN} prints a value according to its data type. Sometimes 11047this is not what you want. For example, you might want to print a number 11048in hex, or a pointer in decimal. Or you might want to view data in memory 11049at a certain address as a character string or as an instruction. To do 11050these things, specify an @dfn{output format} when you print a value. 11051 11052The simplest use of output formats is to say how to print a value 11053already computed. This is done by starting the arguments of the 11054@code{print} command with a slash and a format letter. The format 11055letters supported are: 11056 11057@table @code 11058@item x 11059Print the binary representation of the value in hexadecimal. 11060 11061@item d 11062Print the binary representation of the value in decimal. 11063 11064@item u 11065Print the binary representation of the value as an decimal, as if it 11066were unsigned. 11067 11068@item o 11069Print the binary representation of the value in octal. 11070 11071@item t 11072Print the binary representation of the value in binary. The letter 11073@samp{t} stands for ``two''. @footnote{@samp{b} cannot be used 11074because these format letters are also used with the @code{x} command, 11075where @samp{b} stands for ``byte''; see @ref{Memory,,Examining 11076Memory}.} 11077 11078@item a 11079@cindex unknown address, locating 11080@cindex locate address 11081Print as an address, both absolute in hexadecimal and as an offset from 11082the nearest preceding symbol. You can use this format used to discover 11083where (in what function) an unknown address is located: 11084 11085@smallexample 11086(@value{GDBP}) p/a 0x54320 11087$3 = 0x54320 <_initialize_vx+396> 11088@end smallexample 11089 11090@noindent 11091The command @code{info symbol 0x54320} yields similar results. 11092@xref{Symbols, info symbol}. 11093 11094@item c 11095Cast the value to an integer (unlike other formats, this does not just 11096reinterpret the underlying bits) and print it as a character constant. 11097This prints both the numerical value and its character representation. 11098The character representation is replaced with the octal escape 11099@samp{\nnn} for characters outside the 7-bit @sc{ascii} range. 11100 11101Without this format, @value{GDBN} displays @code{char}, 11102@w{@code{unsigned char}}, and @w{@code{signed char}} data as character 11103constants. Single-byte members of vectors are displayed as integer 11104data. 11105 11106@item f 11107Regard the bits of the value as a floating point number and print 11108using typical floating point syntax. 11109 11110@item s 11111@cindex printing strings 11112@cindex printing byte arrays 11113Regard as a string, if possible. With this format, pointers to single-byte 11114data are displayed as null-terminated strings and arrays of single-byte data 11115are displayed as fixed-length strings. Other values are displayed in their 11116natural types. 11117 11118Without this format, @value{GDBN} displays pointers to and arrays of 11119@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as 11120strings. Single-byte members of a vector are displayed as an integer 11121array. 11122 11123@item z 11124Like @samp{x} formatting, the value is treated as an integer and 11125printed as hexadecimal, but leading zeros are printed to pad the value 11126to the size of the integer type. 11127 11128@item r 11129@cindex raw printing 11130Print using the @samp{raw} formatting. By default, @value{GDBN} will 11131use a Python-based pretty-printer, if one is available (@pxref{Pretty 11132Printing}). This typically results in a higher-level display of the 11133value's contents. The @samp{r} format bypasses any Python 11134pretty-printer which might exist. 11135@end table 11136 11137For example, to print the program counter in hex (@pxref{Registers}), type 11138 11139@smallexample 11140p/x $pc 11141@end smallexample 11142 11143@noindent 11144Note that no space is required before the slash; this is because command 11145names in @value{GDBN} cannot contain a slash. 11146 11147To reprint the last value in the value history with a different format, 11148you can use the @code{print} command with just a format and no 11149expression. For example, @samp{p/x} reprints the last value in hex. 11150 11151@node Memory 11152@section Examining Memory 11153 11154You can use the command @code{x} (for ``examine'') to examine memory in 11155any of several formats, independently of your program's data types. 11156 11157@cindex examining memory 11158@table @code 11159@kindex x @r{(examine memory)} 11160@item x/@var{nfu} @var{addr} 11161@itemx x @var{addr} 11162@itemx x 11163Use the @code{x} command to examine memory. 11164@end table 11165 11166@var{n}, @var{f}, and @var{u} are all optional parameters that specify how 11167much memory to display and how to format it; @var{addr} is an 11168expression giving the address where you want to start displaying memory. 11169If you use defaults for @var{nfu}, you need not type the slash @samp{/}. 11170Several commands set convenient defaults for @var{addr}. 11171 11172@table @r 11173@item @var{n}, the repeat count 11174The repeat count is a decimal integer; the default is 1. It specifies 11175how much memory (counting by units @var{u}) to display. If a negative 11176number is specified, memory is examined backward from @var{addr}. 11177@c This really is **decimal**; unaffected by 'set radix' as of GDB 11178@c 4.1.2. 11179 11180@item @var{f}, the display format 11181The display format is one of the formats used by @code{print} 11182(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c}, 11183@samp{f}, @samp{s}), @samp{i} (for machine instructions) and 11184@samp{m} (for displaying memory tags). 11185The default is @samp{x} (hexadecimal) initially. The default changes 11186each time you use either @code{x} or @code{print}. 11187 11188@item @var{u}, the unit size 11189The unit size is any of 11190 11191@table @code 11192@item b 11193Bytes. 11194@item h 11195Halfwords (two bytes). 11196@item w 11197Words (four bytes). This is the initial default. 11198@item g 11199Giant words (eight bytes). 11200@end table 11201 11202Each time you specify a unit size with @code{x}, that size becomes the 11203default unit the next time you use @code{x}. For the @samp{i} format, 11204the unit size is ignored and is normally not written. For the @samp{s} format, 11205the unit size defaults to @samp{b}, unless it is explicitly given. 11206Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display 1120732-bit strings. The next use of @kbd{x /s} will again display 8-bit strings. 11208Note that the results depend on the programming language of the 11209current compilation unit. If the language is C, the @samp{s} 11210modifier will use the UTF-16 encoding while @samp{w} will use 11211UTF-32. The encoding is set by the programming language and cannot 11212be altered. 11213 11214@item @var{addr}, starting display address 11215@var{addr} is the address where you want @value{GDBN} to begin displaying 11216memory. The expression need not have a pointer value (though it may); 11217it is always interpreted as an integer address of a byte of memory. 11218@xref{Expressions, ,Expressions}, for more information on expressions. The default for 11219@var{addr} is usually just after the last address examined---but several 11220other commands also set the default address: @code{info breakpoints} (to 11221the address of the last breakpoint listed), @code{info line} (to the 11222starting address of a line), and @code{print} (if you use it to display 11223a value from memory). 11224@end table 11225 11226For example, @samp{x/3uh 0x54320} is a request to display three halfwords 11227(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}), 11228starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four 11229words (@samp{w}) of memory above the stack pointer (here, @samp{$sp}; 11230@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}). 11231 11232You can also specify a negative repeat count to examine memory backward 11233from the given address. For example, @samp{x/-3uh 0x54320} prints three 11234halfwords (@code{h}) at @code{0x5431a}, @code{0x5431c}, and @code{0x5431e}. 11235 11236Since the letters indicating unit sizes are all distinct from the 11237letters specifying output formats, you do not have to remember whether 11238unit size or format comes first; either order works. The output 11239specifications @samp{4xw} and @samp{4wx} mean exactly the same thing. 11240(However, the count @var{n} must come first; @samp{wx4} does not work.) 11241 11242Even though the unit size @var{u} is ignored for the formats @samp{s} 11243and @samp{i}, you might still want to use a count @var{n}; for example, 11244@samp{3i} specifies that you want to see three machine instructions, 11245including any operands. For convenience, especially when used with 11246the @code{display} command, the @samp{i} format also prints branch delay 11247slot instructions, if any, beyond the count specified, which immediately 11248follow the last instruction that is within the count. The command 11249@code{disassemble} gives an alternative way of inspecting machine 11250instructions; see @ref{Machine Code,,Source and Machine Code}. 11251 11252If a negative repeat count is specified for the formats @samp{s} or @samp{i}, 11253the command displays null-terminated strings or instructions before the given 11254address as many as the absolute value of the given number. For the @samp{i} 11255format, we use line number information in the debug info to accurately locate 11256instruction boundaries while disassembling backward. If line info is not 11257available, the command stops examining memory with an error message. 11258 11259All the defaults for the arguments to @code{x} are designed to make it 11260easy to continue scanning memory with minimal specifications each time 11261you use @code{x}. For example, after you have inspected three machine 11262instructions with @samp{x/3i @var{addr}}, you can inspect the next seven 11263with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command, 11264the repeat count @var{n} is used again; the other arguments default as 11265for successive uses of @code{x}. 11266 11267When examining machine instructions, the instruction at current program 11268counter is shown with a @code{=>} marker. For example: 11269 11270@smallexample 11271(@value{GDBP}) x/5i $pc-6 11272 0x804837f <main+11>: mov %esp,%ebp 11273 0x8048381 <main+13>: push %ecx 11274 0x8048382 <main+14>: sub $0x4,%esp 11275=> 0x8048385 <main+17>: movl $0x8048460,(%esp) 11276 0x804838c <main+24>: call 0x80482d4 <puts@@plt> 11277@end smallexample 11278 11279If the architecture supports memory tagging, the tags can be displayed by 11280using @samp{m}. @xref{Memory Tagging}. 11281 11282The information will be displayed once per granule size 11283(the amount of bytes a particular memory tag covers). For example, AArch64 11284has a granule size of 16 bytes, so it will display a tag every 16 bytes. 11285 11286Due to the way @value{GDBN} prints information with the @code{x} command (not 11287aligned to a particular boundary), the tag information will refer to the 11288initial address displayed on a particular line. If a memory tag boundary 11289is crossed in the middle of a line displayed by the @code{x} command, it 11290will be displayed on the next line. 11291 11292The @samp{m} format doesn't affect any other specified formats that were 11293passed to the @code{x} command. 11294 11295@cindex @code{$_}, @code{$__}, and value history 11296The addresses and contents printed by the @code{x} command are not saved 11297in the value history because there is often too much of them and they 11298would get in the way. Instead, @value{GDBN} makes these values available for 11299subsequent use in expressions as values of the convenience variables 11300@code{$_} and @code{$__}. After an @code{x} command, the last address 11301examined is available for use in expressions in the convenience variable 11302@code{$_}. The contents of that address, as examined, are available in 11303the convenience variable @code{$__}. 11304 11305If the @code{x} command has a repeat count, the address and contents saved 11306are from the last memory unit printed; this is not the same as the last 11307address printed if several units were printed on the last line of output. 11308 11309@anchor{addressable memory unit} 11310@cindex addressable memory unit 11311Most targets have an addressable memory unit size of 8 bits. This means 11312that to each memory address are associated 8 bits of data. Some 11313targets, however, have other addressable memory unit sizes. 11314Within @value{GDBN} and this document, the term 11315@dfn{addressable memory unit} (or @dfn{memory unit} for short) is used 11316when explicitly referring to a chunk of data of that size. The word 11317@dfn{byte} is used to refer to a chunk of data of 8 bits, regardless of 11318the addressable memory unit size of the target. For most systems, 11319addressable memory unit is a synonym of byte. 11320 11321@cindex remote memory comparison 11322@cindex target memory comparison 11323@cindex verify remote memory image 11324@cindex verify target memory image 11325When you are debugging a program running on a remote target machine 11326(@pxref{Remote Debugging}), you may wish to verify the program's image 11327in the remote machine's memory against the executable file you 11328downloaded to the target. Or, on any target, you may want to check 11329whether the program has corrupted its own read-only sections. The 11330@code{compare-sections} command is provided for such situations. 11331 11332@table @code 11333@kindex compare-sections 11334@item compare-sections @r{[}@var{section-name}@r{|}@code{-r}@r{]} 11335Compare the data of a loadable section @var{section-name} in the 11336executable file of the program being debugged with the same section in 11337the target machine's memory, and report any mismatches. With no 11338arguments, compares all loadable sections. With an argument of 11339@code{-r}, compares all loadable read-only sections. 11340 11341Note: for remote targets, this command can be accelerated if the 11342target supports computing the CRC checksum of a block of memory 11343(@pxref{qCRC packet}). 11344@end table 11345 11346@node Memory Tagging 11347@section Memory Tagging 11348 11349Memory tagging is a memory protection technology that uses a pair of tags to 11350validate memory accesses through pointers. The tags are integer values 11351usually comprised of a few bits, depending on the architecture. 11352 11353There are two types of tags that are used in this setup: logical and 11354allocation. A logical tag is stored in the pointers themselves, usually at the 11355higher bits of the pointers. An allocation tag is the tag associated 11356with particular ranges of memory in the physical address space, against which 11357the logical tags from pointers are compared. 11358 11359The pointer tag (logical tag) must match the memory tag (allocation tag) 11360for the memory access to be valid. If the logical tag does not match the 11361allocation tag, that will raise a memory violation. 11362 11363Allocation tags cover multiple contiguous bytes of physical memory. This 11364range of bytes is called a memory tag granule and is architecture-specific. 11365For example, AArch64 has a tag granule of 16 bytes, meaning each allocation 11366tag spans 16 bytes of memory. 11367 11368If the underlying architecture supports memory tagging, like AArch64 MTE 11369or SPARC ADI do, @value{GDBN} can make use of it to validate pointers 11370against memory allocation tags. 11371 11372The @code{print} (@pxref{Data}) and @code{x} (@pxref{Memory}) commands will 11373display tag information when appropriate, and a command prefix of 11374@code{memory-tag} gives access to the various memory tagging commands. 11375 11376The @code{memory-tag} commands are the following: 11377 11378@table @code 11379@kindex memory-tag print-logical-tag 11380@item memory-tag print-logical-tag @var{pointer_expression} 11381Print the logical tag stored in @var{pointer_expression}. 11382@kindex memory-tag with-logical-tag 11383@item memory-tag with-logical-tag @var{pointer_expression} @var{tag_bytes} 11384Print the pointer given by @var{pointer_expression}, augmented with a logical 11385tag of @var{tag_bytes}. 11386@kindex memory-tag print-allocation-tag 11387@item memory-tag print-allocation-tag @var{address_expression} 11388Print the allocation tag associated with the memory address given by 11389@var{address_expression}. 11390@kindex memory-tag setatag 11391@item memory-tag setatag @var{starting_address} @var{length} @var{tag_bytes} 11392Set the allocation tag(s) for memory range @r{[}@var{starting_address}, 11393@var{starting_address} + @var{length}@r{)} to @var{tag_bytes}. 11394@kindex memory-tag check 11395@item memory-tag check @var{pointer_expression} 11396Check if the logical tag in the pointer given by @var{pointer_expression} 11397matches the allocation tag for the memory referenced by the pointer. 11398 11399This essentially emulates the hardware validation that is done when tagged 11400memory is accessed through a pointer, but does not cause a memory fault as 11401it would during hardware validation. 11402 11403It can be used to inspect potential memory tagging violations in the running 11404process, before any faults get triggered. 11405@end table 11406 11407@node Auto Display 11408@section Automatic Display 11409@cindex automatic display 11410@cindex display of expressions 11411 11412If you find that you want to print the value of an expression frequently 11413(to see how it changes), you might want to add it to the @dfn{automatic 11414display list} so that @value{GDBN} prints its value each time your program stops. 11415Each expression added to the list is given a number to identify it; 11416to remove an expression from the list, you specify that number. 11417The automatic display looks like this: 11418 11419@smallexample 114202: foo = 38 114213: bar[5] = (struct hack *) 0x3804 11422@end smallexample 11423 11424@noindent 11425This display shows item numbers, expressions and their current values. As with 11426displays you request manually using @code{x} or @code{print}, you can 11427specify the output format you prefer; in fact, @code{display} decides 11428whether to use @code{print} or @code{x} depending your format 11429specification---it uses @code{x} if you specify either the @samp{i} 11430or @samp{s} format, or a unit size; otherwise it uses @code{print}. 11431 11432@table @code 11433@kindex display 11434@item display @var{expr} 11435Add the expression @var{expr} to the list of expressions to display 11436each time your program stops. @xref{Expressions, ,Expressions}. 11437 11438@code{display} does not repeat if you press @key{RET} again after using it. 11439 11440@item display/@var{fmt} @var{expr} 11441For @var{fmt} specifying only a display format and not a size or 11442count, add the expression @var{expr} to the auto-display list but 11443arrange to display it each time in the specified format @var{fmt}. 11444@xref{Output Formats,,Output Formats}. 11445 11446@item display/@var{fmt} @var{addr} 11447For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a 11448number of units, add the expression @var{addr} as a memory address to 11449be examined each time your program stops. Examining means in effect 11450doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}. 11451@end table 11452 11453For example, @samp{display/i $pc} can be helpful, to see the machine 11454instruction about to be executed each time execution stops (@samp{$pc} 11455is a common name for the program counter; @pxref{Registers, ,Registers}). 11456 11457@table @code 11458@kindex delete display 11459@kindex undisplay 11460@item undisplay @var{dnums}@dots{} 11461@itemx delete display @var{dnums}@dots{} 11462Remove items from the list of expressions to display. Specify the 11463numbers of the displays that you want affected with the command 11464argument @var{dnums}. It can be a single display number, one of the 11465numbers shown in the first field of the @samp{info display} display; 11466or it could be a range of display numbers, as in @code{2-4}. 11467 11468@code{undisplay} does not repeat if you press @key{RET} after using it. 11469(Otherwise you would just get the error @samp{No display number @dots{}}.) 11470 11471@kindex disable display 11472@item disable display @var{dnums}@dots{} 11473Disable the display of item numbers @var{dnums}. A disabled display 11474item is not printed automatically, but is not forgotten. It may be 11475enabled again later. Specify the numbers of the displays that you 11476want affected with the command argument @var{dnums}. It can be a 11477single display number, one of the numbers shown in the first field of 11478the @samp{info display} display; or it could be a range of display 11479numbers, as in @code{2-4}. 11480 11481@kindex enable display 11482@item enable display @var{dnums}@dots{} 11483Enable display of item numbers @var{dnums}. It becomes effective once 11484again in auto display of its expression, until you specify otherwise. 11485Specify the numbers of the displays that you want affected with the 11486command argument @var{dnums}. It can be a single display number, one 11487of the numbers shown in the first field of the @samp{info display} 11488display; or it could be a range of display numbers, as in @code{2-4}. 11489 11490@item display 11491Display the current values of the expressions on the list, just as is 11492done when your program stops. 11493 11494@kindex info display 11495@item info display 11496Print the list of expressions previously set up to display 11497automatically, each one with its item number, but without showing the 11498values. This includes disabled expressions, which are marked as such. 11499It also includes expressions which would not be displayed right now 11500because they refer to automatic variables not currently available. 11501@end table 11502 11503@cindex display disabled out of scope 11504If a display expression refers to local variables, then it does not make 11505sense outside the lexical context for which it was set up. Such an 11506expression is disabled when execution enters a context where one of its 11507variables is not defined. For example, if you give the command 11508@code{display last_char} while inside a function with an argument 11509@code{last_char}, @value{GDBN} displays this argument while your program 11510continues to stop inside that function. When it stops elsewhere---where 11511there is no variable @code{last_char}---the display is disabled 11512automatically. The next time your program stops where @code{last_char} 11513is meaningful, you can enable the display expression once again. 11514 11515@node Print Settings 11516@section Print Settings 11517 11518@cindex format options 11519@cindex print settings 11520@value{GDBN} provides the following ways to control how arrays, structures, 11521and symbols are printed. 11522 11523@noindent 11524These settings are useful for debugging programs in any language: 11525 11526@table @code 11527@kindex set print 11528@anchor{set print address} 11529@item set print address 11530@itemx set print address on 11531@cindex print/don't print memory addresses 11532@value{GDBN} prints memory addresses showing the location of stack 11533traces, structure values, pointer values, breakpoints, and so forth, 11534even when it also displays the contents of those addresses. The default 11535is @code{on}. For example, this is what a stack frame display looks like with 11536@code{set print address on}: 11537 11538@smallexample 11539@group 11540(@value{GDBP}) f 11541#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") 11542 at input.c:530 11543530 if (lquote != def_lquote) 11544@end group 11545@end smallexample 11546 11547@item set print address off 11548Do not print addresses when displaying their contents. For example, 11549this is the same stack frame displayed with @code{set print address off}: 11550 11551@smallexample 11552@group 11553(@value{GDBP}) set print addr off 11554(@value{GDBP}) f 11555#0 set_quotes (lq="<<", rq=">>") at input.c:530 11556530 if (lquote != def_lquote) 11557@end group 11558@end smallexample 11559 11560You can use @samp{set print address off} to eliminate all machine 11561dependent displays from the @value{GDBN} interface. For example, with 11562@code{print address off}, you should get the same text for backtraces on 11563all machines---whether or not they involve pointer arguments. 11564 11565@kindex show print 11566@item show print address 11567Show whether or not addresses are to be printed. 11568@end table 11569 11570When @value{GDBN} prints a symbolic address, it normally prints the 11571closest earlier symbol plus an offset. If that symbol does not uniquely 11572identify the address (for example, it is a name whose scope is a single 11573source file), you may need to clarify. One way to do this is with 11574@code{info line}, for example @samp{info line *0x4537}. Alternately, 11575you can set @value{GDBN} to print the source file and line number when 11576it prints a symbolic address: 11577 11578@table @code 11579@item set print symbol-filename on 11580@cindex source file and line of a symbol 11581@cindex symbol, source file and line 11582Tell @value{GDBN} to print the source file name and line number of a 11583symbol in the symbolic form of an address. 11584 11585@item set print symbol-filename off 11586Do not print source file name and line number of a symbol. This is the 11587default. 11588 11589@item show print symbol-filename 11590Show whether or not @value{GDBN} will print the source file name and 11591line number of a symbol in the symbolic form of an address. 11592@end table 11593 11594Another situation where it is helpful to show symbol filenames and line 11595numbers is when disassembling code; @value{GDBN} shows you the line 11596number and source file that corresponds to each instruction. 11597 11598Also, you may wish to see the symbolic form only if the address being 11599printed is reasonably close to the closest earlier symbol: 11600 11601@table @code 11602@item set print max-symbolic-offset @var{max-offset} 11603@itemx set print max-symbolic-offset unlimited 11604@cindex maximum value for offset of closest symbol 11605Tell @value{GDBN} to only display the symbolic form of an address if the 11606offset between the closest earlier symbol and the address is less than 11607@var{max-offset}. The default is @code{unlimited}, which tells @value{GDBN} 11608to always print the symbolic form of an address if any symbol precedes 11609it. Zero is equivalent to @code{unlimited}. 11610 11611@item show print max-symbolic-offset 11612Ask how large the maximum offset is that @value{GDBN} prints in a 11613symbolic address. 11614@end table 11615 11616@cindex wild pointer, interpreting 11617@cindex pointer, finding referent 11618If you have a pointer and you are not sure where it points, try 11619@samp{set print symbol-filename on}. Then you can determine the name 11620and source file location of the variable where it points, using 11621@samp{p/a @var{pointer}}. This interprets the address in symbolic form. 11622For example, here @value{GDBN} shows that a variable @code{ptt} points 11623at another variable @code{t}, defined in @file{hi2.c}: 11624 11625@smallexample 11626(@value{GDBP}) set print symbol-filename on 11627(@value{GDBP}) p/a ptt 11628$4 = 0xe008 <t in hi2.c> 11629@end smallexample 11630 11631@quotation 11632@emph{Warning:} For pointers that point to a local variable, @samp{p/a} 11633does not show the symbol name and filename of the referent, even with 11634the appropriate @code{set print} options turned on. 11635@end quotation 11636 11637You can also enable @samp{/a}-like formatting all the time using 11638@samp{set print symbol on}: 11639 11640@anchor{set print symbol} 11641@table @code 11642@item set print symbol on 11643Tell @value{GDBN} to print the symbol corresponding to an address, if 11644one exists. 11645 11646@item set print symbol off 11647Tell @value{GDBN} not to print the symbol corresponding to an 11648address. In this mode, @value{GDBN} will still print the symbol 11649corresponding to pointers to functions. This is the default. 11650 11651@item show print symbol 11652Show whether @value{GDBN} will display the symbol corresponding to an 11653address. 11654@end table 11655 11656Other settings control how different kinds of objects are printed: 11657 11658@table @code 11659@anchor{set print array} 11660@item set print array 11661@itemx set print array on 11662@cindex pretty print arrays 11663Pretty print arrays. This format is more convenient to read, 11664but uses more space. The default is off. 11665 11666@item set print array off 11667Return to compressed format for arrays. 11668 11669@item show print array 11670Show whether compressed or pretty format is selected for displaying 11671arrays. 11672 11673@cindex print array indexes 11674@anchor{set print array-indexes} 11675@item set print array-indexes 11676@itemx set print array-indexes on 11677Print the index of each element when displaying arrays. May be more 11678convenient to locate a given element in the array or quickly find the 11679index of a given element in that printed array. The default is off. 11680 11681@item set print array-indexes off 11682Stop printing element indexes when displaying arrays. 11683 11684@item show print array-indexes 11685Show whether the index of each element is printed when displaying 11686arrays. 11687 11688@anchor{set print nibbles} 11689@item set print nibbles 11690@itemx set print nibbles on 11691@cindex print binary values in groups of four bits 11692Print binary values in groups of four bits, known as @dfn{nibbles}, 11693when using the print command of @value{GDBN} with the option @samp{/t}. 11694For example, this is what it looks like with @code{set print nibbles on}: 11695 11696@smallexample 11697@group 11698(@value{GDBP}) print val_flags 11699$1 = 1230 11700(@value{GDBP}) print/t val_flags 11701$2 = 0100 1100 1110 11702@end group 11703@end smallexample 11704 11705@item set print nibbles off 11706Don't printing binary values in groups. This is the default. 11707 11708@item show print nibbles 11709Show whether to print binary values in groups of four bits. 11710 11711@anchor{set print elements} 11712@item set print elements @var{number-of-elements} 11713@itemx set print elements unlimited 11714@cindex number of array elements to print 11715@cindex limit on number of printed array elements 11716Set a limit on how many elements of an array @value{GDBN} will print. 11717If @value{GDBN} is printing a large array, it stops printing after it has 11718printed the number of elements set by the @code{set print elements} command. 11719This limit also applies to the display of strings. 11720When @value{GDBN} starts, this limit is set to 200. 11721Setting @var{number-of-elements} to @code{unlimited} or zero means 11722that the number of elements to print is unlimited. 11723 11724@item show print elements 11725Display the number of elements of a large array that @value{GDBN} will print. 11726 11727@anchor{set print frame-arguments} 11728@item set print frame-arguments @var{value} 11729@kindex set print frame-arguments 11730@cindex printing frame argument values 11731@cindex print all frame argument values 11732@cindex print frame argument values for scalars only 11733@cindex do not print frame arguments 11734This command allows to control how the values of arguments are printed 11735when the debugger prints a frame (@pxref{Frames}). The possible 11736values are: 11737 11738@table @code 11739@item all 11740The values of all arguments are printed. 11741 11742@item scalars 11743Print the value of an argument only if it is a scalar. The value of more 11744complex arguments such as arrays, structures, unions, etc, is replaced 11745by @code{@dots{}}. This is the default. Here is an example where 11746only scalar arguments are shown: 11747 11748@smallexample 11749#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green) 11750 at frame-args.c:23 11751@end smallexample 11752 11753@item none 11754None of the argument values are printed. Instead, the value of each argument 11755is replaced by @code{@dots{}}. In this case, the example above now becomes: 11756 11757@smallexample 11758#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{}) 11759 at frame-args.c:23 11760@end smallexample 11761 11762@item presence 11763Only the presence of arguments is indicated by @code{@dots{}}. 11764The @code{@dots{}} are not printed for function without any arguments. 11765None of the argument names and values are printed. 11766In this case, the example above now becomes: 11767 11768@smallexample 11769#1 0x08048361 in call_me (@dots{}) at frame-args.c:23 11770@end smallexample 11771 11772@end table 11773 11774By default, only scalar arguments are printed. This command can be used 11775to configure the debugger to print the value of all arguments, regardless 11776of their type. However, it is often advantageous to not print the value 11777of more complex parameters. For instance, it reduces the amount of 11778information printed in each frame, making the backtrace more readable. 11779Also, it improves performance when displaying Ada frames, because 11780the computation of large arguments can sometimes be CPU-intensive, 11781especially in large applications. Setting @code{print frame-arguments} 11782to @code{scalars} (the default), @code{none} or @code{presence} avoids 11783this computation, thus speeding up the display of each Ada frame. 11784 11785@item show print frame-arguments 11786Show how the value of arguments should be displayed when printing a frame. 11787 11788@anchor{set print raw-frame-arguments} 11789@item set print raw-frame-arguments on 11790Print frame arguments in raw, non pretty-printed, form. 11791 11792@item set print raw-frame-arguments off 11793Print frame arguments in pretty-printed form, if there is a pretty-printer 11794for the value (@pxref{Pretty Printing}), 11795otherwise print the value in raw form. 11796This is the default. 11797 11798@item show print raw-frame-arguments 11799Show whether to print frame arguments in raw form. 11800 11801@anchor{set print entry-values} 11802@item set print entry-values @var{value} 11803@kindex set print entry-values 11804Set printing of frame argument values at function entry. In some cases 11805@value{GDBN} can determine the value of function argument which was passed by 11806the function caller, even if the value was modified inside the called function 11807and therefore is different. With optimized code, the current value could be 11808unavailable, but the entry value may still be known. 11809 11810The default value is @code{default} (see below for its description). Older 11811@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting 11812this feature will behave in the @code{default} setting the same way as with the 11813@code{no} setting. 11814 11815This functionality is currently supported only by DWARF 2 debugging format and 11816the compiler has to produce @samp{DW_TAG_call_site} tags. With 11817@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 11818this information. 11819 11820The @var{value} parameter can be one of the following: 11821 11822@table @code 11823@item no 11824Print only actual parameter values, never print values from function entry 11825point. 11826@smallexample 11827#0 equal (val=5) 11828#0 different (val=6) 11829#0 lost (val=<optimized out>) 11830#0 born (val=10) 11831#0 invalid (val=<optimized out>) 11832@end smallexample 11833 11834@item only 11835Print only parameter values from function entry point. The actual parameter 11836values are never printed. 11837@smallexample 11838#0 equal (val@@entry=5) 11839#0 different (val@@entry=5) 11840#0 lost (val@@entry=5) 11841#0 born (val@@entry=<optimized out>) 11842#0 invalid (val@@entry=<optimized out>) 11843@end smallexample 11844 11845@item preferred 11846Print only parameter values from function entry point. If value from function 11847entry point is not known while the actual value is known, print the actual 11848value for such parameter. 11849@smallexample 11850#0 equal (val@@entry=5) 11851#0 different (val@@entry=5) 11852#0 lost (val@@entry=5) 11853#0 born (val=10) 11854#0 invalid (val@@entry=<optimized out>) 11855@end smallexample 11856 11857@item if-needed 11858Print actual parameter values. If actual parameter value is not known while 11859value from function entry point is known, print the entry point value for such 11860parameter. 11861@smallexample 11862#0 equal (val=5) 11863#0 different (val=6) 11864#0 lost (val@@entry=5) 11865#0 born (val=10) 11866#0 invalid (val=<optimized out>) 11867@end smallexample 11868 11869@item both 11870Always print both the actual parameter value and its value from function entry 11871point, even if values of one or both are not available due to compiler 11872optimizations. 11873@smallexample 11874#0 equal (val=5, val@@entry=5) 11875#0 different (val=6, val@@entry=5) 11876#0 lost (val=<optimized out>, val@@entry=5) 11877#0 born (val=10, val@@entry=<optimized out>) 11878#0 invalid (val=<optimized out>, val@@entry=<optimized out>) 11879@end smallexample 11880 11881@item compact 11882Print the actual parameter value if it is known and also its value from 11883function entry point if it is known. If neither is known, print for the actual 11884value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both 11885values are known and identical, print the shortened 11886@code{param=param@@entry=VALUE} notation. 11887@smallexample 11888#0 equal (val=val@@entry=5) 11889#0 different (val=6, val@@entry=5) 11890#0 lost (val@@entry=5) 11891#0 born (val=10) 11892#0 invalid (val=<optimized out>) 11893@end smallexample 11894 11895@item default 11896Always print the actual parameter value. Print also its value from function 11897entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and 11898if both values are known and identical, print the shortened 11899@code{param=param@@entry=VALUE} notation. 11900@smallexample 11901#0 equal (val=val@@entry=5) 11902#0 different (val=6, val@@entry=5) 11903#0 lost (val=<optimized out>, val@@entry=5) 11904#0 born (val=10) 11905#0 invalid (val=<optimized out>) 11906@end smallexample 11907@end table 11908 11909For analysis messages on possible failures of frame argument values at function 11910entry resolution see @ref{set debug entry-values}. 11911 11912@item show print entry-values 11913Show the method being used for printing of frame argument values at function 11914entry. 11915 11916@anchor{set print frame-info} 11917@item set print frame-info @var{value} 11918@kindex set print frame-info 11919@cindex printing frame information 11920@cindex frame information, printing 11921This command allows to control the information printed when 11922the debugger prints a frame. See @ref{Frames}, @ref{Backtrace}, 11923for a general explanation about frames and frame information. 11924Note that some other settings (such as @code{set print frame-arguments} 11925and @code{set print address}) are also influencing if and how some frame 11926information is displayed. In particular, the frame program counter is never 11927printed if @code{set print address} is off. 11928 11929The possible values for @code{set print frame-info} are: 11930@table @code 11931@item short-location 11932Print the frame level, the program counter (if not at the 11933beginning of the location source line), the function, the function 11934arguments. 11935@item location 11936Same as @code{short-location} but also print the source file and source line 11937number. 11938@item location-and-address 11939Same as @code{location} but print the program counter even if located at the 11940beginning of the location source line. 11941@item source-line 11942Print the program counter (if not at the beginning of the location 11943source line), the line number and the source line. 11944@item source-and-location 11945Print what @code{location} and @code{source-line} are printing. 11946@item auto 11947The information printed for a frame is decided automatically 11948by the @value{GDBN} command that prints a frame. 11949For example, @code{frame} prints the information printed by 11950@code{source-and-location} while @code{stepi} will switch between 11951@code{source-line} and @code{source-and-location} depending on the program 11952counter. 11953The default value is @code{auto}. 11954@end table 11955 11956@anchor{set print repeats} 11957@item set print repeats @var{number-of-repeats} 11958@itemx set print repeats unlimited 11959@cindex repeated array elements 11960Set the threshold for suppressing display of repeated array 11961elements. When the number of consecutive identical elements of an 11962array exceeds the threshold, @value{GDBN} prints the string 11963@code{"<repeats @var{n} times>"}, where @var{n} is the number of 11964identical repetitions, instead of displaying the identical elements 11965themselves. Setting the threshold to @code{unlimited} or zero will 11966cause all elements to be individually printed. The default threshold 11967is 10. 11968 11969@item show print repeats 11970Display the current threshold for printing repeated identical 11971elements. 11972 11973@anchor{set print max-depth} 11974@item set print max-depth @var{depth} 11975@item set print max-depth unlimited 11976@cindex printing nested structures 11977Set the threshold after which nested structures are replaced with 11978ellipsis, this can make visualising deeply nested structures easier. 11979 11980For example, given this C code 11981 11982@smallexample 11983typedef struct s1 @{ int a; @} s1; 11984typedef struct s2 @{ s1 b; @} s2; 11985typedef struct s3 @{ s2 c; @} s3; 11986typedef struct s4 @{ s3 d; @} s4; 11987 11988s4 var = @{ @{ @{ @{ 3 @} @} @} @}; 11989@end smallexample 11990 11991The following table shows how different values of @var{depth} will 11992effect how @code{var} is printed by @value{GDBN}: 11993 11994@multitable @columnfractions .3 .7 11995@headitem @var{depth} setting @tab Result of @samp{p var} 11996@item unlimited 11997@tab @code{$1 = @{d = @{c = @{b = @{a = 3@}@}@}@}} 11998@item @code{0} 11999@tab @code{$1 = @{...@}} 12000@item @code{1} 12001@tab @code{$1 = @{d = @{...@}@}} 12002@item @code{2} 12003@tab @code{$1 = @{d = @{c = @{...@}@}@}} 12004@item @code{3} 12005@tab @code{$1 = @{d = @{c = @{b = @{...@}@}@}@}} 12006@item @code{4} 12007@tab @code{$1 = @{d = @{c = @{b = @{a = 3@}@}@}@}} 12008@end multitable 12009 12010To see the contents of structures that have been hidden the user can 12011either increase the print max-depth, or they can print the elements of 12012the structure that are visible, for example 12013 12014@smallexample 12015(gdb) set print max-depth 2 12016(gdb) p var 12017$1 = @{d = @{c = @{...@}@}@} 12018(gdb) p var.d 12019$2 = @{c = @{b = @{...@}@}@} 12020(gdb) p var.d.c 12021$3 = @{b = @{a = 3@}@} 12022@end smallexample 12023 12024The pattern used to replace nested structures varies based on 12025language, for most languages @code{@{...@}} is used, but Fortran uses 12026@code{(...)}. 12027 12028@item show print max-depth 12029Display the current threshold after which nested structures are 12030replaces with ellipsis. 12031 12032@anchor{set print memory-tag-violations} 12033@cindex printing memory tag violation information 12034@item set print memory-tag-violations 12035@itemx set print memory-tag-violations on 12036Cause @value{GDBN} to display additional information about memory tag violations 12037when printing pointers and addresses. 12038 12039@item set print memory-tag-violations off 12040Stop printing memory tag violation information. 12041 12042@item show print memory-tag-violations 12043Show whether memory tag violation information is displayed when printing 12044pointers and addresses. 12045 12046@anchor{set print null-stop} 12047@item set print null-stop 12048@cindex @sc{null} elements in arrays 12049Cause @value{GDBN} to stop printing the characters of an array when the first 12050@sc{null} is encountered. This is useful when large arrays actually 12051contain only short strings. 12052The default is off. 12053 12054@item show print null-stop 12055Show whether @value{GDBN} stops printing an array on the first 12056@sc{null} character. 12057 12058@anchor{set print pretty} 12059@item set print pretty on 12060@cindex print structures in indented form 12061@cindex indentation in structure display 12062Cause @value{GDBN} to print structures in an indented format with one member 12063per line, like this: 12064 12065@smallexample 12066@group 12067$1 = @{ 12068 next = 0x0, 12069 flags = @{ 12070 sweet = 1, 12071 sour = 1 12072 @}, 12073 meat = 0x54 "Pork" 12074@} 12075@end group 12076@end smallexample 12077 12078@item set print pretty off 12079Cause @value{GDBN} to print structures in a compact format, like this: 12080 12081@smallexample 12082@group 12083$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \ 12084meat = 0x54 "Pork"@} 12085@end group 12086@end smallexample 12087 12088@noindent 12089This is the default format. 12090 12091@item show print pretty 12092Show which format @value{GDBN} is using to print structures. 12093 12094@anchor{set print raw-values} 12095@item set print raw-values on 12096Print values in raw form, without applying the pretty 12097printers for the value. 12098 12099@item set print raw-values off 12100Print values in pretty-printed form, if there is a pretty-printer 12101for the value (@pxref{Pretty Printing}), 12102otherwise print the value in raw form. 12103 12104The default setting is ``off''. 12105 12106@item show print raw-values 12107Show whether to print values in raw form. 12108 12109@item set print sevenbit-strings on 12110@cindex eight-bit characters in strings 12111@cindex octal escapes in strings 12112Print using only seven-bit characters; if this option is set, 12113@value{GDBN} displays any eight-bit characters (in strings or 12114character values) using the notation @code{\}@var{nnn}. This setting is 12115best if you are working in English (@sc{ascii}) and you use the 12116high-order bit of characters as a marker or ``meta'' bit. 12117 12118@item set print sevenbit-strings off 12119Print full eight-bit characters. This allows the use of more 12120international character sets, and is the default. 12121 12122@item show print sevenbit-strings 12123Show whether or not @value{GDBN} is printing only seven-bit characters. 12124 12125@anchor{set print union} 12126@item set print union on 12127@cindex unions in structures, printing 12128Tell @value{GDBN} to print unions which are contained in structures 12129and other unions. This is the default setting. 12130 12131@item set print union off 12132Tell @value{GDBN} not to print unions which are contained in 12133structures and other unions. @value{GDBN} will print @code{"@{...@}"} 12134instead. 12135 12136@item show print union 12137Ask @value{GDBN} whether or not it will print unions which are contained in 12138structures and other unions. 12139 12140For example, given the declarations 12141 12142@smallexample 12143typedef enum @{Tree, Bug@} Species; 12144typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms; 12145typedef enum @{Caterpillar, Cocoon, Butterfly@} 12146 Bug_forms; 12147 12148struct thing @{ 12149 Species it; 12150 union @{ 12151 Tree_forms tree; 12152 Bug_forms bug; 12153 @} form; 12154@}; 12155 12156struct thing foo = @{Tree, @{Acorn@}@}; 12157@end smallexample 12158 12159@noindent 12160with @code{set print union on} in effect @samp{p foo} would print 12161 12162@smallexample 12163$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@} 12164@end smallexample 12165 12166@noindent 12167and with @code{set print union off} in effect it would print 12168 12169@smallexample 12170$1 = @{it = Tree, form = @{...@}@} 12171@end smallexample 12172 12173@noindent 12174@code{set print union} affects programs written in C-like languages 12175and in Pascal. 12176@end table 12177 12178@need 1000 12179@noindent 12180These settings are of interest when debugging C@t{++} programs: 12181 12182@table @code 12183@cindex demangling C@t{++} names 12184@item set print demangle 12185@itemx set print demangle on 12186Print C@t{++} names in their source form rather than in the encoded 12187(``mangled'') form passed to the assembler and linker for type-safe 12188linkage. The default is on. 12189 12190@item show print demangle 12191Show whether C@t{++} names are printed in mangled or demangled form. 12192 12193@item set print asm-demangle 12194@itemx set print asm-demangle on 12195Print C@t{++} names in their source form rather than their mangled form, even 12196in assembler code printouts such as instruction disassemblies. 12197The default is off. 12198 12199@item show print asm-demangle 12200Show whether C@t{++} names in assembly listings are printed in mangled 12201or demangled form. 12202 12203@cindex C@t{++} symbol decoding style 12204@cindex symbol decoding style, C@t{++} 12205@kindex set demangle-style 12206@item set demangle-style @var{style} 12207Choose among several encoding schemes used by different compilers to represent 12208C@t{++} names. If you omit @var{style}, you will see a list of possible 12209formats. The default value is @var{auto}, which lets @value{GDBN} choose a 12210decoding style by inspecting your program. 12211 12212@item show demangle-style 12213Display the encoding style currently in use for decoding C@t{++} symbols. 12214 12215@anchor{set print object} 12216@item set print object 12217@itemx set print object on 12218@cindex derived type of an object, printing 12219@cindex display derived types 12220When displaying a pointer to an object, identify the @emph{actual} 12221(derived) type of the object rather than the @emph{declared} type, using 12222the virtual function table. Note that the virtual function table is 12223required---this feature can only work for objects that have run-time 12224type identification; a single virtual method in the object's declared 12225type is sufficient. Note that this setting is also taken into account when 12226working with variable objects via MI (@pxref{GDB/MI}). 12227 12228@item set print object off 12229Display only the declared type of objects, without reference to the 12230virtual function table. This is the default setting. 12231 12232@item show print object 12233Show whether actual, or declared, object types are displayed. 12234 12235@anchor{set print static-members} 12236@item set print static-members 12237@itemx set print static-members on 12238@cindex static members of C@t{++} objects 12239Print static members when displaying a C@t{++} object. The default is on. 12240 12241@item set print static-members off 12242Do not print static members when displaying a C@t{++} object. 12243 12244@item show print static-members 12245Show whether C@t{++} static members are printed or not. 12246 12247@item set print pascal_static-members 12248@itemx set print pascal_static-members on 12249@cindex static members of Pascal objects 12250@cindex Pascal objects, static members display 12251Print static members when displaying a Pascal object. The default is on. 12252 12253@item set print pascal_static-members off 12254Do not print static members when displaying a Pascal object. 12255 12256@item show print pascal_static-members 12257Show whether Pascal static members are printed or not. 12258 12259@c These don't work with HP ANSI C++ yet. 12260@anchor{set print vtbl} 12261@item set print vtbl 12262@itemx set print vtbl on 12263@cindex pretty print C@t{++} virtual function tables 12264@cindex virtual functions (C@t{++}) display 12265@cindex VTBL display 12266Pretty print C@t{++} virtual function tables. The default is off. 12267(The @code{vtbl} commands do not work on programs compiled with the HP 12268ANSI C@t{++} compiler (@code{aCC}).) 12269 12270@item set print vtbl off 12271Do not pretty print C@t{++} virtual function tables. 12272 12273@item show print vtbl 12274Show whether C@t{++} virtual function tables are pretty printed, or not. 12275@end table 12276 12277@node Pretty Printing 12278@section Pretty Printing 12279 12280@value{GDBN} provides a mechanism to allow pretty-printing of values using 12281Python code. It greatly simplifies the display of complex objects. This 12282mechanism works for both MI and the CLI. 12283 12284@menu 12285* Pretty-Printer Introduction:: Introduction to pretty-printers 12286* Pretty-Printer Example:: An example pretty-printer 12287* Pretty-Printer Commands:: Pretty-printer commands 12288@end menu 12289 12290@node Pretty-Printer Introduction 12291@subsection Pretty-Printer Introduction 12292 12293When @value{GDBN} prints a value, it first sees if there is a pretty-printer 12294registered for the value. If there is then @value{GDBN} invokes the 12295pretty-printer to print the value. Otherwise the value is printed normally. 12296 12297Pretty-printers are normally named. This makes them easy to manage. 12298The @samp{info pretty-printer} command will list all the installed 12299pretty-printers with their names. 12300If a pretty-printer can handle multiple data types, then its 12301@dfn{subprinters} are the printers for the individual data types. 12302Each such subprinter has its own name. 12303The format of the name is @var{printer-name};@var{subprinter-name}. 12304 12305Pretty-printers are installed by @dfn{registering} them with @value{GDBN}. 12306Typically they are automatically loaded and registered when the corresponding 12307debug information is loaded, thus making them available without having to 12308do anything special. 12309 12310There are three places where a pretty-printer can be registered. 12311 12312@itemize @bullet 12313@item 12314Pretty-printers registered globally are available when debugging 12315all inferiors. 12316 12317@item 12318Pretty-printers registered with a program space are available only 12319when debugging that program. 12320@xref{Progspaces In Python}, for more details on program spaces in Python. 12321 12322@item 12323Pretty-printers registered with an objfile are loaded and unloaded 12324with the corresponding objfile (e.g., shared library). 12325@xref{Objfiles In Python}, for more details on objfiles in Python. 12326@end itemize 12327 12328@xref{Selecting Pretty-Printers}, for further information on how 12329pretty-printers are selected, 12330 12331@xref{Writing a Pretty-Printer}, for implementing pretty printers 12332for new types. 12333 12334@node Pretty-Printer Example 12335@subsection Pretty-Printer Example 12336 12337Here is how a C@t{++} @code{std::string} looks without a pretty-printer: 12338 12339@smallexample 12340(@value{GDBP}) print s 12341$1 = @{ 12342 static npos = 4294967295, 12343 _M_dataplus = @{ 12344 <std::allocator<char>> = @{ 12345 <__gnu_cxx::new_allocator<char>> = @{ 12346 <No data fields>@}, <No data fields> 12347 @}, 12348 members of std::basic_string<char, std::char_traits<char>, 12349 std::allocator<char> >::_Alloc_hider: 12350 _M_p = 0x804a014 "abcd" 12351 @} 12352@} 12353@end smallexample 12354 12355With a pretty-printer for @code{std::string} only the contents are printed: 12356 12357@smallexample 12358(@value{GDBP}) print s 12359$2 = "abcd" 12360@end smallexample 12361 12362@node Pretty-Printer Commands 12363@subsection Pretty-Printer Commands 12364@cindex pretty-printer commands 12365 12366@table @code 12367@kindex info pretty-printer 12368@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]] 12369Print the list of installed pretty-printers. 12370This includes disabled pretty-printers, which are marked as such. 12371 12372@var{object-regexp} is a regular expression matching the objects 12373whose pretty-printers to list. 12374Objects can be @code{global}, the program space's file 12375(@pxref{Progspaces In Python}), 12376and the object files within that program space (@pxref{Objfiles In Python}). 12377@xref{Selecting Pretty-Printers}, for details on how @value{GDBN} 12378looks up a printer from these three objects. 12379 12380@var{name-regexp} is a regular expression matching the name of the printers 12381to list. 12382 12383@kindex disable pretty-printer 12384@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 12385Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 12386A disabled pretty-printer is not forgotten, it may be enabled again later. 12387 12388@kindex enable pretty-printer 12389@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]] 12390Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}. 12391@end table 12392 12393Example: 12394 12395Suppose we have three pretty-printers installed: one from library1.so 12396named @code{foo} that prints objects of type @code{foo}, and 12397another from library2.so named @code{bar} that prints two types of objects, 12398@code{bar1} and @code{bar2}. 12399 12400@smallexample 12401@group 12402(@value{GDBP}) info pretty-printer 12403library1.so: 12404 foo 12405library2.so: 12406 bar 12407 bar1 12408 bar2 12409@end group 12410@group 12411(@value{GDBP}) info pretty-printer library2 12412library2.so: 12413 bar 12414 bar1 12415 bar2 12416@end group 12417@group 12418(@value{GDBP}) disable pretty-printer library1 124191 printer disabled 124202 of 3 printers enabled 12421(@value{GDBP}) info pretty-printer 12422library1.so: 12423 foo [disabled] 12424library2.so: 12425 bar 12426 bar1 12427 bar2 12428@end group 12429@group 12430(@value{GDBP}) disable pretty-printer library2 bar;bar1 124311 printer disabled 124321 of 3 printers enabled 12433(@value{GDBP}) info pretty-printer library2 12434library2.so: 12435 bar 12436 bar1 [disabled] 12437 bar2 12438@end group 12439@group 12440(@value{GDBP}) disable pretty-printer library2 bar 124411 printer disabled 124420 of 3 printers enabled 12443(@value{GDBP}) info pretty-printer 12444library1.so: 12445 foo [disabled] 12446library2.so: 12447 bar [disabled] 12448 bar1 [disabled] 12449 bar2 12450@end group 12451@end smallexample 12452 12453Note that for @code{bar} the entire printer can be disabled, 12454as can each individual subprinter. 12455 12456Printing values and frame arguments is done by default using 12457the enabled pretty printers. 12458 12459The print option @code{-raw-values} and @value{GDBN} setting 12460@code{set print raw-values} (@pxref{set print raw-values}) can be 12461used to print values without applying the enabled pretty printers. 12462 12463Similarly, the backtrace option @code{-raw-frame-arguments} and 12464@value{GDBN} setting @code{set print raw-frame-arguments} 12465(@pxref{set print raw-frame-arguments}) can be used to ignore the 12466enabled pretty printers when printing frame argument values. 12467 12468@node Value History 12469@section Value History 12470 12471@cindex value history 12472@cindex history of values printed by @value{GDBN} 12473Values printed by the @code{print} command are saved in the @value{GDBN} 12474@dfn{value history}. This allows you to refer to them in other expressions. 12475Values are kept until the symbol table is re-read or discarded 12476(for example with the @code{file} or @code{symbol-file} commands). 12477When the symbol table changes, the value history is discarded, 12478since the values may contain pointers back to the types defined in the 12479symbol table. 12480 12481@cindex @code{$} 12482@cindex @code{$$} 12483@cindex history number 12484The values printed are given @dfn{history numbers} by which you can 12485refer to them. These are successive integers starting with one. 12486@code{print} shows you the history number assigned to a value by 12487printing @samp{$@var{num} = } before the value; here @var{num} is the 12488history number. 12489 12490To refer to any previous value, use @samp{$} followed by the value's 12491history number. The way @code{print} labels its output is designed to 12492remind you of this. Just @code{$} refers to the most recent value in 12493the history, and @code{$$} refers to the value before that. 12494@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2} 12495is the value just prior to @code{$$}, @code{$$1} is equivalent to 12496@code{$$}, and @code{$$0} is equivalent to @code{$}. 12497 12498For example, suppose you have just printed a pointer to a structure and 12499want to see the contents of the structure. It suffices to type 12500 12501@smallexample 12502p *$ 12503@end smallexample 12504 12505If you have a chain of structures where the component @code{next} points 12506to the next one, you can print the contents of the next one with this: 12507 12508@smallexample 12509p *$.next 12510@end smallexample 12511 12512@noindent 12513You can print successive links in the chain by repeating this 12514command---which you can do by just typing @key{RET}. 12515 12516Note that the history records values, not expressions. If the value of 12517@code{x} is 4 and you type these commands: 12518 12519@smallexample 12520print x 12521set x=5 12522@end smallexample 12523 12524@noindent 12525then the value recorded in the value history by the @code{print} command 12526remains 4 even though the value of @code{x} has changed. 12527 12528@table @code 12529@kindex show values 12530@item show values 12531Print the last ten values in the value history, with their item numbers. 12532This is like @samp{p@ $$9} repeated ten times, except that @code{show 12533values} does not change the history. 12534 12535@item show values @var{n} 12536Print ten history values centered on history item number @var{n}. 12537 12538@item show values + 12539Print ten history values just after the values last printed. If no more 12540values are available, @code{show values +} produces no display. 12541@end table 12542 12543Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the 12544same effect as @samp{show values +}. 12545 12546@node Convenience Vars 12547@section Convenience Variables 12548 12549@cindex convenience variables 12550@cindex user-defined variables 12551@value{GDBN} provides @dfn{convenience variables} that you can use within 12552@value{GDBN} to hold on to a value and refer to it later. These variables 12553exist entirely within @value{GDBN}; they are not part of your program, and 12554setting a convenience variable has no direct effect on further execution 12555of your program. That is why you can use them freely. 12556 12557Convenience variables are prefixed with @samp{$}. Any name preceded by 12558@samp{$} can be used for a convenience variable, unless it is one of 12559the predefined machine-specific register names (@pxref{Registers, ,Registers}). 12560(Value history references, in contrast, are @emph{numbers} preceded 12561by @samp{$}. @xref{Value History, ,Value History}.) 12562 12563You can save a value in a convenience variable with an assignment 12564expression, just as you would set a variable in your program. 12565For example: 12566 12567@smallexample 12568set $foo = *object_ptr 12569@end smallexample 12570 12571@noindent 12572would save in @code{$foo} the value contained in the object pointed to by 12573@code{object_ptr}. 12574 12575Using a convenience variable for the first time creates it, but its 12576value is @code{void} until you assign a new value. You can alter the 12577value with another assignment at any time. 12578 12579Convenience variables have no fixed types. You can assign a convenience 12580variable any type of value, including structures and arrays, even if 12581that variable already has a value of a different type. The convenience 12582variable, when used as an expression, has the type of its current value. 12583 12584@table @code 12585@kindex show convenience 12586@cindex show all user variables and functions 12587@item show convenience 12588Print a list of convenience variables used so far, and their values, 12589as well as a list of the convenience functions. 12590Abbreviated @code{show conv}. 12591 12592@kindex init-if-undefined 12593@cindex convenience variables, initializing 12594@item init-if-undefined $@var{variable} = @var{expression} 12595Set a convenience variable if it has not already been set. This is useful 12596for user-defined commands that keep some state. It is similar, in concept, 12597to using local static variables with initializers in C (except that 12598convenience variables are global). It can also be used to allow users to 12599override default values used in a command script. 12600 12601If the variable is already defined then the expression is not evaluated so 12602any side-effects do not occur. 12603@end table 12604 12605One of the ways to use a convenience variable is as a counter to be 12606incremented or a pointer to be advanced. For example, to print 12607a field from successive elements of an array of structures: 12608 12609@smallexample 12610set $i = 0 12611print bar[$i++]->contents 12612@end smallexample 12613 12614@noindent 12615Repeat that command by typing @key{RET}. 12616 12617Some convenience variables are created automatically by @value{GDBN} and given 12618values likely to be useful. 12619 12620@table @code 12621@vindex $_@r{, convenience variable} 12622@item $_ 12623The variable @code{$_} is automatically set by the @code{x} command to 12624the last address examined (@pxref{Memory, ,Examining Memory}). Other 12625commands which provide a default address for @code{x} to examine also 12626set @code{$_} to that address; these commands include @code{info line} 12627and @code{info breakpoint}. The type of @code{$_} is @code{void *} 12628except when set by the @code{x} command, in which case it is a pointer 12629to the type of @code{$__}. 12630 12631@vindex $__@r{, convenience variable} 12632@item $__ 12633The variable @code{$__} is automatically set by the @code{x} command 12634to the value found in the last address examined. Its type is chosen 12635to match the format in which the data was printed. 12636 12637@item $_exitcode 12638@vindex $_exitcode@r{, convenience variable} 12639When the program being debugged terminates normally, @value{GDBN} 12640automatically sets this variable to the exit code of the program, and 12641resets @code{$_exitsignal} to @code{void}. 12642 12643@item $_exitsignal 12644@vindex $_exitsignal@r{, convenience variable} 12645When the program being debugged dies due to an uncaught signal, 12646@value{GDBN} automatically sets this variable to that signal's number, 12647and resets @code{$_exitcode} to @code{void}. 12648 12649To distinguish between whether the program being debugged has exited 12650(i.e., @code{$_exitcode} is not @code{void}) or signalled (i.e., 12651@code{$_exitsignal} is not @code{void}), the convenience function 12652@code{$_isvoid} can be used (@pxref{Convenience Funs,, Convenience 12653Functions}). For example, considering the following source code: 12654 12655@smallexample 12656#include <signal.h> 12657 12658int 12659main (int argc, char *argv[]) 12660@{ 12661 raise (SIGALRM); 12662 return 0; 12663@} 12664@end smallexample 12665 12666A valid way of telling whether the program being debugged has exited 12667or signalled would be: 12668 12669@smallexample 12670(@value{GDBP}) define has_exited_or_signalled 12671Type commands for definition of ``has_exited_or_signalled''. 12672End with a line saying just ``end''. 12673>if $_isvoid ($_exitsignal) 12674 >echo The program has exited\n 12675 >else 12676 >echo The program has signalled\n 12677 >end 12678>end 12679(@value{GDBP}) run 12680Starting program: 12681 12682Program terminated with signal SIGALRM, Alarm clock. 12683The program no longer exists. 12684(@value{GDBP}) has_exited_or_signalled 12685The program has signalled 12686@end smallexample 12687 12688As can be seen, @value{GDBN} correctly informs that the program being 12689debugged has signalled, since it calls @code{raise} and raises a 12690@code{SIGALRM} signal. If the program being debugged had not called 12691@code{raise}, then @value{GDBN} would report a normal exit: 12692 12693@smallexample 12694(@value{GDBP}) has_exited_or_signalled 12695The program has exited 12696@end smallexample 12697 12698@item $_exception 12699The variable @code{$_exception} is set to the exception object being 12700thrown at an exception-related catchpoint. @xref{Set Catchpoints}. 12701 12702@item $_ada_exception 12703The variable @code{$_ada_exception} is set to the address of the 12704exception being caught or thrown at an Ada exception-related 12705catchpoint. @xref{Set Catchpoints}. 12706 12707@item $_probe_argc 12708@itemx $_probe_arg0@dots{}$_probe_arg11 12709Arguments to a static probe. @xref{Static Probe Points}. 12710 12711@item $_sdata 12712@vindex $_sdata@r{, inspect, convenience variable} 12713The variable @code{$_sdata} contains extra collected static tracepoint 12714data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that 12715@code{$_sdata} could be empty, if not inspecting a trace buffer, or 12716if extra static tracepoint data has not been collected. 12717 12718@item $_siginfo 12719@vindex $_siginfo@r{, convenience variable} 12720The variable @code{$_siginfo} contains extra signal information 12721(@pxref{extra signal information}). Note that @code{$_siginfo} 12722could be empty, if the application has not yet received any signals. 12723For example, it will be empty before you execute the @code{run} command. 12724 12725@item $_tlb 12726@vindex $_tlb@r{, convenience variable} 12727The variable @code{$_tlb} is automatically set when debugging 12728applications running on MS-Windows in native mode or connected to 12729gdbserver that supports the @code{qGetTIBAddr} request. 12730@xref{General Query Packets}. 12731This variable contains the address of the thread information block. 12732 12733@item $_inferior 12734The number of the current inferior. @xref{Inferiors Connections and 12735Programs, ,Debugging Multiple Inferiors Connections and Programs}. 12736 12737@item $_thread 12738The thread number of the current thread. @xref{thread numbers}. 12739 12740@item $_gthread 12741The global number of the current thread. @xref{global thread numbers}. 12742 12743@item $_inferior_thread_count 12744The number of live threads in the current inferior. @xref{Threads}. 12745 12746@item $_gdb_major 12747@itemx $_gdb_minor 12748@vindex $_gdb_major@r{, convenience variable} 12749@vindex $_gdb_minor@r{, convenience variable} 12750The major and minor version numbers of the running @value{GDBN}. 12751Development snapshots and pretest versions have their minor version 12752incremented by one; thus, @value{GDBN} pretest 9.11.90 will produce 12753the value 12 for @code{$_gdb_minor}. These variables allow you to 12754write scripts that work with different versions of @value{GDBN} 12755without errors caused by features unavailable in some of those 12756versions. 12757 12758@item $_shell_exitcode 12759@itemx $_shell_exitsignal 12760@vindex $_shell_exitcode@r{, convenience variable} 12761@vindex $_shell_exitsignal@r{, convenience variable} 12762@cindex shell command, exit code 12763@cindex shell command, exit signal 12764@cindex exit status of shell commands 12765@value{GDBN} commands such as @code{shell} and @code{|} are launching 12766shell commands. When a launched command terminates, @value{GDBN} 12767automatically maintains the variables @code{$_shell_exitcode} 12768and @code{$_shell_exitsignal} according to the exit status of the last 12769launched command. These variables are set and used similarly to 12770the variables @code{$_exitcode} and @code{$_exitsignal}. 12771 12772@end table 12773 12774@node Convenience Funs 12775@section Convenience Functions 12776 12777@cindex convenience functions 12778@value{GDBN} also supplies some @dfn{convenience functions}. These 12779have a syntax similar to convenience variables. A convenience 12780function can be used in an expression just like an ordinary function; 12781however, a convenience function is implemented internally to 12782@value{GDBN}. 12783 12784These functions do not require @value{GDBN} to be configured with 12785@code{Python} support, which means that they are always available. 12786 12787@table @code 12788 12789@item $_isvoid (@var{expr}) 12790@findex $_isvoid@r{, convenience function} 12791Return one if the expression @var{expr} is @code{void}. Otherwise it 12792returns zero. 12793 12794A @code{void} expression is an expression where the type of the result 12795is @code{void}. For example, you can examine a convenience variable 12796(see @ref{Convenience Vars,, Convenience Variables}) to check whether 12797it is @code{void}: 12798 12799@smallexample 12800(@value{GDBP}) print $_exitcode 12801$1 = void 12802(@value{GDBP}) print $_isvoid ($_exitcode) 12803$2 = 1 12804(@value{GDBP}) run 12805Starting program: ./a.out 12806[Inferior 1 (process 29572) exited normally] 12807(@value{GDBP}) print $_exitcode 12808$3 = 0 12809(@value{GDBP}) print $_isvoid ($_exitcode) 12810$4 = 0 12811@end smallexample 12812 12813In the example above, we used @code{$_isvoid} to check whether 12814@code{$_exitcode} is @code{void} before and after the execution of the 12815program being debugged. Before the execution there is no exit code to 12816be examined, therefore @code{$_exitcode} is @code{void}. After the 12817execution the program being debugged returned zero, therefore 12818@code{$_exitcode} is zero, which means that it is not @code{void} 12819anymore. 12820 12821The @code{void} expression can also be a call of a function from the 12822program being debugged. For example, given the following function: 12823 12824@smallexample 12825void 12826foo (void) 12827@{ 12828@} 12829@end smallexample 12830 12831The result of calling it inside @value{GDBN} is @code{void}: 12832 12833@smallexample 12834(@value{GDBP}) print foo () 12835$1 = void 12836(@value{GDBP}) print $_isvoid (foo ()) 12837$2 = 1 12838(@value{GDBP}) set $v = foo () 12839(@value{GDBP}) print $v 12840$3 = void 12841(@value{GDBP}) print $_isvoid ($v) 12842$4 = 1 12843@end smallexample 12844 12845@item $_gdb_setting_str (@var{setting}) 12846@findex $_gdb_setting_str@r{, convenience function} 12847Return the value of the @value{GDBN} @var{setting} as a string. 12848@var{setting} is any setting that can be used in a @code{set} or 12849@code{show} command (@pxref{Controlling GDB}). 12850 12851@smallexample 12852(@value{GDBP}) show print frame-arguments 12853Printing of non-scalar frame arguments is "scalars". 12854(@value{GDBP}) p $_gdb_setting_str("print frame-arguments") 12855$1 = "scalars" 12856(@value{GDBP}) p $_gdb_setting_str("height") 12857$2 = "30" 12858(@value{GDBP}) 12859@end smallexample 12860 12861@item $_gdb_setting (@var{setting}) 12862@findex $_gdb_setting@r{, convenience function} 12863Return the value of the @value{GDBN} @var{setting}. 12864The type of the returned value depends on the setting. 12865 12866The value type for boolean and auto boolean settings is @code{int}. 12867The boolean values @code{off} and @code{on} are converted to 12868the integer values @code{0} and @code{1}. The value @code{auto} is 12869converted to the value @code{-1}. 12870 12871The value type for integer settings is either @code{unsigned int} 12872or @code{int}, depending on the setting. 12873 12874Some integer settings accept an @code{unlimited} value. 12875Depending on the setting, the @code{set} command also accepts 12876the value @code{0} or the value @code{@minus{}1} as a synonym for 12877@code{unlimited}. 12878For example, @code{set height unlimited} is equivalent to 12879@code{set height 0}. 12880 12881Some other settings that accept the @code{unlimited} value 12882use the value @code{0} to literally mean zero. 12883For example, @code{set history size 0} indicates to not 12884record any @value{GDBN} commands in the command history. 12885For such settings, @code{@minus{}1} is the synonym 12886for @code{unlimited}. 12887 12888See the documentation of the corresponding @code{set} command for 12889the numerical value equivalent to @code{unlimited}. 12890 12891The @code{$_gdb_setting} function converts the unlimited value 12892to a @code{0} or a @code{@minus{}1} value according to what the 12893@code{set} command uses. 12894 12895@smallexample 12896@group 12897(@value{GDBP}) p $_gdb_setting_str("height") 12898$1 = "30" 12899(@value{GDBP}) p $_gdb_setting("height") 12900$2 = 30 12901(@value{GDBP}) set height unlimited 12902(@value{GDBP}) p $_gdb_setting_str("height") 12903$3 = "unlimited" 12904(@value{GDBP}) p $_gdb_setting("height") 12905$4 = 0 12906@end group 12907@group 12908(@value{GDBP}) p $_gdb_setting_str("history size") 12909$5 = "unlimited" 12910(@value{GDBP}) p $_gdb_setting("history size") 12911$6 = -1 12912(@value{GDBP}) p $_gdb_setting_str("disassemble-next-line") 12913$7 = "auto" 12914(@value{GDBP}) p $_gdb_setting("disassemble-next-line") 12915$8 = -1 12916(@value{GDBP}) 12917@end group 12918@end smallexample 12919 12920Other setting types (enum, filename, optional filename, string, string noescape) 12921are returned as string values. 12922 12923 12924@item $_gdb_maint_setting_str (@var{setting}) 12925@findex $_gdb_maint_setting_str@r{, convenience function} 12926Like the @code{$_gdb_setting_str} function, but works with 12927@code{maintenance set} variables. 12928 12929@item $_gdb_maint_setting (@var{setting}) 12930@findex $_gdb_maint_setting@r{, convenience function} 12931Like the @code{$_gdb_setting} function, but works with 12932@code{maintenance set} variables. 12933 12934@end table 12935 12936The following functions require @value{GDBN} to be configured with 12937@code{Python} support. 12938 12939@table @code 12940 12941@item $_memeq(@var{buf1}, @var{buf2}, @var{length}) 12942@findex $_memeq@r{, convenience function} 12943Returns one if the @var{length} bytes at the addresses given by 12944@var{buf1} and @var{buf2} are equal. 12945Otherwise it returns zero. 12946 12947@item $_regex(@var{str}, @var{regex}) 12948@findex $_regex@r{, convenience function} 12949Returns one if the string @var{str} matches the regular expression 12950@var{regex}. Otherwise it returns zero. 12951The syntax of the regular expression is that specified by @code{Python}'s 12952regular expression support. 12953 12954@item $_streq(@var{str1}, @var{str2}) 12955@findex $_streq@r{, convenience function} 12956Returns one if the strings @var{str1} and @var{str2} are equal. 12957Otherwise it returns zero. 12958 12959@item $_strlen(@var{str}) 12960@findex $_strlen@r{, convenience function} 12961Returns the length of string @var{str}. 12962 12963@item $_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]}) 12964@findex $_caller_is@r{, convenience function} 12965Returns one if the calling function's name is equal to @var{name}. 12966Otherwise it returns zero. 12967 12968If the optional argument @var{number_of_frames} is provided, 12969it is the number of frames up in the stack to look. 12970The default is 1. 12971 12972Example: 12973 12974@smallexample 12975(gdb) backtrace 12976#0 bottom_func () 12977 at testsuite/gdb.python/py-caller-is.c:21 12978#1 0x00000000004005a0 in middle_func () 12979 at testsuite/gdb.python/py-caller-is.c:27 12980#2 0x00000000004005ab in top_func () 12981 at testsuite/gdb.python/py-caller-is.c:33 12982#3 0x00000000004005b6 in main () 12983 at testsuite/gdb.python/py-caller-is.c:39 12984(gdb) print $_caller_is ("middle_func") 12985$1 = 1 12986(gdb) print $_caller_is ("top_func", 2) 12987$1 = 1 12988@end smallexample 12989 12990@item $_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]}) 12991@findex $_caller_matches@r{, convenience function} 12992Returns one if the calling function's name matches the regular expression 12993@var{regexp}. Otherwise it returns zero. 12994 12995If the optional argument @var{number_of_frames} is provided, 12996it is the number of frames up in the stack to look. 12997The default is 1. 12998 12999@item $_any_caller_is(@var{name}@r{[}, @var{number_of_frames}@r{]}) 13000@findex $_any_caller_is@r{, convenience function} 13001Returns one if any calling function's name is equal to @var{name}. 13002Otherwise it returns zero. 13003 13004If the optional argument @var{number_of_frames} is provided, 13005it is the number of frames up in the stack to look. 13006The default is 1. 13007 13008This function differs from @code{$_caller_is} in that this function 13009checks all stack frames from the immediate caller to the frame specified 13010by @var{number_of_frames}, whereas @code{$_caller_is} only checks the 13011frame specified by @var{number_of_frames}. 13012 13013@item $_any_caller_matches(@var{regexp}@r{[}, @var{number_of_frames}@r{]}) 13014@findex $_any_caller_matches@r{, convenience function} 13015Returns one if any calling function's name matches the regular expression 13016@var{regexp}. Otherwise it returns zero. 13017 13018If the optional argument @var{number_of_frames} is provided, 13019it is the number of frames up in the stack to look. 13020The default is 1. 13021 13022This function differs from @code{$_caller_matches} in that this function 13023checks all stack frames from the immediate caller to the frame specified 13024by @var{number_of_frames}, whereas @code{$_caller_matches} only checks the 13025frame specified by @var{number_of_frames}. 13026 13027@item $_as_string(@var{value}) 13028@findex $_as_string@r{, convenience function} 13029Return the string representation of @var{value}. 13030 13031This function is useful to obtain the textual label (enumerator) of an 13032enumeration value. For example, assuming the variable @var{node} is of 13033an enumerated type: 13034 13035@smallexample 13036(gdb) printf "Visiting node of type %s\n", $_as_string(node) 13037Visiting node of type NODE_INTEGER 13038@end smallexample 13039 13040@item $_cimag(@var{value}) 13041@itemx $_creal(@var{value}) 13042@findex $_cimag@r{, convenience function} 13043@findex $_creal@r{, convenience function} 13044Return the imaginary (@code{$_cimag}) or real (@code{$_creal}) part of 13045the complex number @var{value}. 13046 13047The type of the imaginary or real part depends on the type of the 13048complex number, e.g., using @code{$_cimag} on a @code{float complex} 13049will return an imaginary part of type @code{float}. 13050 13051@end table 13052 13053@value{GDBN} provides the ability to list and get help on 13054convenience functions. 13055 13056@table @code 13057@item help function 13058@kindex help function 13059@cindex show all convenience functions 13060Print a list of all convenience functions. 13061@end table 13062 13063@node Registers 13064@section Registers 13065 13066@cindex registers 13067You can refer to machine register contents, in expressions, as variables 13068with names starting with @samp{$}. The names of registers are different 13069for each machine; use @code{info registers} to see the names used on 13070your machine. 13071 13072@table @code 13073@kindex info registers 13074@item info registers 13075Print the names and values of all registers except floating-point 13076and vector registers (in the selected stack frame). 13077 13078@kindex info all-registers 13079@cindex floating point registers 13080@item info all-registers 13081Print the names and values of all registers, including floating-point 13082and vector registers (in the selected stack frame). 13083 13084@anchor{info_registers_reggroup} 13085@item info registers @var{reggroup} @dots{} 13086Print the name and value of the registers in each of the specified 13087@var{reggroup}s. The @var{reggroup} can be any of those returned by 13088@code{maint print reggroups} (@pxref{Maintenance Commands}). 13089 13090@item info registers @var{regname} @dots{} 13091Print the @dfn{relativized} value of each specified register @var{regname}. 13092As discussed in detail below, register values are normally relative to 13093the selected stack frame. The @var{regname} may be any register name valid on 13094the machine you are using, with or without the initial @samp{$}. 13095@end table 13096 13097@anchor{standard registers} 13098@cindex stack pointer register 13099@cindex program counter register 13100@cindex process status register 13101@cindex frame pointer register 13102@cindex standard registers 13103@value{GDBN} has four ``standard'' register names that are available (in 13104expressions) on most machines---whenever they do not conflict with an 13105architecture's canonical mnemonics for registers. The register names 13106@code{$pc} and @code{$sp} are used for the program counter register and 13107the stack pointer. @code{$fp} is used for a register that contains a 13108pointer to the current stack frame, and @code{$ps} is used for a 13109register that contains the processor status. For example, 13110you could print the program counter in hex with 13111 13112@smallexample 13113p/x $pc 13114@end smallexample 13115 13116@noindent 13117or print the instruction to be executed next with 13118 13119@smallexample 13120x/i $pc 13121@end smallexample 13122 13123@noindent 13124or add four to the stack pointer@footnote{This is a way of removing 13125one word from the stack, on machines where stacks grow downward in 13126memory (most machines, nowadays). This assumes that the innermost 13127stack frame is selected; setting @code{$sp} is not allowed when other 13128stack frames are selected. To pop entire frames off the stack, 13129regardless of machine architecture, use @code{return}; 13130see @ref{Returning, ,Returning from a Function}.} with 13131 13132@smallexample 13133set $sp += 4 13134@end smallexample 13135 13136Whenever possible, these four standard register names are available on 13137your machine even though the machine has different canonical mnemonics, 13138so long as there is no conflict. The @code{info registers} command 13139shows the canonical names. For example, on the SPARC, @code{info 13140registers} displays the processor status register as @code{$psr} but you 13141can also refer to it as @code{$ps}; and on x86-based machines @code{$ps} 13142is an alias for the @sc{eflags} register. 13143 13144@value{GDBN} always considers the contents of an ordinary register as an 13145integer when the register is examined in this way. Some machines have 13146special registers which can hold nothing but floating point; these 13147registers are considered to have floating point values. There is no way 13148to refer to the contents of an ordinary register as floating point value 13149(although you can @emph{print} it as a floating point value with 13150@samp{print/f $@var{regname}}). 13151 13152Some registers have distinct ``raw'' and ``virtual'' data formats. This 13153means that the data format in which the register contents are saved by 13154the operating system is not the same one that your program normally 13155sees. For example, the registers of the 68881 floating point 13156coprocessor are always saved in ``extended'' (raw) format, but all C 13157programs expect to work with ``double'' (virtual) format. In such 13158cases, @value{GDBN} normally works with the virtual format only (the format 13159that makes sense for your program), but the @code{info registers} command 13160prints the data in both formats. 13161 13162@cindex SSE registers (x86) 13163@cindex MMX registers (x86) 13164Some machines have special registers whose contents can be interpreted 13165in several different ways. For example, modern x86-based machines 13166have SSE and MMX registers that can hold several values packed 13167together in several different formats. @value{GDBN} refers to such 13168registers in @code{struct} notation: 13169 13170@smallexample 13171(@value{GDBP}) print $xmm1 13172$1 = @{ 13173 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@}, 13174 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@}, 13175 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000", 13176 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@}, 13177 v4_int32 = @{0, 20657912, 11, 13@}, 13178 v2_int64 = @{88725056443645952, 55834574859@}, 13179 uint128 = 0x0000000d0000000b013b36f800000000 13180@} 13181@end smallexample 13182 13183@noindent 13184To set values of such registers, you need to tell @value{GDBN} which 13185view of the register you wish to change, as if you were assigning 13186value to a @code{struct} member: 13187 13188@smallexample 13189 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF 13190@end smallexample 13191 13192Normally, register values are relative to the selected stack frame 13193(@pxref{Selection, ,Selecting a Frame}). This means that you get the 13194value that the register would contain if all stack frames farther in 13195were exited and their saved registers restored. In order to see the 13196true contents of hardware registers, you must select the innermost 13197frame (with @samp{frame 0}). 13198 13199@cindex caller-saved registers 13200@cindex call-clobbered registers 13201@cindex volatile registers 13202@cindex <not saved> values 13203Usually ABIs reserve some registers as not needed to be saved by the 13204callee (a.k.a.: ``caller-saved'', ``call-clobbered'' or ``volatile'' 13205registers). It may therefore not be possible for @value{GDBN} to know 13206the value a register had before the call (in other words, in the outer 13207frame), if the register value has since been changed by the callee. 13208@value{GDBN} tries to deduce where the inner frame saved 13209(``callee-saved'') registers, from the debug info, unwind info, or the 13210machine code generated by your compiler. If some register is not 13211saved, and @value{GDBN} knows the register is ``caller-saved'' (via 13212its own knowledge of the ABI, or because the debug/unwind info 13213explicitly says the register's value is undefined), @value{GDBN} 13214displays @w{@samp{<not saved>}} as the register's value. With targets 13215that @value{GDBN} has no knowledge of the register saving convention, 13216if a register was not saved by the callee, then its value and location 13217in the outer frame are assumed to be the same of the inner frame. 13218This is usually harmless, because if the register is call-clobbered, 13219the caller either does not care what is in the register after the 13220call, or has code to restore the value that it does care about. Note, 13221however, that if you change such a register in the outer frame, you 13222may also be affecting the inner frame. Also, the more ``outer'' the 13223frame is you're looking at, the more likely a call-clobbered 13224register's value is to be wrong, in the sense that it doesn't actually 13225represent the value the register had just before the call. 13226 13227@node Floating Point Hardware 13228@section Floating Point Hardware 13229@cindex floating point 13230 13231Depending on the configuration, @value{GDBN} may be able to give 13232you more information about the status of the floating point hardware. 13233 13234@table @code 13235@kindex info float 13236@item info float 13237Display hardware-dependent information about the floating 13238point unit. The exact contents and layout vary depending on the 13239floating point chip. Currently, @samp{info float} is supported on 13240the ARM and x86 machines. 13241@end table 13242 13243@node Vector Unit 13244@section Vector Unit 13245@cindex vector unit 13246 13247Depending on the configuration, @value{GDBN} may be able to give you 13248more information about the status of the vector unit. 13249 13250@table @code 13251@kindex info vector 13252@item info vector 13253Display information about the vector unit. The exact contents and 13254layout vary depending on the hardware. 13255@end table 13256 13257@node OS Information 13258@section Operating System Auxiliary Information 13259@cindex OS information 13260 13261@value{GDBN} provides interfaces to useful OS facilities that can help 13262you debug your program. 13263 13264@cindex auxiliary vector 13265@cindex vector, auxiliary 13266Some operating systems supply an @dfn{auxiliary vector} to programs at 13267startup. This is akin to the arguments and environment that you 13268specify for a program, but contains a system-dependent variety of 13269binary values that tell system libraries important details about the 13270hardware, operating system, and process. Each value's purpose is 13271identified by an integer tag; the meanings are well-known but system-specific. 13272Depending on the configuration and operating system facilities, 13273@value{GDBN} may be able to show you this information. For remote 13274targets, this functionality may further depend on the remote stub's 13275support of the @samp{qXfer:auxv:read} packet, see 13276@ref{qXfer auxiliary vector read}. 13277 13278@table @code 13279@kindex info auxv 13280@item info auxv 13281Display the auxiliary vector of the inferior, which can be either a 13282live process or a core dump file. @value{GDBN} prints each tag value 13283numerically, and also shows names and text descriptions for recognized 13284tags. Some values in the vector are numbers, some bit masks, and some 13285pointers to strings or other data. @value{GDBN} displays each value in the 13286most appropriate form for a recognized tag, and in hexadecimal for 13287an unrecognized tag. 13288@end table 13289 13290On some targets, @value{GDBN} can access operating system-specific 13291information and show it to you. The types of information available 13292will differ depending on the type of operating system running on the 13293target. The mechanism used to fetch the data is described in 13294@ref{Operating System Information}. For remote targets, this 13295functionality depends on the remote stub's support of the 13296@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}. 13297 13298@table @code 13299@kindex info os 13300@item info os @var{infotype} 13301 13302Display OS information of the requested type. 13303 13304On @sc{gnu}/Linux, the following values of @var{infotype} are valid: 13305 13306@anchor{linux info os infotypes} 13307@table @code 13308@kindex info os cpus 13309@item cpus 13310Display the list of all CPUs/cores. For each CPU/core, @value{GDBN} prints 13311the available fields from /proc/cpuinfo. For each supported architecture 13312different fields are available. Two common entries are processor which gives 13313CPU number and bogomips; a system constant that is calculated during 13314kernel initialization. 13315 13316@kindex info os files 13317@item files 13318Display the list of open file descriptors on the target. For each 13319file descriptor, @value{GDBN} prints the identifier of the process 13320owning the descriptor, the command of the owning process, the value 13321of the descriptor, and the target of the descriptor. 13322 13323@kindex info os modules 13324@item modules 13325Display the list of all loaded kernel modules on the target. For each 13326module, @value{GDBN} prints the module name, the size of the module in 13327bytes, the number of times the module is used, the dependencies of the 13328module, the status of the module, and the address of the loaded module 13329in memory. 13330 13331@kindex info os msg 13332@item msg 13333Display the list of all System V message queues on the target. For each 13334message queue, @value{GDBN} prints the message queue key, the message 13335queue identifier, the access permissions, the current number of bytes 13336on the queue, the current number of messages on the queue, the processes 13337that last sent and received a message on the queue, the user and group 13338of the owner and creator of the message queue, the times at which a 13339message was last sent and received on the queue, and the time at which 13340the message queue was last changed. 13341 13342@kindex info os processes 13343@item processes 13344Display the list of processes on the target. For each process, 13345@value{GDBN} prints the process identifier, the name of the user, the 13346command corresponding to the process, and the list of processor cores 13347that the process is currently running on. (To understand what these 13348properties mean, for this and the following info types, please consult 13349the general @sc{gnu}/Linux documentation.) 13350 13351@kindex info os procgroups 13352@item procgroups 13353Display the list of process groups on the target. For each process, 13354@value{GDBN} prints the identifier of the process group that it belongs 13355to, the command corresponding to the process group leader, the process 13356identifier, and the command line of the process. The list is sorted 13357first by the process group identifier, then by the process identifier, 13358so that processes belonging to the same process group are grouped together 13359and the process group leader is listed first. 13360 13361@kindex info os semaphores 13362@item semaphores 13363Display the list of all System V semaphore sets on the target. For each 13364semaphore set, @value{GDBN} prints the semaphore set key, the semaphore 13365set identifier, the access permissions, the number of semaphores in the 13366set, the user and group of the owner and creator of the semaphore set, 13367and the times at which the semaphore set was operated upon and changed. 13368 13369@kindex info os shm 13370@item shm 13371Display the list of all System V shared-memory regions on the target. 13372For each shared-memory region, @value{GDBN} prints the region key, 13373the shared-memory identifier, the access permissions, the size of the 13374region, the process that created the region, the process that last 13375attached to or detached from the region, the current number of live 13376attaches to the region, and the times at which the region was last 13377attached to, detach from, and changed. 13378 13379@kindex info os sockets 13380@item sockets 13381Display the list of Internet-domain sockets on the target. For each 13382socket, @value{GDBN} prints the address and port of the local and 13383remote endpoints, the current state of the connection, the creator of 13384the socket, the IP address family of the socket, and the type of the 13385connection. 13386 13387@kindex info os threads 13388@item threads 13389Display the list of threads running on the target. For each thread, 13390@value{GDBN} prints the identifier of the process that the thread 13391belongs to, the command of the process, the thread identifier, and the 13392processor core that it is currently running on. The main thread of a 13393process is not listed. 13394@end table 13395 13396@item info os 13397If @var{infotype} is omitted, then list the possible values for 13398@var{infotype} and the kind of OS information available for each 13399@var{infotype}. If the target does not return a list of possible 13400types, this command will report an error. 13401@end table 13402 13403@node Memory Region Attributes 13404@section Memory Region Attributes 13405@cindex memory region attributes 13406 13407@dfn{Memory region attributes} allow you to describe special handling 13408required by regions of your target's memory. @value{GDBN} uses 13409attributes to determine whether to allow certain types of memory 13410accesses; whether to use specific width accesses; and whether to cache 13411target memory. By default the description of memory regions is 13412fetched from the target (if the current target supports this), but the 13413user can override the fetched regions. 13414 13415Defined memory regions can be individually enabled and disabled. When a 13416memory region is disabled, @value{GDBN} uses the default attributes when 13417accessing memory in that region. Similarly, if no memory regions have 13418been defined, @value{GDBN} uses the default attributes when accessing 13419all memory. 13420 13421When a memory region is defined, it is given a number to identify it; 13422to enable, disable, or remove a memory region, you specify that number. 13423 13424@table @code 13425@kindex mem 13426@item mem @var{lower} @var{upper} @var{attributes}@dots{} 13427Define a memory region bounded by @var{lower} and @var{upper} with 13428attributes @var{attributes}@dots{}, and add it to the list of regions 13429monitored by @value{GDBN}. Note that @var{upper} == 0 is a special 13430case: it is treated as the target's maximum memory address. 13431(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.) 13432 13433@item mem auto 13434Discard any user changes to the memory regions and use target-supplied 13435regions, if available, or no regions if the target does not support. 13436 13437@kindex delete mem 13438@item delete mem @var{nums}@dots{} 13439Remove memory regions @var{nums}@dots{} from the list of regions 13440monitored by @value{GDBN}. 13441 13442@kindex disable mem 13443@item disable mem @var{nums}@dots{} 13444Disable monitoring of memory regions @var{nums}@dots{}. 13445A disabled memory region is not forgotten. 13446It may be enabled again later. 13447 13448@kindex enable mem 13449@item enable mem @var{nums}@dots{} 13450Enable monitoring of memory regions @var{nums}@dots{}. 13451 13452@kindex info mem 13453@item info mem 13454Print a table of all defined memory regions, with the following columns 13455for each region: 13456 13457@table @emph 13458@item Memory Region Number 13459@item Enabled or Disabled. 13460Enabled memory regions are marked with @samp{y}. 13461Disabled memory regions are marked with @samp{n}. 13462 13463@item Lo Address 13464The address defining the inclusive lower bound of the memory region. 13465 13466@item Hi Address 13467The address defining the exclusive upper bound of the memory region. 13468 13469@item Attributes 13470The list of attributes set for this memory region. 13471@end table 13472@end table 13473 13474 13475@subsection Attributes 13476 13477@subsubsection Memory Access Mode 13478The access mode attributes set whether @value{GDBN} may make read or 13479write accesses to a memory region. 13480 13481While these attributes prevent @value{GDBN} from performing invalid 13482memory accesses, they do nothing to prevent the target system, I/O DMA, 13483etc.@: from accessing memory. 13484 13485@table @code 13486@item ro 13487Memory is read only. 13488@item wo 13489Memory is write only. 13490@item rw 13491Memory is read/write. This is the default. 13492@end table 13493 13494@subsubsection Memory Access Size 13495The access size attribute tells @value{GDBN} to use specific sized 13496accesses in the memory region. Often memory mapped device registers 13497require specific sized accesses. If no access size attribute is 13498specified, @value{GDBN} may use accesses of any size. 13499 13500@table @code 13501@item 8 13502Use 8 bit memory accesses. 13503@item 16 13504Use 16 bit memory accesses. 13505@item 32 13506Use 32 bit memory accesses. 13507@item 64 13508Use 64 bit memory accesses. 13509@end table 13510 13511@c @subsubsection Hardware/Software Breakpoints 13512@c The hardware/software breakpoint attributes set whether @value{GDBN} 13513@c will use hardware or software breakpoints for the internal breakpoints 13514@c used by the step, next, finish, until, etc. commands. 13515@c 13516@c @table @code 13517@c @item hwbreak 13518@c Always use hardware breakpoints 13519@c @item swbreak (default) 13520@c @end table 13521 13522@subsubsection Data Cache 13523The data cache attributes set whether @value{GDBN} will cache target 13524memory. While this generally improves performance by reducing debug 13525protocol overhead, it can lead to incorrect results because @value{GDBN} 13526does not know about volatile variables or memory mapped device 13527registers. 13528 13529@table @code 13530@item cache 13531Enable @value{GDBN} to cache target memory. 13532@item nocache 13533Disable @value{GDBN} from caching target memory. This is the default. 13534@end table 13535 13536@subsection Memory Access Checking 13537@value{GDBN} can be instructed to refuse accesses to memory that is 13538not explicitly described. This can be useful if accessing such 13539regions has undesired effects for a specific target, or to provide 13540better error checking. The following commands control this behaviour. 13541 13542@table @code 13543@kindex set mem inaccessible-by-default 13544@item set mem inaccessible-by-default [on|off] 13545If @code{on} is specified, make @value{GDBN} treat memory not 13546explicitly described by the memory ranges as non-existent and refuse accesses 13547to such memory. The checks are only performed if there's at least one 13548memory range defined. If @code{off} is specified, make @value{GDBN} 13549treat the memory not explicitly described by the memory ranges as RAM. 13550The default value is @code{on}. 13551@kindex show mem inaccessible-by-default 13552@item show mem inaccessible-by-default 13553Show the current handling of accesses to unknown memory. 13554@end table 13555 13556 13557@c @subsubsection Memory Write Verification 13558@c The memory write verification attributes set whether @value{GDBN} 13559@c will re-reads data after each write to verify the write was successful. 13560@c 13561@c @table @code 13562@c @item verify 13563@c @item noverify (default) 13564@c @end table 13565 13566@node Dump/Restore Files 13567@section Copy Between Memory and a File 13568@cindex dump/restore files 13569@cindex append data to a file 13570@cindex dump data to a file 13571@cindex restore data from a file 13572 13573You can use the commands @code{dump}, @code{append}, and 13574@code{restore} to copy data between target memory and a file. The 13575@code{dump} and @code{append} commands write data to a file, and the 13576@code{restore} command reads data from a file back into the inferior's 13577memory. Files may be in binary, Motorola S-record, Intel hex, 13578Tektronix Hex, or Verilog Hex format; however, @value{GDBN} can only 13579append to binary files, and cannot read from Verilog Hex files. 13580 13581@table @code 13582 13583@kindex dump 13584@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 13585@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr} 13586Dump the contents of memory from @var{start_addr} to @var{end_addr}, 13587or the value of @var{expr}, to @var{filename} in the given format. 13588 13589The @var{format} parameter may be any one of: 13590@table @code 13591@item binary 13592Raw binary form. 13593@item ihex 13594Intel hex format. 13595@item srec 13596Motorola S-record format. 13597@item tekhex 13598Tektronix Hex format. 13599@item verilog 13600Verilog Hex format. 13601@end table 13602 13603@value{GDBN} uses the same definitions of these formats as the 13604@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If 13605@var{format} is omitted, @value{GDBN} dumps the data in raw binary 13606form. 13607 13608@kindex append 13609@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr} 13610@itemx append @r{[}binary@r{]} value @var{filename} @var{expr} 13611Append the contents of memory from @var{start_addr} to @var{end_addr}, 13612or the value of @var{expr}, to the file @var{filename}, in raw binary form. 13613(@value{GDBN} can only append data to files in raw binary form.) 13614 13615@kindex restore 13616@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end} 13617Restore the contents of file @var{filename} into memory. The 13618@code{restore} command can automatically recognize any known @sc{bfd} 13619file format, except for raw binary. To restore a raw binary file you 13620must specify the optional keyword @code{binary} after the filename. 13621 13622If @var{bias} is non-zero, its value will be added to the addresses 13623contained in the file. Binary files always start at address zero, so 13624they will be restored at address @var{bias}. Other bfd files have 13625a built-in location; they will be restored at offset @var{bias} 13626from that location. 13627 13628If @var{start} and/or @var{end} are non-zero, then only data between 13629file offset @var{start} and file offset @var{end} will be restored. 13630These offsets are relative to the addresses in the file, before 13631the @var{bias} argument is applied. 13632 13633@end table 13634 13635@node Core File Generation 13636@section How to Produce a Core File from Your Program 13637@cindex dump core from inferior 13638 13639A @dfn{core file} or @dfn{core dump} is a file that records the memory 13640image of a running process and its process status (register values 13641etc.). Its primary use is post-mortem debugging of a program that 13642crashed while it ran outside a debugger. A program that crashes 13643automatically produces a core file, unless this feature is disabled by 13644the user. @xref{Files}, for information on invoking @value{GDBN} in 13645the post-mortem debugging mode. 13646 13647Occasionally, you may wish to produce a core file of the program you 13648are debugging in order to preserve a snapshot of its state. 13649@value{GDBN} has a special command for that. 13650 13651@table @code 13652@kindex gcore 13653@kindex generate-core-file 13654@item generate-core-file [@var{file}] 13655@itemx gcore [@var{file}] 13656Produce a core dump of the inferior process. The optional argument 13657@var{file} specifies the file name where to put the core dump. If not 13658specified, the file name defaults to @file{core.@var{pid}}, where 13659@var{pid} is the inferior process ID. 13660 13661Note that this command is implemented only for some systems (as of 13662this writing, @sc{gnu}/Linux, FreeBSD, Solaris, and S390). 13663 13664On @sc{gnu}/Linux, this command can take into account the value of the 13665file @file{/proc/@var{pid}/coredump_filter} when generating the core 13666dump (@pxref{set use-coredump-filter}), and by default honors the 13667@code{VM_DONTDUMP} flag for mappings where it is present in the file 13668@file{/proc/@var{pid}/smaps} (@pxref{set dump-excluded-mappings}). 13669 13670@kindex set use-coredump-filter 13671@anchor{set use-coredump-filter} 13672@item set use-coredump-filter on 13673@itemx set use-coredump-filter off 13674Enable or disable the use of the file 13675@file{/proc/@var{pid}/coredump_filter} when generating core dump 13676files. This file is used by the Linux kernel to decide what types of 13677memory mappings will be dumped or ignored when generating a core dump 13678file. @var{pid} is the process ID of a currently running process. 13679 13680To make use of this feature, you have to write in the 13681@file{/proc/@var{pid}/coredump_filter} file a value, in hexadecimal, 13682which is a bit mask representing the memory mapping types. If a bit 13683is set in the bit mask, then the memory mappings of the corresponding 13684types will be dumped; otherwise, they will be ignored. This 13685configuration is inherited by child processes. For more information 13686about the bits that can be set in the 13687@file{/proc/@var{pid}/coredump_filter} file, please refer to the 13688manpage of @code{core(5)}. 13689 13690By default, this option is @code{on}. If this option is turned 13691@code{off}, @value{GDBN} does not read the @file{coredump_filter} file 13692and instead uses the same default value as the Linux kernel in order 13693to decide which pages will be dumped in the core dump file. This 13694value is currently @code{0x33}, which means that bits @code{0} 13695(anonymous private mappings), @code{1} (anonymous shared mappings), 13696@code{4} (ELF headers) and @code{5} (private huge pages) are active. 13697This will cause these memory mappings to be dumped automatically. 13698 13699@kindex set dump-excluded-mappings 13700@anchor{set dump-excluded-mappings} 13701@item set dump-excluded-mappings on 13702@itemx set dump-excluded-mappings off 13703If @code{on} is specified, @value{GDBN} will dump memory mappings 13704marked with the @code{VM_DONTDUMP} flag. This flag is represented in 13705the file @file{/proc/@var{pid}/smaps} with the acronym @code{dd}. 13706 13707The default value is @code{off}. 13708@end table 13709 13710@node Character Sets 13711@section Character Sets 13712@cindex character sets 13713@cindex charset 13714@cindex translating between character sets 13715@cindex host character set 13716@cindex target character set 13717 13718If the program you are debugging uses a different character set to 13719represent characters and strings than the one @value{GDBN} uses itself, 13720@value{GDBN} can automatically translate between the character sets for 13721you. The character set @value{GDBN} uses we call the @dfn{host 13722character set}; the one the inferior program uses we call the 13723@dfn{target character set}. 13724 13725For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which 13726uses the ISO Latin 1 character set, but you are using @value{GDBN}'s 13727remote protocol (@pxref{Remote Debugging}) to debug a program 13728running on an IBM mainframe, which uses the @sc{ebcdic} character set, 13729then the host character set is Latin-1, and the target character set is 13730@sc{ebcdic}. If you give @value{GDBN} the command @code{set 13731target-charset EBCDIC-US}, then @value{GDBN} translates between 13732@sc{ebcdic} and Latin 1 as you print character or string values, or use 13733character and string literals in expressions. 13734 13735@value{GDBN} has no way to automatically recognize which character set 13736the inferior program uses; you must tell it, using the @code{set 13737target-charset} command, described below. 13738 13739Here are the commands for controlling @value{GDBN}'s character set 13740support: 13741 13742@table @code 13743@item set target-charset @var{charset} 13744@kindex set target-charset 13745Set the current target character set to @var{charset}. To display the 13746list of supported target character sets, type 13747@kbd{@w{set target-charset @key{TAB}@key{TAB}}}. 13748 13749@item set host-charset @var{charset} 13750@kindex set host-charset 13751Set the current host character set to @var{charset}. 13752 13753By default, @value{GDBN} uses a host character set appropriate to the 13754system it is running on; you can override that default using the 13755@code{set host-charset} command. On some systems, @value{GDBN} cannot 13756automatically determine the appropriate host character set. In this 13757case, @value{GDBN} uses @samp{UTF-8}. 13758 13759@value{GDBN} can only use certain character sets as its host character 13760set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}}, 13761@value{GDBN} will list the host character sets it supports. 13762 13763@item set charset @var{charset} 13764@kindex set charset 13765Set the current host and target character sets to @var{charset}. As 13766above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}}, 13767@value{GDBN} will list the names of the character sets that can be used 13768for both host and target. 13769 13770@item show charset 13771@kindex show charset 13772Show the names of the current host and target character sets. 13773 13774@item show host-charset 13775@kindex show host-charset 13776Show the name of the current host character set. 13777 13778@item show target-charset 13779@kindex show target-charset 13780Show the name of the current target character set. 13781 13782@item set target-wide-charset @var{charset} 13783@kindex set target-wide-charset 13784Set the current target's wide character set to @var{charset}. This is 13785the character set used by the target's @code{wchar_t} type. To 13786display the list of supported wide character sets, type 13787@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}. 13788 13789@item show target-wide-charset 13790@kindex show target-wide-charset 13791Show the name of the current target's wide character set. 13792@end table 13793 13794Here is an example of @value{GDBN}'s character set support in action. 13795Assume that the following source code has been placed in the file 13796@file{charset-test.c}: 13797 13798@smallexample 13799#include <stdio.h> 13800 13801char ascii_hello[] 13802 = @{72, 101, 108, 108, 111, 44, 32, 119, 13803 111, 114, 108, 100, 33, 10, 0@}; 13804char ibm1047_hello[] 13805 = @{200, 133, 147, 147, 150, 107, 64, 166, 13806 150, 153, 147, 132, 90, 37, 0@}; 13807 13808main () 13809@{ 13810 printf ("Hello, world!\n"); 13811@} 13812@end smallexample 13813 13814In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays 13815containing the string @samp{Hello, world!} followed by a newline, 13816encoded in the @sc{ascii} and @sc{ibm1047} character sets. 13817 13818We compile the program, and invoke the debugger on it: 13819 13820@smallexample 13821$ gcc -g charset-test.c -o charset-test 13822$ gdb -nw charset-test 13823GNU gdb 2001-12-19-cvs 13824Copyright 2001 Free Software Foundation, Inc. 13825@dots{} 13826(@value{GDBP}) 13827@end smallexample 13828 13829We can use the @code{show charset} command to see what character sets 13830@value{GDBN} is currently using to interpret and display characters and 13831strings: 13832 13833@smallexample 13834(@value{GDBP}) show charset 13835The current host and target character set is `ISO-8859-1'. 13836(@value{GDBP}) 13837@end smallexample 13838 13839For the sake of printing this manual, let's use @sc{ascii} as our 13840initial character set: 13841@smallexample 13842(@value{GDBP}) set charset ASCII 13843(@value{GDBP}) show charset 13844The current host and target character set is `ASCII'. 13845(@value{GDBP}) 13846@end smallexample 13847 13848Let's assume that @sc{ascii} is indeed the correct character set for our 13849host system --- in other words, let's assume that if @value{GDBN} prints 13850characters using the @sc{ascii} character set, our terminal will display 13851them properly. Since our current target character set is also 13852@sc{ascii}, the contents of @code{ascii_hello} print legibly: 13853 13854@smallexample 13855(@value{GDBP}) print ascii_hello 13856$1 = 0x401698 "Hello, world!\n" 13857(@value{GDBP}) print ascii_hello[0] 13858$2 = 72 'H' 13859(@value{GDBP}) 13860@end smallexample 13861 13862@value{GDBN} uses the target character set for character and string 13863literals you use in expressions: 13864 13865@smallexample 13866(@value{GDBP}) print '+' 13867$3 = 43 '+' 13868(@value{GDBP}) 13869@end smallexample 13870 13871The @sc{ascii} character set uses the number 43 to encode the @samp{+} 13872character. 13873 13874@value{GDBN} relies on the user to tell it which character set the 13875target program uses. If we print @code{ibm1047_hello} while our target 13876character set is still @sc{ascii}, we get jibberish: 13877 13878@smallexample 13879(@value{GDBP}) print ibm1047_hello 13880$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%" 13881(@value{GDBP}) print ibm1047_hello[0] 13882$5 = 200 '\310' 13883(@value{GDBP}) 13884@end smallexample 13885 13886If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB}, 13887@value{GDBN} tells us the character sets it supports: 13888 13889@smallexample 13890(@value{GDBP}) set target-charset 13891ASCII EBCDIC-US IBM1047 ISO-8859-1 13892(@value{GDBP}) set target-charset 13893@end smallexample 13894 13895We can select @sc{ibm1047} as our target character set, and examine the 13896program's strings again. Now the @sc{ascii} string is wrong, but 13897@value{GDBN} translates the contents of @code{ibm1047_hello} from the 13898target character set, @sc{ibm1047}, to the host character set, 13899@sc{ascii}, and they display correctly: 13900 13901@smallexample 13902(@value{GDBP}) set target-charset IBM1047 13903(@value{GDBP}) show charset 13904The current host character set is `ASCII'. 13905The current target character set is `IBM1047'. 13906(@value{GDBP}) print ascii_hello 13907$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012" 13908(@value{GDBP}) print ascii_hello[0] 13909$7 = 72 '\110' 13910(@value{GDBP}) print ibm1047_hello 13911$8 = 0x4016a8 "Hello, world!\n" 13912(@value{GDBP}) print ibm1047_hello[0] 13913$9 = 200 'H' 13914(@value{GDBP}) 13915@end smallexample 13916 13917As above, @value{GDBN} uses the target character set for character and 13918string literals you use in expressions: 13919 13920@smallexample 13921(@value{GDBP}) print '+' 13922$10 = 78 '+' 13923(@value{GDBP}) 13924@end smallexample 13925 13926The @sc{ibm1047} character set uses the number 78 to encode the @samp{+} 13927character. 13928 13929@node Caching Target Data 13930@section Caching Data of Targets 13931@cindex caching data of targets 13932 13933@value{GDBN} caches data exchanged between the debugger and a target. 13934Each cache is associated with the address space of the inferior. 13935@xref{Inferiors Connections and Programs}, about inferior and address space. 13936Such caching generally improves performance in remote debugging 13937(@pxref{Remote Debugging}), because it reduces the overhead of the 13938remote protocol by bundling memory reads and writes into large chunks. 13939Unfortunately, simply caching everything would lead to incorrect results, 13940since @value{GDBN} does not necessarily know anything about volatile 13941values, memory-mapped I/O addresses, etc. Furthermore, in non-stop mode 13942(@pxref{Non-Stop Mode}) memory can be changed @emph{while} a gdb command 13943is executing. 13944Therefore, by default, @value{GDBN} only caches data 13945known to be on the stack@footnote{In non-stop mode, it is moderately 13946rare for a running thread to modify the stack of a stopped thread 13947in a way that would interfere with a backtrace, and caching of 13948stack reads provides a significant speed up of remote backtraces.} or 13949in the code segment. 13950Other regions of memory can be explicitly marked as 13951cacheable; @pxref{Memory Region Attributes}. 13952 13953@table @code 13954@kindex set remotecache 13955@item set remotecache on 13956@itemx set remotecache off 13957This option no longer does anything; it exists for compatibility 13958with old scripts. 13959 13960@kindex show remotecache 13961@item show remotecache 13962Show the current state of the obsolete remotecache flag. 13963 13964@kindex set stack-cache 13965@item set stack-cache on 13966@itemx set stack-cache off 13967Enable or disable caching of stack accesses. When @code{on}, use 13968caching. By default, this option is @code{on}. 13969 13970@kindex show stack-cache 13971@item show stack-cache 13972Show the current state of data caching for memory accesses. 13973 13974@kindex set code-cache 13975@item set code-cache on 13976@itemx set code-cache off 13977Enable or disable caching of code segment accesses. When @code{on}, 13978use caching. By default, this option is @code{on}. This improves 13979performance of disassembly in remote debugging. 13980 13981@kindex show code-cache 13982@item show code-cache 13983Show the current state of target memory cache for code segment 13984accesses. 13985 13986@kindex info dcache 13987@item info dcache @r{[}line@r{]} 13988Print the information about the performance of data cache of the 13989current inferior's address space. The information displayed 13990includes the dcache width and depth, and for each cache line, its 13991number, address, and how many times it was referenced. This 13992command is useful for debugging the data cache operation. 13993 13994If a line number is specified, the contents of that line will be 13995printed in hex. 13996 13997@item set dcache size @var{size} 13998@cindex dcache size 13999@kindex set dcache size 14000Set maximum number of entries in dcache (dcache depth above). 14001 14002@item set dcache line-size @var{line-size} 14003@cindex dcache line-size 14004@kindex set dcache line-size 14005Set number of bytes each dcache entry caches (dcache width above). 14006Must be a power of 2. 14007 14008@item show dcache size 14009@kindex show dcache size 14010Show maximum number of dcache entries. @xref{Caching Target Data, info dcache}. 14011 14012@item show dcache line-size 14013@kindex show dcache line-size 14014Show default size of dcache lines. 14015 14016@item maint flush dcache 14017@cindex dcache, flushing 14018@kindex maint flush dcache 14019Flush the contents (if any) of the dcache. This maintainer command is 14020useful when debugging the dcache implementation. 14021 14022@end table 14023 14024@node Searching Memory 14025@section Search Memory 14026@cindex searching memory 14027 14028Memory can be searched for a particular sequence of bytes with the 14029@code{find} command. 14030 14031@table @code 14032@kindex find 14033@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 14034@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]} 14035Search memory for the sequence of bytes specified by @var{val1}, @var{val2}, 14036etc. The search begins at address @var{start_addr} and continues for either 14037@var{len} bytes or through to @var{end_addr} inclusive. 14038@end table 14039 14040@var{s} and @var{n} are optional parameters. 14041They may be specified in either order, apart or together. 14042 14043@table @r 14044@item @var{s}, search query size 14045The size of each search query value. 14046 14047@table @code 14048@item b 14049bytes 14050@item h 14051halfwords (two bytes) 14052@item w 14053words (four bytes) 14054@item g 14055giant words (eight bytes) 14056@end table 14057 14058All values are interpreted in the current language. 14059This means, for example, that if the current source language is C/C@t{++} 14060then searching for the string ``hello'' includes the trailing '\0'. 14061The null terminator can be removed from searching by using casts, 14062e.g.: @samp{@{char[5]@}"hello"}. 14063 14064If the value size is not specified, it is taken from the 14065value's type in the current language. 14066This is useful when one wants to specify the search 14067pattern as a mixture of types. 14068Note that this means, for example, that in the case of C-like languages 14069a search for an untyped 0x42 will search for @samp{(int) 0x42} 14070which is typically four bytes. 14071 14072@item @var{n}, maximum number of finds 14073The maximum number of matches to print. The default is to print all finds. 14074@end table 14075 14076You can use strings as search values. Quote them with double-quotes 14077 (@code{"}). 14078The string value is copied into the search pattern byte by byte, 14079regardless of the endianness of the target and the size specification. 14080 14081The address of each match found is printed as well as a count of the 14082number of matches found. 14083 14084The address of the last value found is stored in convenience variable 14085@samp{$_}. 14086A count of the number of matches is stored in @samp{$numfound}. 14087 14088For example, if stopped at the @code{printf} in this function: 14089 14090@smallexample 14091void 14092hello () 14093@{ 14094 static char hello[] = "hello-hello"; 14095 static struct @{ char c; short s; int i; @} 14096 __attribute__ ((packed)) mixed 14097 = @{ 'c', 0x1234, 0x87654321 @}; 14098 printf ("%s\n", hello); 14099@} 14100@end smallexample 14101 14102@noindent 14103you get during debugging: 14104 14105@smallexample 14106(gdb) find &hello[0], +sizeof(hello), "hello" 141070x804956d <hello.1620+6> 141081 pattern found 14109(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o' 141100x8049567 <hello.1620> 141110x804956d <hello.1620+6> 141122 patterns found. 14113(gdb) find &hello[0], +sizeof(hello), @{char[5]@}"hello" 141140x8049567 <hello.1620> 141150x804956d <hello.1620+6> 141162 patterns found. 14117(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l' 141180x8049567 <hello.1620> 141191 pattern found 14120(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321 141210x8049560 <mixed.1625> 141221 pattern found 14123(gdb) print $numfound 14124$1 = 1 14125(gdb) print $_ 14126$2 = (void *) 0x8049560 14127@end smallexample 14128 14129@node Value Sizes 14130@section Value Sizes 14131 14132Whenever @value{GDBN} prints a value memory will be allocated within 14133@value{GDBN} to hold the contents of the value. It is possible in 14134some languages with dynamic typing systems, that an invalid program 14135may indicate a value that is incorrectly large, this in turn may cause 14136@value{GDBN} to try and allocate an overly large amount of memory. 14137 14138@table @code 14139@kindex set max-value-size 14140@item set max-value-size @var{bytes} 14141@itemx set max-value-size unlimited 14142Set the maximum size of memory that @value{GDBN} will allocate for the 14143contents of a value to @var{bytes}, trying to display a value that 14144requires more memory than that will result in an error. 14145 14146Setting this variable does not effect values that have already been 14147allocated within @value{GDBN}, only future allocations. 14148 14149There's a minimum size that @code{max-value-size} can be set to in 14150order that @value{GDBN} can still operate correctly, this minimum is 14151currently 16 bytes. 14152 14153The limit applies to the results of some subexpressions as well as to 14154complete expressions. For example, an expression denoting a simple 14155integer component, such as @code{x.y.z}, may fail if the size of 14156@var{x.y} is dynamic and exceeds @var{bytes}. On the other hand, 14157@value{GDBN} is sometimes clever; the expression @code{A[i]}, where 14158@var{A} is an array variable with non-constant size, will generally 14159succeed regardless of the bounds on @var{A}, as long as the component 14160size is less than @var{bytes}. 14161 14162The default value of @code{max-value-size} is currently 64k. 14163 14164@kindex show max-value-size 14165@item show max-value-size 14166Show the maximum size of memory, in bytes, that @value{GDBN} will 14167allocate for the contents of a value. 14168@end table 14169 14170@node Optimized Code 14171@chapter Debugging Optimized Code 14172@cindex optimized code, debugging 14173@cindex debugging optimized code 14174 14175Almost all compilers support optimization. With optimization 14176disabled, the compiler generates assembly code that corresponds 14177directly to your source code, in a simplistic way. As the compiler 14178applies more powerful optimizations, the generated assembly code 14179diverges from your original source code. With help from debugging 14180information generated by the compiler, @value{GDBN} can map from 14181the running program back to constructs from your original source. 14182 14183@value{GDBN} is more accurate with optimization disabled. If you 14184can recompile without optimization, it is easier to follow the 14185progress of your program during debugging. But, there are many cases 14186where you may need to debug an optimized version. 14187 14188When you debug a program compiled with @samp{-g -O}, remember that the 14189optimizer has rearranged your code; the debugger shows you what is 14190really there. Do not be too surprised when the execution path does not 14191exactly match your source file! An extreme example: if you define a 14192variable, but never use it, @value{GDBN} never sees that 14193variable---because the compiler optimizes it out of existence. 14194 14195Some things do not work as well with @samp{-g -O} as with just 14196@samp{-g}, particularly on machines with instruction scheduling. If in 14197doubt, recompile with @samp{-g} alone, and if this fixes the problem, 14198please report it to us as a bug (including a test case!). 14199@xref{Variables}, for more information about debugging optimized code. 14200 14201@menu 14202* Inline Functions:: How @value{GDBN} presents inlining 14203* Tail Call Frames:: @value{GDBN} analysis of jumps to functions 14204@end menu 14205 14206@node Inline Functions 14207@section Inline Functions 14208@cindex inline functions, debugging 14209 14210@dfn{Inlining} is an optimization that inserts a copy of the function 14211body directly at each call site, instead of jumping to a shared 14212routine. @value{GDBN} displays inlined functions just like 14213non-inlined functions. They appear in backtraces. You can view their 14214arguments and local variables, step into them with @code{step}, skip 14215them with @code{next}, and escape from them with @code{finish}. 14216You can check whether a function was inlined by using the 14217@code{info frame} command. 14218 14219For @value{GDBN} to support inlined functions, the compiler must 14220record information about inlining in the debug information --- 14221@value{NGCC} using the @sc{dwarf 2} format does this, and several 14222other compilers do also. @value{GDBN} only supports inlined functions 14223when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1 14224do not emit two required attributes (@samp{DW_AT_call_file} and 14225@samp{DW_AT_call_line}); @value{GDBN} does not display inlined 14226function calls with earlier versions of @value{NGCC}. It instead 14227displays the arguments and local variables of inlined functions as 14228local variables in the caller. 14229 14230The body of an inlined function is directly included at its call site; 14231unlike a non-inlined function, there are no instructions devoted to 14232the call. @value{GDBN} still pretends that the call site and the 14233start of the inlined function are different instructions. Stepping to 14234the call site shows the call site, and then stepping again shows 14235the first line of the inlined function, even though no additional 14236instructions are executed. 14237 14238This makes source-level debugging much clearer; you can see both the 14239context of the call and then the effect of the call. Only stepping by 14240a single instruction using @code{stepi} or @code{nexti} does not do 14241this; single instruction steps always show the inlined body. 14242 14243There are some ways that @value{GDBN} does not pretend that inlined 14244function calls are the same as normal calls: 14245 14246@itemize @bullet 14247@item 14248Setting breakpoints at the call site of an inlined function may not 14249work, because the call site does not contain any code. @value{GDBN} 14250may incorrectly move the breakpoint to the next line of the enclosing 14251function, after the call. This limitation will be removed in a future 14252version of @value{GDBN}; until then, set a breakpoint on an earlier line 14253or inside the inlined function instead. 14254 14255@item 14256@value{GDBN} cannot locate the return value of inlined calls after 14257using the @code{finish} command. This is a limitation of compiler-generated 14258debugging information; after @code{finish}, you can step to the next line 14259and print a variable where your program stored the return value. 14260 14261@end itemize 14262 14263@node Tail Call Frames 14264@section Tail Call Frames 14265@cindex tail call frames, debugging 14266 14267Function @code{B} can call function @code{C} in its very last statement. In 14268unoptimized compilation the call of @code{C} is immediately followed by return 14269instruction at the end of @code{B} code. Optimizing compiler may replace the 14270call and return in function @code{B} into one jump to function @code{C} 14271instead. Such use of a jump instruction is called @dfn{tail call}. 14272 14273During execution of function @code{C}, there will be no indication in the 14274function call stack frames that it was tail-called from @code{B}. If function 14275@code{A} regularly calls function @code{B} which tail-calls function @code{C}, 14276then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in 14277some cases @value{GDBN} can determine that @code{C} was tail-called from 14278@code{B}, and it will then create fictitious call frame for that, with the 14279return address set up as if @code{B} called @code{C} normally. 14280 14281This functionality is currently supported only by DWARF 2 debugging format and 14282the compiler has to produce @samp{DW_TAG_call_site} tags. With 14283@value{NGCC}, you need to specify @option{-O -g} during compilation, to get 14284this information. 14285 14286@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame 14287kind by text @code{tail call frame} such as in this sample @value{GDBN} output: 14288 14289@smallexample 14290(gdb) x/i $pc - 2 14291 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)> 14292(gdb) info frame 14293Stack level 1, frame at 0x7fffffffda30: 14294 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5 14295 tail call frame, caller of frame at 0x7fffffffda30 14296 source language c++. 14297 Arglist at unknown address. 14298 Locals at unknown address, Previous frame's sp is 0x7fffffffda30 14299@end smallexample 14300 14301The detection of all the possible code path executions can find them ambiguous. 14302There is no execution history stored (possible @ref{Reverse Execution} is never 14303used for this purpose) and the last known caller could have reached the known 14304callee by multiple different jump sequences. In such case @value{GDBN} still 14305tries to show at least all the unambiguous top tail callers and all the 14306unambiguous bottom tail calees, if any. 14307 14308@table @code 14309@anchor{set debug entry-values} 14310@item set debug entry-values 14311@kindex set debug entry-values 14312When set to on, enables printing of analysis messages for both frame argument 14313values at function entry and tail calls. It will show all the possible valid 14314tail calls code paths it has considered. It will also print the intersection 14315of them with the final unambiguous (possibly partial or even empty) code path 14316result. 14317 14318@item show debug entry-values 14319@kindex show debug entry-values 14320Show the current state of analysis messages printing for both frame argument 14321values at function entry and tail calls. 14322@end table 14323 14324The analysis messages for tail calls can for example show why the virtual tail 14325call frame for function @code{c} has not been recognized (due to the indirect 14326reference by variable @code{x}): 14327 14328@smallexample 14329static void __attribute__((noinline, noclone)) c (void); 14330void (*x) (void) = c; 14331static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 14332static void __attribute__((noinline, noclone)) c (void) @{ a (); @} 14333int main (void) @{ x (); return 0; @} 14334 14335Breakpoint 1, DW_OP_entry_value resolving cannot find 14336DW_TAG_call_site 0x40039a in main 14337a () at t.c:3 143383 static void __attribute__((noinline, noclone)) a (void) @{ x++; @} 14339(gdb) bt 14340#0 a () at t.c:3 14341#1 0x000000000040039a in main () at t.c:5 14342@end smallexample 14343 14344Another possibility is an ambiguous virtual tail call frames resolution: 14345 14346@smallexample 14347int i; 14348static void __attribute__((noinline, noclone)) f (void) @{ i++; @} 14349static void __attribute__((noinline, noclone)) e (void) @{ f (); @} 14350static void __attribute__((noinline, noclone)) d (void) @{ f (); @} 14351static void __attribute__((noinline, noclone)) c (void) @{ d (); @} 14352static void __attribute__((noinline, noclone)) b (void) 14353@{ if (i) c (); else e (); @} 14354static void __attribute__((noinline, noclone)) a (void) @{ b (); @} 14355int main (void) @{ a (); return 0; @} 14356 14357tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d) 14358tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e) 14359tailcall: reduced: 0x4004d2(a) | 14360(gdb) bt 14361#0 f () at t.c:2 14362#1 0x00000000004004d2 in a () at t.c:8 14363#2 0x0000000000400395 in main () at t.c:9 14364@end smallexample 14365 14366@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f} 14367@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f} 14368 14369@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK. 14370@ifset HAVE_MAKEINFO_CLICK 14371@set ARROW @click{} 14372@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}} 14373@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}} 14374@end ifset 14375@ifclear HAVE_MAKEINFO_CLICK 14376@set ARROW -> 14377@set CALLSEQ1B @value{CALLSEQ1A} 14378@set CALLSEQ2B @value{CALLSEQ2A} 14379@end ifclear 14380 14381Frames #0 and #2 are real, #1 is a virtual tail call frame. 14382The code can have possible execution paths @value{CALLSEQ1B} or 14383@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state. 14384 14385@code{initial:} state shows some random possible calling sequence @value{GDBN} 14386has found. It then finds another possible calling sequence - that one is 14387prefixed by @code{compare:}. The non-ambiguous intersection of these two is 14388printed as the @code{reduced:} calling sequence. That one could have many 14389further @code{compare:} and @code{reduced:} statements as long as there remain 14390any non-ambiguous sequence entries. 14391 14392For the frame of function @code{b} in both cases there are different possible 14393@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is 14394also ambiguous. The only non-ambiguous frame is the one for function @code{a}, 14395therefore this one is displayed to the user while the ambiguous frames are 14396omitted. 14397 14398There can be also reasons why printing of frame argument values at function 14399entry may fail: 14400 14401@smallexample 14402int v; 14403static void __attribute__((noinline, noclone)) c (int i) @{ v++; @} 14404static void __attribute__((noinline, noclone)) a (int i); 14405static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @} 14406static void __attribute__((noinline, noclone)) a (int i) 14407@{ if (i) b (i - 1); else c (0); @} 14408int main (void) @{ a (5); return 0; @} 14409 14410(gdb) bt 14411#0 c (i=i@@entry=0) at t.c:2 14412#1 0x0000000000400428 in a (DW_OP_entry_value resolving has found 14413function "a" at 0x400420 can call itself via tail calls 14414i=<optimized out>) at t.c:6 14415#2 0x000000000040036e in main () at t.c:7 14416@end smallexample 14417 14418@value{GDBN} cannot find out from the inferior state if and how many times did 14419function @code{a} call itself (via function @code{b}) as these calls would be 14420tail calls. Such tail calls would modify the @code{i} variable, therefore 14421@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN} 14422prints @code{<optimized out>} instead. 14423 14424@node Macros 14425@chapter C Preprocessor Macros 14426 14427Some languages, such as C and C@t{++}, provide a way to define and invoke 14428``preprocessor macros'' which expand into strings of tokens. 14429@value{GDBN} can evaluate expressions containing macro invocations, show 14430the result of macro expansion, and show a macro's definition, including 14431where it was defined. 14432 14433You may need to compile your program specially to provide @value{GDBN} 14434with information about preprocessor macros. Most compilers do not 14435include macros in their debugging information, even when you compile 14436with the @option{-g} flag. @xref{Compilation}. 14437 14438A program may define a macro at one point, remove that definition later, 14439and then provide a different definition after that. Thus, at different 14440points in the program, a macro may have different definitions, or have 14441no definition at all. If there is a current stack frame, @value{GDBN} 14442uses the macros in scope at that frame's source code line. Otherwise, 14443@value{GDBN} uses the macros in scope at the current listing location; 14444see @ref{List}. 14445 14446Whenever @value{GDBN} evaluates an expression, it always expands any 14447macro invocations present in the expression. @value{GDBN} also provides 14448the following commands for working with macros explicitly. 14449 14450@table @code 14451 14452@kindex macro expand 14453@cindex macro expansion, showing the results of preprocessor 14454@cindex preprocessor macro expansion, showing the results of 14455@cindex expanding preprocessor macros 14456@item macro expand @var{expression} 14457@itemx macro exp @var{expression} 14458Show the results of expanding all preprocessor macro invocations in 14459@var{expression}. Since @value{GDBN} simply expands macros, but does 14460not parse the result, @var{expression} need not be a valid expression; 14461it can be any string of tokens. 14462 14463@kindex macro exp1 14464@item macro expand-once @var{expression} 14465@itemx macro exp1 @var{expression} 14466@cindex expand macro once 14467@i{(This command is not yet implemented.)} Show the results of 14468expanding those preprocessor macro invocations that appear explicitly in 14469@var{expression}. Macro invocations appearing in that expansion are 14470left unchanged. This command allows you to see the effect of a 14471particular macro more clearly, without being confused by further 14472expansions. Since @value{GDBN} simply expands macros, but does not 14473parse the result, @var{expression} need not be a valid expression; it 14474can be any string of tokens. 14475 14476@kindex info macro 14477@cindex macro definition, showing 14478@cindex definition of a macro, showing 14479@cindex macros, from debug info 14480@item info macro [-a|-all] [--] @var{macro} 14481Show the current definition or all definitions of the named @var{macro}, 14482and describe the source location or compiler command-line where that 14483definition was established. The optional double dash is to signify the end of 14484argument processing and the beginning of @var{macro} for non C-like macros where 14485the macro may begin with a hyphen. 14486 14487@kindex info macros 14488@item info macros @var{locspec} 14489Show all macro definitions that are in effect at the source line of 14490the code location that results from resolving @var{locspec}, and 14491describe the source location or compiler command-line where those 14492definitions were established. 14493 14494@kindex macro define 14495@cindex user-defined macros 14496@cindex defining macros interactively 14497@cindex macros, user-defined 14498@item macro define @var{macro} @var{replacement-list} 14499@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list} 14500Introduce a definition for a preprocessor macro named @var{macro}, 14501invocations of which are replaced by the tokens given in 14502@var{replacement-list}. The first form of this command defines an 14503``object-like'' macro, which takes no arguments; the second form 14504defines a ``function-like'' macro, which takes the arguments given in 14505@var{arglist}. 14506 14507A definition introduced by this command is in scope in every 14508expression evaluated in @value{GDBN}, until it is removed with the 14509@code{macro undef} command, described below. The definition overrides 14510all definitions for @var{macro} present in the program being debugged, 14511as well as any previous user-supplied definition. 14512 14513@kindex macro undef 14514@item macro undef @var{macro} 14515Remove any user-supplied definition for the macro named @var{macro}. 14516This command only affects definitions provided with the @code{macro 14517define} command, described above; it cannot remove definitions present 14518in the program being debugged. 14519 14520@kindex macro list 14521@item macro list 14522List all the macros defined using the @code{macro define} command. 14523@end table 14524 14525@cindex macros, example of debugging with 14526Here is a transcript showing the above commands in action. First, we 14527show our source files: 14528 14529@smallexample 14530$ cat sample.c 14531#include <stdio.h> 14532#include "sample.h" 14533 14534#define M 42 14535#define ADD(x) (M + x) 14536 14537main () 14538@{ 14539#define N 28 14540 printf ("Hello, world!\n"); 14541#undef N 14542 printf ("We're so creative.\n"); 14543#define N 1729 14544 printf ("Goodbye, world!\n"); 14545@} 14546$ cat sample.h 14547#define Q < 14548$ 14549@end smallexample 14550 14551Now, we compile the program using the @sc{gnu} C compiler, 14552@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the 14553minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3} 14554and @option{-gdwarf-4}; we recommend always choosing the most recent 14555version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler 14556includes information about preprocessor macros in the debugging 14557information. 14558 14559@smallexample 14560$ gcc -gdwarf-2 -g3 sample.c -o sample 14561$ 14562@end smallexample 14563 14564Now, we start @value{GDBN} on our sample program: 14565 14566@smallexample 14567$ gdb -nw sample 14568GNU gdb 2002-05-06-cvs 14569Copyright 2002 Free Software Foundation, Inc. 14570GDB is free software, @dots{} 14571(@value{GDBP}) 14572@end smallexample 14573 14574We can expand macros and examine their definitions, even when the 14575program is not running. @value{GDBN} uses the current listing position 14576to decide which macro definitions are in scope: 14577 14578@smallexample 14579(@value{GDBP}) list main 145803 145814 #define M 42 145825 #define ADD(x) (M + x) 145836 145847 main () 145858 @{ 145869 #define N 28 1458710 printf ("Hello, world!\n"); 1458811 #undef N 1458912 printf ("We're so creative.\n"); 14590(@value{GDBP}) info macro ADD 14591Defined at /home/jimb/gdb/macros/play/sample.c:5 14592#define ADD(x) (M + x) 14593(@value{GDBP}) info macro Q 14594Defined at /home/jimb/gdb/macros/play/sample.h:1 14595 included at /home/jimb/gdb/macros/play/sample.c:2 14596#define Q < 14597(@value{GDBP}) macro expand ADD(1) 14598expands to: (42 + 1) 14599(@value{GDBP}) macro expand-once ADD(1) 14600expands to: once (M + 1) 14601(@value{GDBP}) 14602@end smallexample 14603 14604In the example above, note that @code{macro expand-once} expands only 14605the macro invocation explicit in the original text --- the invocation of 14606@code{ADD} --- but does not expand the invocation of the macro @code{M}, 14607which was introduced by @code{ADD}. 14608 14609Once the program is running, @value{GDBN} uses the macro definitions in 14610force at the source line of the current stack frame: 14611 14612@smallexample 14613(@value{GDBP}) break main 14614Breakpoint 1 at 0x8048370: file sample.c, line 10. 14615(@value{GDBP}) run 14616Starting program: /home/jimb/gdb/macros/play/sample 14617 14618Breakpoint 1, main () at sample.c:10 1461910 printf ("Hello, world!\n"); 14620(@value{GDBP}) 14621@end smallexample 14622 14623At line 10, the definition of the macro @code{N} at line 9 is in force: 14624 14625@smallexample 14626(@value{GDBP}) info macro N 14627Defined at /home/jimb/gdb/macros/play/sample.c:9 14628#define N 28 14629(@value{GDBP}) macro expand N Q M 14630expands to: 28 < 42 14631(@value{GDBP}) print N Q M 14632$1 = 1 14633(@value{GDBP}) 14634@end smallexample 14635 14636As we step over directives that remove @code{N}'s definition, and then 14637give it a new definition, @value{GDBN} finds the definition (or lack 14638thereof) in force at each point: 14639 14640@smallexample 14641(@value{GDBP}) next 14642Hello, world! 1464312 printf ("We're so creative.\n"); 14644(@value{GDBP}) info macro N 14645The symbol `N' has no definition as a C/C++ preprocessor macro 14646at /home/jimb/gdb/macros/play/sample.c:12 14647(@value{GDBP}) next 14648We're so creative. 1464914 printf ("Goodbye, world!\n"); 14650(@value{GDBP}) info macro N 14651Defined at /home/jimb/gdb/macros/play/sample.c:13 14652#define N 1729 14653(@value{GDBP}) macro expand N Q M 14654expands to: 1729 < 42 14655(@value{GDBP}) print N Q M 14656$2 = 0 14657(@value{GDBP}) 14658@end smallexample 14659 14660In addition to source files, macros can be defined on the compilation command 14661line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in 14662such a way, @value{GDBN} displays the location of their definition as line zero 14663of the source file submitted to the compiler. 14664 14665@smallexample 14666(@value{GDBP}) info macro __STDC__ 14667Defined at /home/jimb/gdb/macros/play/sample.c:0 14668-D__STDC__=1 14669(@value{GDBP}) 14670@end smallexample 14671 14672 14673@node Tracepoints 14674@chapter Tracepoints 14675@c This chapter is based on the documentation written by Michael 14676@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni. 14677 14678@cindex tracepoints 14679In some applications, it is not feasible for the debugger to interrupt 14680the program's execution long enough for the developer to learn 14681anything helpful about its behavior. If the program's correctness 14682depends on its real-time behavior, delays introduced by a debugger 14683might cause the program to change its behavior drastically, or perhaps 14684fail, even when the code itself is correct. It is useful to be able 14685to observe the program's behavior without interrupting it. 14686 14687Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can 14688specify locations in the program, called @dfn{tracepoints}, and 14689arbitrary expressions to evaluate when those tracepoints are reached. 14690Later, using the @code{tfind} command, you can examine the values 14691those expressions had when the program hit the tracepoints. The 14692expressions may also denote objects in memory---structures or arrays, 14693for example---whose values @value{GDBN} should record; while visiting 14694a particular tracepoint, you may inspect those objects as if they were 14695in memory at that moment. However, because @value{GDBN} records these 14696values without interacting with you, it can do so quickly and 14697unobtrusively, hopefully not disturbing the program's behavior. 14698 14699The tracepoint facility is currently available only for remote 14700targets. @xref{Targets}. In addition, your remote target must know 14701how to collect trace data. This functionality is implemented in the 14702remote stub; however, none of the stubs distributed with @value{GDBN} 14703support tracepoints as of this writing. The format of the remote 14704packets used to implement tracepoints are described in @ref{Tracepoint 14705Packets}. 14706 14707It is also possible to get trace data from a file, in a manner reminiscent 14708of corefiles; you specify the filename, and use @code{tfind} to search 14709through the file. @xref{Trace Files}, for more details. 14710 14711This chapter describes the tracepoint commands and features. 14712 14713@menu 14714* Set Tracepoints:: 14715* Analyze Collected Data:: 14716* Tracepoint Variables:: 14717* Trace Files:: 14718@end menu 14719 14720@node Set Tracepoints 14721@section Commands to Set Tracepoints 14722 14723Before running such a @dfn{trace experiment}, an arbitrary number of 14724tracepoints can be set. A tracepoint is actually a special type of 14725breakpoint (@pxref{Set Breaks}), so you can manipulate it using 14726standard breakpoint commands. For instance, as with breakpoints, 14727tracepoint numbers are successive integers starting from one, and many 14728of the commands associated with tracepoints take the tracepoint number 14729as their argument, to identify which tracepoint to work on. 14730 14731For each tracepoint, you can specify, in advance, some arbitrary set 14732of data that you want the target to collect in the trace buffer when 14733it hits that tracepoint. The collected data can include registers, 14734local variables, or global data. Later, you can use @value{GDBN} 14735commands to examine the values these data had at the time the 14736tracepoint was hit. 14737 14738Tracepoints do not support every breakpoint feature. Ignore counts on 14739tracepoints have no effect, and tracepoints cannot run @value{GDBN} 14740commands when they are hit. Tracepoints may not be thread-specific 14741either. 14742 14743@cindex fast tracepoints 14744Some targets may support @dfn{fast tracepoints}, which are inserted in 14745a different way (such as with a jump instead of a trap), that is 14746faster but possibly restricted in where they may be installed. 14747 14748@cindex static tracepoints 14749@cindex markers, static tracepoints 14750@cindex probing markers, static tracepoints 14751Regular and fast tracepoints are dynamic tracing facilities, meaning 14752that they can be used to insert tracepoints at (almost) any location 14753in the target. Some targets may also support controlling @dfn{static 14754tracepoints} from @value{GDBN}. With static tracing, a set of 14755instrumentation points, also known as @dfn{markers}, are embedded in 14756the target program, and can be activated or deactivated by name or 14757address. These are usually placed at locations which facilitate 14758investigating what the target is actually doing. @value{GDBN}'s 14759support for static tracing includes being able to list instrumentation 14760points, and attach them with @value{GDBN} defined high level 14761tracepoints that expose the whole range of convenience of 14762@value{GDBN}'s tracepoints support. Namely, support for collecting 14763registers values and values of global or local (to the instrumentation 14764point) variables; tracepoint conditions and trace state variables. 14765The act of installing a @value{GDBN} static tracepoint on an 14766instrumentation point, or marker, is referred to as @dfn{probing} a 14767static tracepoint marker. 14768 14769@code{gdbserver} supports tracepoints on some target systems. 14770@xref{Server,,Tracepoints support in @code{gdbserver}}. 14771 14772This section describes commands to set tracepoints and associated 14773conditions and actions. 14774 14775@menu 14776* Create and Delete Tracepoints:: 14777* Enable and Disable Tracepoints:: 14778* Tracepoint Passcounts:: 14779* Tracepoint Conditions:: 14780* Trace State Variables:: 14781* Tracepoint Actions:: 14782* Listing Tracepoints:: 14783* Listing Static Tracepoint Markers:: 14784* Starting and Stopping Trace Experiments:: 14785* Tracepoint Restrictions:: 14786@end menu 14787 14788@node Create and Delete Tracepoints 14789@subsection Create and Delete Tracepoints 14790 14791@table @code 14792@cindex set tracepoint 14793@kindex trace 14794@item trace @var{locspec} 14795The @code{trace} command is very similar to the @code{break} command. 14796Its argument @var{locspec} can be any valid location specification. 14797@xref{Location Specifications}. The @code{trace} command defines a tracepoint, 14798which is a point in the target program where the debugger will briefly stop, 14799collect some data, and then allow the program to continue. Setting a tracepoint 14800or changing its actions takes effect immediately if the remote stub 14801supports the @samp{InstallInTrace} feature (@pxref{install tracepoint 14802in tracing}). 14803If remote stub doesn't support the @samp{InstallInTrace} feature, all 14804these changes don't take effect until the next @code{tstart} 14805command, and once a trace experiment is running, further changes will 14806not have any effect until the next trace experiment starts. In addition, 14807@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose 14808address is not yet resolved. (This is similar to pending breakpoints.) 14809Pending tracepoints are not downloaded to the target and not installed 14810until they are resolved. The resolution of pending tracepoints requires 14811@value{GDBN} support---when debugging with the remote target, and 14812@value{GDBN} disconnects from the remote stub (@pxref{disconnected 14813tracing}), pending tracepoints can not be resolved (and downloaded to 14814the remote stub) while @value{GDBN} is disconnected. 14815 14816Here are some examples of using the @code{trace} command: 14817 14818@smallexample 14819(@value{GDBP}) @b{trace foo.c:121} // a source file and line number 14820 14821(@value{GDBP}) @b{trace +2} // 2 lines forward 14822 14823(@value{GDBP}) @b{trace my_function} // first source line of function 14824 14825(@value{GDBP}) @b{trace *my_function} // EXACT start address of function 14826 14827(@value{GDBP}) @b{trace *0x2117c4} // an address 14828@end smallexample 14829 14830@noindent 14831You can abbreviate @code{trace} as @code{tr}. 14832 14833@item trace @var{locspec} if @var{cond} 14834Set a tracepoint with condition @var{cond}; evaluate the expression 14835@var{cond} each time the tracepoint is reached, and collect data only 14836if the value is nonzero---that is, if @var{cond} evaluates as true. 14837@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more 14838information on tracepoint conditions. 14839 14840@item ftrace @var{locspec} [ if @var{cond} ] 14841@cindex set fast tracepoint 14842@cindex fast tracepoints, setting 14843@kindex ftrace 14844The @code{ftrace} command sets a fast tracepoint. For targets that 14845support them, fast tracepoints will use a more efficient but possibly 14846less general technique to trigger data collection, such as a jump 14847instruction instead of a trap, or some sort of hardware support. It 14848may not be possible to create a fast tracepoint at the desired 14849location, in which case the command will exit with an explanatory 14850message. 14851 14852@value{GDBN} handles arguments to @code{ftrace} exactly as for 14853@code{trace}. 14854 14855On 32-bit x86-architecture systems, fast tracepoints normally need to 14856be placed at an instruction that is 5 bytes or longer, but can be 14857placed at 4-byte instructions if the low 64K of memory of the target 14858program is available to install trampolines. Some Unix-type systems, 14859such as @sc{gnu}/Linux, exclude low addresses from the program's 14860address space; but for instance with the Linux kernel it is possible 14861to let @value{GDBN} use this area by doing a @command{sysctl} command 14862to set the @code{mmap_min_addr} kernel parameter, as in 14863 14864@example 14865sudo sysctl -w vm.mmap_min_addr=32768 14866@end example 14867 14868@noindent 14869which sets the low address to 32K, which leaves plenty of room for 14870trampolines. The minimum address should be set to a page boundary. 14871 14872@item strace [@var{locspec} | -m @var{marker}] [ if @var{cond} ] 14873@cindex set static tracepoint 14874@cindex static tracepoints, setting 14875@cindex probe static tracepoint marker 14876@kindex strace 14877The @code{strace} command sets a static tracepoint. For targets that 14878support it, setting a static tracepoint probes a static 14879instrumentation point, or marker, found at the code locations that 14880result from resolving @var{locspec}. It may not be possible to set a 14881static tracepoint at the desired code location, in which case the 14882command will exit with an explanatory message. 14883 14884@value{GDBN} handles arguments to @code{strace} exactly as for 14885@code{trace}, with the addition that the user can also specify 14886@code{-m @var{marker}} instead of a location spec. This probes the marker 14887identified by the @var{marker} string identifier. This identifier 14888depends on the static tracepoint backend library your program is 14889using. You can find all the marker identifiers in the @samp{ID} field 14890of the @code{info static-tracepoint-markers} command output. 14891@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint 14892Markers}. For example, in the following small program using the UST 14893tracing engine: 14894 14895@smallexample 14896main () 14897@{ 14898 trace_mark(ust, bar33, "str %s", "FOOBAZ"); 14899@} 14900@end smallexample 14901 14902@noindent 14903the marker id is composed of joining the first two arguments to the 14904@code{trace_mark} call with a slash, which translates to: 14905 14906@smallexample 14907(@value{GDBP}) info static-tracepoint-markers 14908Cnt Enb ID Address What 149091 n ust/bar33 0x0000000000400ddc in main at stexample.c:22 14910 Data: "str %s" 14911[etc...] 14912@end smallexample 14913 14914@noindent 14915so you may probe the marker above with: 14916 14917@smallexample 14918(@value{GDBP}) strace -m ust/bar33 14919@end smallexample 14920 14921Static tracepoints accept an extra collect action --- @code{collect 14922$_sdata}. This collects arbitrary user data passed in the probe point 14923call to the tracing library. In the UST example above, you'll see 14924that the third argument to @code{trace_mark} is a printf-like format 14925string. The user data is then the result of running that formatting 14926string against the following arguments. Note that @code{info 14927static-tracepoint-markers} command output lists that format string in 14928the @samp{Data:} field. 14929 14930You can inspect this data when analyzing the trace buffer, by printing 14931the $_sdata variable like any other variable available to 14932@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}. 14933 14934@vindex $tpnum 14935@cindex last tracepoint number 14936@cindex recent tracepoint number 14937@cindex tracepoint number 14938The convenience variable @code{$tpnum} records the tracepoint number 14939of the most recently set tracepoint. 14940 14941@kindex delete tracepoint 14942@cindex tracepoint deletion 14943@item delete tracepoint @r{[}@var{num}@r{]} 14944Permanently delete one or more tracepoints. With no argument, the 14945default is to delete all tracepoints. Note that the regular 14946@code{delete} command can remove tracepoints also. 14947 14948Examples: 14949 14950@smallexample 14951(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints 14952 14953(@value{GDBP}) @b{delete trace} // remove all tracepoints 14954@end smallexample 14955 14956@noindent 14957You can abbreviate this command as @code{del tr}. 14958@end table 14959 14960@node Enable and Disable Tracepoints 14961@subsection Enable and Disable Tracepoints 14962 14963These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}. 14964 14965@table @code 14966@kindex disable tracepoint 14967@item disable tracepoint @r{[}@var{num}@r{]} 14968Disable tracepoint @var{num}, or all tracepoints if no argument 14969@var{num} is given. A disabled tracepoint will have no effect during 14970a trace experiment, but it is not forgotten. You can re-enable 14971a disabled tracepoint using the @code{enable tracepoint} command. 14972If the command is issued during a trace experiment and the debug target 14973has support for disabling tracepoints during a trace experiment, then the 14974change will be effective immediately. Otherwise, it will be applied to the 14975next trace experiment. 14976 14977@kindex enable tracepoint 14978@item enable tracepoint @r{[}@var{num}@r{]} 14979Enable tracepoint @var{num}, or all tracepoints. If this command is 14980issued during a trace experiment and the debug target supports enabling 14981tracepoints during a trace experiment, then the enabled tracepoints will 14982become effective immediately. Otherwise, they will become effective the 14983next time a trace experiment is run. 14984@end table 14985 14986@node Tracepoint Passcounts 14987@subsection Tracepoint Passcounts 14988 14989@table @code 14990@kindex passcount 14991@cindex tracepoint pass count 14992@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]} 14993Set the @dfn{passcount} of a tracepoint. The passcount is a way to 14994automatically stop a trace experiment. If a tracepoint's passcount is 14995@var{n}, then the trace experiment will be automatically stopped on 14996the @var{n}'th time that tracepoint is hit. If the tracepoint number 14997@var{num} is not specified, the @code{passcount} command sets the 14998passcount of the most recently defined tracepoint. If no passcount is 14999given, the trace experiment will run until stopped explicitly by the 15000user. 15001 15002Examples: 15003 15004@smallexample 15005(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of 15006@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2} 15007 15008(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the 15009@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.} 15010(@value{GDBP}) @b{trace foo} 15011(@value{GDBP}) @b{pass 3} 15012(@value{GDBP}) @b{trace bar} 15013(@value{GDBP}) @b{pass 2} 15014(@value{GDBP}) @b{trace baz} 15015(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been 15016@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has} 15017@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times} 15018@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.} 15019@end smallexample 15020@end table 15021 15022@node Tracepoint Conditions 15023@subsection Tracepoint Conditions 15024@cindex conditional tracepoints 15025@cindex tracepoint conditions 15026 15027The simplest sort of tracepoint collects data every time your program 15028reaches a specified place. You can also specify a @dfn{condition} for 15029a tracepoint. A condition is just a Boolean expression in your 15030programming language (@pxref{Expressions, ,Expressions}). A 15031tracepoint with a condition evaluates the expression each time your 15032program reaches it, and data collection happens only if the condition 15033is true. 15034 15035Tracepoint conditions can be specified when a tracepoint is set, by 15036using @samp{if} in the arguments to the @code{trace} command. 15037@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can 15038also be set or changed at any time with the @code{condition} command, 15039just as with breakpoints. 15040 15041Unlike breakpoint conditions, @value{GDBN} does not actually evaluate 15042the conditional expression itself. Instead, @value{GDBN} encodes the 15043expression into an agent expression (@pxref{Agent Expressions}) 15044suitable for execution on the target, independently of @value{GDBN}. 15045Global variables become raw memory locations, locals become stack 15046accesses, and so forth. 15047 15048For instance, suppose you have a function that is usually called 15049frequently, but should not be called after an error has occurred. You 15050could use the following tracepoint command to collect data about calls 15051of that function that happen while the error code is propagating 15052through the program; an unconditional tracepoint could end up 15053collecting thousands of useless trace frames that you would have to 15054search through. 15055 15056@smallexample 15057(@value{GDBP}) @kbd{trace normal_operation if errcode > 0} 15058@end smallexample 15059 15060@node Trace State Variables 15061@subsection Trace State Variables 15062@cindex trace state variables 15063 15064A @dfn{trace state variable} is a special type of variable that is 15065created and managed by target-side code. The syntax is the same as 15066that for GDB's convenience variables (a string prefixed with ``$''), 15067but they are stored on the target. They must be created explicitly, 15068using a @code{tvariable} command. They are always 64-bit signed 15069integers. 15070 15071Trace state variables are remembered by @value{GDBN}, and downloaded 15072to the target along with tracepoint information when the trace 15073experiment starts. There are no intrinsic limits on the number of 15074trace state variables, beyond memory limitations of the target. 15075 15076@cindex convenience variables, and trace state variables 15077Although trace state variables are managed by the target, you can use 15078them in print commands and expressions as if they were convenience 15079variables; @value{GDBN} will get the current value from the target 15080while the trace experiment is running. Trace state variables share 15081the same namespace as other ``$'' variables, which means that you 15082cannot have trace state variables with names like @code{$23} or 15083@code{$pc}, nor can you have a trace state variable and a convenience 15084variable with the same name. 15085 15086@table @code 15087 15088@item tvariable $@var{name} [ = @var{expression} ] 15089@kindex tvariable 15090The @code{tvariable} command creates a new trace state variable named 15091@code{$@var{name}}, and optionally gives it an initial value of 15092@var{expression}. The @var{expression} is evaluated when this command is 15093entered; the result will be converted to an integer if possible, 15094otherwise @value{GDBN} will report an error. A subsequent 15095@code{tvariable} command specifying the same name does not create a 15096variable, but instead assigns the supplied initial value to the 15097existing variable of that name, overwriting any previous initial 15098value. The default initial value is 0. 15099 15100@item info tvariables 15101@kindex info tvariables 15102List all the trace state variables along with their initial values. 15103Their current values may also be displayed, if the trace experiment is 15104currently running. 15105 15106@item delete tvariable @r{[} $@var{name} @dots{} @r{]} 15107@kindex delete tvariable 15108Delete the given trace state variables, or all of them if no arguments 15109are specified. 15110 15111@end table 15112 15113@node Tracepoint Actions 15114@subsection Tracepoint Action Lists 15115 15116@table @code 15117@kindex actions 15118@cindex tracepoint actions 15119@item actions @r{[}@var{num}@r{]} 15120This command will prompt for a list of actions to be taken when the 15121tracepoint is hit. If the tracepoint number @var{num} is not 15122specified, this command sets the actions for the one that was most 15123recently defined (so that you can define a tracepoint and then say 15124@code{actions} without bothering about its number). You specify the 15125actions themselves on the following lines, one action at a time, and 15126terminate the actions list with a line containing just @code{end}. So 15127far, the only defined actions are @code{collect}, @code{teval}, and 15128@code{while-stepping}. 15129 15130@code{actions} is actually equivalent to @code{commands} (@pxref{Break 15131Commands, ,Breakpoint Command Lists}), except that only the defined 15132actions are allowed; any other @value{GDBN} command is rejected. 15133 15134@cindex remove actions from a tracepoint 15135To remove all actions from a tracepoint, type @samp{actions @var{num}} 15136and follow it immediately with @samp{end}. 15137 15138@smallexample 15139(@value{GDBP}) @b{collect @var{data}} // collect some data 15140 15141(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data 15142 15143(@value{GDBP}) @b{end} // signals the end of actions. 15144@end smallexample 15145 15146In the following example, the action list begins with @code{collect} 15147commands indicating the things to be collected when the tracepoint is 15148hit. Then, in order to single-step and collect additional data 15149following the tracepoint, a @code{while-stepping} command is used, 15150followed by the list of things to be collected after each step in a 15151sequence of single steps. The @code{while-stepping} command is 15152terminated by its own separate @code{end} command. Lastly, the action 15153list is terminated by an @code{end} command. 15154 15155@smallexample 15156(@value{GDBP}) @b{trace foo} 15157(@value{GDBP}) @b{actions} 15158Enter actions for tracepoint 1, one per line: 15159> collect bar,baz 15160> collect $regs 15161> while-stepping 12 15162 > collect $pc, arr[i] 15163 > end 15164end 15165@end smallexample 15166 15167@kindex collect @r{(tracepoints)} 15168@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{} 15169Collect values of the given expressions when the tracepoint is hit. 15170This command accepts a comma-separated list of any valid expressions. 15171In addition to global, static, or local variables, the following 15172special arguments are supported: 15173 15174@table @code 15175@item $regs 15176Collect all registers. 15177 15178@item $args 15179Collect all function arguments. 15180 15181@item $locals 15182Collect all local variables. 15183 15184@item $_ret 15185Collect the return address. This is helpful if you want to see more 15186of a backtrace. 15187 15188@emph{Note:} The return address location can not always be reliably 15189determined up front, and the wrong address / registers may end up 15190collected instead. On some architectures the reliability is higher 15191for tracepoints at function entry, while on others it's the opposite. 15192When this happens, backtracing will stop because the return address is 15193found unavailable (unless another collect rule happened to match it). 15194 15195@item $_probe_argc 15196Collects the number of arguments from the static probe at which the 15197tracepoint is located. 15198@xref{Static Probe Points}. 15199 15200@item $_probe_arg@var{n} 15201@var{n} is an integer between 0 and 11. Collects the @var{n}th argument 15202from the static probe at which the tracepoint is located. 15203@xref{Static Probe Points}. 15204 15205@item $_sdata 15206@vindex $_sdata@r{, collect} 15207Collect static tracepoint marker specific data. Only available for 15208static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action 15209Lists}. On the UST static tracepoints library backend, an 15210instrumentation point resembles a @code{printf} function call. The 15211tracing library is able to collect user specified data formatted to a 15212character string using the format provided by the programmer that 15213instrumented the program. Other backends have similar mechanisms. 15214Here's an example of a UST marker call: 15215 15216@smallexample 15217 const char master_name[] = "$your_name"; 15218 trace_mark(channel1, marker1, "hello %s", master_name) 15219@end smallexample 15220 15221In this case, collecting @code{$_sdata} collects the string 15222@samp{hello $yourname}. When analyzing the trace buffer, you can 15223inspect @samp{$_sdata} like any other variable available to 15224@value{GDBN}. 15225@end table 15226 15227You can give several consecutive @code{collect} commands, each one 15228with a single argument, or one @code{collect} command with several 15229arguments separated by commas; the effect is the same. 15230 15231The optional @var{mods} changes the usual handling of the arguments. 15232@code{s} requests that pointers to chars be handled as strings, in 15233particular collecting the contents of the memory being pointed at, up 15234to the first zero. The upper bound is by default the value of the 15235@code{print elements} variable; if @code{s} is followed by a decimal 15236number, that is the upper bound instead. So for instance 15237@samp{collect/s25 mystr} collects as many as 25 characters at 15238@samp{mystr}. 15239 15240The command @code{info scope} (@pxref{Symbols, info scope}) is 15241particularly useful for figuring out what data to collect. 15242 15243@kindex teval @r{(tracepoints)} 15244@item teval @var{expr1}, @var{expr2}, @dots{} 15245Evaluate the given expressions when the tracepoint is hit. This 15246command accepts a comma-separated list of expressions. The results 15247are discarded, so this is mainly useful for assigning values to trace 15248state variables (@pxref{Trace State Variables}) without adding those 15249values to the trace buffer, as would be the case if the @code{collect} 15250action were used. 15251 15252@kindex while-stepping @r{(tracepoints)} 15253@item while-stepping @var{n} 15254Perform @var{n} single-step instruction traces after the tracepoint, 15255collecting new data after each step. The @code{while-stepping} 15256command is followed by the list of what to collect while stepping 15257(followed by its own @code{end} command): 15258 15259@smallexample 15260> while-stepping 12 15261 > collect $regs, myglobal 15262 > end 15263> 15264@end smallexample 15265 15266@noindent 15267Note that @code{$pc} is not automatically collected by 15268@code{while-stepping}; you need to explicitly collect that register if 15269you need it. You may abbreviate @code{while-stepping} as @code{ws} or 15270@code{stepping}. 15271 15272@item set default-collect @var{expr1}, @var{expr2}, @dots{} 15273@kindex set default-collect 15274@cindex default collection action 15275This variable is a list of expressions to collect at each tracepoint 15276hit. It is effectively an additional @code{collect} action prepended 15277to every tracepoint action list. The expressions are parsed 15278individually for each tracepoint, so for instance a variable named 15279@code{xyz} may be interpreted as a global for one tracepoint, and a 15280local for another, as appropriate to the tracepoint's location. 15281 15282@item show default-collect 15283@kindex show default-collect 15284Show the list of expressions that are collected by default at each 15285tracepoint hit. 15286 15287@end table 15288 15289@node Listing Tracepoints 15290@subsection Listing Tracepoints 15291 15292@table @code 15293@kindex info tracepoints @r{[}@var{n}@dots{}@r{]} 15294@kindex info tp @r{[}@var{n}@dots{}@r{]} 15295@cindex information about tracepoints 15296@item info tracepoints @r{[}@var{num}@dots{}@r{]} 15297Display information about the tracepoint @var{num}. If you don't 15298specify a tracepoint number, displays information about all the 15299tracepoints defined so far. The format is similar to that used for 15300@code{info breakpoints}; in fact, @code{info tracepoints} is the same 15301command, simply restricting itself to tracepoints. 15302 15303A tracepoint's listing may include additional information specific to 15304tracing: 15305 15306@itemize @bullet 15307@item 15308its passcount as given by the @code{passcount @var{n}} command 15309 15310@item 15311the state about installed on target of each location 15312@end itemize 15313 15314@smallexample 15315(@value{GDBP}) @b{info trace} 15316Num Type Disp Enb Address What 153171 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7 15318 while-stepping 20 15319 collect globfoo, $regs 15320 end 15321 collect globfoo2 15322 end 15323 pass count 1200 153242 tracepoint keep y <MULTIPLE> 15325 collect $eip 153262.1 y 0x0804859c in func4 at change-loc.h:35 15327 installed on target 153282.2 y 0xb7ffc480 in func4 at change-loc.h:35 15329 installed on target 153302.3 y <PENDING> set_tracepoint 153313 tracepoint keep y 0x080485b1 in foo at change-loc.c:29 15332 not installed on target 15333(@value{GDBP}) 15334@end smallexample 15335 15336@noindent 15337This command can be abbreviated @code{info tp}. 15338@end table 15339 15340@node Listing Static Tracepoint Markers 15341@subsection Listing Static Tracepoint Markers 15342 15343@table @code 15344@kindex info static-tracepoint-markers 15345@cindex information about static tracepoint markers 15346@item info static-tracepoint-markers 15347Display information about all static tracepoint markers defined in the 15348program. 15349 15350For each marker, the following columns are printed: 15351 15352@table @emph 15353@item Count 15354An incrementing counter, output to help readability. This is not a 15355stable identifier. 15356@item ID 15357The marker ID, as reported by the target. 15358@item Enabled or Disabled 15359Probed markers are tagged with @samp{y}. @samp{n} identifies marks 15360that are not enabled. 15361@item Address 15362Where the marker is in your program, as a memory address. 15363@item What 15364Where the marker is in the source for your program, as a file and line 15365number. If the debug information included in the program does not 15366allow @value{GDBN} to locate the source of the marker, this column 15367will be left blank. 15368@end table 15369 15370@noindent 15371In addition, the following information may be printed for each marker: 15372 15373@table @emph 15374@item Data 15375User data passed to the tracing library by the marker call. In the 15376UST backend, this is the format string passed as argument to the 15377marker call. 15378@item Static tracepoints probing the marker 15379The list of static tracepoints attached to the marker. 15380@end table 15381 15382@smallexample 15383(@value{GDBP}) info static-tracepoint-markers 15384Cnt ID Enb Address What 153851 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25 15386 Data: number1 %d number2 %d 15387 Probed by static tracepoints: #2 153882 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24 15389 Data: str %s 15390(@value{GDBP}) 15391@end smallexample 15392@end table 15393 15394@node Starting and Stopping Trace Experiments 15395@subsection Starting and Stopping Trace Experiments 15396 15397@table @code 15398@kindex tstart [ @var{notes} ] 15399@cindex start a new trace experiment 15400@cindex collected data discarded 15401@item tstart 15402This command starts the trace experiment, and begins collecting data. 15403It has the side effect of discarding all the data collected in the 15404trace buffer during the previous trace experiment. If any arguments 15405are supplied, they are taken as a note and stored with the trace 15406experiment's state. The notes may be arbitrary text, and are 15407especially useful with disconnected tracing in a multi-user context; 15408the notes can explain what the trace is doing, supply user contact 15409information, and so forth. 15410 15411@kindex tstop [ @var{notes} ] 15412@cindex stop a running trace experiment 15413@item tstop 15414This command stops the trace experiment. If any arguments are 15415supplied, they are recorded with the experiment as a note. This is 15416useful if you are stopping a trace started by someone else, for 15417instance if the trace is interfering with the system's behavior and 15418needs to be stopped quickly. 15419 15420@strong{Note}: a trace experiment and data collection may stop 15421automatically if any tracepoint's passcount is reached 15422(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full. 15423 15424@kindex tstatus 15425@cindex status of trace data collection 15426@cindex trace experiment, status of 15427@item tstatus 15428This command displays the status of the current trace data 15429collection. 15430@end table 15431 15432Here is an example of the commands we described so far: 15433 15434@smallexample 15435(@value{GDBP}) @b{trace gdb_c_test} 15436(@value{GDBP}) @b{actions} 15437Enter actions for tracepoint #1, one per line. 15438> collect $regs,$locals,$args 15439> while-stepping 11 15440 > collect $regs 15441 > end 15442> end 15443(@value{GDBP}) @b{tstart} 15444 [time passes @dots{}] 15445(@value{GDBP}) @b{tstop} 15446@end smallexample 15447 15448@anchor{disconnected tracing} 15449@cindex disconnected tracing 15450You can choose to continue running the trace experiment even if 15451@value{GDBN} disconnects from the target, voluntarily or 15452involuntarily. For commands such as @code{detach}, the debugger will 15453ask what you want to do with the trace. But for unexpected 15454terminations (@value{GDBN} crash, network outage), it would be 15455unfortunate to lose hard-won trace data, so the variable 15456@code{disconnected-tracing} lets you decide whether the trace should 15457continue running without @value{GDBN}. 15458 15459@table @code 15460@item set disconnected-tracing on 15461@itemx set disconnected-tracing off 15462@kindex set disconnected-tracing 15463Choose whether a tracing run should continue to run if @value{GDBN} 15464has disconnected from the target. Note that @code{detach} or 15465@code{quit} will ask you directly what to do about a running trace no 15466matter what this variable's setting, so the variable is mainly useful 15467for handling unexpected situations, such as loss of the network. 15468 15469@item show disconnected-tracing 15470@kindex show disconnected-tracing 15471Show the current choice for disconnected tracing. 15472 15473@end table 15474 15475When you reconnect to the target, the trace experiment may or may not 15476still be running; it might have filled the trace buffer in the 15477meantime, or stopped for one of the other reasons. If it is running, 15478it will continue after reconnection. 15479 15480Upon reconnection, the target will upload information about the 15481tracepoints in effect. @value{GDBN} will then compare that 15482information to the set of tracepoints currently defined, and attempt 15483to match them up, allowing for the possibility that the numbers may 15484have changed due to creation and deletion in the meantime. If one of 15485the target's tracepoints does not match any in @value{GDBN}, the 15486debugger will create a new tracepoint, so that you have a number with 15487which to specify that tracepoint. This matching-up process is 15488necessarily heuristic, and it may result in useless tracepoints being 15489created; you may simply delete them if they are of no use. 15490 15491@cindex circular trace buffer 15492If your target agent supports a @dfn{circular trace buffer}, then you 15493can run a trace experiment indefinitely without filling the trace 15494buffer; when space runs out, the agent deletes already-collected trace 15495frames, oldest first, until there is enough room to continue 15496collecting. This is especially useful if your tracepoints are being 15497hit too often, and your trace gets terminated prematurely because the 15498buffer is full. To ask for a circular trace buffer, simply set 15499@samp{circular-trace-buffer} to on. You can set this at any time, 15500including during tracing; if the agent can do it, it will change 15501buffer handling on the fly, otherwise it will not take effect until 15502the next run. 15503 15504@table @code 15505@item set circular-trace-buffer on 15506@itemx set circular-trace-buffer off 15507@kindex set circular-trace-buffer 15508Choose whether a tracing run should use a linear or circular buffer 15509for trace data. A linear buffer will not lose any trace data, but may 15510fill up prematurely, while a circular buffer will discard old trace 15511data, but it will have always room for the latest tracepoint hits. 15512 15513@item show circular-trace-buffer 15514@kindex show circular-trace-buffer 15515Show the current choice for the trace buffer. Note that this may not 15516match the agent's current buffer handling, nor is it guaranteed to 15517match the setting that might have been in effect during a past run, 15518for instance if you are looking at frames from a trace file. 15519 15520@end table 15521 15522@table @code 15523@item set trace-buffer-size @var{n} 15524@itemx set trace-buffer-size unlimited 15525@kindex set trace-buffer-size 15526Request that the target use a trace buffer of @var{n} bytes. Not all 15527targets will honor the request; they may have a compiled-in size for 15528the trace buffer, or some other limitation. Set to a value of 15529@code{unlimited} or @code{-1} to let the target use whatever size it 15530likes. This is also the default. 15531 15532@item show trace-buffer-size 15533@kindex show trace-buffer-size 15534Show the current requested size for the trace buffer. Note that this 15535will only match the actual size if the target supports size-setting, 15536and was able to handle the requested size. For instance, if the 15537target can only change buffer size between runs, this variable will 15538not reflect the change until the next run starts. Use @code{tstatus} 15539to get a report of the actual buffer size. 15540@end table 15541 15542@table @code 15543@item set trace-user @var{text} 15544@kindex set trace-user 15545 15546@item show trace-user 15547@kindex show trace-user 15548 15549@item set trace-notes @var{text} 15550@kindex set trace-notes 15551Set the trace run's notes. 15552 15553@item show trace-notes 15554@kindex show trace-notes 15555Show the trace run's notes. 15556 15557@item set trace-stop-notes @var{text} 15558@kindex set trace-stop-notes 15559Set the trace run's stop notes. The handling of the note is as for 15560@code{tstop} arguments; the set command is convenient way to fix a 15561stop note that is mistaken or incomplete. 15562 15563@item show trace-stop-notes 15564@kindex show trace-stop-notes 15565Show the trace run's stop notes. 15566 15567@end table 15568 15569@node Tracepoint Restrictions 15570@subsection Tracepoint Restrictions 15571 15572@cindex tracepoint restrictions 15573There are a number of restrictions on the use of tracepoints. As 15574described above, tracepoint data gathering occurs on the target 15575without interaction from @value{GDBN}. Thus the full capabilities of 15576the debugger are not available during data gathering, and then at data 15577examination time, you will be limited by only having what was 15578collected. The following items describe some common problems, but it 15579is not exhaustive, and you may run into additional difficulties not 15580mentioned here. 15581 15582@itemize @bullet 15583 15584@item 15585Tracepoint expressions are intended to gather objects (lvalues). Thus 15586the full flexibility of GDB's expression evaluator is not available. 15587You cannot call functions, cast objects to aggregate types, access 15588convenience variables or modify values (except by assignment to trace 15589state variables). Some language features may implicitly call 15590functions (for instance Objective-C fields with accessors), and therefore 15591cannot be collected either. 15592 15593@item 15594Collection of local variables, either individually or in bulk with 15595@code{$locals} or @code{$args}, during @code{while-stepping} may 15596behave erratically. The stepping action may enter a new scope (for 15597instance by stepping into a function), or the location of the variable 15598may change (for instance it is loaded into a register). The 15599tracepoint data recorded uses the location information for the 15600variables that is correct for the tracepoint location. When the 15601tracepoint is created, it is not possible, in general, to determine 15602where the steps of a @code{while-stepping} sequence will advance the 15603program---particularly if a conditional branch is stepped. 15604 15605@item 15606Collection of an incompletely-initialized or partially-destroyed object 15607may result in something that @value{GDBN} cannot display, or displays 15608in a misleading way. 15609 15610@item 15611When @value{GDBN} displays a pointer to character it automatically 15612dereferences the pointer to also display characters of the string 15613being pointed to. However, collecting the pointer during tracing does 15614not automatically collect the string. You need to explicitly 15615dereference the pointer and provide size information if you want to 15616collect not only the pointer, but the memory pointed to. For example, 15617@code{*ptr@@50} can be used to collect the 50 element array pointed to 15618by @code{ptr}. 15619 15620@item 15621It is not possible to collect a complete stack backtrace at a 15622tracepoint. Instead, you may collect the registers and a few hundred 15623bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300} 15624(adjust to use the name of the actual stack pointer register on your 15625target architecture, and the amount of stack you wish to capture). 15626Then the @code{backtrace} command will show a partial backtrace when 15627using a trace frame. The number of stack frames that can be examined 15628depends on the sizes of the frames in the collected stack. Note that 15629if you ask for a block so large that it goes past the bottom of the 15630stack, the target agent may report an error trying to read from an 15631invalid address. 15632 15633@item 15634If you do not collect registers at a tracepoint, @value{GDBN} can 15635infer that the value of @code{$pc} must be the same as the address of 15636the tracepoint and use that when you are looking at a trace frame 15637for that tracepoint. However, this cannot work if the tracepoint has 15638multiple locations (for instance if it was set in a function that was 15639inlined), or if it has a @code{while-stepping} loop. In those cases 15640@value{GDBN} will warn you that it can't infer @code{$pc}, and default 15641it to zero. 15642 15643@end itemize 15644 15645@node Analyze Collected Data 15646@section Using the Collected Data 15647 15648After the tracepoint experiment ends, you use @value{GDBN} commands 15649for examining the trace data. The basic idea is that each tracepoint 15650collects a trace @dfn{snapshot} every time it is hit and another 15651snapshot every time it single-steps. All these snapshots are 15652consecutively numbered from zero and go into a buffer, and you can 15653examine them later. The way you examine them is to @dfn{focus} on a 15654specific trace snapshot. When the remote stub is focused on a trace 15655snapshot, it will respond to all @value{GDBN} requests for memory and 15656registers by reading from the buffer which belongs to that snapshot, 15657rather than from @emph{real} memory or registers of the program being 15658debugged. This means that @strong{all} @value{GDBN} commands 15659(@code{print}, @code{info registers}, @code{backtrace}, etc.) will 15660behave as if we were currently debugging the program state as it was 15661when the tracepoint occurred. Any requests for data that are not in 15662the buffer will fail. 15663 15664@menu 15665* tfind:: How to select a trace snapshot 15666* tdump:: How to display all data for a snapshot 15667* save tracepoints:: How to save tracepoints for a future run 15668@end menu 15669 15670@node tfind 15671@subsection @code{tfind @var{n}} 15672 15673@kindex tfind 15674@cindex select trace snapshot 15675@cindex find trace snapshot 15676The basic command for selecting a trace snapshot from the buffer is 15677@code{tfind @var{n}}, which finds trace snapshot number @var{n}, 15678counting from zero. If no argument @var{n} is given, the next 15679snapshot is selected. 15680 15681Here are the various forms of using the @code{tfind} command. 15682 15683@table @code 15684@item tfind start 15685Find the first snapshot in the buffer. This is a synonym for 15686@code{tfind 0} (since 0 is the number of the first snapshot). 15687 15688@item tfind none 15689Stop debugging trace snapshots, resume @emph{live} debugging. 15690 15691@item tfind end 15692Same as @samp{tfind none}. 15693 15694@item tfind 15695No argument means find the next trace snapshot or find the first 15696one if no trace snapshot is selected. 15697 15698@item tfind - 15699Find the previous trace snapshot before the current one. This permits 15700retracing earlier steps. 15701 15702@item tfind tracepoint @var{num} 15703Find the next snapshot associated with tracepoint @var{num}. Search 15704proceeds forward from the last examined trace snapshot. If no 15705argument @var{num} is given, it means find the next snapshot collected 15706for the same tracepoint as the current snapshot. 15707 15708@item tfind pc @var{addr} 15709Find the next snapshot associated with the value @var{addr} of the 15710program counter. Search proceeds forward from the last examined trace 15711snapshot. If no argument @var{addr} is given, it means find the next 15712snapshot with the same value of PC as the current snapshot. 15713 15714@item tfind outside @var{addr1}, @var{addr2} 15715Find the next snapshot whose PC is outside the given range of 15716addresses (exclusive). 15717 15718@item tfind range @var{addr1}, @var{addr2} 15719Find the next snapshot whose PC is between @var{addr1} and 15720@var{addr2} (inclusive). 15721 15722@item tfind line @r{[}@var{file}:@r{]}@var{n} 15723Find the next snapshot associated with the source line @var{n}. If 15724the optional argument @var{file} is given, refer to line @var{n} in 15725that source file. Search proceeds forward from the last examined 15726trace snapshot. If no argument @var{n} is given, it means find the 15727next line other than the one currently being examined; thus saying 15728@code{tfind line} repeatedly can appear to have the same effect as 15729stepping from line to line in a @emph{live} debugging session. 15730@end table 15731 15732The default arguments for the @code{tfind} commands are specifically 15733designed to make it easy to scan through the trace buffer. For 15734instance, @code{tfind} with no argument selects the next trace 15735snapshot, and @code{tfind -} with no argument selects the previous 15736trace snapshot. So, by giving one @code{tfind} command, and then 15737simply hitting @key{RET} repeatedly you can examine all the trace 15738snapshots in order. Or, by saying @code{tfind -} and then hitting 15739@key{RET} repeatedly you can examine the snapshots in reverse order. 15740The @code{tfind line} command with no argument selects the snapshot 15741for the next source line executed. The @code{tfind pc} command with 15742no argument selects the next snapshot with the same program counter 15743(PC) as the current frame. The @code{tfind tracepoint} command with 15744no argument selects the next trace snapshot collected by the same 15745tracepoint as the current one. 15746 15747In addition to letting you scan through the trace buffer manually, 15748these commands make it easy to construct @value{GDBN} scripts that 15749scan through the trace buffer and print out whatever collected data 15750you are interested in. Thus, if we want to examine the PC, FP, and SP 15751registers from each trace frame in the buffer, we can say this: 15752 15753@smallexample 15754(@value{GDBP}) @b{tfind start} 15755(@value{GDBP}) @b{while ($trace_frame != -1)} 15756> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \ 15757 $trace_frame, $pc, $sp, $fp 15758> tfind 15759> end 15760 15761Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44 15762Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44 15763Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44 15764Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44 15765Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44 15766Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44 15767Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44 15768Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44 15769Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44 15770Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44 15771Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14 15772@end smallexample 15773 15774Or, if we want to examine the variable @code{X} at each source line in 15775the buffer: 15776 15777@smallexample 15778(@value{GDBP}) @b{tfind start} 15779(@value{GDBP}) @b{while ($trace_frame != -1)} 15780> printf "Frame %d, X == %d\n", $trace_frame, X 15781> tfind line 15782> end 15783 15784Frame 0, X = 1 15785Frame 7, X = 2 15786Frame 13, X = 255 15787@end smallexample 15788 15789@node tdump 15790@subsection @code{tdump} 15791@kindex tdump 15792@cindex dump all data collected at tracepoint 15793@cindex tracepoint data, display 15794 15795This command takes no arguments. It prints all the data collected at 15796the current trace snapshot. 15797 15798@smallexample 15799(@value{GDBP}) @b{trace 444} 15800(@value{GDBP}) @b{actions} 15801Enter actions for tracepoint #2, one per line: 15802> collect $regs, $locals, $args, gdb_long_test 15803> end 15804 15805(@value{GDBP}) @b{tstart} 15806 15807(@value{GDBP}) @b{tfind line 444} 15808#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66) 15809at gdb_test.c:444 15810444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", ) 15811 15812(@value{GDBP}) @b{tdump} 15813Data collected at tracepoint 2, trace frame 1: 15814d0 0xc4aa0085 -995491707 15815d1 0x18 24 15816d2 0x80 128 15817d3 0x33 51 15818d4 0x71aea3d 119204413 15819d5 0x22 34 15820d6 0xe0 224 15821d7 0x380035 3670069 15822a0 0x19e24a 1696330 15823a1 0x3000668 50333288 15824a2 0x100 256 15825a3 0x322000 3284992 15826a4 0x3000698 50333336 15827a5 0x1ad3cc 1758156 15828fp 0x30bf3c 0x30bf3c 15829sp 0x30bf34 0x30bf34 15830ps 0x0 0 15831pc 0x20b2c8 0x20b2c8 15832fpcontrol 0x0 0 15833fpstatus 0x0 0 15834fpiaddr 0x0 0 15835p = 0x20e5b4 "gdb-test" 15836p1 = (void *) 0x11 15837p2 = (void *) 0x22 15838p3 = (void *) 0x33 15839p4 = (void *) 0x44 15840p5 = (void *) 0x55 15841p6 = (void *) 0x66 15842gdb_long_test = 17 '\021' 15843 15844(@value{GDBP}) 15845@end smallexample 15846 15847@code{tdump} works by scanning the tracepoint's current collection 15848actions and printing the value of each expression listed. So 15849@code{tdump} can fail, if after a run, you change the tracepoint's 15850actions to mention variables that were not collected during the run. 15851 15852Also, for tracepoints with @code{while-stepping} loops, @code{tdump} 15853uses the collected value of @code{$pc} to distinguish between trace 15854frames that were collected at the tracepoint hit, and frames that were 15855collected while stepping. This allows it to correctly choose whether 15856to display the basic list of collections, or the collections from the 15857body of the while-stepping loop. However, if @code{$pc} was not collected, 15858then @code{tdump} will always attempt to dump using the basic collection 15859list, and may fail if a while-stepping frame does not include all the 15860same data that is collected at the tracepoint hit. 15861@c This is getting pretty arcane, example would be good. 15862 15863@node save tracepoints 15864@subsection @code{save tracepoints @var{filename}} 15865@kindex save tracepoints 15866@kindex save-tracepoints 15867@cindex save tracepoints for future sessions 15868 15869This command saves all current tracepoint definitions together with 15870their actions and passcounts, into a file @file{@var{filename}} 15871suitable for use in a later debugging session. To read the saved 15872tracepoint definitions, use the @code{source} command (@pxref{Command 15873Files}). The @w{@code{save-tracepoints}} command is a deprecated 15874alias for @w{@code{save tracepoints}} 15875 15876@node Tracepoint Variables 15877@section Convenience Variables for Tracepoints 15878@cindex tracepoint variables 15879@cindex convenience variables for tracepoints 15880 15881@table @code 15882@vindex $trace_frame 15883@item (int) $trace_frame 15884The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no 15885snapshot is selected. 15886 15887@vindex $tracepoint 15888@item (int) $tracepoint 15889The tracepoint for the current trace snapshot. 15890 15891@vindex $trace_line 15892@item (int) $trace_line 15893The line number for the current trace snapshot. 15894 15895@vindex $trace_file 15896@item (char []) $trace_file 15897The source file for the current trace snapshot. 15898 15899@vindex $trace_func 15900@item (char []) $trace_func 15901The name of the function containing @code{$tracepoint}. 15902@end table 15903 15904Note: @code{$trace_file} is not suitable for use in @code{printf}, 15905use @code{output} instead. 15906 15907Here's a simple example of using these convenience variables for 15908stepping through all the trace snapshots and printing some of their 15909data. Note that these are not the same as trace state variables, 15910which are managed by the target. 15911 15912@smallexample 15913(@value{GDBP}) @b{tfind start} 15914 15915(@value{GDBP}) @b{while $trace_frame != -1} 15916> output $trace_file 15917> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint 15918> tfind 15919> end 15920@end smallexample 15921 15922@node Trace Files 15923@section Using Trace Files 15924@cindex trace files 15925 15926In some situations, the target running a trace experiment may no 15927longer be available; perhaps it crashed, or the hardware was needed 15928for a different activity. To handle these cases, you can arrange to 15929dump the trace data into a file, and later use that file as a source 15930of trace data, via the @code{target tfile} command. 15931 15932@table @code 15933 15934@kindex tsave 15935@item tsave [ -r ] @var{filename} 15936@itemx tsave [-ctf] @var{dirname} 15937Save the trace data to @var{filename}. By default, this command 15938assumes that @var{filename} refers to the host filesystem, so if 15939necessary @value{GDBN} will copy raw trace data up from the target and 15940then save it. If the target supports it, you can also supply the 15941optional argument @code{-r} (``remote'') to direct the target to save 15942the data directly into @var{filename} in its own filesystem, which may be 15943more efficient if the trace buffer is very large. (Note, however, that 15944@code{target tfile} can only read from files accessible to the host.) 15945By default, this command will save trace frame in tfile format. 15946You can supply the optional argument @code{-ctf} to save data in CTF 15947format. The @dfn{Common Trace Format} (CTF) is proposed as a trace format 15948that can be shared by multiple debugging and tracing tools. Please go to 15949@indicateurl{http://www.efficios.com/ctf} to get more information. 15950 15951@kindex target tfile 15952@kindex tfile 15953@kindex target ctf 15954@kindex ctf 15955@item target tfile @var{filename} 15956@itemx target ctf @var{dirname} 15957Use the file named @var{filename} or directory named @var{dirname} as 15958a source of trace data. Commands that examine data work as they do with 15959a live target, but it is not possible to run any new trace experiments. 15960@code{tstatus} will report the state of the trace run at the moment 15961the data was saved, as well as the current trace frame you are examining. 15962Both @var{filename} and @var{dirname} must be on a filesystem accessible to 15963the host. 15964 15965@smallexample 15966(@value{GDBP}) target ctf ctf.ctf 15967(@value{GDBP}) tfind 15968Found trace frame 0, tracepoint 2 1596939 ++a; /* set tracepoint 1 here */ 15970(@value{GDBP}) tdump 15971Data collected at tracepoint 2, trace frame 0: 15972i = 0 15973a = 0 15974b = 1 '\001' 15975c = @{"123", "456", "789", "123", "456", "789"@} 15976d = @{@{@{a = 1, b = 2@}, @{a = 3, b = 4@}@}, @{@{a = 5, b = 6@}, @{a = 7, b = 8@}@}@} 15977(@value{GDBP}) p b 15978$1 = 1 15979@end smallexample 15980 15981@end table 15982 15983@node Overlays 15984@chapter Debugging Programs That Use Overlays 15985@cindex overlays 15986 15987If your program is too large to fit completely in your target system's 15988memory, you can sometimes use @dfn{overlays} to work around this 15989problem. @value{GDBN} provides some support for debugging programs that 15990use overlays. 15991 15992@menu 15993* How Overlays Work:: A general explanation of overlays. 15994* Overlay Commands:: Managing overlays in @value{GDBN}. 15995* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are 15996 mapped by asking the inferior. 15997* Overlay Sample Program:: A sample program using overlays. 15998@end menu 15999 16000@node How Overlays Work 16001@section How Overlays Work 16002@cindex mapped overlays 16003@cindex unmapped overlays 16004@cindex load address, overlay's 16005@cindex mapped address 16006@cindex overlay area 16007 16008Suppose you have a computer whose instruction address space is only 64 16009kilobytes long, but which has much more memory which can be accessed by 16010other means: special instructions, segment registers, or memory 16011management hardware, for example. Suppose further that you want to 16012adapt a program which is larger than 64 kilobytes to run on this system. 16013 16014One solution is to identify modules of your program which are relatively 16015independent, and need not call each other directly; call these modules 16016@dfn{overlays}. Separate the overlays from the main program, and place 16017their machine code in the larger memory. Place your main program in 16018instruction memory, but leave at least enough space there to hold the 16019largest overlay as well. 16020 16021Now, to call a function located in an overlay, you must first copy that 16022overlay's machine code from the large memory into the space set aside 16023for it in the instruction memory, and then jump to its entry point 16024there. 16025 16026@c NB: In the below the mapped area's size is greater or equal to the 16027@c size of all overlays. This is intentional to remind the developer 16028@c that overlays don't necessarily need to be the same size. 16029 16030@smallexample 16031@group 16032 Data Instruction Larger 16033Address Space Address Space Address Space 16034+-----------+ +-----------+ +-----------+ 16035| | | | | | 16036+-----------+ +-----------+ +-----------+<-- overlay 1 16037| program | | main | .----| overlay 1 | load address 16038| variables | | program | | +-----------+ 16039| and heap | | | | | | 16040+-----------+ | | | +-----------+<-- overlay 2 16041| | +-----------+ | | | load address 16042+-----------+ | | | .-| overlay 2 | 16043 | | | | | | 16044 mapped --->+-----------+ | | +-----------+ 16045 address | | | | | | 16046 | overlay | <-' | | | 16047 | area | <---' +-----------+<-- overlay 3 16048 | | <---. | | load address 16049 +-----------+ `--| overlay 3 | 16050 | | | | 16051 +-----------+ | | 16052 +-----------+ 16053 | | 16054 +-----------+ 16055 16056 @anchor{A code overlay}A code overlay 16057@end group 16058@end smallexample 16059 16060The diagram (@pxref{A code overlay}) shows a system with separate data 16061and instruction address spaces. To map an overlay, the program copies 16062its code from the larger address space to the instruction address space. 16063Since the overlays shown here all use the same mapped address, only one 16064may be mapped at a time. For a system with a single address space for 16065data and instructions, the diagram would be similar, except that the 16066program variables and heap would share an address space with the main 16067program and the overlay area. 16068 16069An overlay loaded into instruction memory and ready for use is called a 16070@dfn{mapped} overlay; its @dfn{mapped address} is its address in the 16071instruction memory. An overlay not present (or only partially present) 16072in instruction memory is called @dfn{unmapped}; its @dfn{load address} 16073is its address in the larger memory. The mapped address is also called 16074the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also 16075called the @dfn{load memory address}, or @dfn{LMA}. 16076 16077Unfortunately, overlays are not a completely transparent way to adapt a 16078program to limited instruction memory. They introduce a new set of 16079global constraints you must keep in mind as you design your program: 16080 16081@itemize @bullet 16082 16083@item 16084Before calling or returning to a function in an overlay, your program 16085must make sure that overlay is actually mapped. Otherwise, the call or 16086return will transfer control to the right address, but in the wrong 16087overlay, and your program will probably crash. 16088 16089@item 16090If the process of mapping an overlay is expensive on your system, you 16091will need to choose your overlays carefully to minimize their effect on 16092your program's performance. 16093 16094@item 16095The executable file you load onto your system must contain each 16096overlay's instructions, appearing at the overlay's load address, not its 16097mapped address. However, each overlay's instructions must be relocated 16098and its symbols defined as if the overlay were at its mapped address. 16099You can use GNU linker scripts to specify different load and relocation 16100addresses for pieces of your program; see @ref{Overlay Description,,, 16101ld.info, Using ld: the GNU linker}. 16102 16103@item 16104The procedure for loading executable files onto your system must be able 16105to load their contents into the larger address space as well as the 16106instruction and data spaces. 16107 16108@end itemize 16109 16110The overlay system described above is rather simple, and could be 16111improved in many ways: 16112 16113@itemize @bullet 16114 16115@item 16116If your system has suitable bank switch registers or memory management 16117hardware, you could use those facilities to make an overlay's load area 16118contents simply appear at their mapped address in instruction space. 16119This would probably be faster than copying the overlay to its mapped 16120area in the usual way. 16121 16122@item 16123If your overlays are small enough, you could set aside more than one 16124overlay area, and have more than one overlay mapped at a time. 16125 16126@item 16127You can use overlays to manage data, as well as instructions. In 16128general, data overlays are even less transparent to your design than 16129code overlays: whereas code overlays only require care when you call or 16130return to functions, data overlays require care every time you access 16131the data. Also, if you change the contents of a data overlay, you 16132must copy its contents back out to its load address before you can copy a 16133different data overlay into the same mapped area. 16134 16135@end itemize 16136 16137 16138@node Overlay Commands 16139@section Overlay Commands 16140 16141To use @value{GDBN}'s overlay support, each overlay in your program must 16142correspond to a separate section of the executable file. The section's 16143virtual memory address and load memory address must be the overlay's 16144mapped and load addresses. Identifying overlays with sections allows 16145@value{GDBN} to determine the appropriate address of a function or 16146variable, depending on whether the overlay is mapped or not. 16147 16148@value{GDBN}'s overlay commands all start with the word @code{overlay}; 16149you can abbreviate this as @code{ov} or @code{ovly}. The commands are: 16150 16151@table @code 16152@item overlay off 16153@kindex overlay 16154Disable @value{GDBN}'s overlay support. When overlay support is 16155disabled, @value{GDBN} assumes that all functions and variables are 16156always present at their mapped addresses. By default, @value{GDBN}'s 16157overlay support is disabled. 16158 16159@item overlay manual 16160@cindex manual overlay debugging 16161Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN} 16162relies on you to tell it which overlays are mapped, and which are not, 16163using the @code{overlay map-overlay} and @code{overlay unmap-overlay} 16164commands described below. 16165 16166@item overlay map-overlay @var{overlay} 16167@itemx overlay map @var{overlay} 16168@cindex map an overlay 16169Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must 16170be the name of the object file section containing the overlay. When an 16171overlay is mapped, @value{GDBN} assumes it can find the overlay's 16172functions and variables at their mapped addresses. @value{GDBN} assumes 16173that any other overlays whose mapped ranges overlap that of 16174@var{overlay} are now unmapped. 16175 16176@item overlay unmap-overlay @var{overlay} 16177@itemx overlay unmap @var{overlay} 16178@cindex unmap an overlay 16179Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay} 16180must be the name of the object file section containing the overlay. 16181When an overlay is unmapped, @value{GDBN} assumes it can find the 16182overlay's functions and variables at their load addresses. 16183 16184@item overlay auto 16185Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN} 16186consults a data structure the overlay manager maintains in the inferior 16187to see which overlays are mapped. For details, see @ref{Automatic 16188Overlay Debugging}. 16189 16190@item overlay load-target 16191@itemx overlay load 16192@cindex reloading the overlay table 16193Re-read the overlay table from the inferior. Normally, @value{GDBN} 16194re-reads the table @value{GDBN} automatically each time the inferior 16195stops, so this command should only be necessary if you have changed the 16196overlay mapping yourself using @value{GDBN}. This command is only 16197useful when using automatic overlay debugging. 16198 16199@item overlay list-overlays 16200@itemx overlay list 16201@cindex listing mapped overlays 16202Display a list of the overlays currently mapped, along with their mapped 16203addresses, load addresses, and sizes. 16204 16205@end table 16206 16207Normally, when @value{GDBN} prints a code address, it includes the name 16208of the function the address falls in: 16209 16210@smallexample 16211(@value{GDBP}) print main 16212$3 = @{int ()@} 0x11a0 <main> 16213@end smallexample 16214@noindent 16215When overlay debugging is enabled, @value{GDBN} recognizes code in 16216unmapped overlays, and prints the names of unmapped functions with 16217asterisks around them. For example, if @code{foo} is a function in an 16218unmapped overlay, @value{GDBN} prints it this way: 16219 16220@smallexample 16221(@value{GDBP}) overlay list 16222No sections are mapped. 16223(@value{GDBP}) print foo 16224$5 = @{int (int)@} 0x100000 <*foo*> 16225@end smallexample 16226@noindent 16227When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's 16228name normally: 16229 16230@smallexample 16231(@value{GDBP}) overlay list 16232Section .ov.foo.text, loaded at 0x100000 - 0x100034, 16233 mapped at 0x1016 - 0x104a 16234(@value{GDBP}) print foo 16235$6 = @{int (int)@} 0x1016 <foo> 16236@end smallexample 16237 16238When overlay debugging is enabled, @value{GDBN} can find the correct 16239address for functions and variables in an overlay, whether or not the 16240overlay is mapped. This allows most @value{GDBN} commands, like 16241@code{break} and @code{disassemble}, to work normally, even on unmapped 16242code. However, @value{GDBN}'s breakpoint support has some limitations: 16243 16244@itemize @bullet 16245@item 16246@cindex breakpoints in overlays 16247@cindex overlays, setting breakpoints in 16248You can set breakpoints in functions in unmapped overlays, as long as 16249@value{GDBN} can write to the overlay at its load address. 16250@item 16251@value{GDBN} can not set hardware or simulator-based breakpoints in 16252unmapped overlays. However, if you set a breakpoint at the end of your 16253overlay manager (and tell @value{GDBN} which overlays are now mapped, if 16254you are using manual overlay management), @value{GDBN} will re-set its 16255breakpoints properly. 16256@end itemize 16257 16258 16259@node Automatic Overlay Debugging 16260@section Automatic Overlay Debugging 16261@cindex automatic overlay debugging 16262 16263@value{GDBN} can automatically track which overlays are mapped and which 16264are not, given some simple co-operation from the overlay manager in the 16265inferior. If you enable automatic overlay debugging with the 16266@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN} 16267looks in the inferior's memory for certain variables describing the 16268current state of the overlays. 16269 16270Here are the variables your overlay manager must define to support 16271@value{GDBN}'s automatic overlay debugging: 16272 16273@table @asis 16274 16275@item @code{_ovly_table}: 16276This variable must be an array of the following structures: 16277 16278@smallexample 16279struct 16280@{ 16281 /* The overlay's mapped address. */ 16282 unsigned long vma; 16283 16284 /* The size of the overlay, in bytes. */ 16285 unsigned long size; 16286 16287 /* The overlay's load address. */ 16288 unsigned long lma; 16289 16290 /* Non-zero if the overlay is currently mapped; 16291 zero otherwise. */ 16292 unsigned long mapped; 16293@} 16294@end smallexample 16295 16296@item @code{_novlys}: 16297This variable must be a four-byte signed integer, holding the total 16298number of elements in @code{_ovly_table}. 16299 16300@end table 16301 16302To decide whether a particular overlay is mapped or not, @value{GDBN} 16303looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and 16304@code{lma} members equal the VMA and LMA of the overlay's section in the 16305executable file. When @value{GDBN} finds a matching entry, it consults 16306the entry's @code{mapped} member to determine whether the overlay is 16307currently mapped. 16308 16309In addition, your overlay manager may define a function called 16310@code{_ovly_debug_event}. If this function is defined, @value{GDBN} 16311will silently set a breakpoint there. If the overlay manager then 16312calls this function whenever it has changed the overlay table, this 16313will enable @value{GDBN} to accurately keep track of which overlays 16314are in program memory, and update any breakpoints that may be set 16315in overlays. This will allow breakpoints to work even if the 16316overlays are kept in ROM or other non-writable memory while they 16317are not being executed. 16318 16319@node Overlay Sample Program 16320@section Overlay Sample Program 16321@cindex overlay example program 16322 16323When linking a program which uses overlays, you must place the overlays 16324at their load addresses, while relocating them to run at their mapped 16325addresses. To do this, you must write a linker script (@pxref{Overlay 16326Description,,, ld.info, Using ld: the GNU linker}). Unfortunately, 16327since linker scripts are specific to a particular host system, target 16328architecture, and target memory layout, this manual cannot provide 16329portable sample code demonstrating @value{GDBN}'s overlay support. 16330 16331However, the @value{GDBN} source distribution does contain an overlaid 16332program, with linker scripts for a few systems, as part of its test 16333suite. The program consists of the following files from 16334@file{gdb/testsuite/gdb.base}: 16335 16336@table @file 16337@item overlays.c 16338The main program file. 16339@item ovlymgr.c 16340A simple overlay manager, used by @file{overlays.c}. 16341@item foo.c 16342@itemx bar.c 16343@itemx baz.c 16344@itemx grbx.c 16345Overlay modules, loaded and used by @file{overlays.c}. 16346@item d10v.ld 16347@itemx m32r.ld 16348Linker scripts for linking the test program on the @code{d10v-elf} 16349and @code{m32r-elf} targets. 16350@end table 16351 16352You can build the test program using the @code{d10v-elf} GCC 16353cross-compiler like this: 16354 16355@smallexample 16356$ d10v-elf-gcc -g -c overlays.c 16357$ d10v-elf-gcc -g -c ovlymgr.c 16358$ d10v-elf-gcc -g -c foo.c 16359$ d10v-elf-gcc -g -c bar.c 16360$ d10v-elf-gcc -g -c baz.c 16361$ d10v-elf-gcc -g -c grbx.c 16362$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \ 16363 baz.o grbx.o -Wl,-Td10v.ld -o overlays 16364@end smallexample 16365 16366The build process is identical for any other architecture, except that 16367you must substitute the appropriate compiler and linker script for the 16368target system for @code{d10v-elf-gcc} and @code{d10v.ld}. 16369 16370 16371@node Languages 16372@chapter Using @value{GDBN} with Different Languages 16373@cindex languages 16374 16375Although programming languages generally have common aspects, they are 16376rarely expressed in the same manner. For instance, in ANSI C, 16377dereferencing a pointer @code{p} is accomplished by @code{*p}, but in 16378Modula-2, it is accomplished by @code{p^}. Values can also be 16379represented (and displayed) differently. Hex numbers in C appear as 16380@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}. 16381 16382@cindex working language 16383Language-specific information is built into @value{GDBN} for some languages, 16384allowing you to express operations like the above in your program's 16385native language, and allowing @value{GDBN} to output values in a manner 16386consistent with the syntax of your program's native language. The 16387language you use to build expressions is called the @dfn{working 16388language}. 16389 16390@menu 16391* Setting:: Switching between source languages 16392* Show:: Displaying the language 16393* Checks:: Type and range checks 16394* Supported Languages:: Supported languages 16395* Unsupported Languages:: Unsupported languages 16396@end menu 16397 16398@node Setting 16399@section Switching Between Source Languages 16400 16401There are two ways to control the working language---either have @value{GDBN} 16402set it automatically, or select it manually yourself. You can use the 16403@code{set language} command for either purpose. On startup, @value{GDBN} 16404defaults to setting the language automatically. The working language is 16405used to determine how expressions you type are interpreted, how values 16406are printed, etc. 16407 16408In addition to the working language, every source file that 16409@value{GDBN} knows about has its own working language. For some object 16410file formats, the compiler might indicate which language a particular 16411source file is in. However, most of the time @value{GDBN} infers the 16412language from the name of the file. The language of a source file 16413controls whether C@t{++} names are demangled---this way @code{backtrace} can 16414show each frame appropriately for its own language. There is no way to 16415set the language of a source file from within @value{GDBN}, but you can 16416set the language associated with a filename extension. @xref{Show, , 16417Displaying the Language}. 16418 16419This is most commonly a problem when you use a program, such 16420as @code{cfront} or @code{f2c}, that generates C but is written in 16421another language. In that case, make the 16422program use @code{#line} directives in its C output; that way 16423@value{GDBN} will know the correct language of the source code of the original 16424program, and will display that source code, not the generated C code. 16425 16426@menu 16427* Filenames:: Filename extensions and languages. 16428* Manually:: Setting the working language manually 16429* Automatically:: Having @value{GDBN} infer the source language 16430@end menu 16431 16432@node Filenames 16433@subsection List of Filename Extensions and Languages 16434 16435If a source file name ends in one of the following extensions, then 16436@value{GDBN} infers that its language is the one indicated. 16437 16438@table @file 16439@item .ada 16440@itemx .ads 16441@itemx .adb 16442@itemx .a 16443Ada source file. 16444 16445@item .c 16446C source file 16447 16448@item .C 16449@itemx .cc 16450@itemx .cp 16451@itemx .cpp 16452@itemx .cxx 16453@itemx .c++ 16454C@t{++} source file 16455 16456@item .d 16457D source file 16458 16459@item .m 16460Objective-C source file 16461 16462@item .f 16463@itemx .F 16464Fortran source file 16465 16466@item .mod 16467Modula-2 source file 16468 16469@item .s 16470@itemx .S 16471Assembler source file. This actually behaves almost like C, but 16472@value{GDBN} does not skip over function prologues when stepping. 16473@end table 16474 16475In addition, you may set the language associated with a filename 16476extension. @xref{Show, , Displaying the Language}. 16477 16478@node Manually 16479@subsection Setting the Working Language 16480 16481If you allow @value{GDBN} to set the language automatically, 16482expressions are interpreted the same way in your debugging session and 16483your program. 16484 16485@kindex set language 16486If you wish, you may set the language manually. To do this, issue the 16487command @samp{set language @var{lang}}, where @var{lang} is the name of 16488a language, such as 16489@code{c} or @code{modula-2}. 16490For a list of the supported languages, type @samp{set language}. 16491 16492Setting the language manually prevents @value{GDBN} from updating the working 16493language automatically. This can lead to confusion if you try 16494to debug a program when the working language is not the same as the 16495source language, when an expression is acceptable to both 16496languages---but means different things. For instance, if the current 16497source file were written in C, and @value{GDBN} was parsing Modula-2, a 16498command such as: 16499 16500@smallexample 16501print a = b + c 16502@end smallexample 16503 16504@noindent 16505might not have the effect you intended. In C, this means to add 16506@code{b} and @code{c} and place the result in @code{a}. The result 16507printed would be the value of @code{a}. In Modula-2, this means to compare 16508@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value. 16509 16510@node Automatically 16511@subsection Having @value{GDBN} Infer the Source Language 16512 16513To have @value{GDBN} set the working language automatically, use 16514@samp{set language local} or @samp{set language auto}. @value{GDBN} 16515then infers the working language. That is, when your program stops in a 16516frame (usually by encountering a breakpoint), @value{GDBN} sets the 16517working language to the language recorded for the function in that 16518frame. If the language for a frame is unknown (that is, if the function 16519or block corresponding to the frame was defined in a source file that 16520does not have a recognized extension), the current working language is 16521not changed, and @value{GDBN} issues a warning. 16522 16523This may not seem necessary for most programs, which are written 16524entirely in one source language. However, program modules and libraries 16525written in one source language can be used by a main program written in 16526a different source language. Using @samp{set language auto} in this 16527case frees you from having to set the working language manually. 16528 16529@node Show 16530@section Displaying the Language 16531 16532The following commands help you find out which language is the 16533working language, and also what language source files were written in. 16534 16535@table @code 16536@item show language 16537@anchor{show language} 16538@kindex show language 16539Display the current working language. This is the 16540language you can use with commands such as @code{print} to 16541build and compute expressions that may involve variables in your program. 16542 16543@item info frame 16544@kindex info frame@r{, show the source language} 16545Display the source language for this frame. This language becomes the 16546working language if you use an identifier from this frame. 16547@xref{Frame Info, ,Information about a Frame}, to identify the other 16548information listed here. 16549 16550@item info source 16551@kindex info source@r{, show the source language} 16552Display the source language of this source file. 16553@xref{Symbols, ,Examining the Symbol Table}, to identify the other 16554information listed here. 16555@end table 16556 16557In unusual circumstances, you may have source files with extensions 16558not in the standard list. You can then set the extension associated 16559with a language explicitly: 16560 16561@table @code 16562@item set extension-language @var{ext} @var{language} 16563@kindex set extension-language 16564Tell @value{GDBN} that source files with extension @var{ext} are to be 16565assumed as written in the source language @var{language}. 16566 16567@item info extensions 16568@kindex info extensions 16569List all the filename extensions and the associated languages. 16570@end table 16571 16572@node Checks 16573@section Type and Range Checking 16574 16575Some languages are designed to guard you against making seemingly common 16576errors through a series of compile- and run-time checks. These include 16577checking the type of arguments to functions and operators and making 16578sure mathematical overflows are caught at run time. Checks such as 16579these help to ensure a program's correctness once it has been compiled 16580by eliminating type mismatches and providing active checks for range 16581errors when your program is running. 16582 16583By default @value{GDBN} checks for these errors according to the 16584rules of the current source language. Although @value{GDBN} does not check 16585the statements in your program, it can check expressions entered directly 16586into @value{GDBN} for evaluation via the @code{print} command, for example. 16587 16588@menu 16589* Type Checking:: An overview of type checking 16590* Range Checking:: An overview of range checking 16591@end menu 16592 16593@cindex type checking 16594@cindex checks, type 16595@node Type Checking 16596@subsection An Overview of Type Checking 16597 16598Some languages, such as C and C@t{++}, are strongly typed, meaning that the 16599arguments to operators and functions have to be of the correct type, 16600otherwise an error occurs. These checks prevent type mismatch 16601errors from ever causing any run-time problems. For example, 16602 16603@smallexample 16604int klass::my_method(char *b) @{ return b ? 1 : 2; @} 16605 16606(@value{GDBP}) print obj.my_method (0) 16607$1 = 2 16608@exdent but 16609(@value{GDBP}) print obj.my_method (0x1234) 16610Cannot resolve method klass::my_method to any overloaded instance 16611@end smallexample 16612 16613The second example fails because in C@t{++} the integer constant 16614@samp{0x1234} is not type-compatible with the pointer parameter type. 16615 16616For the expressions you use in @value{GDBN} commands, you can tell 16617@value{GDBN} to not enforce strict type checking or 16618to treat any mismatches as errors and abandon the expression; 16619When type checking is disabled, @value{GDBN} successfully evaluates 16620expressions like the second example above. 16621 16622Even if type checking is off, there may be other reasons 16623related to type that prevent @value{GDBN} from evaluating an expression. 16624For instance, @value{GDBN} does not know how to add an @code{int} and 16625a @code{struct foo}. These particular type errors have nothing to do 16626with the language in use and usually arise from expressions which make 16627little sense to evaluate anyway. 16628 16629@value{GDBN} provides some additional commands for controlling type checking: 16630 16631@kindex set check type 16632@kindex show check type 16633@table @code 16634@item set check type on 16635@itemx set check type off 16636Set strict type checking on or off. If any type mismatches occur in 16637evaluating an expression while type checking is on, @value{GDBN} prints a 16638message and aborts evaluation of the expression. 16639 16640@item show check type 16641Show the current setting of type checking and whether @value{GDBN} 16642is enforcing strict type checking rules. 16643@end table 16644 16645@cindex range checking 16646@cindex checks, range 16647@node Range Checking 16648@subsection An Overview of Range Checking 16649 16650In some languages (such as Modula-2), it is an error to exceed the 16651bounds of a type; this is enforced with run-time checks. Such range 16652checking is meant to ensure program correctness by making sure 16653computations do not overflow, or indices on an array element access do 16654not exceed the bounds of the array. 16655 16656For expressions you use in @value{GDBN} commands, you can tell 16657@value{GDBN} to treat range errors in one of three ways: ignore them, 16658always treat them as errors and abandon the expression, or issue 16659warnings but evaluate the expression anyway. 16660 16661A range error can result from numerical overflow, from exceeding an 16662array index bound, or when you type a constant that is not a member 16663of any type. Some languages, however, do not treat overflows as an 16664error. In many implementations of C, mathematical overflow causes the 16665result to ``wrap around'' to lower values---for example, if @var{m} is 16666the largest integer value, and @var{s} is the smallest, then 16667 16668@smallexample 16669@var{m} + 1 @result{} @var{s} 16670@end smallexample 16671 16672This, too, is specific to individual languages, and in some cases 16673specific to individual compilers or machines. @xref{Supported Languages, , 16674Supported Languages}, for further details on specific languages. 16675 16676@value{GDBN} provides some additional commands for controlling the range checker: 16677 16678@kindex set check range 16679@kindex show check range 16680@table @code 16681@item set check range auto 16682Set range checking on or off based on the current working language. 16683@xref{Supported Languages, ,Supported Languages}, for the default settings for 16684each language. 16685 16686@item set check range on 16687@itemx set check range off 16688Set range checking on or off, overriding the default setting for the 16689current working language. A warning is issued if the setting does not 16690match the language default. If a range error occurs and range checking is on, 16691then a message is printed and evaluation of the expression is aborted. 16692 16693@item set check range warn 16694Output messages when the @value{GDBN} range checker detects a range error, 16695but attempt to evaluate the expression anyway. Evaluating the 16696expression may still be impossible for other reasons, such as accessing 16697memory that the process does not own (a typical example from many Unix 16698systems). 16699 16700@item show check range 16701Show the current setting of the range checker, and whether or not it is 16702being set automatically by @value{GDBN}. 16703@end table 16704 16705@node Supported Languages 16706@section Supported Languages 16707 16708@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, 16709OpenCL C, Pascal, Rust, assembly, Modula-2, and Ada. 16710@c This is false ... 16711Some @value{GDBN} features may be used in expressions regardless of the 16712language you use: the @value{GDBN} @code{@@} and @code{::} operators, 16713and the @samp{@{type@}addr} construct (@pxref{Expressions, 16714,Expressions}) can be used with the constructs of any supported 16715language. 16716 16717The following sections detail to what degree each source language is 16718supported by @value{GDBN}. These sections are not meant to be language 16719tutorials or references, but serve only as a reference guide to what the 16720@value{GDBN} expression parser accepts, and what input and output 16721formats should look like for different languages. There are many good 16722books written on each of these languages; please look to these for a 16723language reference or tutorial. 16724 16725@menu 16726* C:: C and C@t{++} 16727* D:: D 16728* Go:: Go 16729* Objective-C:: Objective-C 16730* OpenCL C:: OpenCL C 16731* Fortran:: Fortran 16732* Pascal:: Pascal 16733* Rust:: Rust 16734* Modula-2:: Modula-2 16735* Ada:: Ada 16736@end menu 16737 16738@node C 16739@subsection C and C@t{++} 16740 16741@cindex C and C@t{++} 16742@cindex expressions in C or C@t{++} 16743 16744Since C and C@t{++} are so closely related, many features of @value{GDBN} apply 16745to both languages. Whenever this is the case, we discuss those languages 16746together. 16747 16748@cindex C@t{++} 16749@cindex @code{g++}, @sc{gnu} C@t{++} compiler 16750@cindex @sc{gnu} C@t{++} 16751The C@t{++} debugging facilities are jointly implemented by the C@t{++} 16752compiler and @value{GDBN}. Therefore, to debug your C@t{++} code 16753effectively, you must compile your C@t{++} programs with a supported 16754C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++} 16755compiler (@code{aCC}). 16756 16757@menu 16758* C Operators:: C and C@t{++} operators 16759* C Constants:: C and C@t{++} constants 16760* C Plus Plus Expressions:: C@t{++} expressions 16761* C Defaults:: Default settings for C and C@t{++} 16762* C Checks:: C and C@t{++} type and range checks 16763* Debugging C:: @value{GDBN} and C 16764* Debugging C Plus Plus:: @value{GDBN} features for C@t{++} 16765* Decimal Floating Point:: Numbers in Decimal Floating Point format 16766@end menu 16767 16768@node C Operators 16769@subsubsection C and C@t{++} Operators 16770 16771@cindex C and C@t{++} operators 16772 16773Operators must be defined on values of specific types. For instance, 16774@code{+} is defined on numbers, but not on structures. Operators are 16775often defined on groups of types. 16776 16777For the purposes of C and C@t{++}, the following definitions hold: 16778 16779@itemize @bullet 16780 16781@item 16782@emph{Integral types} include @code{int} with any of its storage-class 16783specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}. 16784 16785@item 16786@emph{Floating-point types} include @code{float}, @code{double}, and 16787@code{long double} (if supported by the target platform). 16788 16789@item 16790@emph{Pointer types} include all types defined as @code{(@var{type} *)}. 16791 16792@item 16793@emph{Scalar types} include all of the above. 16794 16795@end itemize 16796 16797@noindent 16798The following operators are supported. They are listed here 16799in order of increasing precedence: 16800 16801@table @code 16802@item , 16803The comma or sequencing operator. Expressions in a comma-separated list 16804are evaluated from left to right, with the result of the entire 16805expression being the last expression evaluated. 16806 16807@item = 16808Assignment. The value of an assignment expression is the value 16809assigned. Defined on scalar types. 16810 16811@item @var{op}= 16812Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}}, 16813and translated to @w{@code{@var{a} = @var{a op b}}}. 16814@w{@code{@var{op}=}} and @code{=} have the same precedence. The operator 16815@var{op} is any one of the operators @code{|}, @code{^}, @code{&}, 16816@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}. 16817 16818@item ?: 16819The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought 16820of as: if @var{a} then @var{b} else @var{c}. The argument @var{a} 16821should be of an integral type. 16822 16823@item || 16824Logical @sc{or}. Defined on integral types. 16825 16826@item && 16827Logical @sc{and}. Defined on integral types. 16828 16829@item | 16830Bitwise @sc{or}. Defined on integral types. 16831 16832@item ^ 16833Bitwise exclusive-@sc{or}. Defined on integral types. 16834 16835@item & 16836Bitwise @sc{and}. Defined on integral types. 16837 16838@item ==@r{, }!= 16839Equality and inequality. Defined on scalar types. The value of these 16840expressions is 0 for false and non-zero for true. 16841 16842@item <@r{, }>@r{, }<=@r{, }>= 16843Less than, greater than, less than or equal, greater than or equal. 16844Defined on scalar types. The value of these expressions is 0 for false 16845and non-zero for true. 16846 16847@item <<@r{, }>> 16848left shift, and right shift. Defined on integral types. 16849 16850@item @@ 16851The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 16852 16853@item +@r{, }- 16854Addition and subtraction. Defined on integral types, floating-point types and 16855pointer types. 16856 16857@item *@r{, }/@r{, }% 16858Multiplication, division, and modulus. Multiplication and division are 16859defined on integral and floating-point types. Modulus is defined on 16860integral types. 16861 16862@item ++@r{, }-- 16863Increment and decrement. When appearing before a variable, the 16864operation is performed before the variable is used in an expression; 16865when appearing after it, the variable's value is used before the 16866operation takes place. 16867 16868@item * 16869Pointer dereferencing. Defined on pointer types. Same precedence as 16870@code{++}. 16871 16872@item & 16873Address operator. Defined on variables. Same precedence as @code{++}. 16874 16875For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is 16876allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})} 16877to examine the address 16878where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is 16879stored. 16880 16881@item - 16882Negative. Defined on integral and floating-point types. Same 16883precedence as @code{++}. 16884 16885@item ! 16886Logical negation. Defined on integral types. Same precedence as 16887@code{++}. 16888 16889@item ~ 16890Bitwise complement operator. Defined on integral types. Same precedence as 16891@code{++}. 16892 16893 16894@item .@r{, }-> 16895Structure member, and pointer-to-structure member. For convenience, 16896@value{GDBN} regards the two as equivalent, choosing whether to dereference a 16897pointer based on the stored type information. 16898Defined on @code{struct} and @code{union} data. 16899 16900@item .*@r{, }->* 16901Dereferences of pointers to members. 16902 16903@item [] 16904Array indexing. @code{@var{a}[@var{i}]} is defined as 16905@code{*(@var{a}+@var{i})}. Same precedence as @code{->}. 16906 16907@item () 16908Function parameter list. Same precedence as @code{->}. 16909 16910@item :: 16911C@t{++} scope resolution operator. Defined on @code{struct}, @code{union}, 16912and @code{class} types. 16913 16914@item :: 16915Doubled colons also represent the @value{GDBN} scope operator 16916(@pxref{Expressions, ,Expressions}). Same precedence as @code{::}, 16917above. 16918@end table 16919 16920If an operator is redefined in the user code, @value{GDBN} usually 16921attempts to invoke the redefined version instead of using the operator's 16922predefined meaning. 16923 16924@node C Constants 16925@subsubsection C and C@t{++} Constants 16926 16927@cindex C and C@t{++} constants 16928 16929@value{GDBN} allows you to express the constants of C and C@t{++} in the 16930following ways: 16931 16932@itemize @bullet 16933@item 16934Integer constants are a sequence of digits. Octal constants are 16935specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants 16936by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter 16937@samp{l}, specifying that the constant should be treated as a 16938@code{long} value. 16939 16940@item 16941Floating point constants are a sequence of digits, followed by a decimal 16942point, followed by a sequence of digits, and optionally followed by an 16943exponent. An exponent is of the form: 16944@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another 16945sequence of digits. The @samp{+} is optional for positive exponents. 16946A floating-point constant may also end with a letter @samp{f} or 16947@samp{F}, specifying that the constant should be treated as being of 16948the @code{float} (as opposed to the default @code{double}) type; or with 16949a letter @samp{l} or @samp{L}, which specifies a @code{long double} 16950constant. 16951 16952@item 16953Enumerated constants consist of enumerated identifiers, or their 16954integral equivalents. 16955 16956@item 16957Character constants are a single character surrounded by single quotes 16958(@code{'}), or a number---the ordinal value of the corresponding character 16959(usually its @sc{ascii} value). Within quotes, the single character may 16960be represented by a letter or by @dfn{escape sequences}, which are of 16961the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation 16962of the character's ordinal value; or of the form @samp{\@var{x}}, where 16963@samp{@var{x}} is a predefined special character---for example, 16964@samp{\n} for newline. 16965 16966Wide character constants can be written by prefixing a character 16967constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide 16968form of @samp{x}. The target wide character set is used when 16969computing the value of this constant (@pxref{Character Sets}). 16970 16971@item 16972String constants are a sequence of character constants surrounded by 16973double quotes (@code{"}). Any valid character constant (as described 16974above) may appear. Double quotes within the string must be preceded by 16975a backslash, so for instance @samp{"a\"b'c"} is a string of five 16976characters. 16977 16978Wide string constants can be written by prefixing a string constant 16979with @samp{L}, as in C. The target wide character set is used when 16980computing the value of this constant (@pxref{Character Sets}). 16981 16982@item 16983Pointer constants are an integral value. You can also write pointers 16984to constants using the C operator @samp{&}. 16985 16986@item 16987Array constants are comma-separated lists surrounded by braces @samp{@{} 16988and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of 16989integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array, 16990and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers. 16991@end itemize 16992 16993@node C Plus Plus Expressions 16994@subsubsection C@t{++} Expressions 16995 16996@cindex expressions in C@t{++} 16997@value{GDBN} expression handling can interpret most C@t{++} expressions. 16998 16999@cindex debugging C@t{++} programs 17000@cindex C@t{++} compilers 17001@cindex debug formats and C@t{++} 17002@cindex @value{NGCC} and C@t{++} 17003@quotation 17004@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use 17005the proper compiler and the proper debug format. Currently, 17006@value{GDBN} works best when debugging C@t{++} code that is compiled 17007with the most recent version of @value{NGCC} possible. The DWARF 17008debugging format is preferred; @value{NGCC} defaults to this on most 17009popular platforms. Other compilers and/or debug formats are likely to 17010work badly or not at all when using @value{GDBN} to debug C@t{++} 17011code. @xref{Compilation}. 17012@end quotation 17013 17014@enumerate 17015 17016@cindex member functions 17017@item 17018Member function calls are allowed; you can use expressions like 17019 17020@smallexample 17021count = aml->GetOriginal(x, y) 17022@end smallexample 17023 17024@vindex this@r{, inside C@t{++} member functions} 17025@cindex namespace in C@t{++} 17026@item 17027While a member function is active (in the selected stack frame), your 17028expressions have the same namespace available as the member function; 17029that is, @value{GDBN} allows implicit references to the class instance 17030pointer @code{this} following the same rules as C@t{++}. @code{using} 17031declarations in the current scope are also respected by @value{GDBN}. 17032 17033@cindex call overloaded functions 17034@cindex overloaded functions, calling 17035@cindex type conversions in C@t{++} 17036@item 17037You can call overloaded functions; @value{GDBN} resolves the function 17038call to the right definition, with some restrictions. @value{GDBN} does not 17039perform overload resolution involving user-defined type conversions, 17040calls to constructors, or instantiations of templates that do not exist 17041in the program. It also cannot handle ellipsis argument lists or 17042default arguments. 17043 17044It does perform integral conversions and promotions, floating-point 17045promotions, arithmetic conversions, pointer conversions, conversions of 17046class objects to base classes, and standard conversions such as those of 17047functions or arrays to pointers; it requires an exact match on the 17048number of function arguments. 17049 17050Overload resolution is always performed, unless you have specified 17051@code{set overload-resolution off}. @xref{Debugging C Plus Plus, 17052,@value{GDBN} Features for C@t{++}}. 17053 17054You must specify @code{set overload-resolution off} in order to use an 17055explicit function signature to call an overloaded function, as in 17056@smallexample 17057p 'foo(char,int)'('x', 13) 17058@end smallexample 17059 17060The @value{GDBN} command-completion facility can simplify this; 17061see @ref{Completion, ,Command Completion}. 17062 17063@cindex reference declarations 17064@item 17065@value{GDBN} understands variables declared as C@t{++} lvalue or rvalue 17066references; you can use them in expressions just as you do in C@t{++} 17067source---they are automatically dereferenced. 17068 17069In the parameter list shown when @value{GDBN} displays a frame, the values of 17070reference variables are not displayed (unlike other variables); this 17071avoids clutter, since references are often used for large structures. 17072The @emph{address} of a reference variable is always shown, unless 17073you have specified @samp{set print address off}. 17074 17075@item 17076@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your 17077expressions can use it just as expressions in your program do. Since 17078one scope may be defined in another, you can use @code{::} repeatedly if 17079necessary, for example in an expression like 17080@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows 17081resolving name scope by reference to source files, in both C and C@t{++} 17082debugging (@pxref{Variables, ,Program Variables}). 17083 17084@item 17085@value{GDBN} performs argument-dependent lookup, following the C@t{++} 17086specification. 17087@end enumerate 17088 17089@node C Defaults 17090@subsubsection C and C@t{++} Defaults 17091 17092@cindex C and C@t{++} defaults 17093 17094If you allow @value{GDBN} to set range checking automatically, it 17095defaults to @code{off} whenever the working language changes to 17096C or C@t{++}. This happens regardless of whether you or @value{GDBN} 17097selects the working language. 17098 17099If you allow @value{GDBN} to set the language automatically, it 17100recognizes source files whose names end with @file{.c}, @file{.C}, or 17101@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of 17102these files, it sets the working language to C or C@t{++}. 17103@xref{Automatically, ,Having @value{GDBN} Infer the Source Language}, 17104for further details. 17105 17106@node C Checks 17107@subsubsection C and C@t{++} Type and Range Checks 17108 17109@cindex C and C@t{++} checks 17110 17111By default, when @value{GDBN} parses C or C@t{++} expressions, strict type 17112checking is used. However, if you turn type checking off, @value{GDBN} 17113will allow certain non-standard conversions, such as promoting integer 17114constants to pointers. 17115 17116Range checking, if turned on, is done on mathematical operations. Array 17117indices are not checked, since they are often used to index a pointer 17118that is not itself an array. 17119 17120@node Debugging C 17121@subsubsection @value{GDBN} and C 17122 17123The @code{set print union} and @code{show print union} commands apply to 17124the @code{union} type. When set to @samp{on}, any @code{union} that is 17125inside a @code{struct} or @code{class} is also printed. Otherwise, it 17126appears as @samp{@{...@}}. 17127 17128The @code{@@} operator aids in the debugging of dynamic arrays, formed 17129with pointers and a memory allocation function. @xref{Expressions, 17130,Expressions}. 17131 17132@node Debugging C Plus Plus 17133@subsubsection @value{GDBN} Features for C@t{++} 17134 17135@cindex commands for C@t{++} 17136 17137Some @value{GDBN} commands are particularly useful with C@t{++}, and some are 17138designed specifically for use with C@t{++}. Here is a summary: 17139 17140@table @code 17141@cindex break in overloaded functions 17142@item @r{breakpoint menus} 17143When you want a breakpoint in a function whose name is overloaded, 17144@value{GDBN} has the capability to display a menu of possible breakpoint 17145locations to help you specify which function definition you want. 17146@xref{Ambiguous Expressions,,Ambiguous Expressions}. 17147 17148@cindex overloading in C@t{++} 17149@item rbreak @var{regex} 17150Setting breakpoints using regular expressions is helpful for setting 17151breakpoints on overloaded functions that are not members of any special 17152classes. 17153@xref{Set Breaks, ,Setting Breakpoints}. 17154 17155@cindex C@t{++} exception handling 17156@item catch throw 17157@itemx catch rethrow 17158@itemx catch catch 17159Debug C@t{++} exception handling using these commands. @xref{Set 17160Catchpoints, , Setting Catchpoints}. 17161 17162@cindex inheritance 17163@item ptype @var{typename} 17164Print inheritance relationships as well as other information for type 17165@var{typename}. 17166@xref{Symbols, ,Examining the Symbol Table}. 17167 17168@item info vtbl @var{expression}. 17169The @code{info vtbl} command can be used to display the virtual 17170method tables of the object computed by @var{expression}. This shows 17171one entry per virtual table; there may be multiple virtual tables when 17172multiple inheritance is in use. 17173 17174@cindex C@t{++} demangling 17175@item demangle @var{name} 17176Demangle @var{name}. 17177@xref{Symbols}, for a more complete description of the @code{demangle} command. 17178 17179@cindex C@t{++} symbol display 17180@item set print demangle 17181@itemx show print demangle 17182@itemx set print asm-demangle 17183@itemx show print asm-demangle 17184Control whether C@t{++} symbols display in their source form, both when 17185displaying code as C@t{++} source and when displaying disassemblies. 17186@xref{Print Settings, ,Print Settings}. 17187 17188@item set print object 17189@itemx show print object 17190Choose whether to print derived (actual) or declared types of objects. 17191@xref{Print Settings, ,Print Settings}. 17192 17193@item set print vtbl 17194@itemx show print vtbl 17195Control the format for printing virtual function tables. 17196@xref{Print Settings, ,Print Settings}. 17197(The @code{vtbl} commands do not work on programs compiled with the HP 17198ANSI C@t{++} compiler (@code{aCC}).) 17199 17200@kindex set overload-resolution 17201@cindex overloaded functions, overload resolution 17202@item set overload-resolution on 17203Enable overload resolution for C@t{++} expression evaluation. The default 17204is on. For overloaded functions, @value{GDBN} evaluates the arguments 17205and searches for a function whose signature matches the argument types, 17206using the standard C@t{++} conversion rules (see @ref{C Plus Plus 17207Expressions, ,C@t{++} Expressions}, for details). 17208If it cannot find a match, it emits a message. 17209 17210@item set overload-resolution off 17211Disable overload resolution for C@t{++} expression evaluation. For 17212overloaded functions that are not class member functions, @value{GDBN} 17213chooses the first function of the specified name that it finds in the 17214symbol table, whether or not its arguments are of the correct type. For 17215overloaded functions that are class member functions, @value{GDBN} 17216searches for a function whose signature @emph{exactly} matches the 17217argument types. 17218 17219@kindex show overload-resolution 17220@item show overload-resolution 17221Show the current setting of overload resolution. 17222 17223@item @r{Overloaded symbol names} 17224You can specify a particular definition of an overloaded symbol, using 17225the same notation that is used to declare such symbols in C@t{++}: type 17226@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can 17227also use the @value{GDBN} command-line word completion facilities to list the 17228available choices, or to finish the type list for you. 17229@xref{Completion,, Command Completion}, for details on how to do this. 17230 17231@item @r{Breakpoints in template functions} 17232 17233Similar to how overloaded symbols are handled, @value{GDBN} will ignore 17234template parameter lists when it encounters a symbol which includes a 17235C@t{++} template. This permits setting breakpoints on families of template functions 17236or functions whose parameters include template types. 17237 17238The @kbd{-qualified} flag may be used to override this behavior, causing 17239@value{GDBN} to search for a specific function or type. 17240 17241The @value{GDBN} command-line word completion facility also understands 17242template parameters and may be used to list available choices or finish 17243template parameter lists for you. @xref{Completion,, Command Completion}, for 17244details on how to do this. 17245 17246@item @r{Breakpoints in functions with ABI tags} 17247 17248The GNU C@t{++} compiler introduced the notion of ABI ``tags'', which 17249correspond to changes in the ABI of a type, function, or variable that 17250would not otherwise be reflected in a mangled name. See 17251@url{https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/} 17252for more detail. 17253 17254The ABI tags are visible in C@t{++} demangled names. For example, a 17255function that returns a std::string: 17256 17257@smallexample 17258std::string function(int); 17259@end smallexample 17260 17261@noindent 17262when compiled for the C++11 ABI is marked with the @code{cxx11} ABI 17263tag, and @value{GDBN} displays the symbol like this: 17264 17265@smallexample 17266function[abi:cxx11](int) 17267@end smallexample 17268 17269You can set a breakpoint on such functions simply as if they had no 17270tag. For example: 17271 17272@smallexample 17273(gdb) b function(int) 17274Breakpoint 2 at 0x40060d: file main.cc, line 10. 17275(gdb) info breakpoints 17276Num Type Disp Enb Address What 172771 breakpoint keep y 0x0040060d in function[abi:cxx11](int) 17278 at main.cc:10 17279@end smallexample 17280 17281On the rare occasion you need to disambiguate between different ABI 17282tags, you can do so by simply including the ABI tag in the function 17283name, like: 17284 17285@smallexample 17286(@value{GDBP}) b ambiguous[abi:other_tag](int) 17287@end smallexample 17288@end table 17289 17290@node Decimal Floating Point 17291@subsubsection Decimal Floating Point format 17292@cindex decimal floating point format 17293 17294@value{GDBN} can examine, set and perform computations with numbers in 17295decimal floating point format, which in the C language correspond to the 17296@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as 17297specified by the extension to support decimal floating-point arithmetic. 17298 17299There are two encodings in use, depending on the architecture: BID (Binary 17300Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for 17301PowerPC and S/390. @value{GDBN} will use the appropriate encoding for the 17302configured target. 17303 17304Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN} 17305to manipulate decimal floating point numbers, it is not possible to convert 17306(using a cast, for example) integers wider than 32-bit to decimal float. 17307 17308In addition, in order to imitate @value{GDBN}'s behaviour with binary floating 17309point computations, error checking in decimal float operations ignores 17310underflow, overflow and divide by zero exceptions. 17311 17312In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers 17313to inspect @code{_Decimal128} values stored in floating point registers. 17314See @ref{PowerPC,,PowerPC} for more details. 17315 17316@node D 17317@subsection D 17318 17319@cindex D 17320@value{GDBN} can be used to debug programs written in D and compiled with 17321GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D 17322specific feature --- dynamic arrays. 17323 17324@node Go 17325@subsection Go 17326 17327@cindex Go (programming language) 17328@value{GDBN} can be used to debug programs written in Go and compiled with 17329@file{gccgo} or @file{6g} compilers. 17330 17331Here is a summary of the Go-specific features and restrictions: 17332 17333@table @code 17334@cindex current Go package 17335@item The current Go package 17336The name of the current package does not need to be specified when 17337specifying global variables and functions. 17338 17339For example, given the program: 17340 17341@example 17342package main 17343var myglob = "Shall we?" 17344func main () @{ 17345 // ... 17346@} 17347@end example 17348 17349When stopped inside @code{main} either of these work: 17350 17351@example 17352(gdb) p myglob 17353(gdb) p main.myglob 17354@end example 17355 17356@cindex builtin Go types 17357@item Builtin Go types 17358The @code{string} type is recognized by @value{GDBN} and is printed 17359as a string. 17360 17361@cindex builtin Go functions 17362@item Builtin Go functions 17363The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof} 17364function and handles it internally. 17365 17366@cindex restrictions on Go expressions 17367@item Restrictions on Go expressions 17368All Go operators are supported except @code{&^}. 17369The Go @code{_} ``blank identifier'' is not supported. 17370Automatic dereferencing of pointers is not supported. 17371@end table 17372 17373@node Objective-C 17374@subsection Objective-C 17375 17376@cindex Objective-C 17377This section provides information about some commands and command 17378options that are useful for debugging Objective-C code. See also 17379@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a 17380few more commands specific to Objective-C support. 17381 17382@menu 17383* Method Names in Commands:: 17384* The Print Command with Objective-C:: 17385@end menu 17386 17387@node Method Names in Commands 17388@subsubsection Method Names in Commands 17389 17390The following commands have been extended to accept Objective-C method 17391names as line specifications: 17392 17393@kindex clear@r{, and Objective-C} 17394@kindex break@r{, and Objective-C} 17395@kindex info line@r{, and Objective-C} 17396@kindex jump@r{, and Objective-C} 17397@kindex list@r{, and Objective-C} 17398@itemize 17399@item @code{clear} 17400@item @code{break} 17401@item @code{info line} 17402@item @code{jump} 17403@item @code{list} 17404@end itemize 17405 17406A fully qualified Objective-C method name is specified as 17407 17408@smallexample 17409-[@var{Class} @var{methodName}] 17410@end smallexample 17411 17412where the minus sign is used to indicate an instance method and a 17413plus sign (not shown) is used to indicate a class method. The class 17414name @var{Class} and method name @var{methodName} are enclosed in 17415brackets, similar to the way messages are specified in Objective-C 17416source code. For example, to set a breakpoint at the @code{create} 17417instance method of class @code{Fruit} in the program currently being 17418debugged, enter: 17419 17420@smallexample 17421break -[Fruit create] 17422@end smallexample 17423 17424To list ten program lines around the @code{initialize} class method, 17425enter: 17426 17427@smallexample 17428list +[NSText initialize] 17429@end smallexample 17430 17431In the current version of @value{GDBN}, the plus or minus sign is 17432required. In future versions of @value{GDBN}, the plus or minus 17433sign will be optional, but you can use it to narrow the search. It 17434is also possible to specify just a method name: 17435 17436@smallexample 17437break create 17438@end smallexample 17439 17440You must specify the complete method name, including any colons. If 17441your program's source files contain more than one @code{create} method, 17442you'll be presented with a numbered list of classes that implement that 17443method. Indicate your choice by number, or type @samp{0} to exit if 17444none apply. 17445 17446As another example, to clear a breakpoint established at the 17447@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter: 17448 17449@smallexample 17450clear -[NSWindow makeKeyAndOrderFront:] 17451@end smallexample 17452 17453@node The Print Command with Objective-C 17454@subsubsection The Print Command With Objective-C 17455@cindex Objective-C, print objects 17456@kindex print-object 17457@kindex po @r{(@code{print-object})} 17458 17459The print command has also been extended to accept methods. For example: 17460 17461@smallexample 17462print -[@var{object} hash] 17463@end smallexample 17464 17465@cindex print an Objective-C object description 17466@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects 17467@noindent 17468will tell @value{GDBN} to send the @code{hash} message to @var{object} 17469and print the result. Also, an additional command has been added, 17470@code{print-object} or @code{po} for short, which is meant to print 17471the description of an object. However, this command may only work 17472with certain Objective-C libraries that have a particular hook 17473function, @code{_NSPrintForDebugger}, defined. 17474 17475@node OpenCL C 17476@subsection OpenCL C 17477 17478@cindex OpenCL C 17479This section provides information about @value{GDBN}s OpenCL C support. 17480 17481@menu 17482* OpenCL C Datatypes:: 17483* OpenCL C Expressions:: 17484* OpenCL C Operators:: 17485@end menu 17486 17487@node OpenCL C Datatypes 17488@subsubsection OpenCL C Datatypes 17489 17490@cindex OpenCL C Datatypes 17491@value{GDBN} supports the builtin scalar and vector datatypes specified 17492by OpenCL 1.1. In addition the half- and double-precision floating point 17493data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL 17494extensions are also known to @value{GDBN}. 17495 17496@node OpenCL C Expressions 17497@subsubsection OpenCL C Expressions 17498 17499@cindex OpenCL C Expressions 17500@value{GDBN} supports accesses to vector components including the access as 17501lvalue where possible. Since OpenCL C is based on C99 most C expressions 17502supported by @value{GDBN} can be used as well. 17503 17504@node OpenCL C Operators 17505@subsubsection OpenCL C Operators 17506 17507@cindex OpenCL C Operators 17508@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and 17509vector data types. 17510 17511@node Fortran 17512@subsection Fortran 17513@cindex Fortran-specific support in @value{GDBN} 17514 17515@value{GDBN} can be used to debug programs written in Fortran. Note, that not 17516all Fortran language features are available yet. 17517 17518@cindex trailing underscore, in Fortran symbols 17519Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers 17520among them) append an underscore to the names of variables and 17521functions. When you debug programs compiled by those compilers, you 17522will need to refer to variables and functions with a trailing 17523underscore. 17524 17525@cindex Fortran Defaults 17526Fortran symbols are usually case-insensitive, so @value{GDBN} by 17527default uses case-insensitive matching for Fortran symbols. You can 17528change that with the @samp{set case-insensitive} command, see 17529@ref{Symbols}, for the details. 17530 17531@menu 17532* Fortran Types:: Fortran builtin types 17533* Fortran Operators:: Fortran operators and expressions 17534* Fortran Intrinsics:: Fortran intrinsic functions 17535* Special Fortran Commands:: Special @value{GDBN} commands for Fortran 17536@end menu 17537 17538@node Fortran Types 17539@subsubsection Fortran Types 17540 17541@cindex Fortran Types 17542 17543In Fortran the primitive data-types have an associated @code{KIND} type 17544parameter, written as @samp{@var{type}*@var{kindparam}}, 17545@samp{@var{type}*@var{kindparam}}, or in the @value{GDBN}-only dialect 17546@samp{@var{type}_@var{kindparam}}. A concrete example would be 17547@samp{@code{Real*4}}, @samp{@code{Real(kind=4)}}, and @samp{@code{Real_4}}. 17548The kind of a type can be retrieved by using the intrinsic function 17549@code{KIND}, see @ref{Fortran Intrinsics}. 17550 17551Generally, the actual implementation of the @code{KIND} type parameter is 17552compiler specific. In @value{GDBN} the kind parameter is implemented in 17553accordance with its use in the @sc{gnu} @command{gfortran} compiler. Here, the 17554kind parameter for a given @var{type} specifies its size in memory --- a 17555Fortran @code{Integer*4} or @code{Integer(kind=4)} would be an integer type 17556occupying 4 bytes of memory. An exception to this rule is the @code{Complex} 17557type for which the kind of the type does not specify its entire size, but 17558the size of each of the two @code{Real}'s it is composed of. A 17559@code{Complex*4} would thus consist of two @code{Real*4}s and occupy 8 bytes 17560of memory. 17561 17562For every type there is also a default kind associated with it, e.g.@ 17563@code{Integer} in @value{GDBN} will internally be an @code{Integer*4} (see the 17564table below for default types). The default types are the same as in @sc{gnu} 17565compilers but note, that the @sc{gnu} default types can actually be changed by 17566compiler flags such as @option{-fdefault-integer-8} and 17567@option{-fdefault-real-8}. 17568 17569Not every kind parameter is valid for every type and in @value{GDBN} the 17570following type kinds are available. 17571 17572@table @code 17573@item Integer 17574@code{Integer*1}, @code{Integer*2}, @code{Integer*4}, @code{Integer*8}, and 17575@code{Integer} = @code{Integer*4}. 17576 17577@item Logical 17578@code{Logical*1}, @code{Logical*2}, @code{Logical*4}, @code{Logical*8}, and 17579@code{Logical} = @code{Logical*4}. 17580 17581@item Real 17582@code{Real*4}, @code{Real*8}, @code{Real*16}, and @code{Real} = @code{Real*4}. 17583 17584@item Complex 17585@code{Complex*4}, @code{Complex*8}, @code{Complex*16}, and @code{Complex} = 17586@code{Complex*4}. 17587 17588@end table 17589 17590@node Fortran Operators 17591@subsubsection Fortran Operators and Expressions 17592 17593@cindex Fortran operators and expressions 17594 17595Operators must be defined on values of specific types. For instance, 17596@code{+} is defined on numbers, but not on characters or other non- 17597arithmetic types. Operators are often defined on groups of types. 17598 17599@table @code 17600@item ** 17601The exponentiation operator. It raises the first operand to the power 17602of the second one. 17603 17604@item : 17605The range operator. Normally used in the form of array(low:high) to 17606represent a section of array. 17607 17608@item % 17609The access component operator. Normally used to access elements in derived 17610types. Also suitable for unions. As unions aren't part of regular Fortran, 17611this can only happen when accessing a register that uses a gdbarch-defined 17612union type. 17613@item :: 17614The scope operator. Normally used to access variables in modules or 17615to set breakpoints on subroutines nested in modules or in other 17616subroutines (internal subroutines). 17617@end table 17618 17619@node Fortran Intrinsics 17620@subsubsection Fortran Intrinsics 17621 17622@cindex Fortran Intrinsics 17623 17624Fortran provides a large set of intrinsic procedures. @value{GDBN} implements 17625an incomplete subset of those procedures and their overloads. Some of these 17626procedures take an optional @code{KIND} parameter, see @ref{Fortran Types}. 17627 17628@table @code 17629@item ABS(@var{a}) 17630Computes the absolute value of its argument @var{a}. Currently not supported 17631for @code{Complex} arguments. 17632 17633@item ALLOCATE(@var{array}) 17634Returns whether @var{array} is allocated or not. 17635 17636@item ASSOCIATED(@var{pointer} [, @var{target}]) 17637Returns the association status of the pointer @var{pointer} or, if @var{target} 17638is present, whether @var{pointer} is associated with the target @var{target}. 17639 17640@item CEILING(@var{a} [, @var{kind}]) 17641Computes the least integer greater than or equal to @var{a}. The optional 17642parameter @var{kind} specifies the kind of the return type 17643@code{Integer(@var{kind})}. 17644 17645@item CMPLX(@var{x} [, @var{y} [, @var{kind}]]) 17646Returns a complex number where @var{x} is converted to the real component. If 17647@var{y} is present it is converted to the imaginary component. If @var{y} is 17648not present then the imaginary component is set to @code{0.0} except if @var{x} 17649itself is of @code{Complex} type. The optional parameter @var{kind} specifies 17650the kind of the return type @code{Complex(@var{kind})}. 17651 17652@item FLOOR(@var{a} [, @var{kind}]) 17653Computes the greatest integer less than or equal to @var{a}. The optional 17654parameter @var{kind} specifies the kind of the return type 17655@code{Integer(@var{kind})}. 17656 17657@item KIND(@var{a}) 17658Returns the kind value of the argument @var{a}, see @ref{Fortran Types}. 17659 17660@item LBOUND(@var{array} [, @var{dim} [, @var{kind}]]) 17661Returns the lower bounds of an @var{array}, or a single lower bound along the 17662@var{dim} dimension if present. The optional parameter @var{kind} specifies 17663the kind of the return type @code{Integer(@var{kind})}. 17664 17665@item LOC(@var{x}) 17666Returns the address of @var{x} as an @code{Integer}. 17667 17668@item MOD(@var{a}, @var{p}) 17669Computes the remainder of the division of @var{a} by @var{p}. 17670 17671@item MODULO(@var{a}, @var{p}) 17672Computes the @var{a} modulo @var{p}. 17673 17674@item RANK(@var{a}) 17675Returns the rank of a scalar or array (scalars have rank @code{0}). 17676 17677@item SHAPE(@var{a}) 17678Returns the shape of a scalar or array (scalars have shape @samp{()}). 17679 17680@item SIZE(@var{array}[, @var{dim} [, @var{kind}]]) 17681Returns the extent of @var{array} along a specified dimension @var{dim}, or the 17682total number of elements in @var{array} if @var{dim} is absent. The optional 17683parameter @var{kind} specifies the kind of the return type 17684@code{Integer(@var{kind})}. 17685 17686@item UBOUND(@var{array} [, @var{dim} [, @var{kind}]]) 17687Returns the upper bounds of an @var{array}, or a single upper bound along the 17688@var{dim} dimension if present. The optional parameter @var{kind} specifies 17689the kind of the return type @code{Integer(@var{kind})}. 17690 17691@end table 17692 17693@node Special Fortran Commands 17694@subsubsection Special Fortran Commands 17695 17696@cindex Special Fortran commands 17697 17698@value{GDBN} has some commands to support Fortran-specific features, 17699such as displaying common blocks. 17700 17701@table @code 17702@cindex @code{COMMON} blocks, Fortran 17703@kindex info common 17704@item info common @r{[}@var{common-name}@r{]} 17705This command prints the values contained in the Fortran @code{COMMON} 17706block whose name is @var{common-name}. With no argument, the names of 17707all @code{COMMON} blocks visible at the current program location are 17708printed. 17709@cindex arrays slices (Fortran) 17710@kindex set fortran repack-array-slices 17711@kindex show fortran repack-array-slices 17712@item set fortran repack-array-slices [on|off] 17713@item show fortran repack-array-slices 17714When taking a slice from an array, a Fortran compiler can choose to 17715either produce an array descriptor that describes the slice in place, 17716or it may repack the slice, copying the elements of the slice into a 17717new region of memory. 17718 17719When this setting is on, then @value{GDBN} will also repack array 17720slices in some situations. When this setting is off, then 17721@value{GDBN} will create array descriptors for slices that reference 17722the original data in place. 17723 17724@value{GDBN} will never repack an array slice if the data for the 17725slice is contiguous within the original array. 17726 17727@value{GDBN} will always repack string slices if the data for the 17728slice is non-contiguous within the original string as @value{GDBN} 17729does not support printing non-contiguous strings. 17730 17731The default for this setting is @code{off}. 17732@end table 17733 17734@node Pascal 17735@subsection Pascal 17736 17737@cindex Pascal support in @value{GDBN}, limitations 17738Debugging Pascal programs which use sets, subranges, file variables, or 17739nested functions does not currently work. @value{GDBN} does not support 17740entering expressions, printing values, or similar features using Pascal 17741syntax. 17742 17743The Pascal-specific command @code{set print pascal_static-members} 17744controls whether static members of Pascal objects are displayed. 17745@xref{Print Settings, pascal_static-members}. 17746 17747@node Rust 17748@subsection Rust 17749 17750@value{GDBN} supports the @url{https://www.rust-lang.org/, Rust 17751Programming Language}. Type- and value-printing, and expression 17752parsing, are reasonably complete. However, there are a few 17753peculiarities and holes to be aware of. 17754 17755@itemize @bullet 17756@item 17757Linespecs (@pxref{Location Specifications}) are never relative to the 17758current crate. Instead, they act as if there were a global namespace 17759of crates, somewhat similar to the way @code{extern crate} behaves. 17760 17761That is, if @value{GDBN} is stopped at a breakpoint in a function in 17762crate @samp{A}, module @samp{B}, then @code{break B::f} will attempt 17763to set a breakpoint in a function named @samp{f} in a crate named 17764@samp{B}. 17765 17766As a consequence of this approach, linespecs also cannot refer to 17767items using @samp{self::} or @samp{super::}. 17768 17769@item 17770Because @value{GDBN} implements Rust name-lookup semantics in 17771expressions, it will sometimes prepend the current crate to a name. 17772For example, if @value{GDBN} is stopped at a breakpoint in the crate 17773@samp{K}, then @code{print ::x::y} will try to find the symbol 17774@samp{K::x::y}. 17775 17776However, since it is useful to be able to refer to other crates when 17777debugging, @value{GDBN} provides the @code{extern} extension to 17778circumvent this. To use the extension, just put @code{extern} before 17779a path expression to refer to the otherwise unavailable ``global'' 17780scope. 17781 17782In the above example, if you wanted to refer to the symbol @samp{y} in 17783the crate @samp{x}, you would use @code{print extern x::y}. 17784 17785@item 17786The Rust expression evaluator does not support ``statement-like'' 17787expressions such as @code{if} or @code{match}, or lambda expressions. 17788 17789@item 17790Tuple expressions are not implemented. 17791 17792@item 17793The Rust expression evaluator does not currently implement the 17794@code{Drop} trait. Objects that may be created by the evaluator will 17795never be destroyed. 17796 17797@item 17798@value{GDBN} does not implement type inference for generics. In order 17799to call generic functions or otherwise refer to generic items, you 17800will have to specify the type parameters manually. 17801 17802@item 17803@value{GDBN} currently uses the C@t{++} demangler for Rust. In most 17804cases this does not cause any problems. However, in an expression 17805context, completing a generic function name will give syntactically 17806invalid results. This happens because Rust requires the @samp{::} 17807operator between the function name and its generic arguments. For 17808example, @value{GDBN} might provide a completion like 17809@code{crate::f<u32>}, where the parser would require 17810@code{crate::f::<u32>}. 17811 17812@item 17813As of this writing, the Rust compiler (version 1.8) has a few holes in 17814the debugging information it generates. These holes prevent certain 17815features from being implemented by @value{GDBN}: 17816@itemize @bullet 17817 17818@item 17819Method calls cannot be made via traits. 17820 17821@item 17822Operator overloading is not implemented. 17823 17824@item 17825When debugging in a monomorphized function, you cannot use the generic 17826type names. 17827 17828@item 17829The type @code{Self} is not available. 17830 17831@item 17832@code{use} statements are not available, so some names may not be 17833available in the crate. 17834@end itemize 17835@end itemize 17836 17837@node Modula-2 17838@subsection Modula-2 17839 17840@cindex Modula-2, @value{GDBN} support 17841 17842The extensions made to @value{GDBN} to support Modula-2 only support 17843output from the @sc{gnu} Modula-2 compiler (which is currently being 17844developed). Other Modula-2 compilers are not currently supported, and 17845attempting to debug executables produced by them is most likely 17846to give an error as @value{GDBN} reads in the executable's symbol 17847table. 17848 17849@cindex expressions in Modula-2 17850@menu 17851* M2 Operators:: Built-in operators 17852* Built-In Func/Proc:: Built-in functions and procedures 17853* M2 Constants:: Modula-2 constants 17854* M2 Types:: Modula-2 types 17855* M2 Defaults:: Default settings for Modula-2 17856* Deviations:: Deviations from standard Modula-2 17857* M2 Checks:: Modula-2 type and range checks 17858* M2 Scope:: The scope operators @code{::} and @code{.} 17859* GDB/M2:: @value{GDBN} and Modula-2 17860@end menu 17861 17862@node M2 Operators 17863@subsubsection Operators 17864@cindex Modula-2 operators 17865 17866Operators must be defined on values of specific types. For instance, 17867@code{+} is defined on numbers, but not on structures. Operators are 17868often defined on groups of types. For the purposes of Modula-2, the 17869following definitions hold: 17870 17871@itemize @bullet 17872 17873@item 17874@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and 17875their subranges. 17876 17877@item 17878@emph{Character types} consist of @code{CHAR} and its subranges. 17879 17880@item 17881@emph{Floating-point types} consist of @code{REAL}. 17882 17883@item 17884@emph{Pointer types} consist of anything declared as @code{POINTER TO 17885@var{type}}. 17886 17887@item 17888@emph{Scalar types} consist of all of the above. 17889 17890@item 17891@emph{Set types} consist of @code{SET} and @code{BITSET} types. 17892 17893@item 17894@emph{Boolean types} consist of @code{BOOLEAN}. 17895@end itemize 17896 17897@noindent 17898The following operators are supported, and appear in order of 17899increasing precedence: 17900 17901@table @code 17902@item , 17903Function argument or array index separator. 17904 17905@item := 17906Assignment. The value of @var{var} @code{:=} @var{value} is 17907@var{value}. 17908 17909@item <@r{, }> 17910Less than, greater than on integral, floating-point, or enumerated 17911types. 17912 17913@item <=@r{, }>= 17914Less than or equal to, greater than or equal to 17915on integral, floating-point and enumerated types, or set inclusion on 17916set types. Same precedence as @code{<}. 17917 17918@item =@r{, }<>@r{, }# 17919Equality and two ways of expressing inequality, valid on scalar types. 17920Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is 17921available for inequality, since @code{#} conflicts with the script 17922comment character. 17923 17924@item IN 17925Set membership. Defined on set types and the types of their members. 17926Same precedence as @code{<}. 17927 17928@item OR 17929Boolean disjunction. Defined on boolean types. 17930 17931@item AND@r{, }& 17932Boolean conjunction. Defined on boolean types. 17933 17934@item @@ 17935The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}). 17936 17937@item +@r{, }- 17938Addition and subtraction on integral and floating-point types, or union 17939and difference on set types. 17940 17941@item * 17942Multiplication on integral and floating-point types, or set intersection 17943on set types. 17944 17945@item / 17946Division on floating-point types, or symmetric set difference on set 17947types. Same precedence as @code{*}. 17948 17949@item DIV@r{, }MOD 17950Integer division and remainder. Defined on integral types. Same 17951precedence as @code{*}. 17952 17953@item - 17954Negative. Defined on @code{INTEGER} and @code{REAL} data. 17955 17956@item ^ 17957Pointer dereferencing. Defined on pointer types. 17958 17959@item NOT 17960Boolean negation. Defined on boolean types. Same precedence as 17961@code{^}. 17962 17963@item . 17964@code{RECORD} field selector. Defined on @code{RECORD} data. Same 17965precedence as @code{^}. 17966 17967@item [] 17968Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}. 17969 17970@item () 17971Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence 17972as @code{^}. 17973 17974@item ::@r{, }. 17975@value{GDBN} and Modula-2 scope operators. 17976@end table 17977 17978@quotation 17979@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN} 17980treats the use of the operator @code{IN}, or the use of operators 17981@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#}, 17982@code{<=}, and @code{>=} on sets as an error. 17983@end quotation 17984 17985 17986@node Built-In Func/Proc 17987@subsubsection Built-in Functions and Procedures 17988@cindex Modula-2 built-ins 17989 17990Modula-2 also makes available several built-in procedures and functions. 17991In describing these, the following metavariables are used: 17992 17993@table @var 17994 17995@item a 17996represents an @code{ARRAY} variable. 17997 17998@item c 17999represents a @code{CHAR} constant or variable. 18000 18001@item i 18002represents a variable or constant of integral type. 18003 18004@item m 18005represents an identifier that belongs to a set. Generally used in the 18006same function with the metavariable @var{s}. The type of @var{s} should 18007be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}). 18008 18009@item n 18010represents a variable or constant of integral or floating-point type. 18011 18012@item r 18013represents a variable or constant of floating-point type. 18014 18015@item t 18016represents a type. 18017 18018@item v 18019represents a variable. 18020 18021@item x 18022represents a variable or constant of one of many types. See the 18023explanation of the function for details. 18024@end table 18025 18026All Modula-2 built-in procedures also return a result, described below. 18027 18028@table @code 18029@item ABS(@var{n}) 18030Returns the absolute value of @var{n}. 18031 18032@item CAP(@var{c}) 18033If @var{c} is a lower case letter, it returns its upper case 18034equivalent, otherwise it returns its argument. 18035 18036@item CHR(@var{i}) 18037Returns the character whose ordinal value is @var{i}. 18038 18039@item DEC(@var{v}) 18040Decrements the value in the variable @var{v} by one. Returns the new value. 18041 18042@item DEC(@var{v},@var{i}) 18043Decrements the value in the variable @var{v} by @var{i}. Returns the 18044new value. 18045 18046@item EXCL(@var{m},@var{s}) 18047Removes the element @var{m} from the set @var{s}. Returns the new 18048set. 18049 18050@item FLOAT(@var{i}) 18051Returns the floating point equivalent of the integer @var{i}. 18052 18053@item HIGH(@var{a}) 18054Returns the index of the last member of @var{a}. 18055 18056@item INC(@var{v}) 18057Increments the value in the variable @var{v} by one. Returns the new value. 18058 18059@item INC(@var{v},@var{i}) 18060Increments the value in the variable @var{v} by @var{i}. Returns the 18061new value. 18062 18063@item INCL(@var{m},@var{s}) 18064Adds the element @var{m} to the set @var{s} if it is not already 18065there. Returns the new set. 18066 18067@item MAX(@var{t}) 18068Returns the maximum value of the type @var{t}. 18069 18070@item MIN(@var{t}) 18071Returns the minimum value of the type @var{t}. 18072 18073@item ODD(@var{i}) 18074Returns boolean TRUE if @var{i} is an odd number. 18075 18076@item ORD(@var{x}) 18077Returns the ordinal value of its argument. For example, the ordinal 18078value of a character is its @sc{ascii} value (on machines supporting 18079the @sc{ascii} character set). The argument @var{x} must be of an 18080ordered type, which include integral, character and enumerated types. 18081 18082@item SIZE(@var{x}) 18083Returns the size of its argument. The argument @var{x} can be a 18084variable or a type. 18085 18086@item TRUNC(@var{r}) 18087Returns the integral part of @var{r}. 18088 18089@item TSIZE(@var{x}) 18090Returns the size of its argument. The argument @var{x} can be a 18091variable or a type. 18092 18093@item VAL(@var{t},@var{i}) 18094Returns the member of the type @var{t} whose ordinal value is @var{i}. 18095@end table 18096 18097@quotation 18098@emph{Warning:} Sets and their operations are not yet supported, so 18099@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as 18100an error. 18101@end quotation 18102 18103@cindex Modula-2 constants 18104@node M2 Constants 18105@subsubsection Constants 18106 18107@value{GDBN} allows you to express the constants of Modula-2 in the following 18108ways: 18109 18110@itemize @bullet 18111 18112@item 18113Integer constants are simply a sequence of digits. When used in an 18114expression, a constant is interpreted to be type-compatible with the 18115rest of the expression. Hexadecimal integers are specified by a 18116trailing @samp{H}, and octal integers by a trailing @samp{B}. 18117 18118@item 18119Floating point constants appear as a sequence of digits, followed by a 18120decimal point and another sequence of digits. An optional exponent can 18121then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where 18122@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the 18123digits of the floating point constant must be valid decimal (base 10) 18124digits. 18125 18126@item 18127Character constants consist of a single character enclosed by a pair of 18128like quotes, either single (@code{'}) or double (@code{"}). They may 18129also be expressed by their ordinal value (their @sc{ascii} value, usually) 18130followed by a @samp{C}. 18131 18132@item 18133String constants consist of a sequence of characters enclosed by a 18134pair of like quotes, either single (@code{'}) or double (@code{"}). 18135Escape sequences in the style of C are also allowed. @xref{C 18136Constants, ,C and C@t{++} Constants}, for a brief explanation of escape 18137sequences. 18138 18139@item 18140Enumerated constants consist of an enumerated identifier. 18141 18142@item 18143Boolean constants consist of the identifiers @code{TRUE} and 18144@code{FALSE}. 18145 18146@item 18147Pointer constants consist of integral values only. 18148 18149@item 18150Set constants are not yet supported. 18151@end itemize 18152 18153@node M2 Types 18154@subsubsection Modula-2 Types 18155@cindex Modula-2 types 18156 18157Currently @value{GDBN} can print the following data types in Modula-2 18158syntax: array types, record types, set types, pointer types, procedure 18159types, enumerated types, subrange types and base types. You can also 18160print the contents of variables declared using these type. 18161This section gives a number of simple source code examples together with 18162sample @value{GDBN} sessions. 18163 18164The first example contains the following section of code: 18165 18166@smallexample 18167VAR 18168 s: SET OF CHAR ; 18169 r: [20..40] ; 18170@end smallexample 18171 18172@noindent 18173and you can request @value{GDBN} to interrogate the type and value of 18174@code{r} and @code{s}. 18175 18176@smallexample 18177(@value{GDBP}) print s 18178@{'A'..'C', 'Z'@} 18179(@value{GDBP}) ptype s 18180SET OF CHAR 18181(@value{GDBP}) print r 1818221 18183(@value{GDBP}) ptype r 18184[20..40] 18185@end smallexample 18186 18187@noindent 18188Likewise if your source code declares @code{s} as: 18189 18190@smallexample 18191VAR 18192 s: SET ['A'..'Z'] ; 18193@end smallexample 18194 18195@noindent 18196then you may query the type of @code{s} by: 18197 18198@smallexample 18199(@value{GDBP}) ptype s 18200type = SET ['A'..'Z'] 18201@end smallexample 18202 18203@noindent 18204Note that at present you cannot interactively manipulate set 18205expressions using the debugger. 18206 18207The following example shows how you might declare an array in Modula-2 18208and how you can interact with @value{GDBN} to print its type and contents: 18209 18210@smallexample 18211VAR 18212 s: ARRAY [-10..10] OF CHAR ; 18213@end smallexample 18214 18215@smallexample 18216(@value{GDBP}) ptype s 18217ARRAY [-10..10] OF CHAR 18218@end smallexample 18219 18220Note that the array handling is not yet complete and although the type 18221is printed correctly, expression handling still assumes that all 18222arrays have a lower bound of zero and not @code{-10} as in the example 18223above. 18224 18225Here are some more type related Modula-2 examples: 18226 18227@smallexample 18228TYPE 18229 colour = (blue, red, yellow, green) ; 18230 t = [blue..yellow] ; 18231VAR 18232 s: t ; 18233BEGIN 18234 s := blue ; 18235@end smallexample 18236 18237@noindent 18238The @value{GDBN} interaction shows how you can query the data type 18239and value of a variable. 18240 18241@smallexample 18242(@value{GDBP}) print s 18243$1 = blue 18244(@value{GDBP}) ptype t 18245type = [blue..yellow] 18246@end smallexample 18247 18248@noindent 18249In this example a Modula-2 array is declared and its contents 18250displayed. Observe that the contents are written in the same way as 18251their @code{C} counterparts. 18252 18253@smallexample 18254VAR 18255 s: ARRAY [1..5] OF CARDINAL ; 18256BEGIN 18257 s[1] := 1 ; 18258@end smallexample 18259 18260@smallexample 18261(@value{GDBP}) print s 18262$1 = @{1, 0, 0, 0, 0@} 18263(@value{GDBP}) ptype s 18264type = ARRAY [1..5] OF CARDINAL 18265@end smallexample 18266 18267The Modula-2 language interface to @value{GDBN} also understands 18268pointer types as shown in this example: 18269 18270@smallexample 18271VAR 18272 s: POINTER TO ARRAY [1..5] OF CARDINAL ; 18273BEGIN 18274 NEW(s) ; 18275 s^[1] := 1 ; 18276@end smallexample 18277 18278@noindent 18279and you can request that @value{GDBN} describes the type of @code{s}. 18280 18281@smallexample 18282(@value{GDBP}) ptype s 18283type = POINTER TO ARRAY [1..5] OF CARDINAL 18284@end smallexample 18285 18286@value{GDBN} handles compound types as we can see in this example. 18287Here we combine array types, record types, pointer types and subrange 18288types: 18289 18290@smallexample 18291TYPE 18292 foo = RECORD 18293 f1: CARDINAL ; 18294 f2: CHAR ; 18295 f3: myarray ; 18296 END ; 18297 18298 myarray = ARRAY myrange OF CARDINAL ; 18299 myrange = [-2..2] ; 18300VAR 18301 s: POINTER TO ARRAY myrange OF foo ; 18302@end smallexample 18303 18304@noindent 18305and you can ask @value{GDBN} to describe the type of @code{s} as shown 18306below. 18307 18308@smallexample 18309(@value{GDBP}) ptype s 18310type = POINTER TO ARRAY [-2..2] OF foo = RECORD 18311 f1 : CARDINAL; 18312 f2 : CHAR; 18313 f3 : ARRAY [-2..2] OF CARDINAL; 18314END 18315@end smallexample 18316 18317@node M2 Defaults 18318@subsubsection Modula-2 Defaults 18319@cindex Modula-2 defaults 18320 18321If type and range checking are set automatically by @value{GDBN}, they 18322both default to @code{on} whenever the working language changes to 18323Modula-2. This happens regardless of whether you or @value{GDBN} 18324selected the working language. 18325 18326If you allow @value{GDBN} to set the language automatically, then entering 18327code compiled from a file whose name ends with @file{.mod} sets the 18328working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} 18329Infer the Source Language}, for further details. 18330 18331@node Deviations 18332@subsubsection Deviations from Standard Modula-2 18333@cindex Modula-2, deviations from 18334 18335A few changes have been made to make Modula-2 programs easier to debug. 18336This is done primarily via loosening its type strictness: 18337 18338@itemize @bullet 18339@item 18340Unlike in standard Modula-2, pointer constants can be formed by 18341integers. This allows you to modify pointer variables during 18342debugging. (In standard Modula-2, the actual address contained in a 18343pointer variable is hidden from you; it can only be modified 18344through direct assignment to another pointer variable or expression that 18345returned a pointer.) 18346 18347@item 18348C escape sequences can be used in strings and characters to represent 18349non-printable characters. @value{GDBN} prints out strings with these 18350escape sequences embedded. Single non-printable characters are 18351printed using the @samp{CHR(@var{nnn})} format. 18352 18353@item 18354The assignment operator (@code{:=}) returns the value of its right-hand 18355argument. 18356 18357@item 18358All built-in procedures both modify @emph{and} return their argument. 18359@end itemize 18360 18361@node M2 Checks 18362@subsubsection Modula-2 Type and Range Checks 18363@cindex Modula-2 checks 18364 18365@quotation 18366@emph{Warning:} in this release, @value{GDBN} does not yet perform type or 18367range checking. 18368@end quotation 18369@c FIXME remove warning when type/range checks added 18370 18371@value{GDBN} considers two Modula-2 variables type equivalent if: 18372 18373@itemize @bullet 18374@item 18375They are of types that have been declared equivalent via a @code{TYPE 18376@var{t1} = @var{t2}} statement 18377 18378@item 18379They have been declared on the same line. (Note: This is true of the 18380@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.) 18381@end itemize 18382 18383As long as type checking is enabled, any attempt to combine variables 18384whose types are not equivalent is an error. 18385 18386Range checking is done on all mathematical operations, assignment, array 18387index bounds, and all built-in functions and procedures. 18388 18389@node M2 Scope 18390@subsubsection The Scope Operators @code{::} and @code{.} 18391@cindex scope 18392@cindex @code{.}, Modula-2 scope operator 18393@cindex colon, doubled as scope operator 18394@ifinfo 18395@vindex colon-colon@r{, in Modula-2} 18396@c Info cannot handle :: but TeX can. 18397@end ifinfo 18398@ifnotinfo 18399@vindex ::@r{, in Modula-2} 18400@end ifnotinfo 18401 18402There are a few subtle differences between the Modula-2 scope operator 18403(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have 18404similar syntax: 18405 18406@smallexample 18407 18408@var{module} . @var{id} 18409@var{scope} :: @var{id} 18410@end smallexample 18411 18412@noindent 18413where @var{scope} is the name of a module or a procedure, 18414@var{module} the name of a module, and @var{id} is any declared 18415identifier within your program, except another module. 18416 18417Using the @code{::} operator makes @value{GDBN} search the scope 18418specified by @var{scope} for the identifier @var{id}. If it is not 18419found in the specified scope, then @value{GDBN} searches all scopes 18420enclosing the one specified by @var{scope}. 18421 18422Using the @code{.} operator makes @value{GDBN} search the current scope for 18423the identifier specified by @var{id} that was imported from the 18424definition module specified by @var{module}. With this operator, it is 18425an error if the identifier @var{id} was not imported from definition 18426module @var{module}, or if @var{id} is not an identifier in 18427@var{module}. 18428 18429@node GDB/M2 18430@subsubsection @value{GDBN} and Modula-2 18431 18432Some @value{GDBN} commands have little use when debugging Modula-2 programs. 18433Five subcommands of @code{set print} and @code{show print} apply 18434specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle}, 18435@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four 18436apply to C@t{++}, and the last to the C @code{union} type, which has no direct 18437analogue in Modula-2. 18438 18439The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available 18440with any language, is not useful with Modula-2. Its 18441intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be 18442created in Modula-2 as they can in C or C@t{++}. However, because an 18443address can be specified by an integral constant, the construct 18444@samp{@{@var{type}@}@var{adrexp}} is still useful. 18445 18446@cindex @code{#} in Modula-2 18447In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is 18448interpreted as the beginning of a comment. Use @code{<>} instead. 18449 18450@node Ada 18451@subsection Ada 18452@cindex Ada 18453 18454The extensions made to @value{GDBN} for Ada only support 18455output from the @sc{gnu} Ada (GNAT) compiler. 18456Other Ada compilers are not currently supported, and 18457attempting to debug executables produced by them is most likely 18458to be difficult. 18459 18460 18461@cindex expressions in Ada 18462@menu 18463* Ada Mode Intro:: General remarks on the Ada syntax 18464 and semantics supported by Ada mode 18465 in @value{GDBN}. 18466* Omissions from Ada:: Restrictions on the Ada expression syntax. 18467* Additions to Ada:: Extensions of the Ada expression syntax. 18468* Overloading support for Ada:: Support for expressions involving overloaded 18469 subprograms. 18470* Stopping Before Main Program:: Debugging the program during elaboration. 18471* Ada Exceptions:: Ada Exceptions 18472* Ada Tasks:: Listing and setting breakpoints in tasks. 18473* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files 18474* Ravenscar Profile:: Tasking Support when using the Ravenscar 18475 Profile 18476* Ada Source Character Set:: Character set of Ada source files. 18477* Ada Glitches:: Known peculiarities of Ada mode. 18478@end menu 18479 18480@node Ada Mode Intro 18481@subsubsection Introduction 18482@cindex Ada mode, general 18483 18484The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression 18485syntax, with some extensions. 18486The philosophy behind the design of this subset is 18487 18488@itemize @bullet 18489@item 18490That @value{GDBN} should provide basic literals and access to operations for 18491arithmetic, dereferencing, field selection, indexing, and subprogram calls, 18492leaving more sophisticated computations to subprograms written into the 18493program (which therefore may be called from @value{GDBN}). 18494 18495@item 18496That type safety and strict adherence to Ada language restrictions 18497are not particularly important to the @value{GDBN} user. 18498 18499@item 18500That brevity is important to the @value{GDBN} user. 18501@end itemize 18502 18503Thus, for brevity, the debugger acts as if all names declared in 18504user-written packages are directly visible, even if they are not visible 18505according to Ada rules, thus making it unnecessary to fully qualify most 18506names with their packages, regardless of context. Where this causes 18507ambiguity, @value{GDBN} asks the user's intent. 18508 18509The debugger will start in Ada mode if it detects an Ada main program. 18510As for other languages, it will enter Ada mode when stopped in a program that 18511was translated from an Ada source file. 18512 18513While in Ada mode, you may use `@t{--}' for comments. This is useful 18514mostly for documenting command files. The standard @value{GDBN} comment 18515(@samp{#}) still works at the beginning of a line in Ada mode, but not in the 18516middle (to allow based literals). 18517 18518@node Omissions from Ada 18519@subsubsection Omissions from Ada 18520@cindex Ada, omissions from 18521 18522Here are the notable omissions from the subset: 18523 18524@itemize @bullet 18525@item 18526Only a subset of the attributes are supported: 18527 18528@itemize @minus 18529@item 18530@t{'First}, @t{'Last}, and @t{'Length} 18531 on array objects (not on types and subtypes). 18532 18533@item 18534@t{'Min} and @t{'Max}. 18535 18536@item 18537@t{'Pos} and @t{'Val}. 18538 18539@item 18540@t{'Tag}. 18541 18542@item 18543@t{'Range} on array objects (not subtypes), but only as the right 18544operand of the membership (@code{in}) operator. 18545 18546@item 18547@t{'Access}, @t{'Unchecked_Access}, and 18548@t{'Unrestricted_Access} (a GNAT extension). 18549 18550@item 18551@t{'Address}. 18552@end itemize 18553 18554@item 18555The names in @code{Characters.Latin_1} are not available. 18556 18557@item 18558Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise 18559equality of representations. They will generally work correctly 18560for strings and arrays whose elements have integer or enumeration types. 18561They may not work correctly for arrays whose element 18562types have user-defined equality, for arrays of real values 18563(in particular, IEEE-conformant floating point, because of negative 18564zeroes and NaNs), and for arrays whose elements contain unused bits with 18565indeterminate values. 18566 18567@item 18568The other component-by-component array operations (@code{and}, @code{or}, 18569@code{xor}, @code{not}, and relational tests other than equality) 18570are not implemented. 18571 18572@item 18573@cindex array aggregates (Ada) 18574@cindex record aggregates (Ada) 18575@cindex aggregates (Ada) 18576There is limited support for array and record aggregates. They are 18577permitted only on the right sides of assignments, as in these examples: 18578 18579@smallexample 18580(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6) 18581(@value{GDBP}) set An_Array := (1, others => 0) 18582(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6) 18583(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9)) 18584(@value{GDBP}) set A_Record := (1, "Peter", True); 18585(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True) 18586@end smallexample 18587 18588Changing a 18589discriminant's value by assigning an aggregate has an 18590undefined effect if that discriminant is used within the record. 18591However, you can first modify discriminants by directly assigning to 18592them (which normally would not be allowed in Ada), and then performing an 18593aggregate assignment. For example, given a variable @code{A_Rec} 18594declared to have a type such as: 18595 18596@smallexample 18597type Rec (Len : Small_Integer := 0) is record 18598 Id : Integer; 18599 Vals : IntArray (1 .. Len); 18600end record; 18601@end smallexample 18602 18603you can assign a value with a different size of @code{Vals} with two 18604assignments: 18605 18606@smallexample 18607(@value{GDBP}) set A_Rec.Len := 4 18608(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4)) 18609@end smallexample 18610 18611As this example also illustrates, @value{GDBN} is very loose about the usual 18612rules concerning aggregates. You may leave out some of the 18613components of an array or record aggregate (such as the @code{Len} 18614component in the assignment to @code{A_Rec} above); they will retain their 18615original values upon assignment. You may freely use dynamic values as 18616indices in component associations. You may even use overlapping or 18617redundant component associations, although which component values are 18618assigned in such cases is not defined. 18619 18620@item 18621Calls to dispatching subprograms are not implemented. 18622 18623@item 18624The overloading algorithm is much more limited (i.e., less selective) 18625than that of real Ada. It makes only limited use of the context in 18626which a subexpression appears to resolve its meaning, and it is much 18627looser in its rules for allowing type matches. As a result, some 18628function calls will be ambiguous, and the user will be asked to choose 18629the proper resolution. 18630 18631@item 18632The @code{new} operator is not implemented. 18633 18634@item 18635Entry calls are not implemented. 18636 18637@item 18638Aside from printing, arithmetic operations on the native VAX floating-point 18639formats are not supported. 18640 18641@item 18642It is not possible to slice a packed array. 18643 18644@item 18645The names @code{True} and @code{False}, when not part of a qualified name, 18646are interpreted as if implicitly prefixed by @code{Standard}, regardless of 18647context. 18648Should your program 18649redefine these names in a package or procedure (at best a dubious practice), 18650you will have to use fully qualified names to access their new definitions. 18651 18652@item 18653Based real literals are not implemented. 18654@end itemize 18655 18656@node Additions to Ada 18657@subsubsection Additions to Ada 18658@cindex Ada, deviations from 18659 18660As it does for other languages, @value{GDBN} makes certain generic 18661extensions to Ada (@pxref{Expressions}): 18662 18663@itemize @bullet 18664@item 18665If the expression @var{E} is a variable residing in memory (typically 18666a local variable or array element) and @var{N} is a positive integer, 18667then @code{@var{E}@@@var{N}} displays the values of @var{E} and the 18668@var{N}-1 adjacent variables following it in memory as an array. In 18669Ada, this operator is generally not necessary, since its prime use is 18670in displaying parts of an array, and slicing will usually do this in 18671Ada. However, there are occasional uses when debugging programs in 18672which certain debugging information has been optimized away. 18673 18674@item 18675@code{@var{B}::@var{var}} means ``the variable named @var{var} that 18676appears in function or file @var{B}.'' When @var{B} is a file name, 18677you must typically surround it in single quotes. 18678 18679@item 18680The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type 18681@var{type} that appears at address @var{addr}.'' 18682 18683@item 18684A name starting with @samp{$} is a convenience variable 18685(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}). 18686@end itemize 18687 18688In addition, @value{GDBN} provides a few other shortcuts and outright 18689additions specific to Ada: 18690 18691@itemize @bullet 18692@item 18693The assignment statement is allowed as an expression, returning 18694its right-hand operand as its value. Thus, you may enter 18695 18696@smallexample 18697(@value{GDBP}) set x := y + 3 18698(@value{GDBP}) print A(tmp := y + 1) 18699@end smallexample 18700 18701@item 18702The semicolon is allowed as an ``operator,'' returning as its value 18703the value of its right-hand operand. 18704This allows, for example, 18705complex conditional breaks: 18706 18707@smallexample 18708(@value{GDBP}) break f 18709(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100) 18710@end smallexample 18711 18712@item 18713An extension to based literals can be used to specify the exact byte 18714contents of a floating-point literal. After the base, you can use 18715from zero to two @samp{l} characters, followed by an @samp{f}. The 18716number of @samp{l} characters controls the width of the resulting real 18717constant: zero means @code{Float} is used, one means 18718@code{Long_Float}, and two means @code{Long_Long_Float}. 18719 18720@smallexample 18721(@value{GDBP}) print 16f#41b80000# 18722$1 = 23.0 18723@end smallexample 18724 18725@item 18726Rather than use catenation and symbolic character names to introduce special 18727characters into strings, one may instead use a special bracket notation, 18728which is also used to print strings. A sequence of characters of the form 18729@samp{["@var{XX}"]} within a string or character literal denotes the 18730(single) character whose numeric encoding is @var{XX} in hexadecimal. The 18731sequence of characters @samp{["""]} also denotes a single quotation mark 18732in strings. For example, 18733@smallexample 18734 "One line.["0a"]Next line.["0a"]" 18735@end smallexample 18736@noindent 18737contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF}) 18738after each period. 18739 18740@item 18741The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and 18742@t{'Max} is optional (and is ignored in any case). For example, it is valid 18743to write 18744 18745@smallexample 18746(@value{GDBP}) print 'max(x, y) 18747@end smallexample 18748 18749@item 18750When printing arrays, @value{GDBN} uses positional notation when the 18751array has a lower bound of 1, and uses a modified named notation otherwise. 18752For example, a one-dimensional array of three integers with a lower bound 18753of 3 might print as 18754 18755@smallexample 18756(3 => 10, 17, 1) 18757@end smallexample 18758 18759@noindent 18760That is, in contrast to valid Ada, only the first component has a @code{=>} 18761clause. 18762 18763@item 18764You may abbreviate attributes in expressions with any unique, 18765multi-character subsequence of 18766their names (an exact match gets preference). 18767For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh} 18768in place of @t{a'length}. 18769 18770@item 18771@cindex quoting Ada internal identifiers 18772Since Ada is case-insensitive, the debugger normally maps identifiers you type 18773to lower case. The GNAT compiler uses upper-case characters for 18774some of its internal identifiers, which are normally of no interest to users. 18775For the rare occasions when you actually have to look at them, 18776enclose them in angle brackets to avoid the lower-case mapping. 18777For example, 18778@smallexample 18779(@value{GDBP}) print <JMPBUF_SAVE>[0] 18780@end smallexample 18781 18782@item 18783Printing an object of class-wide type or dereferencing an 18784access-to-class-wide value will display all the components of the object's 18785specific type (as indicated by its run-time tag). Likewise, component 18786selection on such a value will operate on the specific type of the 18787object. 18788 18789@end itemize 18790 18791@node Overloading support for Ada 18792@subsubsection Overloading support for Ada 18793@cindex overloading, Ada 18794 18795The debugger supports limited overloading. Given a subprogram call in which 18796the function symbol has multiple definitions, it will use the number of 18797actual parameters and some information about their types to attempt to narrow 18798the set of definitions. It also makes very limited use of context, preferring 18799procedures to functions in the context of the @code{call} command, and 18800functions to procedures elsewhere. 18801 18802If, after narrowing, the set of matching definitions still contains more than 18803one definition, @value{GDBN} will display a menu to query which one it should 18804use, for instance: 18805 18806@smallexample 18807(@value{GDBP}) print f(1) 18808Multiple matches for f 18809[0] cancel 18810[1] foo.f (integer) return boolean at foo.adb:23 18811[2] foo.f (foo.new_integer) return boolean at foo.adb:28 18812> 18813@end smallexample 18814 18815In this case, just select one menu entry either to cancel expression evaluation 18816(type @kbd{0} and press @key{RET}) or to continue evaluation with a specific 18817instance (type the corresponding number and press @key{RET}). 18818 18819Here are a couple of commands to customize @value{GDBN}'s behavior in this 18820case: 18821 18822@table @code 18823 18824@kindex set ada print-signatures 18825@item set ada print-signatures 18826Control whether parameter types and return types are displayed in overloads 18827selection menus. It is @code{on} by default. 18828@xref{Overloading support for Ada}. 18829 18830@kindex show ada print-signatures 18831@item show ada print-signatures 18832Show the current setting for displaying parameter types and return types in 18833overloads selection menu. 18834@xref{Overloading support for Ada}. 18835 18836@end table 18837 18838@node Stopping Before Main Program 18839@subsubsection Stopping at the Very Beginning 18840 18841@cindex breakpointing Ada elaboration code 18842It is sometimes necessary to debug the program during elaboration, and 18843before reaching the main procedure. 18844As defined in the Ada Reference 18845Manual, the elaboration code is invoked from a procedure called 18846@code{adainit}. To run your program up to the beginning of 18847elaboration, simply use the following two commands: 18848@code{tbreak adainit} and @code{run}. 18849 18850@node Ada Exceptions 18851@subsubsection Ada Exceptions 18852 18853A command is provided to list all Ada exceptions: 18854 18855@table @code 18856@kindex info exceptions 18857@item info exceptions 18858@itemx info exceptions @var{regexp} 18859The @code{info exceptions} command allows you to list all Ada exceptions 18860defined within the program being debugged, as well as their addresses. 18861With a regular expression, @var{regexp}, as argument, only those exceptions 18862whose names match @var{regexp} are listed. 18863@end table 18864 18865Below is a small example, showing how the command can be used, first 18866without argument, and next with a regular expression passed as an 18867argument. 18868 18869@smallexample 18870(@value{GDBP}) info exceptions 18871All defined Ada exceptions: 18872constraint_error: 0x613da0 18873program_error: 0x613d20 18874storage_error: 0x613ce0 18875tasking_error: 0x613ca0 18876const.aint_global_e: 0x613b00 18877(@value{GDBP}) info exceptions const.aint 18878All Ada exceptions matching regular expression "const.aint": 18879constraint_error: 0x613da0 18880const.aint_global_e: 0x613b00 18881@end smallexample 18882 18883It is also possible to ask @value{GDBN} to stop your program's execution 18884when an exception is raised. For more details, see @ref{Set Catchpoints}. 18885 18886@node Ada Tasks 18887@subsubsection Extensions for Ada Tasks 18888@cindex Ada, tasking 18889 18890Support for Ada tasks is analogous to that for threads (@pxref{Threads}). 18891@value{GDBN} provides the following task-related commands: 18892 18893@table @code 18894@kindex info tasks 18895@item info tasks 18896This command shows a list of current Ada tasks, as in the following example: 18897 18898 18899@smallexample 18900@iftex 18901@leftskip=0.5cm 18902@end iftex 18903(@value{GDBP}) info tasks 18904 ID TID P-ID Pri State Name 18905 1 8088000 0 15 Child Activation Wait main_task 18906 2 80a4000 1 15 Accept Statement b 18907 3 809a800 1 15 Child Activation Wait a 18908* 4 80ae800 3 15 Runnable c 18909 18910@end smallexample 18911 18912@noindent 18913In this listing, the asterisk before the last task indicates it to be the 18914task currently being inspected. 18915 18916@table @asis 18917@item ID 18918Represents @value{GDBN}'s internal task number. 18919 18920@item TID 18921The Ada task ID. 18922 18923@item P-ID 18924The parent's task ID (@value{GDBN}'s internal task number). 18925 18926@item Pri 18927The base priority of the task. 18928 18929@item State 18930Current state of the task. 18931 18932@table @code 18933@item Unactivated 18934The task has been created but has not been activated. It cannot be 18935executing. 18936 18937@item Runnable 18938The task is not blocked for any reason known to Ada. (It may be waiting 18939for a mutex, though.) It is conceptually "executing" in normal mode. 18940 18941@item Terminated 18942The task is terminated, in the sense of ARM 9.3 (5). Any dependents 18943that were waiting on terminate alternatives have been awakened and have 18944terminated themselves. 18945 18946@item Child Activation Wait 18947The task is waiting for created tasks to complete activation. 18948 18949@item Accept or Select Term 18950The task is waiting on an accept or selective wait statement. 18951 18952@item Waiting on entry call 18953The task is waiting on an entry call. 18954 18955@item Async Select Wait 18956The task is waiting to start the abortable part of an asynchronous 18957select statement. 18958 18959@item Delay Sleep 18960The task is waiting on a select statement with only a delay 18961alternative open. 18962 18963@item Child Termination Wait 18964The task is sleeping having completed a master within itself, and is 18965waiting for the tasks dependent on that master to become terminated or 18966waiting on a terminate Phase. 18967 18968@item Wait Child in Term Alt 18969The task is sleeping waiting for tasks on terminate alternatives to 18970finish terminating. 18971 18972@item Asynchronous Hold 18973The task has been held by @code{Ada.Asynchronous_Task_Control.Hold_Task}. 18974 18975@item Activating 18976The task has been created and is being made runnable. 18977 18978@item Selective Wait 18979The task is waiting in a selective wait statement. 18980 18981@item Accepting RV with @var{taskno} 18982The task is accepting a rendez-vous with the task @var{taskno}. 18983 18984@item Waiting on RV with @var{taskno} 18985The task is waiting for a rendez-vous with the task @var{taskno}. 18986@end table 18987 18988@item Name 18989Name of the task in the program. 18990 18991@end table 18992 18993@kindex info task @var{taskno} 18994@item info task @var{taskno} 18995This command shows detailed informations on the specified task, as in 18996the following example: 18997@smallexample 18998@iftex 18999@leftskip=0.5cm 19000@end iftex 19001(@value{GDBP}) info tasks 19002 ID TID P-ID Pri State Name 19003 1 8077880 0 15 Child Activation Wait main_task 19004* 2 807c468 1 15 Runnable task_1 19005(@value{GDBP}) info task 2 19006Ada Task: 0x807c468 19007Name: "task_1" 19008Thread: 0 19009LWP: 0x1fac 19010Parent: 1 ("main_task") 19011Base Priority: 15 19012State: Runnable 19013@end smallexample 19014 19015@item task 19016@kindex task@r{ (Ada)} 19017@cindex current Ada task ID 19018This command prints the ID and name of the current task. 19019 19020@smallexample 19021@iftex 19022@leftskip=0.5cm 19023@end iftex 19024(@value{GDBP}) info tasks 19025 ID TID P-ID Pri State Name 19026 1 8077870 0 15 Child Activation Wait main_task 19027* 2 807c458 1 15 Runnable some_task 19028(@value{GDBP}) task 19029[Current task is 2 "some_task"] 19030@end smallexample 19031 19032@item task @var{taskno} 19033@cindex Ada task switching 19034This command is like the @code{thread @var{thread-id}} 19035command (@pxref{Threads}). It switches the context of debugging 19036from the current task to the given task. 19037 19038@smallexample 19039@iftex 19040@leftskip=0.5cm 19041@end iftex 19042(@value{GDBP}) info tasks 19043 ID TID P-ID Pri State Name 19044 1 8077870 0 15 Child Activation Wait main_task 19045* 2 807c458 1 15 Runnable some_task 19046(@value{GDBP}) task 1 19047[Switching to task 1 "main_task"] 19048#0 0x8067726 in pthread_cond_wait () 19049(@value{GDBP}) bt 19050#0 0x8067726 in pthread_cond_wait () 19051#1 0x8056714 in system.os_interface.pthread_cond_wait () 19052#2 0x805cb63 in system.task_primitives.operations.sleep () 19053#3 0x806153e in system.tasking.stages.activate_tasks () 19054#4 0x804aacc in un () at un.adb:5 19055@end smallexample 19056 19057@item task apply [@var{task-id-list} | all] [@var{flag}]@dots{} @var{command} 19058The @code{task apply} command is the Ada tasking analogue of 19059@code{thread apply} (@pxref{Threads}). It allows you to apply the 19060named @var{command} to one or more tasks. Specify the tasks that you 19061want affected using a list of task IDs, or specify @code{all} to apply 19062to all tasks. 19063 19064The @var{flag} arguments control what output to produce and how to 19065handle errors raised when applying @var{command} to a task. 19066@var{flag} must start with a @code{-} directly followed by one letter 19067in @code{qcs}. If several flags are provided, they must be given 19068individually, such as @code{-c -q}. 19069 19070By default, @value{GDBN} displays some task information before the 19071output produced by @var{command}, and an error raised during the 19072execution of a @var{command} will abort @code{task apply}. The 19073following flags can be used to fine-tune this behavior: 19074 19075@table @code 19076@item -c 19077The flag @code{-c}, which stands for @samp{continue}, causes any 19078errors in @var{command} to be displayed, and the execution of 19079@code{task apply} then continues. 19080@item -s 19081The flag @code{-s}, which stands for @samp{silent}, causes any errors 19082or empty output produced by a @var{command} to be silently ignored. 19083That is, the execution continues, but the task information and errors 19084are not printed. 19085@item -q 19086The flag @code{-q} (@samp{quiet}) disables printing the task 19087information. 19088@end table 19089 19090Flags @code{-c} and @code{-s} cannot be used together. 19091 19092@item break @var{locspec} task @var{taskno} 19093@itemx break @var{locspec} task @var{taskno} if @dots{} 19094@cindex breakpoints and tasks, in Ada 19095@cindex task breakpoints, in Ada 19096@kindex break @dots{} task @var{taskno}@r{ (Ada)} 19097These commands are like the @code{break @dots{} thread @dots{}} 19098command (@pxref{Thread Stops}). @xref{Location Specifications}, for 19099the various forms of @var{locspec}. 19100 19101Use the qualifier @samp{task @var{taskno}} with a breakpoint command 19102to specify that you only want @value{GDBN} to stop the program when a 19103particular Ada task reaches this breakpoint. The @var{taskno} is one of the 19104numeric task identifiers assigned by @value{GDBN}, shown in the first 19105column of the @samp{info tasks} display. 19106 19107If you do not specify @samp{task @var{taskno}} when you set a 19108breakpoint, the breakpoint applies to @emph{all} tasks of your 19109program. 19110 19111You can use the @code{task} qualifier on conditional breakpoints as 19112well; in this case, place @samp{task @var{taskno}} before the 19113breakpoint condition (before the @code{if}). 19114 19115For example, 19116 19117@smallexample 19118@iftex 19119@leftskip=0.5cm 19120@end iftex 19121(@value{GDBP}) info tasks 19122 ID TID P-ID Pri State Name 19123 1 140022020 0 15 Child Activation Wait main_task 19124 2 140045060 1 15 Accept/Select Wait t2 19125 3 140044840 1 15 Runnable t1 19126* 4 140056040 1 15 Runnable t3 19127(@value{GDBP}) b 15 task 2 19128Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15. 19129(@value{GDBP}) cont 19130Continuing. 19131task # 1 running 19132task # 2 running 19133 19134Breakpoint 5, test_task_debug () at test_task_debug.adb:15 1913515 flush; 19136(@value{GDBP}) info tasks 19137 ID TID P-ID Pri State Name 19138 1 140022020 0 15 Child Activation Wait main_task 19139* 2 140045060 1 15 Runnable t2 19140 3 140044840 1 15 Runnable t1 19141 4 140056040 1 15 Delay Sleep t3 19142@end smallexample 19143@end table 19144 19145@node Ada Tasks and Core Files 19146@subsubsection Tasking Support when Debugging Core Files 19147@cindex Ada tasking and core file debugging 19148 19149When inspecting a core file, as opposed to debugging a live program, 19150tasking support may be limited or even unavailable, depending on 19151the platform being used. 19152For instance, on x86-linux, the list of tasks is available, but task 19153switching is not supported. 19154 19155On certain platforms, the debugger needs to perform some 19156memory writes in order to provide Ada tasking support. When inspecting 19157a core file, this means that the core file must be opened with read-write 19158privileges, using the command @samp{"set write on"} (@pxref{Patching}). 19159Under these circumstances, you should make a backup copy of the core 19160file before inspecting it with @value{GDBN}. 19161 19162@node Ravenscar Profile 19163@subsubsection Tasking Support when using the Ravenscar Profile 19164@cindex Ravenscar Profile 19165 19166The @dfn{Ravenscar Profile} is a subset of the Ada tasking features, 19167specifically designed for systems with safety-critical real-time 19168requirements. 19169 19170@table @code 19171@kindex set ravenscar task-switching on 19172@cindex task switching with program using Ravenscar Profile 19173@item set ravenscar task-switching on 19174Allows task switching when debugging a program that uses the Ravenscar 19175Profile. This is the default. 19176 19177@kindex set ravenscar task-switching off 19178@item set ravenscar task-switching off 19179Turn off task switching when debugging a program that uses the Ravenscar 19180Profile. This is mostly intended to disable the code that adds support 19181for the Ravenscar Profile, in case a bug in either @value{GDBN} or in 19182the Ravenscar runtime is preventing @value{GDBN} from working properly. 19183To be effective, this command should be run before the program is started. 19184 19185@kindex show ravenscar task-switching 19186@item show ravenscar task-switching 19187Show whether it is possible to switch from task to task in a program 19188using the Ravenscar Profile. 19189 19190@end table 19191 19192@cindex Ravenscar thread 19193When Ravenscar task-switching is enabled, Ravenscar tasks are 19194announced by @value{GDBN} as if they were threads: 19195 19196@smallexample 19197(gdb) continue 19198[New Ravenscar Thread 0x2b8f0] 19199@end smallexample 19200 19201Both Ravenscar tasks and the underlying CPU threads will show up in 19202the output of @code{info threads}: 19203 19204@smallexample 19205(gdb) info threads 19206 Id Target Id Frame 19207 1 Thread 1 (CPU#0 [running]) simple () at simple.adb:10 19208 2 Thread 2 (CPU#1 [running]) 0x0000000000003d34 in __gnat_initialize_cpu_devices () 19209 3 Thread 3 (CPU#2 [running]) 0x0000000000003d28 in __gnat_initialize_cpu_devices () 19210 4 Thread 4 (CPU#3 [halted ]) 0x000000000000c6ec in system.task_primitives.operations.idle () 19211* 5 Ravenscar Thread 0x2b8f0 simple () at simple.adb:10 19212 6 Ravenscar Thread 0x2f150 0x000000000000c6ec in system.task_primitives.operations.idle () 19213@end smallexample 19214 19215One known limitation of the Ravenscar support in @value{GDBN} is that 19216it isn't currently possible to single-step through the runtime 19217initialization sequence. If you need to debug this code, you should 19218use @code{set ravenscar task-switching off}. 19219 19220@node Ada Source Character Set 19221@subsubsection Ada Source Character Set 19222@cindex Ada, source character set 19223 19224The GNAT compiler supports a number of character sets for source 19225files. @xref{Character Set Control, , Character Set Control, 19226gnat_ugn}. @value{GDBN} includes support for this as well. 19227 19228@table @code 19229@item set ada source-charset @var{charset} 19230@kindex set ada source-charset 19231Set the source character set for Ada. The character set must be 19232supported by GNAT. Because this setting affects the decoding of 19233symbols coming from the debug information in your program, the setting 19234should be set as early as possible. The default is @code{ISO-8859-1}, 19235because that is also GNAT's default. 19236 19237@item show ada source-charset 19238@kindex show ada source-charset 19239Show the current source character set for Ada. 19240@end table 19241 19242@node Ada Glitches 19243@subsubsection Known Peculiarities of Ada Mode 19244@cindex Ada, problems 19245 19246Besides the omissions listed previously (@pxref{Omissions from Ada}), 19247we know of several problems with and limitations of Ada mode in 19248@value{GDBN}, 19249some of which will be fixed with planned future releases of the debugger 19250and the GNU Ada compiler. 19251 19252@itemize @bullet 19253@item 19254Static constants that the compiler chooses not to materialize as objects in 19255storage are invisible to the debugger. 19256 19257@item 19258Named parameter associations in function argument lists are ignored (the 19259argument lists are treated as positional). 19260 19261@item 19262Many useful library packages are currently invisible to the debugger. 19263 19264@item 19265Fixed-point arithmetic, conversions, input, and output is carried out using 19266floating-point arithmetic, and may give results that only approximate those on 19267the host machine. 19268 19269@item 19270The GNAT compiler never generates the prefix @code{Standard} for any of 19271the standard symbols defined by the Ada language. @value{GDBN} knows about 19272this: it will strip the prefix from names when you use it, and will never 19273look for a name you have so qualified among local symbols, nor match against 19274symbols in other packages or subprograms. If you have 19275defined entities anywhere in your program other than parameters and 19276local variables whose simple names match names in @code{Standard}, 19277GNAT's lack of qualification here can cause confusion. When this happens, 19278you can usually resolve the confusion 19279by qualifying the problematic names with package 19280@code{Standard} explicitly. 19281@end itemize 19282 19283Older versions of the compiler sometimes generate erroneous debugging 19284information, resulting in the debugger incorrectly printing the value 19285of affected entities. In some cases, the debugger is able to work 19286around an issue automatically. In other cases, the debugger is able 19287to work around the issue, but the work-around has to be specifically 19288enabled. 19289 19290@kindex set ada trust-PAD-over-XVS 19291@kindex show ada trust-PAD-over-XVS 19292@table @code 19293 19294@item set ada trust-PAD-over-XVS on 19295Configure GDB to strictly follow the GNAT encoding when computing the 19296value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS} 19297types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for 19298a complete description of the encoding used by the GNAT compiler). 19299This is the default. 19300 19301@item set ada trust-PAD-over-XVS off 19302This is related to the encoding using by the GNAT compiler. If @value{GDBN} 19303sometimes prints the wrong value for certain entities, changing @code{ada 19304trust-PAD-over-XVS} to @code{off} activates a work-around which may fix 19305the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to 19306@code{off}, but this incurs a slight performance penalty, so it is 19307recommended to leave this setting to @code{on} unless necessary. 19308 19309@end table 19310 19311@cindex GNAT descriptive types 19312@cindex GNAT encoding 19313Internally, the debugger also relies on the compiler following a number 19314of conventions known as the @samp{GNAT Encoding}, all documented in 19315@file{gcc/ada/exp_dbug.ads} in the GCC sources. This encoding describes 19316how the debugging information should be generated for certain types. 19317In particular, this convention makes use of @dfn{descriptive types}, 19318which are artificial types generated purely to help the debugger. 19319 19320These encodings were defined at a time when the debugging information 19321format used was not powerful enough to describe some of the more complex 19322types available in Ada. Since DWARF allows us to express nearly all 19323Ada features, the long-term goal is to slowly replace these descriptive 19324types by their pure DWARF equivalent. To facilitate that transition, 19325a new maintenance option is available to force the debugger to ignore 19326those descriptive types. It allows the user to quickly evaluate how 19327well @value{GDBN} works without them. 19328 19329@table @code 19330 19331@kindex maint ada set ignore-descriptive-types 19332@item maintenance ada set ignore-descriptive-types [on|off] 19333Control whether the debugger should ignore descriptive types. 19334The default is not to ignore descriptives types (@code{off}). 19335 19336@kindex maint ada show ignore-descriptive-types 19337@item maintenance ada show ignore-descriptive-types 19338Show if descriptive types are ignored by @value{GDBN}. 19339 19340@end table 19341 19342@node Unsupported Languages 19343@section Unsupported Languages 19344 19345@cindex unsupported languages 19346@cindex minimal language 19347In addition to the other fully-supported programming languages, 19348@value{GDBN} also provides a pseudo-language, called @code{minimal}. 19349It does not represent a real programming language, but provides a set 19350of capabilities close to what the C or assembly languages provide. 19351This should allow most simple operations to be performed while debugging 19352an application that uses a language currently not supported by @value{GDBN}. 19353 19354If the language is set to @code{auto}, @value{GDBN} will automatically 19355select this language if the current frame corresponds to an unsupported 19356language. 19357 19358@node Symbols 19359@chapter Examining the Symbol Table 19360 19361The commands described in this chapter allow you to inquire about the 19362symbols (names of variables, functions and types) defined in your 19363program. This information is inherent in the text of your program and 19364does not change as your program executes. @value{GDBN} finds it in your 19365program's symbol table, in the file indicated when you started @value{GDBN} 19366(@pxref{File Options, ,Choosing Files}), or by one of the 19367file-management commands (@pxref{Files, ,Commands to Specify Files}). 19368 19369@cindex symbol names 19370@cindex names of symbols 19371@cindex quoting names 19372@anchor{quoting names} 19373Occasionally, you may need to refer to symbols that contain unusual 19374characters, which @value{GDBN} ordinarily treats as word delimiters. The 19375most frequent case is in referring to static variables in other 19376source files (@pxref{Variables,,Program Variables}). File names 19377are recorded in object files as debugging symbols, but @value{GDBN} would 19378ordinarily parse a typical file name, like @file{foo.c}, as the three words 19379@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize 19380@samp{foo.c} as a single symbol, enclose it in single quotes; for example, 19381 19382@smallexample 19383p 'foo.c'::x 19384@end smallexample 19385 19386@noindent 19387looks up the value of @code{x} in the scope of the file @file{foo.c}. 19388 19389@table @code 19390@cindex case-insensitive symbol names 19391@cindex case sensitivity in symbol names 19392@kindex set case-sensitive 19393@item set case-sensitive on 19394@itemx set case-sensitive off 19395@itemx set case-sensitive auto 19396Normally, when @value{GDBN} looks up symbols, it matches their names 19397with case sensitivity determined by the current source language. 19398Occasionally, you may wish to control that. The command @code{set 19399case-sensitive} lets you do that by specifying @code{on} for 19400case-sensitive matches or @code{off} for case-insensitive ones. If 19401you specify @code{auto}, case sensitivity is reset to the default 19402suitable for the source language. The default is case-sensitive 19403matches for all languages except for Fortran, for which the default is 19404case-insensitive matches. 19405 19406@kindex show case-sensitive 19407@item show case-sensitive 19408This command shows the current setting of case sensitivity for symbols 19409lookups. 19410 19411@kindex set print type methods 19412@item set print type methods 19413@itemx set print type methods on 19414@itemx set print type methods off 19415Normally, when @value{GDBN} prints a class, it displays any methods 19416declared in that class. You can control this behavior either by 19417passing the appropriate flag to @code{ptype}, or using @command{set 19418print type methods}. Specifying @code{on} will cause @value{GDBN} to 19419display the methods; this is the default. Specifying @code{off} will 19420cause @value{GDBN} to omit the methods. 19421 19422@kindex show print type methods 19423@item show print type methods 19424This command shows the current setting of method display when printing 19425classes. 19426 19427@kindex set print type nested-type-limit 19428@item set print type nested-type-limit @var{limit} 19429@itemx set print type nested-type-limit unlimited 19430Set the limit of displayed nested types that the type printer will 19431show. A @var{limit} of @code{unlimited} or @code{-1} will show all 19432nested definitions. By default, the type printer will not show any nested 19433types defined in classes. 19434 19435@kindex show print type nested-type-limit 19436@item show print type nested-type-limit 19437This command shows the current display limit of nested types when 19438printing classes. 19439 19440@kindex set print type typedefs 19441@item set print type typedefs 19442@itemx set print type typedefs on 19443@itemx set print type typedefs off 19444 19445Normally, when @value{GDBN} prints a class, it displays any typedefs 19446defined in that class. You can control this behavior either by 19447passing the appropriate flag to @code{ptype}, or using @command{set 19448print type typedefs}. Specifying @code{on} will cause @value{GDBN} to 19449display the typedef definitions; this is the default. Specifying 19450@code{off} will cause @value{GDBN} to omit the typedef definitions. 19451Note that this controls whether the typedef definition itself is 19452printed, not whether typedef names are substituted when printing other 19453types. 19454 19455@kindex show print type typedefs 19456@item show print type typedefs 19457This command shows the current setting of typedef display when 19458printing classes. 19459 19460@kindex set print type hex 19461@item set print type hex 19462@itemx set print type hex on 19463@itemx set print type hex off 19464 19465When @value{GDBN} prints sizes and offsets of struct members, it can use 19466either the decimal or hexadecimal notation. You can select one or the 19467other either by passing the appropriate flag to @code{ptype}, or by using 19468the @command{set print type hex} command. 19469 19470@kindex show print type hex 19471@item show print type hex 19472This command shows whether the sizes and offsets of struct members are 19473printed in decimal or hexadecimal notation. 19474 19475@kindex info address 19476@cindex address of a symbol 19477@item info address @var{symbol} 19478Describe where the data for @var{symbol} is stored. For a register 19479variable, this says which register it is kept in. For a non-register 19480local variable, this prints the stack-frame offset at which the variable 19481is always stored. 19482 19483Note the contrast with @samp{print &@var{symbol}}, which does not work 19484at all for a register variable, and for a stack local variable prints 19485the exact address of the current instantiation of the variable. 19486 19487@kindex info symbol 19488@cindex symbol from address 19489@cindex closest symbol and offset for an address 19490@item info symbol @var{addr} 19491Print the name of a symbol which is stored at the address @var{addr}. 19492If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the 19493nearest symbol and an offset from it: 19494 19495@smallexample 19496(@value{GDBP}) info symbol 0x54320 19497_initialize_vx + 396 in section .text 19498@end smallexample 19499 19500@noindent 19501This is the opposite of the @code{info address} command. You can use 19502it to find out the name of a variable or a function given its address. 19503 19504For dynamically linked executables, the name of executable or shared 19505library containing the symbol is also printed: 19506 19507@smallexample 19508(@value{GDBP}) info symbol 0x400225 19509_start + 5 in section .text of /tmp/a.out 19510(@value{GDBP}) info symbol 0x2aaaac2811cf 19511__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6 19512@end smallexample 19513 19514@kindex demangle 19515@cindex demangle 19516@item demangle @r{[}-l @var{language}@r{]} @r{[}@var{--}@r{]} @var{name} 19517Demangle @var{name}. 19518If @var{language} is provided it is the name of the language to demangle 19519@var{name} in. Otherwise @var{name} is demangled in the current language. 19520 19521The @samp{--} option specifies the end of options, 19522and is useful when @var{name} begins with a dash. 19523 19524The parameter @code{demangle-style} specifies how to interpret the kind 19525of mangling used. @xref{Print Settings}. 19526 19527@kindex whatis 19528@item whatis[/@var{flags}] [@var{arg}] 19529Print the data type of @var{arg}, which can be either an expression 19530or a name of a data type. With no argument, print the data type of 19531@code{$}, the last value in the value history. 19532 19533If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it 19534is not actually evaluated, and any side-effecting operations (such as 19535assignments or function calls) inside it do not take place. 19536 19537If @var{arg} is a variable or an expression, @code{whatis} prints its 19538literal type as it is used in the source code. If the type was 19539defined using a @code{typedef}, @code{whatis} will @emph{not} print 19540the data type underlying the @code{typedef}. If the type of the 19541variable or the expression is a compound data type, such as 19542@code{struct} or @code{class}, @code{whatis} never prints their 19543fields or methods. It just prints the @code{struct}/@code{class} 19544name (a.k.a.@: its @dfn{tag}). If you want to see the members of 19545such a compound data type, use @code{ptype}. 19546 19547If @var{arg} is a type name that was defined using @code{typedef}, 19548@code{whatis} @dfn{unrolls} only one level of that @code{typedef}. 19549Unrolling means that @code{whatis} will show the underlying type used 19550in the @code{typedef} declaration of @var{arg}. However, if that 19551underlying type is also a @code{typedef}, @code{whatis} will not 19552unroll it. 19553 19554For C code, the type names may also have the form @samp{class 19555@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union 19556@var{union-tag}} or @samp{enum @var{enum-tag}}. 19557 19558@var{flags} can be used to modify how the type is displayed. 19559Available flags are: 19560 19561@table @code 19562@item r 19563Display in ``raw'' form. Normally, @value{GDBN} substitutes template 19564parameters and typedefs defined in a class when printing the class' 19565members. The @code{/r} flag disables this. 19566 19567@item m 19568Do not print methods defined in the class. 19569 19570@item M 19571Print methods defined in the class. This is the default, but the flag 19572exists in case you change the default with @command{set print type methods}. 19573 19574@item t 19575Do not print typedefs defined in the class. Note that this controls 19576whether the typedef definition itself is printed, not whether typedef 19577names are substituted when printing other types. 19578 19579@item T 19580Print typedefs defined in the class. This is the default, but the flag 19581exists in case you change the default with @command{set print type typedefs}. 19582 19583@item o 19584Print the offsets and sizes of fields in a struct, similar to what the 19585@command{pahole} tool does. This option implies the @code{/tm} flags. 19586 19587@item x 19588Use hexadecimal notation when printing offsets and sizes of fields in a 19589struct. 19590 19591@item d 19592Use decimal notation when printing offsets and sizes of fields in a 19593struct. 19594 19595For example, given the following declarations: 19596 19597@smallexample 19598struct tuv 19599@{ 19600 int a1; 19601 char *a2; 19602 int a3; 19603@}; 19604 19605struct xyz 19606@{ 19607 int f1; 19608 char f2; 19609 void *f3; 19610 struct tuv f4; 19611@}; 19612 19613union qwe 19614@{ 19615 struct tuv fff1; 19616 struct xyz fff2; 19617@}; 19618 19619struct tyu 19620@{ 19621 int a1 : 1; 19622 int a2 : 3; 19623 int a3 : 23; 19624 char a4 : 2; 19625 int64_t a5; 19626 int a6 : 5; 19627 int64_t a7 : 3; 19628@}; 19629@end smallexample 19630 19631Issuing a @kbd{ptype /o struct tuv} command would print: 19632 19633@smallexample 19634(@value{GDBP}) ptype /o struct tuv 19635/* offset | size */ type = struct tuv @{ 19636/* 0 | 4 */ int a1; 19637/* XXX 4-byte hole */ 19638/* 8 | 8 */ char *a2; 19639/* 16 | 4 */ int a3; 19640 19641 /* total size (bytes): 24 */ 19642 @} 19643@end smallexample 19644 19645Notice the format of the first column of comments. There, you can 19646find two parts separated by the @samp{|} character: the @emph{offset}, 19647which indicates where the field is located inside the struct, in 19648bytes, and the @emph{size} of the field. Another interesting line is 19649the marker of a @emph{hole} in the struct, indicating that it may be 19650possible to pack the struct and make it use less space by reorganizing 19651its fields. 19652 19653It is also possible to print offsets inside an union: 19654 19655@smallexample 19656(@value{GDBP}) ptype /o union qwe 19657/* offset | size */ type = union qwe @{ 19658/* 24 */ struct tuv @{ 19659/* 0 | 4 */ int a1; 19660/* XXX 4-byte hole */ 19661/* 8 | 8 */ char *a2; 19662/* 16 | 4 */ int a3; 19663 19664 /* total size (bytes): 24 */ 19665 @} fff1; 19666/* 40 */ struct xyz @{ 19667/* 0 | 4 */ int f1; 19668/* 4 | 1 */ char f2; 19669/* XXX 3-byte hole */ 19670/* 8 | 8 */ void *f3; 19671/* 16 | 24 */ struct tuv @{ 19672/* 16 | 4 */ int a1; 19673/* XXX 4-byte hole */ 19674/* 24 | 8 */ char *a2; 19675/* 32 | 4 */ int a3; 19676 19677 /* total size (bytes): 24 */ 19678 @} f4; 19679 19680 /* total size (bytes): 40 */ 19681 @} fff2; 19682 19683 /* total size (bytes): 40 */ 19684 @} 19685@end smallexample 19686 19687In this case, since @code{struct tuv} and @code{struct xyz} occupy the 19688same space (because we are dealing with an union), the offset is not 19689printed for them. However, you can still examine the offset of each 19690of these structures' fields. 19691 19692Another useful scenario is printing the offsets of a struct containing 19693bitfields: 19694 19695@smallexample 19696(@value{GDBP}) ptype /o struct tyu 19697/* offset | size */ type = struct tyu @{ 19698/* 0:31 | 4 */ int a1 : 1; 19699/* 0:28 | 4 */ int a2 : 3; 19700/* 0: 5 | 4 */ int a3 : 23; 19701/* 3: 3 | 1 */ signed char a4 : 2; 19702/* XXX 3-bit hole */ 19703/* XXX 4-byte hole */ 19704/* 8 | 8 */ int64_t a5; 19705/* 16: 0 | 4 */ int a6 : 5; 19706/* 16: 5 | 8 */ int64_t a7 : 3; 19707/* XXX 7-byte padding */ 19708 19709 /* total size (bytes): 24 */ 19710 @} 19711@end smallexample 19712 19713Note how the offset information is now extended to also include the 19714first bit of the bitfield. 19715@end table 19716 19717@kindex ptype 19718@item ptype[/@var{flags}] [@var{arg}] 19719@code{ptype} accepts the same arguments as @code{whatis}, but prints a 19720detailed description of the type, instead of just the name of the type. 19721@xref{Expressions, ,Expressions}. 19722 19723Contrary to @code{whatis}, @code{ptype} always unrolls any 19724@code{typedef}s in its argument declaration, whether the argument is 19725a variable, expression, or a data type. This means that @code{ptype} 19726of a variable or an expression will not print literally its type as 19727present in the source code---use @code{whatis} for that. @code{typedef}s at 19728the pointer or reference targets are also unrolled. Only @code{typedef}s of 19729fields, methods and inner @code{class typedef}s of @code{struct}s, 19730@code{class}es and @code{union}s are not unrolled even with @code{ptype}. 19731 19732For example, for this variable declaration: 19733 19734@smallexample 19735typedef double real_t; 19736struct complex @{ real_t real; double imag; @}; 19737typedef struct complex complex_t; 19738complex_t var; 19739real_t *real_pointer_var; 19740@end smallexample 19741 19742@noindent 19743the two commands give this output: 19744 19745@smallexample 19746@group 19747(@value{GDBP}) whatis var 19748type = complex_t 19749(@value{GDBP}) ptype var 19750type = struct complex @{ 19751 real_t real; 19752 double imag; 19753@} 19754(@value{GDBP}) whatis complex_t 19755type = struct complex 19756(@value{GDBP}) whatis struct complex 19757type = struct complex 19758(@value{GDBP}) ptype struct complex 19759type = struct complex @{ 19760 real_t real; 19761 double imag; 19762@} 19763(@value{GDBP}) whatis real_pointer_var 19764type = real_t * 19765(@value{GDBP}) ptype real_pointer_var 19766type = double * 19767@end group 19768@end smallexample 19769 19770@noindent 19771As with @code{whatis}, using @code{ptype} without an argument refers to 19772the type of @code{$}, the last value in the value history. 19773 19774@cindex incomplete type 19775Sometimes, programs use opaque data types or incomplete specifications 19776of complex data structure. If the debug information included in the 19777program does not allow @value{GDBN} to display a full declaration of 19778the data type, it will say @samp{<incomplete type>}. For example, 19779given these declarations: 19780 19781@smallexample 19782 struct foo; 19783 struct foo *fooptr; 19784@end smallexample 19785 19786@noindent 19787but no definition for @code{struct foo} itself, @value{GDBN} will say: 19788 19789@smallexample 19790 (@value{GDBP}) ptype foo 19791 $1 = <incomplete type> 19792@end smallexample 19793 19794@noindent 19795``Incomplete type'' is C terminology for data types that are not 19796completely specified. 19797 19798@cindex unknown type 19799Othertimes, information about a variable's type is completely absent 19800from the debug information included in the program. This most often 19801happens when the program or library where the variable is defined 19802includes no debug information at all. @value{GDBN} knows the variable 19803exists from inspecting the linker/loader symbol table (e.g., the ELF 19804dynamic symbol table), but such symbols do not contain type 19805information. Inspecting the type of a (global) variable for which 19806@value{GDBN} has no type information shows: 19807 19808@smallexample 19809 (@value{GDBP}) ptype var 19810 type = <data variable, no debug info> 19811@end smallexample 19812 19813@xref{Variables, no debug info variables}, for how to print the values 19814of such variables. 19815 19816@kindex info types 19817@item info types [-q] [@var{regexp}] 19818Print a brief description of all types whose names match the regular 19819expression @var{regexp} (or all types in your program, if you supply 19820no argument). Each complete typename is matched as though it were a 19821complete line; thus, @samp{i type value} gives information on all 19822types in your program whose names include the string @code{value}, but 19823@samp{i type ^value$} gives information only on types whose complete 19824name is @code{value}. 19825 19826In programs using different languages, @value{GDBN} chooses the syntax 19827to print the type description according to the 19828@samp{set language} value: using @samp{set language auto} 19829(see @ref{Automatically, ,Set Language Automatically}) means to use the 19830language of the type, other values mean to use 19831the manually specified language (see @ref{Manually, ,Set Language Manually}). 19832 19833This command differs from @code{ptype} in two ways: first, like 19834@code{whatis}, it does not print a detailed description; second, it 19835lists all source files and line numbers where a type is defined. 19836 19837The output from @samp{into types} is proceeded with a header line 19838describing what types are being listed. The optional flag @samp{-q}, 19839which stands for @samp{quiet}, disables printing this header 19840information. 19841 19842@kindex info type-printers 19843@item info type-printers 19844Versions of @value{GDBN} that ship with Python scripting enabled may 19845have ``type printers'' available. When using @command{ptype} or 19846@command{whatis}, these printers are consulted when the name of a type 19847is needed. @xref{Type Printing API}, for more information on writing 19848type printers. 19849 19850@code{info type-printers} displays all the available type printers. 19851 19852@kindex enable type-printer 19853@kindex disable type-printer 19854@item enable type-printer @var{name}@dots{} 19855@item disable type-printer @var{name}@dots{} 19856These commands can be used to enable or disable type printers. 19857 19858@kindex info scope 19859@cindex local variables 19860@item info scope @var{locspec} 19861List all the variables local to the lexical scope of the code location 19862that results from resolving @var{locspec}. @xref{Location 19863Specifications}, for details about supported forms of @var{locspec}. 19864For example: 19865 19866@smallexample 19867(@value{GDBP}) @b{info scope command_line_handler} 19868Scope for command_line_handler: 19869Symbol rl is an argument at stack/frame offset 8, length 4. 19870Symbol linebuffer is in static storage at address 0x150a18, length 4. 19871Symbol linelength is in static storage at address 0x150a1c, length 4. 19872Symbol p is a local variable in register $esi, length 4. 19873Symbol p1 is a local variable in register $ebx, length 4. 19874Symbol nline is a local variable in register $edx, length 4. 19875Symbol repeat is a local variable at frame offset -8, length 4. 19876@end smallexample 19877 19878@noindent 19879This command is especially useful for determining what data to collect 19880during a @dfn{trace experiment}, see @ref{Tracepoint Actions, 19881collect}. 19882 19883@kindex info source 19884@item info source 19885Show information about the current source file---that is, the source file for 19886the function containing the current point of execution: 19887@itemize @bullet 19888@item 19889the name of the source file, and the directory containing it, 19890@item 19891the directory it was compiled in, 19892@item 19893its length, in lines, 19894@item 19895which programming language it is written in, 19896@item 19897if the debug information provides it, the program that compiled the file 19898(which may include, e.g., the compiler version and command line arguments), 19899@item 19900whether the executable includes debugging information for that file, and 19901if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and 19902@item 19903whether the debugging information includes information about 19904preprocessor macros. 19905@end itemize 19906 19907 19908@kindex info sources 19909@item info sources @r{[}-dirname | -basename@r{]} @r{[}--@r{]} @r{[}@var{regexp}@r{]} 19910 19911 19912With no options @samp{info sources} prints the names of all source 19913files in your program for which there is debugging information. The 19914source files are presented based on a list of object files 19915(executables and libraries) currently loaded into @value{GDBN}. For 19916each object file all of the associated source files are listed. 19917 19918Each source file will only be printed once for each object file, but a 19919single source file can be repeated in the output if it is part of 19920multiple object files. 19921 19922If the optional @var{regexp} is provided, then only source files that 19923match the regular expression will be printed. The matching is 19924case-sensitive, except on operating systems that have case-insensitive 19925filesystem (e.g., MS-Windows). @samp{--} can be used before 19926@var{regexp} to prevent @value{GDBN} interpreting @var{regexp} as a 19927command option (e.g. if @var{regexp} starts with @samp{-}). 19928 19929By default, the @var{regexp} is used to match anywhere in the 19930filename. If @code{-dirname}, only files having a dirname matching 19931@var{regexp} are shown. If @code{-basename}, only files having a 19932basename matching @var{regexp} are shown. 19933 19934It is possible that an object file may be printed in the list with no 19935associated source files. This can happen when either no source files 19936match @var{regexp}, or, the object file was compiled without debug 19937information and so @value{GDBN} is unable to find any source file 19938names. 19939 19940@kindex info functions 19941@item info functions [-q] [-n] 19942Print the names and data types of all defined functions. 19943Similarly to @samp{info types}, this command groups its output by source 19944files and annotates each function definition with its source line 19945number. 19946 19947In programs using different languages, @value{GDBN} chooses the syntax 19948to print the function name and type according to the 19949@samp{set language} value: using @samp{set language auto} 19950(see @ref{Automatically, ,Set Language Automatically}) means to use the 19951language of the function, other values mean to use 19952the manually specified language (see @ref{Manually, ,Set Language Manually}). 19953 19954The @samp{-n} flag excludes @dfn{non-debugging symbols} from the 19955results. A non-debugging symbol is a symbol that comes from the 19956executable's symbol table, not from the debug information (for 19957example, DWARF) associated with the executable. 19958 19959The optional flag @samp{-q}, which stands for @samp{quiet}, disables 19960printing header information and messages explaining why no functions 19961have been printed. 19962 19963@item info functions [-q] [-n] [-t @var{type_regexp}] [@var{regexp}] 19964Like @samp{info functions}, but only print the names and data types 19965of the functions selected with the provided regexp(s). 19966 19967If @var{regexp} is provided, print only the functions whose names 19968match the regular expression @var{regexp}. 19969Thus, @samp{info fun step} finds all functions whose 19970names include @code{step}; @samp{info fun ^step} finds those whose names 19971start with @code{step}. If a function name contains characters that 19972conflict with the regular expression language (e.g.@: 19973@samp{operator*()}), they may be quoted with a backslash. 19974 19975If @var{type_regexp} is provided, print only the functions whose 19976types, as printed by the @code{whatis} command, match 19977the regular expression @var{type_regexp}. 19978If @var{type_regexp} contains space(s), it should be enclosed in 19979quote characters. If needed, use backslash to escape the meaning 19980of special characters or quotes. 19981Thus, @samp{info fun -t '^int ('} finds the functions that return 19982an integer; @samp{info fun -t '(.*int.*'} finds the functions that 19983have an argument type containing int; @samp{info fun -t '^int (' ^step} 19984finds the functions whose names start with @code{step} and that return 19985int. 19986 19987If both @var{regexp} and @var{type_regexp} are provided, a function 19988is printed only if its name matches @var{regexp} and its type matches 19989@var{type_regexp}. 19990 19991 19992@kindex info variables 19993@item info variables [-q] [-n] 19994Print the names and data types of all variables that are defined 19995outside of functions (i.e.@: excluding local variables). 19996The printed variables are grouped by source files and annotated with 19997their respective source line numbers. 19998 19999In programs using different languages, @value{GDBN} chooses the syntax 20000to print the variable name and type according to the 20001@samp{set language} value: using @samp{set language auto} 20002(see @ref{Automatically, ,Set Language Automatically}) means to use the 20003language of the variable, other values mean to use 20004the manually specified language (see @ref{Manually, ,Set Language Manually}). 20005 20006The @samp{-n} flag excludes non-debugging symbols from the results. 20007 20008The optional flag @samp{-q}, which stands for @samp{quiet}, disables 20009printing header information and messages explaining why no variables 20010have been printed. 20011 20012@item info variables [-q] [-n] [-t @var{type_regexp}] [@var{regexp}] 20013Like @kbd{info variables}, but only print the variables selected 20014with the provided regexp(s). 20015 20016If @var{regexp} is provided, print only the variables whose names 20017match the regular expression @var{regexp}. 20018 20019If @var{type_regexp} is provided, print only the variables whose 20020types, as printed by the @code{whatis} command, match 20021the regular expression @var{type_regexp}. 20022If @var{type_regexp} contains space(s), it should be enclosed in 20023quote characters. If needed, use backslash to escape the meaning 20024of special characters or quotes. 20025 20026If both @var{regexp} and @var{type_regexp} are provided, an argument 20027is printed only if its name matches @var{regexp} and its type matches 20028@var{type_regexp}. 20029 20030@kindex info modules 20031@cindex modules 20032@item info modules @r{[}-q@r{]} @r{[}@var{regexp}@r{]} 20033List all Fortran modules in the program, or all modules matching the 20034optional regular expression @var{regexp}. 20035 20036The optional flag @samp{-q}, which stands for @samp{quiet}, disables 20037printing header information and messages explaining why no modules 20038have been printed. 20039 20040@kindex info module 20041@cindex Fortran modules, information about 20042@cindex functions and variables by Fortran module 20043@cindex module functions and variables 20044@item info module functions @r{[}-q@r{]} @r{[}-m @var{module-regexp}@r{]} @r{[}-t @var{type-regexp}@r{]} @r{[}@var{regexp}@r{]} 20045@itemx info module variables @r{[}-q@r{]} @r{[}-m @var{module-regexp}@r{]} @r{[}-t @var{type-regexp}@r{]} @r{[}@var{regexp}@r{]} 20046List all functions or variables within all Fortran modules. The set 20047of functions or variables listed can be limited by providing some or 20048all of the optional regular expressions. If @var{module-regexp} is 20049provided, then only Fortran modules matching @var{module-regexp} will 20050be searched. Only functions or variables whose type matches the 20051optional regular expression @var{type-regexp} will be listed. And 20052only functions or variables whose name matches the optional regular 20053expression @var{regexp} will be listed. 20054 20055The optional flag @samp{-q}, which stands for @samp{quiet}, disables 20056printing header information and messages explaining why no functions 20057or variables have been printed. 20058 20059@kindex info classes 20060@cindex Objective-C, classes and selectors 20061@item info classes 20062@itemx info classes @var{regexp} 20063Display all Objective-C classes in your program, or 20064(with the @var{regexp} argument) all those matching a particular regular 20065expression. 20066 20067@kindex info selectors 20068@item info selectors 20069@itemx info selectors @var{regexp} 20070Display all Objective-C selectors in your program, or 20071(with the @var{regexp} argument) all those matching a particular regular 20072expression. 20073 20074@ignore 20075This was never implemented. 20076@kindex info methods 20077@item info methods 20078@itemx info methods @var{regexp} 20079The @code{info methods} command permits the user to examine all defined 20080methods within C@t{++} program, or (with the @var{regexp} argument) a 20081specific set of methods found in the various C@t{++} classes. Many 20082C@t{++} classes provide a large number of methods. Thus, the output 20083from the @code{ptype} command can be overwhelming and hard to use. The 20084@code{info-methods} command filters the methods, printing only those 20085which match the regular-expression @var{regexp}. 20086@end ignore 20087 20088@cindex opaque data types 20089@kindex set opaque-type-resolution 20090@item set opaque-type-resolution on 20091Tell @value{GDBN} to resolve opaque types. An opaque type is a type 20092declared as a pointer to a @code{struct}, @code{class}, or 20093@code{union}---for example, @code{struct MyType *}---that is used in one 20094source file although the full declaration of @code{struct MyType} is in 20095another source file. The default is on. 20096 20097A change in the setting of this subcommand will not take effect until 20098the next time symbols for a file are loaded. 20099 20100@item set opaque-type-resolution off 20101Tell @value{GDBN} not to resolve opaque types. In this case, the type 20102is printed as follows: 20103@smallexample 20104@{<no data fields>@} 20105@end smallexample 20106 20107@kindex show opaque-type-resolution 20108@item show opaque-type-resolution 20109Show whether opaque types are resolved or not. 20110 20111@kindex set print symbol-loading 20112@cindex print messages when symbols are loaded 20113@item set print symbol-loading 20114@itemx set print symbol-loading full 20115@itemx set print symbol-loading brief 20116@itemx set print symbol-loading off 20117The @code{set print symbol-loading} command allows you to control the 20118printing of messages when @value{GDBN} loads symbol information. 20119By default a message is printed for the executable and one for each 20120shared library, and normally this is what you want. However, when 20121debugging apps with large numbers of shared libraries these messages 20122can be annoying. 20123When set to @code{brief} a message is printed for each executable, 20124and when @value{GDBN} loads a collection of shared libraries at once 20125it will only print one message regardless of the number of shared 20126libraries. When set to @code{off} no messages are printed. 20127 20128@kindex show print symbol-loading 20129@item show print symbol-loading 20130Show whether messages will be printed when a @value{GDBN} command 20131entered from the keyboard causes symbol information to be loaded. 20132 20133@kindex maint print symbols 20134@cindex symbol dump 20135@kindex maint print psymbols 20136@cindex partial symbol dump 20137@kindex maint print msymbols 20138@cindex minimal symbol dump 20139@item maint print symbols @r{[}-pc @var{address}@r{]} @r{[}@var{filename}@r{]} 20140@itemx maint print symbols @r{[}-objfile @var{objfile}@r{]} @r{[}-source @var{source}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 20141@itemx maint print psymbols @r{[}-objfile @var{objfile}@r{]} @r{[}-pc @var{address}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 20142@itemx maint print psymbols @r{[}-objfile @var{objfile}@r{]} @r{[}-source @var{source}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 20143@itemx maint print msymbols @r{[}-objfile @var{objfile}@r{]} @r{[}--@r{]} @r{[}@var{filename}@r{]} 20144Write a dump of debugging symbol data into the file @var{filename} or 20145the terminal if @var{filename} is unspecified. 20146If @code{-objfile @var{objfile}} is specified, only dump symbols for 20147that objfile. 20148If @code{-pc @var{address}} is specified, only dump symbols for the file 20149with code at that address. Note that @var{address} may be a symbol like 20150@code{main}. 20151If @code{-source @var{source}} is specified, only dump symbols for that 20152source file. 20153 20154These commands are used to debug the @value{GDBN} symbol-reading code. 20155These commands do not modify internal @value{GDBN} state, therefore 20156@samp{maint print symbols} will only print symbols for already expanded symbol 20157tables. 20158You can use the command @code{info sources} to find out which files these are. 20159If you use @samp{maint print psymbols} instead, the dump shows information 20160about symbols that @value{GDBN} only knows partially---that is, symbols 20161defined in files that @value{GDBN} has skimmed, but not yet read completely. 20162Finally, @samp{maint print msymbols} just dumps ``minimal symbols'', e.g., 20163``ELF symbols''. 20164 20165@xref{Files, ,Commands to Specify Files}, for a discussion of how 20166@value{GDBN} reads symbols (in the description of @code{symbol-file}). 20167 20168@kindex maint info symtabs 20169@kindex maint info psymtabs 20170@cindex listing @value{GDBN}'s internal symbol tables 20171@cindex symbol tables, listing @value{GDBN}'s internal 20172@cindex full symbol tables, listing @value{GDBN}'s internal 20173@cindex partial symbol tables, listing @value{GDBN}'s internal 20174@item maint info symtabs @r{[} @var{regexp} @r{]} 20175@itemx maint info psymtabs @r{[} @var{regexp} @r{]} 20176 20177List the @code{struct symtab} or @code{struct partial_symtab} 20178structures whose names match @var{regexp}. If @var{regexp} is not 20179given, list them all. The output includes expressions which you can 20180copy into a @value{GDBN} debugging this one to examine a particular 20181structure in more detail. For example: 20182 20183@smallexample 20184(@value{GDBP}) maint info psymtabs dwarf2read 20185@{ objfile /home/gnu/build/gdb/gdb 20186 ((struct objfile *) 0x82e69d0) 20187 @{ psymtab /home/gnu/src/gdb/dwarf2read.c 20188 ((struct partial_symtab *) 0x8474b10) 20189 readin no 20190 fullname (null) 20191 text addresses 0x814d3c8 -- 0x8158074 20192 globals (* (struct partial_symbol **) 0x8507a08 @@ 9) 20193 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882) 20194 dependencies (none) 20195 @} 20196@} 20197(@value{GDBP}) maint info symtabs 20198(@value{GDBP}) 20199@end smallexample 20200@noindent 20201We see that there is one partial symbol table whose filename contains 20202the string @samp{dwarf2read}, belonging to the @samp{gdb} executable; 20203and we see that @value{GDBN} has not read in any symtabs yet at all. 20204If we set a breakpoint on a function, that will cause @value{GDBN} to 20205read the symtab for the compilation unit containing that function: 20206 20207@smallexample 20208(@value{GDBP}) break dwarf2_psymtab_to_symtab 20209Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c, 20210line 1574. 20211(@value{GDBP}) maint info symtabs 20212@{ objfile /home/gnu/build/gdb/gdb 20213 ((struct objfile *) 0x82e69d0) 20214 @{ symtab /home/gnu/src/gdb/dwarf2read.c 20215 ((struct symtab *) 0x86c1f38) 20216 dirname (null) 20217 fullname (null) 20218 blockvector ((struct blockvector *) 0x86c1bd0) (primary) 20219 linetable ((struct linetable *) 0x8370fa0) 20220 debugformat DWARF 2 20221 @} 20222@} 20223(@value{GDBP}) 20224@end smallexample 20225 20226@kindex maint info line-table 20227@cindex listing @value{GDBN}'s internal line tables 20228@cindex line tables, listing @value{GDBN}'s internal 20229@item maint info line-table @r{[} @var{regexp} @r{]} 20230 20231List the @code{struct linetable} from all @code{struct symtab} 20232instances whose name matches @var{regexp}. If @var{regexp} is not 20233given, list the @code{struct linetable} from all @code{struct symtab}. 20234For example: 20235 20236@smallexample 20237(@value{GDBP}) maint info line-table 20238objfile: /home/gnu/build/a.out ((struct objfile *) 0x6120000e0d40) 20239compunit_symtab: simple.cpp ((struct compunit_symtab *) 0x6210000ff450) 20240symtab: /home/gnu/src/simple.cpp ((struct symtab *) 0x6210000ff4d0) 20241linetable: ((struct linetable *) 0x62100012b760): 20242INDEX LINE ADDRESS IS-STMT PROLOGUE-END 202430 3 0x0000000000401110 Y 202441 4 0x0000000000401114 Y Y 202452 9 0x0000000000401120 Y 202463 10 0x0000000000401124 Y Y 202474 10 0x0000000000401129 202485 15 0x0000000000401130 Y 202496 16 0x0000000000401134 Y Y 202507 16 0x0000000000401139 202518 21 0x0000000000401140 Y 202529 22 0x000000000040114f Y Y 2025310 22 0x0000000000401154 2025411 END 0x000000000040115a Y 20255@end smallexample 20256@noindent 20257The @samp{IS-STMT} column indicates if the address is a recommended breakpoint 20258location to represent a line or a statement. The @samp{PROLOGUE-END} column 20259indicates that a given address is an adequate place to set a breakpoint at the 20260first instruction following a function prologue. 20261 20262@kindex maint set symbol-cache-size 20263@cindex symbol cache size 20264@item maint set symbol-cache-size @var{size} 20265Set the size of the symbol cache to @var{size}. 20266The default size is intended to be good enough for debugging 20267most applications. This option exists to allow for experimenting 20268with different sizes. 20269 20270@kindex maint show symbol-cache-size 20271@item maint show symbol-cache-size 20272Show the size of the symbol cache. 20273 20274@kindex maint print symbol-cache 20275@cindex symbol cache, printing its contents 20276@item maint print symbol-cache 20277Print the contents of the symbol cache. 20278This is useful when debugging symbol cache issues. 20279 20280@kindex maint print symbol-cache-statistics 20281@cindex symbol cache, printing usage statistics 20282@item maint print symbol-cache-statistics 20283Print symbol cache usage statistics. 20284This helps determine how well the cache is being utilized. 20285 20286@kindex maint flush symbol-cache 20287@kindex maint flush-symbol-cache 20288@cindex symbol cache, flushing 20289@item maint flush symbol-cache 20290@itemx maint flush-symbol-cache 20291Flush the contents of the symbol cache, all entries are removed. This 20292command is useful when debugging the symbol cache. It is also useful 20293when collecting performance data. The command @code{maint 20294flush-symbol-cache} is deprecated in favor of @code{maint flush 20295symbol-cache}.. 20296 20297@kindex maint set ignore-prologue-end-flag 20298@cindex prologue-end 20299@item maint set ignore-prologue-end-flag [on|off] 20300Enable or disable the use of the @samp{PROLOGUE-END} flag from the line-table. 20301When @samp{off} (the default), @value{GDBN} uses the @samp{PROLOGUE-END} flag 20302to place breakpoints past the end of a function prologue. When @samp{on}, 20303@value{GDBN} ignores the flag and relies on prologue analyzers to skip function 20304prologues. 20305 20306@kindex maint show ignore-prologue-end-flag 20307@item maint show ignore-prologue-end-flag 20308Show whether @value{GDBN} will ignore the @samp{PROLOGUE-END} flag. 20309 20310@end table 20311 20312@node Altering 20313@chapter Altering Execution 20314 20315Once you think you have found an error in your program, you might want to 20316find out for certain whether correcting the apparent error would lead to 20317correct results in the rest of the run. You can find the answer by 20318experiment, using the @value{GDBN} features for altering execution of the 20319program. 20320 20321For example, you can store new values into variables or memory 20322locations, give your program a signal, restart it at a different 20323address, or even return prematurely from a function. 20324 20325@menu 20326* Assignment:: Assignment to variables 20327* Jumping:: Continuing at a different address 20328* Signaling:: Giving your program a signal 20329* Returning:: Returning from a function 20330* Calling:: Calling your program's functions 20331* Patching:: Patching your program 20332* Compiling and Injecting Code:: Compiling and injecting code in @value{GDBN} 20333@end menu 20334 20335@node Assignment 20336@section Assignment to Variables 20337 20338@cindex assignment 20339@cindex setting variables 20340To alter the value of a variable, evaluate an assignment expression. 20341@xref{Expressions, ,Expressions}. For example, 20342 20343@smallexample 20344print x=4 20345@end smallexample 20346 20347@noindent 20348stores the value 4 into the variable @code{x}, and then prints the 20349value of the assignment expression (which is 4). 20350@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more 20351information on operators in supported languages. 20352 20353@kindex set variable 20354@cindex variables, setting 20355If you are not interested in seeing the value of the assignment, use the 20356@code{set} command instead of the @code{print} command. @code{set} is 20357really the same as @code{print} except that the expression's value is 20358not printed and is not put in the value history (@pxref{Value History, 20359,Value History}). The expression is evaluated only for its effects. 20360 20361If the beginning of the argument string of the @code{set} command 20362appears identical to a @code{set} subcommand, use the @code{set 20363variable} command instead of just @code{set}. This command is identical 20364to @code{set} except for its lack of subcommands. For example, if your 20365program has a variable @code{width}, you get an error if you try to set 20366a new value with just @samp{set width=13}, because @value{GDBN} has the 20367command @code{set width}: 20368 20369@smallexample 20370(@value{GDBP}) whatis width 20371type = double 20372(@value{GDBP}) p width 20373$4 = 13 20374(@value{GDBP}) set width=47 20375Invalid syntax in expression. 20376@end smallexample 20377 20378@noindent 20379The invalid expression, of course, is @samp{=47}. In 20380order to actually set the program's variable @code{width}, use 20381 20382@smallexample 20383(@value{GDBP}) set var width=47 20384@end smallexample 20385 20386Because the @code{set} command has many subcommands that can conflict 20387with the names of program variables, it is a good idea to use the 20388@code{set variable} command instead of just @code{set}. For example, if 20389your program has a variable @code{g}, you run into problems if you try 20390to set a new value with just @samp{set g=4}, because @value{GDBN} has 20391the command @code{set gnutarget}, abbreviated @code{set g}: 20392 20393@smallexample 20394@group 20395(@value{GDBP}) whatis g 20396type = double 20397(@value{GDBP}) p g 20398$1 = 1 20399(@value{GDBP}) set g=4 20400(@value{GDBP}) p g 20401$2 = 1 20402(@value{GDBP}) r 20403The program being debugged has been started already. 20404Start it from the beginning? (y or n) y 20405Starting program: /home/smith/cc_progs/a.out 20406"/home/smith/cc_progs/a.out": can't open to read symbols: 20407 Invalid bfd target. 20408(@value{GDBP}) show g 20409The current BFD target is "=4". 20410@end group 20411@end smallexample 20412 20413@noindent 20414The program variable @code{g} did not change, and you silently set the 20415@code{gnutarget} to an invalid value. In order to set the variable 20416@code{g}, use 20417 20418@smallexample 20419(@value{GDBP}) set var g=4 20420@end smallexample 20421 20422@value{GDBN} allows more implicit conversions in assignments than C; you can 20423freely store an integer value into a pointer variable or vice versa, 20424and you can convert any structure to any other structure that is the 20425same length or shorter. 20426@comment FIXME: how do structs align/pad in these conversions? 20427@comment /doc@cygnus.com 18dec1990 20428 20429To store values into arbitrary places in memory, use the @samp{@{@dots{}@}} 20430construct to generate a value of specified type at a specified address 20431(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers 20432to memory location @code{0x83040} as an integer (which implies a certain size 20433and representation in memory), and 20434 20435@smallexample 20436set @{int@}0x83040 = 4 20437@end smallexample 20438 20439@noindent 20440stores the value 4 into that memory location. 20441 20442@node Jumping 20443@section Continuing at a Different Address 20444 20445Ordinarily, when you continue your program, you do so at the place where 20446it stopped, with the @code{continue} command. You can instead continue at 20447an address of your own choosing, with the following commands: 20448 20449@table @code 20450@kindex jump 20451@kindex j @r{(@code{jump})} 20452@item jump @var{locspec} 20453@itemx j @var{locspec} 20454Resume execution at the address of the code location that results from 20455resolving @var{locspec}. 20456@xref{Location Specifications}, for a description of the different 20457forms of @var{locspec}. If @var{locspec} resolves to more than one 20458address, the command aborts before jumping. 20459Execution stops again immediately if there is a breakpoint there. It 20460is common practice to use the @code{tbreak} command in conjunction 20461with @code{jump}. @xref{Set Breaks, ,Setting Breakpoints}. 20462 20463The @code{jump} command does not change the current stack frame, or 20464the stack pointer, or the contents of any memory location or any 20465register other than the program counter. If @var{locspec} resolves to 20466an address in a different function from the one currently executing, the 20467results may be bizarre if the two functions expect different patterns 20468of arguments or of local variables. For this reason, the @code{jump} 20469command requests confirmation if the jump address is not in the 20470function currently executing. However, even bizarre results are 20471predictable if you are well acquainted with the machine-language code 20472of your program. 20473@end table 20474 20475On many systems, you can get much the same effect as the @code{jump} 20476command by storing a new value into the register @code{$pc}. The 20477difference is that this does not start your program running; it only 20478changes the address of where it @emph{will} run when you continue. For 20479example, 20480 20481@smallexample 20482set $pc = 0x485 20483@end smallexample 20484 20485@noindent 20486makes the next @code{continue} command or stepping command execute at 20487address @code{0x485}, rather than at the address where your program stopped. 20488@xref{Continuing and Stepping, ,Continuing and Stepping}. 20489 20490The most common occasion to use the @code{jump} command is to back 20491up---perhaps with more breakpoints set---over a portion of a program 20492that has already executed, in order to examine its execution in more 20493detail. 20494 20495@c @group 20496@node Signaling 20497@section Giving your Program a Signal 20498@cindex deliver a signal to a program 20499 20500@table @code 20501@kindex signal 20502@item signal @var{signal} 20503Resume execution where your program is stopped, but immediately give it the 20504signal @var{signal}. The @var{signal} can be the name or the number of a 20505signal. For example, on many systems @code{signal 2} and @code{signal 20506SIGINT} are both ways of sending an interrupt signal. 20507 20508Alternatively, if @var{signal} is zero, continue execution without 20509giving a signal. This is useful when your program stopped on account of 20510a signal and would ordinarily see the signal when resumed with the 20511@code{continue} command; @samp{signal 0} causes it to resume without a 20512signal. 20513 20514@emph{Note:} When resuming a multi-threaded program, @var{signal} is 20515delivered to the currently selected thread, not the thread that last 20516reported a stop. This includes the situation where a thread was 20517stopped due to a signal. So if you want to continue execution 20518suppressing the signal that stopped a thread, you should select that 20519same thread before issuing the @samp{signal 0} command. If you issue 20520the @samp{signal 0} command with another thread as the selected one, 20521@value{GDBN} detects that and asks for confirmation. 20522 20523Invoking the @code{signal} command is not the same as invoking the 20524@code{kill} utility from the shell. Sending a signal with @code{kill} 20525causes @value{GDBN} to decide what to do with the signal depending on 20526the signal handling tables (@pxref{Signals}). The @code{signal} command 20527passes the signal directly to your program. 20528 20529@code{signal} does not repeat when you press @key{RET} a second time 20530after executing the command. 20531 20532@kindex queue-signal 20533@item queue-signal @var{signal} 20534Queue @var{signal} to be delivered immediately to the current thread 20535when execution of the thread resumes. The @var{signal} can be the name or 20536the number of a signal. For example, on many systems @code{signal 2} and 20537@code{signal SIGINT} are both ways of sending an interrupt signal. 20538The handling of the signal must be set to pass the signal to the program, 20539otherwise @value{GDBN} will report an error. 20540You can control the handling of signals from @value{GDBN} with the 20541@code{handle} command (@pxref{Signals}). 20542 20543Alternatively, if @var{signal} is zero, any currently queued signal 20544for the current thread is discarded and when execution resumes no signal 20545will be delivered. This is useful when your program stopped on account 20546of a signal and would ordinarily see the signal when resumed with the 20547@code{continue} command. 20548 20549This command differs from the @code{signal} command in that the signal 20550is just queued, execution is not resumed. And @code{queue-signal} cannot 20551be used to pass a signal whose handling state has been set to @code{nopass} 20552(@pxref{Signals}). 20553@end table 20554@c @end group 20555 20556@xref{stepping into signal handlers}, for information on how stepping 20557commands behave when the thread has a signal queued. 20558 20559@node Returning 20560@section Returning from a Function 20561 20562@table @code 20563@cindex returning from a function 20564@kindex return 20565@item return 20566@itemx return @var{expression} 20567You can cancel execution of a function call with the @code{return} 20568command. If you give an 20569@var{expression} argument, its value is used as the function's return 20570value. 20571@end table 20572 20573When you use @code{return}, @value{GDBN} discards the selected stack frame 20574(and all frames within it). You can think of this as making the 20575discarded frame return prematurely. If you wish to specify a value to 20576be returned, give that value as the argument to @code{return}. 20577 20578This pops the selected stack frame (@pxref{Selection, ,Selecting a 20579Frame}), and any other frames inside of it, leaving its caller as the 20580innermost remaining frame. That frame becomes selected. The 20581specified value is stored in the registers used for returning values 20582of functions. 20583 20584The @code{return} command does not resume execution; it leaves the 20585program stopped in the state that would exist if the function had just 20586returned. In contrast, the @code{finish} command (@pxref{Continuing 20587and Stepping, ,Continuing and Stepping}) resumes execution until the 20588selected stack frame returns naturally. 20589 20590@value{GDBN} needs to know how the @var{expression} argument should be set for 20591the inferior. The concrete registers assignment depends on the OS ABI and the 20592type being returned by the selected stack frame. For example it is common for 20593OS ABI to return floating point values in FPU registers while integer values in 20594CPU registers. Still some ABIs return even floating point values in CPU 20595registers. Larger integer widths (such as @code{long long int}) also have 20596specific placement rules. @value{GDBN} already knows the OS ABI from its 20597current target so it needs to find out also the type being returned to make the 20598assignment into the right register(s). 20599 20600Normally, the selected stack frame has debug info. @value{GDBN} will always 20601use the debug info instead of the implicit type of @var{expression} when the 20602debug info is available. For example, if you type @kbd{return -1}, and the 20603function in the current stack frame is declared to return a @code{long long 20604int}, @value{GDBN} transparently converts the implicit @code{int} value of -1 20605into a @code{long long int}: 20606 20607@smallexample 20608Breakpoint 1, func () at gdb.base/return-nodebug.c:29 2060929 return 31; 20610(@value{GDBP}) return -1 20611Make func return now? (y or n) y 20612#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43 2061343 printf ("result=%lld\n", func ()); 20614(@value{GDBP}) 20615@end smallexample 20616 20617However, if the selected stack frame does not have a debug info, e.g., if the 20618function was compiled without debug info, @value{GDBN} has to find out the type 20619to return from user. Specifying a different type by mistake may set the value 20620in different inferior registers than the caller code expects. For example, 20621typing @kbd{return -1} with its implicit type @code{int} would set only a part 20622of a @code{long long int} result for a debug info less function (on 32-bit 20623architectures). Therefore the user is required to specify the return type by 20624an appropriate cast explicitly: 20625 20626@smallexample 20627Breakpoint 2, 0x0040050b in func () 20628(@value{GDBP}) return -1 20629Return value type not available for selected stack frame. 20630Please use an explicit cast of the value to return. 20631(@value{GDBP}) return (long long int) -1 20632Make selected stack frame return now? (y or n) y 20633#0 0x00400526 in main () 20634(@value{GDBP}) 20635@end smallexample 20636 20637@node Calling 20638@section Calling Program Functions 20639 20640@table @code 20641@cindex calling functions 20642@cindex inferior functions, calling 20643@item print @var{expr} 20644Evaluate the expression @var{expr} and display the resulting value. 20645The expression may include calls to functions in the program being 20646debugged. 20647 20648@kindex call 20649@item call @var{expr} 20650Evaluate the expression @var{expr} without displaying @code{void} 20651returned values. 20652 20653You can use this variant of the @code{print} command if you want to 20654execute a function from your program that does not return anything 20655(a.k.a.@: @dfn{a void function}), but without cluttering the output 20656with @code{void} returned values that @value{GDBN} will otherwise 20657print. If the result is not void, it is printed and saved in the 20658value history. 20659@end table 20660 20661It is possible for the function you call via the @code{print} or 20662@code{call} command to generate a signal (e.g., if there's a bug in 20663the function, or if you passed it incorrect arguments). What happens 20664in that case is controlled by the @code{set unwindonsignal} command. 20665 20666Similarly, with a C@t{++} program it is possible for the function you 20667call via the @code{print} or @code{call} command to generate an 20668exception that is not handled due to the constraints of the dummy 20669frame. In this case, any exception that is raised in the frame, but has 20670an out-of-frame exception handler will not be found. GDB builds a 20671dummy-frame for the inferior function call, and the unwinder cannot 20672seek for exception handlers outside of this dummy-frame. What happens 20673in that case is controlled by the 20674@code{set unwind-on-terminating-exception} command. 20675 20676@table @code 20677@item set unwindonsignal 20678@kindex set unwindonsignal 20679@cindex unwind stack in called functions 20680@cindex call dummy stack unwinding 20681Set unwinding of the stack if a signal is received while in a function 20682that @value{GDBN} called in the program being debugged. If set to on, 20683@value{GDBN} unwinds the stack it created for the call and restores 20684the context to what it was before the call. If set to off (the 20685default), @value{GDBN} stops in the frame where the signal was 20686received. 20687 20688@item show unwindonsignal 20689@kindex show unwindonsignal 20690Show the current setting of stack unwinding in the functions called by 20691@value{GDBN}. 20692 20693@item set unwind-on-terminating-exception 20694@kindex set unwind-on-terminating-exception 20695@cindex unwind stack in called functions with unhandled exceptions 20696@cindex call dummy stack unwinding on unhandled exception. 20697Set unwinding of the stack if a C@t{++} exception is raised, but left 20698unhandled while in a function that @value{GDBN} called in the program being 20699debugged. If set to on (the default), @value{GDBN} unwinds the stack 20700it created for the call and restores the context to what it was before 20701the call. If set to off, @value{GDBN} the exception is delivered to 20702the default C@t{++} exception handler and the inferior terminated. 20703 20704@item show unwind-on-terminating-exception 20705@kindex show unwind-on-terminating-exception 20706Show the current setting of stack unwinding in the functions called by 20707@value{GDBN}. 20708 20709@item set may-call-functions 20710@kindex set may-call-functions 20711@cindex disabling calling functions in the program 20712@cindex calling functions in the program, disabling 20713Set permission to call functions in the program. 20714This controls whether @value{GDBN} will attempt to call functions in 20715the program, such as with expressions in the @code{print} command. It 20716defaults to @code{on}. 20717 20718To call a function in the program, @value{GDBN} has to temporarily 20719modify the state of the inferior. This has potentially undesired side 20720effects. Also, having @value{GDBN} call nested functions is likely to 20721be erroneous and may even crash the program being debugged. You can 20722avoid such hazards by forbidding @value{GDBN} from calling functions 20723in the program being debugged. If calling functions in the program 20724is forbidden, GDB will throw an error when a command (such as printing 20725an expression) starts a function call in the program. 20726 20727@item show may-call-functions 20728@kindex show may-call-functions 20729Show permission to call functions in the program. 20730 20731@end table 20732 20733@subsection Calling functions with no debug info 20734 20735@cindex no debug info functions 20736Sometimes, a function you wish to call is missing debug information. 20737In such case, @value{GDBN} does not know the type of the function, 20738including the types of the function's parameters. To avoid calling 20739the inferior function incorrectly, which could result in the called 20740function functioning erroneously and even crash, @value{GDBN} refuses 20741to call the function unless you tell it the type of the function. 20742 20743For prototyped (i.e.@: ANSI/ISO style) functions, there are two ways 20744to do that. The simplest is to cast the call to the function's 20745declared return type. For example: 20746 20747@smallexample 20748(@value{GDBP}) p getenv ("PATH") 20749'getenv' has unknown return type; cast the call to its declared return type 20750(@value{GDBP}) p (char *) getenv ("PATH") 20751$1 = 0x7fffffffe7ba "/usr/local/bin:/"... 20752@end smallexample 20753 20754Casting the return type of a no-debug function is equivalent to 20755casting the function to a pointer to a prototyped function that has a 20756prototype that matches the types of the passed-in arguments, and 20757calling that. I.e., the call above is equivalent to: 20758 20759@smallexample 20760(@value{GDBP}) p ((char * (*) (const char *)) getenv) ("PATH") 20761@end smallexample 20762 20763@noindent 20764and given this prototyped C or C++ function with float parameters: 20765 20766@smallexample 20767float multiply (float v1, float v2) @{ return v1 * v2; @} 20768@end smallexample 20769 20770@noindent 20771these calls are equivalent: 20772 20773@smallexample 20774(@value{GDBP}) p (float) multiply (2.0f, 3.0f) 20775(@value{GDBP}) p ((float (*) (float, float)) multiply) (2.0f, 3.0f) 20776@end smallexample 20777 20778If the function you wish to call is declared as unprototyped (i.e.@: 20779old K&R style), you must use the cast-to-function-pointer syntax, so 20780that @value{GDBN} knows that it needs to apply default argument 20781promotions (promote float arguments to double). @xref{ABI, float 20782promotion}. For example, given this unprototyped C function with 20783float parameters, and no debug info: 20784 20785@smallexample 20786float 20787multiply_noproto (v1, v2) 20788 float v1, v2; 20789@{ 20790 return v1 * v2; 20791@} 20792@end smallexample 20793 20794@noindent 20795you call it like this: 20796 20797@smallexample 20798 (@value{GDBP}) p ((float (*) ()) multiply_noproto) (2.0f, 3.0f) 20799@end smallexample 20800 20801@node Patching 20802@section Patching Programs 20803 20804@cindex patching binaries 20805@cindex writing into executables 20806@cindex writing into corefiles 20807 20808By default, @value{GDBN} opens the file containing your program's 20809executable code (or the corefile) read-only. This prevents accidental 20810alterations to machine code; but it also prevents you from intentionally 20811patching your program's binary. 20812 20813If you'd like to be able to patch the binary, you can specify that 20814explicitly with the @code{set write} command. For example, you might 20815want to turn on internal debugging flags, or even to make emergency 20816repairs. 20817 20818@table @code 20819@kindex set write 20820@item set write on 20821@itemx set write off 20822If you specify @samp{set write on}, @value{GDBN} opens executable and 20823core files for both reading and writing; if you specify @kbd{set write 20824off} (the default), @value{GDBN} opens them read-only. 20825 20826If you have already loaded a file, you must load it again (using the 20827@code{exec-file} or @code{core-file} command) after changing @code{set 20828write}, for your new setting to take effect. 20829 20830@item show write 20831@kindex show write 20832Display whether executable files and core files are opened for writing 20833as well as reading. 20834@end table 20835 20836@node Compiling and Injecting Code 20837@section Compiling and injecting code in @value{GDBN} 20838@cindex injecting code 20839@cindex writing into executables 20840@cindex compiling code 20841 20842@value{GDBN} supports on-demand compilation and code injection into 20843programs running under @value{GDBN}. GCC 5.0 or higher built with 20844@file{libcc1.so} must be installed for this functionality to be enabled. 20845This functionality is implemented with the following commands. 20846 20847@table @code 20848@kindex compile code 20849@item compile code @var{source-code} 20850@itemx compile code -raw @var{--} @var{source-code} 20851Compile @var{source-code} with the compiler language found as the current 20852language in @value{GDBN} (@pxref{Languages}). If compilation and 20853injection is not supported with the current language specified in 20854@value{GDBN}, or the compiler does not support this feature, an error 20855message will be printed. If @var{source-code} compiles and links 20856successfully, @value{GDBN} will load the object-code emitted, 20857and execute it within the context of the currently selected inferior. 20858It is important to note that the compiled code is executed immediately. 20859After execution, the compiled code is removed from @value{GDBN} and any 20860new types or variables you have defined will be deleted. 20861 20862The command allows you to specify @var{source-code} in two ways. 20863The simplest method is to provide a single line of code to the command. 20864E.g.: 20865 20866@smallexample 20867compile code printf ("hello world\n"); 20868@end smallexample 20869 20870If you specify options on the command line as well as source code, they 20871may conflict. The @samp{--} delimiter can be used to separate options 20872from actual source code. E.g.: 20873 20874@smallexample 20875compile code -r -- printf ("hello world\n"); 20876@end smallexample 20877 20878Alternatively you can enter source code as multiple lines of text. To 20879enter this mode, invoke the @samp{compile code} command without any text 20880following the command. This will start the multiple-line editor and 20881allow you to type as many lines of source code as required. When you 20882have completed typing, enter @samp{end} on its own line to exit the 20883editor. 20884 20885@smallexample 20886compile code 20887>printf ("hello\n"); 20888>printf ("world\n"); 20889>end 20890@end smallexample 20891 20892Specifying @samp{-raw}, prohibits @value{GDBN} from wrapping the 20893provided @var{source-code} in a callable scope. In this case, you must 20894specify the entry point of the code by defining a function named 20895@code{_gdb_expr_}. The @samp{-raw} code cannot access variables of the 20896inferior. Using @samp{-raw} option may be needed for example when 20897@var{source-code} requires @samp{#include} lines which may conflict with 20898inferior symbols otherwise. 20899 20900@kindex compile file 20901@item compile file @var{filename} 20902@itemx compile file -raw @var{filename} 20903Like @code{compile code}, but take the source code from @var{filename}. 20904 20905@smallexample 20906compile file /home/user/example.c 20907@end smallexample 20908@end table 20909 20910@table @code 20911@item compile print [[@var{options}] --] @var{expr} 20912@itemx compile print [[@var{options}] --] /@var{f} @var{expr} 20913Compile and execute @var{expr} with the compiler language found as the 20914current language in @value{GDBN} (@pxref{Languages}). By default the 20915value of @var{expr} is printed in a format appropriate to its data type; 20916you can choose a different format by specifying @samp{/@var{f}}, where 20917@var{f} is a letter specifying the format; see @ref{Output Formats,,Output 20918Formats}. The @code{compile print} command accepts the same options 20919as the @code{print} command; see @ref{print options}. 20920 20921@item compile print [[@var{options}] --] 20922@itemx compile print [[@var{options}] --] /@var{f} 20923@cindex reprint the last value 20924Alternatively you can enter the expression (source code producing it) as 20925multiple lines of text. To enter this mode, invoke the @samp{compile print} 20926command without any text following the command. This will start the 20927multiple-line editor. 20928@end table 20929 20930@noindent 20931The process of compiling and injecting the code can be inspected using: 20932 20933@table @code 20934@anchor{set debug compile} 20935@item set debug compile 20936@cindex compile command debugging info 20937Turns on or off display of @value{GDBN} process of compiling and 20938injecting the code. The default is off. 20939 20940@item show debug compile 20941Displays the current state of displaying @value{GDBN} process of 20942compiling and injecting the code. 20943 20944@anchor{set debug compile-cplus-types} 20945@item set debug compile-cplus-types 20946@cindex compile C@t{++} type conversion 20947Turns on or off the display of C@t{++} type conversion debugging information. 20948The default is off. 20949 20950@item show debug compile-cplus-types 20951Displays the current state of displaying debugging information for 20952C@t{++} type conversion. 20953@end table 20954 20955@subsection Compilation options for the @code{compile} command 20956 20957@value{GDBN} needs to specify the right compilation options for the code 20958to be injected, in part to make its ABI compatible with the inferior 20959and in part to make the injected code compatible with @value{GDBN}'s 20960injecting process. 20961 20962@noindent 20963The options used, in increasing precedence: 20964 20965@table @asis 20966@item target architecture and OS options (@code{gdbarch}) 20967These options depend on target processor type and target operating 20968system, usually they specify at least 32-bit (@code{-m32}) or 64-bit 20969(@code{-m64}) compilation option. 20970 20971@item compilation options recorded in the target 20972@value{NGCC} (since version 4.7) stores the options used for compilation 20973into @code{DW_AT_producer} part of DWARF debugging information according 20974to the @value{NGCC} option @code{-grecord-gcc-switches}. One has to 20975explicitly specify @code{-g} during inferior compilation otherwise 20976@value{NGCC} produces no DWARF. This feature is only relevant for 20977platforms where @code{-g} produces DWARF by default, otherwise one may 20978try to enforce DWARF by using @code{-gdwarf-4}. 20979 20980@item compilation options set by @code{set compile-args} 20981@end table 20982 20983@noindent 20984You can override compilation options using the following command: 20985 20986@table @code 20987@item set compile-args 20988@cindex compile command options override 20989Set compilation options used for compiling and injecting code with the 20990@code{compile} commands. These options override any conflicting ones 20991from the target architecture and/or options stored during inferior 20992compilation. 20993 20994@item show compile-args 20995Displays the current state of compilation options override. 20996This does not show all the options actually used during compilation, 20997use @ref{set debug compile} for that. 20998@end table 20999 21000@subsection Caveats when using the @code{compile} command 21001 21002There are a few caveats to keep in mind when using the @code{compile} 21003command. As the caveats are different per language, the table below 21004highlights specific issues on a per language basis. 21005 21006@table @asis 21007@item C code examples and caveats 21008When the language in @value{GDBN} is set to @samp{C}, the compiler will 21009attempt to compile the source code with a @samp{C} compiler. The source 21010code provided to the @code{compile} command will have much the same 21011access to variables and types as it normally would if it were part of 21012the program currently being debugged in @value{GDBN}. 21013 21014Below is a sample program that forms the basis of the examples that 21015follow. This program has been compiled and loaded into @value{GDBN}, 21016much like any other normal debugging session. 21017 21018@smallexample 21019void function1 (void) 21020@{ 21021 int i = 42; 21022 printf ("function 1\n"); 21023@} 21024 21025void function2 (void) 21026@{ 21027 int j = 12; 21028 function1 (); 21029@} 21030 21031int main(void) 21032@{ 21033 int k = 6; 21034 int *p; 21035 function2 (); 21036 return 0; 21037@} 21038@end smallexample 21039 21040For the purposes of the examples in this section, the program above has 21041been compiled, loaded into @value{GDBN}, stopped at the function 21042@code{main}, and @value{GDBN} is awaiting input from the user. 21043 21044To access variables and types for any program in @value{GDBN}, the 21045program must be compiled and packaged with debug information. The 21046@code{compile} command is not an exception to this rule. Without debug 21047information, you can still use the @code{compile} command, but you will 21048be very limited in what variables and types you can access. 21049 21050So with that in mind, the example above has been compiled with debug 21051information enabled. The @code{compile} command will have access to 21052all variables and types (except those that may have been optimized 21053out). Currently, as @value{GDBN} has stopped the program in the 21054@code{main} function, the @code{compile} command would have access to 21055the variable @code{k}. You could invoke the @code{compile} command 21056and type some source code to set the value of @code{k}. You can also 21057read it, or do anything with that variable you would normally do in 21058@code{C}. Be aware that changes to inferior variables in the 21059@code{compile} command are persistent. In the following example: 21060 21061@smallexample 21062compile code k = 3; 21063@end smallexample 21064 21065@noindent 21066the variable @code{k} is now 3. It will retain that value until 21067something else in the example program changes it, or another 21068@code{compile} command changes it. 21069 21070Normal scope and access rules apply to source code compiled and 21071injected by the @code{compile} command. In the example, the variables 21072@code{j} and @code{k} are not accessible yet, because the program is 21073currently stopped in the @code{main} function, where these variables 21074are not in scope. Therefore, the following command 21075 21076@smallexample 21077compile code j = 3; 21078@end smallexample 21079 21080@noindent 21081will result in a compilation error message. 21082 21083Once the program is continued, execution will bring these variables in 21084scope, and they will become accessible; then the code you specify via 21085the @code{compile} command will be able to access them. 21086 21087You can create variables and types with the @code{compile} command as 21088part of your source code. Variables and types that are created as part 21089of the @code{compile} command are not visible to the rest of the program for 21090the duration of its run. This example is valid: 21091 21092@smallexample 21093compile code int ff = 5; printf ("ff is %d\n", ff); 21094@end smallexample 21095 21096However, if you were to type the following into @value{GDBN} after that 21097command has completed: 21098 21099@smallexample 21100compile code printf ("ff is %d\n'', ff); 21101@end smallexample 21102 21103@noindent 21104a compiler error would be raised as the variable @code{ff} no longer 21105exists. Object code generated and injected by the @code{compile} 21106command is removed when its execution ends. Caution is advised 21107when assigning to program variables values of variables created by the 21108code submitted to the @code{compile} command. This example is valid: 21109 21110@smallexample 21111compile code int ff = 5; k = ff; 21112@end smallexample 21113 21114The value of the variable @code{ff} is assigned to @code{k}. The variable 21115@code{k} does not require the existence of @code{ff} to maintain the value 21116it has been assigned. However, pointers require particular care in 21117assignment. If the source code compiled with the @code{compile} command 21118changed the address of a pointer in the example program, perhaps to a 21119variable created in the @code{compile} command, that pointer would point 21120to an invalid location when the command exits. The following example 21121would likely cause issues with your debugged program: 21122 21123@smallexample 21124compile code int ff = 5; p = &ff; 21125@end smallexample 21126 21127In this example, @code{p} would point to @code{ff} when the 21128@code{compile} command is executing the source code provided to it. 21129However, as variables in the (example) program persist with their 21130assigned values, the variable @code{p} would point to an invalid 21131location when the command exists. A general rule should be followed 21132in that you should either assign @code{NULL} to any assigned pointers, 21133or restore a valid location to the pointer before the command exits. 21134 21135Similar caution must be exercised with any structs, unions, and typedefs 21136defined in @code{compile} command. Types defined in the @code{compile} 21137command will no longer be available in the next @code{compile} command. 21138Therefore, if you cast a variable to a type defined in the 21139@code{compile} command, care must be taken to ensure that any future 21140need to resolve the type can be achieved. 21141 21142@smallexample 21143(gdb) compile code static struct a @{ int a; @} v = @{ 42 @}; argv = &v; 21144(gdb) compile code printf ("%d\n", ((struct a *) argv)->a); 21145gdb command line:1:36: error: dereferencing pointer to incomplete type ‘struct a’ 21146Compilation failed. 21147(gdb) compile code struct a @{ int a; @}; printf ("%d\n", ((struct a *) argv)->a); 2114842 21149@end smallexample 21150 21151Variables that have been optimized away by the compiler are not 21152accessible to the code submitted to the @code{compile} command. 21153Access to those variables will generate a compiler error which @value{GDBN} 21154will print to the console. 21155@end table 21156 21157@subsection Compiler search for the @code{compile} command 21158 21159@value{GDBN} needs to find @value{NGCC} for the inferior being debugged 21160which may not be obvious for remote targets of different architecture 21161than where @value{GDBN} is running. Environment variable @env{PATH} on 21162@value{GDBN} host is searched for @value{NGCC} binary matching the 21163target architecture and operating system. This search can be overriden 21164by @code{set compile-gcc} @value{GDBN} command below. @env{PATH} is 21165taken from shell that executed @value{GDBN}, it is not the value set by 21166@value{GDBN} command @code{set environment}). @xref{Environment}. 21167 21168 21169Specifically @env{PATH} is searched for binaries matching regular expression 21170@code{@var{arch}(-[^-]*)?-@var{os}-gcc} according to the inferior target being 21171debugged. @var{arch} is processor name --- multiarch is supported, so for 21172example both @code{i386} and @code{x86_64} targets look for pattern 21173@code{(x86_64|i.86)} and both @code{s390} and @code{s390x} targets look 21174for pattern @code{s390x?}. @var{os} is currently supported only for 21175pattern @code{linux(-gnu)?}. 21176 21177On Posix hosts the compiler driver @value{GDBN} needs to find also 21178shared library @file{libcc1.so} from the compiler. It is searched in 21179default shared library search path (overridable with usual environment 21180variable @env{LD_LIBRARY_PATH}), unrelated to @env{PATH} or @code{set 21181compile-gcc} settings. Contrary to it @file{libcc1plugin.so} is found 21182according to the installation of the found compiler --- as possibly 21183specified by the @code{set compile-gcc} command. 21184 21185@table @code 21186@item set compile-gcc 21187@cindex compile command driver filename override 21188Set compilation command used for compiling and injecting code with the 21189@code{compile} commands. If this option is not set (it is set to 21190an empty string), the search described above will occur --- that is the 21191default. 21192 21193@item show compile-gcc 21194Displays the current compile command @value{NGCC} driver filename. 21195If set, it is the main command @command{gcc}, found usually for example 21196under name @file{x86_64-linux-gnu-gcc}. 21197@end table 21198 21199@node GDB Files 21200@chapter @value{GDBN} Files 21201 21202@value{GDBN} needs to know the file name of the program to be debugged, 21203both in order to read its symbol table and in order to start your 21204program. To debug a core dump of a previous run, you must also tell 21205@value{GDBN} the name of the core dump file. 21206 21207@menu 21208* Files:: Commands to specify files 21209* File Caching:: Information about @value{GDBN}'s file caching 21210* Separate Debug Files:: Debugging information in separate files 21211* MiniDebugInfo:: Debugging information in a special section 21212* Index Files:: Index files speed up GDB 21213* Symbol Errors:: Errors reading symbol files 21214* Data Files:: GDB data files 21215@end menu 21216 21217@node Files 21218@section Commands to Specify Files 21219 21220@cindex symbol table 21221@cindex core dump file 21222 21223You may want to specify executable and core dump file names. The usual 21224way to do this is at start-up time, using the arguments to 21225@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and 21226Out of @value{GDBN}}). 21227 21228Occasionally it is necessary to change to a different file during a 21229@value{GDBN} session. Or you may run @value{GDBN} and forget to 21230specify a file you want to use. Or you are debugging a remote target 21231via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver} 21232Program}). In these situations the @value{GDBN} commands to specify 21233new files are useful. 21234 21235@table @code 21236@cindex executable file 21237@kindex file 21238@item file @var{filename} 21239Use @var{filename} as the program to be debugged. It is read for its 21240symbols and for the contents of pure memory. It is also the program 21241executed when you use the @code{run} command. If you do not specify a 21242directory and the file is not found in the @value{GDBN} working directory, 21243@value{GDBN} uses the environment variable @env{PATH} as a list of 21244directories to search, just as the shell does when looking for a program 21245to run. You can change the value of this variable, for both @value{GDBN} 21246and your program, using the @code{path} command. 21247 21248@cindex unlinked object files 21249@cindex patching object files 21250You can load unlinked object @file{.o} files into @value{GDBN} using 21251the @code{file} command. You will not be able to ``run'' an object 21252file, but you can disassemble functions and inspect variables. Also, 21253if the underlying BFD functionality supports it, you could use 21254@kbd{gdb -write} to patch object files using this technique. Note 21255that @value{GDBN} can neither interpret nor modify relocations in this 21256case, so branches and some initialized variables will appear to go to 21257the wrong place. But this feature is still handy from time to time. 21258 21259@item file 21260@code{file} with no argument makes @value{GDBN} discard any information it 21261has on both executable file and the symbol table. 21262 21263@kindex exec-file 21264@item exec-file @r{[} @var{filename} @r{]} 21265Specify that the program to be run (but not the symbol table) is found 21266in @var{filename}. @value{GDBN} searches the environment variable @env{PATH} 21267if necessary to locate your program. Omitting @var{filename} means to 21268discard information on the executable file. 21269 21270@kindex symbol-file 21271@item symbol-file @r{[} @var{filename} @r{[} -o @var{offset} @r{]]} 21272Read symbol table information from file @var{filename}. @env{PATH} is 21273searched when necessary. Use the @code{file} command to get both symbol 21274table and program to run from the same file. 21275 21276If an optional @var{offset} is specified, it is added to the start 21277address of each section in the symbol file. This is useful if the 21278program is relocated at runtime, such as the Linux kernel with kASLR 21279enabled. 21280 21281@code{symbol-file} with no argument clears out @value{GDBN} information on your 21282program's symbol table. 21283 21284The @code{symbol-file} command causes @value{GDBN} to forget the contents of 21285some breakpoints and auto-display expressions. This is because they may 21286contain pointers to the internal data recording symbols and data types, 21287which are part of the old symbol table data being discarded inside 21288@value{GDBN}. 21289 21290@code{symbol-file} does not repeat if you press @key{RET} again after 21291executing it once. 21292 21293When @value{GDBN} is configured for a particular environment, it 21294understands debugging information in whatever format is the standard 21295generated for that environment; you may use either a @sc{gnu} compiler, or 21296other compilers that adhere to the local conventions. 21297Best results are usually obtained from @sc{gnu} compilers; for example, 21298using @code{@value{NGCC}} you can generate debugging information for 21299optimized code. 21300 21301For most kinds of object files, with the exception of old SVR3 systems 21302using COFF, the @code{symbol-file} command does not normally read the 21303symbol table in full right away. Instead, it scans the symbol table 21304quickly to find which source files and which symbols are present. The 21305details are read later, one source file at a time, as they are needed. 21306 21307The purpose of this two-stage reading strategy is to make @value{GDBN} 21308start up faster. For the most part, it is invisible except for 21309occasional pauses while the symbol table details for a particular source 21310file are being read. (The @code{set verbose} command can turn these 21311pauses into messages if desired. @xref{Messages/Warnings, ,Optional 21312Warnings and Messages}.) 21313 21314We have not implemented the two-stage strategy for COFF yet. When the 21315symbol table is stored in COFF format, @code{symbol-file} reads the 21316symbol table data in full right away. Note that ``stabs-in-COFF'' 21317still does the two-stage strategy, since the debug info is actually 21318in stabs format. 21319 21320@kindex readnow 21321@cindex reading symbols immediately 21322@cindex symbols, reading immediately 21323@item symbol-file @r{[} -readnow @r{]} @var{filename} 21324@itemx file @r{[} -readnow @r{]} @var{filename} 21325You can override the @value{GDBN} two-stage strategy for reading symbol 21326tables by using the @samp{-readnow} option with any of the commands that 21327load symbol table information, if you want to be sure @value{GDBN} has the 21328entire symbol table available. 21329 21330@cindex @code{-readnever}, option for symbol-file command 21331@cindex never read symbols 21332@cindex symbols, never read 21333@item symbol-file @r{[} -readnever @r{]} @var{filename} 21334@itemx file @r{[} -readnever @r{]} @var{filename} 21335You can instruct @value{GDBN} to never read the symbolic information 21336contained in @var{filename} by using the @samp{-readnever} option. 21337@xref{--readnever}. 21338 21339@c FIXME: for now no mention of directories, since this seems to be in 21340@c flux. 13mar1992 status is that in theory GDB would look either in 21341@c current dir or in same dir as myprog; but issues like competing 21342@c GDB's, or clutter in system dirs, mean that in practice right now 21343@c only current dir is used. FFish says maybe a special GDB hierarchy 21344@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol 21345@c files. 21346 21347@kindex core-file 21348@item core-file @r{[}@var{filename}@r{]} 21349@itemx core 21350Specify the whereabouts of a core dump file to be used as the ``contents 21351of memory''. Traditionally, core files contain only some parts of the 21352address space of the process that generated them; @value{GDBN} can access the 21353executable file itself for other parts. 21354 21355@code{core-file} with no argument specifies that no core file is 21356to be used. 21357 21358Note that the core file is ignored when your program is actually running 21359under @value{GDBN}. So, if you have been running your program and you 21360wish to debug a core file instead, you must kill the subprocess in which 21361the program is running. To do this, use the @code{kill} command 21362(@pxref{Kill Process, ,Killing the Child Process}). 21363 21364@kindex add-symbol-file 21365@cindex dynamic linking 21366@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{]} 21367The @code{add-symbol-file} command reads additional symbol table 21368information from the file @var{filename}. You would use this command 21369when @var{filename} has been dynamically loaded (by some other means) 21370into the program that is running. The @var{textaddress} parameter gives 21371the memory address at which the file's text section has been loaded. 21372You can additionally specify the base address of other sections using 21373an arbitrary number of @samp{-s @var{section} @var{address}} pairs. 21374If a section is omitted, @value{GDBN} will use its default addresses 21375as found in @var{filename}. Any @var{address} or @var{textaddress} 21376can be given as an expression. 21377 21378If an optional @var{offset} is specified, it is added to the start 21379address of each section, except those for which the address was 21380specified explicitly. 21381 21382The symbol table of the file @var{filename} is added to the symbol table 21383originally read with the @code{symbol-file} command. You can use the 21384@code{add-symbol-file} command any number of times; the new symbol data 21385thus read is kept in addition to the old. 21386 21387Changes can be reverted using the command @code{remove-symbol-file}. 21388 21389@cindex relocatable object files, reading symbols from 21390@cindex object files, relocatable, reading symbols from 21391@cindex reading symbols from relocatable object files 21392@cindex symbols, reading from relocatable object files 21393@cindex @file{.o} files, reading symbols from 21394Although @var{filename} is typically a shared library file, an 21395executable file, or some other object file which has been fully 21396relocated for loading into a process, you can also load symbolic 21397information from relocatable @file{.o} files, as long as: 21398 21399@itemize @bullet 21400@item 21401the file's symbolic information refers only to linker symbols defined in 21402that file, not to symbols defined by other object files, 21403@item 21404every section the file's symbolic information refers to has actually 21405been loaded into the inferior, as it appears in the file, and 21406@item 21407you can determine the address at which every section was loaded, and 21408provide these to the @code{add-symbol-file} command. 21409@end itemize 21410 21411@noindent 21412Some embedded operating systems, like Sun Chorus and VxWorks, can load 21413relocatable files into an already running program; such systems 21414typically make the requirements above easy to meet. However, it's 21415important to recognize that many native systems use complex link 21416procedures (@code{.linkonce} section factoring and C@t{++} constructor table 21417assembly, for example) that make the requirements difficult to meet. In 21418general, one cannot assume that using @code{add-symbol-file} to read a 21419relocatable object file's symbolic information will have the same effect 21420as linking the relocatable object file into the program in the normal 21421way. 21422 21423@code{add-symbol-file} does not repeat if you press @key{RET} after using it. 21424 21425@kindex remove-symbol-file 21426@item remove-symbol-file @var{filename} 21427@item remove-symbol-file -a @var{address} 21428Remove a symbol file added via the @code{add-symbol-file} command. The 21429file to remove can be identified by its @var{filename} or by an @var{address} 21430that lies within the boundaries of this symbol file in memory. Example: 21431 21432@smallexample 21433(gdb) add-symbol-file /home/user/gdb/mylib.so 0x7ffff7ff9480 21434add symbol table from file "/home/user/gdb/mylib.so" at 21435 .text_addr = 0x7ffff7ff9480 21436(y or n) y 21437Reading symbols from /home/user/gdb/mylib.so... 21438(gdb) remove-symbol-file -a 0x7ffff7ff9480 21439Remove symbol table from file "/home/user/gdb/mylib.so"? (y or n) y 21440(gdb) 21441@end smallexample 21442 21443 21444@code{remove-symbol-file} does not repeat if you press @key{RET} after using it. 21445 21446@kindex add-symbol-file-from-memory 21447@cindex @code{syscall DSO} 21448@cindex load symbols from memory 21449@item add-symbol-file-from-memory @var{address} 21450Load symbols from the given @var{address} in a dynamically loaded 21451object file whose image is mapped directly into the inferior's memory. 21452For example, the Linux kernel maps a @code{syscall DSO} into each 21453process's address space; this DSO provides kernel-specific code for 21454some system calls. The argument can be any expression whose 21455evaluation yields the address of the file's shared object file header. 21456For this command to work, you must have used @code{symbol-file} or 21457@code{exec-file} commands in advance. 21458 21459@kindex section 21460@item section @var{section} @var{addr} 21461The @code{section} command changes the base address of the named 21462@var{section} of the exec file to @var{addr}. This can be used if the 21463exec file does not contain section addresses, (such as in the 21464@code{a.out} format), or when the addresses specified in the file 21465itself are wrong. Each section must be changed separately. The 21466@code{info files} command, described below, lists all the sections and 21467their addresses. 21468 21469@kindex info files 21470@kindex info target 21471@item info files 21472@itemx info target 21473@code{info files} and @code{info target} are synonymous; both print the 21474current target (@pxref{Targets, ,Specifying a Debugging Target}), 21475including the names of the executable and core dump files currently in 21476use by @value{GDBN}, and the files from which symbols were loaded. The 21477command @code{help target} lists all possible targets rather than 21478current ones. 21479 21480@kindex maint info sections 21481@item maint info sections @r{[}-all-objects@r{]} @r{[}@var{filter-list}@r{]} 21482Another command that can give you extra information about program sections 21483is @code{maint info sections}. In addition to the section information 21484displayed by @code{info files}, this command displays the flags and file 21485offset of each section in the executable and core dump files. 21486 21487When @samp{-all-objects} is passed then sections from all loaded object 21488files, including shared libraries, are printed. 21489 21490The optional @var{filter-list} is a space separated list of filter 21491keywords. Sections that match any one of the filter criteria will be 21492printed. There are two types of filter: 21493 21494@table @code 21495@item @var{section-name} 21496Display information about any section named @var{section-name}. 21497@item @var{section-flag} 21498Display information for any section with @var{section-flag}. The 21499section flags that @value{GDBN} currently knows about are: 21500@table @code 21501@item ALLOC 21502Section will have space allocated in the process when loaded. 21503Set for all sections except those containing debug information. 21504@item LOAD 21505Section will be loaded from the file into the child process memory. 21506Set for pre-initialized code and data, clear for @code{.bss} sections. 21507@item RELOC 21508Section needs to be relocated before loading. 21509@item READONLY 21510Section cannot be modified by the child process. 21511@item CODE 21512Section contains executable code only. 21513@item DATA 21514Section contains data only (no executable code). 21515@item ROM 21516Section will reside in ROM. 21517@item CONSTRUCTOR 21518Section contains data for constructor/destructor lists. 21519@item HAS_CONTENTS 21520Section is not empty. 21521@item NEVER_LOAD 21522An instruction to the linker to not output the section. 21523@item COFF_SHARED_LIBRARY 21524A notification to the linker that the section contains 21525COFF shared library information. 21526@item IS_COMMON 21527Section contains common symbols. 21528@end table 21529@end table 21530 21531@kindex maint info target-sections 21532@item maint info target-sections 21533This command prints @value{GDBN}'s internal section table. For each 21534target @value{GDBN} maintains a table containing the allocatable 21535sections from all currently mapped objects, along with information 21536about where the section is mapped. 21537 21538@kindex set trust-readonly-sections 21539@cindex read-only sections 21540@item set trust-readonly-sections on 21541Tell @value{GDBN} that readonly sections in your object file 21542really are read-only (i.e.@: that their contents will not change). 21543In that case, @value{GDBN} can fetch values from these sections 21544out of the object file, rather than from the target program. 21545For some targets (notably embedded ones), this can be a significant 21546enhancement to debugging performance. 21547 21548The default is off. 21549 21550@item set trust-readonly-sections off 21551Tell @value{GDBN} not to trust readonly sections. This means that 21552the contents of the section might change while the program is running, 21553and must therefore be fetched from the target when needed. 21554 21555@item show trust-readonly-sections 21556Show the current setting of trusting readonly sections. 21557@end table 21558 21559All file-specifying commands allow both absolute and relative file names 21560as arguments. @value{GDBN} always converts the file name to an absolute file 21561name and remembers it that way. 21562 21563@cindex shared libraries 21564@anchor{Shared Libraries} 21565@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, SunOS, 21566Darwin/Mach-O, SVr4, IBM RS/6000 AIX, QNX Neutrino, FDPIC (FR-V), and 21567DSBT (TIC6X) shared libraries. 21568 21569On MS-Windows @value{GDBN} must be linked with the Expat library to support 21570shared libraries. @xref{Expat}. 21571 21572@value{GDBN} automatically loads symbol definitions from shared libraries 21573when you use the @code{run} command, or when you examine a core file. 21574(Before you issue the @code{run} command, @value{GDBN} does not understand 21575references to a function in a shared library, however---unless you are 21576debugging a core file). 21577 21578@c FIXME: some @value{GDBN} release may permit some refs to undef 21579@c FIXME...symbols---eg in a break cmd---assuming they are from a shared 21580@c FIXME...lib; check this from time to time when updating manual 21581 21582There are times, however, when you may wish to not automatically load 21583symbol definitions from shared libraries, such as when they are 21584particularly large or there are many of them. 21585 21586To control the automatic loading of shared library symbols, use the 21587commands: 21588 21589@table @code 21590@kindex set auto-solib-add 21591@item set auto-solib-add @var{mode} 21592If @var{mode} is @code{on}, symbols from all shared object libraries 21593will be loaded automatically when the inferior begins execution, you 21594attach to an independently started inferior, or when the dynamic linker 21595informs @value{GDBN} that a new library has been loaded. If @var{mode} 21596is @code{off}, symbols must be loaded manually, using the 21597@code{sharedlibrary} command. The default value is @code{on}. 21598 21599@cindex memory used for symbol tables 21600If your program uses lots of shared libraries with debug info that 21601takes large amounts of memory, you can decrease the @value{GDBN} 21602memory footprint by preventing it from automatically loading the 21603symbols from shared libraries. To that end, type @kbd{set 21604auto-solib-add off} before running the inferior, then load each 21605library whose debug symbols you do need with @kbd{sharedlibrary 21606@var{regexp}}, where @var{regexp} is a regular expression that matches 21607the libraries whose symbols you want to be loaded. 21608 21609@kindex show auto-solib-add 21610@item show auto-solib-add 21611Display the current autoloading mode. 21612@end table 21613 21614@cindex load shared library 21615To explicitly load shared library symbols, use the @code{sharedlibrary} 21616command: 21617 21618@table @code 21619@kindex info sharedlibrary 21620@kindex info share 21621@item info share @var{regex} 21622@itemx info sharedlibrary @var{regex} 21623Print the names of the shared libraries which are currently loaded 21624that match @var{regex}. If @var{regex} is omitted then print 21625all shared libraries that are loaded. 21626 21627@kindex info dll 21628@item info dll @var{regex} 21629This is an alias of @code{info sharedlibrary}. 21630 21631@kindex sharedlibrary 21632@kindex share 21633@item sharedlibrary @var{regex} 21634@itemx share @var{regex} 21635Load shared object library symbols for files matching a 21636Unix regular expression. 21637As with files loaded automatically, it only loads shared libraries 21638required by your program for a core file or after typing @code{run}. If 21639@var{regex} is omitted all shared libraries required by your program are 21640loaded. 21641 21642@item nosharedlibrary 21643@kindex nosharedlibrary 21644@cindex unload symbols from shared libraries 21645Unload all shared object library symbols. This discards all symbols 21646that have been loaded from all shared libraries. Symbols from shared 21647libraries that were loaded by explicit user requests are not 21648discarded. 21649@end table 21650 21651Sometimes you may wish that @value{GDBN} stops and gives you control 21652when any of shared library events happen. The best way to do this is 21653to use @code{catch load} and @code{catch unload} (@pxref{Set 21654Catchpoints}). 21655 21656@value{GDBN} also supports the @code{set stop-on-solib-events} 21657command for this. This command exists for historical reasons. It is 21658less useful than setting a catchpoint, because it does not allow for 21659conditions or commands as a catchpoint does. 21660 21661@table @code 21662@item set stop-on-solib-events 21663@kindex set stop-on-solib-events 21664This command controls whether @value{GDBN} should give you control 21665when the dynamic linker notifies it about some shared library event. 21666The most common event of interest is loading or unloading of a new 21667shared library. 21668 21669@item show stop-on-solib-events 21670@kindex show stop-on-solib-events 21671Show whether @value{GDBN} stops and gives you control when shared 21672library events happen. 21673@end table 21674 21675Shared libraries are also supported in many cross or remote debugging 21676configurations. @value{GDBN} needs to have access to the target's libraries; 21677this can be accomplished either by providing copies of the libraries 21678on the host system, or by asking @value{GDBN} to automatically retrieve the 21679libraries from the target. If copies of the target libraries are 21680provided, they need to be the same as the target libraries, although the 21681copies on the target can be stripped as long as the copies on the host are 21682not. 21683 21684@cindex where to look for shared libraries 21685For remote debugging, you need to tell @value{GDBN} where the target 21686libraries are, so that it can load the correct copies---otherwise, it 21687may try to load the host's libraries. @value{GDBN} has two variables 21688to specify the search directories for target libraries. 21689 21690@table @code 21691@cindex prefix for executable and shared library file names 21692@cindex system root, alternate 21693@kindex set solib-absolute-prefix 21694@kindex set sysroot 21695@item set sysroot @var{path} 21696Use @var{path} as the system root for the program being debugged. Any 21697absolute shared library paths will be prefixed with @var{path}; many 21698runtime loaders store the absolute paths to the shared library in the 21699target program's memory. When starting processes remotely, and when 21700attaching to already-running processes (local or remote), their 21701executable filenames will be prefixed with @var{path} if reported to 21702@value{GDBN} as absolute by the operating system. If you use 21703@code{set sysroot} to find executables and shared libraries, they need 21704to be laid out in the same way that they are on the target, with 21705e.g.@: a @file{/bin}, @file{/lib} and @file{/usr/lib} hierarchy under 21706@var{path}. 21707 21708If @var{path} starts with the sequence @file{target:} and the target 21709system is remote then @value{GDBN} will retrieve the target binaries 21710from the remote system. This is only supported when using a remote 21711target that supports the @code{remote get} command (@pxref{File 21712Transfer,,Sending files to a remote system}). The part of @var{path} 21713following the initial @file{target:} (if present) is used as system 21714root prefix on the remote file system. If @var{path} starts with the 21715sequence @file{remote:} this is converted to the sequence 21716@file{target:} by @code{set sysroot}@footnote{Historically the 21717functionality to retrieve binaries from the remote system was 21718provided by prefixing @var{path} with @file{remote:}}. If you want 21719to specify a local system root using a directory that happens to be 21720named @file{target:} or @file{remote:}, you need to use some 21721equivalent variant of the name like @file{./target:}. 21722 21723For targets with an MS-DOS based filesystem, such as MS-Windows, 21724@value{GDBN} tries prefixing a few variants of the target 21725absolute file name with @var{path}. But first, on Unix hosts, 21726@value{GDBN} converts all backslash directory separators into forward 21727slashes, because the backslash is not a directory separator on Unix: 21728 21729@smallexample 21730 c:\foo\bar.dll @result{} c:/foo/bar.dll 21731@end smallexample 21732 21733Then, @value{GDBN} attempts prefixing the target file name with 21734@var{path}, and looks for the resulting file name in the host file 21735system: 21736 21737@smallexample 21738 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll 21739@end smallexample 21740 21741If that does not find the binary, @value{GDBN} tries removing 21742the @samp{:} character from the drive spec, both for convenience, and, 21743for the case of the host file system not supporting file names with 21744colons: 21745 21746@smallexample 21747 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll 21748@end smallexample 21749 21750This makes it possible to have a system root that mirrors a target 21751with more than one drive. E.g., you may want to setup your local 21752copies of the target system shared libraries like so (note @samp{c} vs 21753@samp{z}): 21754 21755@smallexample 21756 @file{/path/to/sysroot/c/sys/bin/foo.dll} 21757 @file{/path/to/sysroot/c/sys/bin/bar.dll} 21758 @file{/path/to/sysroot/z/sys/bin/bar.dll} 21759@end smallexample 21760 21761@noindent 21762and point the system root at @file{/path/to/sysroot}, so that 21763@value{GDBN} can find the correct copies of both 21764@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}. 21765 21766If that still does not find the binary, @value{GDBN} tries 21767removing the whole drive spec from the target file name: 21768 21769@smallexample 21770 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll 21771@end smallexample 21772 21773This last lookup makes it possible to not care about the drive name, 21774if you don't want or need to. 21775 21776The @code{set solib-absolute-prefix} command is an alias for @code{set 21777sysroot}. 21778 21779@cindex default system root 21780@cindex @samp{--with-sysroot} 21781You can set the default system root by using the configure-time 21782@samp{--with-sysroot} option. If the system root is inside 21783@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 21784@samp{--exec-prefix}), then the default system root will be updated 21785automatically if the installed @value{GDBN} is moved to a new 21786location. 21787 21788@kindex show sysroot 21789@item show sysroot 21790Display the current executable and shared library prefix. 21791 21792@kindex set solib-search-path 21793@item set solib-search-path @var{path} 21794If this variable is set, @var{path} is a colon-separated list of 21795directories to search for shared libraries. @samp{solib-search-path} 21796is used after @samp{sysroot} fails to locate the library, or if the 21797path to the library is relative instead of absolute. If you want to 21798use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set 21799@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from 21800finding your host's libraries. @samp{sysroot} is preferred; setting 21801it to a nonexistent directory may interfere with automatic loading 21802of shared library symbols. 21803 21804@kindex show solib-search-path 21805@item show solib-search-path 21806Display the current shared library search path. 21807 21808@cindex DOS file-name semantics of file names. 21809@kindex set target-file-system-kind (unix|dos-based|auto) 21810@kindex show target-file-system-kind 21811@item set target-file-system-kind @var{kind} 21812Set assumed file system kind for target reported file names. 21813 21814Shared library file names as reported by the target system may not 21815make sense as is on the system @value{GDBN} is running on. For 21816example, when remote debugging a target that has MS-DOS based file 21817system semantics, from a Unix host, the target may be reporting to 21818@value{GDBN} a list of loaded shared libraries with file names such as 21819@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of 21820drive letters, so the @samp{c:\} prefix is not normally understood as 21821indicating an absolute file name, and neither is the backslash 21822normally considered a directory separator character. In that case, 21823the native file system would interpret this whole absolute file name 21824as a relative file name with no directory components. This would make 21825it impossible to point @value{GDBN} at a copy of the remote target's 21826shared libraries on the host using @code{set sysroot}, and impractical 21827with @code{set solib-search-path}. Setting 21828@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN} 21829to interpret such file names similarly to how the target would, and to 21830map them to file names valid on @value{GDBN}'s native file system 21831semantics. The value of @var{kind} can be @code{"auto"}, in addition 21832to one of the supported file system kinds. In that case, @value{GDBN} 21833tries to determine the appropriate file system variant based on the 21834current target's operating system (@pxref{ABI, ,Configuring the 21835Current ABI}). The supported file system settings are: 21836 21837@table @code 21838@item unix 21839Instruct @value{GDBN} to assume the target file system is of Unix 21840kind. Only file names starting the forward slash (@samp{/}) character 21841are considered absolute, and the directory separator character is also 21842the forward slash. 21843 21844@item dos-based 21845Instruct @value{GDBN} to assume the target file system is DOS based. 21846File names starting with either a forward slash, or a drive letter 21847followed by a colon (e.g., @samp{c:}), are considered absolute, and 21848both the slash (@samp{/}) and the backslash (@samp{\\}) characters are 21849considered directory separators. 21850 21851@item auto 21852Instruct @value{GDBN} to use the file system kind associated with the 21853target operating system (@pxref{ABI, ,Configuring the Current ABI}). 21854This is the default. 21855@end table 21856@end table 21857 21858@cindex file name canonicalization 21859@cindex base name differences 21860When processing file names provided by the user, @value{GDBN} 21861frequently needs to compare them to the file names recorded in the 21862program's debug info. Normally, @value{GDBN} compares just the 21863@dfn{base names} of the files as strings, which is reasonably fast 21864even for very large programs. (The base name of a file is the last 21865portion of its name, after stripping all the leading directories.) 21866This shortcut in comparison is based upon the assumption that files 21867cannot have more than one base name. This is usually true, but 21868references to files that use symlinks or similar filesystem 21869facilities violate that assumption. If your program records files 21870using such facilities, or if you provide file names to @value{GDBN} 21871using symlinks etc., you can set @code{basenames-may-differ} to 21872@code{true} to instruct @value{GDBN} to completely canonicalize each 21873pair of file names it needs to compare. This will make file-name 21874comparisons accurate, but at a price of a significant slowdown. 21875 21876@table @code 21877@item set basenames-may-differ 21878@kindex set basenames-may-differ 21879Set whether a source file may have multiple base names. 21880 21881@item show basenames-may-differ 21882@kindex show basenames-may-differ 21883Show whether a source file may have multiple base names. 21884@end table 21885 21886@node File Caching 21887@section File Caching 21888@cindex caching of opened files 21889@cindex caching of bfd objects 21890 21891To speed up file loading, and reduce memory usage, @value{GDBN} will 21892reuse the @code{bfd} objects used to track open files. @xref{Top, , 21893BFD, bfd, The Binary File Descriptor Library}. The following commands 21894allow visibility and control of the caching behavior. 21895 21896@table @code 21897@kindex maint info bfds 21898@item maint info bfds 21899This prints information about each @code{bfd} object that is known to 21900@value{GDBN}. 21901 21902@kindex maint set bfd-sharing 21903@kindex maint show bfd-sharing 21904@kindex bfd caching 21905@item maint set bfd-sharing 21906@item maint show bfd-sharing 21907Control whether @code{bfd} objects can be shared. When sharing is 21908enabled @value{GDBN} reuses already open @code{bfd} objects rather 21909than reopening the same file. Turning sharing off does not cause 21910already shared @code{bfd} objects to be unshared, but all future files 21911that are opened will create a new @code{bfd} object. Similarly, 21912re-enabling sharing does not cause multiple existing @code{bfd} 21913objects to be collapsed into a single shared @code{bfd} object. 21914 21915@kindex set debug bfd-cache @var{level} 21916@kindex bfd caching 21917@item set debug bfd-cache @var{level} 21918Turns on debugging of the bfd cache, setting the level to @var{level}. 21919 21920@kindex show debug bfd-cache 21921@kindex bfd caching 21922@item show debug bfd-cache 21923Show the current debugging level of the bfd cache. 21924@end table 21925 21926@node Separate Debug Files 21927@section Debugging Information in Separate Files 21928@cindex separate debugging information files 21929@cindex debugging information in separate files 21930@cindex @file{.debug} subdirectories 21931@cindex debugging information directory, global 21932@cindex global debugging information directories 21933@cindex build ID, and separate debugging files 21934@cindex @file{.build-id} directory 21935 21936@value{GDBN} allows you to put a program's debugging information in a 21937file separate from the executable itself, in a way that allows 21938@value{GDBN} to find and load the debugging information automatically. 21939Since debugging information can be very large---sometimes larger 21940than the executable code itself---some systems distribute debugging 21941information for their executables in separate files, which users can 21942install only when they need to debug a problem. 21943 21944@value{GDBN} supports two ways of specifying the separate debug info 21945file: 21946 21947@itemize @bullet 21948@item 21949The executable contains a @dfn{debug link} that specifies the name of 21950the separate debug info file. The separate debug file's name is 21951usually @file{@var{executable}.debug}, where @var{executable} is the 21952name of the corresponding executable file without leading directories 21953(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the 21954debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC) 21955checksum for the debug file, which @value{GDBN} uses to validate that 21956the executable and the debug file came from the same build. 21957 21958@item 21959@anchor{build ID} 21960The executable contains a @dfn{build ID}, a unique bit string that is 21961also present in the corresponding debug info file. (This is supported 21962only on some operating systems, when using the ELF or PE file formats 21963for binary files and the @sc{gnu} Binutils.) For more details about 21964this feature, see the description of the @option{--build-id} 21965command-line option in @ref{Options, , Command Line Options, ld, 21966The GNU Linker}. The debug info file's name is not specified 21967explicitly by the build ID, but can be computed from the build ID, see 21968below. 21969@end itemize 21970 21971Depending on the way the debug info file is specified, @value{GDBN} 21972uses two different methods of looking for the debug file: 21973 21974@itemize @bullet 21975@item 21976For the ``debug link'' method, @value{GDBN} looks up the named file in 21977the directory of the executable file, then in a subdirectory of that 21978directory named @file{.debug}, and finally under each one of the 21979global debug directories, in a subdirectory whose name is identical to 21980the leading directories of the executable's absolute file name. (On 21981MS-Windows/MS-DOS, the drive letter of the executable's leading 21982directories is converted to a one-letter subdirectory, i.e.@: 21983@file{d:/usr/bin/} is converted to @file{/d/usr/bin/}, because Windows 21984filesystems disallow colons in file names.) 21985 21986@item 21987For the ``build ID'' method, @value{GDBN} looks in the 21988@file{.build-id} subdirectory of each one of the global debug directories for 21989a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the 21990first 2 hex characters of the build ID bit string, and @var{nnnnnnnn} 21991are the rest of the bit string. (Real build ID strings are 32 or more 21992hex characters, not 10.) @value{GDBN} can automatically query 21993@code{debuginfod} servers using build IDs in order to download separate debug 21994files that cannot be found locally. For more information see @ref{Debuginfod}. 21995@end itemize 21996 21997So, for example, suppose you ask @value{GDBN} to debug 21998@file{/usr/bin/ls}, which has a debug link that specifies the 21999file @file{ls.debug}, and a build ID whose value in hex is 22000@code{abcdef1234}. If the list of the global debug directories includes 22001@file{/usr/lib/debug}, then @value{GDBN} will look for the following 22002debug information files, in the indicated order: 22003 22004@itemize @minus 22005@item 22006@file{/usr/lib/debug/.build-id/ab/cdef1234.debug} 22007@item 22008@file{/usr/bin/ls.debug} 22009@item 22010@file{/usr/bin/.debug/ls.debug} 22011@item 22012@file{/usr/lib/debug/usr/bin/ls.debug}. 22013@end itemize 22014 22015If the debug file still has not been found and @code{debuginfod} 22016(@pxref{Debuginfod}) is enabled, @value{GDBN} will attempt to download the 22017file from @code{debuginfod} servers. 22018 22019@anchor{debug-file-directory} 22020Global debugging info directories default to what is set by @value{GDBN} 22021configure option @option{--with-separate-debug-dir}. During @value{GDBN} run 22022you can also set the global debugging info directories, and view the list 22023@value{GDBN} is currently using. 22024 22025@table @code 22026 22027@kindex set debug-file-directory 22028@item set debug-file-directory @var{directories} 22029Set the directories which @value{GDBN} searches for separate debugging 22030information files to @var{directory}. Multiple path components can be set 22031concatenating them by a path separator. 22032 22033@kindex show debug-file-directory 22034@item show debug-file-directory 22035Show the directories @value{GDBN} searches for separate debugging 22036information files. 22037 22038@end table 22039 22040@cindex @code{.gnu_debuglink} sections 22041@cindex debug link sections 22042A debug link is a special section of the executable file named 22043@code{.gnu_debuglink}. The section must contain: 22044 22045@itemize 22046@item 22047A filename, with any leading directory components removed, followed by 22048a zero byte, 22049@item 22050zero to three bytes of padding, as needed to reach the next four-byte 22051boundary within the section, and 22052@item 22053a four-byte CRC checksum, stored in the same endianness used for the 22054executable file itself. The checksum is computed on the debugging 22055information file's full contents by the function given below, passing 22056zero as the @var{crc} argument. 22057@end itemize 22058 22059Any executable file format can carry a debug link, as long as it can 22060contain a section named @code{.gnu_debuglink} with the contents 22061described above. 22062 22063@cindex @code{.note.gnu.build-id} sections 22064@cindex build ID sections 22065The build ID is a special section in the executable file (and in other 22066ELF binary files that @value{GDBN} may consider). This section is 22067often named @code{.note.gnu.build-id}, but that name is not mandatory. 22068It contains unique identification for the built files---the ID remains 22069the same across multiple builds of the same build tree. The default 22070algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the 22071content for the build ID string. The same section with an identical 22072value is present in the original built binary with symbols, in its 22073stripped variant, and in the separate debugging information file. 22074 22075The debugging information file itself should be an ordinary 22076executable, containing a full set of linker symbols, sections, and 22077debugging information. The sections of the debugging information file 22078should have the same names, addresses, and sizes as the original file, 22079but they need not contain any data---much like a @code{.bss} section 22080in an ordinary executable. 22081 22082The @sc{gnu} binary utilities (Binutils) package includes the 22083@samp{objcopy} utility that can produce 22084the separated executable / debugging information file pairs using the 22085following commands: 22086 22087@smallexample 22088@kbd{objcopy --only-keep-debug foo foo.debug} 22089@kbd{strip -g foo} 22090@end smallexample 22091 22092@noindent 22093These commands remove the debugging 22094information from the executable file @file{foo} and place it in the file 22095@file{foo.debug}. You can use the first, second or both methods to link the 22096two files: 22097 22098@itemize @bullet 22099@item 22100The debug link method needs the following additional command to also leave 22101behind a debug link in @file{foo}: 22102 22103@smallexample 22104@kbd{objcopy --add-gnu-debuglink=foo.debug foo} 22105@end smallexample 22106 22107Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains 22108a version of the @code{strip} command such that the command @kbd{strip foo -f 22109foo.debug} has the same functionality as the two @code{objcopy} commands and 22110the @code{ln -s} command above, together. 22111 22112@item 22113Build ID gets embedded into the main executable using @code{ld --build-id} or 22114the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus 22115compatibility fixes for debug files separation are present in @sc{gnu} binary 22116utilities (Binutils) package since version 2.18. 22117@end itemize 22118 22119@noindent 22120 22121@cindex CRC algorithm definition 22122The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in 22123IEEE 802.3 using the polynomial: 22124 22125@c TexInfo requires naked braces for multi-digit exponents for Tex 22126@c output, but this causes HTML output to barf. HTML has to be set using 22127@c raw commands. So we end up having to specify this equation in 2 22128@c different ways! 22129@ifhtml 22130@display 22131@html 22132 <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> 22133 + <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 22134@end html 22135@end display 22136@end ifhtml 22137@ifnothtml 22138@display 22139 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}} 22140 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1} 22141@end display 22142@end ifnothtml 22143 22144The function is computed byte at a time, taking the least 22145significant bit of each byte first. The initial pattern 22146@code{0xffffffff} is used, to ensure leading zeros affect the CRC and 22147the final result is inverted to ensure trailing zeros also affect the 22148CRC. 22149 22150@emph{Note:} This is the same CRC polynomial as used in handling the 22151@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{qCRC packet}). 22152However in the case of the Remote Serial Protocol, the CRC is computed 22153@emph{most} significant bit first, and the result is not inverted, so 22154trailing zeros have no effect on the CRC value. 22155 22156To complete the description, we show below the code of the function 22157which produces the CRC used in @code{.gnu_debuglink}. Inverting the 22158initially supplied @code{crc} argument means that an initial call to 22159this function passing in zero will start computing the CRC using 22160@code{0xffffffff}. 22161 22162@kindex gnu_debuglink_crc32 22163@smallexample 22164unsigned long 22165gnu_debuglink_crc32 (unsigned long crc, 22166 unsigned char *buf, size_t len) 22167@{ 22168 static const unsigned long crc32_table[256] = 22169 @{ 22170 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 22171 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 22172 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 22173 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 22174 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 22175 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 22176 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 22177 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 22178 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 22179 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 22180 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 22181 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 22182 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 22183 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 22184 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 22185 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 22186 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 22187 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 22188 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 22189 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 22190 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 22191 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 22192 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 22193 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 22194 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 22195 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 22196 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 22197 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 22198 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 22199 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 22200 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 22201 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 22202 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 22203 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 22204 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 22205 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 22206 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 22207 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 22208 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 22209 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 22210 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 22211 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 22212 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 22213 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 22214 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 22215 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 22216 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 22217 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 22218 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 22219 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 22220 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 22221 0x2d02ef8d 22222 @}; 22223 unsigned char *end; 22224 22225 crc = ~crc & 0xffffffff; 22226 for (end = buf + len; buf < end; ++buf) 22227 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); 22228 return ~crc & 0xffffffff; 22229@} 22230@end smallexample 22231 22232@noindent 22233This computation does not apply to the ``build ID'' method. 22234 22235@node MiniDebugInfo 22236@section Debugging information in a special section 22237@cindex separate debug sections 22238@cindex @samp{.gnu_debugdata} section 22239 22240Some systems ship pre-built executables and libraries that have a 22241special @samp{.gnu_debugdata} section. This feature is called 22242@dfn{MiniDebugInfo}. This section holds an LZMA-compressed object and 22243is used to supply extra symbols for backtraces. 22244 22245The intent of this section is to provide extra minimal debugging 22246information for use in simple backtraces. It is not intended to be a 22247replacement for full separate debugging information (@pxref{Separate 22248Debug Files}). The example below shows the intended use; however, 22249@value{GDBN} does not currently put restrictions on what sort of 22250debugging information might be included in the section. 22251 22252@value{GDBN} has support for this extension. If the section exists, 22253then it is used provided that no other source of debugging information 22254can be found, and that @value{GDBN} was configured with LZMA support. 22255 22256This section can be easily created using @command{objcopy} and other 22257standard utilities: 22258 22259@smallexample 22260# Extract the dynamic symbols from the main binary, there is no need 22261# to also have these in the normal symbol table. 22262nm -D @var{binary} --format=posix --defined-only \ 22263 | awk '@{ print $1 @}' | sort > dynsyms 22264 22265# Extract all the text (i.e. function) symbols from the debuginfo. 22266# (Note that we actually also accept "D" symbols, for the benefit 22267# of platforms like PowerPC64 that use function descriptors.) 22268nm @var{binary} --format=posix --defined-only \ 22269 | awk '@{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 @}' \ 22270 | sort > funcsyms 22271 22272# Keep all the function symbols not already in the dynamic symbol 22273# table. 22274comm -13 dynsyms funcsyms > keep_symbols 22275 22276# Separate full debug info into debug binary. 22277objcopy --only-keep-debug @var{binary} debug 22278 22279# Copy the full debuginfo, keeping only a minimal set of symbols and 22280# removing some unnecessary sections. 22281objcopy -S --remove-section .gdb_index --remove-section .comment \ 22282 --keep-symbols=keep_symbols debug mini_debuginfo 22283 22284# Drop the full debug info from the original binary. 22285strip --strip-all -R .comment @var{binary} 22286 22287# Inject the compressed data into the .gnu_debugdata section of the 22288# original binary. 22289xz mini_debuginfo 22290objcopy --add-section .gnu_debugdata=mini_debuginfo.xz @var{binary} 22291@end smallexample 22292 22293@node Index Files 22294@section Index Files Speed Up @value{GDBN} 22295@cindex index files 22296@cindex @samp{.gdb_index} section 22297 22298When @value{GDBN} finds a symbol file, it scans the symbols in the 22299file in order to construct an internal symbol table. This lets most 22300@value{GDBN} operations work quickly---at the cost of a delay early 22301on. For large programs, this delay can be quite lengthy, so 22302@value{GDBN} provides a way to build an index, which speeds up 22303startup. 22304 22305For convenience, @value{GDBN} comes with a program, 22306@command{gdb-add-index}, which can be used to add the index to a 22307symbol file. It takes the symbol file as its only argument: 22308 22309@smallexample 22310$ gdb-add-index symfile 22311@end smallexample 22312 22313@xref{gdb-add-index}. 22314 22315It is also possible to do the work manually. Here is what 22316@command{gdb-add-index} does behind the curtains. 22317 22318The index is stored as a section in the symbol file. @value{GDBN} can 22319write the index to a file, then you can put it into the symbol file 22320using @command{objcopy}. 22321 22322To create an index file, use the @code{save gdb-index} command: 22323 22324@table @code 22325@item save gdb-index [-dwarf-5] @var{directory} 22326@kindex save gdb-index 22327Create index files for all symbol files currently known by 22328@value{GDBN}. For each known @var{symbol-file}, this command by 22329default creates it produces a single file 22330@file{@var{symbol-file}.gdb-index}. If you invoke this command with 22331the @option{-dwarf-5} option, it produces 2 files: 22332@file{@var{symbol-file}.debug_names} and 22333@file{@var{symbol-file}.debug_str}. The files are created in the 22334given @var{directory}. 22335@end table 22336 22337Once you have created an index file you can merge it into your symbol 22338file, here named @file{symfile}, using @command{objcopy}: 22339 22340@smallexample 22341$ objcopy --add-section .gdb_index=symfile.gdb-index \ 22342 --set-section-flags .gdb_index=readonly symfile symfile 22343@end smallexample 22344 22345Or for @code{-dwarf-5}: 22346 22347@smallexample 22348$ objcopy --dump-section .debug_str=symfile.debug_str.new symfile 22349$ cat symfile.debug_str >>symfile.debug_str.new 22350$ objcopy --add-section .debug_names=symfile.gdb-index \ 22351 --set-section-flags .debug_names=readonly \ 22352 --update-section .debug_str=symfile.debug_str.new symfile symfile 22353@end smallexample 22354 22355@value{GDBN} will normally ignore older versions of @file{.gdb_index} 22356sections that have been deprecated. Usually they are deprecated because 22357they are missing a new feature or have performance issues. 22358To tell @value{GDBN} to use a deprecated index section anyway 22359specify @code{set use-deprecated-index-sections on}. 22360The default is @code{off}. 22361This can speed up startup, but may result in some functionality being lost. 22362@xref{Index Section Format}. 22363 22364@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on} 22365must be done before gdb reads the file. The following will not work: 22366 22367@smallexample 22368$ gdb -ex "set use-deprecated-index-sections on" <program> 22369@end smallexample 22370 22371Instead you must do, for example, 22372 22373@smallexample 22374$ gdb -iex "set use-deprecated-index-sections on" <program> 22375@end smallexample 22376 22377Indices only work when using DWARF debugging information, not stabs. 22378 22379@subsection Automatic symbol index cache 22380 22381@cindex automatic symbol index cache 22382It is possible for @value{GDBN} to automatically save a copy of this index in a 22383cache on disk and retrieve it from there when loading the same binary in the 22384future. This feature can be turned on with @kbd{set index-cache enabled on}. 22385The following commands can be used to tweak the behavior of the index cache. 22386 22387@table @code 22388 22389@kindex set index-cache 22390@item set index-cache enabled on 22391@itemx set index-cache enabled off 22392Enable or disable the use of the symbol index cache. 22393 22394@item set index-cache directory @var{directory} 22395@kindex show index-cache 22396@itemx show index-cache directory 22397Set/show the directory where index files will be saved. 22398 22399The default value for this directory depends on the host platform. On 22400most systems, the index is cached in the @file{gdb} subdirectory of 22401the directory pointed to by the @env{XDG_CACHE_HOME} environment 22402variable, if it is defined, else in the @file{.cache/gdb} subdirectory 22403of your home directory. However, on some systems, the default may 22404differ according to local convention. 22405 22406There is no limit on the disk space used by index cache. It is perfectly safe 22407to delete the content of that directory to free up disk space. 22408 22409@item show index-cache stats 22410Print the number of cache hits and misses since the launch of @value{GDBN}. 22411 22412@end table 22413 22414@node Symbol Errors 22415@section Errors Reading Symbol Files 22416 22417While reading a symbol file, @value{GDBN} occasionally encounters problems, 22418such as symbol types it does not recognize, or known bugs in compiler 22419output. By default, @value{GDBN} does not notify you of such problems, since 22420they are relatively common and primarily of interest to people 22421debugging compilers. If you are interested in seeing information 22422about ill-constructed symbol tables, you can either ask @value{GDBN} to print 22423only one message about each such type of problem, no matter how many 22424times the problem occurs; or you can ask @value{GDBN} to print more messages, 22425to see how many times the problems occur, with the @code{set 22426complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and 22427Messages}). 22428 22429The messages currently printed, and their meanings, include: 22430 22431@table @code 22432@item inner block not inside outer block in @var{symbol} 22433 22434The symbol information shows where symbol scopes begin and end 22435(such as at the start of a function or a block of statements). This 22436error indicates that an inner scope block is not fully contained 22437in its outer scope blocks. 22438 22439@value{GDBN} circumvents the problem by treating the inner block as if it had 22440the same scope as the outer block. In the error message, @var{symbol} 22441may be shown as ``@code{(don't know)}'' if the outer block is not a 22442function. 22443 22444@item block at @var{address} out of order 22445 22446The symbol information for symbol scope blocks should occur in 22447order of increasing addresses. This error indicates that it does not 22448do so. 22449 22450@value{GDBN} does not circumvent this problem, and has trouble 22451locating symbols in the source file whose symbols it is reading. (You 22452can often determine what source file is affected by specifying 22453@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and 22454Messages}.) 22455 22456@item bad block start address patched 22457 22458The symbol information for a symbol scope block has a start address 22459smaller than the address of the preceding source line. This is known 22460to occur in the SunOS 4.1.1 (and earlier) C compiler. 22461 22462@value{GDBN} circumvents the problem by treating the symbol scope block as 22463starting on the previous source line. 22464 22465@item bad string table offset in symbol @var{n} 22466 22467@cindex foo 22468Symbol number @var{n} contains a pointer into the string table which is 22469larger than the size of the string table. 22470 22471@value{GDBN} circumvents the problem by considering the symbol to have the 22472name @code{foo}, which may cause other problems if many symbols end up 22473with this name. 22474 22475@item unknown symbol type @code{0x@var{nn}} 22476 22477The symbol information contains new data types that @value{GDBN} does 22478not yet know how to read. @code{0x@var{nn}} is the symbol type of the 22479uncomprehended information, in hexadecimal. 22480 22481@value{GDBN} circumvents the error by ignoring this symbol information. 22482This usually allows you to debug your program, though certain symbols 22483are not accessible. If you encounter such a problem and feel like 22484debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint 22485on @code{complain}, then go up to the function @code{read_dbx_symtab} 22486and examine @code{*bufp} to see the symbol. 22487 22488@item stub type has NULL name 22489 22490@value{GDBN} could not find the full definition for a struct or class. 22491 22492@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{} 22493The symbol information for a C@t{++} member function is missing some 22494information that recent versions of the compiler should have output for 22495it. 22496 22497@item info mismatch between compiler and debugger 22498 22499@value{GDBN} could not parse a type specification output by the compiler. 22500 22501@end table 22502 22503@node Data Files 22504@section GDB Data Files 22505 22506@cindex prefix for data files 22507@value{GDBN} will sometimes read an auxiliary data file. These files 22508are kept in a directory known as the @dfn{data directory}. 22509 22510You can set the data directory's name, and view the name @value{GDBN} 22511is currently using. 22512 22513@table @code 22514@kindex set data-directory 22515@item set data-directory @var{directory} 22516Set the directory which @value{GDBN} searches for auxiliary data files 22517to @var{directory}. 22518 22519@kindex show data-directory 22520@item show data-directory 22521Show the directory @value{GDBN} searches for auxiliary data files. 22522@end table 22523 22524@cindex default data directory 22525@cindex @samp{--with-gdb-datadir} 22526You can set the default data directory by using the configure-time 22527@samp{--with-gdb-datadir} option. If the data directory is inside 22528@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or 22529@samp{--exec-prefix}), then the default data directory will be updated 22530automatically if the installed @value{GDBN} is moved to a new 22531location. 22532 22533The data directory may also be specified with the 22534@code{--data-directory} command line option. 22535@xref{Mode Options}. 22536 22537@node Targets 22538@chapter Specifying a Debugging Target 22539 22540@cindex debugging target 22541A @dfn{target} is the execution environment occupied by your program. 22542 22543Often, @value{GDBN} runs in the same host environment as your program; 22544in that case, the debugging target is specified as a side effect when 22545you use the @code{file} or @code{core} commands. When you need more 22546flexibility---for example, running @value{GDBN} on a physically separate 22547host, or controlling a standalone system over a serial port or a 22548realtime system over a TCP/IP connection---you can use the @code{target} 22549command to specify one of the target types configured for @value{GDBN} 22550(@pxref{Target Commands, ,Commands for Managing Targets}). 22551 22552@cindex target architecture 22553It is possible to build @value{GDBN} for several different @dfn{target 22554architectures}. When @value{GDBN} is built like that, you can choose 22555one of the available architectures with the @kbd{set architecture} 22556command. 22557 22558@table @code 22559@kindex set architecture 22560@kindex show architecture 22561@item set architecture @var{arch} 22562This command sets the current target architecture to @var{arch}. The 22563value of @var{arch} can be @code{"auto"}, in addition to one of the 22564supported architectures. 22565 22566@item show architecture 22567Show the current target architecture. 22568 22569@item set processor 22570@itemx processor 22571@kindex set processor 22572@kindex show processor 22573These are alias commands for, respectively, @code{set architecture} 22574and @code{show architecture}. 22575@end table 22576 22577@menu 22578* Active Targets:: Active targets 22579* Target Commands:: Commands for managing targets 22580* Byte Order:: Choosing target byte order 22581@end menu 22582 22583@node Active Targets 22584@section Active Targets 22585 22586@cindex stacking targets 22587@cindex active targets 22588@cindex multiple targets 22589 22590There are multiple classes of targets such as: processes, executable files or 22591recording sessions. Core files belong to the process class, making core file 22592and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently 22593on multiple active targets, one in each class. This allows you to (for 22594example) start a process and inspect its activity, while still having access to 22595the executable file after the process finishes. Or if you start process 22596recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are 22597presented a virtual layer of the recording target, while the process target 22598remains stopped at the chronologically last point of the process execution. 22599 22600Use the @code{core-file} and @code{exec-file} commands to select a new core 22601file or executable target (@pxref{Files, ,Commands to Specify Files}). To 22602specify as a target a process that is already running, use the @code{attach} 22603command (@pxref{Attach, ,Debugging an Already-running Process}). 22604 22605@node Target Commands 22606@section Commands for Managing Targets 22607 22608@table @code 22609@item target @var{type} @var{parameters} 22610Connects the @value{GDBN} host environment to a target machine or 22611process. A target is typically a protocol for talking to debugging 22612facilities. You use the argument @var{type} to specify the type or 22613protocol of the target machine. 22614 22615Further @var{parameters} are interpreted by the target protocol, but 22616typically include things like device names or host names to connect 22617with, process numbers, and baud rates. 22618 22619The @code{target} command does not repeat if you press @key{RET} again 22620after executing the command. 22621 22622@kindex help target 22623@item help target 22624Displays the names of all targets available. To display targets 22625currently selected, use either @code{info target} or @code{info files} 22626(@pxref{Files, ,Commands to Specify Files}). 22627 22628@item help target @var{name} 22629Describe a particular target, including any parameters necessary to 22630select it. 22631 22632@kindex set gnutarget 22633@item set gnutarget @var{args} 22634@value{GDBN} uses its own library BFD to read your files. @value{GDBN} 22635knows whether it is reading an @dfn{executable}, 22636a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format 22637with the @code{set gnutarget} command. Unlike most @code{target} commands, 22638with @code{gnutarget} the @code{target} refers to a program, not a machine. 22639 22640@quotation 22641@emph{Warning:} To specify a file format with @code{set gnutarget}, 22642you must know the actual BFD name. 22643@end quotation 22644 22645@noindent 22646@xref{Files, , Commands to Specify Files}. 22647 22648@kindex show gnutarget 22649@item show gnutarget 22650Use the @code{show gnutarget} command to display what file format 22651@code{gnutarget} is set to read. If you have not set @code{gnutarget}, 22652@value{GDBN} will determine the file format for each file automatically, 22653and @code{show gnutarget} displays @samp{The current BFD target is "auto"}. 22654@end table 22655 22656@cindex common targets 22657Here are some common targets (available, or not, depending on the GDB 22658configuration): 22659 22660@table @code 22661@kindex target 22662@item target exec @var{program} 22663@cindex executable file target 22664An executable file. @samp{target exec @var{program}} is the same as 22665@samp{exec-file @var{program}}. 22666 22667@item target core @var{filename} 22668@cindex core dump file target 22669A core dump file. @samp{target core @var{filename}} is the same as 22670@samp{core-file @var{filename}}. 22671 22672@item target remote @var{medium} 22673@cindex remote target 22674A remote system connected to @value{GDBN} via a serial line or network 22675connection. This command tells @value{GDBN} to use its own remote 22676protocol over @var{medium} for debugging. @xref{Remote Debugging}. 22677 22678For example, if you have a board connected to @file{/dev/ttya} on the 22679machine running @value{GDBN}, you could say: 22680 22681@smallexample 22682target remote /dev/ttya 22683@end smallexample 22684 22685@code{target remote} supports the @code{load} command. This is only 22686useful if you have some other way of getting the stub to the target 22687system, and you can put it somewhere in memory where it won't get 22688clobbered by the download. 22689 22690@item target sim @r{[}@var{simargs}@r{]} @dots{} 22691@cindex built-in simulator target 22692Builtin CPU simulator. @value{GDBN} includes simulators for most architectures. 22693In general, 22694@smallexample 22695 target sim 22696 load 22697 run 22698@end smallexample 22699@noindent 22700works; however, you cannot assume that a specific memory map, device 22701drivers, or even basic I/O is available, although some simulators do 22702provide these. For info about any processor-specific simulator details, 22703see the appropriate section in @ref{Embedded Processors, ,Embedded 22704Processors}. 22705 22706@item target native 22707@cindex native target 22708Setup for local/native process debugging. Useful to make the 22709@code{run} command spawn native processes (likewise @code{attach}, 22710etc.@:) even when @code{set auto-connect-native-target} is @code{off} 22711(@pxref{set auto-connect-native-target}). 22712 22713@end table 22714 22715Different targets are available on different configurations of @value{GDBN}; 22716your configuration may have more or fewer targets. 22717 22718Many remote targets require you to download the executable's code once 22719you've successfully established a connection. You may wish to control 22720various aspects of this process. 22721 22722@table @code 22723 22724@item set hash 22725@kindex set hash@r{, for remote monitors} 22726@cindex hash mark while downloading 22727This command controls whether a hash mark @samp{#} is displayed while 22728downloading a file to the remote monitor. If on, a hash mark is 22729displayed after each S-record is successfully downloaded to the 22730monitor. 22731 22732@item show hash 22733@kindex show hash@r{, for remote monitors} 22734Show the current status of displaying the hash mark. 22735 22736@item set debug monitor 22737@kindex set debug monitor 22738@cindex display remote monitor communications 22739Enable or disable display of communications messages between 22740@value{GDBN} and the remote monitor. 22741 22742@item show debug monitor 22743@kindex show debug monitor 22744Show the current status of displaying communications between 22745@value{GDBN} and the remote monitor. 22746@end table 22747 22748@table @code 22749 22750@kindex load @var{filename} @var{offset} 22751@item load @var{filename} @var{offset} 22752@anchor{load} 22753Depending on what remote debugging facilities are configured into 22754@value{GDBN}, the @code{load} command may be available. Where it exists, it 22755is meant to make @var{filename} (an executable) available for debugging 22756on the remote system---by downloading, or dynamic linking, for example. 22757@code{load} also records the @var{filename} symbol table in @value{GDBN}, like 22758the @code{add-symbol-file} command. 22759 22760If your @value{GDBN} does not have a @code{load} command, attempting to 22761execute it gets the error message ``@code{You can't do that when your 22762target is @dots{}}'' 22763 22764The file is loaded at whatever address is specified in the executable. 22765For some object file formats, you can specify the load address when you 22766link the program; for other formats, like a.out, the object file format 22767specifies a fixed address. 22768@c FIXME! This would be a good place for an xref to the GNU linker doc. 22769 22770It is also possible to tell @value{GDBN} to load the executable file at a 22771specific offset described by the optional argument @var{offset}. When 22772@var{offset} is provided, @var{filename} must also be provided. 22773 22774Depending on the remote side capabilities, @value{GDBN} may be able to 22775load programs into flash memory. 22776 22777@code{load} does not repeat if you press @key{RET} again after using it. 22778@end table 22779 22780@table @code 22781 22782@kindex flash-erase 22783@item flash-erase 22784@anchor{flash-erase} 22785 22786Erases all known flash memory regions on the target. 22787 22788@end table 22789 22790@node Byte Order 22791@section Choosing Target Byte Order 22792 22793@cindex choosing target byte order 22794@cindex target byte order 22795 22796Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH, 22797offer the ability to run either big-endian or little-endian byte 22798orders. Usually the executable or symbol will include a bit to 22799designate the endian-ness, and you will not need to worry about 22800which to use. However, you may still find it useful to adjust 22801@value{GDBN}'s idea of processor endian-ness manually. 22802 22803@table @code 22804@kindex set endian 22805@item set endian big 22806Instruct @value{GDBN} to assume the target is big-endian. 22807 22808@item set endian little 22809Instruct @value{GDBN} to assume the target is little-endian. 22810 22811@item set endian auto 22812Instruct @value{GDBN} to use the byte order associated with the 22813executable. 22814 22815@item show endian 22816Display @value{GDBN}'s current idea of the target byte order. 22817 22818@end table 22819 22820If the @code{set endian auto} mode is in effect and no executable has 22821been selected, then the endianness used is the last one chosen either 22822by one of the @code{set endian big} and @code{set endian little} 22823commands or by inferring from the last executable used. If no 22824endianness has been previously chosen, then the default for this mode 22825is inferred from the target @value{GDBN} has been built for, and is 22826@code{little} if the name of the target CPU has an @code{el} suffix 22827and @code{big} otherwise. 22828 22829Note that these commands merely adjust interpretation of symbolic 22830data on the host, and that they have absolutely no effect on the 22831target system. 22832 22833 22834@node Remote Debugging 22835@chapter Debugging Remote Programs 22836@cindex remote debugging 22837 22838If you are trying to debug a program running on a machine that cannot run 22839@value{GDBN} in the usual way, it is often useful to use remote debugging. 22840For example, you might use remote debugging on an operating system kernel, 22841or on a small system which does not have a general purpose operating system 22842powerful enough to run a full-featured debugger. 22843 22844Some configurations of @value{GDBN} have special serial or TCP/IP interfaces 22845to make this work with particular debugging targets. In addition, 22846@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN}, 22847but not specific to any particular target system) which you can use if you 22848write the remote stubs---the code that runs on the remote system to 22849communicate with @value{GDBN}. 22850 22851Other remote targets may be available in your 22852configuration of @value{GDBN}; use @code{help target} to list them. 22853 22854@menu 22855* Connecting:: Connecting to a remote target 22856* File Transfer:: Sending files to a remote system 22857* Server:: Using the gdbserver program 22858* Remote Configuration:: Remote configuration 22859* Remote Stub:: Implementing a remote stub 22860@end menu 22861 22862@node Connecting 22863@section Connecting to a Remote Target 22864@cindex remote debugging, connecting 22865@cindex @code{gdbserver}, connecting 22866@cindex remote debugging, types of connections 22867@cindex @code{gdbserver}, types of connections 22868@cindex @code{gdbserver}, @code{target remote} mode 22869@cindex @code{gdbserver}, @code{target extended-remote} mode 22870 22871This section describes how to connect to a remote target, including the 22872types of connections and their differences, how to set up executable and 22873symbol files on the host and target, and the commands used for 22874connecting to and disconnecting from the remote target. 22875 22876@subsection Types of Remote Connections 22877 22878@value{GDBN} supports two types of remote connections, @code{target remote} 22879mode and @code{target extended-remote} mode. Note that many remote targets 22880support only @code{target remote} mode. There are several major 22881differences between the two types of connections, enumerated here: 22882 22883@table @asis 22884 22885@cindex remote debugging, detach and program exit 22886@item Result of detach or program exit 22887@strong{With target remote mode:} When the debugged program exits or you 22888detach from it, @value{GDBN} disconnects from the target. When using 22889@code{gdbserver}, @code{gdbserver} will exit. 22890 22891@strong{With target extended-remote mode:} When the debugged program exits or 22892you detach from it, @value{GDBN} remains connected to the target, even 22893though no program is running. You can rerun the program, attach to a 22894running program, or use @code{monitor} commands specific to the target. 22895 22896When using @code{gdbserver} in this case, it does not exit unless it was 22897invoked using the @option{--once} option. If the @option{--once} option 22898was not used, you can ask @code{gdbserver} to exit using the 22899@code{monitor exit} command (@pxref{Monitor Commands for gdbserver}). 22900 22901@item Specifying the program to debug 22902For both connection types you use the @code{file} command to specify the 22903program on the host system. If you are using @code{gdbserver} there are 22904some differences in how to specify the location of the program on the 22905target. 22906 22907@strong{With target remote mode:} You must either specify the program to debug 22908on the @code{gdbserver} command line or use the @option{--attach} option 22909(@pxref{Attaching to a program,,Attaching to a Running Program}). 22910 22911@cindex @option{--multi}, @code{gdbserver} option 22912@strong{With target extended-remote mode:} You may specify the program to debug 22913on the @code{gdbserver} command line, or you can load the program or attach 22914to it using @value{GDBN} commands after connecting to @code{gdbserver}. 22915 22916@anchor{--multi Option in Types of Remote Connnections} 22917You can start @code{gdbserver} without supplying an initial command to run 22918or process ID to attach. To do this, use the @option{--multi} command line 22919option. Then you can connect using @code{target extended-remote} and start 22920the program you want to debug (see below for details on using the 22921@code{run} command in this scenario). Note that the conditions under which 22922@code{gdbserver} terminates depend on how @value{GDBN} connects to it 22923(@code{target remote} or @code{target extended-remote}). The 22924@option{--multi} option to @code{gdbserver} has no influence on that. 22925 22926@item The @code{run} command 22927@strong{With target remote mode:} The @code{run} command is not 22928supported. Once a connection has been established, you can use all 22929the usual @value{GDBN} commands to examine and change data. The 22930remote program is already running, so you can use commands like 22931@kbd{step} and @kbd{continue}. 22932 22933@strong{With target extended-remote mode:} The @code{run} command is 22934supported. The @code{run} command uses the value set by 22935@code{set remote exec-file} (@pxref{set remote exec-file}) to select 22936the program to run. Command line arguments are supported, except for 22937wildcard expansion and I/O redirection (@pxref{Arguments}). 22938 22939If you specify the program to debug on the command line, then the 22940@code{run} command is not required to start execution, and you can 22941resume using commands like @kbd{step} and @kbd{continue} as with 22942@code{target remote} mode. 22943 22944@anchor{Attaching in Types of Remote Connections} 22945@item Attaching 22946@strong{With target remote mode:} The @value{GDBN} command @code{attach} is 22947not supported. To attach to a running program using @code{gdbserver}, you 22948must use the @option{--attach} option (@pxref{Running gdbserver}). 22949 22950@strong{With target extended-remote mode:} To attach to a running program, 22951you may use the @code{attach} command after the connection has been 22952established. If you are using @code{gdbserver}, you may also invoke 22953@code{gdbserver} using the @option{--attach} option 22954(@pxref{Running gdbserver}). 22955 22956Some remote targets allow @value{GDBN} to determine the executable file running 22957in the process the debugger is attaching to. In such a case, @value{GDBN} 22958uses the value of @code{exec-file-mismatch} to handle a possible mismatch 22959between the executable file name running in the process and the name of the 22960current exec-file loaded by @value{GDBN} (@pxref{set exec-file-mismatch}). 22961 22962@end table 22963 22964@anchor{Host and target files} 22965@subsection Host and Target Files 22966@cindex remote debugging, symbol files 22967@cindex symbol files, remote debugging 22968 22969@value{GDBN}, running on the host, needs access to symbol and debugging 22970information for your program running on the target. This requires 22971access to an unstripped copy of your program, and possibly any associated 22972symbol files. Note that this section applies equally to both @code{target 22973remote} mode and @code{target extended-remote} mode. 22974 22975Some remote targets (@pxref{qXfer executable filename read}, and 22976@pxref{Host I/O Packets}) allow @value{GDBN} to access program files over 22977the same connection used to communicate with @value{GDBN}. With such a 22978target, if the remote program is unstripped, the only command you need is 22979@code{target remote} (or @code{target extended-remote}). 22980 22981If the remote program is stripped, or the target does not support remote 22982program file access, start up @value{GDBN} using the name of the local 22983unstripped copy of your program as the first argument, or use the 22984@code{file} command. Use @code{set sysroot} to specify the location (on 22985the host) of target libraries (unless your @value{GDBN} was compiled with 22986the correct sysroot using @code{--with-sysroot}). Alternatively, you 22987may use @code{set solib-search-path} to specify how @value{GDBN} locates 22988target libraries. 22989 22990The symbol file and target libraries must exactly match the executable 22991and libraries on the target, with one exception: the files on the host 22992system should not be stripped, even if the files on the target system 22993are. Mismatched or missing files will lead to confusing results 22994during debugging. On @sc{gnu}/Linux targets, mismatched or missing 22995files may also prevent @code{gdbserver} from debugging multi-threaded 22996programs. 22997 22998@subsection Remote Connection Commands 22999@cindex remote connection commands 23000@value{GDBN} can communicate with the target over a serial line, a 23001local Unix domain socket, or 23002over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In 23003each case, @value{GDBN} uses the same protocol for debugging your 23004program; only the medium carrying the debugging packets varies. The 23005@code{target remote} and @code{target extended-remote} commands 23006establish a connection to the target. Both commands accept the same 23007arguments, which indicate the medium to use: 23008 23009@table @code 23010 23011@item target remote @var{serial-device} 23012@itemx target extended-remote @var{serial-device} 23013@cindex serial line, @code{target remote} 23014Use @var{serial-device} to communicate with the target. For example, 23015to use a serial line connected to the device named @file{/dev/ttyb}: 23016 23017@smallexample 23018target remote /dev/ttyb 23019@end smallexample 23020 23021If you're using a serial line, you may want to give @value{GDBN} the 23022@samp{--baud} option, or use the @code{set serial baud} command 23023(@pxref{Remote Configuration, set serial baud}) before the 23024@code{target} command. 23025 23026@item target remote @var{local-socket} 23027@itemx target extended-remote @var{local-socket} 23028@cindex local socket, @code{target remote} 23029@cindex Unix domain socket 23030Use @var{local-socket} to communicate with the target. For example, 23031to use a local Unix domain socket bound to the file system entry @file{/tmp/gdb-socket0}: 23032 23033@smallexample 23034target remote /tmp/gdb-socket0 23035@end smallexample 23036 23037Note that this command has the same form as the command to connect 23038to a serial line. @value{GDBN} will automatically determine which 23039kind of file you have specified and will make the appropriate kind 23040of connection. 23041This feature is not available if the host system does not support 23042Unix domain sockets. 23043 23044@item target remote @code{@var{host}:@var{port}} 23045@itemx target remote @code{[@var{host}]:@var{port}} 23046@itemx target remote @code{tcp:@var{host}:@var{port}} 23047@itemx target remote @code{tcp:[@var{host}]:@var{port}} 23048@itemx target remote @code{tcp4:@var{host}:@var{port}} 23049@itemx target remote @code{tcp6:@var{host}:@var{port}} 23050@itemx target remote @code{tcp6:[@var{host}]:@var{port}} 23051@itemx target extended-remote @code{@var{host}:@var{port}} 23052@itemx target extended-remote @code{[@var{host}]:@var{port}} 23053@itemx target extended-remote @code{tcp:@var{host}:@var{port}} 23054@itemx target extended-remote @code{tcp:[@var{host}]:@var{port}} 23055@itemx target extended-remote @code{tcp4:@var{host}:@var{port}} 23056@itemx target extended-remote @code{tcp6:@var{host}:@var{port}} 23057@itemx target extended-remote @code{tcp6:[@var{host}]:@var{port}} 23058@cindex @acronym{TCP} port, @code{target remote} 23059Debug using a @acronym{TCP} connection to @var{port} on @var{host}. 23060The @var{host} may be either a host name, a numeric @acronym{IPv4} 23061address, or a numeric @acronym{IPv6} address (with or without the 23062square brackets to separate the address from the port); @var{port} 23063must be a decimal number. The @var{host} could be the target machine 23064itself, if it is directly connected to the net, or it might be a 23065terminal server which in turn has a serial line to the target. 23066 23067For example, to connect to port 2828 on a terminal server named 23068@code{manyfarms}: 23069 23070@smallexample 23071target remote manyfarms:2828 23072@end smallexample 23073 23074To connect to port 2828 on a terminal server whose address is 23075@code{2001:0db8:85a3:0000:0000:8a2e:0370:7334}, you can either use the 23076square bracket syntax: 23077 23078@smallexample 23079target remote [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:2828 23080@end smallexample 23081 23082@noindent 23083or explicitly specify the @acronym{IPv6} protocol: 23084 23085@smallexample 23086target remote tcp6:2001:0db8:85a3:0000:0000:8a2e:0370:7334:2828 23087@end smallexample 23088 23089This last example may be confusing to the reader, because there is no 23090visible separation between the hostname and the port number. 23091Therefore, we recommend the user to provide @acronym{IPv6} addresses 23092using square brackets for clarity. However, it is important to 23093mention that for @value{GDBN} there is no ambiguity: the number after 23094the last colon is considered to be the port number. 23095 23096If your remote target is actually running on the same machine as your 23097debugger session (e.g.@: a simulator for your target running on the 23098same host), you can omit the hostname. For example, to connect to 23099port 1234 on your local machine: 23100 23101@smallexample 23102target remote :1234 23103@end smallexample 23104@noindent 23105 23106Note that the colon is still required here. 23107 23108@item target remote @code{udp:@var{host}:@var{port}} 23109@itemx target remote @code{udp:[@var{host}]:@var{port}} 23110@itemx target remote @code{udp4:@var{host}:@var{port}} 23111@itemx target remote @code{udp6:[@var{host}]:@var{port}} 23112@itemx target extended-remote @code{udp:@var{host}:@var{port}} 23113@itemx target extended-remote @code{udp:@var{host}:@var{port}} 23114@itemx target extended-remote @code{udp:[@var{host}]:@var{port}} 23115@itemx target extended-remote @code{udp4:@var{host}:@var{port}} 23116@itemx target extended-remote @code{udp6:@var{host}:@var{port}} 23117@itemx target extended-remote @code{udp6:[@var{host}]:@var{port}} 23118@cindex @acronym{UDP} port, @code{target remote} 23119Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to 23120connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}: 23121 23122@smallexample 23123target remote udp:manyfarms:2828 23124@end smallexample 23125 23126When using a @acronym{UDP} connection for remote debugging, you should 23127keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP} 23128can silently drop packets on busy or unreliable networks, which will 23129cause havoc with your debugging session. 23130 23131@item target remote | @var{command} 23132@itemx target extended-remote | @var{command} 23133@cindex pipe, @code{target remote} to 23134Run @var{command} in the background and communicate with it using a 23135pipe. The @var{command} is a shell command, to be parsed and expanded 23136by the system's command shell, @code{/bin/sh}; it should expect remote 23137protocol packets on its standard input, and send replies on its 23138standard output. You could use this to run a stand-alone simulator 23139that speaks the remote debugging protocol, to make net connections 23140using programs like @code{ssh}, or for other similar tricks. 23141 23142If @var{command} closes its standard output (perhaps by exiting), 23143@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the 23144program has already exited, this will have no effect.) 23145 23146@end table 23147 23148@cindex interrupting remote programs 23149@cindex remote programs, interrupting 23150Whenever @value{GDBN} is waiting for the remote program, if you type the 23151interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the 23152program. This may or may not succeed, depending in part on the hardware 23153and the serial drivers the remote system uses. If you type the 23154interrupt character once again, @value{GDBN} displays this prompt: 23155 23156@smallexample 23157Interrupted while waiting for the program. 23158Give up (and stop debugging it)? (y or n) 23159@end smallexample 23160 23161In @code{target remote} mode, if you type @kbd{y}, @value{GDBN} abandons 23162the remote debugging session. (If you decide you want to try again later, 23163you can use @kbd{target remote} again to connect once more.) If you type 23164@kbd{n}, @value{GDBN} goes back to waiting. 23165 23166In @code{target extended-remote} mode, typing @kbd{n} will leave 23167@value{GDBN} connected to the target. 23168 23169@table @code 23170@kindex detach (remote) 23171@item detach 23172When you have finished debugging the remote program, you can use the 23173@code{detach} command to release it from @value{GDBN} control. 23174Detaching from the target normally resumes its execution, but the results 23175will depend on your particular remote stub. After the @code{detach} 23176command in @code{target remote} mode, @value{GDBN} is free to connect to 23177another target. In @code{target extended-remote} mode, @value{GDBN} is 23178still connected to the target. 23179 23180@kindex disconnect 23181@item disconnect 23182The @code{disconnect} command closes the connection to the target, and 23183the target is generally not resumed. It will wait for @value{GDBN} 23184(this instance or another one) to connect and continue debugging. After 23185the @code{disconnect} command, @value{GDBN} is again free to connect to 23186another target. 23187 23188@cindex send command to remote monitor 23189@cindex extend @value{GDBN} for remote targets 23190@cindex add new commands for external monitor 23191@kindex monitor 23192@item monitor @var{cmd} 23193This command allows you to send arbitrary commands directly to the 23194remote monitor. Since @value{GDBN} doesn't care about the commands it 23195sends like this, this command is the way to extend @value{GDBN}---you 23196can add new commands that only the external monitor will understand 23197and implement. 23198@end table 23199 23200@node File Transfer 23201@section Sending files to a remote system 23202@cindex remote target, file transfer 23203@cindex file transfer 23204@cindex sending files to remote systems 23205 23206Some remote targets offer the ability to transfer files over the same 23207connection used to communicate with @value{GDBN}. This is convenient 23208for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems 23209running @code{gdbserver} over a network interface. For other targets, 23210e.g.@: embedded devices with only a single serial port, this may be 23211the only way to upload or download files. 23212 23213Not all remote targets support these commands. 23214 23215@table @code 23216@kindex remote put 23217@item remote put @var{hostfile} @var{targetfile} 23218Copy file @var{hostfile} from the host system (the machine running 23219@value{GDBN}) to @var{targetfile} on the target system. 23220 23221@kindex remote get 23222@item remote get @var{targetfile} @var{hostfile} 23223Copy file @var{targetfile} from the target system to @var{hostfile} 23224on the host system. 23225 23226@kindex remote delete 23227@item remote delete @var{targetfile} 23228Delete @var{targetfile} from the target system. 23229 23230@end table 23231 23232@node Server 23233@section Using the @code{gdbserver} Program 23234 23235@kindex gdbserver 23236@cindex remote connection without stubs 23237@code{gdbserver} is a control program for Unix-like systems, which 23238allows you to connect your program with a remote @value{GDBN} via 23239@code{target remote} or @code{target extended-remote}---but without 23240linking in the usual debugging stub. 23241 23242@code{gdbserver} is not a complete replacement for the debugging stubs, 23243because it requires essentially the same operating-system facilities 23244that @value{GDBN} itself does. In fact, a system that can run 23245@code{gdbserver} to connect to a remote @value{GDBN} could also run 23246@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless, 23247because it is a much smaller program than @value{GDBN} itself. It is 23248also easier to port than all of @value{GDBN}, so you may be able to get 23249started more quickly on a new system by using @code{gdbserver}. 23250Finally, if you develop code for real-time systems, you may find that 23251the tradeoffs involved in real-time operation make it more convenient to 23252do as much development work as possible on another system, for example 23253by cross-compiling. You can use @code{gdbserver} to make a similar 23254choice for debugging. 23255 23256@value{GDBN} and @code{gdbserver} communicate via either a serial line 23257or a TCP connection, using the standard @value{GDBN} remote serial 23258protocol. 23259 23260@quotation 23261@emph{Warning:} @code{gdbserver} does not have any built-in security. 23262Do not run @code{gdbserver} connected to any public network; a 23263@value{GDBN} connection to @code{gdbserver} provides access to the 23264target system with the same privileges as the user running 23265@code{gdbserver}. 23266@end quotation 23267 23268@anchor{Running gdbserver} 23269@subsection Running @code{gdbserver} 23270@cindex arguments, to @code{gdbserver} 23271@cindex @code{gdbserver}, command-line arguments 23272 23273Run @code{gdbserver} on the target system. You need a copy of the 23274program you want to debug, including any libraries it requires. 23275@code{gdbserver} does not need your program's symbol table, so you can 23276strip the program if necessary to save space. @value{GDBN} on the host 23277system does all the symbol handling. 23278 23279To use the server, you must tell it how to communicate with @value{GDBN}; 23280the name of your program; and the arguments for your program. The usual 23281syntax is: 23282 23283@smallexample 23284target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ] 23285@end smallexample 23286 23287@var{comm} is either a device name (to use a serial line), or a TCP 23288hostname and portnumber, or @code{-} or @code{stdio} to use 23289stdin/stdout of @code{gdbserver}. 23290For example, to debug Emacs with the argument 23291@samp{foo.txt} and communicate with @value{GDBN} over the serial port 23292@file{/dev/com1}: 23293 23294@smallexample 23295target> gdbserver /dev/com1 emacs foo.txt 23296@end smallexample 23297 23298@code{gdbserver} waits passively for the host @value{GDBN} to communicate 23299with it. 23300 23301To use a TCP connection instead of a serial line: 23302 23303@smallexample 23304target> gdbserver host:2345 emacs foo.txt 23305@end smallexample 23306 23307The only difference from the previous example is the first argument, 23308specifying that you are communicating with the host @value{GDBN} via 23309TCP. The @samp{host:2345} argument means that @code{gdbserver} is to 23310expect a TCP connection from machine @samp{host} to local TCP port 2345. 23311(Currently, the @samp{host} part is ignored.) You can choose any number 23312you want for the port number as long as it does not conflict with any 23313TCP ports already in use on the target system (for example, @code{23} is 23314reserved for @code{telnet}).@footnote{If you choose a port number that 23315conflicts with another service, @code{gdbserver} prints an error message 23316and exits.} You must use the same port number with the host @value{GDBN} 23317@code{target remote} command. 23318 23319The @code{stdio} connection is useful when starting @code{gdbserver} 23320with ssh: 23321 23322@smallexample 23323(gdb) target remote | ssh -T hostname gdbserver - hello 23324@end smallexample 23325 23326The @samp{-T} option to ssh is provided because we don't need a remote pty, 23327and we don't want escape-character handling. Ssh does this by default when 23328a command is provided, the flag is provided to make it explicit. 23329You could elide it if you want to. 23330 23331Programs started with stdio-connected gdbserver have @file{/dev/null} for 23332@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for 23333display through a pipe connected to gdbserver. 23334Both @code{stdout} and @code{stderr} use the same pipe. 23335 23336@anchor{Attaching to a program} 23337@subsubsection Attaching to a Running Program 23338@cindex attach to a program, @code{gdbserver} 23339@cindex @option{--attach}, @code{gdbserver} option 23340 23341On some targets, @code{gdbserver} can also attach to running programs. 23342This is accomplished via the @code{--attach} argument. The syntax is: 23343 23344@smallexample 23345target> gdbserver --attach @var{comm} @var{pid} 23346@end smallexample 23347 23348@var{pid} is the process ID of a currently running process. It isn't 23349necessary to point @code{gdbserver} at a binary for the running process. 23350 23351In @code{target extended-remote} mode, you can also attach using the 23352@value{GDBN} attach command 23353(@pxref{Attaching in Types of Remote Connections}). 23354 23355@pindex pidof 23356You can debug processes by name instead of process ID if your target has the 23357@code{pidof} utility: 23358 23359@smallexample 23360target> gdbserver --attach @var{comm} `pidof @var{program}` 23361@end smallexample 23362 23363In case more than one copy of @var{program} is running, or @var{program} 23364has multiple threads, most versions of @code{pidof} support the 23365@code{-s} option to only return the first process ID. 23366 23367@subsubsection TCP port allocation lifecycle of @code{gdbserver} 23368 23369This section applies only when @code{gdbserver} is run to listen on a TCP 23370port. 23371 23372@code{gdbserver} normally terminates after all of its debugged processes have 23373terminated in @kbd{target remote} mode. On the other hand, for @kbd{target 23374extended-remote}, @code{gdbserver} stays running even with no processes left. 23375@value{GDBN} normally terminates the spawned debugged process on its exit, 23376which normally also terminates @code{gdbserver} in the @kbd{target remote} 23377mode. Therefore, when the connection drops unexpectedly, and @value{GDBN} 23378cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver} 23379stays running even in the @kbd{target remote} mode. 23380 23381When @code{gdbserver} stays running, @value{GDBN} can connect to it again later. 23382Such reconnecting is useful for features like @ref{disconnected tracing}. For 23383completeness, at most one @value{GDBN} can be connected at a time. 23384 23385@cindex @option{--once}, @code{gdbserver} option 23386By default, @code{gdbserver} keeps the listening TCP port open, so that 23387subsequent connections are possible. However, if you start @code{gdbserver} 23388with the @option{--once} option, it will stop listening for any further 23389connection attempts after connecting to the first @value{GDBN} session. This 23390means no further connections to @code{gdbserver} will be possible after the 23391first one. It also means @code{gdbserver} will terminate after the first 23392connection with remote @value{GDBN} has closed, even for unexpectedly closed 23393connections and even in the @kbd{target extended-remote} mode. The 23394@option{--once} option allows reusing the same port number for connecting to 23395multiple instances of @code{gdbserver} running on the same host, since each 23396instance closes its port after the first connection. 23397 23398@anchor{Other Command-Line Arguments for gdbserver} 23399@subsubsection Other Command-Line Arguments for @code{gdbserver} 23400 23401You can use the @option{--multi} option to start @code{gdbserver} without 23402specifying a program to debug or a process to attach to. Then you can 23403attach in @code{target extended-remote} mode and run or attach to a 23404program. For more information, 23405@pxref{--multi Option in Types of Remote Connnections}. 23406 23407@cindex @option{--debug}, @code{gdbserver} option 23408The @option{--debug} option tells @code{gdbserver} to display extra 23409status information about the debugging process. 23410@cindex @option{--remote-debug}, @code{gdbserver} option 23411The @option{--remote-debug} option tells @code{gdbserver} to display 23412remote protocol debug output. 23413@cindex @option{--debug-file}, @code{gdbserver} option 23414@cindex @code{gdbserver}, send all debug output to a single file 23415The @option{--debug-file=@var{filename}} option tells @code{gdbserver} to 23416write any debug output to the given @var{filename}. These options are intended 23417for @code{gdbserver} development and for bug reports to the developers. 23418 23419@cindex @option{--debug-format}, @code{gdbserver} option 23420The @option{--debug-format=option1[,option2,...]} option tells 23421@code{gdbserver} to include additional information in each output. 23422Possible options are: 23423 23424@table @code 23425@item none 23426Turn off all extra information in debugging output. 23427@item all 23428Turn on all extra information in debugging output. 23429@item timestamps 23430Include a timestamp in each line of debugging output. 23431@end table 23432 23433Options are processed in order. Thus, for example, if @option{none} 23434appears last then no additional information is added to debugging output. 23435 23436@cindex @option{--wrapper}, @code{gdbserver} option 23437The @option{--wrapper} option specifies a wrapper to launch programs 23438for debugging. The option should be followed by the name of the 23439wrapper, then any command-line arguments to pass to the wrapper, then 23440@kbd{--} indicating the end of the wrapper arguments. 23441 23442@code{gdbserver} runs the specified wrapper program with a combined 23443command line including the wrapper arguments, then the name of the 23444program to debug, then any arguments to the program. The wrapper 23445runs until it executes your program, and then @value{GDBN} gains control. 23446 23447You can use any program that eventually calls @code{execve} with 23448its arguments as a wrapper. Several standard Unix utilities do 23449this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending 23450with @code{exec "$@@"} will also work. 23451 23452For example, you can use @code{env} to pass an environment variable to 23453the debugged program, without setting the variable in @code{gdbserver}'s 23454environment: 23455 23456@smallexample 23457$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog 23458@end smallexample 23459 23460@cindex @option{--selftest} 23461The @option{--selftest} option runs the self tests in @code{gdbserver}: 23462 23463@smallexample 23464$ gdbserver --selftest 23465Ran 2 unit tests, 0 failed 23466@end smallexample 23467 23468These tests are disabled in release. 23469@subsection Connecting to @code{gdbserver} 23470 23471The basic procedure for connecting to the remote target is: 23472@itemize 23473 23474@item 23475Run @value{GDBN} on the host system. 23476 23477@item 23478Make sure you have the necessary symbol files 23479(@pxref{Host and target files}). 23480Load symbols for your application using the @code{file} command before you 23481connect. Use @code{set sysroot} to locate target libraries (unless your 23482@value{GDBN} was compiled with the correct sysroot using 23483@code{--with-sysroot}). 23484 23485@item 23486Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}). 23487For TCP connections, you must start up @code{gdbserver} prior to using 23488the @code{target} command. Otherwise you may get an error whose 23489text depends on the host system, but which usually looks something like 23490@samp{Connection refused}. Don't use the @code{load} 23491command in @value{GDBN} when using @code{target remote} mode, since the 23492program is already on the target. 23493 23494@end itemize 23495 23496@anchor{Monitor Commands for gdbserver} 23497@subsection Monitor Commands for @code{gdbserver} 23498@cindex monitor commands, for @code{gdbserver} 23499 23500During a @value{GDBN} session using @code{gdbserver}, you can use the 23501@code{monitor} command to send special requests to @code{gdbserver}. 23502Here are the available commands. 23503 23504@table @code 23505@item monitor help 23506List the available monitor commands. 23507 23508@item monitor set debug 0 23509@itemx monitor set debug 1 23510Disable or enable general debugging messages. 23511 23512@item monitor set remote-debug 0 23513@itemx monitor set remote-debug 1 23514Disable or enable specific debugging messages associated with the remote 23515protocol (@pxref{Remote Protocol}). 23516 23517@item monitor set debug-file filename 23518@itemx monitor set debug-file 23519Send any debug output to the given file, or to stderr. 23520 23521@item monitor set debug-format option1@r{[},option2,...@r{]} 23522Specify additional text to add to debugging messages. 23523Possible options are: 23524 23525@table @code 23526@item none 23527Turn off all extra information in debugging output. 23528@item all 23529Turn on all extra information in debugging output. 23530@item timestamps 23531Include a timestamp in each line of debugging output. 23532@end table 23533 23534Options are processed in order. Thus, for example, if @option{none} 23535appears last then no additional information is added to debugging output. 23536 23537@item monitor set libthread-db-search-path [PATH] 23538@cindex gdbserver, search path for @code{libthread_db} 23539When this command is issued, @var{path} is a colon-separated list of 23540directories to search for @code{libthread_db} (@pxref{Threads,,set 23541libthread-db-search-path}). If you omit @var{path}, 23542@samp{libthread-db-search-path} will be reset to its default value. 23543 23544The special entry @samp{$pdir} for @samp{libthread-db-search-path} is 23545not supported in @code{gdbserver}. 23546 23547@item monitor exit 23548Tell gdbserver to exit immediately. This command should be followed by 23549@code{disconnect} to close the debugging session. @code{gdbserver} will 23550detach from any attached processes and kill any processes it created. 23551Use @code{monitor exit} to terminate @code{gdbserver} at the end 23552of a multi-process mode debug session. 23553 23554@end table 23555 23556@subsection Tracepoints support in @code{gdbserver} 23557@cindex tracepoints support in @code{gdbserver} 23558 23559On some targets, @code{gdbserver} supports tracepoints, fast 23560tracepoints and static tracepoints. 23561 23562For fast or static tracepoints to work, a special library called the 23563@dfn{in-process agent} (IPA), must be loaded in the inferior process. 23564This library is built and distributed as an integral part of 23565@code{gdbserver}. In addition, support for static tracepoints 23566requires building the in-process agent library with static tracepoints 23567support. At present, the UST (LTTng Userspace Tracer, 23568@url{http://lttng.org/ust}) tracing engine is supported. This support 23569is automatically available if UST development headers are found in the 23570standard include path when @code{gdbserver} is built, or if 23571@code{gdbserver} was explicitly configured using @option{--with-ust} 23572to point at such headers. You can explicitly disable the support 23573using @option{--with-ust=no}. 23574 23575There are several ways to load the in-process agent in your program: 23576 23577@table @code 23578@item Specifying it as dependency at link time 23579 23580You can link your program dynamically with the in-process agent 23581library. On most systems, this is accomplished by adding 23582@code{-linproctrace} to the link command. 23583 23584@item Using the system's preloading mechanisms 23585 23586You can force loading the in-process agent at startup time by using 23587your system's support for preloading shared libraries. Many Unixes 23588support the concept of preloading user defined libraries. In most 23589cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so} 23590in the environment. See also the description of @code{gdbserver}'s 23591@option{--wrapper} command line option. 23592 23593@item Using @value{GDBN} to force loading the agent at run time 23594 23595On some systems, you can force the inferior to load a shared library, 23596by calling a dynamic loader function in the inferior that takes care 23597of dynamically looking up and loading a shared library. On most Unix 23598systems, the function is @code{dlopen}. You'll use the @code{call} 23599command for that. For example: 23600 23601@smallexample 23602(@value{GDBP}) call dlopen ("libinproctrace.so", ...) 23603@end smallexample 23604 23605Note that on most Unix systems, for the @code{dlopen} function to be 23606available, the program needs to be linked with @code{-ldl}. 23607@end table 23608 23609On systems that have a userspace dynamic loader, like most Unix 23610systems, when you connect to @code{gdbserver} using @code{target 23611remote}, you'll find that the program is stopped at the dynamic 23612loader's entry point, and no shared library has been loaded in the 23613program's address space yet, including the in-process agent. In that 23614case, before being able to use any of the fast or static tracepoints 23615features, you need to let the loader run and load the shared 23616libraries. The simplest way to do that is to run the program to the 23617main procedure. E.g., if debugging a C or C@t{++} program, start 23618@code{gdbserver} like so: 23619 23620@smallexample 23621$ gdbserver :9999 myprogram 23622@end smallexample 23623 23624Start GDB and connect to @code{gdbserver} like so, and run to main: 23625 23626@smallexample 23627$ gdb myprogram 23628(@value{GDBP}) target remote myhost:9999 236290x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2 23630(@value{GDBP}) b main 23631(@value{GDBP}) continue 23632@end smallexample 23633 23634The in-process tracing agent library should now be loaded into the 23635process; you can confirm it with the @code{info sharedlibrary} 23636command, which will list @file{libinproctrace.so} as loaded in the 23637process. You are now ready to install fast tracepoints, list static 23638tracepoint markers, probe static tracepoints markers, and start 23639tracing. 23640 23641@node Remote Configuration 23642@section Remote Configuration 23643 23644@kindex set remote 23645@kindex show remote 23646This section documents the configuration options available when 23647debugging remote programs. For the options related to the File I/O 23648extensions of the remote protocol, see @ref{system, 23649system-call-allowed}. 23650 23651@table @code 23652@item set remoteaddresssize @var{bits} 23653@cindex address size for remote targets 23654@cindex bits in remote address 23655Set the maximum size of address in a memory packet to the specified 23656number of bits. @value{GDBN} will mask off the address bits above 23657that number, when it passes addresses to the remote target. The 23658default value is the number of bits in the target's address. 23659 23660@item show remoteaddresssize 23661Show the current value of remote address size in bits. 23662 23663@item set serial baud @var{n} 23664@cindex baud rate for remote targets 23665Set the baud rate for the remote serial I/O to @var{n} baud. The 23666value is used to set the speed of the serial port used for debugging 23667remote targets. 23668 23669@item show serial baud 23670Show the current speed of the remote connection. 23671 23672@item set serial parity @var{parity} 23673Set the parity for the remote serial I/O. Supported values of @var{parity} are: 23674@code{even}, @code{none}, and @code{odd}. The default is @code{none}. 23675 23676@item show serial parity 23677Show the current parity of the serial port. 23678 23679@item set remotebreak 23680@cindex interrupt remote programs 23681@cindex BREAK signal instead of Ctrl-C 23682@anchor{set remotebreak} 23683If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote 23684when you type @kbd{Ctrl-c} to interrupt the program running 23685on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C} 23686character instead. The default is off, since most remote systems 23687expect to see @samp{Ctrl-C} as the interrupt signal. 23688 23689@item show remotebreak 23690Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to 23691interrupt the remote program. 23692 23693@item set remoteflow on 23694@itemx set remoteflow off 23695@kindex set remoteflow 23696Enable or disable hardware flow control (@code{RTS}/@code{CTS}) 23697on the serial port used to communicate to the remote target. 23698 23699@item show remoteflow 23700@kindex show remoteflow 23701Show the current setting of hardware flow control. 23702 23703@item set remotelogbase @var{base} 23704Set the base (a.k.a.@: radix) of logging serial protocol 23705communications to @var{base}. Supported values of @var{base} are: 23706@code{ascii}, @code{octal}, and @code{hex}. The default is 23707@code{ascii}. 23708 23709@item show remotelogbase 23710Show the current setting of the radix for logging remote serial 23711protocol. 23712 23713@item set remotelogfile @var{file} 23714@cindex record serial communications on file 23715Record remote serial communications on the named @var{file}. The 23716default is not to record at all. 23717 23718@item show remotelogfile 23719Show the current setting of the file name on which to record the 23720serial communications. 23721 23722@item set remotetimeout @var{num} 23723@cindex timeout for serial communications 23724@cindex remote timeout 23725Set the timeout limit to wait for the remote target to respond to 23726@var{num} seconds. The default is 2 seconds. 23727 23728@item show remotetimeout 23729Show the current number of seconds to wait for the remote target 23730responses. 23731 23732@cindex limit hardware breakpoints and watchpoints 23733@cindex remote target, limit break- and watchpoints 23734@anchor{set remote hardware-watchpoint-limit} 23735@anchor{set remote hardware-breakpoint-limit} 23736@item set remote hardware-watchpoint-limit @var{limit} 23737@itemx set remote hardware-breakpoint-limit @var{limit} 23738Restrict @value{GDBN} to using @var{limit} remote hardware watchpoints 23739or breakpoints. The @var{limit} can be set to 0 to disable hardware 23740watchpoints or breakpoints, and @code{unlimited} for unlimited 23741watchpoints or breakpoints. 23742 23743@item show remote hardware-watchpoint-limit 23744@itemx show remote hardware-breakpoint-limit 23745Show the current limit for the number of hardware watchpoints or 23746breakpoints that @value{GDBN} can use. 23747 23748@cindex limit hardware watchpoints length 23749@cindex remote target, limit watchpoints length 23750@anchor{set remote hardware-watchpoint-length-limit} 23751@item set remote hardware-watchpoint-length-limit @var{limit} 23752Restrict @value{GDBN} to using @var{limit} bytes for the maximum 23753length of a remote hardware watchpoint. A @var{limit} of 0 disables 23754hardware watchpoints and @code{unlimited} allows watchpoints of any 23755length. 23756 23757@item show remote hardware-watchpoint-length-limit 23758Show the current limit (in bytes) of the maximum length of 23759a remote hardware watchpoint. 23760 23761@item set remote exec-file @var{filename} 23762@itemx show remote exec-file 23763@anchor{set remote exec-file} 23764@cindex executable file, for remote target 23765Select the file used for @code{run} with @code{target 23766extended-remote}. This should be set to a filename valid on the 23767target system. If it is not set, the target will use a default 23768filename (e.g.@: the last program run). 23769 23770@item set remote interrupt-sequence 23771@cindex interrupt remote programs 23772@cindex select Ctrl-C, BREAK or BREAK-g 23773Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or 23774@samp{BREAK-g} as the 23775sequence to the remote target in order to interrupt the execution. 23776@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which 23777is high level of serial line for some certain time. 23778Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g. 23779It is @code{BREAK} signal followed by character @code{g}. 23780 23781@item show remote interrupt-sequence 23782Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g} 23783is sent by @value{GDBN} to interrupt the remote program. 23784@code{BREAK-g} is BREAK signal followed by @code{g} and 23785also known as Magic SysRq g. 23786 23787@item set remote interrupt-on-connect 23788@cindex send interrupt-sequence on start 23789Specify whether interrupt-sequence is sent to remote target when 23790@value{GDBN} connects to it. This is mostly needed when you debug 23791Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g} 23792which is known as Magic SysRq g in order to connect @value{GDBN}. 23793 23794@item show remote interrupt-on-connect 23795Show whether interrupt-sequence is sent 23796to remote target when @value{GDBN} connects to it. 23797 23798@kindex set tcp 23799@kindex show tcp 23800@item set tcp auto-retry on 23801@cindex auto-retry, for remote TCP target 23802Enable auto-retry for remote TCP connections. This is useful if the remote 23803debugging agent is launched in parallel with @value{GDBN}; there is a race 23804condition because the agent may not become ready to accept the connection 23805before @value{GDBN} attempts to connect. When auto-retry is 23806enabled, if the initial attempt to connect fails, @value{GDBN} reattempts 23807to establish the connection using the timeout specified by 23808@code{set tcp connect-timeout}. 23809 23810@item set tcp auto-retry off 23811Do not auto-retry failed TCP connections. 23812 23813@item show tcp auto-retry 23814Show the current auto-retry setting. 23815 23816@item set tcp connect-timeout @var{seconds} 23817@itemx set tcp connect-timeout unlimited 23818@cindex connection timeout, for remote TCP target 23819@cindex timeout, for remote target connection 23820Set the timeout for establishing a TCP connection to the remote target to 23821@var{seconds}. The timeout affects both polling to retry failed connections 23822(enabled by @code{set tcp auto-retry on}) and waiting for connections 23823that are merely slow to complete, and represents an approximate cumulative 23824value. If @var{seconds} is @code{unlimited}, there is no timeout and 23825@value{GDBN} will keep attempting to establish a connection forever, 23826unless interrupted with @kbd{Ctrl-c}. The default is 15 seconds. 23827 23828@item show tcp connect-timeout 23829Show the current connection timeout setting. 23830@end table 23831 23832@cindex remote packets, enabling and disabling 23833The @value{GDBN} remote protocol autodetects the packets supported by 23834your debugging stub. If you need to override the autodetection, you 23835can use these commands to enable or disable individual packets. Each 23836packet can be set to @samp{on} (the remote target supports this 23837packet), @samp{off} (the remote target does not support this packet), 23838or @samp{auto} (detect remote target support for this packet). They 23839all default to @samp{auto}. For more information about each packet, 23840see @ref{Remote Protocol}. 23841 23842During normal use, you should not have to use any of these commands. 23843If you do, that may be a bug in your remote debugging stub, or a bug 23844in @value{GDBN}. You may want to report the problem to the 23845@value{GDBN} developers. 23846 23847For each packet @var{name}, the command to enable or disable the 23848packet is @code{set remote @var{name}-packet}. The available settings 23849are: 23850 23851@multitable @columnfractions 0.28 0.32 0.25 23852@item Command Name 23853@tab Remote Packet 23854@tab Related Features 23855 23856@item @code{fetch-register} 23857@tab @code{p} 23858@tab @code{info registers} 23859 23860@item @code{set-register} 23861@tab @code{P} 23862@tab @code{set} 23863 23864@item @code{binary-download} 23865@tab @code{X} 23866@tab @code{load}, @code{set} 23867 23868@item @code{read-aux-vector} 23869@tab @code{qXfer:auxv:read} 23870@tab @code{info auxv} 23871 23872@item @code{symbol-lookup} 23873@tab @code{qSymbol} 23874@tab Detecting multiple threads 23875 23876@item @code{attach} 23877@tab @code{vAttach} 23878@tab @code{attach} 23879 23880@item @code{verbose-resume} 23881@tab @code{vCont} 23882@tab Stepping or resuming multiple threads 23883 23884@item @code{run} 23885@tab @code{vRun} 23886@tab @code{run} 23887 23888@item @code{software-breakpoint} 23889@tab @code{Z0} 23890@tab @code{break} 23891 23892@item @code{hardware-breakpoint} 23893@tab @code{Z1} 23894@tab @code{hbreak} 23895 23896@item @code{write-watchpoint} 23897@tab @code{Z2} 23898@tab @code{watch} 23899 23900@item @code{read-watchpoint} 23901@tab @code{Z3} 23902@tab @code{rwatch} 23903 23904@item @code{access-watchpoint} 23905@tab @code{Z4} 23906@tab @code{awatch} 23907 23908@item @code{pid-to-exec-file} 23909@tab @code{qXfer:exec-file:read} 23910@tab @code{attach}, @code{run} 23911 23912@item @code{target-features} 23913@tab @code{qXfer:features:read} 23914@tab @code{set architecture} 23915 23916@item @code{library-info} 23917@tab @code{qXfer:libraries:read} 23918@tab @code{info sharedlibrary} 23919 23920@item @code{memory-map} 23921@tab @code{qXfer:memory-map:read} 23922@tab @code{info mem} 23923 23924@item @code{read-sdata-object} 23925@tab @code{qXfer:sdata:read} 23926@tab @code{print $_sdata} 23927 23928@item @code{read-siginfo-object} 23929@tab @code{qXfer:siginfo:read} 23930@tab @code{print $_siginfo} 23931 23932@item @code{write-siginfo-object} 23933@tab @code{qXfer:siginfo:write} 23934@tab @code{set $_siginfo} 23935 23936@item @code{threads} 23937@tab @code{qXfer:threads:read} 23938@tab @code{info threads} 23939 23940@item @code{get-thread-local-@*storage-address} 23941@tab @code{qGetTLSAddr} 23942@tab Displaying @code{__thread} variables 23943 23944@item @code{get-thread-information-block-address} 23945@tab @code{qGetTIBAddr} 23946@tab Display MS-Windows Thread Information Block. 23947 23948@item @code{search-memory} 23949@tab @code{qSearch:memory} 23950@tab @code{find} 23951 23952@item @code{supported-packets} 23953@tab @code{qSupported} 23954@tab Remote communications parameters 23955 23956@item @code{catch-syscalls} 23957@tab @code{QCatchSyscalls} 23958@tab @code{catch syscall} 23959 23960@item @code{pass-signals} 23961@tab @code{QPassSignals} 23962@tab @code{handle @var{signal}} 23963 23964@item @code{program-signals} 23965@tab @code{QProgramSignals} 23966@tab @code{handle @var{signal}} 23967 23968@item @code{hostio-close-packet} 23969@tab @code{vFile:close} 23970@tab @code{remote get}, @code{remote put} 23971 23972@item @code{hostio-open-packet} 23973@tab @code{vFile:open} 23974@tab @code{remote get}, @code{remote put} 23975 23976@item @code{hostio-pread-packet} 23977@tab @code{vFile:pread} 23978@tab @code{remote get}, @code{remote put} 23979 23980@item @code{hostio-pwrite-packet} 23981@tab @code{vFile:pwrite} 23982@tab @code{remote get}, @code{remote put} 23983 23984@item @code{hostio-unlink-packet} 23985@tab @code{vFile:unlink} 23986@tab @code{remote delete} 23987 23988@item @code{hostio-readlink-packet} 23989@tab @code{vFile:readlink} 23990@tab Host I/O 23991 23992@item @code{hostio-fstat-packet} 23993@tab @code{vFile:fstat} 23994@tab Host I/O 23995 23996@item @code{hostio-setfs-packet} 23997@tab @code{vFile:setfs} 23998@tab Host I/O 23999 24000@item @code{noack-packet} 24001@tab @code{QStartNoAckMode} 24002@tab Packet acknowledgment 24003 24004@item @code{osdata} 24005@tab @code{qXfer:osdata:read} 24006@tab @code{info os} 24007 24008@item @code{query-attached} 24009@tab @code{qAttached} 24010@tab Querying remote process attach state. 24011 24012@item @code{trace-buffer-size} 24013@tab @code{QTBuffer:size} 24014@tab @code{set trace-buffer-size} 24015 24016@item @code{trace-status} 24017@tab @code{qTStatus} 24018@tab @code{tstatus} 24019 24020@item @code{traceframe-info} 24021@tab @code{qXfer:traceframe-info:read} 24022@tab Traceframe info 24023 24024@item @code{install-in-trace} 24025@tab @code{InstallInTrace} 24026@tab Install tracepoint in tracing 24027 24028@item @code{disable-randomization} 24029@tab @code{QDisableRandomization} 24030@tab @code{set disable-randomization} 24031 24032@item @code{startup-with-shell} 24033@tab @code{QStartupWithShell} 24034@tab @code{set startup-with-shell} 24035 24036@item @code{environment-hex-encoded} 24037@tab @code{QEnvironmentHexEncoded} 24038@tab @code{set environment} 24039 24040@item @code{environment-unset} 24041@tab @code{QEnvironmentUnset} 24042@tab @code{unset environment} 24043 24044@item @code{environment-reset} 24045@tab @code{QEnvironmentReset} 24046@tab @code{Reset the inferior environment (i.e., unset user-set variables)} 24047 24048@item @code{set-working-dir} 24049@tab @code{QSetWorkingDir} 24050@tab @code{set cwd} 24051 24052@item @code{conditional-breakpoints-packet} 24053@tab @code{Z0 and Z1} 24054@tab @code{Support for target-side breakpoint condition evaluation} 24055 24056@item @code{multiprocess-extensions} 24057@tab @code{multiprocess extensions} 24058@tab Debug multiple processes and remote process PID awareness 24059 24060@item @code{swbreak-feature} 24061@tab @code{swbreak stop reason} 24062@tab @code{break} 24063 24064@item @code{hwbreak-feature} 24065@tab @code{hwbreak stop reason} 24066@tab @code{hbreak} 24067 24068@item @code{fork-event-feature} 24069@tab @code{fork stop reason} 24070@tab @code{fork} 24071 24072@item @code{vfork-event-feature} 24073@tab @code{vfork stop reason} 24074@tab @code{vfork} 24075 24076@item @code{exec-event-feature} 24077@tab @code{exec stop reason} 24078@tab @code{exec} 24079 24080@item @code{thread-events} 24081@tab @code{QThreadEvents} 24082@tab Tracking thread lifetime. 24083 24084@item @code{no-resumed-stop-reply} 24085@tab @code{no resumed thread left stop reply} 24086@tab Tracking thread lifetime. 24087 24088@end multitable 24089 24090@node Remote Stub 24091@section Implementing a Remote Stub 24092 24093@cindex debugging stub, example 24094@cindex remote stub, example 24095@cindex stub example, remote debugging 24096The stub files provided with @value{GDBN} implement the target side of the 24097communication protocol, and the @value{GDBN} side is implemented in the 24098@value{GDBN} source file @file{remote.c}. Normally, you can simply allow 24099these subroutines to communicate, and ignore the details. (If you're 24100implementing your own stub file, you can still ignore the details: start 24101with one of the existing stub files. @file{sparc-stub.c} is the best 24102organized, and therefore the easiest to read.) 24103 24104@cindex remote serial debugging, overview 24105To debug a program running on another machine (the debugging 24106@dfn{target} machine), you must first arrange for all the usual 24107prerequisites for the program to run by itself. For example, for a C 24108program, you need: 24109 24110@enumerate 24111@item 24112A startup routine to set up the C runtime environment; these usually 24113have a name like @file{crt0}. The startup routine may be supplied by 24114your hardware supplier, or you may have to write your own. 24115 24116@item 24117A C subroutine library to support your program's 24118subroutine calls, notably managing input and output. 24119 24120@item 24121A way of getting your program to the other machine---for example, a 24122download program. These are often supplied by the hardware 24123manufacturer, but you may have to write your own from hardware 24124documentation. 24125@end enumerate 24126 24127The next step is to arrange for your program to use a serial port to 24128communicate with the machine where @value{GDBN} is running (the @dfn{host} 24129machine). In general terms, the scheme looks like this: 24130 24131@table @emph 24132@item On the host, 24133@value{GDBN} already understands how to use this protocol; when everything 24134else is set up, you can simply use the @samp{target remote} command 24135(@pxref{Targets,,Specifying a Debugging Target}). 24136 24137@item On the target, 24138you must link with your program a few special-purpose subroutines that 24139implement the @value{GDBN} remote serial protocol. The file containing these 24140subroutines is called a @dfn{debugging stub}. 24141 24142On certain remote targets, you can use an auxiliary program 24143@code{gdbserver} instead of linking a stub into your program. 24144@xref{Server,,Using the @code{gdbserver} Program}, for details. 24145@end table 24146 24147The debugging stub is specific to the architecture of the remote 24148machine; for example, use @file{sparc-stub.c} to debug programs on 24149@sc{sparc} boards. 24150 24151@cindex remote serial stub list 24152These working remote stubs are distributed with @value{GDBN}: 24153 24154@table @code 24155 24156@item i386-stub.c 24157@cindex @file{i386-stub.c} 24158@cindex Intel 24159@cindex i386 24160For Intel 386 and compatible architectures. 24161 24162@item m68k-stub.c 24163@cindex @file{m68k-stub.c} 24164@cindex Motorola 680x0 24165@cindex m680x0 24166For Motorola 680x0 architectures. 24167 24168@item sh-stub.c 24169@cindex @file{sh-stub.c} 24170@cindex Renesas 24171@cindex SH 24172For Renesas SH architectures. 24173 24174@item sparc-stub.c 24175@cindex @file{sparc-stub.c} 24176@cindex Sparc 24177For @sc{sparc} architectures. 24178 24179@item sparcl-stub.c 24180@cindex @file{sparcl-stub.c} 24181@cindex Fujitsu 24182@cindex SparcLite 24183For Fujitsu @sc{sparclite} architectures. 24184 24185@end table 24186 24187The @file{README} file in the @value{GDBN} distribution may list other 24188recently added stubs. 24189 24190@menu 24191* Stub Contents:: What the stub can do for you 24192* Bootstrapping:: What you must do for the stub 24193* Debug Session:: Putting it all together 24194@end menu 24195 24196@node Stub Contents 24197@subsection What the Stub Can Do for You 24198 24199@cindex remote serial stub 24200The debugging stub for your architecture supplies these three 24201subroutines: 24202 24203@table @code 24204@item set_debug_traps 24205@findex set_debug_traps 24206@cindex remote serial stub, initialization 24207This routine arranges for @code{handle_exception} to run when your 24208program stops. You must call this subroutine explicitly in your 24209program's startup code. 24210 24211@item handle_exception 24212@findex handle_exception 24213@cindex remote serial stub, main routine 24214This is the central workhorse, but your program never calls it 24215explicitly---the setup code arranges for @code{handle_exception} to 24216run when a trap is triggered. 24217 24218@code{handle_exception} takes control when your program stops during 24219execution (for example, on a breakpoint), and mediates communications 24220with @value{GDBN} on the host machine. This is where the communications 24221protocol is implemented; @code{handle_exception} acts as the @value{GDBN} 24222representative on the target machine. It begins by sending summary 24223information on the state of your program, then continues to execute, 24224retrieving and transmitting any information @value{GDBN} needs, until you 24225execute a @value{GDBN} command that makes your program resume; at that point, 24226@code{handle_exception} returns control to your own code on the target 24227machine. 24228 24229@item breakpoint 24230@cindex @code{breakpoint} subroutine, remote 24231Use this auxiliary subroutine to make your program contain a 24232breakpoint. Depending on the particular situation, this may be the only 24233way for @value{GDBN} to get control. For instance, if your target 24234machine has some sort of interrupt button, you won't need to call this; 24235pressing the interrupt button transfers control to 24236@code{handle_exception}---in effect, to @value{GDBN}. On some machines, 24237simply receiving characters on the serial port may also trigger a trap; 24238again, in that situation, you don't need to call @code{breakpoint} from 24239your own program---simply running @samp{target remote} from the host 24240@value{GDBN} session gets control. 24241 24242Call @code{breakpoint} if none of these is true, or if you simply want 24243to make certain your program stops at a predetermined point for the 24244start of your debugging session. 24245@end table 24246 24247@node Bootstrapping 24248@subsection What You Must Do for the Stub 24249 24250@cindex remote stub, support routines 24251The debugging stubs that come with @value{GDBN} are set up for a particular 24252chip architecture, but they have no information about the rest of your 24253debugging target machine. 24254 24255First of all you need to tell the stub how to communicate with the 24256serial port. 24257 24258@table @code 24259@item int getDebugChar() 24260@findex getDebugChar 24261Write this subroutine to read a single character from the serial port. 24262It may be identical to @code{getchar} for your target system; a 24263different name is used to allow you to distinguish the two if you wish. 24264 24265@item void putDebugChar(int) 24266@findex putDebugChar 24267Write this subroutine to write a single character to the serial port. 24268It may be identical to @code{putchar} for your target system; a 24269different name is used to allow you to distinguish the two if you wish. 24270@end table 24271 24272@cindex control C, and remote debugging 24273@cindex interrupting remote targets 24274If you want @value{GDBN} to be able to stop your program while it is 24275running, you need to use an interrupt-driven serial driver, and arrange 24276for it to stop when it receives a @code{^C} (@samp{\003}, the control-C 24277character). That is the character which @value{GDBN} uses to tell the 24278remote system to stop. 24279 24280Getting the debugging target to return the proper status to @value{GDBN} 24281probably requires changes to the standard stub; one quick and dirty way 24282is to just execute a breakpoint instruction (the ``dirty'' part is that 24283@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}). 24284 24285Other routines you need to supply are: 24286 24287@table @code 24288@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address}) 24289@findex exceptionHandler 24290Write this function to install @var{exception_address} in the exception 24291handling tables. You need to do this because the stub does not have any 24292way of knowing what the exception handling tables on your target system 24293are like (for example, the processor's table might be in @sc{rom}, 24294containing entries which point to a table in @sc{ram}). 24295The @var{exception_number} specifies the exception which should be changed; 24296its meaning is architecture-dependent (for example, different numbers 24297might represent divide by zero, misaligned access, etc). When this 24298exception occurs, control should be transferred directly to 24299@var{exception_address}, and the processor state (stack, registers, 24300and so on) should be just as it is when a processor exception occurs. So if 24301you want to use a jump instruction to reach @var{exception_address}, it 24302should be a simple jump, not a jump to subroutine. 24303 24304For the 386, @var{exception_address} should be installed as an interrupt 24305gate so that interrupts are masked while the handler runs. The gate 24306should be at privilege level 0 (the most privileged level). The 24307@sc{sparc} and 68k stubs are able to mask interrupts themselves without 24308help from @code{exceptionHandler}. 24309 24310@item void flush_i_cache() 24311@findex flush_i_cache 24312On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the 24313instruction cache, if any, on your target machine. If there is no 24314instruction cache, this subroutine may be a no-op. 24315 24316On target machines that have instruction caches, @value{GDBN} requires this 24317function to make certain that the state of your program is stable. 24318@end table 24319 24320@noindent 24321You must also make sure this library routine is available: 24322 24323@table @code 24324@item void *memset(void *, int, int) 24325@findex memset 24326This is the standard library function @code{memset} that sets an area of 24327memory to a known value. If you have one of the free versions of 24328@code{libc.a}, @code{memset} can be found there; otherwise, you must 24329either obtain it from your hardware manufacturer, or write your own. 24330@end table 24331 24332If you do not use the GNU C compiler, you may need other standard 24333library subroutines as well; this varies from one stub to another, 24334but in general the stubs are likely to use any of the common library 24335subroutines which @code{@value{NGCC}} generates as inline code. 24336 24337 24338@node Debug Session 24339@subsection Putting it All Together 24340 24341@cindex remote serial debugging summary 24342In summary, when your program is ready to debug, you must follow these 24343steps. 24344 24345@enumerate 24346@item 24347Make sure you have defined the supporting low-level routines 24348(@pxref{Bootstrapping,,What You Must Do for the Stub}): 24349@display 24350@code{getDebugChar}, @code{putDebugChar}, 24351@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}. 24352@end display 24353 24354@item 24355Insert these lines in your program's startup code, before the main 24356procedure is called: 24357 24358@smallexample 24359set_debug_traps(); 24360breakpoint(); 24361@end smallexample 24362 24363On some machines, when a breakpoint trap is raised, the hardware 24364automatically makes the PC point to the instruction after the 24365breakpoint. If your machine doesn't do that, you may need to adjust 24366@code{handle_exception} to arrange for it to return to the instruction 24367after the breakpoint on this first invocation, so that your program 24368doesn't keep hitting the initial breakpoint instead of making 24369progress. 24370 24371@item 24372For the 680x0 stub only, you need to provide a variable called 24373@code{exceptionHook}. Normally you just use: 24374 24375@smallexample 24376void (*exceptionHook)() = 0; 24377@end smallexample 24378 24379@noindent 24380but if before calling @code{set_debug_traps}, you set it to point to a 24381function in your program, that function is called when 24382@code{@value{GDBN}} continues after stopping on a trap (for example, bus 24383error). The function indicated by @code{exceptionHook} is called with 24384one parameter: an @code{int} which is the exception number. 24385 24386@item 24387Compile and link together: your program, the @value{GDBN} debugging stub for 24388your target architecture, and the supporting subroutines. 24389 24390@item 24391Make sure you have a serial connection between your target machine and 24392the @value{GDBN} host, and identify the serial port on the host. 24393 24394@item 24395@c The "remote" target now provides a `load' command, so we should 24396@c document that. FIXME. 24397Download your program to your target machine (or get it there by 24398whatever means the manufacturer provides), and start it. 24399 24400@item 24401Start @value{GDBN} on the host, and connect to the target 24402(@pxref{Connecting,,Connecting to a Remote Target}). 24403 24404@end enumerate 24405 24406@node Configurations 24407@chapter Configuration-Specific Information 24408 24409While nearly all @value{GDBN} commands are available for all native and 24410cross versions of the debugger, there are some exceptions. This chapter 24411describes things that are only available in certain configurations. 24412 24413There are three major categories of configurations: native 24414configurations, where the host and target are the same, embedded 24415operating system configurations, which are usually the same for several 24416different processor architectures, and bare embedded processors, which 24417are quite different from each other. 24418 24419@menu 24420* Native:: 24421* Embedded OS:: 24422* Embedded Processors:: 24423* Architectures:: 24424@end menu 24425 24426@node Native 24427@section Native 24428 24429This section describes details specific to particular native 24430configurations. 24431 24432@menu 24433* BSD libkvm Interface:: Debugging BSD kernel memory images 24434* Process Information:: Process information 24435* DJGPP Native:: Features specific to the DJGPP port 24436* Cygwin Native:: Features specific to the Cygwin port 24437* Hurd Native:: Features specific to @sc{gnu} Hurd 24438* Darwin:: Features specific to Darwin 24439* FreeBSD:: Features specific to FreeBSD 24440@end menu 24441 24442@node BSD libkvm Interface 24443@subsection BSD libkvm Interface 24444 24445@cindex libkvm 24446@cindex kernel memory image 24447@cindex kernel crash dump 24448 24449BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory 24450interface that provides a uniform interface for accessing kernel virtual 24451memory images, including live systems and crash dumps. @value{GDBN} 24452uses this interface to allow you to debug live kernels and kernel crash 24453dumps on many native BSD configurations. This is implemented as a 24454special @code{kvm} debugging target. For debugging a live system, load 24455the currently running kernel into @value{GDBN} and connect to the 24456@code{kvm} target: 24457 24458@smallexample 24459(@value{GDBP}) @b{target kvm} 24460@end smallexample 24461 24462For debugging crash dumps, provide the file name of the crash dump as an 24463argument: 24464 24465@smallexample 24466(@value{GDBP}) @b{target kvm /var/crash/bsd.0} 24467@end smallexample 24468 24469Once connected to the @code{kvm} target, the following commands are 24470available: 24471 24472@table @code 24473@kindex kvm 24474@item kvm pcb 24475Set current context from the @dfn{Process Control Block} (PCB) address. 24476 24477@item kvm proc 24478Set current context from proc address. This command isn't available on 24479modern FreeBSD systems. 24480@end table 24481 24482@node Process Information 24483@subsection Process Information 24484@cindex /proc 24485@cindex examine process image 24486@cindex process info via @file{/proc} 24487 24488Some operating systems provide interfaces to fetch additional 24489information about running processes beyond memory and per-thread 24490register state. If @value{GDBN} is configured for an operating system 24491with a supported interface, the command @code{info proc} is available 24492to report information about the process running your program, or about 24493any process running on your system. 24494 24495One supported interface is a facility called @samp{/proc} that can be 24496used to examine the image of a running process using file-system 24497subroutines. This facility is supported on @sc{gnu}/Linux and Solaris 24498systems. 24499 24500On FreeBSD and NetBSD systems, system control nodes are used to query 24501process information. 24502 24503In addition, some systems may provide additional process information 24504in core files. Note that a core file may include a subset of the 24505information available from a live process. Process information is 24506currently available from cores created on @sc{gnu}/Linux and FreeBSD 24507systems. 24508 24509@table @code 24510@kindex info proc 24511@cindex process ID 24512@item info proc 24513@itemx info proc @var{process-id} 24514Summarize available information about a process. If a 24515process ID is specified by @var{process-id}, display information about 24516that process; otherwise display information about the program being 24517debugged. The summary includes the debugged process ID, the command 24518line used to invoke it, its current working directory, and its 24519executable file's absolute file name. 24520 24521On some systems, @var{process-id} can be of the form 24522@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID 24523within a process. If the optional @var{pid} part is missing, it means 24524a thread from the process being debugged (the leading @samp{/} still 24525needs to be present, or else @value{GDBN} will interpret the number as 24526a process ID rather than a thread ID). 24527 24528@item info proc cmdline 24529@cindex info proc cmdline 24530Show the original command line of the process. This command is 24531supported on @sc{gnu}/Linux, FreeBSD and NetBSD. 24532 24533@item info proc cwd 24534@cindex info proc cwd 24535Show the current working directory of the process. This command is 24536supported on @sc{gnu}/Linux, FreeBSD and NetBSD. 24537 24538@item info proc exe 24539@cindex info proc exe 24540Show the name of executable of the process. This command is supported 24541on @sc{gnu}/Linux, FreeBSD and NetBSD. 24542 24543@item info proc files 24544@cindex info proc files 24545Show the file descriptors open by the process. For each open file 24546descriptor, @value{GDBN} shows its number, type (file, directory, 24547character device, socket), file pointer offset, and the name of the 24548resource open on the descriptor. The resource name can be a file name 24549(for files, directories, and devices) or a protocol followed by socket 24550address (for network connections). This command is supported on 24551FreeBSD. 24552 24553This example shows the open file descriptors for a process using a 24554tty for standard input and output as well as two network sockets: 24555 24556@smallexample 24557(gdb) info proc files 22136 24558process 22136 24559Open files: 24560 24561 FD Type Offset Flags Name 24562 text file - r-------- /usr/bin/ssh 24563 ctty chr - rw------- /dev/pts/20 24564 cwd dir - r-------- /usr/home/john 24565 root dir - r-------- / 24566 0 chr 0x32933a4 rw------- /dev/pts/20 24567 1 chr 0x32933a4 rw------- /dev/pts/20 24568 2 chr 0x32933a4 rw------- /dev/pts/20 24569 3 socket 0x0 rw----n-- tcp4 10.0.1.2:53014 -> 10.0.1.10:22 24570 4 socket 0x0 rw------- unix stream:/tmp/ssh-FIt89oAzOn5f/agent.2456 24571@end smallexample 24572 24573@item info proc mappings 24574@cindex memory address space mappings 24575Report the memory address space ranges accessible in a process. On 24576Solaris, FreeBSD and NetBSD systems, each memory range includes information 24577on whether the process has read, write, or execute access rights to each 24578range. On @sc{gnu}/Linux, FreeBSD and NetBSD systems, each memory range 24579includes the object file which is mapped to that range. 24580 24581@item info proc stat 24582@itemx info proc status 24583@cindex process detailed status information 24584Show additional process-related information, including the user ID and 24585group ID; virtual memory usage; the signals that are pending, blocked, 24586and ignored; its TTY; its consumption of system and user time; its 24587stack size; its @samp{nice} value; etc. These commands are supported 24588on @sc{gnu}/Linux, FreeBSD and NetBSD. 24589 24590For @sc{gnu}/Linux systems, see the @samp{proc} man page for more 24591information (type @kbd{man 5 proc} from your shell prompt). 24592 24593For FreeBSD and NetBSD systems, @code{info proc stat} is an alias for 24594@code{info proc status}. 24595 24596@item info proc all 24597Show all the information about the process described under all of the 24598above @code{info proc} subcommands. 24599 24600@ignore 24601@comment These sub-options of 'info proc' were not included when 24602@comment procfs.c was re-written. Keep their descriptions around 24603@comment against the day when someone finds the time to put them back in. 24604@kindex info proc times 24605@item info proc times 24606Starting time, user CPU time, and system CPU time for your program and 24607its children. 24608 24609@kindex info proc id 24610@item info proc id 24611Report on the process IDs related to your program: its own process ID, 24612the ID of its parent, the process group ID, and the session ID. 24613@end ignore 24614 24615@item set procfs-trace 24616@kindex set procfs-trace 24617@cindex @code{procfs} API calls 24618This command enables and disables tracing of @code{procfs} API calls. 24619 24620@item show procfs-trace 24621@kindex show procfs-trace 24622Show the current state of @code{procfs} API call tracing. 24623 24624@item set procfs-file @var{file} 24625@kindex set procfs-file 24626Tell @value{GDBN} to write @code{procfs} API trace to the named 24627@var{file}. @value{GDBN} appends the trace info to the previous 24628contents of the file. The default is to display the trace on the 24629standard output. 24630 24631@item show procfs-file 24632@kindex show procfs-file 24633Show the file to which @code{procfs} API trace is written. 24634 24635@item proc-trace-entry 24636@itemx proc-trace-exit 24637@itemx proc-untrace-entry 24638@itemx proc-untrace-exit 24639@kindex proc-trace-entry 24640@kindex proc-trace-exit 24641@kindex proc-untrace-entry 24642@kindex proc-untrace-exit 24643These commands enable and disable tracing of entries into and exits 24644from the @code{syscall} interface. 24645 24646@item info pidlist 24647@kindex info pidlist 24648@cindex process list, QNX Neutrino 24649For QNX Neutrino only, this command displays the list of all the 24650processes and all the threads within each process. 24651 24652@item info meminfo 24653@kindex info meminfo 24654@cindex mapinfo list, QNX Neutrino 24655For QNX Neutrino only, this command displays the list of all mapinfos. 24656@end table 24657 24658@node DJGPP Native 24659@subsection Features for Debugging @sc{djgpp} Programs 24660@cindex @sc{djgpp} debugging 24661@cindex native @sc{djgpp} debugging 24662@cindex MS-DOS-specific commands 24663 24664@cindex DPMI 24665@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and 24666MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs 24667that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on 24668top of real-mode DOS systems and their emulations. 24669 24670@value{GDBN} supports native debugging of @sc{djgpp} programs, and 24671defines a few commands specific to the @sc{djgpp} port. This 24672subsection describes those commands. 24673 24674@table @code 24675@kindex info dos 24676@item info dos 24677This is a prefix of @sc{djgpp}-specific commands which print 24678information about the target system and important OS structures. 24679 24680@kindex sysinfo 24681@cindex MS-DOS system info 24682@cindex free memory information (MS-DOS) 24683@item info dos sysinfo 24684This command displays assorted information about the underlying 24685platform: the CPU type and features, the OS version and flavor, the 24686DPMI version, and the available conventional and DPMI memory. 24687 24688@cindex GDT 24689@cindex LDT 24690@cindex IDT 24691@cindex segment descriptor tables 24692@cindex descriptor tables display 24693@item info dos gdt 24694@itemx info dos ldt 24695@itemx info dos idt 24696These 3 commands display entries from, respectively, Global, Local, 24697and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor 24698tables are data structures which store a descriptor for each segment 24699that is currently in use. The segment's selector is an index into a 24700descriptor table; the table entry for that index holds the 24701descriptor's base address and limit, and its attributes and access 24702rights. 24703 24704A typical @sc{djgpp} program uses 3 segments: a code segment, a data 24705segment (used for both data and the stack), and a DOS segment (which 24706allows access to DOS/BIOS data structures and absolute addresses in 24707conventional memory). However, the DPMI host will usually define 24708additional segments in order to support the DPMI environment. 24709 24710@cindex garbled pointers 24711These commands allow to display entries from the descriptor tables. 24712Without an argument, all entries from the specified table are 24713displayed. An argument, which should be an integer expression, means 24714display a single entry whose index is given by the argument. For 24715example, here's a convenient way to display information about the 24716debugged program's data segment: 24717 24718@smallexample 24719@exdent @code{(@value{GDBP}) info dos ldt $ds} 24720@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)} 24721@end smallexample 24722 24723@noindent 24724This comes in handy when you want to see whether a pointer is outside 24725the data segment's limit (i.e.@: @dfn{garbled}). 24726 24727@cindex page tables display (MS-DOS) 24728@item info dos pde 24729@itemx info dos pte 24730These two commands display entries from, respectively, the Page 24731Directory and the Page Tables. Page Directories and Page Tables are 24732data structures which control how virtual memory addresses are mapped 24733into physical addresses. A Page Table includes an entry for every 24734page of memory that is mapped into the program's address space; there 24735may be several Page Tables, each one holding up to 4096 entries. A 24736Page Directory has up to 4096 entries, one each for every Page Table 24737that is currently in use. 24738 24739Without an argument, @kbd{info dos pde} displays the entire Page 24740Directory, and @kbd{info dos pte} displays all the entries in all of 24741the Page Tables. An argument, an integer expression, given to the 24742@kbd{info dos pde} command means display only that entry from the Page 24743Directory table. An argument given to the @kbd{info dos pte} command 24744means display entries from a single Page Table, the one pointed to by 24745the specified entry in the Page Directory. 24746 24747@cindex direct memory access (DMA) on MS-DOS 24748These commands are useful when your program uses @dfn{DMA} (Direct 24749Memory Access), which needs physical addresses to program the DMA 24750controller. 24751 24752These commands are supported only with some DPMI servers. 24753 24754@cindex physical address from linear address 24755@item info dos address-pte @var{addr} 24756This command displays the Page Table entry for a specified linear 24757address. The argument @var{addr} is a linear address which should 24758already have the appropriate segment's base address added to it, 24759because this command accepts addresses which may belong to @emph{any} 24760segment. For example, here's how to display the Page Table entry for 24761the page where a variable @code{i} is stored: 24762 24763@smallexample 24764@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i} 24765@exdent @code{Page Table entry for address 0x11a00d30:} 24766@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30} 24767@end smallexample 24768 24769@noindent 24770This says that @code{i} is stored at offset @code{0xd30} from the page 24771whose physical base address is @code{0x02698000}, and shows all the 24772attributes of that page. 24773 24774Note that you must cast the addresses of variables to a @code{char *}, 24775since otherwise the value of @code{__djgpp_base_address}, the base 24776address of all variables and functions in a @sc{djgpp} program, will 24777be added using the rules of C pointer arithmetics: if @code{i} is 24778declared an @code{int}, @value{GDBN} will add 4 times the value of 24779@code{__djgpp_base_address} to the address of @code{i}. 24780 24781Here's another example, it displays the Page Table entry for the 24782transfer buffer: 24783 24784@smallexample 24785@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)} 24786@exdent @code{Page Table entry for address 0x29110:} 24787@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110} 24788@end smallexample 24789 24790@noindent 24791(The @code{+ 3} offset is because the transfer buffer's address is the 247923rd member of the @code{_go32_info_block} structure.) The output 24793clearly shows that this DPMI server maps the addresses in conventional 24794memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and 24795linear (@code{0x29110}) addresses are identical. 24796 24797This command is supported only with some DPMI servers. 24798@end table 24799 24800@cindex DOS serial data link, remote debugging 24801In addition to native debugging, the DJGPP port supports remote 24802debugging via a serial data link. The following commands are specific 24803to remote serial debugging in the DJGPP port of @value{GDBN}. 24804 24805@table @code 24806@kindex set com1base 24807@kindex set com1irq 24808@kindex set com2base 24809@kindex set com2irq 24810@kindex set com3base 24811@kindex set com3irq 24812@kindex set com4base 24813@kindex set com4irq 24814@item set com1base @var{addr} 24815This command sets the base I/O port address of the @file{COM1} serial 24816port. 24817 24818@item set com1irq @var{irq} 24819This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use 24820for the @file{COM1} serial port. 24821 24822There are similar commands @samp{set com2base}, @samp{set com3irq}, 24823etc.@: for setting the port address and the @code{IRQ} lines for the 24824other 3 COM ports. 24825 24826@kindex show com1base 24827@kindex show com1irq 24828@kindex show com2base 24829@kindex show com2irq 24830@kindex show com3base 24831@kindex show com3irq 24832@kindex show com4base 24833@kindex show com4irq 24834The related commands @samp{show com1base}, @samp{show com1irq} etc.@: 24835display the current settings of the base address and the @code{IRQ} 24836lines used by the COM ports. 24837 24838@item info serial 24839@kindex info serial 24840@cindex DOS serial port status 24841This command prints the status of the 4 DOS serial ports. For each 24842port, it prints whether it's active or not, its I/O base address and 24843IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the 24844counts of various errors encountered so far. 24845@end table 24846 24847 24848@node Cygwin Native 24849@subsection Features for Debugging MS Windows PE Executables 24850@cindex MS Windows debugging 24851@cindex native Cygwin debugging 24852@cindex Cygwin-specific commands 24853 24854@value{GDBN} supports native debugging of MS Windows programs, including 24855DLLs with and without symbolic debugging information. 24856 24857@cindex Ctrl-BREAK, MS-Windows 24858@cindex interrupt debuggee on MS-Windows 24859MS-Windows programs that call @code{SetConsoleMode} to switch off the 24860special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted 24861by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows 24862supports @kbd{C-@key{BREAK}} as an alternative interrupt key 24863sequence, which can be used to interrupt the debuggee even if it 24864ignores @kbd{C-c}. 24865 24866There are various additional Cygwin-specific commands, described in 24867this section. Working with DLLs that have no debugging symbols is 24868described in @ref{Non-debug DLL Symbols}. 24869 24870@table @code 24871@kindex info w32 24872@item info w32 24873This is a prefix of MS Windows-specific commands which print 24874information about the target system and important OS structures. 24875 24876@item info w32 selector 24877This command displays information returned by 24878the Win32 API @code{GetThreadSelectorEntry} function. 24879It takes an optional argument that is evaluated to 24880a long value to give the information about this given selector. 24881Without argument, this command displays information 24882about the six segment registers. 24883 24884@item info w32 thread-information-block 24885This command displays thread specific information stored in the 24886Thread Information Block (readable on the X86 CPU family using @code{$fs} 24887selector for 32-bit programs and @code{$gs} for 64-bit programs). 24888 24889@kindex signal-event 24890@item signal-event @var{id} 24891This command signals an event with user-provided @var{id}. Used to resume 24892crashing process when attached to it using MS-Windows JIT debugging (AeDebug). 24893 24894To use it, create or edit the following keys in 24895@code{HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug} and/or 24896@code{HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug} 24897(for x86_64 versions): 24898 24899@itemize @minus 24900@item 24901@code{Debugger} (REG_SZ) --- a command to launch the debugger. 24902Suggested command is: @code{@var{fully-qualified-path-to-gdb.exe} -ex 24903"attach %ld" -ex "signal-event %ld" -ex "continue"}. 24904 24905The first @code{%ld} will be replaced by the process ID of the 24906crashing process, the second @code{%ld} will be replaced by the ID of 24907the event that blocks the crashing process, waiting for @value{GDBN} 24908to attach. 24909 24910@item 24911@code{Auto} (REG_SZ) --- either @code{1} or @code{0}. @code{1} will 24912make the system run debugger specified by the Debugger key 24913automatically, @code{0} will cause a dialog box with ``OK'' and 24914``Cancel'' buttons to appear, which allows the user to either 24915terminate the crashing process (OK) or debug it (Cancel). 24916@end itemize 24917 24918@kindex set cygwin-exceptions 24919@cindex debugging the Cygwin DLL 24920@cindex Cygwin DLL, debugging 24921@item set cygwin-exceptions @var{mode} 24922If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that 24923happen inside the Cygwin DLL. If @var{mode} is @code{off}, 24924@value{GDBN} will delay recognition of exceptions, and may ignore some 24925exceptions which seem to be caused by internal Cygwin DLL 24926``bookkeeping''. This option is meant primarily for debugging the 24927Cygwin DLL itself; the default value is @code{off} to avoid annoying 24928@value{GDBN} users with false @code{SIGSEGV} signals. 24929 24930@kindex show cygwin-exceptions 24931@item show cygwin-exceptions 24932Displays whether @value{GDBN} will break on exceptions that happen 24933inside the Cygwin DLL itself. 24934 24935@kindex set new-console 24936@item set new-console @var{mode} 24937If @var{mode} is @code{on} the debuggee will 24938be started in a new console on next start. 24939If @var{mode} is @code{off}, the debuggee will 24940be started in the same console as the debugger. 24941 24942@kindex show new-console 24943@item show new-console 24944Displays whether a new console is used 24945when the debuggee is started. 24946 24947@kindex set new-group 24948@item set new-group @var{mode} 24949This boolean value controls whether the debuggee should 24950start a new group or stay in the same group as the debugger. 24951This affects the way the Windows OS handles 24952@samp{Ctrl-C}. 24953 24954@kindex show new-group 24955@item show new-group 24956Displays current value of new-group boolean. 24957 24958@kindex set debugevents 24959@item set debugevents 24960This boolean value adds debug output concerning kernel events related 24961to the debuggee seen by the debugger. This includes events that 24962signal thread and process creation and exit, DLL loading and 24963unloading, console interrupts, and debugging messages produced by the 24964Windows @code{OutputDebugString} API call. 24965 24966@kindex set debugexec 24967@item set debugexec 24968This boolean value adds debug output concerning execute events 24969(such as resume thread) seen by the debugger. 24970 24971@kindex set debugexceptions 24972@item set debugexceptions 24973This boolean value adds debug output concerning exceptions in the 24974debuggee seen by the debugger. 24975 24976@kindex set debugmemory 24977@item set debugmemory 24978This boolean value adds debug output concerning debuggee memory reads 24979and writes by the debugger. 24980 24981@kindex set shell 24982@item set shell 24983This boolean values specifies whether the debuggee is called 24984via a shell or directly (default value is on). 24985 24986@kindex show shell 24987@item show shell 24988Displays if the debuggee will be started with a shell. 24989 24990@end table 24991 24992@menu 24993* Non-debug DLL Symbols:: Support for DLLs without debugging symbols 24994@end menu 24995 24996@node Non-debug DLL Symbols 24997@subsubsection Support for DLLs without Debugging Symbols 24998@cindex DLLs with no debugging symbols 24999@cindex Minimal symbols and DLLs 25000 25001Very often on windows, some of the DLLs that your program relies on do 25002not include symbolic debugging information (for example, 25003@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging 25004symbols in a DLL, it relies on the minimal amount of symbolic 25005information contained in the DLL's export table. This section 25006describes working with such symbols, known internally to @value{GDBN} as 25007``minimal symbols''. 25008 25009Note that before the debugged program has started execution, no DLLs 25010will have been loaded. The easiest way around this problem is simply to 25011start the program --- either by setting a breakpoint or letting the 25012program run once to completion. 25013 25014@subsubsection DLL Name Prefixes 25015 25016In keeping with the naming conventions used by the Microsoft debugging 25017tools, DLL export symbols are made available with a prefix based on the 25018DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is 25019also entered into the symbol table, so @code{CreateFileA} is often 25020sufficient. In some cases there will be name clashes within a program 25021(particularly if the executable itself includes full debugging symbols) 25022necessitating the use of the fully qualified name when referring to the 25023contents of the DLL. Use single-quotes around the name to avoid the 25024exclamation mark (``!'') being interpreted as a language operator. 25025 25026Note that the internal name of the DLL may be all upper-case, even 25027though the file name of the DLL is lower-case, or vice-versa. Since 25028symbols within @value{GDBN} are @emph{case-sensitive} this may cause 25029some confusion. If in doubt, try the @code{info functions} and 25030@code{info variables} commands or even @code{maint print msymbols} 25031(@pxref{Symbols}). Here's an example: 25032 25033@smallexample 25034(@value{GDBP}) info function CreateFileA 25035All functions matching regular expression "CreateFileA": 25036 25037Non-debugging symbols: 250380x77e885f4 CreateFileA 250390x77e885f4 KERNEL32!CreateFileA 25040@end smallexample 25041 25042@smallexample 25043(@value{GDBP}) info function ! 25044All functions matching regular expression "!": 25045 25046Non-debugging symbols: 250470x6100114c cygwin1!__assert 250480x61004034 cygwin1!_dll_crt0@@0 250490x61004240 cygwin1!dll_crt0(per_process *) 25050[etc...] 25051@end smallexample 25052 25053@subsubsection Working with Minimal Symbols 25054 25055Symbols extracted from a DLL's export table do not contain very much 25056type information. All that @value{GDBN} can do is guess whether a symbol 25057refers to a function or variable depending on the linker section that 25058contains the symbol. Also note that the actual contents of the memory 25059contained in a DLL are not available unless the program is running. This 25060means that you cannot examine the contents of a variable or disassemble 25061a function within a DLL without a running program. 25062 25063Variables are generally treated as pointers and dereferenced 25064automatically. For this reason, it is often necessary to prefix a 25065variable name with the address-of operator (``&'') and provide explicit 25066type information in the command. Here's an example of the type of 25067problem: 25068 25069@smallexample 25070(@value{GDBP}) print 'cygwin1!__argv' 25071'cygwin1!__argv' has unknown type; cast it to its declared type 25072@end smallexample 25073 25074@smallexample 25075(@value{GDBP}) x 'cygwin1!__argv' 25076'cygwin1!__argv' has unknown type; cast it to its declared type 25077@end smallexample 25078 25079And two possible solutions: 25080 25081@smallexample 25082(@value{GDBP}) print ((char **)'cygwin1!__argv')[0] 25083$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram" 25084@end smallexample 25085 25086@smallexample 25087(@value{GDBP}) x/2x &'cygwin1!__argv' 250880x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000 25089(@value{GDBP}) x/x 0x10021608 250900x10021608: 0x0022fd98 25091(@value{GDBP}) x/s 0x0022fd98 250920x22fd98: "/cygdrive/c/mydirectory/myprogram" 25093@end smallexample 25094 25095Setting a break point within a DLL is possible even before the program 25096starts execution. However, under these circumstances, @value{GDBN} can't 25097examine the initial instructions of the function in order to skip the 25098function's frame set-up code. You can work around this by using ``*&'' 25099to set the breakpoint at a raw memory address: 25100 25101@smallexample 25102(@value{GDBP}) break *&'python22!PyOS_Readline' 25103Breakpoint 1 at 0x1e04eff0 25104@end smallexample 25105 25106The author of these extensions is not entirely convinced that setting a 25107break point within a shared DLL like @file{kernel32.dll} is completely 25108safe. 25109 25110@node Hurd Native 25111@subsection Commands Specific to @sc{gnu} Hurd Systems 25112@cindex @sc{gnu} Hurd debugging 25113 25114This subsection describes @value{GDBN} commands specific to the 25115@sc{gnu} Hurd native debugging. 25116 25117@table @code 25118@item set signals 25119@itemx set sigs 25120@kindex set signals@r{, Hurd command} 25121@kindex set sigs@r{, Hurd command} 25122This command toggles the state of inferior signal interception by 25123@value{GDBN}. Mach exceptions, such as breakpoint traps, are not 25124affected by this command. @code{sigs} is a shorthand alias for 25125@code{signals}. 25126 25127@item show signals 25128@itemx show sigs 25129@kindex show signals@r{, Hurd command} 25130@kindex show sigs@r{, Hurd command} 25131Show the current state of intercepting inferior's signals. 25132 25133@item set signal-thread 25134@itemx set sigthread 25135@kindex set signal-thread 25136@kindex set sigthread 25137This command tells @value{GDBN} which thread is the @code{libc} signal 25138thread. That thread is run when a signal is delivered to a running 25139process. @code{set sigthread} is the shorthand alias of @code{set 25140signal-thread}. 25141 25142@item show signal-thread 25143@itemx show sigthread 25144@kindex show signal-thread 25145@kindex show sigthread 25146These two commands show which thread will run when the inferior is 25147delivered a signal. 25148 25149@item set stopped 25150@kindex set stopped@r{, Hurd command} 25151This commands tells @value{GDBN} that the inferior process is stopped, 25152as with the @code{SIGSTOP} signal. The stopped process can be 25153continued by delivering a signal to it. 25154 25155@item show stopped 25156@kindex show stopped@r{, Hurd command} 25157This command shows whether @value{GDBN} thinks the debuggee is 25158stopped. 25159 25160@item set exceptions 25161@kindex set exceptions@r{, Hurd command} 25162Use this command to turn off trapping of exceptions in the inferior. 25163When exception trapping is off, neither breakpoints nor 25164single-stepping will work. To restore the default, set exception 25165trapping on. 25166 25167@item show exceptions 25168@kindex show exceptions@r{, Hurd command} 25169Show the current state of trapping exceptions in the inferior. 25170 25171@item set task pause 25172@kindex set task@r{, Hurd commands} 25173@cindex task attributes (@sc{gnu} Hurd) 25174@cindex pause current task (@sc{gnu} Hurd) 25175This command toggles task suspension when @value{GDBN} has control. 25176Setting it to on takes effect immediately, and the task is suspended 25177whenever @value{GDBN} gets control. Setting it to off will take 25178effect the next time the inferior is continued. If this option is set 25179to off, you can use @code{set thread default pause on} or @code{set 25180thread pause on} (see below) to pause individual threads. 25181 25182@item show task pause 25183@kindex show task@r{, Hurd commands} 25184Show the current state of task suspension. 25185 25186@item set task detach-suspend-count 25187@cindex task suspend count 25188@cindex detach from task, @sc{gnu} Hurd 25189This command sets the suspend count the task will be left with when 25190@value{GDBN} detaches from it. 25191 25192@item show task detach-suspend-count 25193Show the suspend count the task will be left with when detaching. 25194 25195@item set task exception-port 25196@itemx set task excp 25197@cindex task exception port, @sc{gnu} Hurd 25198This command sets the task exception port to which @value{GDBN} will 25199forward exceptions. The argument should be the value of the @dfn{send 25200rights} of the task. @code{set task excp} is a shorthand alias. 25201 25202@item set noninvasive 25203@cindex noninvasive task options 25204This command switches @value{GDBN} to a mode that is the least 25205invasive as far as interfering with the inferior is concerned. This 25206is the same as using @code{set task pause}, @code{set exceptions}, and 25207@code{set signals} to values opposite to the defaults. 25208 25209@item info send-rights 25210@itemx info receive-rights 25211@itemx info port-rights 25212@itemx info port-sets 25213@itemx info dead-names 25214@itemx info ports 25215@itemx info psets 25216@cindex send rights, @sc{gnu} Hurd 25217@cindex receive rights, @sc{gnu} Hurd 25218@cindex port rights, @sc{gnu} Hurd 25219@cindex port sets, @sc{gnu} Hurd 25220@cindex dead names, @sc{gnu} Hurd 25221These commands display information about, respectively, send rights, 25222receive rights, port rights, port sets, and dead names of a task. 25223There are also shorthand aliases: @code{info ports} for @code{info 25224port-rights} and @code{info psets} for @code{info port-sets}. 25225 25226@item set thread pause 25227@kindex set thread@r{, Hurd command} 25228@cindex thread properties, @sc{gnu} Hurd 25229@cindex pause current thread (@sc{gnu} Hurd) 25230This command toggles current thread suspension when @value{GDBN} has 25231control. Setting it to on takes effect immediately, and the current 25232thread is suspended whenever @value{GDBN} gets control. Setting it to 25233off will take effect the next time the inferior is continued. 25234Normally, this command has no effect, since when @value{GDBN} has 25235control, the whole task is suspended. However, if you used @code{set 25236task pause off} (see above), this command comes in handy to suspend 25237only the current thread. 25238 25239@item show thread pause 25240@kindex show thread@r{, Hurd command} 25241This command shows the state of current thread suspension. 25242 25243@item set thread run 25244This command sets whether the current thread is allowed to run. 25245 25246@item show thread run 25247Show whether the current thread is allowed to run. 25248 25249@item set thread detach-suspend-count 25250@cindex thread suspend count, @sc{gnu} Hurd 25251@cindex detach from thread, @sc{gnu} Hurd 25252This command sets the suspend count @value{GDBN} will leave on a 25253thread when detaching. This number is relative to the suspend count 25254found by @value{GDBN} when it notices the thread; use @code{set thread 25255takeover-suspend-count} to force it to an absolute value. 25256 25257@item show thread detach-suspend-count 25258Show the suspend count @value{GDBN} will leave on the thread when 25259detaching. 25260 25261@item set thread exception-port 25262@itemx set thread excp 25263Set the thread exception port to which to forward exceptions. This 25264overrides the port set by @code{set task exception-port} (see above). 25265@code{set thread excp} is the shorthand alias. 25266 25267@item set thread takeover-suspend-count 25268Normally, @value{GDBN}'s thread suspend counts are relative to the 25269value @value{GDBN} finds when it notices each thread. This command 25270changes the suspend counts to be absolute instead. 25271 25272@item set thread default 25273@itemx show thread default 25274@cindex thread default settings, @sc{gnu} Hurd 25275Each of the above @code{set thread} commands has a @code{set thread 25276default} counterpart (e.g., @code{set thread default pause}, @code{set 25277thread default exception-port}, etc.). The @code{thread default} 25278variety of commands sets the default thread properties for all 25279threads; you can then change the properties of individual threads with 25280the non-default commands. 25281@end table 25282 25283@node Darwin 25284@subsection Darwin 25285@cindex Darwin 25286 25287@value{GDBN} provides the following commands specific to the Darwin target: 25288 25289@table @code 25290@item set debug darwin @var{num} 25291@kindex set debug darwin 25292When set to a non zero value, enables debugging messages specific to 25293the Darwin support. Higher values produce more verbose output. 25294 25295@item show debug darwin 25296@kindex show debug darwin 25297Show the current state of Darwin messages. 25298 25299@item set debug mach-o @var{num} 25300@kindex set debug mach-o 25301When set to a non zero value, enables debugging messages while 25302@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the 25303file format used on Darwin for object and executable files.) Higher 25304values produce more verbose output. This is a command to diagnose 25305problems internal to @value{GDBN} and should not be needed in normal 25306usage. 25307 25308@item show debug mach-o 25309@kindex show debug mach-o 25310Show the current state of Mach-O file messages. 25311 25312@item set mach-exceptions on 25313@itemx set mach-exceptions off 25314@kindex set mach-exceptions 25315On Darwin, faults are first reported as a Mach exception and are then 25316mapped to a Posix signal. Use this command to turn on trapping of 25317Mach exceptions in the inferior. This might be sometimes useful to 25318better understand the cause of a fault. The default is off. 25319 25320@item show mach-exceptions 25321@kindex show mach-exceptions 25322Show the current state of exceptions trapping. 25323@end table 25324 25325@node FreeBSD 25326@subsection FreeBSD 25327@cindex FreeBSD 25328 25329When the ABI of a system call is changed in the FreeBSD kernel, this 25330is implemented by leaving a compatibility system call using the old 25331ABI at the existing number and allocating a new system call number for 25332the version using the new ABI. As a convenience, when a system call 25333is caught by name (@pxref{catch syscall}), compatibility system calls 25334are also caught. 25335 25336For example, FreeBSD 12 introduced a new variant of the @code{kevent} 25337system call and catching the @code{kevent} system call by name catches 25338both variants: 25339 25340@smallexample 25341(@value{GDBP}) catch syscall kevent 25342Catchpoint 1 (syscalls 'freebsd11_kevent' [363] 'kevent' [560]) 25343(@value{GDBP}) 25344@end smallexample 25345 25346 25347@node Embedded OS 25348@section Embedded Operating Systems 25349 25350This section describes configurations involving the debugging of 25351embedded operating systems that are available for several different 25352architectures. 25353 25354@value{GDBN} includes the ability to debug programs running on 25355various real-time operating systems. 25356 25357@node Embedded Processors 25358@section Embedded Processors 25359 25360This section goes into details specific to particular embedded 25361configurations. 25362 25363@cindex send command to simulator 25364Whenever a specific embedded processor has a simulator, @value{GDBN} 25365allows to send an arbitrary command to the simulator. 25366 25367@table @code 25368@item sim @var{command} 25369@kindex sim@r{, a command} 25370Send an arbitrary @var{command} string to the simulator. Consult the 25371documentation for the specific simulator in use for information about 25372acceptable commands. 25373@end table 25374 25375 25376@menu 25377* ARC:: Synopsys ARC 25378* ARM:: ARM 25379* BPF:: eBPF 25380* M68K:: Motorola M68K 25381* MicroBlaze:: Xilinx MicroBlaze 25382* MIPS Embedded:: MIPS Embedded 25383* OpenRISC 1000:: OpenRISC 1000 (or1k) 25384* PowerPC Embedded:: PowerPC Embedded 25385* AVR:: Atmel AVR 25386* CRIS:: CRIS 25387* Super-H:: Renesas Super-H 25388@end menu 25389 25390@node ARC 25391@subsection Synopsys ARC 25392@cindex Synopsys ARC 25393@cindex ARC specific commands 25394@cindex ARC600 25395@cindex ARC700 25396@cindex ARC EM 25397@cindex ARC HS 25398 25399@value{GDBN} provides the following ARC-specific commands: 25400 25401@table @code 25402@item set debug arc 25403@kindex set debug arc 25404Control the level of ARC specific debug messages. Use 0 for no messages (the 25405default), 1 for debug messages, and 2 for even more debug messages. 25406 25407@item show debug arc 25408@kindex show debug arc 25409Show the level of ARC specific debugging in operation. 25410 25411@item maint print arc arc-instruction @var{address} 25412@kindex maint print arc arc-instruction 25413Print internal disassembler information about instruction at a given address. 25414 25415@end table 25416 25417@node ARM 25418@subsection ARM 25419 25420@value{GDBN} provides the following ARM-specific commands: 25421 25422@table @code 25423@item set arm disassembler 25424@kindex set arm 25425This commands selects from a list of disassembly styles. The 25426@code{"std"} style is the standard style. 25427 25428@item show arm disassembler 25429@kindex show arm 25430Show the current disassembly style. 25431 25432@item set arm apcs32 25433@cindex ARM 32-bit mode 25434This command toggles ARM operation mode between 32-bit and 26-bit. 25435 25436@item show arm apcs32 25437Display the current usage of the ARM 32-bit mode. 25438 25439@item set arm fpu @var{fputype} 25440This command sets the ARM floating-point unit (FPU) type. The 25441argument @var{fputype} can be one of these: 25442 25443@table @code 25444@item auto 25445Determine the FPU type by querying the OS ABI. 25446@item softfpa 25447Software FPU, with mixed-endian doubles on little-endian ARM 25448processors. 25449@item fpa 25450GCC-compiled FPA co-processor. 25451@item softvfp 25452Software FPU with pure-endian doubles. 25453@item vfp 25454VFP co-processor. 25455@end table 25456 25457@item show arm fpu 25458Show the current type of the FPU. 25459 25460@item set arm abi 25461This command forces @value{GDBN} to use the specified ABI. 25462 25463@item show arm abi 25464Show the currently used ABI. 25465 25466@item set arm fallback-mode (arm|thumb|auto) 25467@value{GDBN} uses the symbol table, when available, to determine 25468whether instructions are ARM or Thumb. This command controls 25469@value{GDBN}'s default behavior when the symbol table is not 25470available. The default is @samp{auto}, which causes @value{GDBN} to 25471use the current execution mode (from the @code{T} bit in the @code{CPSR} 25472register). 25473 25474@item show arm fallback-mode 25475Show the current fallback instruction mode. 25476 25477@item set arm force-mode (arm|thumb|auto) 25478This command overrides use of the symbol table to determine whether 25479instructions are ARM or Thumb. The default is @samp{auto}, which 25480causes @value{GDBN} to use the symbol table and then the setting 25481of @samp{set arm fallback-mode}. 25482 25483@item show arm force-mode 25484Show the current forced instruction mode. 25485 25486@item set arm unwind-secure-frames 25487This command enables unwinding from Non-secure to Secure mode on 25488Cortex-M with Security extension. 25489This can trigger security exceptions when unwinding the exception 25490stack. 25491It is enabled by default. 25492 25493@item show arm unwind-secure-frames 25494Show whether unwinding from Non-secure to Secure mode is enabled. 25495 25496@item set debug arm 25497Toggle whether to display ARM-specific debugging messages from the ARM 25498target support subsystem. 25499 25500@item show debug arm 25501Show whether ARM-specific debugging messages are enabled. 25502@end table 25503 25504@table @code 25505@item target sim @r{[}@var{simargs}@r{]} @dots{} 25506The @value{GDBN} ARM simulator accepts the following optional arguments. 25507 25508@table @code 25509@item --swi-support=@var{type} 25510Tell the simulator which SWI interfaces to support. The argument 25511@var{type} may be a comma separated list of the following values. 25512The default value is @code{all}. 25513 25514@table @code 25515@item none 25516@item demon 25517@item angel 25518@item redboot 25519@item all 25520@end table 25521@end table 25522@end table 25523 25524@node BPF 25525@subsection BPF 25526 25527@table @code 25528@item target sim @r{[}@var{simargs}@r{]} @dots{} 25529The @value{GDBN} BPF simulator accepts the following optional arguments. 25530 25531@table @code 25532@item --skb-data-offset=@var{offset} 25533Tell the simulator the offset, measured in bytes, of the 25534@code{skb_data} field in the kernel @code{struct sk_buff} structure. 25535This offset is used by some BPF specific-purpose load/store 25536instructions. Defaults to 0. 25537@end table 25538@end table 25539 25540@node M68K 25541@subsection M68k 25542 25543The Motorola m68k configuration includes ColdFire support. 25544 25545@node MicroBlaze 25546@subsection MicroBlaze 25547@cindex Xilinx MicroBlaze 25548@cindex XMD, Xilinx Microprocessor Debugger 25549 25550The MicroBlaze is a soft-core processor supported on various Xilinx 25551FPGAs, such as Spartan or Virtex series. Boards with these processors 25552usually have JTAG ports which connect to a host system running the Xilinx 25553Embedded Development Kit (EDK) or Software Development Kit (SDK). 25554This host system is used to download the configuration bitstream to 25555the target FPGA. The Xilinx Microprocessor Debugger (XMD) program 25556communicates with the target board using the JTAG interface and 25557presents a @code{gdbserver} interface to the board. By default 25558@code{xmd} uses port @code{1234}. (While it is possible to change 25559this default port, it requires the use of undocumented @code{xmd} 25560commands. Contact Xilinx support if you need to do this.) 25561 25562Use these GDB commands to connect to the MicroBlaze target processor. 25563 25564@table @code 25565@item target remote :1234 25566Use this command to connect to the target if you are running @value{GDBN} 25567on the same system as @code{xmd}. 25568 25569@item target remote @var{xmd-host}:1234 25570Use this command to connect to the target if it is connected to @code{xmd} 25571running on a different system named @var{xmd-host}. 25572 25573@item load 25574Use this command to download a program to the MicroBlaze target. 25575 25576@item set debug microblaze @var{n} 25577Enable MicroBlaze-specific debugging messages if non-zero. 25578 25579@item show debug microblaze @var{n} 25580Show MicroBlaze-specific debugging level. 25581@end table 25582 25583@node MIPS Embedded 25584@subsection @acronym{MIPS} Embedded 25585 25586@noindent 25587@value{GDBN} supports these special commands for @acronym{MIPS} targets: 25588 25589@table @code 25590@item set mipsfpu double 25591@itemx set mipsfpu single 25592@itemx set mipsfpu none 25593@itemx set mipsfpu auto 25594@itemx show mipsfpu 25595@kindex set mipsfpu 25596@kindex show mipsfpu 25597@cindex @acronym{MIPS} remote floating point 25598@cindex floating point, @acronym{MIPS} remote 25599If your target board does not support the @acronym{MIPS} floating point 25600coprocessor, you should use the command @samp{set mipsfpu none} (if you 25601need this, you may wish to put the command in your @value{GDBN} init 25602file). This tells @value{GDBN} how to find the return value of 25603functions which return floating point values. It also allows 25604@value{GDBN} to avoid saving the floating point registers when calling 25605functions on the board. If you are using a floating point coprocessor 25606with only single precision floating point support, as on the @sc{r4650} 25607processor, use the command @samp{set mipsfpu single}. The default 25608double precision floating point coprocessor may be selected using 25609@samp{set mipsfpu double}. 25610 25611In previous versions the only choices were double precision or no 25612floating point, so @samp{set mipsfpu on} will select double precision 25613and @samp{set mipsfpu off} will select no floating point. 25614 25615As usual, you can inquire about the @code{mipsfpu} variable with 25616@samp{show mipsfpu}. 25617@end table 25618 25619@node OpenRISC 1000 25620@subsection OpenRISC 1000 25621@cindex OpenRISC 1000 25622 25623@noindent 25624The OpenRISC 1000 provides a free RISC instruction set architecture. It is 25625mainly provided as a soft-core which can run on Xilinx, Altera and other 25626FPGA's. 25627 25628@value{GDBN} for OpenRISC supports the below commands when connecting to 25629a target: 25630 25631@table @code 25632 25633@kindex target sim 25634@item target sim 25635 25636Runs the builtin CPU simulator which can run very basic 25637programs but does not support most hardware functions like MMU. 25638For more complex use cases the user is advised to run an external 25639target, and connect using @samp{target remote}. 25640 25641Example: @code{target sim} 25642 25643@item set debug or1k 25644Toggle whether to display OpenRISC-specific debugging messages from the 25645OpenRISC target support subsystem. 25646 25647@item show debug or1k 25648Show whether OpenRISC-specific debugging messages are enabled. 25649@end table 25650 25651@node PowerPC Embedded 25652@subsection PowerPC Embedded 25653 25654@cindex DVC register 25655@value{GDBN} supports using the DVC (Data Value Compare) register to 25656implement in hardware simple hardware watchpoint conditions of the form: 25657 25658@smallexample 25659(@value{GDBP}) watch @var{address|variable} \ 25660 if @var{address|variable} == @var{constant expression} 25661@end smallexample 25662 25663The DVC register will be automatically used when @value{GDBN} detects 25664such pattern in a condition expression, and the created watchpoint uses one 25665debug register (either the @code{exact-watchpoints} option is on and the 25666variable is scalar, or the variable has a length of one byte). This feature 25667is available in native @value{GDBN} running on a Linux kernel version 2.6.34 25668or newer. 25669 25670When running on PowerPC embedded processors, @value{GDBN} automatically uses 25671ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on, 25672in which case watchpoints using only one debug register are created when 25673watching variables of scalar types. 25674 25675You can create an artificial array to watch an arbitrary memory 25676region using one of the following commands (@pxref{Expressions}): 25677 25678@smallexample 25679(@value{GDBP}) watch *((char *) @var{address})@@@var{length} 25680(@value{GDBP}) watch @{char[@var{length}]@} @var{address} 25681@end smallexample 25682 25683PowerPC embedded processors support masked watchpoints. See the discussion 25684about the @code{mask} argument in @ref{Set Watchpoints}. 25685 25686@cindex ranged breakpoint 25687PowerPC embedded processors support hardware accelerated 25688@dfn{ranged breakpoints}. A ranged breakpoint stops execution of 25689the inferior whenever it executes an instruction at any address within 25690the range it was set at. To set a ranged breakpoint in @value{GDBN}, 25691use the @code{break-range} command. 25692 25693@value{GDBN} provides the following PowerPC-specific commands: 25694 25695@table @code 25696@kindex break-range 25697@item break-range @var{start-locspec}, @var{end-locspec} 25698Set a breakpoint for an address range given by @var{start-locspec} and 25699@var{end-locspec}, which are location specs. @xref{Location 25700Specifications}, for a list of all the possible forms of location 25701specs. @value{GDBN} resolves both @var{start-locspec} and 25702@var{end-locspec}, and uses the addresses of the resolved code 25703locations as start and end addresses of the range to break at. The 25704breakpoint will stop execution of the inferior whenever it executes an 25705instruction at any address between the start and end addresses, 25706inclusive. If either @var{start-locspec} or @var{end-locspec} resolve 25707to multiple code locations in the program, then the command aborts 25708with an error without creating a breakpoint. 25709 25710@kindex set powerpc 25711@item set powerpc soft-float 25712@itemx show powerpc soft-float 25713Force @value{GDBN} to use (or not use) a software floating point calling 25714convention. By default, @value{GDBN} selects the calling convention based 25715on the selected architecture and the provided executable file. 25716 25717@item set powerpc vector-abi 25718@itemx show powerpc vector-abi 25719Force @value{GDBN} to use the specified calling convention for vector 25720arguments and return values. The valid options are @samp{auto}; 25721@samp{generic}, to avoid vector registers even if they are present; 25722@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE 25723registers. By default, @value{GDBN} selects the calling convention 25724based on the selected architecture and the provided executable file. 25725 25726@item set powerpc exact-watchpoints 25727@itemx show powerpc exact-watchpoints 25728Allow @value{GDBN} to use only one debug register when watching a variable 25729of scalar type, thus assuming that the variable is accessed through the 25730address of its first byte. 25731 25732@end table 25733 25734@node AVR 25735@subsection Atmel AVR 25736@cindex AVR 25737 25738When configured for debugging the Atmel AVR, @value{GDBN} supports the 25739following AVR-specific commands: 25740 25741@table @code 25742@item info io_registers 25743@kindex info io_registers@r{, AVR} 25744@cindex I/O registers (Atmel AVR) 25745This command displays information about the AVR I/O registers. For 25746each register, @value{GDBN} prints its number and value. 25747@end table 25748 25749@node CRIS 25750@subsection CRIS 25751@cindex CRIS 25752 25753When configured for debugging CRIS, @value{GDBN} provides the 25754following CRIS-specific commands: 25755 25756@table @code 25757@item set cris-version @var{ver} 25758@cindex CRIS version 25759Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}. 25760The CRIS version affects register names and sizes. This command is useful in 25761case autodetection of the CRIS version fails. 25762 25763@item show cris-version 25764Show the current CRIS version. 25765 25766@item set cris-dwarf2-cfi 25767@cindex DWARF-2 CFI and CRIS 25768Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}. 25769Change to @samp{off} when using @code{gcc-cris} whose version is below 25770@code{R59}. 25771 25772@item show cris-dwarf2-cfi 25773Show the current state of using DWARF-2 CFI. 25774 25775@item set cris-mode @var{mode} 25776@cindex CRIS mode 25777Set the current CRIS mode to @var{mode}. It should only be changed when 25778debugging in guru mode, in which case it should be set to 25779@samp{guru} (the default is @samp{normal}). 25780 25781@item show cris-mode 25782Show the current CRIS mode. 25783@end table 25784 25785@node Super-H 25786@subsection Renesas Super-H 25787@cindex Super-H 25788 25789For the Renesas Super-H processor, @value{GDBN} provides these 25790commands: 25791 25792@table @code 25793@item set sh calling-convention @var{convention} 25794@kindex set sh calling-convention 25795Set the calling-convention used when calling functions from @value{GDBN}. 25796Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}. 25797With the @samp{gcc} setting, functions are called using the @value{NGCC} calling 25798convention. If the DWARF-2 information of the called function specifies 25799that the function follows the Renesas calling convention, the function 25800is called using the Renesas calling convention. If the calling convention 25801is set to @samp{renesas}, the Renesas calling convention is always used, 25802regardless of the DWARF-2 information. This can be used to override the 25803default of @samp{gcc} if debug information is missing, or the compiler 25804does not emit the DWARF-2 calling convention entry for a function. 25805 25806@item show sh calling-convention 25807@kindex show sh calling-convention 25808Show the current calling convention setting. 25809 25810@end table 25811 25812 25813@node Architectures 25814@section Architectures 25815 25816This section describes characteristics of architectures that affect 25817all uses of @value{GDBN} with the architecture, both native and cross. 25818 25819@menu 25820* AArch64:: 25821* i386:: 25822* Alpha:: 25823* MIPS:: 25824* HPPA:: HP PA architecture 25825* PowerPC:: 25826* Nios II:: 25827* Sparc64:: 25828* S12Z:: 25829@end menu 25830 25831@node AArch64 25832@subsection AArch64 25833@cindex AArch64 support 25834 25835When @value{GDBN} is debugging the AArch64 architecture, it provides the 25836following special commands: 25837 25838@table @code 25839@item set debug aarch64 25840@kindex set debug aarch64 25841This command determines whether AArch64 architecture-specific debugging 25842messages are to be displayed. 25843 25844@item show debug aarch64 25845Show whether AArch64 debugging messages are displayed. 25846 25847@end table 25848 25849@subsubsection AArch64 SVE. 25850@cindex AArch64 SVE. 25851 25852When @value{GDBN} is debugging the AArch64 architecture, if the Scalable Vector 25853Extension (SVE) is present, then @value{GDBN} will provide the vector registers 25854@code{$z0} through @code{$z31}, vector predicate registers @code{$p0} through 25855@code{$p15}, and the @code{$ffr} register. In addition, the pseudo register 25856@code{$vg} will be provided. This is the vector granule for the current thread 25857and represents the number of 64-bit chunks in an SVE @code{z} register. 25858 25859If the vector length changes, then the @code{$vg} register will be updated, 25860but the lengths of the @code{z} and @code{p} registers will not change. This 25861is a known limitation of @value{GDBN} and does not affect the execution of the 25862target process. 25863 25864@subsubsection AArch64 Pointer Authentication. 25865@cindex AArch64 Pointer Authentication. 25866@anchor{AArch64 PAC} 25867 25868When @value{GDBN} is debugging the AArch64 architecture, and the program is 25869using the v8.3-A feature Pointer Authentication (PAC), then whenever the link 25870register @code{$lr} is pointing to an PAC function its value will be masked. 25871When GDB prints a backtrace, any addresses that required unmasking will be 25872postfixed with the marker [PAC]. When using the MI, this is printed as part 25873of the @code{addr_flags} field. 25874 25875@subsubsection AArch64 Memory Tagging Extension. 25876@cindex AArch64 Memory Tagging Extension. 25877 25878When @value{GDBN} is debugging the AArch64 architecture, the program is 25879using the v8.5-A feature Memory Tagging Extension (MTE) and there is support 25880in the kernel for MTE, @value{GDBN} will make memory tagging functionality 25881available for inspection and editing of logical and allocation tags. 25882@xref{Memory Tagging}. 25883 25884To aid debugging, @value{GDBN} will output additional information when SIGSEGV 25885signals are generated as a result of memory tag failures. 25886 25887If the tag violation is synchronous, the following will be shown: 25888 25889@smallexample 25890Program received signal SIGSEGV, Segmentation fault 25891Memory tag violation while accessing address 0x0500fffff7ff8000 25892Allocation tag 0x1 25893Logical tag 0x5. 25894@end smallexample 25895 25896If the tag violation is asynchronous, the fault address is not available. 25897In this case @value{GDBN} will show the following: 25898 25899@smallexample 25900Program received signal SIGSEGV, Segmentation fault 25901Memory tag violation 25902Fault address unavailable. 25903@end smallexample 25904 25905A special register, @code{tag_ctl}, is made available through the 25906@code{org.gnu.gdb.aarch64.mte} feature. This register exposes some 25907options that can be controlled at runtime and emulates the @code{prctl} 25908option @code{PR_SET_TAGGED_ADDR_CTRL}. For further information, see the 25909documentation in the Linux kernel. 25910 25911@value{GDBN} supports dumping memory tag data to core files through the 25912@command{gcore} command and reading memory tag data from core files generated 25913by the @command{gcore} command or the Linux kernel. 25914 25915When a process uses memory-mapped pages protected by memory tags (for 25916example, AArch64 MTE), this additional information will be recorded in 25917the core file in the event of a crash or if @value{GDBN} generates a core file 25918from the current process state. 25919 25920The memory tag data will be used so developers can display the memory 25921tags from a particular memory region (using the @samp{m} modifier to the 25922@command{x} command, using the @command{print} command or using the various 25923@command{memory-tag} subcommands. 25924 25925In the case of a crash, @value{GDBN} will attempt to retrieve the memory tag 25926information automatically from the core file, and will show one of the above 25927messages depending on whether the synchronous or asynchronous mode is selected. 25928@xref{Memory Tagging}. @xref{Memory}. 25929 25930@node i386 25931@subsection x86 Architecture-specific Issues 25932 25933@table @code 25934@item set struct-convention @var{mode} 25935@kindex set struct-convention 25936@cindex struct return convention 25937@cindex struct/union returned in registers 25938Set the convention used by the inferior to return @code{struct}s and 25939@code{union}s from functions to @var{mode}. Possible values of 25940@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the 25941default). @code{"default"} or @code{"pcc"} means that @code{struct}s 25942are returned on the stack, while @code{"reg"} means that a 25943@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will 25944be returned in a register. 25945 25946@item show struct-convention 25947@kindex show struct-convention 25948Show the current setting of the convention to return @code{struct}s 25949from functions. 25950@end table 25951 25952 25953@subsubsection Intel @dfn{Memory Protection Extensions} (MPX). 25954@cindex Intel Memory Protection Extensions (MPX). 25955 25956Memory Protection Extension (MPX) adds the bound registers @samp{BND0} 25957@footnote{The register named with capital letters represent the architecture 25958registers.} through @samp{BND3}. Bound registers store a pair of 64-bit values 25959which are the lower bound and upper bound. Bounds are effective addresses or 25960memory locations. The upper bounds are architecturally represented in 1's 25961complement form. A bound having lower bound = 0, and upper bound = 0 25962(1's complement of all bits set) will allow access to the entire address space. 25963 25964@samp{BND0} through @samp{BND3} are represented in @value{GDBN} as @samp{bnd0raw} 25965through @samp{bnd3raw}. Pseudo registers @samp{bnd0} through @samp{bnd3} 25966display the upper bound performing the complement of one operation on the 25967upper bound value, i.e.@ when upper bound in @samp{bnd0raw} is 0 in the 25968@value{GDBN} @samp{bnd0} it will be @code{0xfff@dots{}}. In this sense it 25969can also be noted that the upper bounds are inclusive. 25970 25971As an example, assume that the register BND0 holds bounds for a pointer having 25972access allowed for the range between 0x32 and 0x71. The values present on 25973bnd0raw and bnd registers are presented as follows: 25974 25975@smallexample 25976 bnd0raw = @{0x32, 0xffffffff8e@} 25977 bnd0 = @{lbound = 0x32, ubound = 0x71@} : size 64 25978@end smallexample 25979 25980This way the raw value can be accessed via bnd0raw@dots{}bnd3raw. Any 25981change on bnd0@dots{}bnd3 or bnd0raw@dots{}bnd3raw is reflect on its 25982counterpart. When the bnd0@dots{}bnd3 registers are displayed via 25983Python, the display includes the memory size, in bits, accessible to 25984the pointer. 25985 25986Bounds can also be stored in bounds tables, which are stored in 25987application memory. These tables store bounds for pointers by specifying 25988the bounds pointer's value along with its bounds. Evaluating and changing 25989bounds located in bound tables is therefore interesting while investigating 25990bugs on MPX context. @value{GDBN} provides commands for this purpose: 25991 25992@table @code 25993@item show mpx bound @var{pointer} 25994@kindex show mpx bound 25995Display bounds of the given @var{pointer}. 25996 25997@item set mpx bound @var{pointer}, @var{lbound}, @var{ubound} 25998@kindex set mpx bound 25999Set the bounds of a pointer in the bound table. 26000This command takes three parameters: @var{pointer} is the pointers 26001whose bounds are to be changed, @var{lbound} and @var{ubound} are new values 26002for lower and upper bounds respectively. 26003@end table 26004 26005When you call an inferior function on an Intel MPX enabled program, 26006GDB sets the inferior's bound registers to the init (disabled) state 26007before calling the function. As a consequence, bounds checks for the 26008pointer arguments passed to the function will always pass. 26009 26010This is necessary because when you call an inferior function, the 26011program is usually in the middle of the execution of other function. 26012Since at that point bound registers are in an arbitrary state, not 26013clearing them would lead to random bound violations in the called 26014function. 26015 26016You can still examine the influence of the bound registers on the 26017execution of the called function by stopping the execution of the 26018called function at its prologue, setting bound registers, and 26019continuing the execution. For example: 26020 26021@smallexample 26022 $ break *upper 26023 Breakpoint 2 at 0x4009de: file i386-mpx-call.c, line 47. 26024 $ print upper (a, b, c, d, 1) 26025 Breakpoint 2, upper (a=0x0, b=0x6e0000005b, c=0x0, d=0x0, len=48).... 26026 $ print $bnd0 26027 @{lbound = 0x0, ubound = ffffffff@} : size -1 26028@end smallexample 26029 26030At this last step the value of bnd0 can be changed for investigation of bound 26031violations caused along the execution of the call. In order to know how to 26032set the bound registers or bound table for the call consult the ABI. 26033 26034@node Alpha 26035@subsection Alpha 26036 26037See the following section. 26038 26039@node MIPS 26040@subsection @acronym{MIPS} 26041 26042@cindex stack on Alpha 26043@cindex stack on @acronym{MIPS} 26044@cindex Alpha stack 26045@cindex @acronym{MIPS} stack 26046Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which 26047sometimes requires @value{GDBN} to search backward in the object code to 26048find the beginning of a function. 26049 26050@cindex response time, @acronym{MIPS} debugging 26051To improve response time (especially for embedded applications, where 26052@value{GDBN} may be restricted to a slow serial line for this search) 26053you may want to limit the size of this search, using one of these 26054commands: 26055 26056@table @code 26057@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS}) 26058@item set heuristic-fence-post @var{limit} 26059Restrict @value{GDBN} to examining at most @var{limit} bytes in its 26060search for the beginning of a function. A value of @var{0} (the 26061default) means there is no limit. However, except for @var{0}, the 26062larger the limit the more bytes @code{heuristic-fence-post} must search 26063and therefore the longer it takes to run. You should only need to use 26064this command when debugging a stripped executable. 26065 26066@item show heuristic-fence-post 26067Display the current limit. 26068@end table 26069 26070@noindent 26071These commands are available @emph{only} when @value{GDBN} is configured 26072for debugging programs on Alpha or @acronym{MIPS} processors. 26073 26074Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS} 26075programs: 26076 26077@table @code 26078@item set mips abi @var{arg} 26079@kindex set mips abi 26080@cindex set ABI for @acronym{MIPS} 26081Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible 26082values of @var{arg} are: 26083 26084@table @samp 26085@item auto 26086The default ABI associated with the current binary (this is the 26087default). 26088@item o32 26089@item o64 26090@item n32 26091@item n64 26092@item eabi32 26093@item eabi64 26094@end table 26095 26096@item show mips abi 26097@kindex show mips abi 26098Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior. 26099 26100@item set mips compression @var{arg} 26101@kindex set mips compression 26102@cindex code compression, @acronym{MIPS} 26103Tell @value{GDBN} which @acronym{MIPS} compressed 26104@acronym{ISA, Instruction Set Architecture} encoding is used by the 26105inferior. @value{GDBN} uses this for code disassembly and other 26106internal interpretation purposes. This setting is only referred to 26107when no executable has been associated with the debugging session or 26108the executable does not provide information about the encoding it uses. 26109Otherwise this setting is automatically updated from information 26110provided by the executable. 26111 26112Possible values of @var{arg} are @samp{mips16} and @samp{micromips}. 26113The default compressed @acronym{ISA} encoding is @samp{mips16}, as 26114executables containing @acronym{MIPS16} code frequently are not 26115identified as such. 26116 26117This setting is ``sticky''; that is, it retains its value across 26118debugging sessions until reset either explicitly with this command or 26119implicitly from an executable. 26120 26121The compiler and/or assembler typically add symbol table annotations to 26122identify functions compiled for the @acronym{MIPS16} or 26123@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations 26124are present, @value{GDBN} uses them in preference to the global 26125compressed @acronym{ISA} encoding setting. 26126 26127@item show mips compression 26128@kindex show mips compression 26129Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by 26130@value{GDBN} to debug the inferior. 26131 26132@item set mipsfpu 26133@itemx show mipsfpu 26134@xref{MIPS Embedded, set mipsfpu}. 26135 26136@item set mips mask-address @var{arg} 26137@kindex set mips mask-address 26138@cindex @acronym{MIPS} addresses, masking 26139This command determines whether the most-significant 32 bits of 64-bit 26140@acronym{MIPS} addresses are masked off. The argument @var{arg} can be 26141@samp{on}, @samp{off}, or @samp{auto}. The latter is the default 26142setting, which lets @value{GDBN} determine the correct value. 26143 26144@item show mips mask-address 26145@kindex show mips mask-address 26146Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or 26147not. 26148 26149@item set remote-mips64-transfers-32bit-regs 26150@kindex set remote-mips64-transfers-32bit-regs 26151This command controls compatibility with 64-bit @acronym{MIPS} targets that 26152transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target 26153that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr}, 26154and 64 bits for other registers, set this option to @samp{on}. 26155 26156@item show remote-mips64-transfers-32bit-regs 26157@kindex show remote-mips64-transfers-32bit-regs 26158Show the current setting of compatibility with older @acronym{MIPS} 64 targets. 26159 26160@item set debug mips 26161@kindex set debug mips 26162This command turns on and off debugging messages for the @acronym{MIPS}-specific 26163target code in @value{GDBN}. 26164 26165@item show debug mips 26166@kindex show debug mips 26167Show the current setting of @acronym{MIPS} debugging messages. 26168@end table 26169 26170 26171@node HPPA 26172@subsection HPPA 26173@cindex HPPA support 26174 26175When @value{GDBN} is debugging the HP PA architecture, it provides the 26176following special commands: 26177 26178@table @code 26179@item set debug hppa 26180@kindex set debug hppa 26181This command determines whether HPPA architecture-specific debugging 26182messages are to be displayed. 26183 26184@item show debug hppa 26185Show whether HPPA debugging messages are displayed. 26186 26187@item maint print unwind @var{address} 26188@kindex maint print unwind@r{, HPPA} 26189This command displays the contents of the unwind table entry at the 26190given @var{address}. 26191 26192@end table 26193 26194 26195@node PowerPC 26196@subsection PowerPC 26197@cindex PowerPC architecture 26198 26199When @value{GDBN} is debugging the PowerPC architecture, it provides a set of 26200pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point 26201numbers stored in the floating point registers. These values must be stored 26202in two consecutive registers, always starting at an even register like 26203@code{f0} or @code{f2}. 26204 26205The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed 26206by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0}, 26207@code{f2} and @code{f3} for @code{$dl1} and so on. 26208 26209For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit 26210wide Extended Floating Point Registers (@samp{f32} through @samp{f63}). 26211 26212@node Nios II 26213@subsection Nios II 26214@cindex Nios II architecture 26215 26216When @value{GDBN} is debugging the Nios II architecture, 26217it provides the following special commands: 26218 26219@table @code 26220 26221@item set debug nios2 26222@kindex set debug nios2 26223This command turns on and off debugging messages for the Nios II 26224target code in @value{GDBN}. 26225 26226@item show debug nios2 26227@kindex show debug nios2 26228Show the current setting of Nios II debugging messages. 26229@end table 26230 26231@node Sparc64 26232@subsection Sparc64 26233@cindex Sparc64 support 26234@cindex Application Data Integrity 26235@subsubsection ADI Support 26236 26237The M7 processor supports an Application Data Integrity (ADI) feature that 26238detects invalid data accesses. When software allocates memory and enables 26239ADI on the allocated memory, it chooses a 4-bit version number, sets the 26240version in the upper 4 bits of the 64-bit pointer to that data, and stores 26241the 4-bit version in every cacheline of that data. Hardware saves the latter 26242in spare bits in the cache and memory hierarchy. On each load and store, 26243the processor compares the upper 4 VA (virtual address) bits to the 26244cacheline's version. If there is a mismatch, the processor generates a 26245version mismatch trap which can be either precise or disrupting. The trap 26246is an error condition which the kernel delivers to the process as a SIGSEGV 26247signal. 26248 26249Note that only 64-bit applications can use ADI and need to be built with 26250ADI-enabled. 26251 26252Values of the ADI version tags, which are in granularity of a 26253cacheline (64 bytes), can be viewed or modified. 26254 26255 26256@table @code 26257@kindex adi examine 26258@item adi (examine | x) [ / @var{n} ] @var{addr} 26259 26260The @code{adi examine} command displays the value of one ADI version tag per 26261cacheline. 26262 26263@var{n} is a decimal integer specifying the number in bytes; the default 26264is 1. It specifies how much ADI version information, at the ratio of 1:ADI 26265block size, to display. 26266 26267@var{addr} is the address in user address space where you want @value{GDBN} 26268to begin displaying the ADI version tags. 26269 26270Below is an example of displaying ADI versions of variable "shmaddr". 26271 26272@smallexample 26273(@value{GDBP}) adi x/100 shmaddr 26274 0xfff800010002c000: 0 0 26275@end smallexample 26276 26277@kindex adi assign 26278@item adi (assign | a) [ / @var{n} ] @var{addr} = @var{tag} 26279 26280The @code{adi assign} command is used to assign new ADI version tag 26281to an address. 26282 26283@var{n} is a decimal integer specifying the number in bytes; 26284the default is 1. It specifies how much ADI version information, at the 26285ratio of 1:ADI block size, to modify. 26286 26287@var{addr} is the address in user address space where you want @value{GDBN} 26288to begin modifying the ADI version tags. 26289 26290@var{tag} is the new ADI version tag. 26291 26292For example, do the following to modify then verify ADI versions of 26293variable "shmaddr": 26294 26295@smallexample 26296(@value{GDBP}) adi a/100 shmaddr = 7 26297(@value{GDBP}) adi x/100 shmaddr 26298 0xfff800010002c000: 7 7 26299@end smallexample 26300 26301@end table 26302 26303@node S12Z 26304@subsection S12Z 26305@cindex S12Z support 26306 26307When @value{GDBN} is debugging the S12Z architecture, 26308it provides the following special command: 26309 26310@table @code 26311@item maint info bdccsr 26312@kindex maint info bdccsr@r{, S12Z} 26313This command displays the current value of the microprocessor's 26314BDCCSR register. 26315@end table 26316 26317 26318@node Controlling GDB 26319@chapter Controlling @value{GDBN} 26320 26321You can alter the way @value{GDBN} interacts with you by using the 26322@code{set} command. For commands controlling how @value{GDBN} displays 26323data, see @ref{Print Settings, ,Print Settings}. Other settings are 26324described here. 26325 26326@menu 26327* Prompt:: Prompt 26328* Editing:: Command editing 26329* Command History:: Command history 26330* Screen Size:: Screen size 26331* Output Styling:: Output styling 26332* Numbers:: Numbers 26333* ABI:: Configuring the current ABI 26334* Auto-loading:: Automatically loading associated files 26335* Messages/Warnings:: Optional warnings and messages 26336* Debugging Output:: Optional messages about internal happenings 26337* Other Misc Settings:: Other Miscellaneous Settings 26338@end menu 26339 26340@node Prompt 26341@section Prompt 26342 26343@cindex prompt 26344 26345@value{GDBN} indicates its readiness to read a command by printing a string 26346called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You 26347can change the prompt string with the @code{set prompt} command. For 26348instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change 26349the prompt in one of the @value{GDBN} sessions so that you can always tell 26350which one you are talking to. 26351 26352@emph{Note:} @code{set prompt} does not add a space for you after the 26353prompt you set. This allows you to set a prompt which ends in a space 26354or a prompt that does not. 26355 26356@table @code 26357@kindex set prompt 26358@item set prompt @var{newprompt} 26359Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth. 26360 26361@kindex show prompt 26362@item show prompt 26363Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}} 26364@end table 26365 26366Versions of @value{GDBN} that ship with Python scripting enabled have 26367prompt extensions. The commands for interacting with these extensions 26368are: 26369 26370@table @code 26371@kindex set extended-prompt 26372@item set extended-prompt @var{prompt} 26373Set an extended prompt that allows for substitutions. 26374@xref{gdb.prompt}, for a list of escape sequences that can be used for 26375substitution. Any escape sequences specified as part of the prompt 26376string are replaced with the corresponding strings each time the prompt 26377is displayed. 26378 26379For example: 26380 26381@smallexample 26382set extended-prompt Current working directory: \w (gdb) 26383@end smallexample 26384 26385Note that when an extended-prompt is set, it takes control of the 26386@var{prompt_hook} hook. @xref{prompt_hook}, for further information. 26387 26388@kindex show extended-prompt 26389@item show extended-prompt 26390Prints the extended prompt. Any escape sequences specified as part of 26391the prompt string with @code{set extended-prompt}, are replaced with the 26392corresponding strings each time the prompt is displayed. 26393@end table 26394 26395@node Editing 26396@section Command Editing 26397@cindex readline 26398@cindex command line editing 26399 26400@value{GDBN} reads its input commands via the @dfn{Readline} interface. This 26401@sc{gnu} library provides consistent behavior for programs which provide a 26402command line interface to the user. Advantages are @sc{gnu} Emacs-style 26403or @dfn{vi}-style inline editing of commands, @code{csh}-like history 26404substitution, and a storage and recall of command history across 26405debugging sessions. 26406 26407You may control the behavior of command line editing in @value{GDBN} with the 26408command @code{set}. 26409 26410@table @code 26411@kindex set editing 26412@cindex editing 26413@item set editing 26414@itemx set editing on 26415Enable command line editing (enabled by default). 26416 26417@item set editing off 26418Disable command line editing. 26419 26420@kindex show editing 26421@item show editing 26422Show whether command line editing is enabled. 26423@end table 26424 26425@ifset SYSTEM_READLINE 26426@xref{Command Line Editing, , , rluserman, GNU Readline Library}, 26427@end ifset 26428@ifclear SYSTEM_READLINE 26429@xref{Command Line Editing}, 26430@end ifclear 26431for more details about the Readline 26432interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are 26433encouraged to read that chapter. 26434 26435@cindex Readline application name 26436@value{GDBN} sets the Readline application name to @samp{gdb}. This 26437is useful for conditions in @file{.inputrc}. 26438 26439@cindex operate-and-get-next 26440@value{GDBN} defines a bindable Readline command, 26441@code{operate-and-get-next}. This is bound to @kbd{C-o} by default. 26442This command accepts the current line for execution and fetches the 26443next line relative to the current line from the history for editing. 26444Any argument is ignored. 26445 26446@node Command History 26447@section Command History 26448@cindex command history 26449 26450@value{GDBN} can keep track of the commands you type during your 26451debugging sessions, so that you can be certain of precisely what 26452happened. Use these commands to manage the @value{GDBN} command 26453history facility. 26454 26455@value{GDBN} uses the @sc{gnu} History library, a part of the Readline 26456package, to provide the history facility. 26457@ifset SYSTEM_READLINE 26458@xref{Using History Interactively, , , history, GNU History Library}, 26459@end ifset 26460@ifclear SYSTEM_READLINE 26461@xref{Using History Interactively}, 26462@end ifclear 26463for the detailed description of the History library. 26464 26465To issue a command to @value{GDBN} without affecting certain aspects of 26466the state which is seen by users, prefix it with @samp{server } 26467(@pxref{Server Prefix}). This 26468means that this command will not affect the command history, nor will it 26469affect @value{GDBN}'s notion of which command to repeat if @key{RET} is 26470pressed on a line by itself. 26471 26472@cindex @code{server}, command prefix 26473The server prefix does not affect the recording of values into the value 26474history; to print a value without recording it into the value history, 26475use the @code{output} command instead of the @code{print} command. 26476 26477Here is the description of @value{GDBN} commands related to command 26478history. 26479 26480@table @code 26481@cindex history substitution 26482@cindex history file 26483@kindex set history filename 26484@cindex @env{GDBHISTFILE}, environment variable 26485@item set history filename @r{[}@var{fname}@r{]} 26486Set the name of the @value{GDBN} command history file to @var{fname}. 26487This is the file where @value{GDBN} reads an initial command history 26488list, and where it writes the command history from this session when it 26489exits. You can access this list through history expansion or through 26490the history command editing characters listed below. This file defaults 26491to the value of the environment variable @env{GDBHISTFILE}, or to 26492@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable 26493is not set. 26494 26495The @env{GDBHISTFILE} environment variable is read after processing 26496any @value{GDBN} initialization files (@pxref{Startup}) and after 26497processing any commands passed using command line options (for 26498example, @code{-ex}). 26499 26500If the @var{fname} argument is not given, or if the @env{GDBHISTFILE} 26501is the empty string then @value{GDBN} will neither try to load an 26502existing history file, nor will it try to save the history on exit. 26503 26504@cindex save command history 26505@kindex set history save 26506@item set history save 26507@itemx set history save on 26508Record command history in a file, whose name may be specified with the 26509@code{set history filename} command. By default, this option is 26510disabled. The command history will be recorded when @value{GDBN} 26511exits. If @code{set history filename} is set to the empty string then 26512history saving is disabled, even when @code{set history save} is 26513@code{on}. 26514 26515@item set history save off 26516Don't record the command history into the file specified by @code{set 26517history filename} when @value{GDBN} exits. 26518 26519@cindex history size 26520@kindex set history size 26521@cindex @env{GDBHISTSIZE}, environment variable 26522@item set history size @var{size} 26523@itemx set history size unlimited 26524Set the number of commands which @value{GDBN} keeps in its history list. 26525This defaults to the value of the environment variable @env{GDBHISTSIZE}, or 26526to 256 if this variable is not set. Non-numeric values of @env{GDBHISTSIZE} 26527are ignored. If @var{size} is @code{unlimited} or if @env{GDBHISTSIZE} is 26528either a negative number or the empty string, then the number of commands 26529@value{GDBN} keeps in the history list is unlimited. 26530 26531The @env{GDBHISTSIZE} environment variable is read after processing 26532any @value{GDBN} initialization files (@pxref{Startup}) and after 26533processing any commands passed using command line options (for 26534example, @code{-ex}). 26535 26536@cindex remove duplicate history 26537@kindex set history remove-duplicates 26538@item set history remove-duplicates @var{count} 26539@itemx set history remove-duplicates unlimited 26540Control the removal of duplicate history entries in the command history list. 26541If @var{count} is non-zero, @value{GDBN} will look back at the last @var{count} 26542history entries and remove the first entry that is a duplicate of the current 26543entry being added to the command history list. If @var{count} is 26544@code{unlimited} then this lookbehind is unbounded. If @var{count} is 0, then 26545removal of duplicate history entries is disabled. 26546 26547Only history entries added during the current session are considered for 26548removal. This option is set to 0 by default. 26549 26550@end table 26551 26552History expansion assigns special meaning to the character @kbd{!}. 26553@ifset SYSTEM_READLINE 26554@xref{Event Designators, , , history, GNU History Library}, 26555@end ifset 26556@ifclear SYSTEM_READLINE 26557@xref{Event Designators}, 26558@end ifclear 26559for more details. 26560 26561@cindex history expansion, turn on/off 26562Since @kbd{!} is also the logical not operator in C, history expansion 26563is off by default. If you decide to enable history expansion with the 26564@code{set history expansion on} command, you may sometimes need to 26565follow @kbd{!} (when it is used as logical not, in an expression) with 26566a space or a tab to prevent it from being expanded. The readline 26567history facilities do not attempt substitution on the strings 26568@kbd{!=} and @kbd{!(}, even when history expansion is enabled. 26569 26570The commands to control history expansion are: 26571 26572@table @code 26573@item set history expansion on 26574@itemx set history expansion 26575@kindex set history expansion 26576Enable history expansion. History expansion is off by default. 26577 26578@item set history expansion off 26579Disable history expansion. 26580 26581@c @group 26582@kindex show history 26583@item show history 26584@itemx show history filename 26585@itemx show history save 26586@itemx show history size 26587@itemx show history expansion 26588These commands display the state of the @value{GDBN} history parameters. 26589@code{show history} by itself displays all four states. 26590@c @end group 26591@end table 26592 26593@table @code 26594@kindex show commands 26595@cindex show last commands 26596@cindex display command history 26597@item show commands 26598Display the last ten commands in the command history. 26599 26600@item show commands @var{n} 26601Print ten commands centered on command number @var{n}. 26602 26603@item show commands + 26604Print ten commands just after the commands last printed. 26605@end table 26606 26607@node Screen Size 26608@section Screen Size 26609@cindex size of screen 26610@cindex screen size 26611@cindex pagination 26612@cindex page size 26613@cindex pauses in output 26614 26615Certain commands to @value{GDBN} may produce large amounts of 26616information output to the screen. To help you read all of it, 26617@value{GDBN} pauses and asks you for input at the end of each page of 26618output. Type @key{RET} when you want to see one more page of output, 26619@kbd{q} to discard the remaining output, or @kbd{c} to continue 26620without paging for the rest of the current command. Also, the screen 26621width setting determines when to wrap lines of output. Depending on 26622what is being printed, @value{GDBN} tries to break the line at a 26623readable place, rather than simply letting it overflow onto the 26624following line. 26625 26626Normally @value{GDBN} knows the size of the screen from the terminal 26627driver software. For example, on Unix @value{GDBN} uses the termcap data base 26628together with the value of the @env{TERM} environment variable and the 26629@code{stty rows} and @code{stty cols} settings. If this is not correct, 26630you can override it with the @code{set height} and @code{set 26631width} commands: 26632 26633@table @code 26634@kindex set height 26635@kindex set width 26636@kindex show width 26637@kindex show height 26638@item set height @var{lpp} 26639@itemx set height unlimited 26640@itemx show height 26641@itemx set width @var{cpl} 26642@itemx set width unlimited 26643@itemx show width 26644These @code{set} commands specify a screen height of @var{lpp} lines and 26645a screen width of @var{cpl} characters. The associated @code{show} 26646commands display the current settings. 26647 26648If you specify a height of either @code{unlimited} or zero lines, 26649@value{GDBN} does not pause during output no matter how long the 26650output is. This is useful if output is to a file or to an editor 26651buffer. 26652 26653Likewise, you can specify @samp{set width unlimited} or @samp{set 26654width 0} to prevent @value{GDBN} from wrapping its output. 26655 26656@item set pagination on 26657@itemx set pagination off 26658@kindex set pagination 26659Turn the output pagination on or off; the default is on. Turning 26660pagination off is the alternative to @code{set height unlimited}. Note that 26661running @value{GDBN} with the @option{--batch} option (@pxref{Mode 26662Options, -batch}) also automatically disables pagination. 26663 26664@item show pagination 26665@kindex show pagination 26666Show the current pagination mode. 26667@end table 26668 26669@node Output Styling 26670@section Output Styling 26671@cindex styling 26672@cindex colors 26673 26674@kindex set style 26675@kindex show style 26676@value{GDBN} can style its output on a capable terminal. This is 26677enabled by default on most systems, but disabled by default when in 26678batch mode (@pxref{Mode Options}). Various style settings are available; 26679and styles can also be disabled entirely. 26680 26681@table @code 26682@item set style enabled @samp{on|off} 26683Enable or disable all styling. The default is host-dependent, with 26684most hosts defaulting to @samp{on}. 26685 26686@item show style enabled 26687Show the current state of styling. 26688 26689@item set style sources @samp{on|off} 26690Enable or disable source code styling. This affects whether source 26691code, such as the output of the @code{list} command, is styled. The 26692default is @samp{on}. Note that source styling only works if styling 26693in general is enabled, and if a source highlighting library is 26694available to @value{GDBN}. 26695 26696There are two ways that highlighting can be done. First, if 26697@value{GDBN} was linked with the GNU Source Highlight library, then it 26698is used. Otherwise, if @value{GDBN} was configured with Python 26699scripting support, and if the Python Pygments package is available, 26700then it will be used. 26701 26702@item show style sources 26703Show the current state of source code styling. 26704 26705@item set style tui-current-position @samp{on|off} 26706Enable or disable styling of the source and assembly code highlighted 26707by the TUI's current position indicator. The default is @samp{off}. 26708@xref{TUI, ,@value{GDBN} Text User Interface}. 26709 26710@item show style tui-current-position 26711Show whether the source and assembly code highlighted by the TUI's 26712current position indicator is styled. 26713 26714@anchor{style_disassembler_enabled} 26715@item set style disassembler enabled @samp{on|off} 26716Enable or disable disassembler styling. This affects whether 26717disassembler output, such as the output of the @code{disassemble} 26718command, is styled. Disassembler styling only works if styling in 26719general is enabled (with @code{set style enabled on}), and if a source 26720highlighting library is available to @value{GDBN}. 26721 26722The two source highlighting libraries that @value{GDBN} could use to 26723style disassembler output are; @value{GDBN}'s builtin disassembler, or 26724the Python Pygments package. 26725 26726@value{GDBN}'s first choice will be to use the builtin disassembler 26727for styling, this usually provides better results, being able to style 26728different types of instruction operands differently. However, the 26729builtin disassembler is not able to style all architectures. 26730 26731For architectures that the builtin disassembler is unable to style, 26732@value{GDBN} will fall back to use the Python Pygments package where 26733possible. In order to use the Python Pygments package, @value{GDBN} 26734must be built with Python support, and the Pygments package must be 26735installed. 26736 26737If neither of these options are available then @value{GDBN} will 26738produce unstyled disassembler output, even when this setting is 26739@samp{on}. 26740 26741To discover if the current architecture supports styling using the 26742builtin disassembler library see @ref{maint_libopcodes_styling,,@kbd{maint 26743show libopcodes-styling enabled}}. 26744 26745@item show style disassembler enabled 26746Show the current state of disassembler styling. 26747 26748@end table 26749 26750Subcommands of @code{set style} control specific forms of styling. 26751These subcommands all follow the same pattern: each style-able object 26752can be styled with a foreground color, a background color, and an 26753intensity. 26754 26755For example, the style of file names can be controlled using the 26756@code{set style filename} group of commands: 26757 26758@table @code 26759@item set style filename background @var{color} 26760Set the background to @var{color}. Valid colors are @samp{none} 26761(meaning the terminal's default color), @samp{black}, @samp{red}, 26762@samp{green}, @samp{yellow}, @samp{blue}, @samp{magenta}, @samp{cyan}, 26763and@samp{white}. 26764 26765@item set style filename foreground @var{color} 26766Set the foreground to @var{color}. Valid colors are @samp{none} 26767(meaning the terminal's default color), @samp{black}, @samp{red}, 26768@samp{green}, @samp{yellow}, @samp{blue}, @samp{magenta}, @samp{cyan}, 26769and@samp{white}. 26770 26771@item set style filename intensity @var{value} 26772Set the intensity to @var{value}. Valid intensities are @samp{normal} 26773(the default), @samp{bold}, and @samp{dim}. 26774@end table 26775 26776The @code{show style} command and its subcommands are styling 26777a style name in their output using its own style. 26778So, use @command{show style} to see the complete list of styles, 26779their characteristics and the visual aspect of each style. 26780 26781The style-able objects are: 26782@table @code 26783@item filename 26784Control the styling of file names and URLs. By default, this style's 26785foreground color is green. 26786 26787@item function 26788Control the styling of function names. These are managed with the 26789@code{set style function} family of commands. By default, this 26790style's foreground color is yellow. 26791 26792This style is also used for symbol names in styled disassembler output 26793if @value{GDBN} is using its builtin disassembler library for styling 26794(@pxref{style_disassembler_enabled,,@kbd{set style disassembler 26795enabled}}). 26796 26797@item variable 26798Control the styling of variable names. These are managed with the 26799@code{set style variable} family of commands. By default, this style's 26800foreground color is cyan. 26801 26802@item address 26803Control the styling of addresses. These are managed with the 26804@code{set style address} family of commands. By default, this style's 26805foreground color is blue. 26806 26807This style is also used for addresses in styled disassembler output 26808if @value{GDBN} is using its builtin disassembler library for styling 26809(@pxref{style_disassembler_enabled,,@kbd{set style disassembler 26810enabled}}). 26811 26812@item version 26813Control the styling of @value{GDBN}'s version number text. By 26814default, this style's foreground color is magenta and it has bold 26815intensity. The version number is displayed in two places, the output 26816of @command{show version}, and when @value{GDBN} starts up. 26817 26818In order to control how @value{GDBN} styles the version number at 26819startup, add the @code{set style version} family of commands to the 26820early initialization command file (@pxref{Initialization 26821Files}). 26822 26823@item title 26824Control the styling of titles. These are managed with the 26825@code{set style title} family of commands. By default, this style's 26826intensity is bold. Commands are using the title style to improve 26827the readability of large output. For example, the commands 26828@command{apropos} and @command{help} are using the title style 26829for the command names. 26830 26831@item highlight 26832Control the styling of highlightings. These are managed with the 26833@code{set style highlight} family of commands. By default, this style's 26834foreground color is red. Commands are using the highlight style to draw 26835the user attention to some specific parts of their output. For example, 26836the command @command{apropos -v REGEXP} uses the highlight style to 26837mark the documentation parts matching @var{regexp}. 26838 26839@item metadata 26840Control the styling of data annotations added by @value{GDBN} to data 26841it displays. By default, this style's intensity is dim. Metadata 26842annotations include the @samp{repeats @var{n} times} annotation for 26843suppressed display of repeated array elements (@pxref{Print Settings}), 26844@samp{<unavailable>} and @w{@samp{<error @var{descr}>}} annotations 26845for errors and @samp{<optimized-out>} annotations for optimized-out 26846values in displaying stack frame information in backtraces 26847(@pxref{Backtrace}), etc. 26848 26849@item tui-border 26850Control the styling of the TUI border. Note that, unlike other 26851styling options, only the color of the border can be controlled via 26852@code{set style}. This was done for compatibility reasons, as TUI 26853controls to set the border's intensity predated the addition of 26854general styling to @value{GDBN}. @xref{TUI Configuration}. 26855 26856@item tui-active-border 26857Control the styling of the active TUI border; that is, the TUI window 26858that has the focus. 26859 26860@item disassembler comment 26861Control the styling of comments in the disassembler output. These are 26862managed with the @code{set style disassembler comment} family of 26863commands. This style is only used when @value{GDBN} is styling using 26864its builtin disassembler library 26865(@pxref{style_disassembler_enabled,,@kbd{set style disassembler 26866enabled}}). By default, this style's intensity is dim, and its 26867foreground color is white. 26868 26869@item disassembler immediate 26870Control the styling of numeric operands in the disassembler output. 26871These are managed with the @code{set style disassembler immediate} 26872family of commands. This style is not used for instruction operands 26873that represent addresses, in that case the @samp{disassembler address} 26874style is used. This style is only used when @value{GDBN} is styling 26875using its builtin disassembler library. By default, this style's 26876foreground color is blue. 26877 26878@item disassembler address 26879Control the styling of address operands in the disassembler output. 26880This is an alias for the @samp{address} style. 26881 26882@item disassembler symbol 26883Control the styling of symbol names in the disassembler output. This 26884is an alias for the @samp{function} style. 26885 26886@item disassembler mnemonic 26887Control the styling of instruction mnemonics in the disassembler 26888output. These are managed with the @code{set style disassembler 26889mnemonic} family of commands. This style is also used for assembler 26890directives, e.g.@: @code{.byte}, @code{.word}, etc. This style is 26891only used when @value{GDBN} is styling using its builtin disassembler 26892library. By default, this style's foreground color is green. 26893 26894@item disassembler register 26895Control the styling of register operands in the disassembler output. 26896These are managed with the @code{set style disassembler register} 26897family of commands. This style is only used when @value{GDBN} is 26898styling using its builtin disassembler library. By default, this style's 26899foreground color is red. 26900 26901@end table 26902 26903@node Numbers 26904@section Numbers 26905@cindex number representation 26906@cindex entering numbers 26907 26908You can always enter numbers in octal, decimal, or hexadecimal in 26909@value{GDBN} by the usual conventions: octal numbers begin with 26910@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers 26911begin with @samp{0x}. Numbers that neither begin with @samp{0} or 26912@samp{0x}, nor end with a @samp{.} are, by default, entered in base 2691310; likewise, the default display for numbers---when no particular 26914format is specified---is base 10. You can change the default base for 26915both input and output with the commands described below. 26916 26917@table @code 26918@kindex set input-radix 26919@item set input-radix @var{base} 26920Set the default base for numeric input. Supported choices 26921for @var{base} are decimal 8, 10, or 16. The base must itself be 26922specified either unambiguously or using the current input radix; for 26923example, any of 26924 26925@smallexample 26926set input-radix 012 26927set input-radix 10. 26928set input-radix 0xa 26929@end smallexample 26930 26931@noindent 26932sets the input base to decimal. On the other hand, @samp{set input-radix 10} 26933leaves the input radix unchanged, no matter what it was, since 26934@samp{10}, being without any leading or trailing signs of its base, is 26935interpreted in the current radix. Thus, if the current radix is 16, 26936@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't 26937change the radix. 26938 26939@kindex set output-radix 26940@item set output-radix @var{base} 26941Set the default base for numeric display. Supported choices 26942for @var{base} are decimal 8, 10, or 16. The base must itself be 26943specified either unambiguously or using the current input radix. 26944 26945@kindex show input-radix 26946@item show input-radix 26947Display the current default base for numeric input. 26948 26949@kindex show output-radix 26950@item show output-radix 26951Display the current default base for numeric display. 26952 26953@item set radix @r{[}@var{base}@r{]} 26954@itemx show radix 26955@kindex set radix 26956@kindex show radix 26957These commands set and show the default base for both input and output 26958of numbers. @code{set radix} sets the radix of input and output to 26959the same base; without an argument, it resets the radix back to its 26960default value of 10. 26961 26962@end table 26963 26964@node ABI 26965@section Configuring the Current ABI 26966 26967@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your 26968application automatically. However, sometimes you need to override its 26969conclusions. Use these commands to manage @value{GDBN}'s view of the 26970current ABI. 26971 26972@cindex OS ABI 26973@kindex set osabi 26974@kindex show osabi 26975@cindex Newlib OS ABI and its influence on the longjmp handling 26976 26977One @value{GDBN} configuration can debug binaries for multiple operating 26978system targets, either via remote debugging or native emulation. 26979@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use, 26980but you can override its conclusion using the @code{set osabi} command. 26981One example where this is useful is in debugging of binaries which use 26982an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does 26983not have the same identifying marks that the standard C library for your 26984platform provides. 26985 26986When @value{GDBN} is debugging the AArch64 architecture, it provides a 26987``Newlib'' OS ABI. This is useful for handling @code{setjmp} and 26988@code{longjmp} when debugging binaries that use the @sc{newlib} C library. 26989The ``Newlib'' OS ABI can be selected by @code{set osabi Newlib}. 26990 26991@table @code 26992@item show osabi 26993Show the OS ABI currently in use. 26994 26995@item set osabi 26996With no argument, show the list of registered available OS ABI's. 26997 26998@item set osabi @var{abi} 26999Set the current OS ABI to @var{abi}. 27000@end table 27001 27002@cindex float promotion 27003 27004Generally, the way that an argument of type @code{float} is passed to a 27005function depends on whether the function is prototyped. For a prototyped 27006(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged, 27007according to the architecture's convention for @code{float}. For unprototyped 27008(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type 27009@code{double} and then passed. 27010 27011Unfortunately, some forms of debug information do not reliably indicate whether 27012a function is prototyped. If @value{GDBN} calls a function that is not marked 27013as prototyped, it consults @kbd{set coerce-float-to-double}. 27014 27015@table @code 27016@kindex set coerce-float-to-double 27017@item set coerce-float-to-double 27018@itemx set coerce-float-to-double on 27019Arguments of type @code{float} will be promoted to @code{double} when passed 27020to an unprototyped function. This is the default setting. 27021 27022@item set coerce-float-to-double off 27023Arguments of type @code{float} will be passed directly to unprototyped 27024functions. 27025 27026@kindex show coerce-float-to-double 27027@item show coerce-float-to-double 27028Show the current setting of promoting @code{float} to @code{double}. 27029@end table 27030 27031@kindex set cp-abi 27032@kindex show cp-abi 27033@value{GDBN} needs to know the ABI used for your program's C@t{++} 27034objects. The correct C@t{++} ABI depends on which C@t{++} compiler was 27035used to build your application. @value{GDBN} only fully supports 27036programs with a single C@t{++} ABI; if your program contains code using 27037multiple C@t{++} ABI's or if @value{GDBN} can not identify your 27038program's ABI correctly, you can tell @value{GDBN} which ABI to use. 27039Currently supported ABI's include ``gnu-v2'', for @code{g++} versions 27040before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and 27041``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may 27042use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is 27043``auto''. 27044 27045@table @code 27046@item show cp-abi 27047Show the C@t{++} ABI currently in use. 27048 27049@item set cp-abi 27050With no argument, show the list of supported C@t{++} ABI's. 27051 27052@item set cp-abi @var{abi} 27053@itemx set cp-abi auto 27054Set the current C@t{++} ABI to @var{abi}, or return to automatic detection. 27055@end table 27056 27057@node Auto-loading 27058@section Automatically loading associated files 27059@cindex auto-loading 27060 27061@value{GDBN} sometimes reads files with commands and settings automatically, 27062without being explicitly told so by the user. We call this feature 27063@dfn{auto-loading}. While auto-loading is useful for automatically adapting 27064@value{GDBN} to the needs of your project, it can sometimes produce unexpected 27065results or introduce security risks (e.g., if the file comes from untrusted 27066sources). 27067 27068There are various kinds of files @value{GDBN} can automatically load. 27069In addition to these files, @value{GDBN} supports auto-loading code written 27070in various extension languages. @xref{Auto-loading extensions}. 27071 27072Note that loading of these associated files (including the local @file{.gdbinit} 27073file) requires accordingly configured @code{auto-load safe-path} 27074(@pxref{Auto-loading safe path}). 27075 27076For these reasons, @value{GDBN} includes commands and options to let you 27077control when to auto-load files and which files should be auto-loaded. 27078 27079@table @code 27080@anchor{set auto-load off} 27081@kindex set auto-load off 27082@item set auto-load off 27083Globally disable loading of all auto-loaded files. 27084You may want to use this command with the @samp{-iex} option 27085(@pxref{Option -init-eval-command}) such as: 27086@smallexample 27087$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile} 27088@end smallexample 27089 27090Be aware that system init file (@pxref{System-wide configuration}) 27091and init files from your home directory (@pxref{Home Directory Init File}) 27092still get read (as they come from generally trusted directories). 27093To prevent @value{GDBN} from auto-loading even those init files, use the 27094@option{-nx} option (@pxref{Mode Options}), in addition to 27095@code{set auto-load no}. 27096 27097@anchor{show auto-load} 27098@kindex show auto-load 27099@item show auto-load 27100Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled 27101or disabled. 27102 27103@smallexample 27104(gdb) show auto-load 27105gdb-scripts: Auto-loading of canned sequences of commands scripts is on. 27106libthread-db: Auto-loading of inferior specific libthread_db is on. 27107local-gdbinit: Auto-loading of .gdbinit script from current directory 27108 is on. 27109python-scripts: Auto-loading of Python scripts is on. 27110safe-path: List of directories from which it is safe to auto-load files 27111 is $debugdir:$datadir/auto-load. 27112scripts-directory: List of directories from which to load auto-loaded scripts 27113 is $debugdir:$datadir/auto-load. 27114@end smallexample 27115 27116@anchor{info auto-load} 27117@kindex info auto-load 27118@item info auto-load 27119Print whether each specific @samp{auto-load} file(s) have been auto-loaded or 27120not. 27121 27122@smallexample 27123(gdb) info auto-load 27124gdb-scripts: 27125Loaded Script 27126Yes /home/user/gdb/gdb-gdb.gdb 27127libthread-db: No auto-loaded libthread-db. 27128local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been 27129 loaded. 27130python-scripts: 27131Loaded Script 27132Yes /home/user/gdb/gdb-gdb.py 27133@end smallexample 27134@end table 27135 27136These are @value{GDBN} control commands for the auto-loading: 27137 27138@multitable @columnfractions .5 .5 27139@item @xref{set auto-load off}. 27140@tab Disable auto-loading globally. 27141@item @xref{show auto-load}. 27142@tab Show setting of all kinds of files. 27143@item @xref{info auto-load}. 27144@tab Show state of all kinds of files. 27145@item @xref{set auto-load gdb-scripts}. 27146@tab Control for @value{GDBN} command scripts. 27147@item @xref{show auto-load gdb-scripts}. 27148@tab Show setting of @value{GDBN} command scripts. 27149@item @xref{info auto-load gdb-scripts}. 27150@tab Show state of @value{GDBN} command scripts. 27151@item @xref{set auto-load python-scripts}. 27152@tab Control for @value{GDBN} Python scripts. 27153@item @xref{show auto-load python-scripts}. 27154@tab Show setting of @value{GDBN} Python scripts. 27155@item @xref{info auto-load python-scripts}. 27156@tab Show state of @value{GDBN} Python scripts. 27157@item @xref{set auto-load guile-scripts}. 27158@tab Control for @value{GDBN} Guile scripts. 27159@item @xref{show auto-load guile-scripts}. 27160@tab Show setting of @value{GDBN} Guile scripts. 27161@item @xref{info auto-load guile-scripts}. 27162@tab Show state of @value{GDBN} Guile scripts. 27163@item @xref{set auto-load scripts-directory}. 27164@tab Control for @value{GDBN} auto-loaded scripts location. 27165@item @xref{show auto-load scripts-directory}. 27166@tab Show @value{GDBN} auto-loaded scripts location. 27167@item @xref{add-auto-load-scripts-directory}. 27168@tab Add directory for auto-loaded scripts location list. 27169@item @xref{set auto-load local-gdbinit}. 27170@tab Control for init file in the current directory. 27171@item @xref{show auto-load local-gdbinit}. 27172@tab Show setting of init file in the current directory. 27173@item @xref{info auto-load local-gdbinit}. 27174@tab Show state of init file in the current directory. 27175@item @xref{set auto-load libthread-db}. 27176@tab Control for thread debugging library. 27177@item @xref{show auto-load libthread-db}. 27178@tab Show setting of thread debugging library. 27179@item @xref{info auto-load libthread-db}. 27180@tab Show state of thread debugging library. 27181@item @xref{set auto-load safe-path}. 27182@tab Control directories trusted for automatic loading. 27183@item @xref{show auto-load safe-path}. 27184@tab Show directories trusted for automatic loading. 27185@item @xref{add-auto-load-safe-path}. 27186@tab Add directory trusted for automatic loading. 27187@end multitable 27188 27189@menu 27190* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit} 27191* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db} 27192 27193* Auto-loading safe path:: @samp{set/show/info auto-load safe-path} 27194* Auto-loading verbose mode:: @samp{set/show debug auto-load} 27195@end menu 27196 27197@node Init File in the Current Directory 27198@subsection Automatically loading init file in the current directory 27199@cindex auto-loading init file in the current directory 27200 27201By default, @value{GDBN} reads and executes the canned sequences of commands 27202from init file (if any) in the current working directory, 27203see @ref{Init File in the Current Directory during Startup}. 27204 27205Note that loading of this local @file{.gdbinit} file also requires accordingly 27206configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}). 27207 27208@table @code 27209@anchor{set auto-load local-gdbinit} 27210@kindex set auto-load local-gdbinit 27211@item set auto-load local-gdbinit [on|off] 27212Enable or disable the auto-loading of canned sequences of commands 27213(@pxref{Sequences}) found in init file in the current directory. 27214 27215@anchor{show auto-load local-gdbinit} 27216@kindex show auto-load local-gdbinit 27217@item show auto-load local-gdbinit 27218Show whether auto-loading of canned sequences of commands from init file in the 27219current directory is enabled or disabled. 27220 27221@anchor{info auto-load local-gdbinit} 27222@kindex info auto-load local-gdbinit 27223@item info auto-load local-gdbinit 27224Print whether canned sequences of commands from init file in the 27225current directory have been auto-loaded. 27226@end table 27227 27228@node libthread_db.so.1 file 27229@subsection Automatically loading thread debugging library 27230@cindex auto-loading libthread_db.so.1 27231 27232This feature is currently present only on @sc{gnu}/Linux native hosts. 27233 27234@value{GDBN} reads in some cases thread debugging library from places specific 27235to the inferior (@pxref{set libthread-db-search-path}). 27236 27237The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed 27238without checking this @samp{set auto-load libthread-db} switch as system 27239libraries have to be trusted in general. In all other cases of 27240@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set 27241auto-load libthread-db} is enabled before trying to open such thread debugging 27242library. 27243 27244Note that loading of this debugging library also requires accordingly configured 27245@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 27246 27247@table @code 27248@anchor{set auto-load libthread-db} 27249@kindex set auto-load libthread-db 27250@item set auto-load libthread-db [on|off] 27251Enable or disable the auto-loading of inferior specific thread debugging library. 27252 27253@anchor{show auto-load libthread-db} 27254@kindex show auto-load libthread-db 27255@item show auto-load libthread-db 27256Show whether auto-loading of inferior specific thread debugging library is 27257enabled or disabled. 27258 27259@anchor{info auto-load libthread-db} 27260@kindex info auto-load libthread-db 27261@item info auto-load libthread-db 27262Print the list of all loaded inferior specific thread debugging libraries and 27263for each such library print list of inferior @var{pid}s using it. 27264@end table 27265 27266@node Auto-loading safe path 27267@subsection Security restriction for auto-loading 27268@cindex auto-loading safe-path 27269 27270As the files of inferior can come from untrusted source (such as submitted by 27271an application user) @value{GDBN} does not always load any files automatically. 27272@value{GDBN} provides the @samp{set auto-load safe-path} setting to list 27273directories trusted for loading files not explicitly requested by user. 27274Each directory can also be a shell wildcard pattern. 27275 27276If the path is not set properly you will see a warning and the file will not 27277get loaded: 27278 27279@smallexample 27280$ ./gdb -q ./gdb 27281Reading symbols from /home/user/gdb/gdb... 27282warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been 27283 declined by your `auto-load safe-path' set 27284 to "$debugdir:$datadir/auto-load". 27285warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been 27286 declined by your `auto-load safe-path' set 27287 to "$debugdir:$datadir/auto-load". 27288@end smallexample 27289 27290@noindent 27291To instruct @value{GDBN} to go ahead and use the init files anyway, 27292invoke @value{GDBN} like this: 27293 27294@smallexample 27295$ gdb -q -iex "set auto-load safe-path /home/user/gdb" ./gdb 27296@end smallexample 27297 27298The list of trusted directories is controlled by the following commands: 27299 27300@table @code 27301@anchor{set auto-load safe-path} 27302@kindex set auto-load safe-path 27303@item set auto-load safe-path @r{[}@var{directories}@r{]} 27304Set the list of directories (and their subdirectories) trusted for automatic 27305loading and execution of scripts. You can also enter a specific trusted file. 27306Each directory can also be a shell wildcard pattern; wildcards do not match 27307directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch} 27308(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}). 27309If you omit @var{directories}, @samp{auto-load safe-path} will be reset to 27310its default value as specified during @value{GDBN} compilation. 27311 27312The list of directories uses path separator (@samp{:} on GNU and Unix 27313systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 27314to the @env{PATH} environment variable. 27315 27316@anchor{show auto-load safe-path} 27317@kindex show auto-load safe-path 27318@item show auto-load safe-path 27319Show the list of directories trusted for automatic loading and execution of 27320scripts. 27321 27322@anchor{add-auto-load-safe-path} 27323@kindex add-auto-load-safe-path 27324@item add-auto-load-safe-path 27325Add an entry (or list of entries) to the list of directories trusted for 27326automatic loading and execution of scripts. Multiple entries may be delimited 27327by the host platform path separator in use. 27328@end table 27329 27330This variable defaults to what @code{--with-auto-load-dir} has been configured 27331to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir} 27332substitution applies the same as for @ref{set auto-load scripts-directory}. 27333The default @code{set auto-load safe-path} value can be also overriden by 27334@value{GDBN} configuration option @option{--with-auto-load-safe-path}. 27335 27336Setting this variable to @file{/} disables this security protection, 27337corresponding @value{GDBN} configuration option is 27338@option{--without-auto-load-safe-path}. 27339This variable is supposed to be set to the system directories writable by the 27340system superuser only. Users can add their source directories in init files in 27341their home directories (@pxref{Home Directory Init File}). See also deprecated 27342init file in the current directory 27343(@pxref{Init File in the Current Directory during Startup}). 27344 27345To force @value{GDBN} to load the files it declined to load in the previous 27346example, you could use one of the following ways: 27347 27348@table @asis 27349@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb} 27350Specify this trusted directory (or a file) as additional component of the list. 27351You have to specify also any existing directories displayed by 27352by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example). 27353 27354@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}} 27355Specify this directory as in the previous case but just for a single 27356@value{GDBN} session. 27357 27358@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}} 27359Disable auto-loading safety for a single @value{GDBN} session. 27360This assumes all the files you debug during this @value{GDBN} session will come 27361from trusted sources. 27362 27363@item @kbd{./configure --without-auto-load-safe-path} 27364During compilation of @value{GDBN} you may disable any auto-loading safety. 27365This assumes all the files you will ever debug with this @value{GDBN} come from 27366trusted sources. 27367@end table 27368 27369On the other hand you can also explicitly forbid automatic files loading which 27370also suppresses any such warning messages: 27371 27372@table @asis 27373@item @kbd{gdb -iex "set auto-load no" @dots{}} 27374You can use @value{GDBN} command-line option for a single @value{GDBN} session. 27375 27376@item @file{~/.gdbinit}: @samp{set auto-load no} 27377Disable auto-loading globally for the user 27378(@pxref{Home Directory Init File}). While it is improbable, you could also 27379use system init file instead (@pxref{System-wide configuration}). 27380@end table 27381 27382This setting applies to the file names as entered by user. If no entry matches 27383@value{GDBN} tries as a last resort to also resolve all the file names into 27384their canonical form (typically resolving symbolic links) and compare the 27385entries again. @value{GDBN} already canonicalizes most of the filenames on its 27386own before starting the comparison so a canonical form of directories is 27387recommended to be entered. 27388 27389@node Auto-loading verbose mode 27390@subsection Displaying files tried for auto-load 27391@cindex auto-loading verbose mode 27392 27393For better visibility of all the file locations where you can place scripts to 27394be auto-loaded with inferior --- or to protect yourself against accidental 27395execution of untrusted scripts --- @value{GDBN} provides a feature for printing 27396all the files attempted to be loaded. Both existing and non-existing files may 27397be printed. 27398 27399For example the list of directories from which it is safe to auto-load files 27400(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which 27401may not be too obvious while setting it up. 27402 27403@smallexample 27404(gdb) set debug auto-load on 27405(gdb) file ~/src/t/true 27406auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb" 27407 for objfile "/tmp/true". 27408auto-load: Updating directories of "/usr:/opt". 27409auto-load: Using directory "/usr". 27410auto-load: Using directory "/opt". 27411warning: File "/tmp/true-gdb.gdb" auto-loading has been declined 27412 by your `auto-load safe-path' set to "/usr:/opt". 27413@end smallexample 27414 27415@table @code 27416@anchor{set debug auto-load} 27417@kindex set debug auto-load 27418@item set debug auto-load [on|off] 27419Set whether to print the filenames attempted to be auto-loaded. 27420 27421@anchor{show debug auto-load} 27422@kindex show debug auto-load 27423@item show debug auto-load 27424Show whether printing of the filenames attempted to be auto-loaded is turned 27425on or off. 27426@end table 27427 27428@node Messages/Warnings 27429@section Optional Warnings and Messages 27430 27431@cindex verbose operation 27432@cindex optional warnings 27433By default, @value{GDBN} is silent about its inner workings. If you are 27434running on a slow machine, you may want to use the @code{set verbose} 27435command. This makes @value{GDBN} tell you when it does a lengthy 27436internal operation, so you will not think it has crashed. 27437 27438Currently, the messages controlled by @code{set verbose} are those 27439which announce that the symbol table for a source file is being read; 27440see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}. 27441 27442@table @code 27443@kindex set verbose 27444@item set verbose on 27445Enables @value{GDBN} output of certain informational messages. 27446 27447@item set verbose off 27448Disables @value{GDBN} output of certain informational messages. 27449 27450@kindex show verbose 27451@item show verbose 27452Displays whether @code{set verbose} is on or off. 27453@end table 27454 27455By default, if @value{GDBN} encounters bugs in the symbol table of an 27456object file, it is silent; but if you are debugging a compiler, you may 27457find this information useful (@pxref{Symbol Errors, ,Errors Reading 27458Symbol Files}). 27459 27460@table @code 27461 27462@kindex set complaints 27463@item set complaints @var{limit} 27464Permits @value{GDBN} to output @var{limit} complaints about each type of 27465unusual symbols before becoming silent about the problem. Set 27466@var{limit} to zero to suppress all complaints; set it to a large number 27467to prevent complaints from being suppressed. 27468 27469@kindex show complaints 27470@item show complaints 27471Displays how many symbol complaints @value{GDBN} is permitted to produce. 27472 27473@end table 27474 27475@anchor{confirmation requests} 27476By default, @value{GDBN} is cautious, and asks what sometimes seems to be a 27477lot of stupid questions to confirm certain commands. For example, if 27478you try to run a program which is already running: 27479 27480@smallexample 27481(@value{GDBP}) run 27482The program being debugged has been started already. 27483Start it from the beginning? (y or n) 27484@end smallexample 27485 27486If you are willing to unflinchingly face the consequences of your own 27487commands, you can disable this ``feature'': 27488 27489@table @code 27490 27491@kindex set confirm 27492@cindex flinching 27493@cindex confirmation 27494@cindex stupid questions 27495@item set confirm off 27496Disables confirmation requests. Note that running @value{GDBN} with 27497the @option{--batch} option (@pxref{Mode Options, -batch}) also 27498automatically disables confirmation requests. 27499 27500@item set confirm on 27501Enables confirmation requests (the default). 27502 27503@kindex show confirm 27504@item show confirm 27505Displays state of confirmation requests. 27506 27507@end table 27508 27509@cindex command tracing 27510If you need to debug user-defined commands or sourced files you may find it 27511useful to enable @dfn{command tracing}. In this mode each command will be 27512printed as it is executed, prefixed with one or more @samp{+} symbols, the 27513quantity denoting the call depth of each command. 27514 27515@table @code 27516@kindex set trace-commands 27517@cindex command scripts, debugging 27518@item set trace-commands on 27519Enable command tracing. 27520@item set trace-commands off 27521Disable command tracing. 27522@item show trace-commands 27523Display the current state of command tracing. 27524@end table 27525 27526@node Debugging Output 27527@section Optional Messages about Internal Happenings 27528@cindex optional debugging messages 27529 27530@value{GDBN} has commands that enable optional debugging messages from 27531various @value{GDBN} subsystems; normally these commands are of 27532interest to @value{GDBN} maintainers, or when reporting a bug. This 27533section documents those commands. 27534 27535@table @code 27536@kindex set exec-done-display 27537@item set exec-done-display 27538Turns on or off the notification of asynchronous commands' 27539completion. When on, @value{GDBN} will print a message when an 27540asynchronous command finishes its execution. The default is off. 27541@kindex show exec-done-display 27542@item show exec-done-display 27543Displays the current setting of asynchronous command completion 27544notification. 27545 27546@kindex set debug 27547@cindex ARM AArch64 27548@item set debug aarch64 27549Turns on or off display of debugging messages related to ARM AArch64. 27550The default is off. 27551@kindex show debug 27552@item show debug aarch64 27553Displays the current state of displaying debugging messages related to 27554ARM AArch64. 27555 27556@cindex gdbarch debugging info 27557@cindex architecture debugging info 27558@item set debug arch 27559Turns on or off display of gdbarch debugging info. The default is off 27560@item show debug arch 27561Displays the current state of displaying gdbarch debugging info. 27562 27563@item set debug aix-thread 27564@cindex AIX threads 27565Display debugging messages about inner workings of the AIX thread 27566module. 27567@item show debug aix-thread 27568Show the current state of AIX thread debugging info display. 27569 27570@item set debug check-physname 27571@cindex physname 27572Check the results of the ``physname'' computation. When reading DWARF 27573debugging information for C@t{++}, @value{GDBN} attempts to compute 27574each entity's name. @value{GDBN} can do this computation in two 27575different ways, depending on exactly what information is present. 27576When enabled, this setting causes @value{GDBN} to compute the names 27577both ways and display any discrepancies. 27578@item show debug check-physname 27579Show the current state of ``physname'' checking. 27580 27581@item set debug coff-pe-read 27582@cindex COFF/PE exported symbols 27583Control display of debugging messages related to reading of COFF/PE 27584exported symbols. The default is off. 27585@item show debug coff-pe-read 27586Displays the current state of displaying debugging messages related to 27587reading of COFF/PE exported symbols. 27588 27589@item set debug dwarf-die 27590@cindex DWARF DIEs 27591Dump DWARF DIEs after they are read in. 27592The value is the number of nesting levels to print. 27593A value of zero turns off the display. 27594@item show debug dwarf-die 27595Show the current state of DWARF DIE debugging. 27596 27597@item set debug dwarf-line 27598@cindex DWARF Line Tables 27599Turns on or off display of debugging messages related to reading 27600DWARF line tables. The default is 0 (off). 27601A value of 1 provides basic information. 27602A value greater than 1 provides more verbose information. 27603@item show debug dwarf-line 27604Show the current state of DWARF line table debugging. 27605 27606@item set debug dwarf-read 27607@cindex DWARF Reading 27608Turns on or off display of debugging messages related to reading 27609DWARF debug info. The default is 0 (off). 27610A value of 1 provides basic information. 27611A value greater than 1 provides more verbose information. 27612@item show debug dwarf-read 27613Show the current state of DWARF reader debugging. 27614 27615@item set debug displaced 27616@cindex displaced stepping debugging info 27617Turns on or off display of @value{GDBN} debugging info for the 27618displaced stepping support. The default is off. 27619@item show debug displaced 27620Displays the current state of displaying @value{GDBN} debugging info 27621related to displaced stepping. 27622 27623@item set debug event 27624@cindex event debugging info 27625Turns on or off display of @value{GDBN} event debugging info. The 27626default is off. 27627@item show debug event 27628Displays the current state of displaying @value{GDBN} event debugging 27629info. 27630 27631@item set debug event-loop 27632@cindex event-loop debugging 27633Controls output of debugging info about the event loop. The possible 27634values are @samp{off}, @samp{all} (shows all debugging info) and 27635@samp{all-except-ui} (shows all debugging info except those about 27636UI-related events). 27637@item show debug event-loop 27638Shows the current state of displaying debugging info about the event 27639loop. 27640 27641@item set debug expression 27642@cindex expression debugging info 27643Turns on or off display of debugging info about @value{GDBN} 27644expression parsing. The default is off. 27645@item show debug expression 27646Displays the current state of displaying debugging info about 27647@value{GDBN} expression parsing. 27648 27649@item set debug fbsd-lwp 27650@cindex FreeBSD LWP debug messages 27651Turns on or off debugging messages from the FreeBSD LWP debug support. 27652@item show debug fbsd-lwp 27653Show the current state of FreeBSD LWP debugging messages. 27654 27655@item set debug fbsd-nat 27656@cindex FreeBSD native target debug messages 27657Turns on or off debugging messages from the FreeBSD native target. 27658@item show debug fbsd-nat 27659Show the current state of FreeBSD native target debugging messages. 27660 27661@item set debug fortran-array-slicing 27662@cindex fortran array slicing debugging info 27663Turns on or off display of @value{GDBN} Fortran array slicing 27664debugging info. The default is off. 27665 27666@item show debug fortran-array-slicing 27667Displays the current state of displaying @value{GDBN} Fortran array 27668slicing debugging info. 27669 27670@item set debug frame 27671@cindex frame debugging info 27672Turns on or off display of @value{GDBN} frame debugging info. The 27673default is off. 27674@item show debug frame 27675Displays the current state of displaying @value{GDBN} frame debugging 27676info. 27677 27678@item set debug gnu-nat 27679@cindex @sc{gnu}/Hurd debug messages 27680Turn on or off debugging messages from the @sc{gnu}/Hurd debug support. 27681@item show debug gnu-nat 27682Show the current state of @sc{gnu}/Hurd debugging messages. 27683 27684@item set debug infrun 27685@cindex inferior debugging info 27686Turns on or off display of @value{GDBN} debugging info for running the inferior. 27687The default is off. @file{infrun.c} contains GDB's runtime state machine used 27688for implementing operations such as single-stepping the inferior. 27689@item show debug infrun 27690Displays the current state of @value{GDBN} inferior debugging. 27691 27692@item set debug infcall 27693@cindex inferior function call debugging info 27694Turns on or off display of debugging info related to inferior function 27695calls made by @value{GDBN}. 27696@item show debug infcall 27697Displays the current state of @value{GDBN} inferior function call debugging. 27698 27699@item set debug jit 27700@cindex just-in-time compilation, debugging messages 27701Turn on or off debugging messages from JIT debug support. 27702@item show debug jit 27703Displays the current state of @value{GDBN} JIT debugging. 27704 27705@item set debug linux-nat @r{[}on@r{|}off@r{]} 27706@cindex @sc{gnu}/Linux native target debug messages 27707@cindex Linux native targets 27708Turn on or off debugging messages from the Linux native target debug support. 27709@item show debug linux-nat 27710Show the current state of Linux native target debugging messages. 27711 27712@item set debug linux-namespaces 27713@cindex @sc{gnu}/Linux namespaces debug messages 27714Turn on or off debugging messages from the Linux namespaces debug support. 27715@item show debug linux-namespaces 27716Show the current state of Linux namespaces debugging messages. 27717 27718@item set debug mach-o 27719@cindex Mach-O symbols processing 27720Control display of debugging messages related to Mach-O symbols 27721processing. The default is off. 27722@item show debug mach-o 27723Displays the current state of displaying debugging messages related to 27724reading of COFF/PE exported symbols. 27725 27726@item set debug notification 27727@cindex remote async notification debugging info 27728Turn on or off debugging messages about remote async notification. 27729The default is off. 27730@item show debug notification 27731Displays the current state of remote async notification debugging messages. 27732 27733@item set debug observer 27734@cindex observer debugging info 27735Turns on or off display of @value{GDBN} observer debugging. This 27736includes info such as the notification of observable events. 27737@item show debug observer 27738Displays the current state of observer debugging. 27739 27740@item set debug overload 27741@cindex C@t{++} overload debugging info 27742Turns on or off display of @value{GDBN} C@t{++} overload debugging 27743info. This includes info such as ranking of functions, etc. The default 27744is off. 27745@item show debug overload 27746Displays the current state of displaying @value{GDBN} C@t{++} overload 27747debugging info. 27748 27749@cindex expression parser, debugging info 27750@cindex debug expression parser 27751@item set debug parser 27752Turns on or off the display of expression parser debugging output. 27753Internally, this sets the @code{yydebug} variable in the expression 27754parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for 27755details. The default is off. 27756@item show debug parser 27757Show the current state of expression parser debugging. 27758 27759@cindex packets, reporting on stdout 27760@cindex serial connections, debugging 27761@cindex debug remote protocol 27762@cindex remote protocol debugging 27763@cindex display remote packets 27764@item set debug remote 27765Turns on or off display of reports on all packets sent back and forth across 27766the serial line to the remote machine. The info is printed on the 27767@value{GDBN} standard output stream. The default is off. 27768@item show debug remote 27769Displays the state of display of remote packets. 27770 27771@item set debug remote-packet-max-chars 27772Sets the maximum number of characters to display for each remote packet when 27773@code{set debug remote} is on. This is useful to prevent @value{GDBN} from 27774displaying lengthy remote packets and polluting the console. 27775 27776The default value is @code{512}, which means @value{GDBN} will truncate each 27777remote packet after 512 bytes. 27778 27779Setting this option to @code{unlimited} will disable truncation and will output 27780the full length of the remote packets. 27781@item show debug remote-packet-max-chars 27782Displays the number of bytes to output for remote packet debugging. 27783 27784@item set debug separate-debug-file 27785Turns on or off display of debug output about separate debug file search. 27786@item show debug separate-debug-file 27787Displays the state of separate debug file search debug output. 27788 27789@item set debug serial 27790Turns on or off display of @value{GDBN} serial debugging info. The 27791default is off. 27792@item show debug serial 27793Displays the current state of displaying @value{GDBN} serial debugging 27794info. 27795 27796@item set debug solib 27797Turns on or off display of debugging messages related to shared libraries. 27798The default is off. 27799@item show debug solib 27800Show the current state of solib debugging messages. 27801 27802@item set debug symbol-lookup 27803@cindex symbol lookup 27804Turns on or off display of debugging messages related to symbol lookup. 27805The default is 0 (off). 27806A value of 1 provides basic information. 27807A value greater than 1 provides more verbose information. 27808@item show debug symbol-lookup 27809Show the current state of symbol lookup debugging messages. 27810 27811@item set debug symfile 27812@cindex symbol file functions 27813Turns on or off display of debugging messages related to symbol file functions. 27814The default is off. @xref{Files}. 27815@item show debug symfile 27816Show the current state of symbol file debugging messages. 27817 27818@item set debug symtab-create 27819@cindex symbol table creation 27820Turns on or off display of debugging messages related to symbol table creation. 27821The default is 0 (off). 27822A value of 1 provides basic information. 27823A value greater than 1 provides more verbose information. 27824@item show debug symtab-create 27825Show the current state of symbol table creation debugging. 27826 27827@item set debug target 27828@cindex target debugging info 27829Turns on or off display of @value{GDBN} target debugging info. This info 27830includes what is going on at the target level of GDB, as it happens. The 27831default is 0. Set it to 1 to track events, and to 2 to also track the 27832value of large memory transfers. 27833@item show debug target 27834Displays the current state of displaying @value{GDBN} target debugging 27835info. 27836 27837@item set debug timestamp 27838@cindex timestamping debugging info 27839Turns on or off display of timestamps with @value{GDBN} debugging info. 27840When enabled, seconds and microseconds are displayed before each debugging 27841message. 27842@item show debug timestamp 27843Displays the current state of displaying timestamps with @value{GDBN} 27844debugging info. 27845 27846@item set debug varobj 27847@cindex variable object debugging info 27848Turns on or off display of @value{GDBN} variable object debugging 27849info. The default is off. 27850@item show debug varobj 27851Displays the current state of displaying @value{GDBN} variable object 27852debugging info. 27853 27854@item set debug xml 27855@cindex XML parser debugging 27856Turn on or off debugging messages for built-in XML parsers. 27857@item show debug xml 27858Displays the current state of XML debugging messages. 27859@end table 27860 27861@node Other Misc Settings 27862@section Other Miscellaneous Settings 27863@cindex miscellaneous settings 27864 27865@table @code 27866@kindex set interactive-mode 27867@item set interactive-mode 27868If @code{on}, forces @value{GDBN} to assume that GDB was started 27869in a terminal. In practice, this means that @value{GDBN} should wait 27870for the user to answer queries generated by commands entered at 27871the command prompt. If @code{off}, forces @value{GDBN} to operate 27872in the opposite mode, and it uses the default answers to all queries. 27873If @code{auto} (the default), @value{GDBN} tries to determine whether 27874its standard input is a terminal, and works in interactive-mode if it 27875is, non-interactively otherwise. 27876 27877In the vast majority of cases, the debugger should be able to guess 27878correctly which mode should be used. But this setting can be useful 27879in certain specific cases, such as running a MinGW @value{GDBN} 27880inside a cygwin window. 27881 27882@kindex show interactive-mode 27883@item show interactive-mode 27884Displays whether the debugger is operating in interactive mode or not. 27885@end table 27886 27887@table @code 27888@kindex set suppress-cli-notifications 27889@item set suppress-cli-notifications 27890If @code{on}, command-line-interface (CLI) notifications that are 27891printed by @value{GDBN} are suppressed. If @code{off}, the 27892notifications are printed as usual. The default value is @code{off}. 27893CLI notifications occur when you change the selected context or when 27894the program being debugged stops, as detailed below. 27895 27896@table @emph 27897@item User-selected context changes: 27898When you change the selected context (i.e.@: the current inferior, 27899thread and/or the frame), @value{GDBN} prints information about the 27900new context. For example, the default behavior is below: 27901 27902@smallexample 27903(gdb) inferior 1 27904[Switching to inferior 1 [process 634] (/tmp/test)] 27905[Switching to thread 1 (process 634)] 27906#0 main () at test.c:3 279073 return 0; 27908(gdb) 27909@end smallexample 27910 27911When the notifications are suppressed, the new context is not printed: 27912 27913@smallexample 27914(gdb) set suppress-cli-notifications on 27915(gdb) inferior 1 27916(gdb) 27917@end smallexample 27918 27919@item The program being debugged stops: 27920When the program you are debugging stops (e.g.@: because of hitting a 27921breakpoint, completing source-stepping, an interrupt, etc.), 27922@value{GDBN} prints information about the stop event. For example, 27923below is a breakpoint hit: 27924 27925@smallexample 27926(gdb) break test.c:3 27927Breakpoint 2 at 0x555555555155: file test.c, line 3. 27928(gdb) continue 27929Continuing. 27930 27931Breakpoint 2, main () at test.c:3 279323 return 0; 27933(gdb) 27934@end smallexample 27935 27936When the notifications are suppressed, the output becomes: 27937 27938@smallexample 27939(gdb) break test.c:3 27940Breakpoint 2 at 0x555555555155: file test.c, line 3. 27941(gdb) set suppress-cli-notifications on 27942(gdb) continue 27943Continuing. 27944(gdb) 27945@end smallexample 27946 27947Suppressing CLI notifications may be useful in scripts to obtain a 27948reduced output from a list of commands. 27949@end table 27950 27951@kindex show suppress-cli-notifications 27952@item show suppress-cli-notifications 27953Displays whether printing CLI notifications is suppressed or not. 27954@end table 27955 27956@node Extending GDB 27957@chapter Extending @value{GDBN} 27958@cindex extending GDB 27959 27960@value{GDBN} provides several mechanisms for extension. 27961@value{GDBN} also provides the ability to automatically load 27962extensions when it reads a file for debugging. This allows the 27963user to automatically customize @value{GDBN} for the program 27964being debugged. 27965 27966To facilitate the use of extension languages, @value{GDBN} is capable 27967of evaluating the contents of a file. When doing so, @value{GDBN} 27968can recognize which extension language is being used by looking at 27969the filename extension. Files with an unrecognized filename extension 27970are always treated as a @value{GDBN} Command Files. 27971@xref{Command Files,, Command files}. 27972 27973You can control how @value{GDBN} evaluates these files with the following 27974setting: 27975 27976@table @code 27977@kindex set script-extension 27978@kindex show script-extension 27979@item set script-extension off 27980All scripts are always evaluated as @value{GDBN} Command Files. 27981 27982@item set script-extension soft 27983The debugger determines the scripting language based on filename 27984extension. If this scripting language is supported, @value{GDBN} 27985evaluates the script using that language. Otherwise, it evaluates 27986the file as a @value{GDBN} Command File. 27987 27988@item set script-extension strict 27989The debugger determines the scripting language based on filename 27990extension, and evaluates the script using that language. If the 27991language is not supported, then the evaluation fails. 27992 27993@item show script-extension 27994Display the current value of the @code{script-extension} option. 27995 27996@end table 27997 27998@ifset SYSTEM_GDBINIT_DIR 27999This setting is not used for files in the system-wide gdbinit directory. 28000Files in that directory must have an extension matching their language, 28001or have a @file{.gdb} extension to be interpreted as regular @value{GDBN} 28002commands. @xref{Startup}. 28003@end ifset 28004 28005@menu 28006* Sequences:: Canned Sequences of @value{GDBN} Commands 28007* Aliases:: Command Aliases 28008* Python:: Extending @value{GDBN} using Python 28009* Guile:: Extending @value{GDBN} using Guile 28010* Auto-loading extensions:: Automatically loading extensions 28011* Multiple Extension Languages:: Working with multiple extension languages 28012@end menu 28013 28014@node Sequences 28015@section Canned Sequences of Commands 28016 28017Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint 28018Command Lists}), @value{GDBN} provides two ways to store sequences of 28019commands for execution as a unit: user-defined commands and command 28020files. 28021 28022@menu 28023* Define:: How to define your own commands 28024* Hooks:: Hooks for user-defined commands 28025* Command Files:: How to write scripts of commands to be stored in a file 28026* Output:: Commands for controlled output 28027* Auto-loading sequences:: Controlling auto-loaded command files 28028@end menu 28029 28030@node Define 28031@subsection User-defined Commands 28032 28033@cindex user-defined command 28034@cindex arguments, to user-defined commands 28035A @dfn{user-defined command} is a sequence of @value{GDBN} commands to 28036which you assign a new name as a command. This is done with the 28037@code{define} command. User commands may accept an unlimited number of arguments 28038separated by whitespace. Arguments are accessed within the user command 28039via @code{$arg0@dots{}$argN}. A trivial example: 28040 28041@smallexample 28042define adder 28043 print $arg0 + $arg1 + $arg2 28044end 28045@end smallexample 28046 28047@noindent 28048To execute the command use: 28049 28050@smallexample 28051adder 1 2 3 28052@end smallexample 28053 28054@noindent 28055This defines the command @code{adder}, which prints the sum of 28056its three arguments. Note the arguments are text substitutions, so they may 28057reference variables, use complex expressions, or even perform inferior 28058functions calls. 28059 28060@cindex argument count in user-defined commands 28061@cindex how many arguments (user-defined commands) 28062In addition, @code{$argc} may be used to find out how many arguments have 28063been passed. 28064 28065@smallexample 28066define adder 28067 if $argc == 2 28068 print $arg0 + $arg1 28069 end 28070 if $argc == 3 28071 print $arg0 + $arg1 + $arg2 28072 end 28073end 28074@end smallexample 28075 28076Combining with the @code{eval} command (@pxref{eval}) makes it easier 28077to process a variable number of arguments: 28078 28079@smallexample 28080define adder 28081 set $i = 0 28082 set $sum = 0 28083 while $i < $argc 28084 eval "set $sum = $sum + $arg%d", $i 28085 set $i = $i + 1 28086 end 28087 print $sum 28088end 28089@end smallexample 28090 28091@table @code 28092 28093@kindex define 28094@item define @var{commandname} 28095Define a command named @var{commandname}. If there is already a command 28096by that name, you are asked to confirm that you want to redefine it. 28097The argument @var{commandname} may be a bare command name consisting of letters, 28098numbers, dashes, dots, and underscores. It may also start with any 28099predefined or user-defined prefix command. 28100For example, @samp{define target my-target} creates 28101a user-defined @samp{target my-target} command. 28102 28103The definition of the command is made up of other @value{GDBN} command lines, 28104which are given following the @code{define} command. The end of these 28105commands is marked by a line containing @code{end}. 28106 28107@kindex document 28108@kindex end@r{ (user-defined commands)} 28109@item document @var{commandname} 28110Document the user-defined command @var{commandname}, so that it can be 28111accessed by @code{help}. The command @var{commandname} must already be 28112defined. This command reads lines of documentation just as @code{define} 28113reads the lines of the command definition, ending with @code{end}. 28114After the @code{document} command is finished, @code{help} on command 28115@var{commandname} displays the documentation you have written. 28116 28117You may use the @code{document} command again to change the 28118documentation of a command. Redefining the command with @code{define} 28119does not change the documentation. 28120 28121It is also possible to document user-defined aliases. The alias documentation 28122will then be used by the @code{help} and @code{apropos} commands 28123instead of the documentation of the aliased command. 28124Documenting a user-defined alias is particularly useful when defining 28125an alias as a set of nested @code{with} commands 28126(@pxref{Command aliases default args}). 28127 28128@kindex define-prefix 28129@item define-prefix @var{commandname} 28130Define or mark the command @var{commandname} as a user-defined prefix 28131command. Once marked, @var{commandname} can be used as prefix command 28132by the @code{define} command. 28133Note that @code{define-prefix} can be used with a not yet defined 28134@var{commandname}. In such a case, @var{commandname} is defined as 28135an empty user-defined command. 28136In case you redefine a command that was marked as a user-defined 28137prefix command, the subcommands of the redefined command are kept 28138(and @value{GDBN} indicates so to the user). 28139 28140Example: 28141@example 28142(gdb) define-prefix abc 28143(gdb) define-prefix abc def 28144(gdb) define abc def 28145Type commands for definition of "abc def". 28146End with a line saying just "end". 28147>echo command initial def\n 28148>end 28149(gdb) define abc def ghi 28150Type commands for definition of "abc def ghi". 28151End with a line saying just "end". 28152>echo command ghi\n 28153>end 28154(gdb) define abc def 28155Keeping subcommands of prefix command "def". 28156Redefine command "def"? (y or n) y 28157Type commands for definition of "abc def". 28158End with a line saying just "end". 28159>echo command def\n 28160>end 28161(gdb) abc def ghi 28162command ghi 28163(gdb) abc def 28164command def 28165(gdb) 28166@end example 28167 28168@kindex dont-repeat 28169@cindex don't repeat command 28170@item dont-repeat 28171Used inside a user-defined command, this tells @value{GDBN} that this 28172command should not be repeated when the user hits @key{RET} 28173(@pxref{Command Syntax, repeat last command}). 28174 28175@kindex help user-defined 28176@item help user-defined 28177List all user-defined commands and all python commands defined in class 28178COMMAND_USER. The first line of the documentation or docstring is 28179included (if any). 28180 28181@kindex show user 28182@item show user 28183@itemx show user @var{commandname} 28184Display the @value{GDBN} commands used to define @var{commandname} (but 28185not its documentation). If no @var{commandname} is given, display the 28186definitions for all user-defined commands. 28187This does not work for user-defined python commands. 28188 28189@cindex infinite recursion in user-defined commands 28190@kindex show max-user-call-depth 28191@kindex set max-user-call-depth 28192@item show max-user-call-depth 28193@itemx set max-user-call-depth 28194The value of @code{max-user-call-depth} controls how many recursion 28195levels are allowed in user-defined commands before @value{GDBN} suspects an 28196infinite recursion and aborts the command. 28197This does not apply to user-defined python commands. 28198@end table 28199 28200In addition to the above commands, user-defined commands frequently 28201use control flow commands, described in @ref{Command Files}. 28202 28203When user-defined commands are executed, the 28204commands of the definition are not printed. An error in any command 28205stops execution of the user-defined command. 28206 28207If used interactively, commands that would ask for confirmation proceed 28208without asking when used inside a user-defined command. Many @value{GDBN} 28209commands that normally print messages to say what they are doing omit the 28210messages when used in a user-defined command. 28211 28212@node Hooks 28213@subsection User-defined Command Hooks 28214@cindex command hooks 28215@cindex hooks, for commands 28216@cindex hooks, pre-command 28217 28218@kindex hook 28219You may define @dfn{hooks}, which are a special kind of user-defined 28220command. Whenever you run the command @samp{foo}, if the user-defined 28221command @samp{hook-foo} exists, it is executed (with no arguments) 28222before that command. 28223 28224@cindex hooks, post-command 28225@kindex hookpost 28226A hook may also be defined which is run after the command you executed. 28227Whenever you run the command @samp{foo}, if the user-defined command 28228@samp{hookpost-foo} exists, it is executed (with no arguments) after 28229that command. Post-execution hooks may exist simultaneously with 28230pre-execution hooks, for the same command. 28231 28232It is valid for a hook to call the command which it hooks. If this 28233occurs, the hook is not re-executed, thereby avoiding infinite recursion. 28234 28235@c It would be nice if hookpost could be passed a parameter indicating 28236@c if the command it hooks executed properly or not. FIXME! 28237 28238@kindex stop@r{, a pseudo-command} 28239In addition, a pseudo-command, @samp{stop} exists. Defining 28240(@samp{hook-stop}) makes the associated commands execute every time 28241execution stops in your program: before breakpoint commands are run, 28242displays are printed, or the stack frame is printed. 28243 28244For example, to ignore @code{SIGALRM} signals while 28245single-stepping, but treat them normally during normal execution, 28246you could define: 28247 28248@smallexample 28249define hook-stop 28250handle SIGALRM nopass 28251end 28252 28253define hook-run 28254handle SIGALRM pass 28255end 28256 28257define hook-continue 28258handle SIGALRM pass 28259end 28260@end smallexample 28261 28262As a further example, to hook at the beginning and end of the @code{echo} 28263command, and to add extra text to the beginning and end of the message, 28264you could define: 28265 28266@smallexample 28267define hook-echo 28268echo <<<--- 28269end 28270 28271define hookpost-echo 28272echo --->>>\n 28273end 28274 28275(@value{GDBP}) echo Hello World 28276<<<---Hello World--->>> 28277(@value{GDBP}) 28278 28279@end smallexample 28280 28281You can define a hook for any single-word command in @value{GDBN}, but 28282not for command aliases; you should define a hook for the basic command 28283name, e.g.@: @code{backtrace} rather than @code{bt}. 28284@c FIXME! So how does Joe User discover whether a command is an alias 28285@c or not? 28286You can hook a multi-word command by adding @code{hook-} or 28287@code{hookpost-} to the last word of the command, e.g.@: 28288@samp{define target hook-remote} to add a hook to @samp{target remote}. 28289 28290If an error occurs during the execution of your hook, execution of 28291@value{GDBN} commands stops and @value{GDBN} issues a prompt 28292(before the command that you actually typed had a chance to run). 28293 28294If you try to define a hook which does not match any known command, you 28295get a warning from the @code{define} command. 28296 28297@node Command Files 28298@subsection Command Files 28299 28300@cindex command files 28301@cindex scripting commands 28302A command file for @value{GDBN} is a text file made of lines that are 28303@value{GDBN} commands. Comments (lines starting with @kbd{#}) may 28304also be included. An empty line in a command file does nothing; it 28305does not mean to repeat the last command, as it would from the 28306terminal. 28307 28308You can request the execution of a command file with the @code{source} 28309command. Note that the @code{source} command is also used to evaluate 28310scripts that are not Command Files. The exact behavior can be configured 28311using the @code{script-extension} setting. 28312@xref{Extending GDB,, Extending GDB}. 28313 28314@table @code 28315@kindex source 28316@cindex execute commands from a file 28317@item source [-s] [-v] @var{filename} 28318Execute the command file @var{filename}. 28319@end table 28320 28321The lines in a command file are generally executed sequentially, 28322unless the order of execution is changed by one of the 28323@emph{flow-control commands} described below. The commands are not 28324printed as they are executed. An error in any command terminates 28325execution of the command file and control is returned to the console. 28326 28327@value{GDBN} first searches for @var{filename} in the current directory. 28328If the file is not found there, and @var{filename} does not specify a 28329directory, then @value{GDBN} also looks for the file on the source search path 28330(specified with the @samp{directory} command); 28331except that @file{$cdir} is not searched because the compilation directory 28332is not relevant to scripts. 28333 28334If @code{-s} is specified, then @value{GDBN} searches for @var{filename} 28335on the search path even if @var{filename} specifies a directory. 28336The search is done by appending @var{filename} to each element of the 28337search path. So, for example, if @var{filename} is @file{mylib/myscript} 28338and the search path contains @file{/home/user} then @value{GDBN} will 28339look for the script @file{/home/user/mylib/myscript}. 28340The search is also done if @var{filename} is an absolute path. 28341For example, if @var{filename} is @file{/tmp/myscript} and 28342the search path contains @file{/home/user} then @value{GDBN} will 28343look for the script @file{/home/user/tmp/myscript}. 28344For DOS-like systems, if @var{filename} contains a drive specification, 28345it is stripped before concatenation. For example, if @var{filename} is 28346@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN} 28347will look for the script @file{c:/tmp/myscript}. 28348 28349If @code{-v}, for verbose mode, is given then @value{GDBN} displays 28350each command as it is executed. The option must be given before 28351@var{filename}, and is interpreted as part of the filename anywhere else. 28352 28353Commands that would ask for confirmation if used interactively proceed 28354without asking when used in a command file. Many @value{GDBN} commands that 28355normally print messages to say what they are doing omit the messages 28356when called from command files. 28357 28358@value{GDBN} also accepts command input from standard input. In this 28359mode, normal output goes to standard output and error output goes to 28360standard error. Errors in a command file supplied on standard input do 28361not terminate execution of the command file---execution continues with 28362the next command. 28363 28364@smallexample 28365gdb < cmds > log 2>&1 28366@end smallexample 28367 28368(The syntax above will vary depending on the shell used.) This example 28369will execute commands from the file @file{cmds}. All output and errors 28370would be directed to @file{log}. 28371 28372Since commands stored on command files tend to be more general than 28373commands typed interactively, they frequently need to deal with 28374complicated situations, such as different or unexpected values of 28375variables and symbols, changes in how the program being debugged is 28376built, etc. @value{GDBN} provides a set of flow-control commands to 28377deal with these complexities. Using these commands, you can write 28378complex scripts that loop over data structures, execute commands 28379conditionally, etc. 28380 28381@table @code 28382@kindex if 28383@kindex else 28384@item if 28385@itemx else 28386This command allows to include in your script conditionally executed 28387commands. The @code{if} command takes a single argument, which is an 28388expression to evaluate. It is followed by a series of commands that 28389are executed only if the expression is true (its value is nonzero). 28390There can then optionally be an @code{else} line, followed by a series 28391of commands that are only executed if the expression was false. The 28392end of the list is marked by a line containing @code{end}. 28393 28394@kindex while 28395@item while 28396This command allows to write loops. Its syntax is similar to 28397@code{if}: the command takes a single argument, which is an expression 28398to evaluate, and must be followed by the commands to execute, one per 28399line, terminated by an @code{end}. These commands are called the 28400@dfn{body} of the loop. The commands in the body of @code{while} are 28401executed repeatedly as long as the expression evaluates to true. 28402 28403@kindex loop_break 28404@item loop_break 28405This command exits the @code{while} loop in whose body it is included. 28406Execution of the script continues after that @code{while}s @code{end} 28407line. 28408 28409@kindex loop_continue 28410@item loop_continue 28411This command skips the execution of the rest of the body of commands 28412in the @code{while} loop in whose body it is included. Execution 28413branches to the beginning of the @code{while} loop, where it evaluates 28414the controlling expression. 28415 28416@kindex end@r{ (if/else/while commands)} 28417@item end 28418Terminate the block of commands that are the body of @code{if}, 28419@code{else}, or @code{while} flow-control commands. 28420@end table 28421 28422 28423@node Output 28424@subsection Commands for Controlled Output 28425 28426During the execution of a command file or a user-defined command, normal 28427@value{GDBN} output is suppressed; the only output that appears is what is 28428explicitly printed by the commands in the definition. This section 28429describes three commands useful for generating exactly the output you 28430want. 28431 28432@table @code 28433@kindex echo 28434@item echo @var{text} 28435@c I do not consider backslash-space a standard C escape sequence 28436@c because it is not in ANSI. 28437Print @var{text}. Nonprinting characters can be included in 28438@var{text} using C escape sequences, such as @samp{\n} to print a 28439newline. @strong{No newline is printed unless you specify one.} 28440In addition to the standard C escape sequences, a backslash followed 28441by a space stands for a space. This is useful for displaying a 28442string with spaces at the beginning or the end, since leading and 28443trailing spaces are otherwise trimmed from all arguments. 28444To print @samp{@w{ }and foo =@w{ }}, use the command 28445@samp{echo \@w{ }and foo = \@w{ }}. 28446 28447A backslash at the end of @var{text} can be used, as in C, to continue 28448the command onto subsequent lines. For example, 28449 28450@smallexample 28451echo This is some text\n\ 28452which is continued\n\ 28453onto several lines.\n 28454@end smallexample 28455 28456produces the same output as 28457 28458@smallexample 28459echo This is some text\n 28460echo which is continued\n 28461echo onto several lines.\n 28462@end smallexample 28463 28464@kindex output 28465@item output @var{expression} 28466Print the value of @var{expression} and nothing but that value: no 28467newlines, no @samp{$@var{nn} = }. The value is not entered in the 28468value history either. @xref{Expressions, ,Expressions}, for more information 28469on expressions. 28470 28471@item output/@var{fmt} @var{expression} 28472Print the value of @var{expression} in format @var{fmt}. You can use 28473the same formats as for @code{print}. @xref{Output Formats,,Output 28474Formats}, for more information. 28475 28476@kindex printf 28477@item printf @var{template}, @var{expressions}@dots{} 28478Print the values of one or more @var{expressions} under the control of 28479the string @var{template}. To print several values, make 28480@var{expressions} be a comma-separated list of individual expressions, 28481which may be either numbers or pointers. Their values are printed as 28482specified by @var{template}, exactly as a C program would do by 28483executing the code below: 28484 28485@smallexample 28486printf (@var{template}, @var{expressions}@dots{}); 28487@end smallexample 28488 28489As in @code{C} @code{printf}, ordinary characters in @var{template} 28490are printed verbatim, while @dfn{conversion specification} introduced 28491by the @samp{%} character cause subsequent @var{expressions} to be 28492evaluated, their values converted and formatted according to type and 28493style information encoded in the conversion specifications, and then 28494printed. 28495 28496For example, you can print two values in hex like this: 28497 28498@smallexample 28499printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo 28500@end smallexample 28501 28502@code{printf} supports all the standard @code{C} conversion 28503specifications, including the flags and modifiers between the @samp{%} 28504character and the conversion letter, with the following exceptions: 28505 28506@itemize @bullet 28507@item 28508The argument-ordering modifiers, such as @samp{2$}, are not supported. 28509 28510@item 28511The modifier @samp{*} is not supported for specifying precision or 28512width. 28513 28514@item 28515The @samp{'} flag (for separation of digits into groups according to 28516@code{LC_NUMERIC'}) is not supported. 28517 28518@item 28519The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not 28520supported. 28521 28522@item 28523The conversion letter @samp{n} (as in @samp{%n}) is not supported. 28524 28525@item 28526The conversion letters @samp{a} and @samp{A} are not supported. 28527@end itemize 28528 28529@noindent 28530Note that the @samp{ll} type modifier is supported only if the 28531underlying @code{C} implementation used to build @value{GDBN} supports 28532the @code{long long int} type, and the @samp{L} type modifier is 28533supported only if @code{long double} type is available. 28534 28535As in @code{C}, @code{printf} supports simple backslash-escape 28536sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"}, 28537@samp{\a}, and @samp{\f}, that consist of backslash followed by a 28538single character. Octal and hexadecimal escape sequences are not 28539supported. 28540 28541Additionally, @code{printf} supports conversion specifications for DFP 28542(@dfn{Decimal Floating Point}) types using the following length modifiers 28543together with a floating point specifier. 28544letters: 28545 28546@itemize @bullet 28547@item 28548@samp{H} for printing @code{Decimal32} types. 28549 28550@item 28551@samp{D} for printing @code{Decimal64} types. 28552 28553@item 28554@samp{DD} for printing @code{Decimal128} types. 28555@end itemize 28556 28557If the underlying @code{C} implementation used to build @value{GDBN} has 28558support for the three length modifiers for DFP types, other modifiers 28559such as width and precision will also be available for @value{GDBN} to use. 28560 28561In case there is no such @code{C} support, no additional modifiers will be 28562available and the value will be printed in the standard way. 28563 28564Here's an example of printing DFP types using the above conversion letters: 28565@smallexample 28566printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl 28567@end smallexample 28568 28569@anchor{eval} 28570@kindex eval 28571@item eval @var{template}, @var{expressions}@dots{} 28572Convert the values of one or more @var{expressions} under the control of 28573the string @var{template} to a command line, and call it. 28574 28575@end table 28576 28577@node Auto-loading sequences 28578@subsection Controlling auto-loading native @value{GDBN} scripts 28579@cindex native script auto-loading 28580 28581When a new object file is read (for example, due to the @code{file} 28582command, or because the inferior has loaded a shared library), 28583@value{GDBN} will look for the command file @file{@var{objfile}-gdb.gdb}. 28584@xref{Auto-loading extensions}. 28585 28586Auto-loading can be enabled or disabled, 28587and the list of auto-loaded scripts can be printed. 28588 28589@table @code 28590@anchor{set auto-load gdb-scripts} 28591@kindex set auto-load gdb-scripts 28592@item set auto-load gdb-scripts [on|off] 28593Enable or disable the auto-loading of canned sequences of commands scripts. 28594 28595@anchor{show auto-load gdb-scripts} 28596@kindex show auto-load gdb-scripts 28597@item show auto-load gdb-scripts 28598Show whether auto-loading of canned sequences of commands scripts is enabled or 28599disabled. 28600 28601@anchor{info auto-load gdb-scripts} 28602@kindex info auto-load gdb-scripts 28603@cindex print list of auto-loaded canned sequences of commands scripts 28604@item info auto-load gdb-scripts [@var{regexp}] 28605Print the list of all canned sequences of commands scripts that @value{GDBN} 28606auto-loaded. 28607@end table 28608 28609If @var{regexp} is supplied only canned sequences of commands scripts with 28610matching names are printed. 28611 28612@node Aliases 28613@section Command Aliases 28614@cindex aliases for commands 28615 28616Aliases allow you to define alternate spellings for existing commands. 28617For example, if a new @value{GDBN} command defined in Python 28618(@pxref{Python}) has a long name, it is handy to have an abbreviated 28619version of it that involves less typing. 28620 28621@value{GDBN} itself uses aliases. For example @samp{s} is an alias 28622of the @samp{step} command even though it is otherwise an ambiguous 28623abbreviation of other commands like @samp{set} and @samp{show}. 28624 28625Aliases are also used to provide shortened or more common versions 28626of multi-word commands. For example, @value{GDBN} provides the 28627@samp{tty} alias of the @samp{set inferior-tty} command. 28628 28629You can define a new alias with the @samp{alias} command. 28630 28631@table @code 28632 28633@kindex alias 28634@item alias [-a] [--] @var{alias} = @var{command} [@var{default-args}] 28635 28636@end table 28637 28638@var{alias} specifies the name of the new alias. Each word of 28639@var{alias} must consist of letters, numbers, dashes and underscores. 28640 28641@var{command} specifies the name of an existing command 28642that is being aliased. 28643 28644@var{command} can also be the name of an existing alias. In this 28645case, @var{command} cannot be an alias that has default arguments. 28646 28647The @samp{-a} option specifies that the new alias is an abbreviation 28648of the command. Abbreviations are not used in command completion. 28649 28650The @samp{--} option specifies the end of options, 28651and is useful when @var{alias} begins with a dash. 28652 28653You can specify @var{default-args} for your alias. These 28654@var{default-args} will be automatically added before the alias 28655arguments typed explicitly on the command line. 28656 28657For example, the below defines an alias @code{btfullall} that shows all local 28658variables and all frame arguments: 28659@smallexample 28660(@value{GDBP}) alias btfullall = backtrace -full -frame-arguments all 28661@end smallexample 28662 28663For more information about @var{default-args}, see @ref{Command 28664aliases default args, ,Default Arguments}. 28665 28666Here is a simple example showing how to make an abbreviation of a 28667command so that there is less to type. Suppose you were tired of 28668typing @samp{disas}, the current shortest unambiguous abbreviation of 28669the @samp{disassemble} command and you wanted an even shorter version 28670named @samp{di}. The following will accomplish this. 28671 28672@smallexample 28673(gdb) alias -a di = disas 28674@end smallexample 28675 28676Note that aliases are different from user-defined commands. With a 28677user-defined command, you also need to write documentation for it with 28678the @samp{document} command. An alias automatically picks up the 28679documentation of the existing command. 28680 28681Here is an example where we make @samp{elms} an abbreviation of 28682@samp{elements} in the @samp{set print elements} command. 28683This is to show that you can make an abbreviation of any part 28684of a command. 28685 28686@smallexample 28687(gdb) alias -a set print elms = set print elements 28688(gdb) alias -a show print elms = show print elements 28689(gdb) set p elms 200 28690(gdb) show p elms 28691Limit on string chars or array elements to print is 200. 28692@end smallexample 28693 28694Note that if you are defining an alias of a @samp{set} command, 28695and you want to have an alias for the corresponding @samp{show} 28696command, then you need to define the latter separately. 28697 28698Unambiguously abbreviated commands are allowed in @var{command} and 28699@var{alias}, just as they are normally. 28700 28701@smallexample 28702(gdb) alias -a set pr elms = set p ele 28703@end smallexample 28704 28705Finally, here is an example showing the creation of a one word 28706alias for a more complex command. 28707This creates alias @samp{spe} of the command @samp{set print elements}. 28708 28709@smallexample 28710(gdb) alias spe = set print elements 28711(gdb) spe 20 28712@end smallexample 28713 28714@menu 28715* Command aliases default args:: Default arguments for aliases 28716@end menu 28717 28718@node Command aliases default args 28719@subsection Default Arguments 28720@cindex aliases for commands, default arguments 28721 28722You can tell @value{GDBN} to always prepend some default arguments to 28723the list of arguments provided explicitly by the user when using a 28724user-defined alias. 28725 28726If you repeatedly use the same arguments or options for a command, you 28727can define an alias for this command and tell @value{GDBN} to 28728automatically prepend these arguments or options to the list of 28729arguments you type explicitly when using the alias@footnote{@value{GDBN} 28730could easily accept default arguments for pre-defined commands and aliases, 28731but it was deemed this would be confusing, and so is not allowed.}. 28732 28733For example, if you often use the command @code{thread apply all} 28734specifying to work on the threads in ascending order and to continue in case it 28735encounters an error, you can tell @value{GDBN} to automatically preprend 28736the @code{-ascending} and @code{-c} options by using: 28737 28738@smallexample 28739(@value{GDBP}) alias thread apply asc-all = thread apply all -ascending -c 28740@end smallexample 28741 28742Once you have defined this alias with its default args, any time you type 28743the @code{thread apply asc-all} followed by @code{some arguments}, 28744@value{GDBN} will execute @code{thread apply all -ascending -c some arguments}. 28745 28746To have even less to type, you can also define a one word alias: 28747@smallexample 28748(@value{GDBP}) alias t_a_c = thread apply all -ascending -c 28749@end smallexample 28750 28751As usual, unambiguous abbreviations can be used for @var{alias} 28752and @var{default-args}. 28753 28754The different aliases of a command do not share their default args. 28755For example, you define a new alias @code{bt_ALL} showing all possible 28756information and another alias @code{bt_SMALL} showing very limited information 28757using: 28758@smallexample 28759(@value{GDBP}) alias bt_ALL = backtrace -entry-values both -frame-arg all \ 28760 -past-main -past-entry -full 28761(@value{GDBP}) alias bt_SMALL = backtrace -entry-values no -frame-arg none \ 28762 -past-main off -past-entry off 28763@end smallexample 28764 28765(For more on using the @code{alias} command, see @ref{Aliases}.) 28766 28767Default args are not limited to the arguments and options of @var{command}, 28768but can specify nested commands if @var{command} accepts such a nested command 28769as argument. 28770For example, the below defines @code{faalocalsoftype} that lists the 28771frames having locals of a certain type, together with the matching 28772local vars: 28773@smallexample 28774(@value{GDBP}) alias faalocalsoftype = frame apply all info locals -q -t 28775(@value{GDBP}) faalocalsoftype int 28776#1 0x55554f5e in sleeper_or_burner (v=0xdf50) at sleepers.c:86 28777i = 0 28778ret = 21845 28779@end smallexample 28780 28781This is also very useful to define an alias for a set of nested @code{with} 28782commands to have a particular combination of temporary settings. For example, 28783the below defines the alias @code{pp10} that pretty prints an expression 28784argument, with a maximum of 10 elements if the expression is a string or 28785an array: 28786@smallexample 28787(@value{GDBP}) alias pp10 = with print pretty -- with print elements 10 -- print 28788@end smallexample 28789This defines the alias @code{pp10} as being a sequence of 3 commands. 28790The first part @code{with print pretty --} temporarily activates the setting 28791@code{set print pretty}, then launches the command that follows the separator 28792@code{--}. 28793The command following the first part is also a @code{with} command that 28794temporarily changes the setting @code{set print elements} to 10, then 28795launches the command that follows the second separator @code{--}. 28796The third part @code{print} is the command the @code{pp10} alias will launch, 28797using the temporary values of the settings and the arguments explicitly given 28798by the user. 28799For more information about the @code{with} command usage, 28800see @ref{Command Settings}. 28801 28802By default, asking the help for an alias shows the documentation of 28803the aliased command. When the alias is a set of nested commands, @code{help} 28804of an alias shows the documentation of the first command. This help 28805is not particularly useful for an alias such as @code{pp10}. 28806For such an alias, it is useful to give a specific documentation 28807using the @code{document} command (@pxref{Define, document}). 28808 28809 28810@c Python docs live in a separate file. 28811@include python.texi 28812 28813@c Guile docs live in a separate file. 28814@include guile.texi 28815 28816@node Auto-loading extensions 28817@section Auto-loading extensions 28818@cindex auto-loading extensions 28819 28820@value{GDBN} provides two mechanisms for automatically loading 28821extensions when a new object file is read (for example, due to the 28822@code{file} command, or because the inferior has loaded a shared 28823library): @file{@var{objfile}-gdb.@var{ext}} (@pxref{objfile-gdbdotext 28824file,,The @file{@var{objfile}-gdb.@var{ext}} file}) and the 28825@code{.debug_gdb_scripts} section of modern file formats like ELF 28826(@pxref{dotdebug_gdb_scripts section,,The @code{.debug_gdb_scripts} 28827section}). For a discussion of the differences between these two 28828approaches see @ref{Which flavor to choose?}. 28829 28830The auto-loading feature is useful for supplying application-specific 28831debugging commands and features. 28832 28833Auto-loading can be enabled or disabled, 28834and the list of auto-loaded scripts can be printed. 28835See the @samp{auto-loading} section of each extension language 28836for more information. 28837For @value{GDBN} command files see @ref{Auto-loading sequences}. 28838For Python files see @ref{Python Auto-loading}. 28839 28840Note that loading of this script file also requires accordingly configured 28841@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 28842 28843@menu 28844* objfile-gdbdotext file:: The @file{@var{objfile}-gdb.@var{ext}} file 28845* dotdebug_gdb_scripts section:: The @code{.debug_gdb_scripts} section 28846* Which flavor to choose?:: Choosing between these approaches 28847@end menu 28848 28849@node objfile-gdbdotext file 28850@subsection The @file{@var{objfile}-gdb.@var{ext}} file 28851@cindex @file{@var{objfile}-gdb.gdb} 28852@cindex @file{@var{objfile}-gdb.py} 28853@cindex @file{@var{objfile}-gdb.scm} 28854 28855When a new object file is read, @value{GDBN} looks for a file named 28856@file{@var{objfile}-gdb.@var{ext}} (we call it @var{script-name} below), 28857where @var{objfile} is the object file's name and 28858where @var{ext} is the file extension for the extension language: 28859 28860@table @code 28861@item @file{@var{objfile}-gdb.gdb} 28862GDB's own command language 28863@item @file{@var{objfile}-gdb.py} 28864Python 28865@item @file{@var{objfile}-gdb.scm} 28866Guile 28867@end table 28868 28869@var{script-name} is formed by ensuring that the file name of @var{objfile} 28870is absolute, following all symlinks, and resolving @code{.} and @code{..} 28871components, and appending the @file{-gdb.@var{ext}} suffix. 28872If this file exists and is readable, @value{GDBN} will evaluate it as a 28873script in the specified extension language. 28874 28875If this file does not exist, then @value{GDBN} will look for 28876@var{script-name} file in all of the directories as specified below. 28877(On MS-Windows/MS-DOS, the drive letter of the executable's leading 28878directories is converted to a one-letter subdirectory, i.e.@: 28879@file{d:/usr/bin/} is converted to @file{/d/usr/bin/}, because Windows 28880filesystems disallow colons in file names.) 28881 28882Note that loading of these files requires an accordingly configured 28883@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 28884 28885For object files using @file{.exe} suffix @value{GDBN} tries to load first the 28886scripts normally according to its @file{.exe} filename. But if no scripts are 28887found @value{GDBN} also tries script filenames matching the object file without 28888its @file{.exe} suffix. This @file{.exe} stripping is case insensitive and it 28889is attempted on any platform. This makes the script filenames compatible 28890between Unix and MS-Windows hosts. 28891 28892@table @code 28893@anchor{set auto-load scripts-directory} 28894@kindex set auto-load scripts-directory 28895@item set auto-load scripts-directory @r{[}@var{directories}@r{]} 28896Control @value{GDBN} auto-loaded scripts location. Multiple directory entries 28897may be delimited by the host platform path separator in use 28898(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS). 28899 28900Each entry here needs to be covered also by the security setting 28901@code{set auto-load safe-path} (@pxref{set auto-load safe-path}). 28902 28903@anchor{with-auto-load-dir} 28904This variable defaults to @file{$debugdir:$datadir/auto-load}. The default 28905@code{set auto-load safe-path} value can be also overriden by @value{GDBN} 28906configuration option @option{--with-auto-load-dir}. 28907 28908Any reference to @file{$debugdir} will get replaced by 28909@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any 28910reference to @file{$datadir} will get replaced by @var{data-directory} which is 28911determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and 28912@file{$datadir} must be placed as a directory component --- either alone or 28913delimited by @file{/} or @file{\} directory separators, depending on the host 28914platform. 28915 28916The list of directories uses path separator (@samp{:} on GNU and Unix 28917systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly 28918to the @env{PATH} environment variable. 28919 28920@anchor{show auto-load scripts-directory} 28921@kindex show auto-load scripts-directory 28922@item show auto-load scripts-directory 28923Show @value{GDBN} auto-loaded scripts location. 28924 28925@anchor{add-auto-load-scripts-directory} 28926@kindex add-auto-load-scripts-directory 28927@item add-auto-load-scripts-directory @r{[}@var{directories}@dots{}@r{]} 28928Add an entry (or list of entries) to the list of auto-loaded scripts locations. 28929Multiple entries may be delimited by the host platform path separator in use. 28930@end table 28931 28932@value{GDBN} does not track which files it has already auto-loaded this way. 28933@value{GDBN} will load the associated script every time the corresponding 28934@var{objfile} is opened. 28935So your @file{-gdb.@var{ext}} file should be careful to avoid errors if it 28936is evaluated more than once. 28937 28938@node dotdebug_gdb_scripts section 28939@subsection The @code{.debug_gdb_scripts} section 28940@cindex @code{.debug_gdb_scripts} section 28941 28942For systems using file formats like ELF and COFF, 28943when @value{GDBN} loads a new object file 28944it will look for a special section named @code{.debug_gdb_scripts}. 28945If this section exists, its contents is a list of null-terminated entries 28946specifying scripts to load. Each entry begins with a non-null prefix byte that 28947specifies the kind of entry, typically the extension language and whether the 28948script is in a file or inlined in @code{.debug_gdb_scripts}. 28949 28950The following entries are supported: 28951 28952@table @code 28953@item SECTION_SCRIPT_ID_PYTHON_FILE = 1 28954@item SECTION_SCRIPT_ID_SCHEME_FILE = 3 28955@item SECTION_SCRIPT_ID_PYTHON_TEXT = 4 28956@item SECTION_SCRIPT_ID_SCHEME_TEXT = 6 28957@end table 28958 28959@subsubsection Script File Entries 28960 28961If the entry specifies a file, @value{GDBN} will look for the file first 28962in the current directory and then along the source search path 28963(@pxref{Source Path, ,Specifying Source Directories}), 28964except that @file{$cdir} is not searched, since the compilation 28965directory is not relevant to scripts. 28966 28967File entries can be placed in section @code{.debug_gdb_scripts} with, 28968for example, this GCC macro for Python scripts. 28969 28970@example 28971/* Note: The "MS" section flags are to remove duplicates. */ 28972#define DEFINE_GDB_PY_SCRIPT(script_name) \ 28973 asm("\ 28974.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\ 28975.byte 1 /* Python */\n\ 28976.asciz \"" script_name "\"\n\ 28977.popsection \n\ 28978"); 28979@end example 28980 28981@noindent 28982For Guile scripts, replace @code{.byte 1} with @code{.byte 3}. 28983Then one can reference the macro in a header or source file like this: 28984 28985@example 28986DEFINE_GDB_PY_SCRIPT ("my-app-scripts.py") 28987@end example 28988 28989The script name may include directories if desired. 28990 28991Note that loading of this script file also requires accordingly configured 28992@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 28993 28994If the macro invocation is put in a header, any application or library 28995using this header will get a reference to the specified script, 28996and with the use of @code{"MS"} attributes on the section, the linker 28997will remove duplicates. 28998 28999@subsubsection Script Text Entries 29000 29001Script text entries allow to put the executable script in the entry 29002itself instead of loading it from a file. 29003The first line of the entry, everything after the prefix byte and up to 29004the first newline (@code{0xa}) character, is the script name, and must not 29005contain any kind of space character, e.g., spaces or tabs. 29006The rest of the entry, up to the trailing null byte, is the script to 29007execute in the specified language. The name needs to be unique among 29008all script names, as @value{GDBN} executes each script only once based 29009on its name. 29010 29011Here is an example from file @file{py-section-script.c} in the @value{GDBN} 29012testsuite. 29013 29014@example 29015#include "symcat.h" 29016#include "gdb/section-scripts.h" 29017asm( 29018".pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n" 29019".byte " XSTRING (SECTION_SCRIPT_ID_PYTHON_TEXT) "\n" 29020".ascii \"gdb.inlined-script\\n\"\n" 29021".ascii \"class test_cmd (gdb.Command):\\n\"\n" 29022".ascii \" def __init__ (self):\\n\"\n" 29023".ascii \" super (test_cmd, self).__init__ (" 29024 "\\\"test-cmd\\\", gdb.COMMAND_OBSCURE)\\n\"\n" 29025".ascii \" def invoke (self, arg, from_tty):\\n\"\n" 29026".ascii \" print (\\\"test-cmd output, arg = %s\\\" % arg)\\n\"\n" 29027".ascii \"test_cmd ()\\n\"\n" 29028".byte 0\n" 29029".popsection\n" 29030); 29031@end example 29032 29033Loading of inlined scripts requires a properly configured 29034@code{auto-load safe-path} (@pxref{Auto-loading safe path}). 29035The path to specify in @code{auto-load safe-path} is the path of the file 29036containing the @code{.debug_gdb_scripts} section. 29037 29038@node Which flavor to choose? 29039@subsection Which flavor to choose? 29040 29041Given the multiple ways of auto-loading extensions, it might not always 29042be clear which one to choose. This section provides some guidance. 29043 29044@noindent 29045Benefits of the @file{-gdb.@var{ext}} way: 29046 29047@itemize @bullet 29048@item 29049Can be used with file formats that don't support multiple sections. 29050 29051@item 29052Ease of finding scripts for public libraries. 29053 29054Scripts specified in the @code{.debug_gdb_scripts} section are searched for 29055in the source search path. 29056For publicly installed libraries, e.g., @file{libstdc++}, there typically 29057isn't a source directory in which to find the script. 29058 29059@item 29060Doesn't require source code additions. 29061@end itemize 29062 29063@noindent 29064Benefits of the @code{.debug_gdb_scripts} way: 29065 29066@itemize @bullet 29067@item 29068Works with static linking. 29069 29070Scripts for libraries done the @file{-gdb.@var{ext}} way require an objfile to 29071trigger their loading. When an application is statically linked the only 29072objfile available is the executable, and it is cumbersome to attach all the 29073scripts from all the input libraries to the executable's 29074@file{-gdb.@var{ext}} script. 29075 29076@item 29077Works with classes that are entirely inlined. 29078 29079Some classes can be entirely inlined, and thus there may not be an associated 29080shared library to attach a @file{-gdb.@var{ext}} script to. 29081 29082@item 29083Scripts needn't be copied out of the source tree. 29084 29085In some circumstances, apps can be built out of large collections of internal 29086libraries, and the build infrastructure necessary to install the 29087@file{-gdb.@var{ext}} scripts in a place where @value{GDBN} can find them is 29088cumbersome. It may be easier to specify the scripts in the 29089@code{.debug_gdb_scripts} section as relative paths, and add a path to the 29090top of the source tree to the source search path. 29091@end itemize 29092 29093@node Multiple Extension Languages 29094@section Multiple Extension Languages 29095 29096The Guile and Python extension languages do not share any state, 29097and generally do not interfere with each other. 29098There are some things to be aware of, however. 29099 29100@subsection Python comes first 29101 29102Python was @value{GDBN}'s first extension language, and to avoid breaking 29103existing behaviour Python comes first. This is generally solved by the 29104``first one wins'' principle. @value{GDBN} maintains a list of enabled 29105extension languages, and when it makes a call to an extension language, 29106(say to pretty-print a value), it tries each in turn until an extension 29107language indicates it has performed the request (e.g., has returned the 29108pretty-printed form of a value). 29109This extends to errors while performing such requests: If an error happens 29110while, for example, trying to pretty-print an object then the error is 29111reported and any following extension languages are not tried. 29112 29113@node Interpreters 29114@chapter Command Interpreters 29115@cindex command interpreters 29116 29117@value{GDBN} supports multiple command interpreters, and some command 29118infrastructure to allow users or user interface writers to switch 29119between interpreters or run commands in other interpreters. 29120 29121@value{GDBN} currently supports two command interpreters, the console 29122interpreter (sometimes called the command-line interpreter or @sc{cli}) 29123and the machine interface interpreter (or @sc{gdb/mi}). This manual 29124describes both of these interfaces in great detail. 29125 29126By default, @value{GDBN} will start with the console interpreter. 29127However, the user may choose to start @value{GDBN} with another 29128interpreter by specifying the @option{-i} or @option{--interpreter} 29129startup options. Defined interpreters include: 29130 29131@table @code 29132@item console 29133@cindex console interpreter 29134The traditional console or command-line interpreter. This is the most often 29135used interpreter with @value{GDBN}. With no interpreter specified at runtime, 29136@value{GDBN} will use this interpreter. 29137 29138@item mi 29139@cindex mi interpreter 29140The newest @sc{gdb/mi} interface (currently @code{mi3}). Used primarily 29141by programs wishing to use @value{GDBN} as a backend for a debugger GUI 29142or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi} 29143Interface}. 29144 29145@item mi3 29146@cindex mi3 interpreter 29147The @sc{gdb/mi} interface introduced in @value{GDBN} 9.1. 29148 29149@item mi2 29150@cindex mi2 interpreter 29151The @sc{gdb/mi} interface introduced in @value{GDBN} 6.0. 29152 29153@item mi1 29154@cindex mi1 interpreter 29155The @sc{gdb/mi} interface introduced in @value{GDBN} 5.1. 29156 29157@end table 29158 29159@cindex invoke another interpreter 29160 29161@kindex interpreter-exec 29162You may execute commands in any interpreter from the current 29163interpreter using the appropriate command. If you are running the 29164console interpreter, simply use the @code{interpreter-exec} command: 29165 29166@smallexample 29167interpreter-exec mi "-data-list-register-names" 29168@end smallexample 29169 29170@sc{gdb/mi} has a similar command, although it is only available in versions of 29171@value{GDBN} which support @sc{gdb/mi} version 2 (or greater). 29172 29173Note that @code{interpreter-exec} only changes the interpreter for the 29174duration of the specified command. It does not change the interpreter 29175permanently. 29176 29177@cindex start a new independent interpreter 29178 29179Although you may only choose a single interpreter at startup, it is 29180possible to run an independent interpreter on a specified input/output 29181device (usually a tty). 29182 29183For example, consider a debugger GUI or IDE that wants to provide a 29184@value{GDBN} console view. It may do so by embedding a terminal 29185emulator widget in its GUI, starting @value{GDBN} in the traditional 29186command-line mode with stdin/stdout/stderr redirected to that 29187terminal, and then creating an MI interpreter running on a specified 29188input/output device. The console interpreter created by @value{GDBN} 29189at startup handles commands the user types in the terminal widget, 29190while the GUI controls and synchronizes state with @value{GDBN} using 29191the separate MI interpreter. 29192 29193To start a new secondary @dfn{user interface} running MI, use the 29194@code{new-ui} command: 29195 29196@kindex new-ui 29197@cindex new user interface 29198@smallexample 29199new-ui @var{interpreter} @var{tty} 29200@end smallexample 29201 29202The @var{interpreter} parameter specifies the interpreter to run. 29203This accepts the same values as the @code{interpreter-exec} command. 29204For example, @samp{console}, @samp{mi}, @samp{mi2}, etc. The 29205@var{tty} parameter specifies the name of the bidirectional file the 29206interpreter uses for input/output, usually the name of a 29207pseudoterminal slave on Unix systems. For example: 29208 29209@smallexample 29210(@value{GDBP}) new-ui mi /dev/pts/9 29211@end smallexample 29212 29213@noindent 29214runs an MI interpreter on @file{/dev/pts/9}. 29215 29216@node TUI 29217@chapter @value{GDBN} Text User Interface 29218@cindex TUI 29219@cindex Text User Interface 29220 29221The @value{GDBN} Text User Interface (TUI) is a terminal 29222interface which uses the @code{curses} library to show the source 29223file, the assembly output, the program registers and @value{GDBN} 29224commands in separate text windows. The TUI mode is supported only 29225on platforms where a suitable version of the @code{curses} library 29226is available. 29227 29228The TUI mode is enabled by default when you invoke @value{GDBN} as 29229@samp{@value{GDBP} -tui}. 29230You can also switch in and out of TUI mode while @value{GDBN} runs by 29231using various TUI commands and key bindings, such as @command{tui 29232enable} or @kbd{C-x C-a}. @xref{TUI Commands, ,TUI Commands}, and 29233@ref{TUI Keys, ,TUI Key Bindings}. 29234 29235@menu 29236* TUI Overview:: TUI overview 29237* TUI Keys:: TUI key bindings 29238* TUI Single Key Mode:: TUI single key mode 29239* TUI Mouse Support:: TUI mouse support 29240* TUI Commands:: TUI-specific commands 29241* TUI Configuration:: TUI configuration variables 29242@end menu 29243 29244@node TUI Overview 29245@section TUI Overview 29246 29247In TUI mode, @value{GDBN} can display several text windows: 29248 29249@table @emph 29250@item command 29251This window is the @value{GDBN} command window with the @value{GDBN} 29252prompt and the @value{GDBN} output. The @value{GDBN} input is still 29253managed using readline. 29254 29255@item source 29256The source window shows the source file of the program. The current 29257line and active breakpoints are displayed in this window. 29258 29259@item assembly 29260The assembly window shows the disassembly output of the program. 29261 29262@item register 29263This window shows the processor registers. Registers are highlighted 29264when their values change. 29265@end table 29266 29267The source and assembly windows show the current program position by 29268highlighting the current line and marking it with a @samp{>} marker. 29269By default, source and assembly code styling is disabled for the 29270highlighted text, but you can enable it with the @code{set style 29271tui-current-position on} command. @xref{Output Styling}. 29272 29273Breakpoints are indicated with two markers. The first marker 29274indicates the breakpoint type: 29275 29276@table @code 29277@item B 29278Breakpoint which was hit at least once. 29279 29280@item b 29281Breakpoint which was never hit. 29282 29283@item H 29284Hardware breakpoint which was hit at least once. 29285 29286@item h 29287Hardware breakpoint which was never hit. 29288@end table 29289 29290The second marker indicates whether the breakpoint is enabled or not: 29291 29292@table @code 29293@item + 29294Breakpoint is enabled. 29295 29296@item - 29297Breakpoint is disabled. 29298@end table 29299 29300The source, assembly and register windows are updated when the current 29301thread changes, when the frame changes, or when the program counter 29302changes. 29303 29304These windows are not all visible at the same time. The command 29305window is always visible. The others can be arranged in several 29306layouts: 29307 29308@itemize @bullet 29309@item 29310source only, 29311 29312@item 29313assembly only, 29314 29315@item 29316source and assembly, 29317 29318@item 29319source and registers, or 29320 29321@item 29322assembly and registers. 29323@end itemize 29324 29325These are the standard layouts, but other layouts can be defined. 29326 29327A status line above the command window shows the following information: 29328 29329@table @emph 29330@item target 29331Indicates the current @value{GDBN} target. 29332(@pxref{Targets, ,Specifying a Debugging Target}). 29333 29334@item process 29335Gives the current process or thread number. 29336When no process is being debugged, this field is set to @code{No process}. 29337 29338@item function 29339Gives the current function name for the selected frame. 29340The name is demangled if demangling is turned on (@pxref{Print Settings}). 29341When there is no symbol corresponding to the current program counter, 29342the string @code{??} is displayed. 29343 29344@item line 29345Indicates the current line number for the selected frame. 29346When the current line number is not known, the string @code{??} is displayed. 29347 29348@item pc 29349Indicates the current program counter address. 29350@end table 29351 29352@node TUI Keys 29353@section TUI Key Bindings 29354@cindex TUI key bindings 29355 29356The TUI installs several key bindings in the readline keymaps 29357@ifset SYSTEM_READLINE 29358(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}). 29359@end ifset 29360@ifclear SYSTEM_READLINE 29361(@pxref{Command Line Editing}). 29362@end ifclear 29363The following key bindings are installed for both TUI mode and the 29364@value{GDBN} standard mode. 29365 29366@table @kbd 29367@kindex C-x C-a 29368@item C-x C-a 29369@kindex C-x a 29370@itemx C-x a 29371@kindex C-x A 29372@itemx C-x A 29373Enter or leave the TUI mode. When leaving the TUI mode, 29374the curses window management stops and @value{GDBN} operates using 29375its standard mode, writing on the terminal directly. When reentering 29376the TUI mode, control is given back to the curses windows. 29377The screen is then refreshed. 29378 29379This key binding uses the bindable Readline function 29380@code{tui-switch-mode}. 29381 29382@kindex C-x 1 29383@item C-x 1 29384Use a TUI layout with only one window. The layout will 29385either be @samp{source} or @samp{assembly}. When the TUI mode 29386is not active, it will switch to the TUI mode. 29387 29388Think of this key binding as the Emacs @kbd{C-x 1} binding. 29389 29390This key binding uses the bindable Readline function 29391@code{tui-delete-other-windows}. 29392 29393@kindex C-x 2 29394@item C-x 2 29395Use a TUI layout with at least two windows. When the current 29396layout already has two windows, the next layout with two windows is used. 29397When a new layout is chosen, one window will always be common to the 29398previous layout and the new one. 29399 29400Think of it as the Emacs @kbd{C-x 2} binding. 29401 29402This key binding uses the bindable Readline function 29403@code{tui-change-windows}. 29404 29405@kindex C-x o 29406@item C-x o 29407Change the active window. The TUI associates several key bindings 29408(like scrolling and arrow keys) with the active window. This command 29409gives the focus to the next TUI window. 29410 29411Think of it as the Emacs @kbd{C-x o} binding. 29412 29413This key binding uses the bindable Readline function 29414@code{tui-other-window}. 29415 29416@kindex C-x s 29417@item C-x s 29418Switch in and out of the TUI SingleKey mode that binds single 29419keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}). 29420 29421This key binding uses the bindable Readline function 29422@code{next-keymap}. 29423@end table 29424 29425The following key bindings only work in the TUI mode: 29426 29427@table @asis 29428@kindex PgUp 29429@item @key{PgUp} 29430Scroll the active window one page up. 29431 29432@kindex PgDn 29433@item @key{PgDn} 29434Scroll the active window one page down. 29435 29436@kindex Up 29437@item @key{Up} 29438Scroll the active window one line up. 29439 29440@kindex Down 29441@item @key{Down} 29442Scroll the active window one line down. 29443 29444@kindex Left 29445@item @key{Left} 29446Scroll the active window one column left. 29447 29448@kindex Right 29449@item @key{Right} 29450Scroll the active window one column right. 29451 29452@kindex C-L 29453@item @kbd{C-L} 29454Refresh the screen. 29455@end table 29456 29457Because the arrow keys scroll the active window in the TUI mode, they 29458are not available for their normal use by readline unless the command 29459window has the focus. When another window is active, you must use 29460other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b} 29461and @kbd{C-f} to control the command window. 29462 29463@node TUI Single Key Mode 29464@section TUI Single Key Mode 29465@cindex TUI single key mode 29466 29467The TUI also provides a @dfn{SingleKey} mode, which binds several 29468frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to 29469switch into this mode, where the following key bindings are used: 29470 29471@table @kbd 29472@kindex c @r{(SingleKey TUI key)} 29473@item c 29474continue 29475 29476@kindex d @r{(SingleKey TUI key)} 29477@item d 29478down 29479 29480@kindex f @r{(SingleKey TUI key)} 29481@item f 29482finish 29483 29484@kindex n @r{(SingleKey TUI key)} 29485@item n 29486next 29487 29488@kindex o @r{(SingleKey TUI key)} 29489@item o 29490nexti. The shortcut letter @samp{o} stands for ``step Over''. 29491 29492@kindex q @r{(SingleKey TUI key)} 29493@item q 29494exit the SingleKey mode. 29495 29496@kindex r @r{(SingleKey TUI key)} 29497@item r 29498run 29499 29500@kindex s @r{(SingleKey TUI key)} 29501@item s 29502step 29503 29504@kindex i @r{(SingleKey TUI key)} 29505@item i 29506stepi. The shortcut letter @samp{i} stands for ``step Into''. 29507 29508@kindex u @r{(SingleKey TUI key)} 29509@item u 29510up 29511 29512@kindex v @r{(SingleKey TUI key)} 29513@item v 29514info locals 29515 29516@kindex w @r{(SingleKey TUI key)} 29517@item w 29518where 29519@end table 29520 29521Other keys temporarily switch to the @value{GDBN} command prompt. 29522The key that was pressed is inserted in the editing buffer so that 29523it is possible to type most @value{GDBN} commands without interaction 29524with the TUI SingleKey mode. Once the command is entered the TUI 29525SingleKey mode is restored. The only way to permanently leave 29526this mode is by typing @kbd{q} or @kbd{C-x s}. 29527 29528@cindex SingleKey keymap name 29529If @value{GDBN} was built with Readline 8.0 or later, the TUI 29530SingleKey keymap will be named @samp{SingleKey}. This can be used in 29531@file{.inputrc} to add additional bindings to this keymap. 29532 29533@node TUI Mouse Support 29534@section TUI Mouse Support 29535@cindex TUI mouse support 29536 29537If the curses library supports the mouse, the TUI supports mouse 29538actions. 29539 29540The mouse wheel scrolls the appropriate window under the mouse cursor. 29541 29542The TUI itself does not directly support copying/pasting with the 29543mouse. However, on Unix terminals, you can typically press and hold 29544the @key{SHIFT} key on your keyboard to temporarily bypass 29545@value{GDBN}'s TUI and access the terminal's native mouse copy/paste 29546functionality (commonly, click-drag-release or double-click to select 29547text, middle-click to paste). This copy/paste works with the 29548terminal's selection buffer, as opposed to the TUI's buffer. 29549 29550@node TUI Commands 29551@section TUI-specific Commands 29552@cindex TUI commands 29553 29554The TUI has specific commands to control the text windows. 29555These commands are always available, even when @value{GDBN} is not in 29556the TUI mode. When @value{GDBN} is in the standard mode, most 29557of these commands will automatically switch to the TUI mode. 29558 29559Note that if @value{GDBN}'s @code{stdout} is not connected to a 29560terminal, or @value{GDBN} has been started with the machine interface 29561interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of 29562these commands will fail with an error, because it would not be 29563possible or desirable to enable curses window management. 29564 29565@table @code 29566@item tui enable 29567@kindex tui enable 29568Activate TUI mode. The last active TUI window layout will be used if 29569TUI mode has previously been used in the current debugging session, 29570otherwise a default layout is used. 29571 29572@item tui disable 29573@kindex tui disable 29574Disable TUI mode, returning to the console interpreter. 29575 29576@anchor{info_win_command} 29577@item info win 29578@kindex info win 29579List the names and sizes of all currently displayed windows. 29580 29581@item tui new-layout @var{name} @var{window} @var{weight} @r{[}@var{window} @var{weight}@dots{}@r{]} 29582@kindex tui new-layout 29583Create a new TUI layout. The new layout will be named @var{name}, and 29584can be accessed using the @code{layout} command (see below). 29585 29586Each @var{window} parameter is either the name of a window to display, 29587or a window description. The windows will be displayed from top to 29588bottom in the order listed. 29589 29590The names of the windows are the same as the ones given to the 29591@code{focus} command (see below); additional, the @code{status} 29592window can be specified. Note that, because it is of fixed height, 29593the weight assigned to the status window is of no importance. It is 29594conventional to use @samp{0} here. 29595 29596A window description looks a bit like an invocation of @code{tui 29597new-layout}, and is of the form 29598@{@r{[}@code{-horizontal}@r{]}@var{window} @var{weight} @r{[}@var{window} @var{weight}@dots{}@r{]}@}. 29599 29600This specifies a sub-layout. If @code{-horizontal} is given, the 29601windows in this description will be arranged side-by-side, rather than 29602top-to-bottom. 29603 29604Each @var{weight} is an integer. It is the weight of this window 29605relative to all the other windows in the layout. These numbers are 29606used to calculate how much of the screen is given to each window. 29607 29608For example: 29609 29610@example 29611(gdb) tui new-layout example src 1 regs 1 status 0 cmd 1 29612@end example 29613 29614Here, the new layout is called @samp{example}. It shows the source 29615and register windows, followed by the status window, and then finally 29616the command window. The non-status windows all have the same weight, 29617so the terminal will be split into three roughly equal sections. 29618 29619Here is a more complex example, showing a horizontal layout: 29620 29621@example 29622(gdb) tui new-layout example @{-horizontal src 1 asm 1@} 2 status 0 cmd 1 29623@end example 29624 29625This will result in side-by-side source and assembly windows; with the 29626status and command window being beneath these, filling the entire 29627width of the terminal. Because they have weight 2, the source and 29628assembly windows will be twice the height of the command window. 29629 29630@kindex tui layout 29631@kindex layout 29632@item tui layout @var{name} 29633@itemx layout @var{name} 29634Changes which TUI windows are displayed. The @var{name} parameter 29635controls which layout is shown. It can be either one of the built-in 29636layout names, or the name of a layout defined by the user using 29637@code{tui new-layout}. 29638 29639The built-in layouts are as follows: 29640 29641@table @code 29642@item next 29643Display the next layout. 29644 29645@item prev 29646Display the previous layout. 29647 29648@item src 29649Display the source and command windows. 29650 29651@item asm 29652Display the assembly and command windows. 29653 29654@item split 29655Display the source, assembly, and command windows. 29656 29657@item regs 29658When in @code{src} layout display the register, source, and command 29659windows. When in @code{asm} or @code{split} layout display the 29660register, assembler, and command windows. 29661@end table 29662 29663@kindex focus 29664@item tui focus @var{name} 29665@itemx focus @var{name} 29666Changes which TUI window is currently active for scrolling. The 29667@var{name} parameter can be any of the following: 29668 29669@table @code 29670@item next 29671Make the next window active for scrolling. 29672 29673@item prev 29674Make the previous window active for scrolling. 29675 29676@item src 29677Make the source window active for scrolling. 29678 29679@item asm 29680Make the assembly window active for scrolling. 29681 29682@item regs 29683Make the register window active for scrolling. 29684 29685@item cmd 29686Make the command window active for scrolling. 29687@end table 29688 29689@kindex tui refresh 29690@kindex refresh 29691@item tui refresh 29692@itemx refresh 29693Refresh the screen. This is similar to typing @kbd{C-L}. 29694 29695@item tui reg @var{group} 29696@kindex tui reg 29697Changes the register group displayed in the tui register window to 29698@var{group}. If the register window is not currently displayed this 29699command will cause the register window to be displayed. The list of 29700register groups, as well as their order is target specific. The 29701following groups are available on most targets: 29702@table @code 29703@item next 29704Repeatedly selecting this group will cause the display to cycle 29705through all of the available register groups. 29706 29707@item prev 29708Repeatedly selecting this group will cause the display to cycle 29709through all of the available register groups in the reverse order to 29710@var{next}. 29711 29712@item general 29713Display the general registers. 29714@item float 29715Display the floating point registers. 29716@item system 29717Display the system registers. 29718@item vector 29719Display the vector registers. 29720@item all 29721Display all registers. 29722@end table 29723 29724@item update 29725@kindex update 29726Update the source window and the current execution point. 29727 29728@kindex tui window height 29729@kindex winheight 29730@item tui window height @var{name} +@var{count} 29731@itemx tui window height @var{name} -@var{count} 29732@itemx winheight @var{name} +@var{count} 29733@itemx winheight @var{name} -@var{count} 29734Change the height of the window @var{name} by @var{count} lines. 29735Positive counts increase the height, while negative counts decrease 29736it. The @var{name} parameter can be the name of any currently visible 29737window. The names of the currently visible windows can be discovered 29738using @kbd{info win} (@pxref{info_win_command,,info win}). 29739 29740The set of currently visible windows must always fill the terminal, 29741and so, it is only possible to resize on window if there are other 29742visible windows that can either give or receive the extra terminal 29743space. 29744 29745@kindex tui window width 29746@kindex winwidth 29747@item tui window width @var{name} +@var{count} 29748@itemx tui window width @var{name} -@var{count} 29749@itemx winwidth @var{name} +@var{count} 29750@itemx winwidth @var{name} -@var{count} 29751Change the width of the window @var{name} by @var{count} columns. 29752Positive counts increase the width, while negative counts decrease it. 29753The @var{name} parameter can be the name of any currently visible 29754window. The names of the currently visible windows can be discovered 29755using @code{info win} (@pxref{info_win_command,,info win}). 29756 29757The set of currently visible windows must always fill the terminal, 29758and so, it is only possible to resize on window if there are other 29759visible windows that can either give or receive the extra terminal 29760space. 29761@end table 29762 29763@node TUI Configuration 29764@section TUI Configuration Variables 29765@cindex TUI configuration variables 29766 29767Several configuration variables control the appearance of TUI windows. 29768 29769@table @code 29770@item set tui border-kind @var{kind} 29771@kindex set tui border-kind 29772Select the border appearance for the source, assembly and register windows. 29773The possible values are the following: 29774@table @code 29775@item space 29776Use a space character to draw the border. 29777 29778@item ascii 29779Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border. 29780 29781@item acs 29782Use the Alternate Character Set to draw the border. The border is 29783drawn using character line graphics if the terminal supports them. 29784@end table 29785 29786@item set tui border-mode @var{mode} 29787@kindex set tui border-mode 29788@itemx set tui active-border-mode @var{mode} 29789@kindex set tui active-border-mode 29790Select the display attributes for the borders of the inactive windows 29791or the active window. The @var{mode} can be one of the following: 29792@table @code 29793@item normal 29794Use normal attributes to display the border. 29795 29796@item standout 29797Use standout mode. 29798 29799@item reverse 29800Use reverse video mode. 29801 29802@item half 29803Use half bright mode. 29804 29805@item half-standout 29806Use half bright and standout mode. 29807 29808@item bold 29809Use extra bright or bold mode. 29810 29811@item bold-standout 29812Use extra bright or bold and standout mode. 29813@end table 29814 29815@item set tui tab-width @var{nchars} 29816@kindex set tui tab-width 29817@kindex tabset 29818Set the width of tab stops to be @var{nchars} characters. This 29819setting affects the display of TAB characters in the source and 29820assembly windows. 29821 29822@item set tui compact-source @r{[}on@r{|}off@r{]} 29823@kindex set tui compact-source 29824Set whether the TUI source window is displayed in ``compact'' form. 29825The default display uses more space for line numbers and starts the 29826source text at the next tab stop; the compact display uses only as 29827much space as is needed for the line numbers in the current file, and 29828only a single space to separate the line numbers from the source. 29829 29830@kindex set debug tui 29831@item set debug tui @r{[}on|off@r{]} 29832Turn on or off display of @value{GDBN} internal debug messages relating 29833to the TUI. 29834 29835@kindex show debug tui 29836@item show debug tui 29837Show the current status of displaying @value{GDBN} internal debug 29838messages relating to the TUI. 29839 29840@end table 29841 29842Note that the colors of the TUI borders can be controlled using the 29843appropriate @code{set style} commands. @xref{Output Styling}. 29844 29845@node Emacs 29846@chapter Using @value{GDBN} under @sc{gnu} Emacs 29847 29848@cindex Emacs 29849@cindex @sc{gnu} Emacs 29850A special interface allows you to use @sc{gnu} Emacs to view (and 29851edit) the source files for the program you are debugging with 29852@value{GDBN}. 29853 29854To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the 29855executable file you want to debug as an argument. This command starts 29856@value{GDBN} as a subprocess of Emacs, with input and output through a newly 29857created Emacs buffer. 29858@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.) 29859 29860Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two 29861things: 29862 29863@itemize @bullet 29864@item 29865All ``terminal'' input and output goes through an Emacs buffer, called 29866the GUD buffer. 29867 29868This applies both to @value{GDBN} commands and their output, and to the input 29869and output done by the program you are debugging. 29870 29871This is useful because it means that you can copy the text of previous 29872commands and input them again; you can even use parts of the output 29873in this way. 29874 29875All the facilities of Emacs' Shell mode are available for interacting 29876with your program. In particular, you can send signals the usual 29877way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a 29878stop. 29879 29880@item 29881@value{GDBN} displays source code through Emacs. 29882 29883Each time @value{GDBN} displays a stack frame, Emacs automatically finds the 29884source file for that frame and puts an arrow (@samp{=>}) at the 29885left margin of the current line. Emacs uses a separate buffer for 29886source display, and splits the screen to show both your @value{GDBN} session 29887and the source. 29888 29889Explicit @value{GDBN} @code{list} or search commands still produce output as 29890usual, but you probably have no reason to use them from Emacs. 29891@end itemize 29892 29893We call this @dfn{text command mode}. Emacs 22.1, and later, also uses 29894a graphical mode, enabled by default, which provides further buffers 29895that can control the execution and describe the state of your program. 29896@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}. 29897 29898If you specify an absolute file name when prompted for the @kbd{M-x 29899gdb} argument, then Emacs sets your current working directory to where 29900your program resides. If you only specify the file name, then Emacs 29901sets your current working directory to the directory associated 29902with the previous buffer. In this case, @value{GDBN} may find your 29903program by searching your environment's @env{PATH} variable, but on 29904some operating systems it might not find the source. So, although the 29905@value{GDBN} input and output session proceeds normally, the auxiliary 29906buffer does not display the current source and line of execution. 29907 29908The initial working directory of @value{GDBN} is printed on the top 29909line of the GUD buffer and this serves as a default for the commands 29910that specify files for @value{GDBN} to operate on. @xref{Files, 29911,Commands to Specify Files}. 29912 29913By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you 29914need to call @value{GDBN} by a different name (for example, if you 29915keep several configurations around, with different names) you can 29916customize the Emacs variable @code{gud-gdb-command-name} to run the 29917one you want. 29918 29919In the GUD buffer, you can use these special Emacs commands in 29920addition to the standard Shell mode commands: 29921 29922@table @kbd 29923@item C-h m 29924Describe the features of Emacs' GUD Mode. 29925 29926@item C-c C-s 29927Execute to another source line, like the @value{GDBN} @code{step} command; also 29928update the display window to show the current file and location. 29929 29930@item C-c C-n 29931Execute to next source line in this function, skipping all function 29932calls, like the @value{GDBN} @code{next} command. Then update the display window 29933to show the current file and location. 29934 29935@item C-c C-i 29936Execute one instruction, like the @value{GDBN} @code{stepi} command; update 29937display window accordingly. 29938 29939@item C-c C-f 29940Execute until exit from the selected stack frame, like the @value{GDBN} 29941@code{finish} command. 29942 29943@item C-c C-r 29944Continue execution of your program, like the @value{GDBN} @code{continue} 29945command. 29946 29947@item C-c < 29948Go up the number of frames indicated by the numeric argument 29949(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}), 29950like the @value{GDBN} @code{up} command. 29951 29952@item C-c > 29953Go down the number of frames indicated by the numeric argument, like the 29954@value{GDBN} @code{down} command. 29955@end table 29956 29957In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break}) 29958tells @value{GDBN} to set a breakpoint on the source line point is on. 29959 29960In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a 29961separate frame which shows a backtrace when the GUD buffer is current. 29962Move point to any frame in the stack and type @key{RET} to make it 29963become the current frame and display the associated source in the 29964source buffer. Alternatively, click @kbd{Mouse-2} to make the 29965selected frame become the current one. In graphical mode, the 29966speedbar displays watch expressions. 29967 29968If you accidentally delete the source-display buffer, an easy way to get 29969it back is to type the command @code{f} in the @value{GDBN} buffer, to 29970request a frame display; when you run under Emacs, this recreates 29971the source buffer if necessary to show you the context of the current 29972frame. 29973 29974The source files displayed in Emacs are in ordinary Emacs buffers 29975which are visiting the source files in the usual way. You can edit 29976the files with these buffers if you wish; but keep in mind that @value{GDBN} 29977communicates with Emacs in terms of line numbers. If you add or 29978delete lines from the text, the line numbers that @value{GDBN} knows cease 29979to correspond properly with the code. 29980 29981A more detailed description of Emacs' interaction with @value{GDBN} is 29982given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu} 29983Emacs Manual}). 29984 29985@node GDB/MI 29986@chapter The @sc{gdb/mi} Interface 29987 29988@unnumberedsec Function and Purpose 29989 29990@cindex @sc{gdb/mi}, its purpose 29991@sc{gdb/mi} is a line based machine oriented text interface to 29992@value{GDBN} and is activated by specifying using the 29993@option{--interpreter} command line option (@pxref{Mode Options}). It 29994is specifically intended to support the development of systems which 29995use the debugger as just one small component of a larger system. 29996 29997This chapter is a specification of the @sc{gdb/mi} interface. It is written 29998in the form of a reference manual. 29999 30000Note that @sc{gdb/mi} is still under construction, so some of the 30001features described below are incomplete and subject to change 30002(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}). 30003 30004@unnumberedsec Notation and Terminology 30005 30006@cindex notational conventions, for @sc{gdb/mi} 30007This chapter uses the following notation: 30008 30009@itemize @bullet 30010@item 30011@code{|} separates two alternatives. 30012 30013@item 30014@code{[ @var{something} ]} indicates that @var{something} is optional: 30015it may or may not be given. 30016 30017@item 30018@code{( @var{group} )*} means that @var{group} inside the parentheses 30019may repeat zero or more times. 30020 30021@item 30022@code{( @var{group} )+} means that @var{group} inside the parentheses 30023may repeat one or more times. 30024 30025@item 30026@code{( @var{group} )} means that @var{group} inside the parentheses 30027occurs exactly once. 30028 30029@item 30030@code{"@var{string}"} means a literal @var{string}. 30031@end itemize 30032 30033@ignore 30034@heading Dependencies 30035@end ignore 30036 30037@menu 30038* GDB/MI General Design:: 30039* GDB/MI Command Syntax:: 30040* GDB/MI Compatibility with CLI:: 30041* GDB/MI Development and Front Ends:: 30042* GDB/MI Output Records:: 30043* GDB/MI Simple Examples:: 30044* GDB/MI Command Description Format:: 30045* GDB/MI Breakpoint Commands:: 30046* GDB/MI Catchpoint Commands:: 30047* GDB/MI Program Context:: 30048* GDB/MI Thread Commands:: 30049* GDB/MI Ada Tasking Commands:: 30050* GDB/MI Program Execution:: 30051* GDB/MI Stack Manipulation:: 30052* GDB/MI Variable Objects:: 30053* GDB/MI Data Manipulation:: 30054* GDB/MI Tracepoint Commands:: 30055* GDB/MI Symbol Query:: 30056* GDB/MI File Commands:: 30057@ignore 30058* GDB/MI Kod Commands:: 30059* GDB/MI Memory Overlay Commands:: 30060* GDB/MI Signal Handling Commands:: 30061@end ignore 30062* GDB/MI Target Manipulation:: 30063* GDB/MI File Transfer Commands:: 30064* GDB/MI Ada Exceptions Commands:: 30065* GDB/MI Support Commands:: 30066* GDB/MI Miscellaneous Commands:: 30067@end menu 30068 30069@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30070@node GDB/MI General Design 30071@section @sc{gdb/mi} General Design 30072@cindex GDB/MI General Design 30073 30074Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three 30075parts---commands sent to @value{GDBN}, responses to those commands 30076and notifications. Each command results in exactly one response, 30077indicating either successful completion of the command, or an error. 30078For the commands that do not resume the target, the response contains the 30079requested information. For the commands that resume the target, the 30080response only indicates whether the target was successfully resumed. 30081Notifications is the mechanism for reporting changes in the state of the 30082target, or in @value{GDBN} state, that cannot conveniently be associated with 30083a command and reported as part of that command response. 30084 30085The important examples of notifications are: 30086@itemize @bullet 30087 30088@item 30089Exec notifications. These are used to report changes in 30090target state---when a target is resumed, or stopped. It would not 30091be feasible to include this information in response of resuming 30092commands, because one resume commands can result in multiple events in 30093different threads. Also, quite some time may pass before any event 30094happens in the target, while a frontend needs to know whether the resuming 30095command itself was successfully executed. 30096 30097@item 30098Console output, and status notifications. Console output 30099notifications are used to report output of CLI commands, as well as 30100diagnostics for other commands. Status notifications are used to 30101report the progress of a long-running operation. Naturally, including 30102this information in command response would mean no output is produced 30103until the command is finished, which is undesirable. 30104 30105@item 30106General notifications. Commands may have various side effects on 30107the @value{GDBN} or target state beyond their official purpose. For example, 30108a command may change the selected thread. Although such changes can 30109be included in command response, using notification allows for more 30110orthogonal frontend design. 30111 30112@end itemize 30113 30114There's no guarantee that whenever an MI command reports an error, 30115@value{GDBN} or the target are in any specific state, and especially, 30116the state is not reverted to the state before the MI command was 30117processed. Therefore, whenever an MI command results in an error, 30118we recommend that the frontend refreshes all the information shown in 30119the user interface. 30120 30121 30122@menu 30123* Context management:: 30124* Asynchronous and non-stop modes:: 30125* Thread groups:: 30126@end menu 30127 30128@node Context management 30129@subsection Context management 30130 30131@subsubsection Threads and Frames 30132 30133In most cases when @value{GDBN} accesses the target, this access is 30134done in context of a specific thread and frame (@pxref{Frames}). 30135Often, even when accessing global data, the target requires that a thread 30136be specified. The CLI interface maintains the selected thread and frame, 30137and supplies them to target on each command. This is convenient, 30138because a command line user would not want to specify that information 30139explicitly on each command, and because user interacts with 30140@value{GDBN} via a single terminal, so no confusion is possible as 30141to what thread and frame are the current ones. 30142 30143In the case of MI, the concept of selected thread and frame is less 30144useful. First, a frontend can easily remember this information 30145itself. Second, a graphical frontend can have more than one window, 30146each one used for debugging a different thread, and the frontend might 30147want to access additional threads for internal purposes. This 30148increases the risk that by relying on implicitly selected thread, the 30149frontend may be operating on a wrong one. Therefore, each MI command 30150should explicitly specify which thread and frame to operate on. To 30151make it possible, each MI command accepts the @samp{--thread} and 30152@samp{--frame} options, the value to each is @value{GDBN} global 30153identifier for thread and frame to operate on. 30154 30155Usually, each top-level window in a frontend allows the user to select 30156a thread and a frame, and remembers the user selection for further 30157operations. However, in some cases @value{GDBN} may suggest that the 30158current thread or frame be changed. For example, when stopping on a 30159breakpoint it is reasonable to switch to the thread where breakpoint is 30160hit. For another example, if the user issues the CLI @samp{thread} or 30161@samp{frame} commands via the frontend, it is desirable to change the 30162frontend's selection to the one specified by user. @value{GDBN} 30163communicates the suggestion to change current thread and frame using the 30164@samp{=thread-selected} notification. 30165 30166Note that historically, MI shares the selected thread with CLI, so 30167frontends used the @code{-thread-select} to execute commands in the 30168right context. However, getting this to work right is cumbersome. The 30169simplest way is for frontend to emit @code{-thread-select} command 30170before every command. This doubles the number of commands that need 30171to be sent. The alternative approach is to suppress @code{-thread-select} 30172if the selected thread in @value{GDBN} is supposed to be identical to the 30173thread the frontend wants to operate on. However, getting this 30174optimization right can be tricky. In particular, if the frontend 30175sends several commands to @value{GDBN}, and one of the commands changes the 30176selected thread, then the behaviour of subsequent commands will 30177change. So, a frontend should either wait for response from such 30178problematic commands, or explicitly add @code{-thread-select} for 30179all subsequent commands. No frontend is known to do this exactly 30180right, so it is suggested to just always pass the @samp{--thread} and 30181@samp{--frame} options. 30182 30183@subsubsection Language 30184 30185The execution of several commands depends on which language is selected. 30186By default, the current language (@pxref{show language}) is used. 30187But for commands known to be language-sensitive, it is recommended 30188to use the @samp{--language} option. This option takes one argument, 30189which is the name of the language to use while executing the command. 30190For instance: 30191 30192@smallexample 30193-data-evaluate-expression --language c "sizeof (void*)" 30194^done,value="4" 30195(gdb) 30196@end smallexample 30197 30198The valid language names are the same names accepted by the 30199@samp{set language} command (@pxref{Manually}), excluding @samp{auto}, 30200@samp{local} or @samp{unknown}. 30201 30202@node Asynchronous and non-stop modes 30203@subsection Asynchronous command execution and non-stop mode 30204 30205On some targets, @value{GDBN} is capable of processing MI commands 30206even while the target is running. This is called @dfn{asynchronous 30207command execution} (@pxref{Background Execution}). The frontend may 30208specify a preference for asynchronous execution using the 30209@code{-gdb-set mi-async 1} command, which should be emitted before 30210either running the executable or attaching to the target. After the 30211frontend has started the executable or attached to the target, it can 30212find if asynchronous execution is enabled using the 30213@code{-list-target-features} command. 30214 30215@table @code 30216@cindex foreground execution 30217@cindex background execution 30218@cindex asynchronous execution 30219@cindex execution, foreground, background and asynchronous 30220@kindex set mi-async 30221@item -gdb-set mi-async @r{[}on@r{|}off@r{]} 30222Set whether MI is in asynchronous mode. 30223 30224When @code{off}, which is the default, MI execution commands (e.g., 30225@code{-exec-continue}) are foreground commands, and @value{GDBN} waits 30226for the program to stop before processing further commands. 30227 30228When @code{on}, MI execution commands are background execution 30229commands (e.g., @code{-exec-continue} becomes the equivalent of the 30230@code{c&} CLI command), and so @value{GDBN} is capable of processing 30231MI commands even while the target is running. 30232 30233@kindex show mi-async 30234@item -gdb-show mi-async 30235Show whether MI asynchronous mode is enabled. 30236@end table 30237 30238Note: In @value{GDBN} version 7.7 and earlier, this option was called 30239@code{target-async} instead of @code{mi-async}, and it had the effect 30240of both putting MI in asynchronous mode and making CLI background 30241commands possible. CLI background commands are now always possible 30242``out of the box'' if the target supports them. The old spelling is 30243kept as a deprecated alias for backwards compatibility. 30244 30245Even if @value{GDBN} can accept a command while target is running, 30246many commands that access the target do not work when the target is 30247running. Therefore, asynchronous command execution is most useful 30248when combined with non-stop mode (@pxref{Non-Stop Mode}). Then, 30249it is possible to examine the state of one thread, while other threads 30250are running. 30251 30252When a given thread is running, MI commands that try to access the 30253target in the context of that thread may not work, or may work only on 30254some targets. In particular, commands that try to operate on thread's 30255stack will not work, on any target. Commands that read memory, or 30256modify breakpoints, may work or not work, depending on the target. Note 30257that even commands that operate on global state, such as @code{print}, 30258@code{set}, and breakpoint commands, still access the target in the 30259context of a specific thread, so frontend should try to find a 30260stopped thread and perform the operation on that thread (using the 30261@samp{--thread} option). 30262 30263Which commands will work in the context of a running thread is 30264highly target dependent. However, the two commands 30265@code{-exec-interrupt}, to stop a thread, and @code{-thread-info}, 30266to find the state of a thread, will always work. 30267 30268@node Thread groups 30269@subsection Thread groups 30270@value{GDBN} may be used to debug several processes at the same time. 30271On some platforms, @value{GDBN} may support debugging of several 30272hardware systems, each one having several cores with several different 30273processes running on each core. This section describes the MI 30274mechanism to support such debugging scenarios. 30275 30276The key observation is that regardless of the structure of the 30277target, MI can have a global list of threads, because most commands that 30278accept the @samp{--thread} option do not need to know what process that 30279thread belongs to. Therefore, it is not necessary to introduce 30280neither additional @samp{--process} option, nor an notion of the 30281current process in the MI interface. The only strictly new feature 30282that is required is the ability to find how the threads are grouped 30283into processes. 30284 30285To allow the user to discover such grouping, and to support arbitrary 30286hierarchy of machines/cores/processes, MI introduces the concept of a 30287@dfn{thread group}. Thread group is a collection of threads and other 30288thread groups. A thread group always has a string identifier, a type, 30289and may have additional attributes specific to the type. A new 30290command, @code{-list-thread-groups}, returns the list of top-level 30291thread groups, which correspond to processes that @value{GDBN} is 30292debugging at the moment. By passing an identifier of a thread group 30293to the @code{-list-thread-groups} command, it is possible to obtain 30294the members of specific thread group. 30295 30296To allow the user to easily discover processes, and other objects, he 30297wishes to debug, a concept of @dfn{available thread group} is 30298introduced. Available thread group is an thread group that 30299@value{GDBN} is not debugging, but that can be attached to, using the 30300@code{-target-attach} command. The list of available top-level thread 30301groups can be obtained using @samp{-list-thread-groups --available}. 30302In general, the content of a thread group may be only retrieved only 30303after attaching to that thread group. 30304 30305Thread groups are related to inferiors (@pxref{Inferiors Connections and 30306Programs}). Each inferior corresponds to a thread group of a special 30307type @samp{process}, and some additional operations are permitted on 30308such thread groups. 30309 30310@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30311@node GDB/MI Command Syntax 30312@section @sc{gdb/mi} Command Syntax 30313 30314@menu 30315* GDB/MI Input Syntax:: 30316* GDB/MI Output Syntax:: 30317@end menu 30318 30319@node GDB/MI Input Syntax 30320@subsection @sc{gdb/mi} Input Syntax 30321 30322@cindex input syntax for @sc{gdb/mi} 30323@cindex @sc{gdb/mi}, input syntax 30324@table @code 30325@item @var{command} @expansion{} 30326@code{@var{cli-command} | @var{mi-command}} 30327 30328@item @var{cli-command} @expansion{} 30329@code{[ @var{token} ] @var{cli-command} @var{nl}}, where 30330@var{cli-command} is any existing @value{GDBN} CLI command. 30331 30332@item @var{mi-command} @expansion{} 30333@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )* 30334@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}} 30335 30336@item @var{token} @expansion{} 30337"any sequence of digits" 30338 30339@item @var{option} @expansion{} 30340@code{"-" @var{parameter} [ " " @var{parameter} ]} 30341 30342@item @var{parameter} @expansion{} 30343@code{@var{non-blank-sequence} | @var{c-string}} 30344 30345@item @var{operation} @expansion{} 30346@emph{any of the operations described in this chapter} 30347 30348@item @var{non-blank-sequence} @expansion{} 30349@emph{anything, provided it doesn't contain special characters such as 30350"-", @var{nl}, """ and of course " "} 30351 30352@item @var{c-string} @expansion{} 30353@code{""" @var{seven-bit-iso-c-string-content} """} 30354 30355@item @var{nl} @expansion{} 30356@code{CR | CR-LF} 30357@end table 30358 30359@noindent 30360Notes: 30361 30362@itemize @bullet 30363@item 30364The CLI commands are still handled by the @sc{mi} interpreter; their 30365output is described below. 30366 30367@item 30368The @code{@var{token}}, when present, is passed back when the command 30369finishes. 30370 30371@item 30372Some @sc{mi} commands accept optional arguments as part of the parameter 30373list. Each option is identified by a leading @samp{-} (dash) and may be 30374followed by an optional argument parameter. Options occur first in the 30375parameter list and can be delimited from normal parameters using 30376@samp{--} (this is useful when some parameters begin with a dash). 30377@end itemize 30378 30379Pragmatics: 30380 30381@itemize @bullet 30382@item 30383We want easy access to the existing CLI syntax (for debugging). 30384 30385@item 30386We want it to be easy to spot a @sc{mi} operation. 30387@end itemize 30388 30389@node GDB/MI Output Syntax 30390@subsection @sc{gdb/mi} Output Syntax 30391 30392@cindex output syntax of @sc{gdb/mi} 30393@cindex @sc{gdb/mi}, output syntax 30394The output from @sc{gdb/mi} consists of zero or more out-of-band records 30395followed, optionally, by a single result record. This result record 30396is for the most recent command. The sequence of output records is 30397terminated by @samp{(gdb)}. 30398 30399If an input command was prefixed with a @code{@var{token}} then the 30400corresponding output for that command will also be prefixed by that same 30401@var{token}. 30402 30403@table @code 30404@item @var{output} @expansion{} 30405@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}} 30406 30407@item @var{result-record} @expansion{} 30408@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}} 30409 30410@item @var{out-of-band-record} @expansion{} 30411@code{@var{async-record} | @var{stream-record}} 30412 30413@item @var{async-record} @expansion{} 30414@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}} 30415 30416@item @var{exec-async-output} @expansion{} 30417@code{[ @var{token} ] "*" @var{async-output nl}} 30418 30419@item @var{status-async-output} @expansion{} 30420@code{[ @var{token} ] "+" @var{async-output nl}} 30421 30422@item @var{notify-async-output} @expansion{} 30423@code{[ @var{token} ] "=" @var{async-output nl}} 30424 30425@item @var{async-output} @expansion{} 30426@code{@var{async-class} ( "," @var{result} )*} 30427 30428@item @var{result-class} @expansion{} 30429@code{"done" | "running" | "connected" | "error" | "exit"} 30430 30431@item @var{async-class} @expansion{} 30432@code{"stopped" | @var{others}} (where @var{others} will be added 30433depending on the needs---this is still in development). 30434 30435@item @var{result} @expansion{} 30436@code{ @var{variable} "=" @var{value}} 30437 30438@item @var{variable} @expansion{} 30439@code{ @var{string} } 30440 30441@item @var{value} @expansion{} 30442@code{ @var{const} | @var{tuple} | @var{list} } 30443 30444@item @var{const} @expansion{} 30445@code{@var{c-string}} 30446 30447@item @var{tuple} @expansion{} 30448@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" } 30449 30450@item @var{list} @expansion{} 30451@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "[" 30452@var{result} ( "," @var{result} )* "]" } 30453 30454@item @var{stream-record} @expansion{} 30455@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}} 30456 30457@item @var{console-stream-output} @expansion{} 30458@code{"~" @var{c-string nl}} 30459 30460@item @var{target-stream-output} @expansion{} 30461@code{"@@" @var{c-string nl}} 30462 30463@item @var{log-stream-output} @expansion{} 30464@code{"&" @var{c-string nl}} 30465 30466@item @var{nl} @expansion{} 30467@code{CR | CR-LF} 30468 30469@item @var{token} @expansion{} 30470@emph{any sequence of digits}. 30471@end table 30472 30473@noindent 30474Notes: 30475 30476@itemize @bullet 30477@item 30478All output sequences end in a single line containing a period. 30479 30480@item 30481The @code{@var{token}} is from the corresponding request. Note that 30482for all async output, while the token is allowed by the grammar and 30483may be output by future versions of @value{GDBN} for select async 30484output messages, it is generally omitted. Frontends should treat 30485all async output as reporting general changes in the state of the 30486target and there should be no need to associate async output to any 30487prior command. 30488 30489@item 30490@cindex status output in @sc{gdb/mi} 30491@var{status-async-output} contains on-going status information about the 30492progress of a slow operation. It can be discarded. All status output is 30493prefixed by @samp{+}. 30494 30495@item 30496@cindex async output in @sc{gdb/mi} 30497@var{exec-async-output} contains asynchronous state change on the target 30498(stopped, started, disappeared). All async output is prefixed by 30499@samp{*}. 30500 30501@item 30502@cindex notify output in @sc{gdb/mi} 30503@var{notify-async-output} contains supplementary information that the 30504client should handle (e.g., a new breakpoint information). All notify 30505output is prefixed by @samp{=}. 30506 30507@item 30508@cindex console output in @sc{gdb/mi} 30509@var{console-stream-output} is output that should be displayed as is in the 30510console. It is the textual response to a CLI command. All the console 30511output is prefixed by @samp{~}. 30512 30513@item 30514@cindex target output in @sc{gdb/mi} 30515@var{target-stream-output} is the output produced by the target program. 30516All the target output is prefixed by @samp{@@}. 30517 30518@item 30519@cindex log output in @sc{gdb/mi} 30520@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for 30521instance messages that should be displayed as part of an error log. All 30522the log output is prefixed by @samp{&}. 30523 30524@item 30525@cindex list output in @sc{gdb/mi} 30526New @sc{gdb/mi} commands should only output @var{lists} containing 30527@var{values}. 30528 30529 30530@end itemize 30531 30532@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more 30533details about the various output records. 30534 30535@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30536@node GDB/MI Compatibility with CLI 30537@section @sc{gdb/mi} Compatibility with CLI 30538 30539@cindex compatibility, @sc{gdb/mi} and CLI 30540@cindex @sc{gdb/mi}, compatibility with CLI 30541 30542For the developers convenience CLI commands can be entered directly, 30543but there may be some unexpected behaviour. For example, commands 30544that query the user will behave as if the user replied yes, breakpoint 30545command lists are not executed and some CLI commands, such as 30546@code{if}, @code{when} and @code{define}, prompt for further input with 30547@samp{>}, which is not valid MI output. 30548 30549This feature may be removed at some stage in the future and it is 30550recommended that front ends use the @code{-interpreter-exec} command 30551(@pxref{-interpreter-exec}). 30552 30553@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30554@node GDB/MI Development and Front Ends 30555@section @sc{gdb/mi} Development and Front Ends 30556@cindex @sc{gdb/mi} development 30557 30558The application which takes the MI output and presents the state of the 30559program being debugged to the user is called a @dfn{front end}. 30560 30561Since @sc{gdb/mi} is used by a variety of front ends to @value{GDBN}, changes 30562to the MI interface may break existing usage. This section describes how the 30563protocol changes and how to request previous version of the protocol when it 30564does. 30565 30566Some changes in MI need not break a carefully designed front end, and 30567for these the MI version will remain unchanged. The following is a 30568list of changes that may occur within one level, so front ends should 30569parse MI output in a way that can handle them: 30570 30571@itemize @bullet 30572@item 30573New MI commands may be added. 30574 30575@item 30576New fields may be added to the output of any MI command. 30577 30578@item 30579The range of values for fields with specified values, e.g., 30580@code{in_scope} (@pxref{-var-update}) may be extended. 30581 30582@c The format of field's content e.g type prefix, may change so parse it 30583@c at your own risk. Yes, in general? 30584 30585@c The order of fields may change? Shouldn't really matter but it might 30586@c resolve inconsistencies. 30587@end itemize 30588 30589If the changes are likely to break front ends, the MI version level 30590will be increased by one. The new versions of the MI protocol are not compatible 30591with the old versions. Old versions of MI remain available, allowing front ends 30592to keep using them until they are modified to use the latest MI version. 30593 30594Since @code{--interpreter=mi} always points to the latest MI version, it is 30595recommended that front ends request a specific version of MI when launching 30596@value{GDBN} (e.g.@: @code{--interpreter=mi2}) to make sure they get an 30597interpreter with the MI version they expect. 30598 30599The following table gives a summary of the released versions of the MI 30600interface: the version number, the version of GDB in which it first appeared 30601and the breaking changes compared to the previous version. 30602 30603@multitable @columnfractions .1 .1 .8 30604@headitem MI version @tab GDB version @tab Breaking changes 30605 30606@item 30607@center 1 30608@tab 30609@center 5.1 30610@tab 30611None 30612 30613@item 30614@center 2 30615@tab 30616@center 6.0 30617@tab 30618 30619@itemize 30620@item 30621The @code{-environment-pwd}, @code{-environment-directory} and 30622@code{-environment-path} commands now returns values using the MI output 30623syntax, rather than CLI output syntax. 30624 30625@item 30626@code{-var-list-children}'s @code{children} result field is now a list, rather 30627than a tuple. 30628 30629@item 30630@code{-var-update}'s @code{changelist} result field is now a list, rather than 30631a tuple. 30632@end itemize 30633 30634@item 30635@center 3 30636@tab 30637@center 9.1 30638@tab 30639 30640@itemize 30641@item 30642The output of information about multi-location breakpoints has changed in the 30643responses to the @code{-break-insert} and @code{-break-info} commands, as well 30644as in the @code{=breakpoint-created} and @code{=breakpoint-modified} events. 30645The multiple locations are now placed in a @code{locations} field, whose value 30646is a list. 30647@end itemize 30648 30649@item 30650@center 4 30651@tab 30652@center 13.1 30653@tab 30654 30655@itemize 30656@item 30657The syntax of the "script" field in breakpoint output has changed in the 30658responses to the @code{-break-insert} and @code{-break-info} commands, as 30659well as the @code{=breakpoint-created} and @code{=breakpoint-modified} 30660events. The previous output was syntactically invalid. The new output is 30661a list. 30662@end itemize 30663 30664@end multitable 30665 30666If your front end cannot yet migrate to a more recent version of the 30667MI protocol, you can nevertheless selectively enable specific features 30668available in those recent MI versions, using the following commands: 30669 30670@table @code 30671 30672@item -fix-multi-location-breakpoint-output 30673Use the output for multi-location breakpoints which was introduced by 30674MI 3, even when using MI versions below 3. This command has no 30675effect when using MI version 3 or later. 30676 30677@item -fix-breakpoint-script-output 30678Use the output for the breakpoint "script" field which was introduced by 30679MI 4, even when using MI versions below 4. This command has no effect when 30680using MI version 4 or later. 30681 30682@end table 30683 30684The best way to avoid unexpected changes in MI that might break your front 30685end is to make your project known to @value{GDBN} developers and 30686follow development on @email{gdb@@sourceware.org} and 30687@email{gdb-patches@@sourceware.org}. 30688@cindex mailing lists 30689 30690@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 30691@node GDB/MI Output Records 30692@section @sc{gdb/mi} Output Records 30693 30694@menu 30695* GDB/MI Result Records:: 30696* GDB/MI Stream Records:: 30697* GDB/MI Async Records:: 30698* GDB/MI Breakpoint Information:: 30699* GDB/MI Frame Information:: 30700* GDB/MI Thread Information:: 30701* GDB/MI Ada Exception Information:: 30702@end menu 30703 30704@node GDB/MI Result Records 30705@subsection @sc{gdb/mi} Result Records 30706 30707@cindex result records in @sc{gdb/mi} 30708@cindex @sc{gdb/mi}, result records 30709In addition to a number of out-of-band notifications, the response to a 30710@sc{gdb/mi} command includes one of the following result indications: 30711 30712@table @code 30713@findex ^done 30714@item "^done" [ "," @var{results} ] 30715The synchronous operation was successful, @code{@var{results}} are the return 30716values. 30717 30718@item "^running" 30719@findex ^running 30720This result record is equivalent to @samp{^done}. Historically, it 30721was output instead of @samp{^done} if the command has resumed the 30722target. This behaviour is maintained for backward compatibility, but 30723all frontends should treat @samp{^done} and @samp{^running} 30724identically and rely on the @samp{*running} output record to determine 30725which threads are resumed. 30726 30727@item "^connected" 30728@findex ^connected 30729@value{GDBN} has connected to a remote target. 30730 30731@item "^error" "," "msg=" @var{c-string} [ "," "code=" @var{c-string} ] 30732@findex ^error 30733The operation failed. The @code{msg=@var{c-string}} variable contains 30734the corresponding error message. 30735 30736If present, the @code{code=@var{c-string}} variable provides an error 30737code on which consumers can rely on to detect the corresponding 30738error condition. At present, only one error code is defined: 30739 30740@table @samp 30741@item "undefined-command" 30742Indicates that the command causing the error does not exist. 30743@end table 30744 30745@item "^exit" 30746@findex ^exit 30747@value{GDBN} has terminated. 30748 30749@end table 30750 30751@node GDB/MI Stream Records 30752@subsection @sc{gdb/mi} Stream Records 30753 30754@cindex @sc{gdb/mi}, stream records 30755@cindex stream records in @sc{gdb/mi} 30756@value{GDBN} internally maintains a number of output streams: the console, the 30757target, and the log. The output intended for each of these streams is 30758funneled through the @sc{gdb/mi} interface using @dfn{stream records}. 30759 30760Each stream record begins with a unique @dfn{prefix character} which 30761identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output 30762Syntax}). In addition to the prefix, each stream record contains a 30763@code{@var{string-output}}. This is either raw text (with an implicit new 30764line) or a quoted C string (which does not contain an implicit newline). 30765 30766@table @code 30767@item "~" @var{string-output} 30768The console output stream contains text that should be displayed in the 30769CLI console window. It contains the textual responses to CLI commands. 30770 30771@item "@@" @var{string-output} 30772The target output stream contains any textual output from the running 30773target. This is only present when GDB's event loop is truly 30774asynchronous, which is currently only the case for remote targets. 30775 30776@item "&" @var{string-output} 30777The log stream contains debugging messages being produced by @value{GDBN}'s 30778internals. 30779@end table 30780 30781@node GDB/MI Async Records 30782@subsection @sc{gdb/mi} Async Records 30783 30784@cindex async records in @sc{gdb/mi} 30785@cindex @sc{gdb/mi}, async records 30786@dfn{Async} records are used to notify the @sc{gdb/mi} client of 30787additional changes that have occurred. Those changes can either be a 30788consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of 30789target activity (e.g., target stopped). 30790 30791The following is the list of possible async records: 30792 30793@table @code 30794 30795@item *running,thread-id="@var{thread}" 30796The target is now running. The @var{thread} field can be the global 30797thread ID of the thread that is now running, and it can be 30798@samp{all} if all threads are running. The frontend should assume 30799that no interaction with a running thread is possible after this 30800notification is produced. The frontend should not assume that this 30801notification is output only once for any command. @value{GDBN} may 30802emit this notification several times, either for different threads, 30803because it cannot resume all threads together, or even for a single 30804thread, if the thread must be stepped though some code before letting 30805it run freely. 30806 30807@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}" 30808The target has stopped. The @var{reason} field can have one of the 30809following values: 30810 30811@table @code 30812@item breakpoint-hit 30813A breakpoint was reached. 30814@item watchpoint-trigger 30815A watchpoint was triggered. 30816@item read-watchpoint-trigger 30817A read watchpoint was triggered. 30818@item access-watchpoint-trigger 30819An access watchpoint was triggered. 30820@item function-finished 30821An -exec-finish or similar CLI command was accomplished. 30822@item location-reached 30823An -exec-until or similar CLI command was accomplished. 30824@item watchpoint-scope 30825A watchpoint has gone out of scope. 30826@item end-stepping-range 30827An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or 30828similar CLI command was accomplished. 30829@item exited-signalled 30830The inferior exited because of a signal. 30831@item exited 30832The inferior exited. 30833@item exited-normally 30834The inferior exited normally. 30835@item signal-received 30836A signal was received by the inferior. 30837@item solib-event 30838The inferior has stopped due to a library being loaded or unloaded. 30839This can happen when @code{stop-on-solib-events} (@pxref{Files}) is 30840set or when a @code{catch load} or @code{catch unload} catchpoint is 30841in use (@pxref{Set Catchpoints}). 30842@item fork 30843The inferior has forked. This is reported when @code{catch fork} 30844(@pxref{Set Catchpoints}) has been used. 30845@item vfork 30846The inferior has vforked. This is reported in when @code{catch vfork} 30847(@pxref{Set Catchpoints}) has been used. 30848@item syscall-entry 30849The inferior entered a system call. This is reported when @code{catch 30850syscall} (@pxref{Set Catchpoints}) has been used. 30851@item syscall-return 30852The inferior returned from a system call. This is reported when 30853@code{catch syscall} (@pxref{Set Catchpoints}) has been used. 30854@item exec 30855The inferior called @code{exec}. This is reported when @code{catch exec} 30856(@pxref{Set Catchpoints}) has been used. 30857@end table 30858 30859The @var{id} field identifies the global thread ID of the thread 30860that directly caused the stop -- for example by hitting a breakpoint. 30861Depending on whether all-stop 30862mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either 30863stop all threads, or only the thread that directly triggered the stop. 30864If all threads are stopped, the @var{stopped} field will have the 30865value of @code{"all"}. Otherwise, the value of the @var{stopped} 30866field will be a list of thread identifiers. Presently, this list will 30867always include a single thread, but frontend should be prepared to see 30868several threads in the list. The @var{core} field reports the 30869processor core on which the stop event has happened. This field may be absent 30870if such information is not available. 30871 30872@item =thread-group-added,id="@var{id}" 30873@itemx =thread-group-removed,id="@var{id}" 30874A thread group was either added or removed. The @var{id} field 30875contains the @value{GDBN} identifier of the thread group. When a thread 30876group is added, it generally might not be associated with a running 30877process. When a thread group is removed, its id becomes invalid and 30878cannot be used in any way. 30879 30880@item =thread-group-started,id="@var{id}",pid="@var{pid}" 30881A thread group became associated with a running program, 30882either because the program was just started or the thread group 30883was attached to a program. The @var{id} field contains the 30884@value{GDBN} identifier of the thread group. The @var{pid} field 30885contains process identifier, specific to the operating system. 30886 30887@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"] 30888A thread group is no longer associated with a running program, 30889either because the program has exited, or because it was detached 30890from. The @var{id} field contains the @value{GDBN} identifier of the 30891thread group. The @var{code} field is the exit code of the inferior; it exists 30892only when the inferior exited with some code. 30893 30894@item =thread-created,id="@var{id}",group-id="@var{gid}" 30895@itemx =thread-exited,id="@var{id}",group-id="@var{gid}" 30896A thread either was created, or has exited. The @var{id} field 30897contains the global @value{GDBN} identifier of the thread. The @var{gid} 30898field identifies the thread group this thread belongs to. 30899 30900@item =thread-selected,id="@var{id}"[,frame="@var{frame}"] 30901Informs that the selected thread or frame were changed. This notification 30902is not emitted as result of the @code{-thread-select} or 30903@code{-stack-select-frame} commands, but is emitted whenever an MI command 30904that is not documented to change the selected thread and frame actually 30905changes them. In particular, invoking, directly or indirectly 30906(via user-defined command), the CLI @code{thread} or @code{frame} commands, 30907will generate this notification. Changing the thread or frame from another 30908user interface (see @ref{Interpreters}) will also generate this notification. 30909 30910The @var{frame} field is only present if the newly selected thread is 30911stopped. See @ref{GDB/MI Frame Information} for the format of its value. 30912 30913We suggest that in response to this notification, front ends 30914highlight the selected thread and cause subsequent commands to apply to 30915that thread. 30916 30917@item =library-loaded,... 30918Reports that a new library file was loaded by the program. This 30919notification has 5 fields---@var{id}, @var{target-name}, 30920@var{host-name}, @var{symbols-loaded} and @var{ranges}. The @var{id} field is an 30921opaque identifier of the library. For remote debugging case, 30922@var{target-name} and @var{host-name} fields give the name of the 30923library file on the target, and on the host respectively. For native 30924debugging, both those fields have the same value. The 30925@var{symbols-loaded} field is emitted only for backward compatibility 30926and should not be relied on to convey any useful information. The 30927@var{thread-group} field, if present, specifies the id of the thread 30928group in whose context the library was loaded. If the field is 30929absent, it means the library was loaded in the context of all present 30930thread groups. The @var{ranges} field specifies the ranges of addresses belonging 30931to this library. 30932 30933@item =library-unloaded,... 30934Reports that a library was unloaded by the program. This notification 30935has 3 fields---@var{id}, @var{target-name} and @var{host-name} with 30936the same meaning as for the @code{=library-loaded} notification. 30937The @var{thread-group} field, if present, specifies the id of the 30938thread group in whose context the library was unloaded. If the field is 30939absent, it means the library was unloaded in the context of all present 30940thread groups. 30941 30942@item =traceframe-changed,num=@var{tfnum},tracepoint=@var{tpnum} 30943@itemx =traceframe-changed,end 30944Reports that the trace frame was changed and its new number is 30945@var{tfnum}. The number of the tracepoint associated with this trace 30946frame is @var{tpnum}. 30947 30948@item =tsv-created,name=@var{name},initial=@var{initial} 30949Reports that the new trace state variable @var{name} is created with 30950initial value @var{initial}. 30951 30952@item =tsv-deleted,name=@var{name} 30953@itemx =tsv-deleted 30954Reports that the trace state variable @var{name} is deleted or all 30955trace state variables are deleted. 30956 30957@item =tsv-modified,name=@var{name},initial=@var{initial}[,current=@var{current}] 30958Reports that the trace state variable @var{name} is modified with 30959the initial value @var{initial}. The current value @var{current} of 30960trace state variable is optional and is reported if the current 30961value of trace state variable is known. 30962 30963@item =breakpoint-created,bkpt=@{...@} 30964@itemx =breakpoint-modified,bkpt=@{...@} 30965@itemx =breakpoint-deleted,id=@var{number} 30966Reports that a breakpoint was created, modified, or deleted, 30967respectively. Only user-visible breakpoints are reported to the MI 30968user. 30969 30970The @var{bkpt} argument is of the same form as returned by the various 30971breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The 30972@var{number} is the ordinal number of the breakpoint. 30973 30974Note that if a breakpoint is emitted in the result record of a 30975command, then it will not also be emitted in an async record. 30976 30977@item =record-started,thread-group="@var{id}",method="@var{method}"[,format="@var{format}"] 30978@itemx =record-stopped,thread-group="@var{id}" 30979Execution log recording was either started or stopped on an 30980inferior. The @var{id} is the @value{GDBN} identifier of the thread 30981group corresponding to the affected inferior. 30982 30983The @var{method} field indicates the method used to record execution. If the 30984method in use supports multiple recording formats, @var{format} will be present 30985and contain the currently used format. @xref{Process Record and Replay}, 30986for existing method and format values. 30987 30988@item =cmd-param-changed,param=@var{param},value=@var{value} 30989Reports that a parameter of the command @code{set @var{param}} is 30990changed to @var{value}. In the multi-word @code{set} command, 30991the @var{param} is the whole parameter list to @code{set} command. 30992For example, In command @code{set check type on}, @var{param} 30993is @code{check type} and @var{value} is @code{on}. 30994 30995@item =memory-changed,thread-group=@var{id},addr=@var{addr},len=@var{len}[,type="code"] 30996Reports that bytes from @var{addr} to @var{data} + @var{len} were 30997written in an inferior. The @var{id} is the identifier of the 30998thread group corresponding to the affected inferior. The optional 30999@code{type="code"} part is reported if the memory written to holds 31000executable code. 31001@end table 31002 31003@node GDB/MI Breakpoint Information 31004@subsection @sc{gdb/mi} Breakpoint Information 31005 31006When @value{GDBN} reports information about a breakpoint, a 31007tracepoint, a watchpoint, or a catchpoint, it uses a tuple with the 31008following fields: 31009 31010@table @code 31011@item number 31012The breakpoint number. 31013 31014@item type 31015The type of the breakpoint. For ordinary breakpoints this will be 31016@samp{breakpoint}, but many values are possible. 31017 31018@item catch-type 31019If the type of the breakpoint is @samp{catchpoint}, then this 31020indicates the exact type of catchpoint. 31021 31022@item disp 31023This is the breakpoint disposition---either @samp{del}, meaning that 31024the breakpoint will be deleted at the next stop, or @samp{keep}, 31025meaning that the breakpoint will not be deleted. 31026 31027@item enabled 31028This indicates whether the breakpoint is enabled, in which case the 31029value is @samp{y}, or disabled, in which case the value is @samp{n}. 31030Note that this is not the same as the field @code{enable}. 31031 31032@item addr 31033The address of the breakpoint. This may be a hexidecimal number, 31034giving the address; or the string @samp{<PENDING>}, for a pending 31035breakpoint; or the string @samp{<MULTIPLE>}, for a breakpoint with 31036multiple locations. This field will not be present if no address can 31037be determined. For example, a watchpoint does not have an address. 31038 31039@item addr_flags 31040Optional field containing any flags related to the address. These flags are 31041architecture-dependent; see @ref{Architectures} for their meaning for a 31042particular CPU. 31043 31044@item func 31045If known, the function in which the breakpoint appears. 31046If not known, this field is not present. 31047 31048@item filename 31049The name of the source file which contains this function, if known. 31050If not known, this field is not present. 31051 31052@item fullname 31053The full file name of the source file which contains this function, if 31054known. If not known, this field is not present. 31055 31056@item line 31057The line number at which this breakpoint appears, if known. 31058If not known, this field is not present. 31059 31060@item at 31061If the source file is not known, this field may be provided. If 31062provided, this holds the address of the breakpoint, possibly followed 31063by a symbol name. 31064 31065@item pending 31066If this breakpoint is pending, this field is present and holds the 31067text used to set the breakpoint, as entered by the user. 31068 31069@item evaluated-by 31070Where this breakpoint's condition is evaluated, either @samp{host} or 31071@samp{target}. 31072 31073@item thread 31074If this is a thread-specific breakpoint, then this identifies the 31075thread in which the breakpoint can trigger. 31076 31077@item task 31078If this breakpoint is restricted to a particular Ada task, then this 31079field will hold the task identifier. 31080 31081@item cond 31082If the breakpoint is conditional, this is the condition expression. 31083 31084@item ignore 31085The ignore count of the breakpoint. 31086 31087@item enable 31088The enable count of the breakpoint. 31089 31090@item traceframe-usage 31091FIXME. 31092 31093@item static-tracepoint-marker-string-id 31094For a static tracepoint, the name of the static tracepoint marker. 31095 31096@item mask 31097For a masked watchpoint, this is the mask. 31098 31099@item pass 31100A tracepoint's pass count. 31101 31102@item original-location 31103The location of the breakpoint as originally specified by the user. 31104This field is optional. 31105 31106@item times 31107The number of times the breakpoint has been hit. 31108 31109@item installed 31110This field is only given for tracepoints. This is either @samp{y}, 31111meaning that the tracepoint is installed, or @samp{n}, meaning that it 31112is not. 31113 31114@item what 31115Some extra data, the exact contents of which are type-dependent. 31116 31117@item locations 31118This field is present if the breakpoint has multiple locations. It is also 31119exceptionally present if the breakpoint is enabled and has a single, disabled 31120location. 31121 31122The value is a list of locations. The format of a location is described below. 31123 31124@end table 31125 31126A location in a multi-location breakpoint is represented as a tuple with the 31127following fields: 31128 31129@table @code 31130 31131@item number 31132The location number as a dotted pair, like @samp{1.2}. The first digit is the 31133number of the parent breakpoint. The second digit is the number of the 31134location within that breakpoint. 31135 31136@item enabled 31137There are three possible values, with the following meanings: 31138@table @code 31139@item y 31140The location is enabled. 31141@item n 31142The location is disabled by the user. 31143@item N 31144The location is disabled because the breakpoint condition is invalid 31145at this location. 31146@end table 31147 31148@item addr 31149The address of this location as an hexidecimal number. 31150 31151@item addr_flags 31152Optional field containing any flags related to the address. These flags are 31153architecture-dependent; see @ref{Architectures} for their meaning for a 31154particular CPU. 31155 31156@item func 31157If known, the function in which the location appears. 31158If not known, this field is not present. 31159 31160@item file 31161The name of the source file which contains this location, if known. 31162If not known, this field is not present. 31163 31164@item fullname 31165The full file name of the source file which contains this location, if 31166known. If not known, this field is not present. 31167 31168@item line 31169The line number at which this location appears, if known. 31170If not known, this field is not present. 31171 31172@item thread-groups 31173The thread groups this location is in. 31174 31175@end table 31176 31177For example, here is what the output of @code{-break-insert} 31178(@pxref{GDB/MI Breakpoint Commands}) might be: 31179 31180@smallexample 31181-> -break-insert main 31182<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 31183 enabled="y",addr="0x08048564",func="main",file="myprog.c", 31184 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 31185 times="0"@} 31186<- (gdb) 31187@end smallexample 31188 31189@node GDB/MI Frame Information 31190@subsection @sc{gdb/mi} Frame Information 31191 31192Response from many MI commands includes an information about stack 31193frame. This information is a tuple that may have the following 31194fields: 31195 31196@table @code 31197@item level 31198The level of the stack frame. The innermost frame has the level of 31199zero. This field is always present. 31200 31201@item func 31202The name of the function corresponding to the frame. This field may 31203be absent if @value{GDBN} is unable to determine the function name. 31204 31205@item addr 31206The code address for the frame. This field is always present. 31207 31208@item addr_flags 31209Optional field containing any flags related to the address. These flags are 31210architecture-dependent; see @ref{Architectures} for their meaning for a 31211particular CPU. 31212 31213@item file 31214The name of the source files that correspond to the frame's code 31215address. This field may be absent. 31216 31217@item line 31218The source line corresponding to the frames' code address. This field 31219may be absent. 31220 31221@item from 31222The name of the binary file (either executable or shared library) the 31223corresponds to the frame's code address. This field may be absent. 31224 31225@end table 31226 31227@node GDB/MI Thread Information 31228@subsection @sc{gdb/mi} Thread Information 31229 31230Whenever @value{GDBN} has to report an information about a thread, it 31231uses a tuple with the following fields. The fields are always present unless 31232stated otherwise. 31233 31234@table @code 31235@item id 31236The global numeric id assigned to the thread by @value{GDBN}. 31237 31238@item target-id 31239The target-specific string identifying the thread. 31240 31241@item details 31242Additional information about the thread provided by the target. 31243It is supposed to be human-readable and not interpreted by the 31244frontend. This field is optional. 31245 31246@item name 31247The name of the thread. If the user specified a name using the 31248@code{thread name} command, then this name is given. Otherwise, if 31249@value{GDBN} can extract the thread name from the target, then that 31250name is given. If @value{GDBN} cannot find the thread name, then this 31251field is omitted. 31252 31253@item state 31254The execution state of the thread, either @samp{stopped} or @samp{running}, 31255depending on whether the thread is presently running. 31256 31257@item frame 31258The stack frame currently executing in the thread. This field is only present 31259if the thread is stopped. Its format is documented in 31260@ref{GDB/MI Frame Information}. 31261 31262@item core 31263The value of this field is an integer number of the processor core the 31264thread was last seen on. This field is optional. 31265@end table 31266 31267@node GDB/MI Ada Exception Information 31268@subsection @sc{gdb/mi} Ada Exception Information 31269 31270Whenever a @code{*stopped} record is emitted because the program 31271stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}), 31272@value{GDBN} provides the name of the exception that was raised via 31273the @code{exception-name} field. Also, for exceptions that were raised 31274with an exception message, @value{GDBN} provides that message via 31275the @code{exception-message} field. 31276 31277@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31278@node GDB/MI Simple Examples 31279@section Simple Examples of @sc{gdb/mi} Interaction 31280@cindex @sc{gdb/mi}, simple examples 31281 31282This subsection presents several simple examples of interaction using 31283the @sc{gdb/mi} interface. In these examples, @samp{->} means that the 31284following line is passed to @sc{gdb/mi} as input, while @samp{<-} means 31285the output received from @sc{gdb/mi}. 31286 31287Note the line breaks shown in the examples are here only for 31288readability, they don't appear in the real output. 31289 31290@subheading Setting a Breakpoint 31291 31292Setting a breakpoint generates synchronous output which contains detailed 31293information of the breakpoint. 31294 31295@smallexample 31296-> -break-insert main 31297<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep", 31298 enabled="y",addr="0x08048564",func="main",file="myprog.c", 31299 fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"], 31300 times="0"@} 31301<- (gdb) 31302@end smallexample 31303 31304@subheading Program Execution 31305 31306Program execution generates asynchronous records and MI gives the 31307reason that execution stopped. 31308 31309@smallexample 31310-> -exec-run 31311<- ^running 31312<- (gdb) 31313<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 31314 frame=@{addr="0x08048564",func="main", 31315 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}], 31316 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68", 31317 arch="i386:x86_64"@} 31318<- (gdb) 31319-> -exec-continue 31320<- ^running 31321<- (gdb) 31322<- *stopped,reason="exited-normally" 31323<- (gdb) 31324@end smallexample 31325 31326@subheading Quitting @value{GDBN} 31327 31328Quitting @value{GDBN} just prints the result class @samp{^exit}. 31329 31330@smallexample 31331-> (gdb) 31332<- -gdb-exit 31333<- ^exit 31334@end smallexample 31335 31336Please note that @samp{^exit} is printed immediately, but it might 31337take some time for @value{GDBN} to actually exit. During that time, @value{GDBN} 31338performs necessary cleanups, including killing programs being debugged 31339or disconnecting from debug hardware, so the frontend should wait till 31340@value{GDBN} exits and should only forcibly kill @value{GDBN} if it 31341fails to exit in reasonable time. 31342 31343@subheading A Bad Command 31344 31345Here's what happens if you pass a non-existent command: 31346 31347@smallexample 31348-> -rubbish 31349<- ^error,msg="Undefined MI command: rubbish" 31350<- (gdb) 31351@end smallexample 31352 31353 31354@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31355@node GDB/MI Command Description Format 31356@section @sc{gdb/mi} Command Description Format 31357 31358The remaining sections describe blocks of commands. Each block of 31359commands is laid out in a fashion similar to this section. 31360 31361@subheading Motivation 31362 31363The motivation for this collection of commands. 31364 31365@subheading Introduction 31366 31367A brief introduction to this collection of commands as a whole. 31368 31369@subheading Commands 31370 31371For each command in the block, the following is described: 31372 31373@subsubheading Synopsis 31374 31375@smallexample 31376 -command @var{args}@dots{} 31377@end smallexample 31378 31379@subsubheading Result 31380 31381@subsubheading @value{GDBN} Command 31382 31383The corresponding @value{GDBN} CLI command(s), if any. 31384 31385@subsubheading Example 31386 31387Example(s) formatted for readability. Some of the described commands have 31388not been implemented yet and these are labeled N.A.@: (not available). 31389 31390 31391@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 31392@node GDB/MI Breakpoint Commands 31393@section @sc{gdb/mi} Breakpoint Commands 31394 31395@cindex breakpoint commands for @sc{gdb/mi} 31396@cindex @sc{gdb/mi}, breakpoint commands 31397This section documents @sc{gdb/mi} commands for manipulating 31398breakpoints. 31399 31400@subheading The @code{-break-after} Command 31401@findex -break-after 31402 31403@subsubheading Synopsis 31404 31405@smallexample 31406 -break-after @var{number} @var{count} 31407@end smallexample 31408 31409The breakpoint number @var{number} is not in effect until it has been 31410hit @var{count} times. To see how this is reflected in the output of 31411the @samp{-break-list} command, see the description of the 31412@samp{-break-list} command below. 31413 31414@subsubheading @value{GDBN} Command 31415 31416The corresponding @value{GDBN} command is @samp{ignore}. 31417 31418@subsubheading Example 31419 31420@smallexample 31421(gdb) 31422-break-insert main 31423^done,bkpt=@{number="1",type="breakpoint",disp="keep", 31424enabled="y",addr="0x000100d0",func="main",file="hello.c", 31425fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 31426times="0"@} 31427(gdb) 31428-break-after 1 3 31429~ 31430^done 31431(gdb) 31432-break-list 31433^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 31434hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31435@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31436@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31437@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31438@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31439@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31440body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 31441addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 31442line="5",thread-groups=["i1"],times="0",ignore="3"@}]@} 31443(gdb) 31444@end smallexample 31445 31446@ignore 31447@subheading The @code{-break-catch} Command 31448@findex -break-catch 31449@end ignore 31450 31451@subheading The @code{-break-commands} Command 31452@findex -break-commands 31453 31454@subsubheading Synopsis 31455 31456@smallexample 31457 -break-commands @var{number} [ @var{command1} ... @var{commandN} ] 31458@end smallexample 31459 31460Specifies the CLI commands that should be executed when breakpoint 31461@var{number} is hit. The parameters @var{command1} to @var{commandN} 31462are the commands. If no command is specified, any previously-set 31463commands are cleared. @xref{Break Commands}. Typical use of this 31464functionality is tracing a program, that is, printing of values of 31465some variables whenever breakpoint is hit and then continuing. 31466 31467@subsubheading @value{GDBN} Command 31468 31469The corresponding @value{GDBN} command is @samp{commands}. 31470 31471@subsubheading Example 31472 31473@smallexample 31474(gdb) 31475-break-insert main 31476^done,bkpt=@{number="1",type="breakpoint",disp="keep", 31477enabled="y",addr="0x000100d0",func="main",file="hello.c", 31478fullname="/home/foo/hello.c",line="5",thread-groups=["i1"], 31479times="0"@} 31480(gdb) 31481-break-commands 1 "print v" "continue" 31482^done 31483(gdb) 31484@end smallexample 31485 31486@subheading The @code{-break-condition} Command 31487@findex -break-condition 31488 31489@subsubheading Synopsis 31490 31491@smallexample 31492 -break-condition [ --force ] @var{number} [ @var{expr} ] 31493@end smallexample 31494 31495Breakpoint @var{number} will stop the program only if the condition in 31496@var{expr} is true. The condition becomes part of the 31497@samp{-break-list} output (see the description of the @samp{-break-list} 31498command below). If the @samp{--force} flag is passed, the condition 31499is forcibly defined even when it is invalid for all locations of 31500breakpoint @var{number}. If the @var{expr} argument is omitted, 31501breakpoint @var{number} becomes unconditional. 31502 31503@subsubheading @value{GDBN} Command 31504 31505The corresponding @value{GDBN} command is @samp{condition}. 31506 31507@subsubheading Example 31508 31509@smallexample 31510(gdb) 31511-break-condition 1 1 31512^done 31513(gdb) 31514-break-list 31515^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 31516hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31517@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31518@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31519@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31520@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31521@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31522body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 31523addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 31524line="5",cond="1",thread-groups=["i1"],times="0",ignore="3"@}]@} 31525(gdb) 31526@end smallexample 31527 31528@subheading The @code{-break-delete} Command 31529@findex -break-delete 31530 31531@subsubheading Synopsis 31532 31533@smallexample 31534 -break-delete ( @var{breakpoint} )+ 31535@end smallexample 31536 31537Delete the breakpoint(s) whose number(s) are specified in the argument 31538list. This is obviously reflected in the breakpoint list. 31539 31540@subsubheading @value{GDBN} Command 31541 31542The corresponding @value{GDBN} command is @samp{delete}. 31543 31544@subsubheading Example 31545 31546@smallexample 31547(gdb) 31548-break-delete 1 31549^done 31550(gdb) 31551-break-list 31552^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 31553hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31554@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31555@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31556@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31557@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31558@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31559body=[]@} 31560(gdb) 31561@end smallexample 31562 31563@subheading The @code{-break-disable} Command 31564@findex -break-disable 31565 31566@subsubheading Synopsis 31567 31568@smallexample 31569 -break-disable ( @var{breakpoint} )+ 31570@end smallexample 31571 31572Disable the named @var{breakpoint}(s). The field @samp{enabled} in the 31573break list is now set to @samp{n} for the named @var{breakpoint}(s). 31574 31575@subsubheading @value{GDBN} Command 31576 31577The corresponding @value{GDBN} command is @samp{disable}. 31578 31579@subsubheading Example 31580 31581@smallexample 31582(gdb) 31583-break-disable 2 31584^done 31585(gdb) 31586-break-list 31587^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 31588hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31589@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31590@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31591@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31592@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31593@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31594body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n", 31595addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 31596line="5",thread-groups=["i1"],times="0"@}]@} 31597(gdb) 31598@end smallexample 31599 31600@subheading The @code{-break-enable} Command 31601@findex -break-enable 31602 31603@subsubheading Synopsis 31604 31605@smallexample 31606 -break-enable ( @var{breakpoint} )+ 31607@end smallexample 31608 31609Enable (previously disabled) @var{breakpoint}(s). 31610 31611@subsubheading @value{GDBN} Command 31612 31613The corresponding @value{GDBN} command is @samp{enable}. 31614 31615@subsubheading Example 31616 31617@smallexample 31618(gdb) 31619-break-enable 2 31620^done 31621(gdb) 31622-break-list 31623^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 31624hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31625@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31626@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31627@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31628@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31629@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31630body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 31631addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", 31632line="5",thread-groups=["i1"],times="0"@}]@} 31633(gdb) 31634@end smallexample 31635 31636@subheading The @code{-break-info} Command 31637@findex -break-info 31638 31639@subsubheading Synopsis 31640 31641@smallexample 31642 -break-info @var{breakpoint} 31643@end smallexample 31644 31645@c REDUNDANT??? 31646Get information about a single breakpoint. 31647 31648The result is a table of breakpoints. @xref{GDB/MI Breakpoint 31649Information}, for details on the format of each breakpoint in the 31650table. 31651 31652@subsubheading @value{GDBN} Command 31653 31654The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}. 31655 31656@subsubheading Example 31657N.A. 31658 31659@subheading The @code{-break-insert} Command 31660@findex -break-insert 31661@anchor{-break-insert} 31662 31663@subsubheading Synopsis 31664 31665@smallexample 31666 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ] [ --qualified ] 31667 [ -c @var{condition} ] [ --force-condition ] [ -i @var{ignore-count} ] 31668 [ -p @var{thread-id} ] [ @var{locspec} ] 31669@end smallexample 31670 31671@noindent 31672If specified, @var{locspec}, can be one of: 31673 31674@table @var 31675@item linespec location 31676A linespec location. @xref{Linespec Locations}. 31677 31678@item explicit location 31679An explicit location. @sc{gdb/mi} explicit locations are 31680analogous to the CLI's explicit locations using the option names 31681listed below. @xref{Explicit Locations}. 31682 31683@table @samp 31684@item --source @var{filename} 31685The source file name of the location. This option requires the use 31686of either @samp{--function} or @samp{--line}. 31687 31688@item --function @var{function} 31689The name of a function or method. 31690 31691@item --label @var{label} 31692The name of a label. 31693 31694@item --line @var{lineoffset} 31695An absolute or relative line offset from the start of the location. 31696@end table 31697 31698@item address location 31699An address location, *@var{address}. @xref{Address Locations}. 31700@end table 31701 31702@noindent 31703The possible optional parameters of this command are: 31704 31705@table @samp 31706@item -t 31707Insert a temporary breakpoint. 31708@item -h 31709Insert a hardware breakpoint. 31710@item -f 31711If @var{locspec} cannot be resolved (for example if it 31712refers to unknown files or functions), create a pending 31713breakpoint. Without this flag, @value{GDBN} will report 31714an error, and won't create a breakpoint, if @var{locspec} 31715cannot be parsed. 31716@item -d 31717Create a disabled breakpoint. 31718@item -a 31719Create a tracepoint. @xref{Tracepoints}. When this parameter 31720is used together with @samp{-h}, a fast tracepoint is created. 31721@item -c @var{condition} 31722Make the breakpoint conditional on @var{condition}. 31723@item --force-condition 31724Forcibly define the breakpoint even if the condition is invalid at 31725all of the breakpoint locations. 31726@item -i @var{ignore-count} 31727Initialize the @var{ignore-count}. 31728@item -p @var{thread-id} 31729Restrict the breakpoint to the thread with the specified global 31730@var{thread-id}. 31731@item --qualified 31732This option makes @value{GDBN} interpret a function name specified as 31733a complete fully-qualified name. 31734@end table 31735 31736@subsubheading Result 31737 31738@xref{GDB/MI Breakpoint Information}, for details on the format of the 31739resulting breakpoint. 31740 31741Note: this format is open to change. 31742@c An out-of-band breakpoint instead of part of the result? 31743 31744@subsubheading @value{GDBN} Command 31745 31746The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak}, 31747@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}. 31748 31749@subsubheading Example 31750 31751@smallexample 31752(gdb) 31753-break-insert main 31754^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c", 31755fullname="/home/foo/recursive2.c,line="4",thread-groups=["i1"], 31756times="0"@} 31757(gdb) 31758-break-insert -t foo 31759^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c", 31760fullname="/home/foo/recursive2.c,line="11",thread-groups=["i1"], 31761times="0"@} 31762(gdb) 31763-break-list 31764^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 31765hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31766@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31767@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31768@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31769@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31770@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31771body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 31772addr="0x0001072c", func="main",file="recursive2.c", 31773fullname="/home/foo/recursive2.c,"line="4",thread-groups=["i1"], 31774times="0"@}, 31775bkpt=@{number="2",type="breakpoint",disp="del",enabled="y", 31776addr="0x00010774",func="foo",file="recursive2.c", 31777fullname="/home/foo/recursive2.c",line="11",thread-groups=["i1"], 31778times="0"@}]@} 31779(gdb) 31780@end smallexample 31781 31782@subheading The @code{-dprintf-insert} Command 31783@findex -dprintf-insert 31784 31785@subsubheading Synopsis 31786 31787@smallexample 31788 -dprintf-insert [ -t ] [ -f ] [ -d ] [ --qualified ] 31789 [ -c @var{condition} ] [--force-condition] [ -i @var{ignore-count} ] 31790 [ -p @var{thread-id} ] [ @var{locspec} ] [ @var{format} ] 31791 [ @var{argument} ] 31792@end smallexample 31793 31794@noindent 31795If supplied, @var{locspec} and @code{--qualified} may be specified 31796the same way as for the @code{-break-insert} command. 31797@xref{-break-insert}. 31798 31799The possible optional parameters of this command are: 31800 31801@table @samp 31802@item -t 31803Insert a temporary breakpoint. 31804@item -f 31805If @var{locspec} cannot be parsed (for example, if it 31806refers to unknown files or functions), create a pending 31807breakpoint. Without this flag, @value{GDBN} will report 31808an error, and won't create a breakpoint, if @var{locspec} 31809cannot be parsed. 31810@item -d 31811Create a disabled breakpoint. 31812@item -c @var{condition} 31813Make the breakpoint conditional on @var{condition}. 31814@item --force-condition 31815Forcibly define the breakpoint even if the condition is invalid at 31816all of the breakpoint locations. 31817@item -i @var{ignore-count} 31818Set the ignore count of the breakpoint (@pxref{Conditions, ignore count}) 31819to @var{ignore-count}. 31820@item -p @var{thread-id} 31821Restrict the breakpoint to the thread with the specified global 31822@var{thread-id}. 31823@end table 31824 31825@subsubheading Result 31826 31827@xref{GDB/MI Breakpoint Information}, for details on the format of the 31828resulting breakpoint. 31829 31830@c An out-of-band breakpoint instead of part of the result? 31831 31832@subsubheading @value{GDBN} Command 31833 31834The corresponding @value{GDBN} command is @samp{dprintf}. 31835 31836@subsubheading Example 31837 31838@smallexample 31839(gdb) 318404-dprintf-insert foo "At foo entry\n" 318414^done,bkpt=@{number="1",type="dprintf",disp="keep",enabled="y", 31842addr="0x000000000040061b",func="foo",file="mi-dprintf.c", 31843fullname="mi-dprintf.c",line="25",thread-groups=["i1"], 31844times="0",script=["printf \"At foo entry\\n\"","continue"], 31845original-location="foo"@} 31846(gdb) 318475-dprintf-insert 26 "arg=%d, g=%d\n" arg g 318485^done,bkpt=@{number="2",type="dprintf",disp="keep",enabled="y", 31849addr="0x000000000040062a",func="foo",file="mi-dprintf.c", 31850fullname="mi-dprintf.c",line="26",thread-groups=["i1"], 31851times="0",script=["printf \"arg=%d, g=%d\\n\", arg, g","continue"], 31852original-location="mi-dprintf.c:26"@} 31853(gdb) 31854@end smallexample 31855 31856@subheading The @code{-break-list} Command 31857@findex -break-list 31858 31859@subsubheading Synopsis 31860 31861@smallexample 31862 -break-list 31863@end smallexample 31864 31865Displays the list of inserted breakpoints, showing the following fields: 31866 31867@table @samp 31868@item Number 31869number of the breakpoint 31870@item Type 31871type of the breakpoint: @samp{breakpoint} or @samp{watchpoint} 31872@item Disposition 31873should the breakpoint be deleted or disabled when it is hit: @samp{keep} 31874or @samp{nokeep} 31875@item Enabled 31876is the breakpoint enabled or no: @samp{y} or @samp{n} 31877@item Address 31878memory location at which the breakpoint is set 31879@item What 31880logical location of the breakpoint, expressed by function name, file 31881name, line number 31882@item Thread-groups 31883list of thread groups to which this breakpoint applies 31884@item Times 31885number of times the breakpoint has been hit 31886@end table 31887 31888If there are no breakpoints or watchpoints, the @code{BreakpointTable} 31889@code{body} field is an empty list. 31890 31891@subsubheading @value{GDBN} Command 31892 31893The corresponding @value{GDBN} command is @samp{info break}. 31894 31895@subsubheading Example 31896 31897@smallexample 31898(gdb) 31899-break-list 31900^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 31901hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31902@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31903@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31904@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31905@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31906@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31907body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 31908addr="0x000100d0",func="main",file="hello.c",line="5",thread-groups=["i1"], 31909times="0"@}, 31910bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y", 31911addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c", 31912line="13",thread-groups=["i1"],times="0"@}]@} 31913(gdb) 31914@end smallexample 31915 31916Here's an example of the result when there are no breakpoints: 31917 31918@smallexample 31919(gdb) 31920-break-list 31921^done,BreakpointTable=@{nr_rows="0",nr_cols="6", 31922hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 31923@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 31924@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 31925@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 31926@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 31927@{width="40",alignment="2",col_name="what",colhdr="What"@}], 31928body=[]@} 31929(gdb) 31930@end smallexample 31931 31932@subheading The @code{-break-passcount} Command 31933@findex -break-passcount 31934 31935@subsubheading Synopsis 31936 31937@smallexample 31938 -break-passcount @var{tracepoint-number} @var{passcount} 31939@end smallexample 31940 31941Set the passcount for tracepoint @var{tracepoint-number} to 31942@var{passcount}. If the breakpoint referred to by @var{tracepoint-number} 31943is not a tracepoint, error is emitted. This corresponds to CLI 31944command @samp{passcount}. 31945 31946@subheading The @code{-break-watch} Command 31947@findex -break-watch 31948 31949@subsubheading Synopsis 31950 31951@smallexample 31952 -break-watch [ -a | -r ] 31953@end smallexample 31954 31955Create a watchpoint. With the @samp{-a} option it will create an 31956@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a 31957read from or on a write to the memory location. With the @samp{-r} 31958option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will 31959trigger only when the memory location is accessed for reading. Without 31960either of the options, the watchpoint created is a regular watchpoint, 31961i.e., it will trigger when the memory location is accessed for writing. 31962@xref{Set Watchpoints, , Setting Watchpoints}. 31963 31964Note that @samp{-break-list} will report a single list of watchpoints and 31965breakpoints inserted. 31966 31967@subsubheading @value{GDBN} Command 31968 31969The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and 31970@samp{rwatch}. 31971 31972@subsubheading Example 31973 31974Setting a watchpoint on a variable in the @code{main} function: 31975 31976@smallexample 31977(gdb) 31978-break-watch x 31979^done,wpt=@{number="2",exp="x"@} 31980(gdb) 31981-exec-continue 31982^running 31983(gdb) 31984*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@}, 31985value=@{old="-268439212",new="55"@}, 31986frame=@{func="main",args=[],file="recursive2.c", 31987fullname="/home/foo/bar/recursive2.c",line="5",arch="i386:x86_64"@} 31988(gdb) 31989@end smallexample 31990 31991Setting a watchpoint on a variable local to a function. @value{GDBN} will stop 31992the program execution twice: first for the variable changing value, then 31993for the watchpoint going out of scope. 31994 31995@smallexample 31996(gdb) 31997-break-watch C 31998^done,wpt=@{number="5",exp="C"@} 31999(gdb) 32000-exec-continue 32001^running 32002(gdb) 32003*stopped,reason="watchpoint-trigger", 32004wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@}, 32005frame=@{func="callee4",args=[], 32006file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32007fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13", 32008arch="i386:x86_64"@} 32009(gdb) 32010-exec-continue 32011^running 32012(gdb) 32013*stopped,reason="watchpoint-scope",wpnum="5", 32014frame=@{func="callee3",args=[@{name="strarg", 32015value="0x11940 \"A string argument.\""@}], 32016file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32017fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18", 32018arch="i386:x86_64"@} 32019(gdb) 32020@end smallexample 32021 32022Listing breakpoints and watchpoints, at different points in the program 32023execution. Note that once the watchpoint goes out of scope, it is 32024deleted. 32025 32026@smallexample 32027(gdb) 32028-break-watch C 32029^done,wpt=@{number="2",exp="C"@} 32030(gdb) 32031-break-list 32032^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 32033hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 32034@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 32035@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 32036@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 32037@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 32038@{width="40",alignment="2",col_name="what",colhdr="What"@}], 32039body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 32040addr="0x00010734",func="callee4", 32041file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32042fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",thread-groups=["i1"], 32043times="1"@}, 32044bkpt=@{number="2",type="watchpoint",disp="keep", 32045enabled="y",addr="",what="C",thread-groups=["i1"],times="0"@}]@} 32046(gdb) 32047-exec-continue 32048^running 32049(gdb) 32050*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@}, 32051value=@{old="-276895068",new="3"@}, 32052frame=@{func="callee4",args=[], 32053file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32054fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13", 32055arch="i386:x86_64"@} 32056(gdb) 32057-break-list 32058^done,BreakpointTable=@{nr_rows="2",nr_cols="6", 32059hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 32060@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 32061@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 32062@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 32063@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 32064@{width="40",alignment="2",col_name="what",colhdr="What"@}], 32065body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 32066addr="0x00010734",func="callee4", 32067file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32068fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",thread-groups=["i1"], 32069times="1"@}, 32070bkpt=@{number="2",type="watchpoint",disp="keep", 32071enabled="y",addr="",what="C",thread-groups=["i1"],times="-5"@}]@} 32072(gdb) 32073-exec-continue 32074^running 32075^done,reason="watchpoint-scope",wpnum="2", 32076frame=@{func="callee3",args=[@{name="strarg", 32077value="0x11940 \"A string argument.\""@}], 32078file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32079fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18", 32080arch="i386:x86_64"@} 32081(gdb) 32082-break-list 32083^done,BreakpointTable=@{nr_rows="1",nr_cols="6", 32084hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@}, 32085@{width="14",alignment="-1",col_name="type",colhdr="Type"@}, 32086@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@}, 32087@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@}, 32088@{width="10",alignment="-1",col_name="addr",colhdr="Address"@}, 32089@{width="40",alignment="2",col_name="what",colhdr="What"@}], 32090body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 32091addr="0x00010734",func="callee4", 32092file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 32093fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 32094thread-groups=["i1"],times="1"@}]@} 32095(gdb) 32096@end smallexample 32097 32098 32099@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32100@node GDB/MI Catchpoint Commands 32101@section @sc{gdb/mi} Catchpoint Commands 32102 32103This section documents @sc{gdb/mi} commands for manipulating 32104catchpoints. 32105 32106@menu 32107* Shared Library GDB/MI Catchpoint Commands:: 32108* Ada Exception GDB/MI Catchpoint Commands:: 32109* C++ Exception GDB/MI Catchpoint Commands:: 32110@end menu 32111 32112@node Shared Library GDB/MI Catchpoint Commands 32113@subsection Shared Library @sc{gdb/mi} Catchpoints 32114 32115@subheading The @code{-catch-load} Command 32116@findex -catch-load 32117 32118@subsubheading Synopsis 32119 32120@smallexample 32121 -catch-load [ -t ] [ -d ] @var{regexp} 32122@end smallexample 32123 32124Add a catchpoint for library load events. If the @samp{-t} option is used, 32125the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 32126Breakpoints}). If the @samp{-d} option is used, the catchpoint is created 32127in a disabled state. The @samp{regexp} argument is a regular 32128expression used to match the name of the loaded library. 32129 32130 32131@subsubheading @value{GDBN} Command 32132 32133The corresponding @value{GDBN} command is @samp{catch load}. 32134 32135@subsubheading Example 32136 32137@smallexample 32138-catch-load -t foo.so 32139^done,bkpt=@{number="1",type="catchpoint",disp="del",enabled="y", 32140what="load of library matching foo.so",catch-type="load",times="0"@} 32141(gdb) 32142@end smallexample 32143 32144 32145@subheading The @code{-catch-unload} Command 32146@findex -catch-unload 32147 32148@subsubheading Synopsis 32149 32150@smallexample 32151 -catch-unload [ -t ] [ -d ] @var{regexp} 32152@end smallexample 32153 32154Add a catchpoint for library unload events. If the @samp{-t} option is 32155used, the catchpoint is a temporary one (@pxref{Set Breaks, ,Setting 32156Breakpoints}). If the @samp{-d} option is used, the catchpoint is 32157created in a disabled state. The @samp{regexp} argument is a regular 32158expression used to match the name of the unloaded library. 32159 32160@subsubheading @value{GDBN} Command 32161 32162The corresponding @value{GDBN} command is @samp{catch unload}. 32163 32164@subsubheading Example 32165 32166@smallexample 32167-catch-unload -d bar.so 32168^done,bkpt=@{number="2",type="catchpoint",disp="keep",enabled="n", 32169what="load of library matching bar.so",catch-type="unload",times="0"@} 32170(gdb) 32171@end smallexample 32172 32173@node Ada Exception GDB/MI Catchpoint Commands 32174@subsection Ada Exception @sc{gdb/mi} Catchpoints 32175 32176The following @sc{gdb/mi} commands can be used to create catchpoints 32177that stop the execution when Ada exceptions are being raised. 32178 32179@subheading The @code{-catch-assert} Command 32180@findex -catch-assert 32181 32182@subsubheading Synopsis 32183 32184@smallexample 32185 -catch-assert [ -c @var{condition}] [ -d ] [ -t ] 32186@end smallexample 32187 32188Add a catchpoint for failed Ada assertions. 32189 32190The possible optional parameters for this command are: 32191 32192@table @samp 32193@item -c @var{condition} 32194Make the catchpoint conditional on @var{condition}. 32195@item -d 32196Create a disabled catchpoint. 32197@item -t 32198Create a temporary catchpoint. 32199@end table 32200 32201@subsubheading @value{GDBN} Command 32202 32203The corresponding @value{GDBN} command is @samp{catch assert}. 32204 32205@subsubheading Example 32206 32207@smallexample 32208-catch-assert 32209^done,bkptno="5",bkpt=@{number="5",type="breakpoint",disp="keep", 32210enabled="y",addr="0x0000000000404888",what="failed Ada assertions", 32211thread-groups=["i1"],times="0", 32212original-location="__gnat_debug_raise_assert_failure"@} 32213(gdb) 32214@end smallexample 32215 32216@subheading The @code{-catch-exception} Command 32217@findex -catch-exception 32218 32219@subsubheading Synopsis 32220 32221@smallexample 32222 -catch-exception [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ] 32223 [ -t ] [ -u ] 32224@end smallexample 32225 32226Add a catchpoint stopping when Ada exceptions are raised. 32227By default, the command stops the program when any Ada exception 32228gets raised. But it is also possible, by using some of the 32229optional parameters described below, to create more selective 32230catchpoints. 32231 32232The possible optional parameters for this command are: 32233 32234@table @samp 32235@item -c @var{condition} 32236Make the catchpoint conditional on @var{condition}. 32237@item -d 32238Create a disabled catchpoint. 32239@item -e @var{exception-name} 32240Only stop when @var{exception-name} is raised. This option cannot 32241be used combined with @samp{-u}. 32242@item -t 32243Create a temporary catchpoint. 32244@item -u 32245Stop only when an unhandled exception gets raised. This option 32246cannot be used combined with @samp{-e}. 32247@end table 32248 32249@subsubheading @value{GDBN} Command 32250 32251The corresponding @value{GDBN} commands are @samp{catch exception} 32252and @samp{catch exception unhandled}. 32253 32254@subsubheading Example 32255 32256@smallexample 32257-catch-exception -e Program_Error 32258^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep", 32259enabled="y",addr="0x0000000000404874", 32260what="`Program_Error' Ada exception", thread-groups=["i1"], 32261times="0",original-location="__gnat_debug_raise_exception"@} 32262(gdb) 32263@end smallexample 32264 32265@subheading The @code{-catch-handlers} Command 32266@findex -catch-handlers 32267 32268@subsubheading Synopsis 32269 32270@smallexample 32271 -catch-handlers [ -c @var{condition}] [ -d ] [ -e @var{exception-name} ] 32272 [ -t ] 32273@end smallexample 32274 32275Add a catchpoint stopping when Ada exceptions are handled. 32276By default, the command stops the program when any Ada exception 32277gets handled. But it is also possible, by using some of the 32278optional parameters described below, to create more selective 32279catchpoints. 32280 32281The possible optional parameters for this command are: 32282 32283@table @samp 32284@item -c @var{condition} 32285Make the catchpoint conditional on @var{condition}. 32286@item -d 32287Create a disabled catchpoint. 32288@item -e @var{exception-name} 32289Only stop when @var{exception-name} is handled. 32290@item -t 32291Create a temporary catchpoint. 32292@end table 32293 32294@subsubheading @value{GDBN} Command 32295 32296The corresponding @value{GDBN} command is @samp{catch handlers}. 32297 32298@subsubheading Example 32299 32300@smallexample 32301-catch-handlers -e Constraint_Error 32302^done,bkptno="4",bkpt=@{number="4",type="breakpoint",disp="keep", 32303enabled="y",addr="0x0000000000402f68", 32304what="`Constraint_Error' Ada exception handlers",thread-groups=["i1"], 32305times="0",original-location="__gnat_begin_handler"@} 32306(gdb) 32307@end smallexample 32308 32309@node C++ Exception GDB/MI Catchpoint Commands 32310@subsection C@t{++} Exception @sc{gdb/mi} Catchpoints 32311 32312The following @sc{gdb/mi} commands can be used to create catchpoints 32313that stop the execution when C@t{++} exceptions are being throw, rethrown, 32314or caught. 32315 32316@subheading The @code{-catch-throw} Command 32317@findex -catch-throw 32318 32319@subsubheading Synopsis 32320 32321@smallexample 32322 -catch-throw [ -t ] [ -r @var{regexp}] 32323@end smallexample 32324 32325Stop when the debuggee throws a C@t{++} exception. If @var{regexp} is 32326given, then only exceptions whose type matches the regular expression 32327will be caught. 32328 32329If @samp{-t} is given, then the catchpoint is enabled only for one 32330stop, the catchpoint is automatically deleted after stopping once for 32331the event. 32332 32333@subsubheading @value{GDBN} Command 32334 32335The corresponding @value{GDBN} commands are @samp{catch throw} 32336and @samp{tcatch throw} (@pxref{Set Catchpoints}). 32337 32338@subsubheading Example 32339 32340@smallexample 32341-catch-throw -r exception_type 32342^done,bkpt=@{number="1",type="catchpoint",disp="keep",enabled="y", 32343 what="exception throw",catch-type="throw", 32344 thread-groups=["i1"], 32345 regexp="exception_type",times="0"@} 32346(gdb) 32347-exec-run 32348^running 32349(gdb) 32350~"\n" 32351~"Catchpoint 1 (exception thrown), 0x00007ffff7ae00ed 32352 in __cxa_throw () from /lib64/libstdc++.so.6\n" 32353*stopped,bkptno="1",reason="breakpoint-hit",disp="keep", 32354 frame=@{addr="0x00007ffff7ae00ed",func="__cxa_throw", 32355 args=[],from="/lib64/libstdc++.so.6",arch="i386:x86-64"@}, 32356 thread-id="1",stopped-threads="all",core="6" 32357(gdb) 32358@end smallexample 32359 32360@subheading The @code{-catch-rethrow} Command 32361@findex -catch-rethrow 32362 32363@subsubheading Synopsis 32364 32365@smallexample 32366 -catch-rethrow [ -t ] [ -r @var{regexp}] 32367@end smallexample 32368 32369Stop when a C@t{++} exception is re-thrown. If @var{regexp} is given, 32370then only exceptions whose type matches the regular expression will be 32371caught. 32372 32373If @samp{-t} is given, then the catchpoint is enabled only for one 32374stop, the catchpoint is automatically deleted after the first event is 32375caught. 32376 32377@subsubheading @value{GDBN} Command 32378 32379The corresponding @value{GDBN} commands are @samp{catch rethrow} 32380and @samp{tcatch rethrow} (@pxref{Set Catchpoints}). 32381 32382@subsubheading Example 32383 32384@smallexample 32385-catch-rethrow -r exception_type 32386^done,bkpt=@{number="1",type="catchpoint",disp="keep",enabled="y", 32387 what="exception rethrow",catch-type="rethrow", 32388 thread-groups=["i1"], 32389 regexp="exception_type",times="0"@} 32390(gdb) 32391-exec-run 32392^running 32393(gdb) 32394~"\n" 32395~"Catchpoint 1 (exception rethrown), 0x00007ffff7ae00ed 32396 in __cxa_rethrow () from /lib64/libstdc++.so.6\n" 32397*stopped,bkptno="1",reason="breakpoint-hit",disp="keep", 32398 frame=@{addr="0x00007ffff7ae00ed",func="__cxa_rethrow", 32399 args=[],from="/lib64/libstdc++.so.6",arch="i386:x86-64"@}, 32400 thread-id="1",stopped-threads="all",core="6" 32401(gdb) 32402@end smallexample 32403 32404@subheading The @code{-catch-catch} Command 32405@findex -catch-catch 32406 32407@subsubheading Synopsis 32408 32409@smallexample 32410 -catch-catch [ -t ] [ -r @var{regexp}] 32411@end smallexample 32412 32413Stop when the debuggee catches a C@t{++} exception. If @var{regexp} 32414is given, then only exceptions whose type matches the regular 32415expression will be caught. 32416 32417If @samp{-t} is given, then the catchpoint is enabled only for one 32418stop, the catchpoint is automatically deleted after the first event is 32419caught. 32420 32421@subsubheading @value{GDBN} Command 32422 32423The corresponding @value{GDBN} commands are @samp{catch catch} 32424and @samp{tcatch catch} (@pxref{Set Catchpoints}). 32425 32426@subsubheading Example 32427 32428@smallexample 32429-catch-catch -r exception_type 32430^done,bkpt=@{number="1",type="catchpoint",disp="keep",enabled="y", 32431 what="exception catch",catch-type="catch", 32432 thread-groups=["i1"], 32433 regexp="exception_type",times="0"@} 32434(gdb) 32435-exec-run 32436^running 32437(gdb) 32438~"\n" 32439~"Catchpoint 1 (exception caught), 0x00007ffff7ae00ed 32440 in __cxa_begin_catch () from /lib64/libstdc++.so.6\n" 32441*stopped,bkptno="1",reason="breakpoint-hit",disp="keep", 32442 frame=@{addr="0x00007ffff7ae00ed",func="__cxa_begin_catch", 32443 args=[],from="/lib64/libstdc++.so.6",arch="i386:x86-64"@}, 32444 thread-id="1",stopped-threads="all",core="6" 32445(gdb) 32446@end smallexample 32447 32448@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32449@node GDB/MI Program Context 32450@section @sc{gdb/mi} Program Context 32451 32452@subheading The @code{-exec-arguments} Command 32453@findex -exec-arguments 32454 32455 32456@subsubheading Synopsis 32457 32458@smallexample 32459 -exec-arguments @var{args} 32460@end smallexample 32461 32462Set the inferior program arguments, to be used in the next 32463@samp{-exec-run}. 32464 32465@subsubheading @value{GDBN} Command 32466 32467The corresponding @value{GDBN} command is @samp{set args}. 32468 32469@subsubheading Example 32470 32471@smallexample 32472(gdb) 32473-exec-arguments -v word 32474^done 32475(gdb) 32476@end smallexample 32477 32478 32479@ignore 32480@subheading The @code{-exec-show-arguments} Command 32481@findex -exec-show-arguments 32482 32483@subsubheading Synopsis 32484 32485@smallexample 32486 -exec-show-arguments 32487@end smallexample 32488 32489Print the arguments of the program. 32490 32491@subsubheading @value{GDBN} Command 32492 32493The corresponding @value{GDBN} command is @samp{show args}. 32494 32495@subsubheading Example 32496N.A. 32497@end ignore 32498 32499 32500@subheading The @code{-environment-cd} Command 32501@findex -environment-cd 32502 32503@subsubheading Synopsis 32504 32505@smallexample 32506 -environment-cd @var{pathdir} 32507@end smallexample 32508 32509Set @value{GDBN}'s working directory. 32510 32511@subsubheading @value{GDBN} Command 32512 32513The corresponding @value{GDBN} command is @samp{cd}. 32514 32515@subsubheading Example 32516 32517@smallexample 32518(gdb) 32519-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 32520^done 32521(gdb) 32522@end smallexample 32523 32524 32525@subheading The @code{-environment-directory} Command 32526@findex -environment-directory 32527 32528@subsubheading Synopsis 32529 32530@smallexample 32531 -environment-directory [ -r ] [ @var{pathdir} ]+ 32532@end smallexample 32533 32534Add directories @var{pathdir} to beginning of search path for source files. 32535If the @samp{-r} option is used, the search path is reset to the default 32536search path. If directories @var{pathdir} are supplied in addition to the 32537@samp{-r} option, the search path is first reset and then addition 32538occurs as normal. 32539Multiple directories may be specified, separated by blanks. Specifying 32540multiple directories in a single command 32541results in the directories added to the beginning of the 32542search path in the same order they were presented in the command. 32543If blanks are needed as 32544part of a directory name, double-quotes should be used around 32545the name. In the command output, the path will show up separated 32546by the system directory-separator character. The directory-separator 32547character must not be used 32548in any directory name. 32549If no directories are specified, the current search path is displayed. 32550 32551@subsubheading @value{GDBN} Command 32552 32553The corresponding @value{GDBN} command is @samp{dir}. 32554 32555@subsubheading Example 32556 32557@smallexample 32558(gdb) 32559-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb 32560^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 32561(gdb) 32562-environment-directory "" 32563^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" 32564(gdb) 32565-environment-directory -r /home/jjohnstn/src/gdb /usr/src 32566^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd" 32567(gdb) 32568-environment-directory -r 32569^done,source-path="$cdir:$cwd" 32570(gdb) 32571@end smallexample 32572 32573 32574@subheading The @code{-environment-path} Command 32575@findex -environment-path 32576 32577@subsubheading Synopsis 32578 32579@smallexample 32580 -environment-path [ -r ] [ @var{pathdir} ]+ 32581@end smallexample 32582 32583Add directories @var{pathdir} to beginning of search path for object files. 32584If the @samp{-r} option is used, the search path is reset to the original 32585search path that existed at gdb start-up. If directories @var{pathdir} are 32586supplied in addition to the 32587@samp{-r} option, the search path is first reset and then addition 32588occurs as normal. 32589Multiple directories may be specified, separated by blanks. Specifying 32590multiple directories in a single command 32591results in the directories added to the beginning of the 32592search path in the same order they were presented in the command. 32593If blanks are needed as 32594part of a directory name, double-quotes should be used around 32595the name. In the command output, the path will show up separated 32596by the system directory-separator character. The directory-separator 32597character must not be used 32598in any directory name. 32599If no directories are specified, the current path is displayed. 32600 32601 32602@subsubheading @value{GDBN} Command 32603 32604The corresponding @value{GDBN} command is @samp{path}. 32605 32606@subsubheading Example 32607 32608@smallexample 32609(gdb) 32610-environment-path 32611^done,path="/usr/bin" 32612(gdb) 32613-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin 32614^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin" 32615(gdb) 32616-environment-path -r /usr/local/bin 32617^done,path="/usr/local/bin:/usr/bin" 32618(gdb) 32619@end smallexample 32620 32621 32622@subheading The @code{-environment-pwd} Command 32623@findex -environment-pwd 32624 32625@subsubheading Synopsis 32626 32627@smallexample 32628 -environment-pwd 32629@end smallexample 32630 32631Show the current working directory. 32632 32633@subsubheading @value{GDBN} Command 32634 32635The corresponding @value{GDBN} command is @samp{pwd}. 32636 32637@subsubheading Example 32638 32639@smallexample 32640(gdb) 32641-environment-pwd 32642^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb" 32643(gdb) 32644@end smallexample 32645 32646@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32647@node GDB/MI Thread Commands 32648@section @sc{gdb/mi} Thread Commands 32649 32650 32651@subheading The @code{-thread-info} Command 32652@findex -thread-info 32653 32654@subsubheading Synopsis 32655 32656@smallexample 32657 -thread-info [ @var{thread-id} ] 32658@end smallexample 32659 32660Reports information about either a specific thread, if the 32661@var{thread-id} parameter is present, or about all threads. 32662@var{thread-id} is the thread's global thread ID. When printing 32663information about all threads, also reports the global ID of the 32664current thread. 32665 32666@subsubheading @value{GDBN} Command 32667 32668The @samp{info thread} command prints the same information 32669about all threads. 32670 32671@subsubheading Result 32672 32673The result contains the following attributes: 32674 32675@table @samp 32676@item threads 32677A list of threads. The format of the elements of the list is described in 32678@ref{GDB/MI Thread Information}. 32679 32680@item current-thread-id 32681The global id of the currently selected thread. This field is omitted if there 32682is no selected thread (for example, when the selected inferior is not running, 32683and therefore has no threads) or if a @var{thread-id} argument was passed to 32684the command. 32685 32686@end table 32687 32688@subsubheading Example 32689 32690@smallexample 32691-thread-info 32692^done,threads=[ 32693@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 32694 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall", 32695 args=[]@},state="running"@}, 32696@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 32697 frame=@{level="0",addr="0x0804891f",func="foo", 32698 args=[@{name="i",value="10"@}], 32699 file="/tmp/a.c",fullname="/tmp/a.c",line="158",arch="i386:x86_64"@}, 32700 state="running"@}], 32701current-thread-id="1" 32702(gdb) 32703@end smallexample 32704 32705@subheading The @code{-thread-list-ids} Command 32706@findex -thread-list-ids 32707 32708@subsubheading Synopsis 32709 32710@smallexample 32711 -thread-list-ids 32712@end smallexample 32713 32714Produces a list of the currently known global @value{GDBN} thread ids. 32715At the end of the list it also prints the total number of such 32716threads. 32717 32718This command is retained for historical reasons, the 32719@code{-thread-info} command should be used instead. 32720 32721@subsubheading @value{GDBN} Command 32722 32723Part of @samp{info threads} supplies the same information. 32724 32725@subsubheading Example 32726 32727@smallexample 32728(gdb) 32729-thread-list-ids 32730^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 32731current-thread-id="1",number-of-threads="3" 32732(gdb) 32733@end smallexample 32734 32735 32736@subheading The @code{-thread-select} Command 32737@findex -thread-select 32738 32739@subsubheading Synopsis 32740 32741@smallexample 32742 -thread-select @var{thread-id} 32743@end smallexample 32744 32745Make thread with global thread number @var{thread-id} the current 32746thread. It prints the number of the new current thread, and the 32747topmost frame for that thread. 32748 32749This command is deprecated in favor of explicitly using the 32750@samp{--thread} option to each command. 32751 32752@subsubheading @value{GDBN} Command 32753 32754The corresponding @value{GDBN} command is @samp{thread}. 32755 32756@subsubheading Example 32757 32758@smallexample 32759(gdb) 32760-exec-next 32761^running 32762(gdb) 32763*stopped,reason="end-stepping-range",thread-id="2",line="187", 32764file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c" 32765(gdb) 32766-thread-list-ids 32767^done, 32768thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@}, 32769number-of-threads="3" 32770(gdb) 32771-thread-select 3 32772^done,new-thread-id="3", 32773frame=@{level="0",func="vprintf", 32774args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@}, 32775@{name="arg",value="0x2"@}],file="vprintf.c",line="31",arch="i386:x86_64"@} 32776(gdb) 32777@end smallexample 32778 32779@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32780@node GDB/MI Ada Tasking Commands 32781@section @sc{gdb/mi} Ada Tasking Commands 32782 32783@subheading The @code{-ada-task-info} Command 32784@findex -ada-task-info 32785 32786@subsubheading Synopsis 32787 32788@smallexample 32789 -ada-task-info [ @var{task-id} ] 32790@end smallexample 32791 32792Reports information about either a specific Ada task, if the 32793@var{task-id} parameter is present, or about all Ada tasks. 32794 32795@subsubheading @value{GDBN} Command 32796 32797The @samp{info tasks} command prints the same information 32798about all Ada tasks (@pxref{Ada Tasks}). 32799 32800@subsubheading Result 32801 32802The result is a table of Ada tasks. The following columns are 32803defined for each Ada task: 32804 32805@table @samp 32806@item current 32807This field exists only for the current thread. It has the value @samp{*}. 32808 32809@item id 32810The identifier that @value{GDBN} uses to refer to the Ada task. 32811 32812@item task-id 32813The identifier that the target uses to refer to the Ada task. 32814 32815@item thread-id 32816The global thread identifier of the thread corresponding to the Ada 32817task. 32818 32819This field should always exist, as Ada tasks are always implemented 32820on top of a thread. But if @value{GDBN} cannot find this corresponding 32821thread for any reason, the field is omitted. 32822 32823@item parent-id 32824This field exists only when the task was created by another task. 32825In this case, it provides the ID of the parent task. 32826 32827@item priority 32828The base priority of the task. 32829 32830@item state 32831The current state of the task. For a detailed description of the 32832possible states, see @ref{Ada Tasks}. 32833 32834@item name 32835The name of the task. 32836 32837@end table 32838 32839@subsubheading Example 32840 32841@smallexample 32842-ada-task-info 32843^done,tasks=@{nr_rows="3",nr_cols="8", 32844hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@}, 32845@{width="3",alignment="1",col_name="id",colhdr="ID"@}, 32846@{width="9",alignment="1",col_name="task-id",colhdr="TID"@}, 32847@{width="4",alignment="1",col_name="thread-id",colhdr=""@}, 32848@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@}, 32849@{width="3",alignment="1",col_name="priority",colhdr="Pri"@}, 32850@{width="22",alignment="-1",col_name="state",colhdr="State"@}, 32851@{width="1",alignment="2",col_name="name",colhdr="Name"@}], 32852body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48", 32853state="Child Termination Wait",name="main_task"@}]@} 32854(gdb) 32855@end smallexample 32856 32857@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 32858@node GDB/MI Program Execution 32859@section @sc{gdb/mi} Program Execution 32860 32861These are the asynchronous commands which generate the out-of-band 32862record @samp{*stopped}. Currently @value{GDBN} only really executes 32863asynchronously with remote targets and this interaction is mimicked in 32864other cases. 32865 32866@subheading The @code{-exec-continue} Command 32867@findex -exec-continue 32868 32869@subsubheading Synopsis 32870 32871@smallexample 32872 -exec-continue [--reverse] [--all|--thread-group N] 32873@end smallexample 32874 32875Resumes the execution of the inferior program, which will continue 32876to execute until it reaches a debugger stop event. If the 32877@samp{--reverse} option is specified, execution resumes in reverse until 32878it reaches a stop event. Stop events may include 32879@itemize @bullet 32880@item 32881breakpoints or watchpoints 32882@item 32883signals or exceptions 32884@item 32885the end of the process (or its beginning under @samp{--reverse}) 32886@item 32887the end or beginning of a replay log if one is being used. 32888@end itemize 32889In all-stop mode (@pxref{All-Stop 32890Mode}), may resume only one thread, or all threads, depending on the 32891value of the @samp{scheduler-locking} variable. If @samp{--all} is 32892specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is 32893ignored in all-stop mode. If the @samp{--thread-group} options is 32894specified, then all threads in that thread group are resumed. 32895 32896@subsubheading @value{GDBN} Command 32897 32898The corresponding @value{GDBN} corresponding is @samp{continue}. 32899 32900@subsubheading Example 32901 32902@smallexample 32903-exec-continue 32904^running 32905(gdb) 32906@@Hello world 32907*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{ 32908func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c", 32909line="13",arch="i386:x86_64"@} 32910(gdb) 32911@end smallexample 32912 32913For a @samp{breakpoint-hit} stopped reason, when the breakpoint 32914encountered has multiple locations, the field @samp{bkptno} is 32915followed by the field @samp{locno}. 32916 32917@smallexample 32918-exec-continue 32919^running 32920(gdb) 32921@@Hello world 32922*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",locno="3",frame=@{ 32923func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c", 32924line="13",arch="i386:x86_64"@} 32925(gdb) 32926@end smallexample 32927 32928@subheading The @code{-exec-finish} Command 32929@findex -exec-finish 32930 32931@subsubheading Synopsis 32932 32933@smallexample 32934 -exec-finish [--reverse] 32935@end smallexample 32936 32937Resumes the execution of the inferior program until the current 32938function is exited. Displays the results returned by the function. 32939If the @samp{--reverse} option is specified, resumes the reverse 32940execution of the inferior program until the point where current 32941function was called. 32942 32943@subsubheading @value{GDBN} Command 32944 32945The corresponding @value{GDBN} command is @samp{finish}. 32946 32947@subsubheading Example 32948 32949Function returning @code{void}. 32950 32951@smallexample 32952-exec-finish 32953^running 32954(gdb) 32955@@hello from foo 32956*stopped,reason="function-finished",frame=@{func="main",args=[], 32957file="hello.c",fullname="/home/foo/bar/hello.c",line="7",arch="i386:x86_64"@} 32958(gdb) 32959@end smallexample 32960 32961Function returning other than @code{void}. The name of the internal 32962@value{GDBN} variable storing the result is printed, together with the 32963value itself. 32964 32965@smallexample 32966-exec-finish 32967^running 32968(gdb) 32969*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo", 32970args=[@{name="a",value="1"],@{name="b",value="9"@}@}, 32971file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 32972arch="i386:x86_64"@}, 32973gdb-result-var="$1",return-value="0" 32974(gdb) 32975@end smallexample 32976 32977 32978@subheading The @code{-exec-interrupt} Command 32979@findex -exec-interrupt 32980 32981@subsubheading Synopsis 32982 32983@smallexample 32984 -exec-interrupt [--all|--thread-group N] 32985@end smallexample 32986 32987Interrupts the background execution of the target. Note how the token 32988associated with the stop message is the one for the execution command 32989that has been interrupted. The token for the interrupt itself only 32990appears in the @samp{^done} output. If the user is trying to 32991interrupt a non-running program, an error message will be printed. 32992 32993Note that when asynchronous execution is enabled, this command is 32994asynchronous just like other execution commands. That is, first the 32995@samp{^done} response will be printed, and the target stop will be 32996reported after that using the @samp{*stopped} notification. 32997 32998In non-stop mode, only the context thread is interrupted by default. 32999All threads (in all inferiors) will be interrupted if the 33000@samp{--all} option is specified. If the @samp{--thread-group} 33001option is specified, all threads in that group will be interrupted. 33002 33003@subsubheading @value{GDBN} Command 33004 33005The corresponding @value{GDBN} command is @samp{interrupt}. 33006 33007@subsubheading Example 33008 33009@smallexample 33010(gdb) 33011111-exec-continue 33012111^running 33013 33014(gdb) 33015222-exec-interrupt 33016222^done 33017(gdb) 33018111*stopped,signal-name="SIGINT",signal-meaning="Interrupt", 33019frame=@{addr="0x00010140",func="foo",args=[],file="try.c", 33020fullname="/home/foo/bar/try.c",line="13",arch="i386:x86_64"@} 33021(gdb) 33022 33023(gdb) 33024-exec-interrupt 33025^error,msg="mi_cmd_exec_interrupt: Inferior not executing." 33026(gdb) 33027@end smallexample 33028 33029@subheading The @code{-exec-jump} Command 33030@findex -exec-jump 33031 33032@subsubheading Synopsis 33033 33034@smallexample 33035 -exec-jump @var{locspec} 33036@end smallexample 33037 33038Resumes execution of the inferior program at the address to 33039which @var{locspec} resolves. @xref{Location Specifications}, 33040for a description of the different forms of @var{locspec}. 33041 33042@subsubheading @value{GDBN} Command 33043 33044The corresponding @value{GDBN} command is @samp{jump}. 33045 33046@subsubheading Example 33047 33048@smallexample 33049-exec-jump foo.c:10 33050*running,thread-id="all" 33051^running 33052@end smallexample 33053 33054 33055@subheading The @code{-exec-next} Command 33056@findex -exec-next 33057 33058@subsubheading Synopsis 33059 33060@smallexample 33061 -exec-next [--reverse] 33062@end smallexample 33063 33064Resumes execution of the inferior program, stopping when the beginning 33065of the next source line is reached. 33066 33067If the @samp{--reverse} option is specified, resumes reverse execution 33068of the inferior program, stopping at the beginning of the previous 33069source line. If you issue this command on the first line of a 33070function, it will take you back to the caller of that function, to the 33071source line where the function was called. 33072 33073 33074@subsubheading @value{GDBN} Command 33075 33076The corresponding @value{GDBN} command is @samp{next}. 33077 33078@subsubheading Example 33079 33080@smallexample 33081-exec-next 33082^running 33083(gdb) 33084*stopped,reason="end-stepping-range",line="8",file="hello.c" 33085(gdb) 33086@end smallexample 33087 33088 33089@subheading The @code{-exec-next-instruction} Command 33090@findex -exec-next-instruction 33091 33092@subsubheading Synopsis 33093 33094@smallexample 33095 -exec-next-instruction [--reverse] 33096@end smallexample 33097 33098Executes one machine instruction. If the instruction is a function 33099call, continues until the function returns. If the program stops at an 33100instruction in the middle of a source line, the address will be 33101printed as well. 33102 33103If the @samp{--reverse} option is specified, resumes reverse execution 33104of the inferior program, stopping at the previous instruction. If the 33105previously executed instruction was a return from another function, 33106it will continue to execute in reverse until the call to that function 33107(from the current stack frame) is reached. 33108 33109@subsubheading @value{GDBN} Command 33110 33111The corresponding @value{GDBN} command is @samp{nexti}. 33112 33113@subsubheading Example 33114 33115@smallexample 33116(gdb) 33117-exec-next-instruction 33118^running 33119 33120(gdb) 33121*stopped,reason="end-stepping-range", 33122addr="0x000100d4",line="5",file="hello.c" 33123(gdb) 33124@end smallexample 33125 33126 33127@subheading The @code{-exec-return} Command 33128@findex -exec-return 33129 33130@subsubheading Synopsis 33131 33132@smallexample 33133 -exec-return 33134@end smallexample 33135 33136Makes current function return immediately. Doesn't execute the inferior. 33137Displays the new current frame. 33138 33139@subsubheading @value{GDBN} Command 33140 33141The corresponding @value{GDBN} command is @samp{return}. 33142 33143@subsubheading Example 33144 33145@smallexample 33146(gdb) 33147200-break-insert callee4 33148200^done,bkpt=@{number="1",addr="0x00010734", 33149file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@} 33150(gdb) 33151000-exec-run 33152000^running 33153(gdb) 33154000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 33155frame=@{func="callee4",args=[], 33156file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33157fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 33158arch="i386:x86_64"@} 33159(gdb) 33160205-break-delete 33161205^done 33162(gdb) 33163111-exec-return 33164111^done,frame=@{level="0",func="callee3", 33165args=[@{name="strarg", 33166value="0x11940 \"A string argument.\""@}], 33167file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33168fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18", 33169arch="i386:x86_64"@} 33170(gdb) 33171@end smallexample 33172 33173 33174@subheading The @code{-exec-run} Command 33175@findex -exec-run 33176 33177@subsubheading Synopsis 33178 33179@smallexample 33180 -exec-run [ --all | --thread-group N ] [ --start ] 33181@end smallexample 33182 33183Starts execution of the inferior from the beginning. The inferior 33184executes until either a breakpoint is encountered or the program 33185exits. In the latter case the output will include an exit code, if 33186the program has exited exceptionally. 33187 33188When neither the @samp{--all} nor the @samp{--thread-group} option 33189is specified, the current inferior is started. If the 33190@samp{--thread-group} option is specified, it should refer to a thread 33191group of type @samp{process}, and that thread group will be started. 33192If the @samp{--all} option is specified, then all inferiors will be started. 33193 33194Using the @samp{--start} option instructs the debugger to stop 33195the execution at the start of the inferior's main subprogram, 33196following the same behavior as the @code{start} command 33197(@pxref{Starting}). 33198 33199@subsubheading @value{GDBN} Command 33200 33201The corresponding @value{GDBN} command is @samp{run}. 33202 33203@subsubheading Examples 33204 33205@smallexample 33206(gdb) 33207-break-insert main 33208^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@} 33209(gdb) 33210-exec-run 33211^running 33212(gdb) 33213*stopped,reason="breakpoint-hit",disp="keep",bkptno="1", 33214frame=@{func="main",args=[],file="recursive2.c", 33215fullname="/home/foo/bar/recursive2.c",line="4",arch="i386:x86_64"@} 33216(gdb) 33217@end smallexample 33218 33219@noindent 33220Program exited normally: 33221 33222@smallexample 33223(gdb) 33224-exec-run 33225^running 33226(gdb) 33227x = 55 33228*stopped,reason="exited-normally" 33229(gdb) 33230@end smallexample 33231 33232@noindent 33233Program exited exceptionally: 33234 33235@smallexample 33236(gdb) 33237-exec-run 33238^running 33239(gdb) 33240x = 55 33241*stopped,reason="exited",exit-code="01" 33242(gdb) 33243@end smallexample 33244 33245Another way the program can terminate is if it receives a signal such as 33246@code{SIGINT}. In this case, @sc{gdb/mi} displays this: 33247 33248@smallexample 33249(gdb) 33250*stopped,reason="exited-signalled",signal-name="SIGINT", 33251signal-meaning="Interrupt" 33252@end smallexample 33253 33254 33255@c @subheading -exec-signal 33256 33257 33258@subheading The @code{-exec-step} Command 33259@findex -exec-step 33260 33261@subsubheading Synopsis 33262 33263@smallexample 33264 -exec-step [--reverse] 33265@end smallexample 33266 33267Resumes execution of the inferior program, stopping when the beginning 33268of the next source line is reached, if the next source line is not a 33269function call. If it is, stop at the first instruction of the called 33270function. If the @samp{--reverse} option is specified, resumes reverse 33271execution of the inferior program, stopping at the beginning of the 33272previously executed source line. 33273 33274@subsubheading @value{GDBN} Command 33275 33276The corresponding @value{GDBN} command is @samp{step}. 33277 33278@subsubheading Example 33279 33280Stepping into a function: 33281 33282@smallexample 33283-exec-step 33284^running 33285(gdb) 33286*stopped,reason="end-stepping-range", 33287frame=@{func="foo",args=[@{name="a",value="10"@}, 33288@{name="b",value="0"@}],file="recursive2.c", 33289fullname="/home/foo/bar/recursive2.c",line="11",arch="i386:x86_64"@} 33290(gdb) 33291@end smallexample 33292 33293Regular stepping: 33294 33295@smallexample 33296-exec-step 33297^running 33298(gdb) 33299*stopped,reason="end-stepping-range",line="14",file="recursive2.c" 33300(gdb) 33301@end smallexample 33302 33303 33304@subheading The @code{-exec-step-instruction} Command 33305@findex -exec-step-instruction 33306 33307@subsubheading Synopsis 33308 33309@smallexample 33310 -exec-step-instruction [--reverse] 33311@end smallexample 33312 33313Resumes the inferior which executes one machine instruction. If the 33314@samp{--reverse} option is specified, resumes reverse execution of the 33315inferior program, stopping at the previously executed instruction. 33316The output, once @value{GDBN} has stopped, will vary depending on 33317whether we have stopped in the middle of a source line or not. In the 33318former case, the address at which the program stopped will be printed 33319as well. 33320 33321@subsubheading @value{GDBN} Command 33322 33323The corresponding @value{GDBN} command is @samp{stepi}. 33324 33325@subsubheading Example 33326 33327@smallexample 33328(gdb) 33329-exec-step-instruction 33330^running 33331 33332(gdb) 33333*stopped,reason="end-stepping-range", 33334frame=@{func="foo",args=[],file="try.c", 33335fullname="/home/foo/bar/try.c",line="10",arch="i386:x86_64"@} 33336(gdb) 33337-exec-step-instruction 33338^running 33339 33340(gdb) 33341*stopped,reason="end-stepping-range", 33342frame=@{addr="0x000100f4",func="foo",args=[],file="try.c", 33343fullname="/home/foo/bar/try.c",line="10",arch="i386:x86_64"@} 33344(gdb) 33345@end smallexample 33346 33347 33348@subheading The @code{-exec-until} Command 33349@findex -exec-until 33350 33351@subsubheading Synopsis 33352 33353@smallexample 33354 -exec-until [ @var{locspec} ] 33355@end smallexample 33356 33357Executes the inferior until it reaches the address to which 33358@var{locspec} resolves. If there is no argument, the inferior 33359executes until it reaches a source line greater than the current one. 33360The reason for stopping in this case will be @samp{location-reached}. 33361 33362@subsubheading @value{GDBN} Command 33363 33364The corresponding @value{GDBN} command is @samp{until}. 33365 33366@subsubheading Example 33367 33368@smallexample 33369(gdb) 33370-exec-until recursive2.c:6 33371^running 33372(gdb) 33373x = 55 33374*stopped,reason="location-reached",frame=@{func="main",args=[], 33375file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6", 33376arch="i386:x86_64"@} 33377(gdb) 33378@end smallexample 33379 33380@ignore 33381@subheading -file-clear 33382Is this going away???? 33383@end ignore 33384 33385@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33386@node GDB/MI Stack Manipulation 33387@section @sc{gdb/mi} Stack Manipulation Commands 33388 33389@subheading The @code{-enable-frame-filters} Command 33390@findex -enable-frame-filters 33391 33392@smallexample 33393-enable-frame-filters 33394@end smallexample 33395 33396@value{GDBN} allows Python-based frame filters to affect the output of 33397the MI commands relating to stack traces. As there is no way to 33398implement this in a fully backward-compatible way, a front end must 33399request that this functionality be enabled. 33400 33401Once enabled, this feature cannot be disabled. 33402 33403Note that if Python support has not been compiled into @value{GDBN}, 33404this command will still succeed (and do nothing). 33405 33406@subheading The @code{-stack-info-frame} Command 33407@findex -stack-info-frame 33408 33409@subsubheading Synopsis 33410 33411@smallexample 33412 -stack-info-frame 33413@end smallexample 33414 33415Get info on the selected frame. 33416 33417@subsubheading @value{GDBN} Command 33418 33419The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame} 33420(without arguments). 33421 33422@subsubheading Example 33423 33424@smallexample 33425(gdb) 33426-stack-info-frame 33427^done,frame=@{level="1",addr="0x0001076c",func="callee3", 33428file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33429fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17", 33430arch="i386:x86_64"@} 33431(gdb) 33432@end smallexample 33433 33434@subheading The @code{-stack-info-depth} Command 33435@findex -stack-info-depth 33436 33437@subsubheading Synopsis 33438 33439@smallexample 33440 -stack-info-depth [ @var{max-depth} ] 33441@end smallexample 33442 33443Return the depth of the stack. If the integer argument @var{max-depth} 33444is specified, do not count beyond @var{max-depth} frames. 33445 33446@subsubheading @value{GDBN} Command 33447 33448There's no equivalent @value{GDBN} command. 33449 33450@subsubheading Example 33451 33452For a stack with frame levels 0 through 11: 33453 33454@smallexample 33455(gdb) 33456-stack-info-depth 33457^done,depth="12" 33458(gdb) 33459-stack-info-depth 4 33460^done,depth="4" 33461(gdb) 33462-stack-info-depth 12 33463^done,depth="12" 33464(gdb) 33465-stack-info-depth 11 33466^done,depth="11" 33467(gdb) 33468-stack-info-depth 13 33469^done,depth="12" 33470(gdb) 33471@end smallexample 33472 33473@anchor{-stack-list-arguments} 33474@subheading The @code{-stack-list-arguments} Command 33475@findex -stack-list-arguments 33476 33477@subsubheading Synopsis 33478 33479@smallexample 33480 -stack-list-arguments [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 33481 [ @var{low-frame} @var{high-frame} ] 33482@end smallexample 33483 33484Display a list of the arguments for the frames between @var{low-frame} 33485and @var{high-frame} (inclusive). If @var{low-frame} and 33486@var{high-frame} are not provided, list the arguments for the whole 33487call stack. If the two arguments are equal, show the single frame 33488at the corresponding level. It is an error if @var{low-frame} is 33489larger than the actual number of frames. On the other hand, 33490@var{high-frame} may be larger than the actual number of frames, in 33491which case only existing frames will be returned. 33492 33493If @var{print-values} is 0 or @code{--no-values}, print only the names of 33494the variables; if it is 1 or @code{--all-values}, print also their 33495values; and if it is 2 or @code{--simple-values}, print the name, 33496type and value for simple data types, and the name and type for arrays, 33497structures and unions. If the option @code{--no-frame-filters} is 33498supplied, then Python frame filters will not be executed. 33499 33500If the @code{--skip-unavailable} option is specified, arguments that 33501are not available are not listed. Partially available arguments 33502are still displayed, however. 33503 33504Use of this command to obtain arguments in a single frame is 33505deprecated in favor of the @samp{-stack-list-variables} command. 33506 33507@subsubheading @value{GDBN} Command 33508 33509@value{GDBN} does not have an equivalent command. @code{gdbtk} has a 33510@samp{gdb_get_args} command which partially overlaps with the 33511functionality of @samp{-stack-list-arguments}. 33512 33513@subsubheading Example 33514 33515@smallexample 33516(gdb) 33517-stack-list-frames 33518^done, 33519stack=[ 33520frame=@{level="0",addr="0x00010734",func="callee4", 33521file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33522fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8", 33523arch="i386:x86_64"@}, 33524frame=@{level="1",addr="0x0001076c",func="callee3", 33525file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33526fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17", 33527arch="i386:x86_64"@}, 33528frame=@{level="2",addr="0x0001078c",func="callee2", 33529file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33530fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22", 33531arch="i386:x86_64"@}, 33532frame=@{level="3",addr="0x000107b4",func="callee1", 33533file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33534fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27", 33535arch="i386:x86_64"@}, 33536frame=@{level="4",addr="0x000107e0",func="main", 33537file="../../../devo/gdb/testsuite/gdb.mi/basics.c", 33538fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32", 33539arch="i386:x86_64"@}] 33540(gdb) 33541-stack-list-arguments 0 33542^done, 33543stack-args=[ 33544frame=@{level="0",args=[]@}, 33545frame=@{level="1",args=[name="strarg"]@}, 33546frame=@{level="2",args=[name="intarg",name="strarg"]@}, 33547frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@}, 33548frame=@{level="4",args=[]@}] 33549(gdb) 33550-stack-list-arguments 1 33551^done, 33552stack-args=[ 33553frame=@{level="0",args=[]@}, 33554frame=@{level="1", 33555 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 33556frame=@{level="2",args=[ 33557@{name="intarg",value="2"@}, 33558@{name="strarg",value="0x11940 \"A string argument.\""@}]@}, 33559@{frame=@{level="3",args=[ 33560@{name="intarg",value="2"@}, 33561@{name="strarg",value="0x11940 \"A string argument.\""@}, 33562@{name="fltarg",value="3.5"@}]@}, 33563frame=@{level="4",args=[]@}] 33564(gdb) 33565-stack-list-arguments 0 2 2 33566^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}] 33567(gdb) 33568-stack-list-arguments 1 2 2 33569^done,stack-args=[frame=@{level="2", 33570args=[@{name="intarg",value="2"@}, 33571@{name="strarg",value="0x11940 \"A string argument.\""@}]@}] 33572(gdb) 33573@end smallexample 33574 33575@c @subheading -stack-list-exception-handlers 33576 33577 33578@anchor{-stack-list-frames} 33579@subheading The @code{-stack-list-frames} Command 33580@findex -stack-list-frames 33581 33582@subsubheading Synopsis 33583 33584@smallexample 33585 -stack-list-frames [ --no-frame-filters @var{low-frame} @var{high-frame} ] 33586@end smallexample 33587 33588List the frames currently on the stack. For each frame it displays the 33589following info: 33590 33591@table @samp 33592@item @var{level} 33593The frame number, 0 being the topmost frame, i.e., the innermost function. 33594@item @var{addr} 33595The @code{$pc} value for that frame. 33596@item @var{func} 33597Function name. 33598@item @var{file} 33599File name of the source file where the function lives. 33600@item @var{fullname} 33601The full file name of the source file where the function lives. 33602@item @var{line} 33603Line number corresponding to the @code{$pc}. 33604@item @var{from} 33605The shared library where this function is defined. This is only given 33606if the frame's function is not known. 33607@item @var{arch} 33608Frame's architecture. 33609@end table 33610 33611If invoked without arguments, this command prints a backtrace for the 33612whole stack. If given two integer arguments, it shows the frames whose 33613levels are between the two arguments (inclusive). If the two arguments 33614are equal, it shows the single frame at the corresponding level. It is 33615an error if @var{low-frame} is larger than the actual number of 33616frames. On the other hand, @var{high-frame} may be larger than the 33617actual number of frames, in which case only existing frames will be 33618returned. If the option @code{--no-frame-filters} is supplied, then 33619Python frame filters will not be executed. 33620 33621@subsubheading @value{GDBN} Command 33622 33623The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}. 33624 33625@subsubheading Example 33626 33627Full stack backtrace: 33628 33629@smallexample 33630(gdb) 33631-stack-list-frames 33632^done,stack= 33633[frame=@{level="0",addr="0x0001076c",func="foo", 33634 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11", 33635 arch="i386:x86_64"@}, 33636frame=@{level="1",addr="0x000107a4",func="foo", 33637 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33638 arch="i386:x86_64"@}, 33639frame=@{level="2",addr="0x000107a4",func="foo", 33640 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33641 arch="i386:x86_64"@}, 33642frame=@{level="3",addr="0x000107a4",func="foo", 33643 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33644 arch="i386:x86_64"@}, 33645frame=@{level="4",addr="0x000107a4",func="foo", 33646 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33647 arch="i386:x86_64"@}, 33648frame=@{level="5",addr="0x000107a4",func="foo", 33649 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33650 arch="i386:x86_64"@}, 33651frame=@{level="6",addr="0x000107a4",func="foo", 33652 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33653 arch="i386:x86_64"@}, 33654frame=@{level="7",addr="0x000107a4",func="foo", 33655 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33656 arch="i386:x86_64"@}, 33657frame=@{level="8",addr="0x000107a4",func="foo", 33658 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33659 arch="i386:x86_64"@}, 33660frame=@{level="9",addr="0x000107a4",func="foo", 33661 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33662 arch="i386:x86_64"@}, 33663frame=@{level="10",addr="0x000107a4",func="foo", 33664 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33665 arch="i386:x86_64"@}, 33666frame=@{level="11",addr="0x00010738",func="main", 33667 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4", 33668 arch="i386:x86_64"@}] 33669(gdb) 33670@end smallexample 33671 33672Show frames between @var{low_frame} and @var{high_frame}: 33673 33674@smallexample 33675(gdb) 33676-stack-list-frames 3 5 33677^done,stack= 33678[frame=@{level="3",addr="0x000107a4",func="foo", 33679 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33680 arch="i386:x86_64"@}, 33681frame=@{level="4",addr="0x000107a4",func="foo", 33682 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33683 arch="i386:x86_64"@}, 33684frame=@{level="5",addr="0x000107a4",func="foo", 33685 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33686 arch="i386:x86_64"@}] 33687(gdb) 33688@end smallexample 33689 33690Show a single frame: 33691 33692@smallexample 33693(gdb) 33694-stack-list-frames 3 3 33695^done,stack= 33696[frame=@{level="3",addr="0x000107a4",func="foo", 33697 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14", 33698 arch="i386:x86_64"@}] 33699(gdb) 33700@end smallexample 33701 33702 33703@subheading The @code{-stack-list-locals} Command 33704@findex -stack-list-locals 33705@anchor{-stack-list-locals} 33706 33707@subsubheading Synopsis 33708 33709@smallexample 33710 -stack-list-locals [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 33711@end smallexample 33712 33713Display the local variable names for the selected frame. If 33714@var{print-values} is 0 or @code{--no-values}, print only the names of 33715the variables; if it is 1 or @code{--all-values}, print also their 33716values; and if it is 2 or @code{--simple-values}, print the name, 33717type and value for simple data types, and the name and type for arrays, 33718structures and unions. In this last case, a frontend can immediately 33719display the value of simple data types and create variable objects for 33720other data types when the user wishes to explore their values in 33721more detail. If the option @code{--no-frame-filters} is supplied, then 33722Python frame filters will not be executed. 33723 33724If the @code{--skip-unavailable} option is specified, local variables 33725that are not available are not listed. Partially available local 33726variables are still displayed, however. 33727 33728This command is deprecated in favor of the 33729@samp{-stack-list-variables} command. 33730 33731@subsubheading @value{GDBN} Command 33732 33733@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}. 33734 33735@subsubheading Example 33736 33737@smallexample 33738(gdb) 33739-stack-list-locals 0 33740^done,locals=[name="A",name="B",name="C"] 33741(gdb) 33742-stack-list-locals --all-values 33743^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@}, 33744 @{name="C",value="@{1, 2, 3@}"@}] 33745-stack-list-locals --simple-values 33746^done,locals=[@{name="A",type="int",value="1"@}, 33747 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}] 33748(gdb) 33749@end smallexample 33750 33751@anchor{-stack-list-variables} 33752@subheading The @code{-stack-list-variables} Command 33753@findex -stack-list-variables 33754 33755@subsubheading Synopsis 33756 33757@smallexample 33758 -stack-list-variables [ --no-frame-filters ] [ --skip-unavailable ] @var{print-values} 33759@end smallexample 33760 33761Display the names of local variables and function arguments for the selected frame. If 33762@var{print-values} is 0 or @code{--no-values}, print only the names of 33763the variables; if it is 1 or @code{--all-values}, print also their 33764values; and if it is 2 or @code{--simple-values}, print the name, 33765type and value for simple data types, and the name and type for arrays, 33766structures and unions. If the option @code{--no-frame-filters} is 33767supplied, then Python frame filters will not be executed. 33768 33769If the @code{--skip-unavailable} option is specified, local variables 33770and arguments that are not available are not listed. Partially 33771available arguments and local variables are still displayed, however. 33772 33773@subsubheading Example 33774 33775@smallexample 33776(gdb) 33777-stack-list-variables --thread 1 --frame 0 --all-values 33778^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}] 33779(gdb) 33780@end smallexample 33781 33782 33783@subheading The @code{-stack-select-frame} Command 33784@findex -stack-select-frame 33785 33786@subsubheading Synopsis 33787 33788@smallexample 33789 -stack-select-frame @var{framenum} 33790@end smallexample 33791 33792Change the selected frame. Select a different frame @var{framenum} on 33793the stack. 33794 33795This command in deprecated in favor of passing the @samp{--frame} 33796option to every command. 33797 33798@subsubheading @value{GDBN} Command 33799 33800The corresponding @value{GDBN} commands are @samp{frame}, @samp{up}, 33801@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}. 33802 33803@subsubheading Example 33804 33805@smallexample 33806(gdb) 33807-stack-select-frame 2 33808^done 33809(gdb) 33810@end smallexample 33811 33812@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 33813@node GDB/MI Variable Objects 33814@section @sc{gdb/mi} Variable Objects 33815 33816@ignore 33817 33818@subheading Motivation for Variable Objects in @sc{gdb/mi} 33819 33820For the implementation of a variable debugger window (locals, watched 33821expressions, etc.), we are proposing the adaptation of the existing code 33822used by @code{Insight}. 33823 33824The two main reasons for that are: 33825 33826@enumerate 1 33827@item 33828It has been proven in practice (it is already on its second generation). 33829 33830@item 33831It will shorten development time (needless to say how important it is 33832now). 33833@end enumerate 33834 33835The original interface was designed to be used by Tcl code, so it was 33836slightly changed so it could be used through @sc{gdb/mi}. This section 33837describes the @sc{gdb/mi} operations that will be available and gives some 33838hints about their use. 33839 33840@emph{Note}: In addition to the set of operations described here, we 33841expect the @sc{gui} implementation of a variable window to require, at 33842least, the following operations: 33843 33844@itemize @bullet 33845@item @code{-gdb-show} @code{output-radix} 33846@item @code{-stack-list-arguments} 33847@item @code{-stack-list-locals} 33848@item @code{-stack-select-frame} 33849@end itemize 33850 33851@end ignore 33852 33853@subheading Introduction to Variable Objects 33854 33855@cindex variable objects in @sc{gdb/mi} 33856 33857Variable objects are "object-oriented" MI interface for examining and 33858changing values of expressions. Unlike some other MI interfaces that 33859work with expressions, variable objects are specifically designed for 33860simple and efficient presentation in the frontend. A variable object 33861is identified by string name. When a variable object is created, the 33862frontend specifies the expression for that variable object. The 33863expression can be a simple variable, or it can be an arbitrary complex 33864expression, and can even involve CPU registers. After creating a 33865variable object, the frontend can invoke other variable object 33866operations---for example to obtain or change the value of a variable 33867object, or to change display format. 33868 33869Variable objects have hierarchical tree structure. Any variable object 33870that corresponds to a composite type, such as structure in C, has 33871a number of child variable objects, for example corresponding to each 33872element of a structure. A child variable object can itself have 33873children, recursively. Recursion ends when we reach 33874leaf variable objects, which always have built-in types. Child variable 33875objects are created only by explicit request, so if a frontend 33876is not interested in the children of a particular variable object, no 33877child will be created. 33878 33879For a leaf variable object it is possible to obtain its value as a 33880string, or set the value from a string. String value can be also 33881obtained for a non-leaf variable object, but it's generally a string 33882that only indicates the type of the object, and does not list its 33883contents. Assignment to a non-leaf variable object is not allowed. 33884 33885A frontend does not need to read the values of all variable objects each time 33886the program stops. Instead, MI provides an update command that lists all 33887variable objects whose values has changed since the last update 33888operation. This considerably reduces the amount of data that must 33889be transferred to the frontend. As noted above, children variable 33890objects are created on demand, and only leaf variable objects have a 33891real value. As result, gdb will read target memory only for leaf 33892variables that frontend has created. 33893 33894The automatic update is not always desirable. For example, a frontend 33895might want to keep a value of some expression for future reference, 33896and never update it. For another example, fetching memory is 33897relatively slow for embedded targets, so a frontend might want 33898to disable automatic update for the variables that are either not 33899visible on the screen, or ``closed''. This is possible using so 33900called ``frozen variable objects''. Such variable objects are never 33901implicitly updated. 33902 33903Variable objects can be either @dfn{fixed} or @dfn{floating}. For the 33904fixed variable object, the expression is parsed when the variable 33905object is created, including associating identifiers to specific 33906variables. The meaning of expression never changes. For a floating 33907variable object the values of variables whose names appear in the 33908expressions are re-evaluated every time in the context of the current 33909frame. Consider this example: 33910 33911@smallexample 33912void do_work(...) 33913@{ 33914 struct work_state state; 33915 33916 if (...) 33917 do_work(...); 33918@} 33919@end smallexample 33920 33921If a fixed variable object for the @code{state} variable is created in 33922this function, and we enter the recursive call, the variable 33923object will report the value of @code{state} in the top-level 33924@code{do_work} invocation. On the other hand, a floating variable 33925object will report the value of @code{state} in the current frame. 33926 33927If an expression specified when creating a fixed variable object 33928refers to a local variable, the variable object becomes bound to the 33929thread and frame in which the variable object is created. When such 33930variable object is updated, @value{GDBN} makes sure that the 33931thread/frame combination the variable object is bound to still exists, 33932and re-evaluates the variable object in context of that thread/frame. 33933 33934The following is the complete set of @sc{gdb/mi} operations defined to 33935access this functionality: 33936 33937@multitable @columnfractions .4 .6 33938@item @strong{Operation} 33939@tab @strong{Description} 33940 33941@item @code{-enable-pretty-printing} 33942@tab enable Python-based pretty-printing 33943@item @code{-var-create} 33944@tab create a variable object 33945@item @code{-var-delete} 33946@tab delete the variable object and/or its children 33947@item @code{-var-set-format} 33948@tab set the display format of this variable 33949@item @code{-var-show-format} 33950@tab show the display format of this variable 33951@item @code{-var-info-num-children} 33952@tab tells how many children this object has 33953@item @code{-var-list-children} 33954@tab return a list of the object's children 33955@item @code{-var-info-type} 33956@tab show the type of this variable object 33957@item @code{-var-info-expression} 33958@tab print parent-relative expression that this variable object represents 33959@item @code{-var-info-path-expression} 33960@tab print full expression that this variable object represents 33961@item @code{-var-show-attributes} 33962@tab is this variable editable? does it exist here? 33963@item @code{-var-evaluate-expression} 33964@tab get the value of this variable 33965@item @code{-var-assign} 33966@tab set the value of this variable 33967@item @code{-var-update} 33968@tab update the variable and its children 33969@item @code{-var-set-frozen} 33970@tab set frozenness attribute 33971@item @code{-var-set-update-range} 33972@tab set range of children to display on update 33973@end multitable 33974 33975In the next subsection we describe each operation in detail and suggest 33976how it can be used. 33977 33978@subheading Description And Use of Operations on Variable Objects 33979 33980@subheading The @code{-enable-pretty-printing} Command 33981@findex -enable-pretty-printing 33982 33983@smallexample 33984-enable-pretty-printing 33985@end smallexample 33986 33987@value{GDBN} allows Python-based visualizers to affect the output of the 33988MI variable object commands. However, because there was no way to 33989implement this in a fully backward-compatible way, a front end must 33990request that this functionality be enabled. 33991 33992Once enabled, this feature cannot be disabled. 33993 33994Note that if Python support has not been compiled into @value{GDBN}, 33995this command will still succeed (and do nothing). 33996 33997@subheading The @code{-var-create} Command 33998@findex -var-create 33999 34000@subsubheading Synopsis 34001 34002@smallexample 34003 -var-create @{@var{name} | "-"@} 34004 @{@var{frame-addr} | "*" | "@@"@} @var{expression} 34005@end smallexample 34006 34007This operation creates a variable object, which allows the monitoring of 34008a variable, the result of an expression, a memory cell or a CPU 34009register. 34010 34011The @var{name} parameter is the string by which the object can be 34012referenced. It must be unique. If @samp{-} is specified, the varobj 34013system will generate a string ``varNNNNNN'' automatically. It will be 34014unique provided that one does not specify @var{name} of that format. 34015The command fails if a duplicate name is found. 34016 34017The frame under which the expression should be evaluated can be 34018specified by @var{frame-addr}. A @samp{*} indicates that the current 34019frame should be used. A @samp{@@} indicates that a floating variable 34020object must be created. 34021 34022@var{expression} is any expression valid on the current language set (must not 34023begin with a @samp{*}), or one of the following: 34024 34025@itemize @bullet 34026@item 34027@samp{*@var{addr}}, where @var{addr} is the address of a memory cell 34028 34029@item 34030@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD) 34031 34032@item 34033@samp{$@var{regname}} --- a CPU register name 34034@end itemize 34035 34036@cindex dynamic varobj 34037A varobj's contents may be provided by a Python-based pretty-printer. In this 34038case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs 34039have slightly different semantics in some cases. If the 34040@code{-enable-pretty-printing} command is not sent, then @value{GDBN} 34041will never create a dynamic varobj. This ensures backward 34042compatibility for existing clients. 34043 34044@subsubheading Result 34045 34046This operation returns attributes of the newly-created varobj. These 34047are: 34048 34049@table @samp 34050@item name 34051The name of the varobj. 34052 34053@item numchild 34054The number of children of the varobj. This number is not necessarily 34055reliable for a dynamic varobj. Instead, you must examine the 34056@samp{has_more} attribute. 34057 34058@item value 34059The varobj's scalar value. For a varobj whose type is some sort of 34060aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value 34061will not be interesting. 34062 34063@item type 34064The varobj's type. This is a string representation of the type, as 34065would be printed by the @value{GDBN} CLI. If @samp{print object} 34066(@pxref{Print Settings, set print object}) is set to @code{on}, the 34067@emph{actual} (derived) type of the object is shown rather than the 34068@emph{declared} one. 34069 34070@item thread-id 34071If a variable object is bound to a specific thread, then this is the 34072thread's global identifier. 34073 34074@item has_more 34075For a dynamic varobj, this indicates whether there appear to be any 34076children available. For a non-dynamic varobj, this will be 0. 34077 34078@item dynamic 34079This attribute will be present and have the value @samp{1} if the 34080varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 34081then this attribute will not be present. 34082 34083@item displayhint 34084A dynamic varobj can supply a display hint to the front end. The 34085value comes directly from the Python pretty-printer object's 34086@code{display_hint} method. @xref{Pretty Printing API}. 34087@end table 34088 34089Typical output will look like this: 34090 34091@smallexample 34092 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}", 34093 has_more="@var{has_more}" 34094@end smallexample 34095 34096 34097@subheading The @code{-var-delete} Command 34098@findex -var-delete 34099 34100@subsubheading Synopsis 34101 34102@smallexample 34103 -var-delete [ -c ] @var{name} 34104@end smallexample 34105 34106Deletes a previously created variable object and all of its children. 34107With the @samp{-c} option, just deletes the children. 34108 34109Returns an error if the object @var{name} is not found. 34110 34111 34112@subheading The @code{-var-set-format} Command 34113@findex -var-set-format 34114 34115@subsubheading Synopsis 34116 34117@smallexample 34118 -var-set-format @var{name} @var{format-spec} 34119@end smallexample 34120 34121Sets the output format for the value of the object @var{name} to be 34122@var{format-spec}. 34123 34124@anchor{-var-set-format} 34125The syntax for the @var{format-spec} is as follows: 34126 34127@smallexample 34128 @var{format-spec} @expansion{} 34129 @{binary | decimal | hexadecimal | octal | natural | zero-hexadecimal@} 34130@end smallexample 34131 34132The natural format is the default format choosen automatically 34133based on the variable type (like decimal for an @code{int}, hex 34134for pointers, etc.). 34135 34136The zero-hexadecimal format has a representation similar to hexadecimal 34137but with padding zeroes to the left of the value. For example, a 32-bit 34138hexadecimal value of 0x1234 would be represented as 0x00001234 in the 34139zero-hexadecimal format. 34140 34141For a variable with children, the format is set only on the 34142variable itself, and the children are not affected. 34143 34144@subheading The @code{-var-show-format} Command 34145@findex -var-show-format 34146 34147@subsubheading Synopsis 34148 34149@smallexample 34150 -var-show-format @var{name} 34151@end smallexample 34152 34153Returns the format used to display the value of the object @var{name}. 34154 34155@smallexample 34156 @var{format} @expansion{} 34157 @var{format-spec} 34158@end smallexample 34159 34160 34161@subheading The @code{-var-info-num-children} Command 34162@findex -var-info-num-children 34163 34164@subsubheading Synopsis 34165 34166@smallexample 34167 -var-info-num-children @var{name} 34168@end smallexample 34169 34170Returns the number of children of a variable object @var{name}: 34171 34172@smallexample 34173 numchild=@var{n} 34174@end smallexample 34175 34176Note that this number is not completely reliable for a dynamic varobj. 34177It will return the current number of children, but more children may 34178be available. 34179 34180 34181@subheading The @code{-var-list-children} Command 34182@findex -var-list-children 34183 34184@subsubheading Synopsis 34185 34186@smallexample 34187 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}] 34188@end smallexample 34189@anchor{-var-list-children} 34190 34191Return a list of the children of the specified variable object and 34192create variable objects for them, if they do not already exist. With 34193a single argument or if @var{print-values} has a value of 0 or 34194@code{--no-values}, print only the names of the variables; if 34195@var{print-values} is 1 or @code{--all-values}, also print their 34196values; and if it is 2 or @code{--simple-values} print the name and 34197value for simple data types and just the name for arrays, structures 34198and unions. 34199 34200@var{from} and @var{to}, if specified, indicate the range of children 34201to report. If @var{from} or @var{to} is less than zero, the range is 34202reset and all children will be reported. Otherwise, children starting 34203at @var{from} (zero-based) and up to and excluding @var{to} will be 34204reported. 34205 34206If a child range is requested, it will only affect the current call to 34207@code{-var-list-children}, but not future calls to @code{-var-update}. 34208For this, you must instead use @code{-var-set-update-range}. The 34209intent of this approach is to enable a front end to implement any 34210update approach it likes; for example, scrolling a view may cause the 34211front end to request more children with @code{-var-list-children}, and 34212then the front end could call @code{-var-set-update-range} with a 34213different range to ensure that future updates are restricted to just 34214the visible items. 34215 34216For each child the following results are returned: 34217 34218@table @var 34219 34220@item name 34221Name of the variable object created for this child. 34222 34223@item exp 34224The expression to be shown to the user by the front end to designate this child. 34225For example this may be the name of a structure member. 34226 34227For a dynamic varobj, this value cannot be used to form an 34228expression. There is no way to do this at all with a dynamic varobj. 34229 34230For C/C@t{++} structures there are several pseudo children returned to 34231designate access qualifiers. For these pseudo children @var{exp} is 34232@samp{public}, @samp{private}, or @samp{protected}. In this case the 34233type and value are not present. 34234 34235A dynamic varobj will not report the access qualifying 34236pseudo-children, regardless of the language. This information is not 34237available at all with a dynamic varobj. 34238 34239@item numchild 34240Number of children this child has. For a dynamic varobj, this will be 342410. 34242 34243@item type 34244The type of the child. If @samp{print object} 34245(@pxref{Print Settings, set print object}) is set to @code{on}, the 34246@emph{actual} (derived) type of the object is shown rather than the 34247@emph{declared} one. 34248 34249@item value 34250If values were requested, this is the value. 34251 34252@item thread-id 34253If this variable object is associated with a thread, this is the 34254thread's global thread id. Otherwise this result is not present. 34255 34256@item frozen 34257If the variable object is frozen, this variable will be present with a value of 1. 34258 34259@item displayhint 34260A dynamic varobj can supply a display hint to the front end. The 34261value comes directly from the Python pretty-printer object's 34262@code{display_hint} method. @xref{Pretty Printing API}. 34263 34264@item dynamic 34265This attribute will be present and have the value @samp{1} if the 34266varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 34267then this attribute will not be present. 34268 34269@end table 34270 34271The result may have its own attributes: 34272 34273@table @samp 34274@item displayhint 34275A dynamic varobj can supply a display hint to the front end. The 34276value comes directly from the Python pretty-printer object's 34277@code{display_hint} method. @xref{Pretty Printing API}. 34278 34279@item has_more 34280This is an integer attribute which is nonzero if there are children 34281remaining after the end of the selected range. 34282@end table 34283 34284@subsubheading Example 34285 34286@smallexample 34287(gdb) 34288 -var-list-children n 34289 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 34290 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}] 34291(gdb) 34292 -var-list-children --all-values n 34293 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp}, 34294 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}] 34295@end smallexample 34296 34297 34298@subheading The @code{-var-info-type} Command 34299@findex -var-info-type 34300 34301@subsubheading Synopsis 34302 34303@smallexample 34304 -var-info-type @var{name} 34305@end smallexample 34306 34307Returns the type of the specified variable @var{name}. The type is 34308returned as a string in the same format as it is output by the 34309@value{GDBN} CLI: 34310 34311@smallexample 34312 type=@var{typename} 34313@end smallexample 34314 34315 34316@subheading The @code{-var-info-expression} Command 34317@findex -var-info-expression 34318 34319@subsubheading Synopsis 34320 34321@smallexample 34322 -var-info-expression @var{name} 34323@end smallexample 34324 34325Returns a string that is suitable for presenting this 34326variable object in user interface. The string is generally 34327not valid expression in the current language, and cannot be evaluated. 34328 34329For example, if @code{a} is an array, and variable object 34330@code{A} was created for @code{a}, then we'll get this output: 34331 34332@smallexample 34333(gdb) -var-info-expression A.1 34334^done,lang="C",exp="1" 34335@end smallexample 34336 34337@noindent 34338Here, the value of @code{lang} is the language name, which can be 34339found in @ref{Supported Languages}. 34340 34341Note that the output of the @code{-var-list-children} command also 34342includes those expressions, so the @code{-var-info-expression} command 34343is of limited use. 34344 34345@subheading The @code{-var-info-path-expression} Command 34346@findex -var-info-path-expression 34347 34348@subsubheading Synopsis 34349 34350@smallexample 34351 -var-info-path-expression @var{name} 34352@end smallexample 34353 34354Returns an expression that can be evaluated in the current 34355context and will yield the same value that a variable object has. 34356Compare this with the @code{-var-info-expression} command, which 34357result can be used only for UI presentation. Typical use of 34358the @code{-var-info-path-expression} command is creating a 34359watchpoint from a variable object. 34360 34361This command is currently not valid for children of a dynamic varobj, 34362and will give an error when invoked on one. 34363 34364For example, suppose @code{C} is a C@t{++} class, derived from class 34365@code{Base}, and that the @code{Base} class has a member called 34366@code{m_size}. Assume a variable @code{c} is has the type of 34367@code{C} and a variable object @code{C} was created for variable 34368@code{c}. Then, we'll get this output: 34369@smallexample 34370(gdb) -var-info-path-expression C.Base.public.m_size 34371^done,path_expr=((Base)c).m_size) 34372@end smallexample 34373 34374@subheading The @code{-var-show-attributes} Command 34375@findex -var-show-attributes 34376 34377@subsubheading Synopsis 34378 34379@smallexample 34380 -var-show-attributes @var{name} 34381@end smallexample 34382 34383List attributes of the specified variable object @var{name}: 34384 34385@smallexample 34386 status=@var{attr} [ ( ,@var{attr} )* ] 34387@end smallexample 34388 34389@noindent 34390where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}. 34391 34392@subheading The @code{-var-evaluate-expression} Command 34393@findex -var-evaluate-expression 34394 34395@subsubheading Synopsis 34396 34397@smallexample 34398 -var-evaluate-expression [-f @var{format-spec}] @var{name} 34399@end smallexample 34400 34401Evaluates the expression that is represented by the specified variable 34402object and returns its value as a string. The format of the string 34403can be specified with the @samp{-f} option. The possible values of 34404this option are the same as for @code{-var-set-format} 34405(@pxref{-var-set-format}). If the @samp{-f} option is not specified, 34406the current display format will be used. The current display format 34407can be changed using the @code{-var-set-format} command. 34408 34409@smallexample 34410 value=@var{value} 34411@end smallexample 34412 34413Note that one must invoke @code{-var-list-children} for a variable 34414before the value of a child variable can be evaluated. 34415 34416@subheading The @code{-var-assign} Command 34417@findex -var-assign 34418 34419@subsubheading Synopsis 34420 34421@smallexample 34422 -var-assign @var{name} @var{expression} 34423@end smallexample 34424 34425Assigns the value of @var{expression} to the variable object specified 34426by @var{name}. The object must be @samp{editable}. If the variable's 34427value is altered by the assign, the variable will show up in any 34428subsequent @code{-var-update} list. 34429 34430@subsubheading Example 34431 34432@smallexample 34433(gdb) 34434-var-assign var1 3 34435^done,value="3" 34436(gdb) 34437-var-update * 34438^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}] 34439(gdb) 34440@end smallexample 34441 34442@subheading The @code{-var-update} Command 34443@findex -var-update 34444 34445@subsubheading Synopsis 34446 34447@smallexample 34448 -var-update [@var{print-values}] @{@var{name} | "*"@} 34449@end smallexample 34450 34451Reevaluate the expressions corresponding to the variable object 34452@var{name} and all its direct and indirect children, and return the 34453list of variable objects whose values have changed; @var{name} must 34454be a root variable object. Here, ``changed'' means that the result of 34455@code{-var-evaluate-expression} before and after the 34456@code{-var-update} is different. If @samp{*} is used as the variable 34457object names, all existing variable objects are updated, except 34458for frozen ones (@pxref{-var-set-frozen}). The option 34459@var{print-values} determines whether both names and values, or just 34460names are printed. The possible values of this option are the same 34461as for @code{-var-list-children} (@pxref{-var-list-children}). It is 34462recommended to use the @samp{--all-values} option, to reduce the 34463number of MI commands needed on each program stop. 34464 34465With the @samp{*} parameter, if a variable object is bound to a 34466currently running thread, it will not be updated, without any 34467diagnostic. 34468 34469If @code{-var-set-update-range} was previously used on a varobj, then 34470only the selected range of children will be reported. 34471 34472@code{-var-update} reports all the changed varobjs in a tuple named 34473@samp{changelist}. 34474 34475Each item in the change list is itself a tuple holding: 34476 34477@table @samp 34478@item name 34479The name of the varobj. 34480 34481@item value 34482If values were requested for this update, then this field will be 34483present and will hold the value of the varobj. 34484 34485@item in_scope 34486@anchor{-var-update} 34487This field is a string which may take one of three values: 34488 34489@table @code 34490@item "true" 34491The variable object's current value is valid. 34492 34493@item "false" 34494The variable object does not currently hold a valid value but it may 34495hold one in the future if its associated expression comes back into 34496scope. 34497 34498@item "invalid" 34499The variable object no longer holds a valid value. 34500This can occur when the executable file being debugged has changed, 34501either through recompilation or by using the @value{GDBN} @code{file} 34502command. The front end should normally choose to delete these variable 34503objects. 34504@end table 34505 34506In the future new values may be added to this list so the front should 34507be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}. 34508 34509@item type_changed 34510This is only present if the varobj is still valid. If the type 34511changed, then this will be the string @samp{true}; otherwise it will 34512be @samp{false}. 34513 34514When a varobj's type changes, its children are also likely to have 34515become incorrect. Therefore, the varobj's children are automatically 34516deleted when this attribute is @samp{true}. Also, the varobj's update 34517range, when set using the @code{-var-set-update-range} command, is 34518unset. 34519 34520@item new_type 34521If the varobj's type changed, then this field will be present and will 34522hold the new type. 34523 34524@item new_num_children 34525For a dynamic varobj, if the number of children changed, or if the 34526type changed, this will be the new number of children. 34527 34528The @samp{numchild} field in other varobj responses is generally not 34529valid for a dynamic varobj -- it will show the number of children that 34530@value{GDBN} knows about, but because dynamic varobjs lazily 34531instantiate their children, this will not reflect the number of 34532children which may be available. 34533 34534The @samp{new_num_children} attribute only reports changes to the 34535number of children known by @value{GDBN}. This is the only way to 34536detect whether an update has removed children (which necessarily can 34537only happen at the end of the update range). 34538 34539@item displayhint 34540The display hint, if any. 34541 34542@item has_more 34543This is an integer value, which will be 1 if there are more children 34544available outside the varobj's update range. 34545 34546@item dynamic 34547This attribute will be present and have the value @samp{1} if the 34548varobj is a dynamic varobj. If the varobj is not a dynamic varobj, 34549then this attribute will not be present. 34550 34551@item new_children 34552If new children were added to a dynamic varobj within the selected 34553update range (as set by @code{-var-set-update-range}), then they will 34554be listed in this attribute. 34555@end table 34556 34557@subsubheading Example 34558 34559@smallexample 34560(gdb) 34561-var-assign var1 3 34562^done,value="3" 34563(gdb) 34564-var-update --all-values var1 34565^done,changelist=[@{name="var1",value="3",in_scope="true", 34566type_changed="false"@}] 34567(gdb) 34568@end smallexample 34569 34570@subheading The @code{-var-set-frozen} Command 34571@findex -var-set-frozen 34572@anchor{-var-set-frozen} 34573 34574@subsubheading Synopsis 34575 34576@smallexample 34577 -var-set-frozen @var{name} @var{flag} 34578@end smallexample 34579 34580Set the frozenness flag on the variable object @var{name}. The 34581@var{flag} parameter should be either @samp{1} to make the variable 34582frozen or @samp{0} to make it unfrozen. If a variable object is 34583frozen, then neither itself, nor any of its children, are 34584implicitly updated by @code{-var-update} of 34585a parent variable or by @code{-var-update *}. Only 34586@code{-var-update} of the variable itself will update its value and 34587values of its children. After a variable object is unfrozen, it is 34588implicitly updated by all subsequent @code{-var-update} operations. 34589Unfreezing a variable does not update it, only subsequent 34590@code{-var-update} does. 34591 34592@subsubheading Example 34593 34594@smallexample 34595(gdb) 34596-var-set-frozen V 1 34597^done 34598(gdb) 34599@end smallexample 34600 34601@subheading The @code{-var-set-update-range} command 34602@findex -var-set-update-range 34603@anchor{-var-set-update-range} 34604 34605@subsubheading Synopsis 34606 34607@smallexample 34608 -var-set-update-range @var{name} @var{from} @var{to} 34609@end smallexample 34610 34611Set the range of children to be returned by future invocations of 34612@code{-var-update}. 34613 34614@var{from} and @var{to} indicate the range of children to report. If 34615@var{from} or @var{to} is less than zero, the range is reset and all 34616children will be reported. Otherwise, children starting at @var{from} 34617(zero-based) and up to and excluding @var{to} will be reported. 34618 34619@subsubheading Example 34620 34621@smallexample 34622(gdb) 34623-var-set-update-range V 1 2 34624^done 34625@end smallexample 34626 34627@subheading The @code{-var-set-visualizer} command 34628@findex -var-set-visualizer 34629@anchor{-var-set-visualizer} 34630 34631@subsubheading Synopsis 34632 34633@smallexample 34634 -var-set-visualizer @var{name} @var{visualizer} 34635@end smallexample 34636 34637Set a visualizer for the variable object @var{name}. 34638 34639@var{visualizer} is the visualizer to use. The special value 34640@samp{None} means to disable any visualizer in use. 34641 34642If not @samp{None}, @var{visualizer} must be a Python expression. 34643This expression must evaluate to a callable object which accepts a 34644single argument. @value{GDBN} will call this object with the value of 34645the varobj @var{name} as an argument (this is done so that the same 34646Python pretty-printing code can be used for both the CLI and MI). 34647When called, this object must return an object which conforms to the 34648pretty-printing interface (@pxref{Pretty Printing API}). 34649 34650The pre-defined function @code{gdb.default_visualizer} may be used to 34651select a visualizer by following the built-in process 34652(@pxref{Selecting Pretty-Printers}). This is done automatically when 34653a varobj is created, and so ordinarily is not needed. 34654 34655This feature is only available if Python support is enabled. The MI 34656command @code{-list-features} (@pxref{GDB/MI Support Commands}) 34657can be used to check this. 34658 34659@subsubheading Example 34660 34661Resetting the visualizer: 34662 34663@smallexample 34664(gdb) 34665-var-set-visualizer V None 34666^done 34667@end smallexample 34668 34669Reselecting the default (type-based) visualizer: 34670 34671@smallexample 34672(gdb) 34673-var-set-visualizer V gdb.default_visualizer 34674^done 34675@end smallexample 34676 34677Suppose @code{SomeClass} is a visualizer class. A lambda expression 34678can be used to instantiate this class for a varobj: 34679 34680@smallexample 34681(gdb) 34682-var-set-visualizer V "lambda val: SomeClass()" 34683^done 34684@end smallexample 34685 34686@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 34687@node GDB/MI Data Manipulation 34688@section @sc{gdb/mi} Data Manipulation 34689 34690@cindex data manipulation, in @sc{gdb/mi} 34691@cindex @sc{gdb/mi}, data manipulation 34692This section describes the @sc{gdb/mi} commands that manipulate data: 34693examine memory and registers, evaluate expressions, etc. 34694 34695For details about what an addressable memory unit is, 34696@pxref{addressable memory unit}. 34697 34698@c REMOVED FROM THE INTERFACE. 34699@c @subheading -data-assign 34700@c Change the value of a program variable. Plenty of side effects. 34701@c @subsubheading GDB Command 34702@c set variable 34703@c @subsubheading Example 34704@c N.A. 34705 34706@subheading The @code{-data-disassemble} Command 34707@findex -data-disassemble 34708 34709@subsubheading Synopsis 34710 34711@smallexample 34712 -data-disassemble 34713 ( -s @var{start-addr} -e @var{end-addr} 34714 | -a @var{addr} 34715 | -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ) 34716 [ --opcodes @var{opcodes-mode} ] 34717 [ --source ] 34718 [ -- @var{mode} ] 34719@end smallexample 34720 34721@noindent 34722Where: 34723 34724@table @samp 34725@item @var{start-addr} 34726is the beginning address (or @code{$pc}) 34727@item @var{end-addr} 34728is the end address 34729@item @var{addr} 34730is an address anywhere within (or the name of) the function to 34731disassemble. If an address is specified, the whole function 34732surrounding that address will be disassembled. If a name is 34733specified, the whole function with that name will be disassembled. 34734@item @var{filename} 34735is the name of the file to disassemble 34736@item @var{linenum} 34737is the line number to disassemble around 34738@item @var{lines} 34739is the number of disassembly lines to be produced. If it is -1, 34740the whole function will be disassembled, in case no @var{end-addr} is 34741specified. If @var{end-addr} is specified as a non-zero value, and 34742@var{lines} is lower than the number of disassembly lines between 34743@var{start-addr} and @var{end-addr}, only @var{lines} lines are 34744displayed; if @var{lines} is higher than the number of lines between 34745@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr} 34746are displayed. 34747@item @var{opcodes-mode} 34748can only be used with @var{mode} 0, and should be one of the following: 34749@table @samp 34750@item none 34751no opcode information will be included in the result. 34752 34753@item bytes 34754opcodes will be included in the result, the opcodes will be formatted 34755as for @kbd{disassemble /b}. 34756 34757@item display 34758opcodes will be included in the result, the opcodes will be formatted 34759as for @kbd{disassemble /r}. 34760@end table 34761@item @var{mode} 34762the use of @var{mode} is deprecated in favour of using the 34763@code{--opcodes} and @code{--source} options. When no @var{mode} is 34764given, @var{mode} 0 will be assumed. However, the @var{mode} is still 34765available for backward compatibility. The @var{mode} should be one of: 34766@table @samp 34767@item 0 34768@emph{disassembly only}, this is the default mode if no mode is 34769specified. 34770 34771@item 1 34772@emph{mixed source and disassembly (deprecated)}, it is not possible 34773to recreate this mode using @code{--opcodes} and @code{--source} 34774options. 34775 34776@item 2 34777@emph{disassembly with raw opcodes}, this mode is equivalent to using 34778@var{mode} 0 and passing @code{--opcodes bytes} to the command. 34779 34780@item 3 34781@emph{mixed source and disassembly with raw opcodes (deprecated)}, it 34782is not possible to recreate this mode using @code{--opcodes} and 34783@code{--source} options. 34784 34785@item 4 34786@emph{mixed source and disassembly}, this mode is equivalent to using 34787@var{mode} 0 and passing @code{--source} to the command. 34788 34789@item 5 34790@emph{mixed source and disassembly with raw opcodes}, this mode is 34791equivalent to using @var{mode} 0 and passing @code{--opcodes bytes} 34792and @code{--source} to the command. 34793@end table 34794Modes 1 and 3 are deprecated. The output is ``source centric'' 34795which hasn't proved useful in practice. 34796@xref{Machine Code}, for a discussion of the difference between 34797@code{/m} and @code{/s} output of the @code{disassemble} command. 34798@end table 34799 34800The @code{--source} can only be used with @var{mode} 0. Passing this 34801option will include the source code in the disassembly result as if 34802@var{mode} 4 or 5 had been used. 34803 34804@subsubheading Result 34805 34806The result of the @code{-data-disassemble} command will be a list named 34807@samp{asm_insns}, the contents of this list depend on the options used 34808with the @code{-data-disassemble} command. 34809 34810For modes 0 and 2, and when the @code{--source} option is not used, the 34811@samp{asm_insns} list contains tuples with the following fields: 34812 34813@table @code 34814@item address 34815The address at which this instruction was disassembled. 34816 34817@item func-name 34818The name of the function this instruction is within. 34819 34820@item offset 34821The decimal offset in bytes from the start of @samp{func-name}. 34822 34823@item inst 34824The text disassembly for this @samp{address}. 34825 34826@item opcodes 34827This field is only present for modes 2, 3 and 5, or when the 34828@code{--opcodes} option @samp{bytes} or @samp{display} is used. This 34829contains the raw opcode bytes for the @samp{inst} field. 34830 34831When the @samp{--opcodes} option is not passed to 34832@code{-data-disassemble}, or the @samp{bytes} value is passed to 34833@samp{--opcodes}, then the bytes are formatted as a series of single 34834bytes, in hex, in ascending address order, with a single space between 34835each byte. This format is equivalent to the @samp{/b} option being 34836used with the @kbd{disassemble} command 34837(@pxref{disassemble,,@kbd{disassemble}}). 34838 34839When @samp{--opcodes} is passed the value @samp{display} then the bytes 34840are formatted in the natural instruction display order. This means 34841multiple bytes can be grouped together, and the bytes might be 34842byte-swapped. This format is equivalent to the @samp{/r} option being 34843used with the @kbd{disassemble} command. 34844@end table 34845 34846For modes 1, 3, 4 and 5, or when the @code{--source} option is used, the 34847@samp{asm_insns} list contains tuples named @samp{src_and_asm_line}, 34848each of which has the following fields: 34849 34850@table @code 34851@item line 34852The line number within @samp{file}. 34853 34854@item file 34855The file name from the compilation unit. This might be an absolute 34856file name or a relative file name depending on the compile command 34857used. 34858 34859@item fullname 34860Absolute file name of @samp{file}. It is converted to a canonical form 34861using the source file search path 34862(@pxref{Source Path, ,Specifying Source Directories}) 34863and after resolving all the symbolic links. 34864 34865If the source file is not found this field will contain the path as 34866present in the debug information. 34867 34868@item line_asm_insn 34869This is a list of tuples containing the disassembly for @samp{line} in 34870@samp{file}. The fields of each tuple are the same as for 34871@code{-data-disassemble} in @var{mode} 0 and 2, so @samp{address}, 34872@samp{func-name}, @samp{offset}, @samp{inst}, and optionally 34873@samp{opcodes}. 34874 34875@end table 34876 34877Note that whatever included in the @samp{inst} field, is not 34878manipulated directly by @sc{gdb/mi}, i.e., it is not possible to 34879adjust its format. 34880 34881@subsubheading @value{GDBN} Command 34882 34883The corresponding @value{GDBN} command is @samp{disassemble}. 34884 34885@subsubheading Example 34886 34887Disassemble from the current value of @code{$pc} to @code{$pc + 20}: 34888 34889@smallexample 34890(gdb) 34891-data-disassemble -s $pc -e "$pc + 20" -- 0 34892^done, 34893asm_insns=[ 34894@{address="0x000107c0",func-name="main",offset="4", 34895inst="mov 2, %o0"@}, 34896@{address="0x000107c4",func-name="main",offset="8", 34897inst="sethi %hi(0x11800), %o2"@}, 34898@{address="0x000107c8",func-name="main",offset="12", 34899inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@}, 34900@{address="0x000107cc",func-name="main",offset="16", 34901inst="sethi %hi(0x11800), %o2"@}, 34902@{address="0x000107d0",func-name="main",offset="20", 34903inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}] 34904(gdb) 34905@end smallexample 34906 34907Disassemble the whole @code{main} function. Line 32 is part of 34908@code{main}. 34909 34910@smallexample 34911-data-disassemble -f basics.c -l 32 -- 0 34912^done,asm_insns=[ 34913@{address="0x000107bc",func-name="main",offset="0", 34914inst="save %sp, -112, %sp"@}, 34915@{address="0x000107c0",func-name="main",offset="4", 34916inst="mov 2, %o0"@}, 34917@{address="0x000107c4",func-name="main",offset="8", 34918inst="sethi %hi(0x11800), %o2"@}, 34919[@dots{}] 34920@{address="0x0001081c",func-name="main",offset="96",inst="ret "@}, 34921@{address="0x00010820",func-name="main",offset="100",inst="restore "@}] 34922(gdb) 34923@end smallexample 34924 34925Disassemble 3 instructions from the start of @code{main}: 34926 34927@smallexample 34928(gdb) 34929-data-disassemble -f basics.c -l 32 -n 3 -- 0 34930^done,asm_insns=[ 34931@{address="0x000107bc",func-name="main",offset="0", 34932inst="save %sp, -112, %sp"@}, 34933@{address="0x000107c0",func-name="main",offset="4", 34934inst="mov 2, %o0"@}, 34935@{address="0x000107c4",func-name="main",offset="8", 34936inst="sethi %hi(0x11800), %o2"@}] 34937(gdb) 34938@end smallexample 34939 34940Disassemble 3 instructions from the start of @code{main} in mixed mode: 34941 34942@smallexample 34943(gdb) 34944-data-disassemble -f basics.c -l 32 -n 3 -- 1 34945^done,asm_insns=[ 34946src_and_asm_line=@{line="31", 34947file="../../../src/gdb/testsuite/gdb.mi/basics.c", 34948fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 34949line_asm_insn=[@{address="0x000107bc", 34950func-name="main",offset="0",inst="save %sp, -112, %sp"@}]@}, 34951src_and_asm_line=@{line="32", 34952file="../../../src/gdb/testsuite/gdb.mi/basics.c", 34953fullname="/absolute/path/to/src/gdb/testsuite/gdb.mi/basics.c", 34954line_asm_insn=[@{address="0x000107c0", 34955func-name="main",offset="4",inst="mov 2, %o0"@}, 34956@{address="0x000107c4",func-name="main",offset="8", 34957inst="sethi %hi(0x11800), %o2"@}]@}] 34958(gdb) 34959@end smallexample 34960 34961 34962@subheading The @code{-data-evaluate-expression} Command 34963@findex -data-evaluate-expression 34964 34965@subsubheading Synopsis 34966 34967@smallexample 34968 -data-evaluate-expression @var{expr} 34969@end smallexample 34970 34971Evaluate @var{expr} as an expression. The expression could contain an 34972inferior function call. The function call will execute synchronously. 34973If the expression contains spaces, it must be enclosed in double quotes. 34974 34975@subsubheading @value{GDBN} Command 34976 34977The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and 34978@samp{call}. In @code{gdbtk} only, there's a corresponding 34979@samp{gdb_eval} command. 34980 34981@subsubheading Example 34982 34983In the following example, the numbers that precede the commands are the 34984@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi} 34985Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its 34986output. 34987 34988@smallexample 34989211-data-evaluate-expression A 34990211^done,value="1" 34991(gdb) 34992311-data-evaluate-expression &A 34993311^done,value="0xefffeb7c" 34994(gdb) 34995411-data-evaluate-expression A+3 34996411^done,value="4" 34997(gdb) 34998511-data-evaluate-expression "A + 3" 34999511^done,value="4" 35000(gdb) 35001@end smallexample 35002 35003 35004@subheading The @code{-data-list-changed-registers} Command 35005@findex -data-list-changed-registers 35006 35007@subsubheading Synopsis 35008 35009@smallexample 35010 -data-list-changed-registers 35011@end smallexample 35012 35013Display a list of the registers that have changed. 35014 35015@subsubheading @value{GDBN} Command 35016 35017@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk} 35018has the corresponding command @samp{gdb_changed_register_list}. 35019 35020@subsubheading Example 35021 35022On a PPC MBX board: 35023 35024@smallexample 35025(gdb) 35026-exec-continue 35027^running 35028 35029(gdb) 35030*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{ 35031func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c", 35032line="5",arch="powerpc"@} 35033(gdb) 35034-data-list-changed-registers 35035^done,changed-registers=["0","1","2","4","5","6","7","8","9", 35036"10","11","13","14","15","16","17","18","19","20","21","22","23", 35037"24","25","26","27","28","30","31","64","65","66","67","69"] 35038(gdb) 35039@end smallexample 35040 35041 35042@subheading The @code{-data-list-register-names} Command 35043@findex -data-list-register-names 35044 35045@subsubheading Synopsis 35046 35047@smallexample 35048 -data-list-register-names [ ( @var{regno} )+ ] 35049@end smallexample 35050 35051Show a list of register names for the current target. If no arguments 35052are given, it shows a list of the names of all the registers. If 35053integer numbers are given as arguments, it will print a list of the 35054names of the registers corresponding to the arguments. To ensure 35055consistency between a register name and its number, the output list may 35056include empty register names. 35057 35058@subsubheading @value{GDBN} Command 35059 35060@value{GDBN} does not have a command which corresponds to 35061@samp{-data-list-register-names}. In @code{gdbtk} there is a 35062corresponding command @samp{gdb_regnames}. 35063 35064@subsubheading Example 35065 35066For the PPC MBX board: 35067@smallexample 35068(gdb) 35069-data-list-register-names 35070^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7", 35071"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18", 35072"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29", 35073"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9", 35074"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20", 35075"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31", 35076"", "pc","ps","cr","lr","ctr","xer"] 35077(gdb) 35078-data-list-register-names 1 2 3 35079^done,register-names=["r1","r2","r3"] 35080(gdb) 35081@end smallexample 35082 35083@subheading The @code{-data-list-register-values} Command 35084@findex -data-list-register-values 35085 35086@subsubheading Synopsis 35087 35088@smallexample 35089 -data-list-register-values 35090 [ @code{--skip-unavailable} ] @var{fmt} [ ( @var{regno} )*] 35091@end smallexample 35092 35093Display the registers' contents. The format according to which the 35094registers' contents are to be returned is given by @var{fmt}, followed 35095by an optional list of numbers specifying the registers to display. A 35096missing list of numbers indicates that the contents of all the 35097registers must be returned. The @code{--skip-unavailable} option 35098indicates that only the available registers are to be returned. 35099 35100Allowed formats for @var{fmt} are: 35101 35102@table @code 35103@item x 35104Hexadecimal 35105@item o 35106Octal 35107@item t 35108Binary 35109@item d 35110Decimal 35111@item r 35112Raw 35113@item N 35114Natural 35115@end table 35116 35117@subsubheading @value{GDBN} Command 35118 35119The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info 35120all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}. 35121 35122@subsubheading Example 35123 35124For a PPC MBX board (note: line breaks are for readability only, they 35125don't appear in the actual output): 35126 35127@smallexample 35128(gdb) 35129-data-list-register-values r 64 65 35130^done,register-values=[@{number="64",value="0xfe00a300"@}, 35131@{number="65",value="0x00029002"@}] 35132(gdb) 35133-data-list-register-values x 35134^done,register-values=[@{number="0",value="0xfe0043c8"@}, 35135@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@}, 35136@{number="3",value="0x0"@},@{number="4",value="0xa"@}, 35137@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@}, 35138@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@}, 35139@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@}, 35140@{number="11",value="0x1"@},@{number="12",value="0x0"@}, 35141@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@}, 35142@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@}, 35143@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@}, 35144@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@}, 35145@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@}, 35146@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@}, 35147@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@}, 35148@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@}, 35149@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@}, 35150@{number="31",value="0x0"@},@{number="32",value="0x0"@}, 35151@{number="33",value="0x0"@},@{number="34",value="0x0"@}, 35152@{number="35",value="0x0"@},@{number="36",value="0x0"@}, 35153@{number="37",value="0x0"@},@{number="38",value="0x0"@}, 35154@{number="39",value="0x0"@},@{number="40",value="0x0"@}, 35155@{number="41",value="0x0"@},@{number="42",value="0x0"@}, 35156@{number="43",value="0x0"@},@{number="44",value="0x0"@}, 35157@{number="45",value="0x0"@},@{number="46",value="0x0"@}, 35158@{number="47",value="0x0"@},@{number="48",value="0x0"@}, 35159@{number="49",value="0x0"@},@{number="50",value="0x0"@}, 35160@{number="51",value="0x0"@},@{number="52",value="0x0"@}, 35161@{number="53",value="0x0"@},@{number="54",value="0x0"@}, 35162@{number="55",value="0x0"@},@{number="56",value="0x0"@}, 35163@{number="57",value="0x0"@},@{number="58",value="0x0"@}, 35164@{number="59",value="0x0"@},@{number="60",value="0x0"@}, 35165@{number="61",value="0x0"@},@{number="62",value="0x0"@}, 35166@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@}, 35167@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@}, 35168@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@}, 35169@{number="69",value="0x20002b03"@}] 35170(gdb) 35171@end smallexample 35172 35173 35174@subheading The @code{-data-read-memory} Command 35175@findex -data-read-memory 35176 35177This command is deprecated, use @code{-data-read-memory-bytes} instead. 35178 35179@subsubheading Synopsis 35180 35181@smallexample 35182 -data-read-memory [ -o @var{byte-offset} ] 35183 @var{address} @var{word-format} @var{word-size} 35184 @var{nr-rows} @var{nr-cols} [ @var{aschar} ] 35185@end smallexample 35186 35187@noindent 35188where: 35189 35190@table @samp 35191@item @var{address} 35192An expression specifying the address of the first memory word to be 35193read. Complex expressions containing embedded white space should be 35194quoted using the C convention. 35195 35196@item @var{word-format} 35197The format to be used to print the memory words. The notation is the 35198same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats, 35199,Output Formats}). 35200 35201@item @var{word-size} 35202The size of each memory word in bytes. 35203 35204@item @var{nr-rows} 35205The number of rows in the output table. 35206 35207@item @var{nr-cols} 35208The number of columns in the output table. 35209 35210@item @var{aschar} 35211If present, indicates that each row should include an @sc{ascii} dump. The 35212value of @var{aschar} is used as a padding character when a byte is not a 35213member of the printable @sc{ascii} character set (printable @sc{ascii} 35214characters are those whose code is between 32 and 126, inclusively). 35215 35216@item @var{byte-offset} 35217An offset to add to the @var{address} before fetching memory. 35218@end table 35219 35220This command displays memory contents as a table of @var{nr-rows} by 35221@var{nr-cols} words, each word being @var{word-size} bytes. In total, 35222@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read 35223(returned as @samp{total-bytes}). Should less than the requested number 35224of bytes be returned by the target, the missing words are identified 35225using @samp{N/A}. The number of bytes read from the target is returned 35226in @samp{nr-bytes} and the starting address used to read memory in 35227@samp{addr}. 35228 35229The address of the next/previous row or page is available in 35230@samp{next-row} and @samp{prev-row}, @samp{next-page} and 35231@samp{prev-page}. 35232 35233@subsubheading @value{GDBN} Command 35234 35235The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has 35236@samp{gdb_get_mem} memory read command. 35237 35238@subsubheading Example 35239 35240Read six bytes of memory starting at @code{bytes+6} but then offset by 35241@code{-6} bytes. Format as three rows of two columns. One byte per 35242word. Display each word in hex. 35243 35244@smallexample 35245(gdb) 352469-data-read-memory -o -6 -- bytes+6 x 1 3 2 352479^done,addr="0x00001390",nr-bytes="6",total-bytes="6", 35248next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396", 35249prev-page="0x0000138a",memory=[ 35250@{addr="0x00001390",data=["0x00","0x01"]@}, 35251@{addr="0x00001392",data=["0x02","0x03"]@}, 35252@{addr="0x00001394",data=["0x04","0x05"]@}] 35253(gdb) 35254@end smallexample 35255 35256Read two bytes of memory starting at address @code{shorts + 64} and 35257display as a single word formatted in decimal. 35258 35259@smallexample 35260(gdb) 352615-data-read-memory shorts+64 d 2 1 1 352625^done,addr="0x00001510",nr-bytes="2",total-bytes="2", 35263next-row="0x00001512",prev-row="0x0000150e", 35264next-page="0x00001512",prev-page="0x0000150e",memory=[ 35265@{addr="0x00001510",data=["128"]@}] 35266(gdb) 35267@end smallexample 35268 35269Read thirty two bytes of memory starting at @code{bytes+16} and format 35270as eight rows of four columns. Include a string encoding with @samp{x} 35271used as the non-printable character. 35272 35273@smallexample 35274(gdb) 352754-data-read-memory bytes+16 x 1 8 4 x 352764^done,addr="0x000013a0",nr-bytes="32",total-bytes="32", 35277next-row="0x000013c0",prev-row="0x0000139c", 35278next-page="0x000013c0",prev-page="0x00001380",memory=[ 35279@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@}, 35280@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@}, 35281@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@}, 35282@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@}, 35283@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@}, 35284@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@}, 35285@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@}, 35286@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}] 35287(gdb) 35288@end smallexample 35289 35290@subheading The @code{-data-read-memory-bytes} Command 35291@findex -data-read-memory-bytes 35292 35293@subsubheading Synopsis 35294 35295@smallexample 35296 -data-read-memory-bytes [ -o @var{offset} ] 35297 @var{address} @var{count} 35298@end smallexample 35299 35300@noindent 35301where: 35302 35303@table @samp 35304@item @var{address} 35305An expression specifying the address of the first addressable memory unit 35306to be read. Complex expressions containing embedded white space should be 35307quoted using the C convention. 35308 35309@item @var{count} 35310The number of addressable memory units to read. This should be an integer 35311literal. 35312 35313@item @var{offset} 35314The offset relative to @var{address} at which to start reading. This 35315should be an integer literal. This option is provided so that a frontend 35316is not required to first evaluate address and then perform address 35317arithmetics itself. 35318 35319@end table 35320 35321This command attempts to read all accessible memory regions in the 35322specified range. First, all regions marked as unreadable in the memory 35323map (if one is defined) will be skipped. @xref{Memory Region 35324Attributes}. Second, @value{GDBN} will attempt to read the remaining 35325regions. For each one, if reading full region results in an errors, 35326@value{GDBN} will try to read a subset of the region. 35327 35328In general, every single memory unit in the region may be readable or not, 35329and the only way to read every readable unit is to try a read at 35330every address, which is not practical. Therefore, @value{GDBN} will 35331attempt to read all accessible memory units at either beginning or the end 35332of the region, using a binary division scheme. This heuristic works 35333well for reading across a memory map boundary. Note that if a region 35334has a readable range that is neither at the beginning or the end, 35335@value{GDBN} will not read it. 35336 35337The result record (@pxref{GDB/MI Result Records}) that is output of 35338the command includes a field named @samp{memory} whose content is a 35339list of tuples. Each tuple represent a successfully read memory block 35340and has the following fields: 35341 35342@table @code 35343@item begin 35344The start address of the memory block, as hexadecimal literal. 35345 35346@item end 35347The end address of the memory block, as hexadecimal literal. 35348 35349@item offset 35350The offset of the memory block, as hexadecimal literal, relative to 35351the start address passed to @code{-data-read-memory-bytes}. 35352 35353@item contents 35354The contents of the memory block, in hex. 35355 35356@end table 35357 35358 35359 35360@subsubheading @value{GDBN} Command 35361 35362The corresponding @value{GDBN} command is @samp{x}. 35363 35364@subsubheading Example 35365 35366@smallexample 35367(gdb) 35368-data-read-memory-bytes &a 10 35369^done,memory=[@{begin="0xbffff154",offset="0x00000000", 35370 end="0xbffff15e", 35371 contents="01000000020000000300"@}] 35372(gdb) 35373@end smallexample 35374 35375 35376@subheading The @code{-data-write-memory-bytes} Command 35377@findex -data-write-memory-bytes 35378 35379@subsubheading Synopsis 35380 35381@smallexample 35382 -data-write-memory-bytes @var{address} @var{contents} 35383 -data-write-memory-bytes @var{address} @var{contents} @r{[}@var{count}@r{]} 35384@end smallexample 35385 35386@noindent 35387where: 35388 35389@table @samp 35390@item @var{address} 35391An expression specifying the address of the first addressable memory unit 35392to be written. Complex expressions containing embedded white space should 35393be quoted using the C convention. 35394 35395@item @var{contents} 35396The hex-encoded data to write. It is an error if @var{contents} does 35397not represent an integral number of addressable memory units. 35398 35399@item @var{count} 35400Optional argument indicating the number of addressable memory units to be 35401written. If @var{count} is greater than @var{contents}' length, 35402@value{GDBN} will repeatedly write @var{contents} until it fills 35403@var{count} memory units. 35404 35405@end table 35406 35407@subsubheading @value{GDBN} Command 35408 35409There's no corresponding @value{GDBN} command. 35410 35411@subsubheading Example 35412 35413@smallexample 35414(gdb) 35415-data-write-memory-bytes &a "aabbccdd" 35416^done 35417(gdb) 35418@end smallexample 35419 35420@smallexample 35421(gdb) 35422-data-write-memory-bytes &a "aabbccdd" 16e 35423^done 35424(gdb) 35425@end smallexample 35426 35427@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35428@node GDB/MI Tracepoint Commands 35429@section @sc{gdb/mi} Tracepoint Commands 35430 35431The commands defined in this section implement MI support for 35432tracepoints. For detailed introduction, see @ref{Tracepoints}. 35433 35434@subheading The @code{-trace-find} Command 35435@findex -trace-find 35436 35437@subsubheading Synopsis 35438 35439@smallexample 35440 -trace-find @var{mode} [@var{parameters}@dots{}] 35441@end smallexample 35442 35443Find a trace frame using criteria defined by @var{mode} and 35444@var{parameters}. The following table lists permissible 35445modes and their parameters. For details of operation, see @ref{tfind}. 35446 35447@table @samp 35448 35449@item none 35450No parameters are required. Stops examining trace frames. 35451 35452@item frame-number 35453An integer is required as parameter. Selects tracepoint frame with 35454that index. 35455 35456@item tracepoint-number 35457An integer is required as parameter. Finds next 35458trace frame that corresponds to tracepoint with the specified number. 35459 35460@item pc 35461An address is required as parameter. Finds 35462next trace frame that corresponds to any tracepoint at the specified 35463address. 35464 35465@item pc-inside-range 35466Two addresses are required as parameters. Finds next trace 35467frame that corresponds to a tracepoint at an address inside the 35468specified range. Both bounds are considered to be inside the range. 35469 35470@item pc-outside-range 35471Two addresses are required as parameters. Finds 35472next trace frame that corresponds to a tracepoint at an address outside 35473the specified range. Both bounds are considered to be inside the range. 35474 35475@item line 35476Location specification is required as parameter. @xref{Location Specifications}. 35477Finds next trace frame that corresponds to a tracepoint at 35478the specified location. 35479 35480@end table 35481 35482If @samp{none} was passed as @var{mode}, the response does not 35483have fields. Otherwise, the response may have the following fields: 35484 35485@table @samp 35486@item found 35487This field has either @samp{0} or @samp{1} as the value, depending 35488on whether a matching tracepoint was found. 35489 35490@item traceframe 35491The index of the found traceframe. This field is present iff 35492the @samp{found} field has value of @samp{1}. 35493 35494@item tracepoint 35495The index of the found tracepoint. This field is present iff 35496the @samp{found} field has value of @samp{1}. 35497 35498@item frame 35499The information about the frame corresponding to the found trace 35500frame. This field is present only if a trace frame was found. 35501@xref{GDB/MI Frame Information}, for description of this field. 35502 35503@end table 35504 35505@subsubheading @value{GDBN} Command 35506 35507The corresponding @value{GDBN} command is @samp{tfind}. 35508 35509@subheading -trace-define-variable 35510@findex -trace-define-variable 35511 35512@subsubheading Synopsis 35513 35514@smallexample 35515 -trace-define-variable @var{name} [ @var{value} ] 35516@end smallexample 35517 35518Create trace variable @var{name} if it does not exist. If 35519@var{value} is specified, sets the initial value of the specified 35520trace variable to that value. Note that the @var{name} should start 35521with the @samp{$} character. 35522 35523@subsubheading @value{GDBN} Command 35524 35525The corresponding @value{GDBN} command is @samp{tvariable}. 35526 35527@subheading The @code{-trace-frame-collected} Command 35528@findex -trace-frame-collected 35529 35530@subsubheading Synopsis 35531 35532@smallexample 35533 -trace-frame-collected 35534 [--var-print-values @var{var_pval}] 35535 [--comp-print-values @var{comp_pval}] 35536 [--registers-format @var{regformat}] 35537 [--memory-contents] 35538@end smallexample 35539 35540This command returns the set of collected objects, register names, 35541trace state variable names, memory ranges and computed expressions 35542that have been collected at a particular trace frame. The optional 35543parameters to the command affect the output format in different ways. 35544See the output description table below for more details. 35545 35546The reported names can be used in the normal manner to create 35547varobjs and inspect the objects themselves. The items returned by 35548this command are categorized so that it is clear which is a variable, 35549which is a register, which is a trace state variable, which is a 35550memory range and which is a computed expression. 35551 35552For instance, if the actions were 35553@smallexample 35554collect myVar, myArray[myIndex], myObj.field, myPtr->field, myCount + 2 35555collect *(int*)0xaf02bef0@@40 35556@end smallexample 35557 35558@noindent 35559the object collected in its entirety would be @code{myVar}. The 35560object @code{myArray} would be partially collected, because only the 35561element at index @code{myIndex} would be collected. The remaining 35562objects would be computed expressions. 35563 35564An example output would be: 35565 35566@smallexample 35567(gdb) 35568-trace-frame-collected 35569^done, 35570 explicit-variables=[@{name="myVar",value="1"@}], 35571 computed-expressions=[@{name="myArray[myIndex]",value="0"@}, 35572 @{name="myObj.field",value="0"@}, 35573 @{name="myPtr->field",value="1"@}, 35574 @{name="myCount + 2",value="3"@}, 35575 @{name="$tvar1 + 1",value="43970027"@}], 35576 registers=[@{number="0",value="0x7fe2c6e79ec8"@}, 35577 @{number="1",value="0x0"@}, 35578 @{number="2",value="0x4"@}, 35579 ... 35580 @{number="125",value="0x0"@}], 35581 tvars=[@{name="$tvar1",current="43970026"@}], 35582 memory=[@{address="0x0000000000602264",length="4"@}, 35583 @{address="0x0000000000615bc0",length="4"@}] 35584(gdb) 35585@end smallexample 35586 35587Where: 35588 35589@table @code 35590@item explicit-variables 35591The set of objects that have been collected in their entirety (as 35592opposed to collecting just a few elements of an array or a few struct 35593members). For each object, its name and value are printed. 35594The @code{--var-print-values} option affects how or whether the value 35595field is output. If @var{var_pval} is 0, then print only the names; 35596if it is 1, print also their values; and if it is 2, print the name, 35597type and value for simple data types, and the name and type for 35598arrays, structures and unions. 35599 35600@item computed-expressions 35601The set of computed expressions that have been collected at the 35602current trace frame. The @code{--comp-print-values} option affects 35603this set like the @code{--var-print-values} option affects the 35604@code{explicit-variables} set. See above. 35605 35606@item registers 35607The registers that have been collected at the current trace frame. 35608For each register collected, the name and current value are returned. 35609The value is formatted according to the @code{--registers-format} 35610option. See the @command{-data-list-register-values} command for a 35611list of the allowed formats. The default is @samp{x}. 35612 35613@item tvars 35614The trace state variables that have been collected at the current 35615trace frame. For each trace state variable collected, the name and 35616current value are returned. 35617 35618@item memory 35619The set of memory ranges that have been collected at the current trace 35620frame. Its content is a list of tuples. Each tuple represents a 35621collected memory range and has the following fields: 35622 35623@table @code 35624@item address 35625The start address of the memory range, as hexadecimal literal. 35626 35627@item length 35628The length of the memory range, as decimal literal. 35629 35630@item contents 35631The contents of the memory block, in hex. This field is only present 35632if the @code{--memory-contents} option is specified. 35633 35634@end table 35635 35636@end table 35637 35638@subsubheading @value{GDBN} Command 35639 35640There is no corresponding @value{GDBN} command. 35641 35642@subsubheading Example 35643 35644@subheading -trace-list-variables 35645@findex -trace-list-variables 35646 35647@subsubheading Synopsis 35648 35649@smallexample 35650 -trace-list-variables 35651@end smallexample 35652 35653Return a table of all defined trace variables. Each element of the 35654table has the following fields: 35655 35656@table @samp 35657@item name 35658The name of the trace variable. This field is always present. 35659 35660@item initial 35661The initial value. This is a 64-bit signed integer. This 35662field is always present. 35663 35664@item current 35665The value the trace variable has at the moment. This is a 64-bit 35666signed integer. This field is absent iff current value is 35667not defined, for example if the trace was never run, or is 35668presently running. 35669 35670@end table 35671 35672@subsubheading @value{GDBN} Command 35673 35674The corresponding @value{GDBN} command is @samp{tvariables}. 35675 35676@subsubheading Example 35677 35678@smallexample 35679(gdb) 35680-trace-list-variables 35681^done,trace-variables=@{nr_rows="1",nr_cols="3", 35682hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@}, 35683 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@}, 35684 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}], 35685body=[variable=@{name="$trace_timestamp",initial="0"@} 35686 variable=@{name="$foo",initial="10",current="15"@}]@} 35687(gdb) 35688@end smallexample 35689 35690@subheading -trace-save 35691@findex -trace-save 35692 35693@subsubheading Synopsis 35694 35695@smallexample 35696 -trace-save [ -r ] [ -ctf ] @var{filename} 35697@end smallexample 35698 35699Saves the collected trace data to @var{filename}. Without the 35700@samp{-r} option, the data is downloaded from the target and saved 35701in a local file. With the @samp{-r} option the target is asked 35702to perform the save. 35703 35704By default, this command will save the trace in the tfile format. You can 35705supply the optional @samp{-ctf} argument to save it the CTF format. See 35706@ref{Trace Files} for more information about CTF. 35707 35708@subsubheading @value{GDBN} Command 35709 35710The corresponding @value{GDBN} command is @samp{tsave}. 35711 35712 35713@subheading -trace-start 35714@findex -trace-start 35715 35716@subsubheading Synopsis 35717 35718@smallexample 35719 -trace-start 35720@end smallexample 35721 35722Starts a tracing experiment. The result of this command does not 35723have any fields. 35724 35725@subsubheading @value{GDBN} Command 35726 35727The corresponding @value{GDBN} command is @samp{tstart}. 35728 35729@subheading -trace-status 35730@findex -trace-status 35731 35732@subsubheading Synopsis 35733 35734@smallexample 35735 -trace-status 35736@end smallexample 35737 35738Obtains the status of a tracing experiment. The result may include 35739the following fields: 35740 35741@table @samp 35742 35743@item supported 35744May have a value of either @samp{0}, when no tracing operations are 35745supported, @samp{1}, when all tracing operations are supported, or 35746@samp{file} when examining trace file. In the latter case, examining 35747of trace frame is possible but new tracing experiement cannot be 35748started. This field is always present. 35749 35750@item running 35751May have a value of either @samp{0} or @samp{1} depending on whether 35752tracing experiement is in progress on target. This field is present 35753if @samp{supported} field is not @samp{0}. 35754 35755@item stop-reason 35756Report the reason why the tracing was stopped last time. This field 35757may be absent iff tracing was never stopped on target yet. The 35758value of @samp{request} means the tracing was stopped as result of 35759the @code{-trace-stop} command. The value of @samp{overflow} means 35760the tracing buffer is full. The value of @samp{disconnection} means 35761tracing was automatically stopped when @value{GDBN} has disconnected. 35762The value of @samp{passcount} means tracing was stopped when a 35763tracepoint was passed a maximal number of times for that tracepoint. 35764This field is present if @samp{supported} field is not @samp{0}. 35765 35766@item stopping-tracepoint 35767The number of tracepoint whose passcount as exceeded. This field is 35768present iff the @samp{stop-reason} field has the value of 35769@samp{passcount}. 35770 35771@item frames 35772@itemx frames-created 35773The @samp{frames} field is a count of the total number of trace frames 35774in the trace buffer, while @samp{frames-created} is the total created 35775during the run, including ones that were discarded, such as when a 35776circular trace buffer filled up. Both fields are optional. 35777 35778@item buffer-size 35779@itemx buffer-free 35780These fields tell the current size of the tracing buffer and the 35781remaining space. These fields are optional. 35782 35783@item circular 35784The value of the circular trace buffer flag. @code{1} means that the 35785trace buffer is circular and old trace frames will be discarded if 35786necessary to make room, @code{0} means that the trace buffer is linear 35787and may fill up. 35788 35789@item disconnected 35790The value of the disconnected tracing flag. @code{1} means that 35791tracing will continue after @value{GDBN} disconnects, @code{0} means 35792that the trace run will stop. 35793 35794@item trace-file 35795The filename of the trace file being examined. This field is 35796optional, and only present when examining a trace file. 35797 35798@end table 35799 35800@subsubheading @value{GDBN} Command 35801 35802The corresponding @value{GDBN} command is @samp{tstatus}. 35803 35804@subheading -trace-stop 35805@findex -trace-stop 35806 35807@subsubheading Synopsis 35808 35809@smallexample 35810 -trace-stop 35811@end smallexample 35812 35813Stops a tracing experiment. The result of this command has the same 35814fields as @code{-trace-status}, except that the @samp{supported} and 35815@samp{running} fields are not output. 35816 35817@subsubheading @value{GDBN} Command 35818 35819The corresponding @value{GDBN} command is @samp{tstop}. 35820 35821 35822@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35823@node GDB/MI Symbol Query 35824@section @sc{gdb/mi} Symbol Query Commands 35825 35826 35827@ignore 35828@subheading The @code{-symbol-info-address} Command 35829@findex -symbol-info-address 35830 35831@subsubheading Synopsis 35832 35833@smallexample 35834 -symbol-info-address @var{symbol} 35835@end smallexample 35836 35837Describe where @var{symbol} is stored. 35838 35839@subsubheading @value{GDBN} Command 35840 35841The corresponding @value{GDBN} command is @samp{info address}. 35842 35843@subsubheading Example 35844N.A. 35845 35846 35847@subheading The @code{-symbol-info-file} Command 35848@findex -symbol-info-file 35849 35850@subsubheading Synopsis 35851 35852@smallexample 35853 -symbol-info-file 35854@end smallexample 35855 35856Show the file for the symbol. 35857 35858@subsubheading @value{GDBN} Command 35859 35860There's no equivalent @value{GDBN} command. @code{gdbtk} has 35861@samp{gdb_find_file}. 35862 35863@subsubheading Example 35864N.A. 35865@end ignore 35866 35867@subheading The @code{-symbol-info-functions} Command 35868@findex -symbol-info-functions 35869@anchor{-symbol-info-functions} 35870 35871@subsubheading Synopsis 35872 35873@smallexample 35874 -symbol-info-functions [--include-nondebug] 35875 [--type @var{type_regexp}] 35876 [--name @var{name_regexp}] 35877 [--max-results @var{limit}] 35878@end smallexample 35879 35880@noindent 35881Return a list containing the names and types for all global functions 35882taken from the debug information. The functions are grouped by source 35883file, and shown with the line number on which each function is 35884defined. 35885 35886The @code{--include-nondebug} option causes the output to include 35887code symbols from the symbol table. 35888 35889The options @code{--type} and @code{--name} allow the symbols returned 35890to be filtered based on either the name of the function, or the type 35891signature of the function. 35892 35893The option @code{--max-results} restricts the command to return no 35894more than @var{limit} results. If exactly @var{limit} results are 35895returned then there might be additional results available if a higher 35896limit is used. 35897 35898@subsubheading @value{GDBN} Command 35899 35900The corresponding @value{GDBN} command is @samp{info functions}. 35901 35902@subsubheading Example 35903@smallexample 35904@group 35905(gdb) 35906-symbol-info-functions 35907^done,symbols= 35908 @{debug= 35909 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35910 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35911 symbols=[@{line="36", name="f4", type="void (int *)", 35912 description="void f4(int *);"@}, 35913 @{line="42", name="main", type="int ()", 35914 description="int main();"@}, 35915 @{line="30", name="f1", type="my_int_t (int, int)", 35916 description="static my_int_t f1(int, int);"@}]@}, 35917 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 35918 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 35919 symbols=[@{line="33", name="f2", type="float (another_float_t)", 35920 description="float f2(another_float_t);"@}, 35921 @{line="39", name="f3", type="int (another_int_t)", 35922 description="int f3(another_int_t);"@}, 35923 @{line="27", name="f1", type="another_float_t (int)", 35924 description="static another_float_t f1(int);"@}]@}]@} 35925@end group 35926@group 35927(gdb) 35928-symbol-info-functions --name f1 35929^done,symbols= 35930 @{debug= 35931 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35932 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35933 symbols=[@{line="30", name="f1", type="my_int_t (int, int)", 35934 description="static my_int_t f1(int, int);"@}]@}, 35935 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 35936 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 35937 symbols=[@{line="27", name="f1", type="another_float_t (int)", 35938 description="static another_float_t f1(int);"@}]@}]@} 35939@end group 35940@group 35941(gdb) 35942-symbol-info-functions --type void 35943^done,symbols= 35944 @{debug= 35945 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35946 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35947 symbols=[@{line="36", name="f4", type="void (int *)", 35948 description="void f4(int *);"@}]@}]@} 35949@end group 35950@group 35951(gdb) 35952-symbol-info-functions --include-nondebug 35953^done,symbols= 35954 @{debug= 35955 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35956 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 35957 symbols=[@{line="36", name="f4", type="void (int *)", 35958 description="void f4(int *);"@}, 35959 @{line="42", name="main", type="int ()", 35960 description="int main();"@}, 35961 @{line="30", name="f1", type="my_int_t (int, int)", 35962 description="static my_int_t f1(int, int);"@}]@}, 35963 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 35964 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 35965 symbols=[@{line="33", name="f2", type="float (another_float_t)", 35966 description="float f2(another_float_t);"@}, 35967 @{line="39", name="f3", type="int (another_int_t)", 35968 description="int f3(another_int_t);"@}, 35969 @{line="27", name="f1", type="another_float_t (int)", 35970 description="static another_float_t f1(int);"@}]@}], 35971 nondebug= 35972 [@{address="0x0000000000400398",name="_init"@}, 35973 @{address="0x00000000004003b0",name="_start"@}, 35974 ... 35975 ]@} 35976@end group 35977@end smallexample 35978 35979@subheading The @code{-symbol-info-module-functions} Command 35980@findex -symbol-info-module-functions 35981@anchor{-symbol-info-module-functions} 35982 35983@subsubheading Synopsis 35984 35985@smallexample 35986 -symbol-info-module-functions [--module @var{module_regexp}] 35987 [--name @var{name_regexp}] 35988 [--type @var{type_regexp}] 35989@end smallexample 35990 35991@noindent 35992Return a list containing the names of all known functions within all 35993know Fortran modules. The functions are grouped by source file and 35994containing module, and shown with the line number on which each 35995function is defined. 35996 35997The option @code{--module} only returns results for modules matching 35998@var{module_regexp}. The option @code{--name} only returns functions 35999whose name matches @var{name_regexp}, and @code{--type} only returns 36000functions whose type matches @var{type_regexp}. 36001 36002@subsubheading @value{GDBN} Command 36003 36004The corresponding @value{GDBN} command is @samp{info module functions}. 36005 36006@subsubheading Example 36007 36008@smallexample 36009@group 36010(gdb) 36011-symbol-info-module-functions 36012^done,symbols= 36013 [@{module="mod1", 36014 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36015 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36016 symbols=[@{line="21",name="mod1::check_all",type="void (void)", 36017 description="void mod1::check_all(void);"@}]@}]@}, 36018 @{module="mod2", 36019 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36020 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36021 symbols=[@{line="30",name="mod2::check_var_i",type="void (void)", 36022 description="void mod2::check_var_i(void);"@}]@}]@}, 36023 @{module="mod3", 36024 files=[@{filename="/projec/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36025 fullname="/projec/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36026 symbols=[@{line="21",name="mod3::check_all",type="void (void)", 36027 description="void mod3::check_all(void);"@}, 36028 @{line="27",name="mod3::check_mod2",type="void (void)", 36029 description="void mod3::check_mod2(void);"@}]@}]@}, 36030 @{module="modmany", 36031 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36032 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36033 symbols=[@{line="35",name="modmany::check_some",type="void (void)", 36034 description="void modmany::check_some(void);"@}]@}]@}, 36035 @{module="moduse", 36036 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36037 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36038 symbols=[@{line="44",name="moduse::check_all",type="void (void)", 36039 description="void moduse::check_all(void);"@}, 36040 @{line="49",name="moduse::check_var_x",type="void (void)", 36041 description="void moduse::check_var_x(void);"@}]@}]@}] 36042@end group 36043@end smallexample 36044 36045@subheading The @code{-symbol-info-module-variables} Command 36046@findex -symbol-info-module-variables 36047@anchor{-symbol-info-module-variables} 36048 36049@subsubheading Synopsis 36050 36051@smallexample 36052 -symbol-info-module-variables [--module @var{module_regexp}] 36053 [--name @var{name_regexp}] 36054 [--type @var{type_regexp}] 36055@end smallexample 36056 36057@noindent 36058Return a list containing the names of all known variables within all 36059know Fortran modules. The variables are grouped by source file and 36060containing module, and shown with the line number on which each 36061variable is defined. 36062 36063The option @code{--module} only returns results for modules matching 36064@var{module_regexp}. The option @code{--name} only returns variables 36065whose name matches @var{name_regexp}, and @code{--type} only returns 36066variables whose type matches @var{type_regexp}. 36067 36068@subsubheading @value{GDBN} Command 36069 36070The corresponding @value{GDBN} command is @samp{info module variables}. 36071 36072@subsubheading Example 36073 36074@smallexample 36075@group 36076(gdb) 36077-symbol-info-module-variables 36078^done,symbols= 36079 [@{module="mod1", 36080 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36081 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36082 symbols=[@{line="18",name="mod1::var_const",type="integer(kind=4)", 36083 description="integer(kind=4) mod1::var_const;"@}, 36084 @{line="17",name="mod1::var_i",type="integer(kind=4)", 36085 description="integer(kind=4) mod1::var_i;"@}]@}]@}, 36086 @{module="mod2", 36087 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36088 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36089 symbols=[@{line="28",name="mod2::var_i",type="integer(kind=4)", 36090 description="integer(kind=4) mod2::var_i;"@}]@}]@}, 36091 @{module="mod3", 36092 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36093 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36094 symbols=[@{line="18",name="mod3::mod1",type="integer(kind=4)", 36095 description="integer(kind=4) mod3::mod1;"@}, 36096 @{line="17",name="mod3::mod2",type="integer(kind=4)", 36097 description="integer(kind=4) mod3::mod2;"@}, 36098 @{line="19",name="mod3::var_i",type="integer(kind=4)", 36099 description="integer(kind=4) mod3::var_i;"@}]@}]@}, 36100 @{module="modmany", 36101 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36102 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36103 symbols=[@{line="33",name="modmany::var_a",type="integer(kind=4)", 36104 description="integer(kind=4) modmany::var_a;"@}, 36105 @{line="33",name="modmany::var_b",type="integer(kind=4)", 36106 description="integer(kind=4) modmany::var_b;"@}, 36107 @{line="33",name="modmany::var_c",type="integer(kind=4)", 36108 description="integer(kind=4) modmany::var_c;"@}, 36109 @{line="33",name="modmany::var_i",type="integer(kind=4)", 36110 description="integer(kind=4) modmany::var_i;"@}]@}]@}, 36111 @{module="moduse", 36112 files=[@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36113 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36114 symbols=[@{line="42",name="moduse::var_x",type="integer(kind=4)", 36115 description="integer(kind=4) moduse::var_x;"@}, 36116 @{line="42",name="moduse::var_y",type="integer(kind=4)", 36117 description="integer(kind=4) moduse::var_y;"@}]@}]@}] 36118@end group 36119@end smallexample 36120 36121@subheading The @code{-symbol-info-modules} Command 36122@findex -symbol-info-modules 36123@anchor{-symbol-info-modules} 36124 36125@subsubheading Synopsis 36126 36127@smallexample 36128 -symbol-info-modules [--name @var{name_regexp}] 36129 [--max-results @var{limit}] 36130 36131@end smallexample 36132 36133@noindent 36134Return a list containing the names of all known Fortran modules. The 36135modules are grouped by source file, and shown with the line number on 36136which each modules is defined. 36137 36138The option @code{--name} allows the modules returned to be filtered 36139based the name of the module. 36140 36141The option @code{--max-results} restricts the command to return no 36142more than @var{limit} results. If exactly @var{limit} results are 36143returned then there might be additional results available if a higher 36144limit is used. 36145 36146@subsubheading @value{GDBN} Command 36147 36148The corresponding @value{GDBN} command is @samp{info modules}. 36149 36150@subsubheading Example 36151@smallexample 36152@group 36153(gdb) 36154-symbol-info-modules 36155^done,symbols= 36156 @{debug= 36157 [@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36158 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36159 symbols=[@{line="16",name="mod1"@}, 36160 @{line="22",name="mod2"@}]@}, 36161 @{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36162 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36163 symbols=[@{line="16",name="mod3"@}, 36164 @{line="22",name="modmany"@}, 36165 @{line="26",name="moduse"@}]@}]@} 36166@end group 36167@group 36168(gdb) 36169-symbol-info-modules --name mod[123] 36170^done,symbols= 36171 @{debug= 36172 [@{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36173 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules-2.f90", 36174 symbols=[@{line="16",name="mod1"@}, 36175 @{line="22",name="mod2"@}]@}, 36176 @{filename="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36177 fullname="/project/gdb/testsuite/gdb.mi/mi-fortran-modules.f90", 36178 symbols=[@{line="16",name="mod3"@}]@}]@} 36179@end group 36180@end smallexample 36181 36182@subheading The @code{-symbol-info-types} Command 36183@findex -symbol-info-types 36184@anchor{-symbol-info-types} 36185 36186@subsubheading Synopsis 36187 36188@smallexample 36189 -symbol-info-types [--name @var{name_regexp}] 36190 [--max-results @var{limit}] 36191 36192@end smallexample 36193 36194@noindent 36195Return a list of all defined types. The types are grouped by source 36196file, and shown with the line number on which each user defined type 36197is defined. Some base types are not defined in the source code but 36198are added to the debug information by the compiler, for example 36199@code{int}, @code{float}, etc.; these types do not have an associated 36200line number. 36201 36202The option @code{--name} allows the list of types returned to be 36203filtered by name. 36204 36205The option @code{--max-results} restricts the command to return no 36206more than @var{limit} results. If exactly @var{limit} results are 36207returned then there might be additional results available if a higher 36208limit is used. 36209 36210@subsubheading @value{GDBN} Command 36211 36212The corresponding @value{GDBN} command is @samp{info types}. 36213 36214@subsubheading Example 36215@smallexample 36216@group 36217(gdb) 36218-symbol-info-types 36219^done,symbols= 36220 @{debug= 36221 [@{filename="gdb.mi/mi-sym-info-1.c", 36222 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36223 symbols=[@{name="float"@}, 36224 @{name="int"@}, 36225 @{line="27",name="typedef int my_int_t;"@}]@}, 36226 @{filename="gdb.mi/mi-sym-info-2.c", 36227 fullname="/project/gdb.mi/mi-sym-info-2.c", 36228 symbols=[@{line="24",name="typedef float another_float_t;"@}, 36229 @{line="23",name="typedef int another_int_t;"@}, 36230 @{name="float"@}, 36231 @{name="int"@}]@}]@} 36232@end group 36233@group 36234(gdb) 36235-symbol-info-types --name _int_ 36236^done,symbols= 36237 @{debug= 36238 [@{filename="gdb.mi/mi-sym-info-1.c", 36239 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36240 symbols=[@{line="27",name="typedef int my_int_t;"@}]@}, 36241 @{filename="gdb.mi/mi-sym-info-2.c", 36242 fullname="/project/gdb.mi/mi-sym-info-2.c", 36243 symbols=[@{line="23",name="typedef int another_int_t;"@}]@}]@} 36244@end group 36245@end smallexample 36246 36247@subheading The @code{-symbol-info-variables} Command 36248@findex -symbol-info-variables 36249@anchor{-symbol-info-variables} 36250 36251@subsubheading Synopsis 36252 36253@smallexample 36254 -symbol-info-variables [--include-nondebug] 36255 [--type @var{type_regexp}] 36256 [--name @var{name_regexp}] 36257 [--max-results @var{limit}] 36258 36259@end smallexample 36260 36261@noindent 36262Return a list containing the names and types for all global variables 36263taken from the debug information. The variables are grouped by source 36264file, and shown with the line number on which each variable is 36265defined. 36266 36267The @code{--include-nondebug} option causes the output to include 36268data symbols from the symbol table. 36269 36270The options @code{--type} and @code{--name} allow the symbols returned 36271to be filtered based on either the name of the variable, or the type 36272of the variable. 36273 36274The option @code{--max-results} restricts the command to return no 36275more than @var{limit} results. If exactly @var{limit} results are 36276returned then there might be additional results available if a higher 36277limit is used. 36278 36279@subsubheading @value{GDBN} Command 36280 36281The corresponding @value{GDBN} command is @samp{info variables}. 36282 36283@subsubheading Example 36284@smallexample 36285@group 36286(gdb) 36287-symbol-info-variables 36288^done,symbols= 36289 @{debug= 36290 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36291 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36292 symbols=[@{line="25",name="global_f1",type="float", 36293 description="static float global_f1;"@}, 36294 @{line="24",name="global_i1",type="int", 36295 description="static int global_i1;"@}]@}, 36296 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36297 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36298 symbols=[@{line="21",name="global_f2",type="int", 36299 description="int global_f2;"@}, 36300 @{line="20",name="global_i2",type="int", 36301 description="int global_i2;"@}, 36302 @{line="19",name="global_f1",type="float", 36303 description="static float global_f1;"@}, 36304 @{line="18",name="global_i1",type="int", 36305 description="static int global_i1;"@}]@}]@} 36306@end group 36307@group 36308(gdb) 36309-symbol-info-variables --name f1 36310^done,symbols= 36311 @{debug= 36312 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36313 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36314 symbols=[@{line="25",name="global_f1",type="float", 36315 description="static float global_f1;"@}]@}, 36316 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36317 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36318 symbols=[@{line="19",name="global_f1",type="float", 36319 description="static float global_f1;"@}]@}]@} 36320@end group 36321@group 36322(gdb) 36323-symbol-info-variables --type float 36324^done,symbols= 36325 @{debug= 36326 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36327 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36328 symbols=[@{line="25",name="global_f1",type="float", 36329 description="static float global_f1;"@}]@}, 36330 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36331 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36332 symbols=[@{line="19",name="global_f1",type="float", 36333 description="static float global_f1;"@}]@}]@} 36334@end group 36335@group 36336(gdb) 36337-symbol-info-variables --include-nondebug 36338^done,symbols= 36339 @{debug= 36340 [@{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36341 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-1.c", 36342 symbols=[@{line="25",name="global_f1",type="float", 36343 description="static float global_f1;"@}, 36344 @{line="24",name="global_i1",type="int", 36345 description="static int global_i1;"@}]@}, 36346 @{filename="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36347 fullname="/project/gdb/testsuite/gdb.mi/mi-sym-info-2.c", 36348 symbols=[@{line="21",name="global_f2",type="int", 36349 description="int global_f2;"@}, 36350 @{line="20",name="global_i2",type="int", 36351 description="int global_i2;"@}, 36352 @{line="19",name="global_f1",type="float", 36353 description="static float global_f1;"@}, 36354 @{line="18",name="global_i1",type="int", 36355 description="static int global_i1;"@}]@}], 36356 nondebug= 36357 [@{address="0x00000000004005d0",name="_IO_stdin_used"@}, 36358 @{address="0x00000000004005d8",name="__dso_handle"@} 36359 ... 36360 ]@} 36361@end group 36362@end smallexample 36363 36364@ignore 36365@subheading The @code{-symbol-info-line} Command 36366@findex -symbol-info-line 36367 36368@subsubheading Synopsis 36369 36370@smallexample 36371 -symbol-info-line 36372@end smallexample 36373 36374Show the core addresses of the code for a source line. 36375 36376@subsubheading @value{GDBN} Command 36377 36378The corresponding @value{GDBN} command is @samp{info line}. 36379@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands. 36380 36381@subsubheading Example 36382N.A. 36383 36384 36385@subheading The @code{-symbol-info-symbol} Command 36386@findex -symbol-info-symbol 36387 36388@subsubheading Synopsis 36389 36390@smallexample 36391 -symbol-info-symbol @var{addr} 36392@end smallexample 36393 36394Describe what symbol is at location @var{addr}. 36395 36396@subsubheading @value{GDBN} Command 36397 36398The corresponding @value{GDBN} command is @samp{info symbol}. 36399 36400@subsubheading Example 36401N.A. 36402 36403 36404@subheading The @code{-symbol-list-functions} Command 36405@findex -symbol-list-functions 36406 36407@subsubheading Synopsis 36408 36409@smallexample 36410 -symbol-list-functions 36411@end smallexample 36412 36413List the functions in the executable. 36414 36415@subsubheading @value{GDBN} Command 36416 36417@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and 36418@samp{gdb_search} in @code{gdbtk}. 36419 36420@subsubheading Example 36421N.A. 36422@end ignore 36423 36424 36425@subheading The @code{-symbol-list-lines} Command 36426@findex -symbol-list-lines 36427 36428@subsubheading Synopsis 36429 36430@smallexample 36431 -symbol-list-lines @var{filename} 36432@end smallexample 36433 36434Print the list of lines that contain code and their associated program 36435addresses for the given source filename. The entries are sorted in 36436ascending PC order. 36437 36438@subsubheading @value{GDBN} Command 36439 36440There is no corresponding @value{GDBN} command. 36441 36442@subsubheading Example 36443@smallexample 36444(gdb) 36445-symbol-list-lines basics.c 36446^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}] 36447(gdb) 36448@end smallexample 36449 36450 36451@ignore 36452@subheading The @code{-symbol-list-types} Command 36453@findex -symbol-list-types 36454 36455@subsubheading Synopsis 36456 36457@smallexample 36458 -symbol-list-types 36459@end smallexample 36460 36461List all the type names. 36462 36463@subsubheading @value{GDBN} Command 36464 36465The corresponding commands are @samp{info types} in @value{GDBN}, 36466@samp{gdb_search} in @code{gdbtk}. 36467 36468@subsubheading Example 36469N.A. 36470 36471 36472@subheading The @code{-symbol-list-variables} Command 36473@findex -symbol-list-variables 36474 36475@subsubheading Synopsis 36476 36477@smallexample 36478 -symbol-list-variables 36479@end smallexample 36480 36481List all the global and static variable names. 36482 36483@subsubheading @value{GDBN} Command 36484 36485@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}. 36486 36487@subsubheading Example 36488N.A. 36489 36490 36491@subheading The @code{-symbol-locate} Command 36492@findex -symbol-locate 36493 36494@subsubheading Synopsis 36495 36496@smallexample 36497 -symbol-locate 36498@end smallexample 36499 36500@subsubheading @value{GDBN} Command 36501 36502@samp{gdb_loc} in @code{gdbtk}. 36503 36504@subsubheading Example 36505N.A. 36506 36507 36508@subheading The @code{-symbol-type} Command 36509@findex -symbol-type 36510 36511@subsubheading Synopsis 36512 36513@smallexample 36514 -symbol-type @var{variable} 36515@end smallexample 36516 36517Show type of @var{variable}. 36518 36519@subsubheading @value{GDBN} Command 36520 36521The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has 36522@samp{gdb_obj_variable}. 36523 36524@subsubheading Example 36525N.A. 36526@end ignore 36527 36528 36529@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36530@node GDB/MI File Commands 36531@section @sc{gdb/mi} File Commands 36532 36533This section describes the GDB/MI commands to specify executable file names 36534and to read in and obtain symbol table information. 36535 36536@subheading The @code{-file-exec-and-symbols} Command 36537@findex -file-exec-and-symbols 36538 36539@subsubheading Synopsis 36540 36541@smallexample 36542 -file-exec-and-symbols @var{file} 36543@end smallexample 36544 36545Specify the executable file to be debugged. This file is the one from 36546which the symbol table is also read. If no file is specified, the 36547command clears the executable and symbol information. If breakpoints 36548are set when using this command with no arguments, @value{GDBN} will produce 36549error messages. Otherwise, no output is produced, except a completion 36550notification. 36551 36552@subsubheading @value{GDBN} Command 36553 36554The corresponding @value{GDBN} command is @samp{file}. 36555 36556@subsubheading Example 36557 36558@smallexample 36559(gdb) 36560-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 36561^done 36562(gdb) 36563@end smallexample 36564 36565 36566@subheading The @code{-file-exec-file} Command 36567@findex -file-exec-file 36568 36569@subsubheading Synopsis 36570 36571@smallexample 36572 -file-exec-file @var{file} 36573@end smallexample 36574 36575Specify the executable file to be debugged. Unlike 36576@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read 36577from this file. If used without argument, @value{GDBN} clears the information 36578about the executable file. No output is produced, except a completion 36579notification. 36580 36581@subsubheading @value{GDBN} Command 36582 36583The corresponding @value{GDBN} command is @samp{exec-file}. 36584 36585@subsubheading Example 36586 36587@smallexample 36588(gdb) 36589-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 36590^done 36591(gdb) 36592@end smallexample 36593 36594 36595@ignore 36596@subheading The @code{-file-list-exec-sections} Command 36597@findex -file-list-exec-sections 36598 36599@subsubheading Synopsis 36600 36601@smallexample 36602 -file-list-exec-sections 36603@end smallexample 36604 36605List the sections of the current executable file. 36606 36607@subsubheading @value{GDBN} Command 36608 36609The @value{GDBN} command @samp{info file} shows, among the rest, the same 36610information as this command. @code{gdbtk} has a corresponding command 36611@samp{gdb_load_info}. 36612 36613@subsubheading Example 36614N.A. 36615@end ignore 36616 36617 36618@subheading The @code{-file-list-exec-source-file} Command 36619@findex -file-list-exec-source-file 36620 36621@subsubheading Synopsis 36622 36623@smallexample 36624 -file-list-exec-source-file 36625@end smallexample 36626 36627List the line number, the current source file, and the absolute path 36628to the current source file for the current executable. The macro 36629information field has a value of @samp{1} or @samp{0} depending on 36630whether or not the file includes preprocessor macro information. 36631 36632@subsubheading @value{GDBN} Command 36633 36634The @value{GDBN} equivalent is @samp{info source} 36635 36636@subsubheading Example 36637 36638@smallexample 36639(gdb) 36640123-file-list-exec-source-file 36641123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1" 36642(gdb) 36643@end smallexample 36644 36645 36646@subheading The @code{-file-list-exec-source-files} Command 36647@kindex info sources 36648@findex -file-list-exec-source-files 36649 36650@subsubheading Synopsis 36651 36652@smallexample 36653 -file-list-exec-source-files @r{[} @var{--group-by-objfile} @r{]} 36654 @r{[} @var{--dirname} @r{|} @var{--basename} @r{]} 36655 @r{[} -- @r{]} 36656 @r{[} @var{regexp} @r{]} 36657@end smallexample 36658 36659This command returns information about the source files @value{GDBN} 36660knows about, it will output both the filename and fullname (absolute 36661file name) of a source file, though the fullname can be elided if this 36662information is not known to @value{GDBN}. 36663 36664With no arguments this command returns a list of source files. Each 36665source file is represented by a tuple with the fields; @var{file}, 36666@var{fullname}, and @var{debug-fully-read}. The @var{file} is the 36667display name for the file, while @var{fullname} is the absolute name 36668of the file. The @var{fullname} field can be elided if the absolute 36669name of the source file can't be computed. The field 36670@var{debug-fully-read} will be a string, either @code{true} or 36671@code{false}. When @code{true}, this indicates the full debug 36672information for the compilation unit describing this file has been 36673read in. When @code{false}, the full debug information has not yet 36674been read in. While reading in the full debug information it is 36675possible that @value{GDBN} could become aware of additional source 36676files. 36677 36678The optional @var{regexp} can be used to filter the list of source 36679files returned. The @var{regexp} will be matched against the full 36680source file name. The matching is case-sensitive, except on operating 36681systems that have case-insensitive filesystem (e.g., 36682MS-Windows). @samp{--} can be used before @var{regexp} to prevent 36683@value{GDBN} interpreting @var{regexp} as a command option (e.g.@: if 36684@var{regexp} starts with @samp{-}). 36685 36686If @code{--dirname} is provided, then @var{regexp} is matched only 36687against the directory name of each source file. If @code{--basename} 36688is provided, then @var{regexp} is matched against the basename of each 36689source file. Only one of @code{--dirname} or @code{--basename} may be 36690given, and if either is given then @var{regexp} is required. 36691 36692If @code{--group-by-objfile} is used then the format of the results is 36693changed. The results will now be a list of tuples, with each tuple 36694representing an object file (executable or shared library) loaded into 36695@value{GDBN}. The fields of these tuples are; @var{filename}, 36696@var{debug-info}, and @var{sources}. The @var{filename} is the 36697absolute name of the object file, @var{debug-info} is a string with 36698one of the following values: 36699 36700@table @code 36701@item none 36702This object file has no debug information. 36703@item partially-read 36704This object file has debug information, but it is not fully read in 36705yet. When it is read in later, GDB might become aware of additional 36706source files. 36707@item fully-read 36708This object file has debug information, and this information is fully 36709read into GDB. The list of source files is complete. 36710@end table 36711 36712The @var{sources} is a list or tuples, with each tuple describing a 36713single source file with the same fields as described previously. The 36714@var{sources} list can be empty for object files that have no debug 36715information. 36716 36717@subsubheading @value{GDBN} Command 36718 36719The @value{GDBN} equivalent is @samp{info sources}. 36720@code{gdbtk} has an analogous command @samp{gdb_listfiles}. 36721 36722@subsubheading Example 36723@smallexample 36724(@value{GDBP}) 36725-file-list-exec-source-files 36726^done,files=[@{file="foo.c",fullname="/home/foo.c",debug-fully-read="true"@}, 36727 @{file="/home/bar.c",fullname="/home/bar.c",debug-fully-read="true"@}, 36728 @{file="gdb_could_not_find_fullpath.c",debug-fully-read="true"@}] 36729(@value{GDBP}) 36730-file-list-exec-source-files 36731^done,files=[@{file="test.c", 36732 fullname="/tmp/info-sources/test.c", 36733 debug-fully-read="true"@}, 36734 @{file="/usr/include/stdc-predef.h", 36735 fullname="/usr/include/stdc-predef.h", 36736 debug-fully-read="true"@}, 36737 @{file="header.h", 36738 fullname="/tmp/info-sources/header.h", 36739 debug-fully-read="true"@}, 36740 @{file="helper.c", 36741 fullname="/tmp/info-sources/helper.c", 36742 debug-fully-read="true"@}] 36743(@value{GDBP}) 36744-file-list-exec-source-files -- \\.c 36745^done,files=[@{file="test.c", 36746 fullname="/tmp/info-sources/test.c", 36747 debug-fully-read="true"@}, 36748 @{file="helper.c", 36749 fullname="/tmp/info-sources/helper.c", 36750 debug-fully-read="true"@}] 36751(@value{GDBP}) 36752-file-list-exec-source-files --group-by-objfile 36753^done,files=[@{filename="/tmp/info-sources/test.x", 36754 debug-info="fully-read", 36755 sources=[@{file="test.c", 36756 fullname="/tmp/info-sources/test.c", 36757 debug-fully-read="true"@}, 36758 @{file="/usr/include/stdc-predef.h", 36759 fullname="/usr/include/stdc-predef.h", 36760 debug-fully-read="true"@}, 36761 @{file="header.h", 36762 fullname="/tmp/info-sources/header.h", 36763 debug-fully-read="true"@}]@}, 36764 @{filename="/lib64/ld-linux-x86-64.so.2", 36765 debug-info="none", 36766 sources=[]@}, 36767 @{filename="system-supplied DSO at 0x7ffff7fcf000", 36768 debug-info="none", 36769 sources=[]@}, 36770 @{filename="/tmp/info-sources/libhelper.so", 36771 debug-info="fully-read", 36772 sources=[@{file="helper.c", 36773 fullname="/tmp/info-sources/helper.c", 36774 debug-fully-read="true"@}, 36775 @{file="/usr/include/stdc-predef.h", 36776 fullname="/usr/include/stdc-predef.h", 36777 debug-fully-read="true"@}, 36778 @{file="header.h", 36779 fullname="/tmp/info-sources/header.h", 36780 debug-fully-read="true"@}]@}, 36781 @{filename="/lib64/libc.so.6", 36782 debug-info="none", 36783 sources=[]@}] 36784@end smallexample 36785 36786@subheading The @code{-file-list-shared-libraries} Command 36787@findex -file-list-shared-libraries 36788 36789@subsubheading Synopsis 36790 36791@smallexample 36792 -file-list-shared-libraries [ @var{regexp} ] 36793@end smallexample 36794 36795List the shared libraries in the program. 36796With a regular expression @var{regexp}, only those libraries whose 36797names match @var{regexp} are listed. 36798 36799@subsubheading @value{GDBN} Command 36800 36801The corresponding @value{GDBN} command is @samp{info shared}. The fields 36802have a similar meaning to the @code{=library-loaded} notification. 36803The @code{ranges} field specifies the multiple segments belonging to this 36804library. Each range has the following fields: 36805 36806@table @samp 36807@item from 36808The address defining the inclusive lower bound of the segment. 36809@item to 36810The address defining the exclusive upper bound of the segment. 36811@end table 36812 36813@subsubheading Example 36814@smallexample 36815(gdb) 36816-file-list-exec-source-files 36817^done,shared-libraries=[ 36818@{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"@}]@}, 36819@{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"@}]@}] 36820(gdb) 36821@end smallexample 36822 36823 36824@ignore 36825@subheading The @code{-file-list-symbol-files} Command 36826@findex -file-list-symbol-files 36827 36828@subsubheading Synopsis 36829 36830@smallexample 36831 -file-list-symbol-files 36832@end smallexample 36833 36834List symbol files. 36835 36836@subsubheading @value{GDBN} Command 36837 36838The corresponding @value{GDBN} command is @samp{info file} (part of it). 36839 36840@subsubheading Example 36841N.A. 36842@end ignore 36843 36844 36845@subheading The @code{-file-symbol-file} Command 36846@findex -file-symbol-file 36847 36848@subsubheading Synopsis 36849 36850@smallexample 36851 -file-symbol-file @var{file} 36852@end smallexample 36853 36854Read symbol table info from the specified @var{file} argument. When 36855used without arguments, clears @value{GDBN}'s symbol table info. No output is 36856produced, except for a completion notification. 36857 36858@subsubheading @value{GDBN} Command 36859 36860The corresponding @value{GDBN} command is @samp{symbol-file}. 36861 36862@subsubheading Example 36863 36864@smallexample 36865(gdb) 36866-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx 36867^done 36868(gdb) 36869@end smallexample 36870 36871@ignore 36872@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36873@node GDB/MI Memory Overlay Commands 36874@section @sc{gdb/mi} Memory Overlay Commands 36875 36876The memory overlay commands are not implemented. 36877 36878@c @subheading -overlay-auto 36879 36880@c @subheading -overlay-list-mapping-state 36881 36882@c @subheading -overlay-list-overlays 36883 36884@c @subheading -overlay-map 36885 36886@c @subheading -overlay-off 36887 36888@c @subheading -overlay-on 36889 36890@c @subheading -overlay-unmap 36891 36892@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36893@node GDB/MI Signal Handling Commands 36894@section @sc{gdb/mi} Signal Handling Commands 36895 36896Signal handling commands are not implemented. 36897 36898@c @subheading -signal-handle 36899 36900@c @subheading -signal-list-handle-actions 36901 36902@c @subheading -signal-list-signal-types 36903@end ignore 36904 36905 36906@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36907@node GDB/MI Target Manipulation 36908@section @sc{gdb/mi} Target Manipulation Commands 36909 36910 36911@subheading The @code{-target-attach} Command 36912@findex -target-attach 36913 36914@subsubheading Synopsis 36915 36916@smallexample 36917 -target-attach @var{pid} | @var{gid} | @var{file} 36918@end smallexample 36919 36920Attach to a process @var{pid} or a file @var{file} outside of 36921@value{GDBN}, or a thread group @var{gid}. If attaching to a thread 36922group, the id previously returned by 36923@samp{-list-thread-groups --available} must be used. 36924 36925@subsubheading @value{GDBN} Command 36926 36927The corresponding @value{GDBN} command is @samp{attach}. 36928 36929@subsubheading Example 36930@smallexample 36931(gdb) 36932-target-attach 34 36933=thread-created,id="1" 36934*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@} 36935^done 36936(gdb) 36937@end smallexample 36938 36939@ignore 36940@subheading The @code{-target-compare-sections} Command 36941@findex -target-compare-sections 36942 36943@subsubheading Synopsis 36944 36945@smallexample 36946 -target-compare-sections [ @var{section} ] 36947@end smallexample 36948 36949Compare data of section @var{section} on target to the exec file. 36950Without the argument, all sections are compared. 36951 36952@subsubheading @value{GDBN} Command 36953 36954The @value{GDBN} equivalent is @samp{compare-sections}. 36955 36956@subsubheading Example 36957N.A. 36958@end ignore 36959 36960 36961@subheading The @code{-target-detach} Command 36962@findex -target-detach 36963 36964@subsubheading Synopsis 36965 36966@smallexample 36967 -target-detach [ @var{pid} | @var{gid} ] 36968@end smallexample 36969 36970Detach from the remote target which normally resumes its execution. 36971If either @var{pid} or @var{gid} is specified, detaches from either 36972the specified process, or specified thread group. There's no output. 36973 36974@subsubheading @value{GDBN} Command 36975 36976The corresponding @value{GDBN} command is @samp{detach}. 36977 36978@subsubheading Example 36979 36980@smallexample 36981(gdb) 36982-target-detach 36983^done 36984(gdb) 36985@end smallexample 36986 36987 36988@subheading The @code{-target-disconnect} Command 36989@findex -target-disconnect 36990 36991@subsubheading Synopsis 36992 36993@smallexample 36994 -target-disconnect 36995@end smallexample 36996 36997Disconnect from the remote target. There's no output and the target is 36998generally not resumed. 36999 37000@subsubheading @value{GDBN} Command 37001 37002The corresponding @value{GDBN} command is @samp{disconnect}. 37003 37004@subsubheading Example 37005 37006@smallexample 37007(gdb) 37008-target-disconnect 37009^done 37010(gdb) 37011@end smallexample 37012 37013 37014@subheading The @code{-target-download} Command 37015@findex -target-download 37016 37017@subsubheading Synopsis 37018 37019@smallexample 37020 -target-download 37021@end smallexample 37022 37023Loads the executable onto the remote target. 37024It prints out an update message every half second, which includes the fields: 37025 37026@table @samp 37027@item section 37028The name of the section. 37029@item section-sent 37030The size of what has been sent so far for that section. 37031@item section-size 37032The size of the section. 37033@item total-sent 37034The total size of what was sent so far (the current and the previous sections). 37035@item total-size 37036The size of the overall executable to download. 37037@end table 37038 37039@noindent 37040Each message is sent as status record (@pxref{GDB/MI Output Syntax, , 37041@sc{gdb/mi} Output Syntax}). 37042 37043In addition, it prints the name and size of the sections, as they are 37044downloaded. These messages include the following fields: 37045 37046@table @samp 37047@item section 37048The name of the section. 37049@item section-size 37050The size of the section. 37051@item total-size 37052The size of the overall executable to download. 37053@end table 37054 37055@noindent 37056At the end, a summary is printed. 37057 37058@subsubheading @value{GDBN} Command 37059 37060The corresponding @value{GDBN} command is @samp{load}. 37061 37062@subsubheading Example 37063 37064Note: each status message appears on a single line. Here the messages 37065have been broken down so that they can fit onto a page. 37066 37067@smallexample 37068(gdb) 37069-target-download 37070+download,@{section=".text",section-size="6668",total-size="9880"@} 37071+download,@{section=".text",section-sent="512",section-size="6668", 37072total-sent="512",total-size="9880"@} 37073+download,@{section=".text",section-sent="1024",section-size="6668", 37074total-sent="1024",total-size="9880"@} 37075+download,@{section=".text",section-sent="1536",section-size="6668", 37076total-sent="1536",total-size="9880"@} 37077+download,@{section=".text",section-sent="2048",section-size="6668", 37078total-sent="2048",total-size="9880"@} 37079+download,@{section=".text",section-sent="2560",section-size="6668", 37080total-sent="2560",total-size="9880"@} 37081+download,@{section=".text",section-sent="3072",section-size="6668", 37082total-sent="3072",total-size="9880"@} 37083+download,@{section=".text",section-sent="3584",section-size="6668", 37084total-sent="3584",total-size="9880"@} 37085+download,@{section=".text",section-sent="4096",section-size="6668", 37086total-sent="4096",total-size="9880"@} 37087+download,@{section=".text",section-sent="4608",section-size="6668", 37088total-sent="4608",total-size="9880"@} 37089+download,@{section=".text",section-sent="5120",section-size="6668", 37090total-sent="5120",total-size="9880"@} 37091+download,@{section=".text",section-sent="5632",section-size="6668", 37092total-sent="5632",total-size="9880"@} 37093+download,@{section=".text",section-sent="6144",section-size="6668", 37094total-sent="6144",total-size="9880"@} 37095+download,@{section=".text",section-sent="6656",section-size="6668", 37096total-sent="6656",total-size="9880"@} 37097+download,@{section=".init",section-size="28",total-size="9880"@} 37098+download,@{section=".fini",section-size="28",total-size="9880"@} 37099+download,@{section=".data",section-size="3156",total-size="9880"@} 37100+download,@{section=".data",section-sent="512",section-size="3156", 37101total-sent="7236",total-size="9880"@} 37102+download,@{section=".data",section-sent="1024",section-size="3156", 37103total-sent="7748",total-size="9880"@} 37104+download,@{section=".data",section-sent="1536",section-size="3156", 37105total-sent="8260",total-size="9880"@} 37106+download,@{section=".data",section-sent="2048",section-size="3156", 37107total-sent="8772",total-size="9880"@} 37108+download,@{section=".data",section-sent="2560",section-size="3156", 37109total-sent="9284",total-size="9880"@} 37110+download,@{section=".data",section-sent="3072",section-size="3156", 37111total-sent="9796",total-size="9880"@} 37112^done,address="0x10004",load-size="9880",transfer-rate="6586", 37113write-rate="429" 37114(gdb) 37115@end smallexample 37116 37117 37118@ignore 37119@subheading The @code{-target-exec-status} Command 37120@findex -target-exec-status 37121 37122@subsubheading Synopsis 37123 37124@smallexample 37125 -target-exec-status 37126@end smallexample 37127 37128Provide information on the state of the target (whether it is running or 37129not, for instance). 37130 37131@subsubheading @value{GDBN} Command 37132 37133There's no equivalent @value{GDBN} command. 37134 37135@subsubheading Example 37136N.A. 37137 37138 37139@subheading The @code{-target-list-available-targets} Command 37140@findex -target-list-available-targets 37141 37142@subsubheading Synopsis 37143 37144@smallexample 37145 -target-list-available-targets 37146@end smallexample 37147 37148List the possible targets to connect to. 37149 37150@subsubheading @value{GDBN} Command 37151 37152The corresponding @value{GDBN} command is @samp{help target}. 37153 37154@subsubheading Example 37155N.A. 37156 37157 37158@subheading The @code{-target-list-current-targets} Command 37159@findex -target-list-current-targets 37160 37161@subsubheading Synopsis 37162 37163@smallexample 37164 -target-list-current-targets 37165@end smallexample 37166 37167Describe the current target. 37168 37169@subsubheading @value{GDBN} Command 37170 37171The corresponding information is printed by @samp{info file} (among 37172other things). 37173 37174@subsubheading Example 37175N.A. 37176 37177 37178@subheading The @code{-target-list-parameters} Command 37179@findex -target-list-parameters 37180 37181@subsubheading Synopsis 37182 37183@smallexample 37184 -target-list-parameters 37185@end smallexample 37186 37187@c ???? 37188@end ignore 37189 37190@subsubheading @value{GDBN} Command 37191 37192No equivalent. 37193 37194@subsubheading Example 37195N.A. 37196 37197@subheading The @code{-target-flash-erase} Command 37198@findex -target-flash-erase 37199 37200@subsubheading Synopsis 37201 37202@smallexample 37203 -target-flash-erase 37204@end smallexample 37205 37206Erases all known flash memory regions on the target. 37207 37208The corresponding @value{GDBN} command is @samp{flash-erase}. 37209 37210The output is a list of flash regions that have been erased, with starting 37211addresses and memory region sizes. 37212 37213@smallexample 37214(gdb) 37215-target-flash-erase 37216^done,erased-regions=@{address="0x0",size="0x40000"@} 37217(gdb) 37218@end smallexample 37219 37220@subheading The @code{-target-select} Command 37221@findex -target-select 37222 37223@subsubheading Synopsis 37224 37225@smallexample 37226 -target-select @var{type} @var{parameters @dots{}} 37227@end smallexample 37228 37229Connect @value{GDBN} to the remote target. This command takes two args: 37230 37231@table @samp 37232@item @var{type} 37233The type of target, for instance @samp{remote}, etc. 37234@item @var{parameters} 37235Device names, host names and the like. @xref{Target Commands, , 37236Commands for Managing Targets}, for more details. 37237@end table 37238 37239The output is a connection notification, followed by the address at 37240which the target program is, in the following form: 37241 37242@smallexample 37243^connected,addr="@var{address}",func="@var{function name}", 37244 args=[@var{arg list}] 37245@end smallexample 37246 37247@subsubheading @value{GDBN} Command 37248 37249The corresponding @value{GDBN} command is @samp{target}. 37250 37251@subsubheading Example 37252 37253@smallexample 37254(gdb) 37255-target-select remote /dev/ttya 37256^connected,addr="0xfe00a300",func="??",args=[] 37257(gdb) 37258@end smallexample 37259 37260@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37261@node GDB/MI File Transfer Commands 37262@section @sc{gdb/mi} File Transfer Commands 37263 37264 37265@subheading The @code{-target-file-put} Command 37266@findex -target-file-put 37267 37268@subsubheading Synopsis 37269 37270@smallexample 37271 -target-file-put @var{hostfile} @var{targetfile} 37272@end smallexample 37273 37274Copy file @var{hostfile} from the host system (the machine running 37275@value{GDBN}) to @var{targetfile} on the target system. 37276 37277@subsubheading @value{GDBN} Command 37278 37279The corresponding @value{GDBN} command is @samp{remote put}. 37280 37281@subsubheading Example 37282 37283@smallexample 37284(gdb) 37285-target-file-put localfile remotefile 37286^done 37287(gdb) 37288@end smallexample 37289 37290 37291@subheading The @code{-target-file-get} Command 37292@findex -target-file-get 37293 37294@subsubheading Synopsis 37295 37296@smallexample 37297 -target-file-get @var{targetfile} @var{hostfile} 37298@end smallexample 37299 37300Copy file @var{targetfile} from the target system to @var{hostfile} 37301on the host system. 37302 37303@subsubheading @value{GDBN} Command 37304 37305The corresponding @value{GDBN} command is @samp{remote get}. 37306 37307@subsubheading Example 37308 37309@smallexample 37310(gdb) 37311-target-file-get remotefile localfile 37312^done 37313(gdb) 37314@end smallexample 37315 37316 37317@subheading The @code{-target-file-delete} Command 37318@findex -target-file-delete 37319 37320@subsubheading Synopsis 37321 37322@smallexample 37323 -target-file-delete @var{targetfile} 37324@end smallexample 37325 37326Delete @var{targetfile} from the target system. 37327 37328@subsubheading @value{GDBN} Command 37329 37330The corresponding @value{GDBN} command is @samp{remote delete}. 37331 37332@subsubheading Example 37333 37334@smallexample 37335(gdb) 37336-target-file-delete remotefile 37337^done 37338(gdb) 37339@end smallexample 37340 37341 37342@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37343@node GDB/MI Ada Exceptions Commands 37344@section Ada Exceptions @sc{gdb/mi} Commands 37345 37346@subheading The @code{-info-ada-exceptions} Command 37347@findex -info-ada-exceptions 37348 37349@subsubheading Synopsis 37350 37351@smallexample 37352 -info-ada-exceptions [ @var{regexp}] 37353@end smallexample 37354 37355List all Ada exceptions defined within the program being debugged. 37356With a regular expression @var{regexp}, only those exceptions whose 37357names match @var{regexp} are listed. 37358 37359@subsubheading @value{GDBN} Command 37360 37361The corresponding @value{GDBN} command is @samp{info exceptions}. 37362 37363@subsubheading Result 37364 37365The result is a table of Ada exceptions. The following columns are 37366defined for each exception: 37367 37368@table @samp 37369@item name 37370The name of the exception. 37371 37372@item address 37373The address of the exception. 37374 37375@end table 37376 37377@subsubheading Example 37378 37379@smallexample 37380-info-ada-exceptions aint 37381^done,ada-exceptions=@{nr_rows="2",nr_cols="2", 37382hdr=[@{width="1",alignment="-1",col_name="name",colhdr="Name"@}, 37383@{width="1",alignment="-1",col_name="address",colhdr="Address"@}], 37384body=[@{name="constraint_error",address="0x0000000000613da0"@}, 37385@{name="const.aint_global_e",address="0x0000000000613b00"@}]@} 37386@end smallexample 37387 37388@subheading Catching Ada Exceptions 37389 37390The commands describing how to ask @value{GDBN} to stop when a program 37391raises an exception are described at @ref{Ada Exception GDB/MI 37392Catchpoint Commands}. 37393 37394 37395@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37396@node GDB/MI Support Commands 37397@section @sc{gdb/mi} Support Commands 37398 37399Since new commands and features get regularly added to @sc{gdb/mi}, 37400some commands are available to help front-ends query the debugger 37401about support for these capabilities. Similarly, it is also possible 37402to query @value{GDBN} about target support of certain features. 37403 37404@subheading The @code{-info-gdb-mi-command} Command 37405@cindex @code{-info-gdb-mi-command} 37406@findex -info-gdb-mi-command 37407 37408@subsubheading Synopsis 37409 37410@smallexample 37411 -info-gdb-mi-command @var{cmd_name} 37412@end smallexample 37413 37414Query support for the @sc{gdb/mi} command named @var{cmd_name}. 37415 37416Note that the dash (@code{-}) starting all @sc{gdb/mi} commands 37417is technically not part of the command name (@pxref{GDB/MI Input 37418Syntax}), and thus should be omitted in @var{cmd_name}. However, 37419for ease of use, this command also accepts the form with the leading 37420dash. 37421 37422@subsubheading @value{GDBN} Command 37423 37424There is no corresponding @value{GDBN} command. 37425 37426@subsubheading Result 37427 37428The result is a tuple. There is currently only one field: 37429 37430@table @samp 37431@item exists 37432This field is equal to @code{"true"} if the @sc{gdb/mi} command exists, 37433@code{"false"} otherwise. 37434 37435@end table 37436 37437@subsubheading Example 37438 37439Here is an example where the @sc{gdb/mi} command does not exist: 37440 37441@smallexample 37442-info-gdb-mi-command unsupported-command 37443^done,command=@{exists="false"@} 37444@end smallexample 37445 37446@noindent 37447And here is an example where the @sc{gdb/mi} command is known 37448to the debugger: 37449 37450@smallexample 37451-info-gdb-mi-command symbol-list-lines 37452^done,command=@{exists="true"@} 37453@end smallexample 37454 37455@subheading The @code{-list-features} Command 37456@findex -list-features 37457@cindex supported @sc{gdb/mi} features, list 37458 37459Returns a list of particular features of the MI protocol that 37460this version of gdb implements. A feature can be a command, 37461or a new field in an output of some command, or even an 37462important bugfix. While a frontend can sometimes detect presence 37463of a feature at runtime, it is easier to perform detection at debugger 37464startup. 37465 37466The command returns a list of strings, with each string naming an 37467available feature. Each returned string is just a name, it does not 37468have any internal structure. The list of possible feature names 37469is given below. 37470 37471Example output: 37472 37473@smallexample 37474(gdb) -list-features 37475^done,result=["feature1","feature2"] 37476@end smallexample 37477 37478The current list of features is: 37479 37480@ftable @samp 37481@item frozen-varobjs 37482Indicates support for the @code{-var-set-frozen} command, as well 37483as possible presence of the @code{frozen} field in the output 37484of @code{-varobj-create}. 37485@item pending-breakpoints 37486Indicates support for the @option{-f} option to the @code{-break-insert} 37487command. 37488@item python 37489Indicates Python scripting support, Python-based 37490pretty-printing commands, and possible presence of the 37491@samp{display_hint} field in the output of @code{-var-list-children} 37492@item thread-info 37493Indicates support for the @code{-thread-info} command. 37494@item data-read-memory-bytes 37495Indicates support for the @code{-data-read-memory-bytes} and the 37496@code{-data-write-memory-bytes} commands. 37497@item breakpoint-notifications 37498Indicates that changes to breakpoints and breakpoints created via the 37499CLI will be announced via async records. 37500@item ada-task-info 37501Indicates support for the @code{-ada-task-info} command. 37502@item language-option 37503Indicates that all @sc{gdb/mi} commands accept the @option{--language} 37504option (@pxref{Context management}). 37505@item info-gdb-mi-command 37506Indicates support for the @code{-info-gdb-mi-command} command. 37507@item undefined-command-error-code 37508Indicates support for the "undefined-command" error code in error result 37509records, produced when trying to execute an undefined @sc{gdb/mi} command 37510(@pxref{GDB/MI Result Records}). 37511@item exec-run-start-option 37512Indicates that the @code{-exec-run} command supports the @option{--start} 37513option (@pxref{GDB/MI Program Execution}). 37514@item data-disassemble-a-option 37515Indicates that the @code{-data-disassemble} command supports the @option{-a} 37516option (@pxref{GDB/MI Data Manipulation}). 37517@end ftable 37518 37519@subheading The @code{-list-target-features} Command 37520@findex -list-target-features 37521 37522Returns a list of particular features that are supported by the 37523target. Those features affect the permitted MI commands, but 37524unlike the features reported by the @code{-list-features} command, the 37525features depend on which target GDB is using at the moment. Whenever 37526a target can change, due to commands such as @code{-target-select}, 37527@code{-target-attach} or @code{-exec-run}, the list of target features 37528may change, and the frontend should obtain it again. 37529Example output: 37530 37531@smallexample 37532(gdb) -list-target-features 37533^done,result=["async"] 37534@end smallexample 37535 37536The current list of features is: 37537 37538@table @samp 37539@item async 37540Indicates that the target is capable of asynchronous command 37541execution, which means that @value{GDBN} will accept further commands 37542while the target is running. 37543 37544@item reverse 37545Indicates that the target is capable of reverse execution. 37546@xref{Reverse Execution}, for more information. 37547 37548@end table 37549 37550@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37551@node GDB/MI Miscellaneous Commands 37552@section Miscellaneous @sc{gdb/mi} Commands 37553 37554@c @subheading -gdb-complete 37555 37556@subheading The @code{-gdb-exit} Command 37557@findex -gdb-exit 37558 37559@subsubheading Synopsis 37560 37561@smallexample 37562 -gdb-exit 37563@end smallexample 37564 37565Exit @value{GDBN} immediately. 37566 37567@subsubheading @value{GDBN} Command 37568 37569Approximately corresponds to @samp{quit}. 37570 37571@subsubheading Example 37572 37573@smallexample 37574(gdb) 37575-gdb-exit 37576^exit 37577@end smallexample 37578 37579 37580@ignore 37581@subheading The @code{-exec-abort} Command 37582@findex -exec-abort 37583 37584@subsubheading Synopsis 37585 37586@smallexample 37587 -exec-abort 37588@end smallexample 37589 37590Kill the inferior running program. 37591 37592@subsubheading @value{GDBN} Command 37593 37594The corresponding @value{GDBN} command is @samp{kill}. 37595 37596@subsubheading Example 37597N.A. 37598@end ignore 37599 37600 37601@subheading The @code{-gdb-set} Command 37602@findex -gdb-set 37603 37604@subsubheading Synopsis 37605 37606@smallexample 37607 -gdb-set 37608@end smallexample 37609 37610Set an internal @value{GDBN} variable. 37611@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ????? 37612 37613@subsubheading @value{GDBN} Command 37614 37615The corresponding @value{GDBN} command is @samp{set}. 37616 37617@subsubheading Example 37618 37619@smallexample 37620(gdb) 37621-gdb-set $foo=3 37622^done 37623(gdb) 37624@end smallexample 37625 37626 37627@subheading The @code{-gdb-show} Command 37628@findex -gdb-show 37629 37630@subsubheading Synopsis 37631 37632@smallexample 37633 -gdb-show 37634@end smallexample 37635 37636Show the current value of a @value{GDBN} variable. 37637 37638@subsubheading @value{GDBN} Command 37639 37640The corresponding @value{GDBN} command is @samp{show}. 37641 37642@subsubheading Example 37643 37644@smallexample 37645(gdb) 37646-gdb-show annotate 37647^done,value="0" 37648(gdb) 37649@end smallexample 37650 37651@c @subheading -gdb-source 37652 37653 37654@subheading The @code{-gdb-version} Command 37655@findex -gdb-version 37656 37657@subsubheading Synopsis 37658 37659@smallexample 37660 -gdb-version 37661@end smallexample 37662 37663Show version information for @value{GDBN}. Used mostly in testing. 37664 37665@subsubheading @value{GDBN} Command 37666 37667The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by 37668default shows this information when you start an interactive session. 37669 37670@subsubheading Example 37671 37672@c This example modifies the actual output from GDB to avoid overfull 37673@c box in TeX. 37674@smallexample 37675(gdb) 37676-gdb-version 37677~GNU gdb 5.2.1 37678~Copyright 2000 Free Software Foundation, Inc. 37679~GDB is free software, covered by the GNU General Public License, and 37680~you are welcome to change it and/or distribute copies of it under 37681~ certain conditions. 37682~Type "show copying" to see the conditions. 37683~There is absolutely no warranty for GDB. Type "show warranty" for 37684~ details. 37685~This GDB was configured as 37686 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi". 37687^done 37688(gdb) 37689@end smallexample 37690 37691@subheading The @code{-list-thread-groups} Command 37692@findex -list-thread-groups 37693 37694@subheading Synopsis 37695 37696@smallexample 37697-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ] 37698@end smallexample 37699 37700Lists thread groups (@pxref{Thread groups}). When a single thread 37701group is passed as the argument, lists the children of that group. 37702When several thread group are passed, lists information about those 37703thread groups. Without any parameters, lists information about all 37704top-level thread groups. 37705 37706Normally, thread groups that are being debugged are reported. 37707With the @samp{--available} option, @value{GDBN} reports thread groups 37708available on the target. 37709 37710The output of this command may have either a @samp{threads} result or 37711a @samp{groups} result. The @samp{thread} result has a list of tuples 37712as value, with each tuple describing a thread (@pxref{GDB/MI Thread 37713Information}). The @samp{groups} result has a list of tuples as value, 37714each tuple describing a thread group. If top-level groups are 37715requested (that is, no parameter is passed), or when several groups 37716are passed, the output always has a @samp{groups} result. The format 37717of the @samp{group} result is described below. 37718 37719To reduce the number of roundtrips it's possible to list thread groups 37720together with their children, by passing the @samp{--recurse} option 37721and the recursion depth. Presently, only recursion depth of 1 is 37722permitted. If this option is present, then every reported thread group 37723will also include its children, either as @samp{group} or 37724@samp{threads} field. 37725 37726In general, any combination of option and parameters is permitted, with 37727the following caveats: 37728 37729@itemize @bullet 37730@item 37731When a single thread group is passed, the output will typically 37732be the @samp{threads} result. Because threads may not contain 37733anything, the @samp{recurse} option will be ignored. 37734 37735@item 37736When the @samp{--available} option is passed, limited information may 37737be available. In particular, the list of threads of a process might 37738be inaccessible. Further, specifying specific thread groups might 37739not give any performance advantage over listing all thread groups. 37740The frontend should assume that @samp{-list-thread-groups --available} 37741is always an expensive operation and cache the results. 37742 37743@end itemize 37744 37745The @samp{groups} result is a list of tuples, where each tuple may 37746have the following fields: 37747 37748@table @code 37749@item id 37750Identifier of the thread group. This field is always present. 37751The identifier is an opaque string; frontends should not try to 37752convert it to an integer, even though it might look like one. 37753 37754@item type 37755The type of the thread group. At present, only @samp{process} is a 37756valid type. 37757 37758@item pid 37759The target-specific process identifier. This field is only present 37760for thread groups of type @samp{process} and only if the process exists. 37761 37762@item exit-code 37763The exit code of this group's last exited thread, formatted in octal. 37764This field is only present for thread groups of type @samp{process} and 37765only if the process is not running. 37766 37767@item num_children 37768The number of children this thread group has. This field may be 37769absent for an available thread group. 37770 37771@item threads 37772This field has a list of tuples as value, each tuple describing a 37773thread. It may be present if the @samp{--recurse} option is 37774specified, and it's actually possible to obtain the threads. 37775 37776@item cores 37777This field is a list of integers, each identifying a core that one 37778thread of the group is running on. This field may be absent if 37779such information is not available. 37780 37781@item executable 37782The name of the executable file that corresponds to this thread group. 37783The field is only present for thread groups of type @samp{process}, 37784and only if there is a corresponding executable file. 37785 37786@end table 37787 37788@subheading Example 37789 37790@smallexample 37791(@value{GDBP}) 37792-list-thread-groups 37793^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}] 37794-list-thread-groups 17 37795^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)", 37796 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@}, 37797@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)", 37798 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}], 37799 file="/tmp/a.c",fullname="/tmp/a.c",line="158",arch="i386:x86_64"@},state="running"@}]] 37800-list-thread-groups --available 37801^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}] 37802-list-thread-groups --available --recurse 1 37803 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 37804 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 37805 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..] 37806-list-thread-groups --available --recurse 1 17 18 37807^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2], 37808 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@}, 37809 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...] 37810@end smallexample 37811 37812@subheading The @code{-info-os} Command 37813@findex -info-os 37814 37815@subsubheading Synopsis 37816 37817@smallexample 37818-info-os [ @var{type} ] 37819@end smallexample 37820 37821If no argument is supplied, the command returns a table of available 37822operating-system-specific information types. If one of these types is 37823supplied as an argument @var{type}, then the command returns a table 37824of data of that type. 37825 37826The types of information available depend on the target operating 37827system. 37828 37829@subsubheading @value{GDBN} Command 37830 37831The corresponding @value{GDBN} command is @samp{info os}. 37832 37833@subsubheading Example 37834 37835When run on a @sc{gnu}/Linux system, the output will look something 37836like this: 37837 37838@smallexample 37839(@value{GDBP}) 37840-info-os 37841^done,OSDataTable=@{nr_rows="10",nr_cols="3", 37842hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@}, 37843 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@}, 37844 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}], 37845body=[item=@{col0="cpus",col1="Listing of all cpus/cores on the system", 37846 col2="CPUs"@}, 37847 item=@{col0="files",col1="Listing of all file descriptors", 37848 col2="File descriptors"@}, 37849 item=@{col0="modules",col1="Listing of all loaded kernel modules", 37850 col2="Kernel modules"@}, 37851 item=@{col0="msg",col1="Listing of all message queues", 37852 col2="Message queues"@}, 37853 item=@{col0="processes",col1="Listing of all processes", 37854 col2="Processes"@}, 37855 item=@{col0="procgroups",col1="Listing of all process groups", 37856 col2="Process groups"@}, 37857 item=@{col0="semaphores",col1="Listing of all semaphores", 37858 col2="Semaphores"@}, 37859 item=@{col0="shm",col1="Listing of all shared-memory regions", 37860 col2="Shared-memory regions"@}, 37861 item=@{col0="sockets",col1="Listing of all internet-domain sockets", 37862 col2="Sockets"@}, 37863 item=@{col0="threads",col1="Listing of all threads", 37864 col2="Threads"@}] 37865(@value{GDBP}) 37866-info-os processes 37867^done,OSDataTable=@{nr_rows="190",nr_cols="4", 37868hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@}, 37869 @{width="10",alignment="-1",col_name="col1",colhdr="user"@}, 37870 @{width="10",alignment="-1",col_name="col2",colhdr="command"@}, 37871 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}], 37872body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@}, 37873 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@}, 37874 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@}, 37875 ... 37876 item=@{col0="26446",col1="stan",col2="bash",col3="0"@}, 37877 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@} 37878(@value{GDBP}) 37879@end smallexample 37880 37881(Note that the MI output here includes a @code{"Title"} column that 37882does not appear in command-line @code{info os}; this column is useful 37883for MI clients that want to enumerate the types of data, such as in a 37884popup menu, but is needless clutter on the command line, and 37885@code{info os} omits it.) 37886 37887@subheading The @code{-add-inferior} Command 37888@findex -add-inferior 37889 37890@subheading Synopsis 37891 37892@smallexample 37893-add-inferior [ --no-connection ] 37894@end smallexample 37895 37896Creates a new inferior (@pxref{Inferiors Connections and Programs}). The created 37897inferior is not associated with any executable. Such association may 37898be established with the @samp{-file-exec-and-symbols} command 37899(@pxref{GDB/MI File Commands}). 37900 37901By default, the new inferior begins connected to the same target 37902connection as the current inferior. For example, if the current 37903inferior was connected to @code{gdbserver} with @code{target remote}, 37904then the new inferior will be connected to the same @code{gdbserver} 37905instance. The @samp{--no-connection} option starts the new inferior 37906with no connection yet. You can then for example use the 37907@code{-target-select remote} command to connect to some other 37908@code{gdbserver} instance, use @code{-exec-run} to spawn a local 37909program, etc. 37910 37911The command response always has a field, @var{inferior}, whose value 37912is the identifier of the thread group corresponding to the new 37913inferior. 37914 37915An additional section field, @var{connection}, is optional. This 37916field will only exist if the new inferior has a target connection. If 37917this field exists, then its value will be a tuple containing the 37918following fields: 37919 37920@table @samp 37921@item number 37922The number of the connection used for the new inferior. 37923 37924@item name 37925The name of the connection type used for the new inferior. 37926@end table 37927 37928@subheading @value{GDBN} Command 37929 37930The corresponding @value{GDBN} command is @samp{add-inferior} 37931(@pxref{add_inferior_cli,,@samp{add-inferior}}). 37932 37933@subheading Example 37934 37935@smallexample 37936(@value{GDBP}) 37937-add-inferior 37938^done,inferior="i3" 37939@end smallexample 37940 37941@subheading The @code{-interpreter-exec} Command 37942@findex -interpreter-exec 37943 37944@subheading Synopsis 37945 37946@smallexample 37947-interpreter-exec @var{interpreter} @var{command} 37948@end smallexample 37949@anchor{-interpreter-exec} 37950 37951Execute the specified @var{command} in the given @var{interpreter}. 37952 37953@subheading @value{GDBN} Command 37954 37955The corresponding @value{GDBN} command is @samp{interpreter-exec}. 37956 37957@subheading Example 37958 37959@smallexample 37960(gdb) 37961-interpreter-exec console "break main" 37962&"During symbol reading, couldn't parse type; debugger out of date?.\n" 37963&"During symbol reading, bad structure-type format.\n" 37964~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n" 37965^done 37966(gdb) 37967@end smallexample 37968 37969@subheading The @code{-inferior-tty-set} Command 37970@findex -inferior-tty-set 37971 37972@subheading Synopsis 37973 37974@smallexample 37975-inferior-tty-set /dev/pts/1 37976@end smallexample 37977 37978Set terminal for future runs of the program being debugged. 37979 37980@subheading @value{GDBN} Command 37981 37982The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1. 37983 37984@subheading Example 37985 37986@smallexample 37987(gdb) 37988-inferior-tty-set /dev/pts/1 37989^done 37990(gdb) 37991@end smallexample 37992 37993@subheading The @code{-inferior-tty-show} Command 37994@findex -inferior-tty-show 37995 37996@subheading Synopsis 37997 37998@smallexample 37999-inferior-tty-show 38000@end smallexample 38001 38002Show terminal for future runs of program being debugged. 38003 38004@subheading @value{GDBN} Command 38005 38006The corresponding @value{GDBN} command is @samp{show inferior-tty}. 38007 38008@subheading Example 38009 38010@smallexample 38011(gdb) 38012-inferior-tty-set /dev/pts/1 38013^done 38014(gdb) 38015-inferior-tty-show 38016^done,inferior_tty_terminal="/dev/pts/1" 38017(gdb) 38018@end smallexample 38019 38020@subheading The @code{-enable-timings} Command 38021@findex -enable-timings 38022 38023@subheading Synopsis 38024 38025@smallexample 38026-enable-timings [yes | no] 38027@end smallexample 38028 38029Toggle the printing of the wallclock, user and system times for an MI 38030command as a field in its output. This command is to help frontend 38031developers optimize the performance of their code. No argument is 38032equivalent to @samp{yes}. 38033 38034@subheading @value{GDBN} Command 38035 38036No equivalent. 38037 38038@subheading Example 38039 38040@smallexample 38041(gdb) 38042-enable-timings 38043^done 38044(gdb) 38045-break-insert main 38046^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y", 38047addr="0x080484ed",func="main",file="myprog.c", 38048fullname="/home/nickrob/myprog.c",line="73",thread-groups=["i1"], 38049times="0"@}, 38050time=@{wallclock="0.05185",user="0.00800",system="0.00000"@} 38051(gdb) 38052-enable-timings no 38053^done 38054(gdb) 38055-exec-run 38056^running 38057(gdb) 38058*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0", 38059frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@}, 38060@{name="argv",value="0xbfb60364"@}],file="myprog.c", 38061fullname="/home/nickrob/myprog.c",line="73",arch="i386:x86_64"@} 38062(gdb) 38063@end smallexample 38064 38065@subheading The @code{-complete} Command 38066@findex -complete 38067 38068@subheading Synopsis 38069 38070@smallexample 38071-complete @var{command} 38072@end smallexample 38073 38074Show a list of completions for partially typed CLI @var{command}. 38075 38076This command is intended for @sc{gdb/mi} frontends that cannot use two separate 38077CLI and MI channels --- for example: because of lack of PTYs like on Windows or 38078because @value{GDBN} is used remotely via a SSH connection. 38079 38080@subheading Result 38081 38082The result consists of two or three fields: 38083 38084@table @samp 38085@item completion 38086This field contains the completed @var{command}. If @var{command} 38087has no known completions, this field is omitted. 38088 38089@item matches 38090This field contains a (possibly empty) array of matches. It is always present. 38091 38092@item max_completions_reached 38093This field contains @code{1} if number of known completions is above 38094@code{max-completions} limit (@pxref{Completion}), otherwise it contains 38095@code{0}. It is always present. 38096 38097@end table 38098 38099@subheading @value{GDBN} Command 38100 38101The corresponding @value{GDBN} command is @samp{complete}. 38102 38103@subheading Example 38104 38105@smallexample 38106(gdb) 38107-complete br 38108^done,completion="break", 38109 matches=["break","break-range"], 38110 max_completions_reached="0" 38111(gdb) 38112-complete "b ma" 38113^done,completion="b ma", 38114 matches=["b madvise","b main"],max_completions_reached="0" 38115(gdb) 38116-complete "b push_b" 38117^done,completion="b push_back(", 38118 matches=[ 38119 "b A::push_back(void*)", 38120 "b std::string::push_back(char)", 38121 "b std::vector<int, std::allocator<int> >::push_back(int&&)"], 38122 max_completions_reached="0" 38123(gdb) 38124-complete "nonexist" 38125^done,matches=[],max_completions_reached="0" 38126(gdb) 38127 38128@end smallexample 38129 38130@node Annotations 38131@chapter @value{GDBN} Annotations 38132 38133This chapter describes annotations in @value{GDBN}. Annotations were 38134designed to interface @value{GDBN} to graphical user interfaces or other 38135similar programs which want to interact with @value{GDBN} at a 38136relatively high level. 38137 38138The annotation mechanism has largely been superseded by @sc{gdb/mi} 38139(@pxref{GDB/MI}). 38140 38141@ignore 38142This is Edition @value{EDITION}, @value{DATE}. 38143@end ignore 38144 38145@menu 38146* Annotations Overview:: What annotations are; the general syntax. 38147* Server Prefix:: Issuing a command without affecting user state. 38148* Prompting:: Annotations marking @value{GDBN}'s need for input. 38149* Errors:: Annotations for error messages. 38150* Invalidation:: Some annotations describe things now invalid. 38151* Annotations for Running:: 38152 Whether the program is running, how it stopped, etc. 38153* Source Annotations:: Annotations describing source code. 38154@end menu 38155 38156@node Annotations Overview 38157@section What is an Annotation? 38158@cindex annotations 38159 38160Annotations start with a newline character, two @samp{control-z} 38161characters, and the name of the annotation. If there is no additional 38162information associated with this annotation, the name of the annotation 38163is followed immediately by a newline. If there is additional 38164information, the name of the annotation is followed by a space, the 38165additional information, and a newline. The additional information 38166cannot contain newline characters. 38167 38168Any output not beginning with a newline and two @samp{control-z} 38169characters denotes literal output from @value{GDBN}. Currently there is 38170no need for @value{GDBN} to output a newline followed by two 38171@samp{control-z} characters, but if there was such a need, the 38172annotations could be extended with an @samp{escape} annotation which 38173means those three characters as output. 38174 38175The annotation @var{level}, which is specified using the 38176@option{--annotate} command line option (@pxref{Mode Options}), controls 38177how much information @value{GDBN} prints together with its prompt, 38178values of expressions, source lines, and other types of output. Level 0 38179is for no annotations, level 1 is for use when @value{GDBN} is run as a 38180subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable 38181for programs that control @value{GDBN}, and level 2 annotations have 38182been made obsolete (@pxref{Limitations, , Limitations of the Annotation 38183Interface, annotate, GDB's Obsolete Annotations}). 38184 38185@table @code 38186@kindex set annotate 38187@item set annotate @var{level} 38188The @value{GDBN} command @code{set annotate} sets the level of 38189annotations to the specified @var{level}. 38190 38191@item show annotate 38192@kindex show annotate 38193Show the current annotation level. 38194@end table 38195 38196This chapter describes level 3 annotations. 38197 38198A simple example of starting up @value{GDBN} with annotations is: 38199 38200@smallexample 38201$ @kbd{gdb --annotate=3} 38202GNU gdb 6.0 38203Copyright 2003 Free Software Foundation, Inc. 38204GDB is free software, covered by the GNU General Public License, 38205and you are welcome to change it and/or distribute copies of it 38206under certain conditions. 38207Type "show copying" to see the conditions. 38208There is absolutely no warranty for GDB. Type "show warranty" 38209for details. 38210This GDB was configured as "i386-pc-linux-gnu" 38211 38212^Z^Zpre-prompt 38213(@value{GDBP}) 38214^Z^Zprompt 38215@kbd{quit} 38216 38217^Z^Zpost-prompt 38218$ 38219@end smallexample 38220 38221Here @samp{quit} is input to @value{GDBN}; the rest is output from 38222@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z} 38223denotes a @samp{control-z} character) are annotations; the rest is 38224output from @value{GDBN}. 38225 38226@node Server Prefix 38227@section The Server Prefix 38228@cindex server prefix 38229 38230If you prefix a command with @samp{server } then it will not affect 38231the command history, nor will it affect @value{GDBN}'s notion of which 38232command to repeat if @key{RET} is pressed on a line by itself. This 38233means that commands can be run behind a user's back by a front-end in 38234a transparent manner. 38235 38236The @code{server } prefix does not affect the recording of values into 38237the value history; to print a value without recording it into the 38238value history, use the @code{output} command instead of the 38239@code{print} command. 38240 38241Using this prefix also disables confirmation requests 38242(@pxref{confirmation requests}). 38243 38244@node Prompting 38245@section Annotation for @value{GDBN} Input 38246 38247@cindex annotations for prompts 38248When @value{GDBN} prompts for input, it annotates this fact so it is possible 38249to know when to send output, when the output from a given command is 38250over, etc. 38251 38252Different kinds of input each have a different @dfn{input type}. Each 38253input type has three annotations: a @code{pre-} annotation, which 38254denotes the beginning of any prompt which is being output, a plain 38255annotation, which denotes the end of the prompt, and then a @code{post-} 38256annotation which denotes the end of any echo which may (or may not) be 38257associated with the input. For example, the @code{prompt} input type 38258features the following annotations: 38259 38260@smallexample 38261^Z^Zpre-prompt 38262^Z^Zprompt 38263^Z^Zpost-prompt 38264@end smallexample 38265 38266The input types are 38267 38268@table @code 38269@findex pre-prompt annotation 38270@findex prompt annotation 38271@findex post-prompt annotation 38272@item prompt 38273When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt). 38274 38275@findex pre-commands annotation 38276@findex commands annotation 38277@findex post-commands annotation 38278@item commands 38279When @value{GDBN} prompts for a set of commands, like in the @code{commands} 38280command. The annotations are repeated for each command which is input. 38281 38282@findex pre-overload-choice annotation 38283@findex overload-choice annotation 38284@findex post-overload-choice annotation 38285@item overload-choice 38286When @value{GDBN} wants the user to select between various overloaded functions. 38287 38288@findex pre-query annotation 38289@findex query annotation 38290@findex post-query annotation 38291@item query 38292When @value{GDBN} wants the user to confirm a potentially dangerous operation. 38293 38294@findex pre-prompt-for-continue annotation 38295@findex prompt-for-continue annotation 38296@findex post-prompt-for-continue annotation 38297@item prompt-for-continue 38298When @value{GDBN} is asking the user to press return to continue. Note: Don't 38299expect this to work well; instead use @code{set height 0} to disable 38300prompting. This is because the counting of lines is buggy in the 38301presence of annotations. 38302@end table 38303 38304@node Errors 38305@section Errors 38306@cindex annotations for errors, warnings and interrupts 38307 38308@findex quit annotation 38309@smallexample 38310^Z^Zquit 38311@end smallexample 38312 38313This annotation occurs right before @value{GDBN} responds to an interrupt. 38314 38315@findex error annotation 38316@smallexample 38317^Z^Zerror 38318@end smallexample 38319 38320This annotation occurs right before @value{GDBN} responds to an error. 38321 38322Quit and error annotations indicate that any annotations which @value{GDBN} was 38323in the middle of may end abruptly. For example, if a 38324@code{value-history-begin} annotation is followed by a @code{error}, one 38325cannot expect to receive the matching @code{value-history-end}. One 38326cannot expect not to receive it either, however; an error annotation 38327does not necessarily mean that @value{GDBN} is immediately returning all the way 38328to the top level. 38329 38330@findex error-begin annotation 38331A quit or error annotation may be preceded by 38332 38333@smallexample 38334^Z^Zerror-begin 38335@end smallexample 38336 38337Any output between that and the quit or error annotation is the error 38338message. 38339 38340Warning messages are not yet annotated. 38341@c If we want to change that, need to fix warning(), type_error(), 38342@c range_error(), and possibly other places. 38343 38344@node Invalidation 38345@section Invalidation Notices 38346 38347@cindex annotations for invalidation messages 38348The following annotations say that certain pieces of state may have 38349changed. 38350 38351@table @code 38352@findex frames-invalid annotation 38353@item ^Z^Zframes-invalid 38354 38355The frames (for example, output from the @code{backtrace} command) may 38356have changed. 38357 38358@findex breakpoints-invalid annotation 38359@item ^Z^Zbreakpoints-invalid 38360 38361The breakpoints may have changed. For example, the user just added or 38362deleted a breakpoint. 38363@end table 38364 38365@node Annotations for Running 38366@section Running the Program 38367@cindex annotations for running programs 38368 38369@findex starting annotation 38370@findex stopping annotation 38371When the program starts executing due to a @value{GDBN} command such as 38372@code{step} or @code{continue}, 38373 38374@smallexample 38375^Z^Zstarting 38376@end smallexample 38377 38378is output. When the program stops, 38379 38380@smallexample 38381^Z^Zstopped 38382@end smallexample 38383 38384is output. Before the @code{stopped} annotation, a variety of 38385annotations describe how the program stopped. 38386 38387@table @code 38388@findex exited annotation 38389@item ^Z^Zexited @var{exit-status} 38390The program exited, and @var{exit-status} is the exit status (zero for 38391successful exit, otherwise nonzero). 38392 38393@findex signalled annotation 38394@findex signal-name annotation 38395@findex signal-name-end annotation 38396@findex signal-string annotation 38397@findex signal-string-end annotation 38398@item ^Z^Zsignalled 38399The program exited with a signal. After the @code{^Z^Zsignalled}, the 38400annotation continues: 38401 38402@smallexample 38403@var{intro-text} 38404^Z^Zsignal-name 38405@var{name} 38406^Z^Zsignal-name-end 38407@var{middle-text} 38408^Z^Zsignal-string 38409@var{string} 38410^Z^Zsignal-string-end 38411@var{end-text} 38412@end smallexample 38413 38414@noindent 38415where @var{name} is the name of the signal, such as @code{SIGILL} or 38416@code{SIGSEGV}, and @var{string} is the explanation of the signal, such 38417as @code{Illegal Instruction} or @code{Segmentation fault}. The arguments 38418@var{intro-text}, @var{middle-text}, and @var{end-text} are for the 38419user's benefit and have no particular format. 38420 38421@findex signal annotation 38422@item ^Z^Zsignal 38423The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is 38424just saying that the program received the signal, not that it was 38425terminated with it. 38426 38427@findex breakpoint annotation 38428@item ^Z^Zbreakpoint @var{number} 38429The program hit breakpoint number @var{number}. 38430 38431@findex watchpoint annotation 38432@item ^Z^Zwatchpoint @var{number} 38433The program hit watchpoint number @var{number}. 38434@end table 38435 38436@node Source Annotations 38437@section Displaying Source 38438@cindex annotations for source display 38439 38440@findex source annotation 38441The following annotation is used instead of displaying source code: 38442 38443@smallexample 38444^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr} 38445@end smallexample 38446 38447where @var{filename} is an absolute file name indicating which source 38448file, @var{line} is the line number within that file (where 1 is the 38449first line in the file), @var{character} is the character position 38450within the file (where 0 is the first character in the file) (for most 38451debug formats this will necessarily point to the beginning of a line), 38452@var{middle} is @samp{middle} if @var{addr} is in the middle of the 38453line, or @samp{beg} if @var{addr} is at the beginning of the line, and 38454@var{addr} is the address in the target program associated with the 38455source which is being displayed. The @var{addr} is in the form @samp{0x} 38456followed by one or more lowercase hex digits (note that this does not 38457depend on the language). 38458 38459@node JIT Interface 38460@chapter JIT Compilation Interface 38461@cindex just-in-time compilation 38462@cindex JIT compilation interface 38463 38464This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation 38465interface. A JIT compiler is a program or library that generates native 38466executable code at runtime and executes it, usually in order to achieve good 38467performance while maintaining platform independence. 38468 38469Programs that use JIT compilation are normally difficult to debug because 38470portions of their code are generated at runtime, instead of being loaded from 38471object files, which is where @value{GDBN} normally finds the program's symbols 38472and debug information. In order to debug programs that use JIT compilation, 38473@value{GDBN} has an interface that allows the program to register in-memory 38474symbol files with @value{GDBN} at runtime. 38475 38476If you are using @value{GDBN} to debug a program that uses this interface, then 38477it should work transparently so long as you have not stripped the binary. If 38478you are developing a JIT compiler, then the interface is documented in the rest 38479of this chapter. At this time, the only known client of this interface is the 38480LLVM JIT. 38481 38482Broadly speaking, the JIT interface mirrors the dynamic loader interface. The 38483JIT compiler communicates with @value{GDBN} by writing data into a global 38484variable and calling a function at a well-known symbol. When @value{GDBN} 38485attaches, it reads a linked list of symbol files from the global variable to 38486find existing code, and puts a breakpoint in the function so that it can find 38487out about additional code. 38488 38489@menu 38490* Declarations:: Relevant C struct declarations 38491* Registering Code:: Steps to register code 38492* Unregistering Code:: Steps to unregister code 38493* Custom Debug Info:: Emit debug information in a custom format 38494@end menu 38495 38496@node Declarations 38497@section JIT Declarations 38498 38499These are the relevant struct declarations that a C program should include to 38500implement the interface: 38501 38502@smallexample 38503typedef enum 38504@{ 38505 JIT_NOACTION = 0, 38506 JIT_REGISTER_FN, 38507 JIT_UNREGISTER_FN 38508@} jit_actions_t; 38509 38510struct jit_code_entry 38511@{ 38512 struct jit_code_entry *next_entry; 38513 struct jit_code_entry *prev_entry; 38514 const char *symfile_addr; 38515 uint64_t symfile_size; 38516@}; 38517 38518struct jit_descriptor 38519@{ 38520 uint32_t version; 38521 /* This type should be jit_actions_t, but we use uint32_t 38522 to be explicit about the bitwidth. */ 38523 uint32_t action_flag; 38524 struct jit_code_entry *relevant_entry; 38525 struct jit_code_entry *first_entry; 38526@}; 38527 38528/* GDB puts a breakpoint in this function. */ 38529void __attribute__((noinline)) __jit_debug_register_code() @{ @}; 38530 38531/* Make sure to specify the version statically, because the 38532 debugger may check the version before we can set it. */ 38533struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @}; 38534@end smallexample 38535 38536If the JIT is multi-threaded, then it is important that the JIT synchronize any 38537modifications to this global data properly, which can easily be done by putting 38538a global mutex around modifications to these structures. 38539 38540@node Registering Code 38541@section Registering Code 38542 38543To register code with @value{GDBN}, the JIT should follow this protocol: 38544 38545@itemize @bullet 38546@item 38547Generate an object file in memory with symbols and other desired debug 38548information. The file must include the virtual addresses of the sections. 38549 38550@item 38551Create a code entry for the file, which gives the start and size of the symbol 38552file. 38553 38554@item 38555Add it to the linked list in the JIT descriptor. 38556 38557@item 38558Point the relevant_entry field of the descriptor at the entry. 38559 38560@item 38561Set @code{action_flag} to @code{JIT_REGISTER} and call 38562@code{__jit_debug_register_code}. 38563@end itemize 38564 38565When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the 38566@code{relevant_entry} pointer so it doesn't have to walk the list looking for 38567new code. However, the linked list must still be maintained in order to allow 38568@value{GDBN} to attach to a running process and still find the symbol files. 38569 38570@node Unregistering Code 38571@section Unregistering Code 38572 38573If code is freed, then the JIT should use the following protocol: 38574 38575@itemize @bullet 38576@item 38577Remove the code entry corresponding to the code from the linked list. 38578 38579@item 38580Point the @code{relevant_entry} field of the descriptor at the code entry. 38581 38582@item 38583Set @code{action_flag} to @code{JIT_UNREGISTER} and call 38584@code{__jit_debug_register_code}. 38585@end itemize 38586 38587If the JIT frees or recompiles code without unregistering it, then @value{GDBN} 38588and the JIT will leak the memory used for the associated symbol files. 38589 38590@node Custom Debug Info 38591@section Custom Debug Info 38592@cindex custom JIT debug info 38593@cindex JIT debug info reader 38594 38595Generating debug information in platform-native file formats (like ELF 38596or COFF) may be an overkill for JIT compilers; especially if all the 38597debug info is used for is displaying a meaningful backtrace. The 38598issue can be resolved by having the JIT writers decide on a debug info 38599format and also provide a reader that parses the debug info generated 38600by the JIT compiler. This section gives a brief overview on writing 38601such a parser. More specific details can be found in the source file 38602@file{gdb/jit-reader.in}, which is also installed as a header at 38603@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion. 38604 38605The reader is implemented as a shared object (so this functionality is 38606not available on platforms which don't allow loading shared objects at 38607runtime). Two @value{GDBN} commands, @code{jit-reader-load} and 38608@code{jit-reader-unload} are provided, to be used to load and unload 38609the readers from a preconfigured directory. Once loaded, the shared 38610object is used the parse the debug information emitted by the JIT 38611compiler. 38612 38613@menu 38614* Using JIT Debug Info Readers:: How to use supplied readers correctly 38615* Writing JIT Debug Info Readers:: Creating a debug-info reader 38616@end menu 38617 38618@node Using JIT Debug Info Readers 38619@subsection Using JIT Debug Info Readers 38620@kindex jit-reader-load 38621@kindex jit-reader-unload 38622 38623Readers can be loaded and unloaded using the @code{jit-reader-load} 38624and @code{jit-reader-unload} commands. 38625 38626@table @code 38627@item jit-reader-load @var{reader} 38628Load the JIT reader named @var{reader}, which is a shared 38629object specified as either an absolute or a relative file name. In 38630the latter case, @value{GDBN} will try to load the reader from a 38631pre-configured directory, usually @file{@var{libdir}/gdb/} on a UNIX 38632system (here @var{libdir} is the system library directory, often 38633@file{/usr/local/lib}). 38634 38635Only one reader can be active at a time; trying to load a second 38636reader when one is already loaded will result in @value{GDBN} 38637reporting an error. A new JIT reader can be loaded by first unloading 38638the current one using @code{jit-reader-unload} and then invoking 38639@code{jit-reader-load}. 38640 38641@item jit-reader-unload 38642Unload the currently loaded JIT reader. 38643 38644@end table 38645 38646@node Writing JIT Debug Info Readers 38647@subsection Writing JIT Debug Info Readers 38648@cindex writing JIT debug info readers 38649 38650As mentioned, a reader is essentially a shared object conforming to a 38651certain ABI. This ABI is described in @file{jit-reader.h}. 38652 38653@file{jit-reader.h} defines the structures, macros and functions 38654required to write a reader. It is installed (along with 38655@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is 38656the system include directory. 38657 38658Readers need to be released under a GPL compatible license. A reader 38659can be declared as released under such a license by placing the macro 38660@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file. 38661 38662The entry point for readers is the symbol @code{gdb_init_reader}, 38663which is expected to be a function with the prototype 38664 38665@findex gdb_init_reader 38666@smallexample 38667extern struct gdb_reader_funcs *gdb_init_reader (void); 38668@end smallexample 38669 38670@cindex @code{struct gdb_reader_funcs} 38671 38672@code{struct gdb_reader_funcs} contains a set of pointers to callback 38673functions. These functions are executed to read the debug info 38674generated by the JIT compiler (@code{read}), to unwind stack frames 38675(@code{unwind}) and to create canonical frame IDs 38676(@code{get_frame_id}). It also has a callback that is called when the 38677reader is being unloaded (@code{destroy}). The struct looks like this 38678 38679@smallexample 38680struct gdb_reader_funcs 38681@{ 38682 /* Must be set to GDB_READER_INTERFACE_VERSION. */ 38683 int reader_version; 38684 38685 /* For use by the reader. */ 38686 void *priv_data; 38687 38688 gdb_read_debug_info *read; 38689 gdb_unwind_frame *unwind; 38690 gdb_get_frame_id *get_frame_id; 38691 gdb_destroy_reader *destroy; 38692@}; 38693@end smallexample 38694 38695@cindex @code{struct gdb_symbol_callbacks} 38696@cindex @code{struct gdb_unwind_callbacks} 38697 38698The callbacks are provided with another set of callbacks by 38699@value{GDBN} to do their job. For @code{read}, these callbacks are 38700passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind} 38701and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}. 38702@code{struct gdb_symbol_callbacks} has callbacks to create new object 38703files and new symbol tables inside those object files. @code{struct 38704gdb_unwind_callbacks} has callbacks to read registers off the current 38705frame and to write out the values of the registers in the previous 38706frame. Both have a callback (@code{target_read}) to read bytes off the 38707target's address space. 38708 38709@node In-Process Agent 38710@chapter In-Process Agent 38711@cindex debugging agent 38712The traditional debugging model is conceptually low-speed, but works fine, 38713because most bugs can be reproduced in debugging-mode execution. However, 38714as multi-core or many-core processors are becoming mainstream, and 38715multi-threaded programs become more and more popular, there should be more 38716and more bugs that only manifest themselves at normal-mode execution, for 38717example, thread races, because debugger's interference with the program's 38718timing may conceal the bugs. On the other hand, in some applications, 38719it is not feasible for the debugger to interrupt the program's execution 38720long enough for the developer to learn anything helpful about its behavior. 38721If the program's correctness depends on its real-time behavior, delays 38722introduced by a debugger might cause the program to fail, even when the 38723code itself is correct. It is useful to be able to observe the program's 38724behavior without interrupting it. 38725 38726Therefore, traditional debugging model is too intrusive to reproduce 38727some bugs. In order to reduce the interference with the program, we can 38728reduce the number of operations performed by debugger. The 38729@dfn{In-Process Agent}, a shared library, is running within the same 38730process with inferior, and is able to perform some debugging operations 38731itself. As a result, debugger is only involved when necessary, and 38732performance of debugging can be improved accordingly. Note that 38733interference with program can be reduced but can't be removed completely, 38734because the in-process agent will still stop or slow down the program. 38735 38736The in-process agent can interpret and execute Agent Expressions 38737(@pxref{Agent Expressions}) during performing debugging operations. The 38738agent expressions can be used for different purposes, such as collecting 38739data in tracepoints, and condition evaluation in breakpoints. 38740 38741@anchor{Control Agent} 38742You can control whether the in-process agent is used as an aid for 38743debugging with the following commands: 38744 38745@table @code 38746@kindex set agent on 38747@item set agent on 38748Causes the in-process agent to perform some operations on behalf of the 38749debugger. Just which operations requested by the user will be done 38750by the in-process agent depends on the its capabilities. For example, 38751if you request to evaluate breakpoint conditions in the in-process agent, 38752and the in-process agent has such capability as well, then breakpoint 38753conditions will be evaluated in the in-process agent. 38754 38755@kindex set agent off 38756@item set agent off 38757Disables execution of debugging operations by the in-process agent. All 38758of the operations will be performed by @value{GDBN}. 38759 38760@kindex show agent 38761@item show agent 38762Display the current setting of execution of debugging operations by 38763the in-process agent. 38764@end table 38765 38766@menu 38767* In-Process Agent Protocol:: 38768@end menu 38769 38770@node In-Process Agent Protocol 38771@section In-Process Agent Protocol 38772@cindex in-process agent protocol 38773 38774The in-process agent is able to communicate with both @value{GDBN} and 38775GDBserver (@pxref{In-Process Agent}). This section documents the protocol 38776used for communications between @value{GDBN} or GDBserver and the IPA. 38777In general, @value{GDBN} or GDBserver sends commands 38778(@pxref{IPA Protocol Commands}) and data to in-process agent, and then 38779in-process agent replies back with the return result of the command, or 38780some other information. The data sent to in-process agent is composed 38781of primitive data types, such as 4-byte or 8-byte type, and composite 38782types, which are called objects (@pxref{IPA Protocol Objects}). 38783 38784@menu 38785* IPA Protocol Objects:: 38786* IPA Protocol Commands:: 38787@end menu 38788 38789@node IPA Protocol Objects 38790@subsection IPA Protocol Objects 38791@cindex ipa protocol objects 38792 38793The commands sent to and results received from agent may contain some 38794complex data types called @dfn{objects}. 38795 38796The in-process agent is running on the same machine with @value{GDBN} 38797or GDBserver, so it doesn't have to handle as much differences between 38798two ends as remote protocol (@pxref{Remote Protocol}) tries to handle. 38799However, there are still some differences of two ends in two processes: 38800 38801@enumerate 38802@item 38803word size. On some 64-bit machines, @value{GDBN} or GDBserver can be 38804compiled as a 64-bit executable, while in-process agent is a 32-bit one. 38805@item 38806ABI. Some machines may have multiple types of ABI, @value{GDBN} or 38807GDBserver is compiled with one, and in-process agent is compiled with 38808the other one. 38809@end enumerate 38810 38811Here are the IPA Protocol Objects: 38812 38813@enumerate 38814@item 38815agent expression object. It represents an agent expression 38816(@pxref{Agent Expressions}). 38817@anchor{agent expression object} 38818@item 38819tracepoint action object. It represents a tracepoint action 38820(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers, 38821memory, static trace data and to evaluate expression. 38822@anchor{tracepoint action object} 38823@item 38824tracepoint object. It represents a tracepoint (@pxref{Tracepoints}). 38825@anchor{tracepoint object} 38826 38827@end enumerate 38828 38829The following table describes important attributes of each IPA protocol 38830object: 38831 38832@multitable @columnfractions .30 .20 .50 38833@headitem Name @tab Size @tab Description 38834@item @emph{agent expression object} @tab @tab 38835@item length @tab 4 @tab length of bytes code 38836@item byte code @tab @var{length} @tab contents of byte code 38837@item @emph{tracepoint action for collecting memory} @tab @tab 38838@item 'M' @tab 1 @tab type of tracepoint action 38839@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the 38840address of the lowest byte to collect, otherwise @var{addr} is the offset 38841of @var{basereg} for memory collecting. 38842@item len @tab 8 @tab length of memory for collecting 38843@item basereg @tab 4 @tab the register number containing the starting 38844memory address for collecting. 38845@item @emph{tracepoint action for collecting registers} @tab @tab 38846@item 'R' @tab 1 @tab type of tracepoint action 38847@item @emph{tracepoint action for collecting static trace data} @tab @tab 38848@item 'L' @tab 1 @tab type of tracepoint action 38849@item @emph{tracepoint action for expression evaluation} @tab @tab 38850@item 'X' @tab 1 @tab type of tracepoint action 38851@item agent expression @tab length of @tab @ref{agent expression object} 38852@item @emph{tracepoint object} @tab @tab 38853@item number @tab 4 @tab number of tracepoint 38854@item address @tab 8 @tab address of tracepoint inserted on 38855@item type @tab 4 @tab type of tracepoint 38856@item enabled @tab 1 @tab enable or disable of tracepoint 38857@item step_count @tab 8 @tab step 38858@item pass_count @tab 8 @tab pass 38859@item numactions @tab 4 @tab number of tracepoint actions 38860@item hit count @tab 8 @tab hit count 38861@item trace frame usage @tab 8 @tab trace frame usage 38862@item compiled_cond @tab 8 @tab compiled condition 38863@item orig_size @tab 8 @tab orig size 38864@item condition @tab 4 if condition is NULL otherwise length of 38865@ref{agent expression object} 38866@tab zero if condition is NULL, otherwise is 38867@ref{agent expression object} 38868@item actions @tab variable 38869@tab numactions number of @ref{tracepoint action object} 38870@end multitable 38871 38872@node IPA Protocol Commands 38873@subsection IPA Protocol Commands 38874@cindex ipa protocol commands 38875 38876The spaces in each command are delimiters to ease reading this commands 38877specification. They don't exist in real commands. 38878 38879@table @samp 38880 38881@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head} 38882Installs a new fast tracepoint described by @var{tracepoint_object} 38883(@pxref{tracepoint object}). The @var{gdb_jump_pad_head}, 8-byte long, is the 38884head of @dfn{jumppad}, which is used to jump to data collection routine 38885in IPA finally. 38886 38887Replies: 38888@table @samp 38889@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump} 38890@var{target_address} is address of tracepoint in the inferior. 38891The @var{gdb_jump_pad_head} is updated head of jumppad. Both of 38892@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long. 38893The @var{fjump} contains a sequence of instructions jump to jumppad entry. 38894The @var{fjump_size}, 4-byte long, is the size of @var{fjump}. 38895@item E @var{NN} 38896for an error 38897 38898@end table 38899 38900@item close 38901Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver 38902is about to kill inferiors. 38903 38904@item qTfSTM 38905@xref{qTfSTM}. 38906@item qTsSTM 38907@xref{qTsSTM}. 38908@item qTSTMat 38909@xref{qTSTMat}. 38910@item probe_marker_at:@var{address} 38911Asks in-process agent to probe the marker at @var{address}. 38912 38913Replies: 38914@table @samp 38915@item E @var{NN} 38916for an error 38917@end table 38918@item unprobe_marker_at:@var{address} 38919Asks in-process agent to unprobe the marker at @var{address}. 38920@end table 38921 38922@node GDB Bugs 38923@chapter Reporting Bugs in @value{GDBN} 38924@cindex bugs in @value{GDBN} 38925@cindex reporting bugs in @value{GDBN} 38926 38927Your bug reports play an essential role in making @value{GDBN} reliable. 38928 38929Reporting a bug may help you by bringing a solution to your problem, or it 38930may not. But in any case the principal function of a bug report is to help 38931the entire community by making the next version of @value{GDBN} work better. Bug 38932reports are your contribution to the maintenance of @value{GDBN}. 38933 38934In order for a bug report to serve its purpose, you must include the 38935information that enables us to fix the bug. 38936 38937@menu 38938* Bug Criteria:: Have you found a bug? 38939* Bug Reporting:: How to report bugs 38940@end menu 38941 38942@node Bug Criteria 38943@section Have You Found a Bug? 38944@cindex bug criteria 38945 38946If you are not sure whether you have found a bug, here are some guidelines: 38947 38948@itemize @bullet 38949@cindex fatal signal 38950@cindex debugger crash 38951@cindex crash of debugger 38952@item 38953If the debugger gets a fatal signal, for any input whatever, that is a 38954@value{GDBN} bug. Reliable debuggers never crash. 38955 38956@cindex error on valid input 38957@item 38958If @value{GDBN} produces an error message for valid input, that is a 38959bug. (Note that if you're cross debugging, the problem may also be 38960somewhere in the connection to the target.) 38961 38962@cindex invalid input 38963@item 38964If @value{GDBN} does not produce an error message for invalid input, 38965that is a bug. However, you should note that your idea of 38966``invalid input'' might be our idea of ``an extension'' or ``support 38967for traditional practice''. 38968 38969@item 38970If you are an experienced user of debugging tools, your suggestions 38971for improvement of @value{GDBN} are welcome in any case. 38972@end itemize 38973 38974@node Bug Reporting 38975@section How to Report Bugs 38976@cindex bug reports 38977@cindex @value{GDBN} bugs, reporting 38978 38979A number of companies and individuals offer support for @sc{gnu} products. 38980If you obtained @value{GDBN} from a support organization, we recommend you 38981contact that organization first. 38982 38983You can find contact information for many support companies and 38984individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs 38985distribution. 38986@c should add a web page ref... 38987 38988@ifset BUGURL 38989@ifset BUGURL_DEFAULT 38990In any event, we also recommend that you submit bug reports for 38991@value{GDBN}. The preferred method is to submit them directly using 38992@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web 38993page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can 38994be used. 38995 38996@strong{Do not send bug reports to @samp{info-gdb}, or to 38997@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do 38998not want to receive bug reports. Those that do have arranged to receive 38999@samp{bug-gdb}. 39000 39001The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which 39002serves as a repeater. The mailing list and the newsgroup carry exactly 39003the same messages. Often people think of posting bug reports to the 39004newsgroup instead of mailing them. This appears to work, but it has one 39005problem which can be crucial: a newsgroup posting often lacks a mail 39006path back to the sender. Thus, if we need to ask for more information, 39007we may be unable to reach you. For this reason, it is better to send 39008bug reports to the mailing list. 39009@end ifset 39010@ifclear BUGURL_DEFAULT 39011In any event, we also recommend that you submit bug reports for 39012@value{GDBN} to @value{BUGURL}. 39013@end ifclear 39014@end ifset 39015 39016The fundamental principle of reporting bugs usefully is this: 39017@strong{report all the facts}. If you are not sure whether to state a 39018fact or leave it out, state it! 39019 39020Often people omit facts because they think they know what causes the 39021problem and assume that some details do not matter. Thus, you might 39022assume that the name of the variable you use in an example does not matter. 39023Well, probably it does not, but one cannot be sure. Perhaps the bug is a 39024stray memory reference which happens to fetch from the location where that 39025name is stored in memory; perhaps, if the name were different, the contents 39026of that location would fool the debugger into doing the right thing despite 39027the bug. Play it safe and give a specific, complete example. That is the 39028easiest thing for you to do, and the most helpful. 39029 39030Keep in mind that the purpose of a bug report is to enable us to fix the 39031bug. It may be that the bug has been reported previously, but neither 39032you nor we can know that unless your bug report is complete and 39033self-contained. 39034 39035Sometimes people give a few sketchy facts and ask, ``Does this ring a 39036bell?'' Those bug reports are useless, and we urge everyone to 39037@emph{refuse to respond to them} except to chide the sender to report 39038bugs properly. 39039 39040To enable us to fix the bug, you should include all these things: 39041 39042@itemize @bullet 39043@item 39044The version of @value{GDBN}. @value{GDBN} announces it if you start 39045with no arguments; you can also print it at any time using @code{show 39046version}. 39047 39048Without this, we will not know whether there is any point in looking for 39049the bug in the current version of @value{GDBN}. 39050 39051@item 39052The type of machine you are using, and the operating system name and 39053version number. 39054 39055@item 39056The details of the @value{GDBN} build-time configuration. 39057@value{GDBN} shows these details if you invoke it with the 39058@option{--configuration} command-line option, or if you type 39059@code{show configuration} at @value{GDBN}'s prompt. 39060 39061@item 39062What compiler (and its version) was used to compile @value{GDBN}---e.g.@: 39063``@value{GCC}--2.8.1''. 39064 39065@item 39066What compiler (and its version) was used to compile the program you are 39067debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP 39068C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version} 39069to get this information; for other compilers, see the documentation for 39070those compilers. 39071 39072@item 39073The command arguments you gave the compiler to compile your example and 39074observe the bug. For example, did you use @samp{-O}? To guarantee 39075you will not omit something important, list them all. A copy of the 39076Makefile (or the output from make) is sufficient. 39077 39078If we were to try to guess the arguments, we would probably guess wrong 39079and then we might not encounter the bug. 39080 39081@item 39082A complete input script, and all necessary source files, that will 39083reproduce the bug. 39084 39085@item 39086A description of what behavior you observe that you believe is 39087incorrect. For example, ``It gets a fatal signal.'' 39088 39089Of course, if the bug is that @value{GDBN} gets a fatal signal, then we 39090will certainly notice it. But if the bug is incorrect output, we might 39091not notice unless it is glaringly wrong. You might as well not give us 39092a chance to make a mistake. 39093 39094Even if the problem you experience is a fatal signal, you should still 39095say so explicitly. Suppose something strange is going on, such as, your 39096copy of @value{GDBN} is out of synch, or you have encountered a bug in 39097the C library on your system. (This has happened!) Your copy might 39098crash and ours would not. If you told us to expect a crash, then when 39099ours fails to crash, we would know that the bug was not happening for 39100us. If you had not told us to expect a crash, then we would not be able 39101to draw any conclusion from our observations. 39102 39103@pindex script 39104@cindex recording a session script 39105To collect all this information, you can use a session recording program 39106such as @command{script}, which is available on many Unix systems. 39107Just run your @value{GDBN} session inside @command{script} and then 39108include the @file{typescript} file with your bug report. 39109 39110Another way to record a @value{GDBN} session is to run @value{GDBN} 39111inside Emacs and then save the entire buffer to a file. 39112 39113@item 39114If you wish to suggest changes to the @value{GDBN} source, send us context 39115diffs. If you even discuss something in the @value{GDBN} source, refer to 39116it by context, not by line number. 39117 39118The line numbers in our development sources will not match those in your 39119sources. Your line numbers would convey no useful information to us. 39120 39121@end itemize 39122 39123Here are some things that are not necessary: 39124 39125@itemize @bullet 39126@item 39127A description of the envelope of the bug. 39128 39129Often people who encounter a bug spend a lot of time investigating 39130which changes to the input file will make the bug go away and which 39131changes will not affect it. 39132 39133This is often time consuming and not very useful, because the way we 39134will find the bug is by running a single example under the debugger 39135with breakpoints, not by pure deduction from a series of examples. 39136We recommend that you save your time for something else. 39137 39138Of course, if you can find a simpler example to report @emph{instead} 39139of the original one, that is a convenience for us. Errors in the 39140output will be easier to spot, running under the debugger will take 39141less time, and so on. 39142 39143However, simplification is not vital; if you do not want to do this, 39144report the bug anyway and send us the entire test case you used. 39145 39146@item 39147A patch for the bug. 39148 39149A patch for the bug does help us if it is a good one. But do not omit 39150the necessary information, such as the test case, on the assumption that 39151a patch is all we need. We might see problems with your patch and decide 39152to fix the problem another way, or we might not understand it at all. 39153 39154Sometimes with a program as complicated as @value{GDBN} it is very hard to 39155construct an example that will make the program follow a certain path 39156through the code. If you do not send us the example, we will not be able 39157to construct one, so we will not be able to verify that the bug is fixed. 39158 39159And if we cannot understand what bug you are trying to fix, or why your 39160patch should be an improvement, we will not install it. A test case will 39161help us to understand. 39162 39163@item 39164A guess about what the bug is or what it depends on. 39165 39166Such guesses are usually wrong. Even we cannot guess right about such 39167things without first using the debugger to find the facts. 39168@end itemize 39169 39170@c The readline documentation is distributed with the readline code 39171@c and consists of the two following files: 39172@c rluser.texi 39173@c hsuser.texi 39174@c Use -I with makeinfo to point to the appropriate directory, 39175@c environment var TEXINPUTS with TeX. 39176@ifclear SYSTEM_READLINE 39177@include rluser.texi 39178@include hsuser.texi 39179@end ifclear 39180 39181@node In Memoriam 39182@appendix In Memoriam 39183 39184The @value{GDBN} project mourns the loss of the following long-time 39185contributors: 39186 39187@table @code 39188@item Fred Fish 39189Fred was a long-standing contributor to @value{GDBN} (1991-2006), and 39190to Free Software in general. Outside of @value{GDBN}, he was known in 39191the Amiga world for his series of Fish Disks, and the GeekGadget project. 39192 39193@item Michael Snyder 39194Michael was one of the Global Maintainers of the @value{GDBN} project, 39195with contributions recorded as early as 1996, until 2011. In addition 39196to his day to day participation, he was a large driving force behind 39197adding Reverse Debugging to @value{GDBN}. 39198@end table 39199 39200Beyond their technical contributions to the project, they were also 39201enjoyable members of the Free Software Community. We will miss them. 39202 39203@node Formatting Documentation 39204@appendix Formatting Documentation 39205 39206@cindex @value{GDBN} reference card 39207@cindex reference card 39208The @value{GDBN} 4 release includes an already-formatted reference card, ready 39209for printing with PostScript or Ghostscript, in the @file{gdb} 39210subdirectory of the main source directory@footnote{In 39211@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN} 39212release.}. If you can use PostScript or Ghostscript with your printer, 39213you can print the reference card immediately with @file{refcard.ps}. 39214 39215The release also includes the source for the reference card. You 39216can format it, using @TeX{}, by typing: 39217 39218@smallexample 39219make refcard.dvi 39220@end smallexample 39221 39222The @value{GDBN} reference card is designed to print in @dfn{landscape} 39223mode on US ``letter'' size paper; 39224that is, on a sheet 11 inches wide by 8.5 inches 39225high. You will need to specify this form of printing as an option to 39226your @sc{dvi} output program. 39227 39228@cindex documentation 39229 39230All the documentation for @value{GDBN} comes as part of the machine-readable 39231distribution. The documentation is written in Texinfo format, which is 39232a documentation system that uses a single source file to produce both 39233on-line information and a printed manual. You can use one of the Info 39234formatting commands to create the on-line version of the documentation 39235and @TeX{} (or @code{texi2roff}) to typeset the printed version. 39236 39237@value{GDBN} includes an already formatted copy of the on-line Info 39238version of this manual in the @file{gdb} subdirectory. The main Info 39239file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to 39240subordinate files matching @samp{gdb.info*} in the same directory. If 39241necessary, you can print out these files, or read them with any editor; 39242but they are easier to read using the @code{info} subsystem in @sc{gnu} 39243Emacs or the standalone @code{info} program, available as part of the 39244@sc{gnu} Texinfo distribution. 39245 39246If you want to format these Info files yourself, you need one of the 39247Info formatting programs, such as @code{texinfo-format-buffer} or 39248@code{makeinfo}. 39249 39250If you have @code{makeinfo} installed, and are in the top level 39251@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of 39252version @value{GDBVN}), you can make the Info file by typing: 39253 39254@smallexample 39255cd gdb 39256make gdb.info 39257@end smallexample 39258 39259If you want to typeset and print copies of this manual, you need @TeX{}, 39260a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the 39261Texinfo definitions file. 39262 39263@TeX{} is a typesetting program; it does not print files directly, but 39264produces output files called @sc{dvi} files. To print a typeset 39265document, you need a program to print @sc{dvi} files. If your system 39266has @TeX{} installed, chances are it has such a program. The precise 39267command to use depends on your system; @kbd{lpr -d} is common; another 39268(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may 39269require a file name without any extension or a @samp{.dvi} extension. 39270 39271@TeX{} also requires a macro definitions file called 39272@file{texinfo.tex}. This file tells @TeX{} how to typeset a document 39273written in Texinfo format. On its own, @TeX{} cannot either read or 39274typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB 39275and is located in the @file{gdb-@var{version-number}/texinfo} 39276directory. 39277 39278If you have @TeX{} and a @sc{dvi} printer program installed, you can 39279typeset and print this manual. First switch to the @file{gdb} 39280subdirectory of the main source directory (for example, to 39281@file{gdb-@value{GDBVN}/gdb}) and type: 39282 39283@smallexample 39284make gdb.dvi 39285@end smallexample 39286 39287Then give @file{gdb.dvi} to your @sc{dvi} printing program. 39288 39289@node Installing GDB 39290@appendix Installing @value{GDBN} 39291@cindex installation 39292 39293@menu 39294* Requirements:: Requirements for building @value{GDBN} 39295* Running Configure:: Invoking the @value{GDBN} @file{configure} script 39296* Separate Objdir:: Compiling @value{GDBN} in another directory 39297* Config Names:: Specifying names for hosts and targets 39298* Configure Options:: Summary of options for configure 39299* System-wide configuration:: Having a system-wide init file 39300@end menu 39301 39302@node Requirements 39303@section Requirements for Building @value{GDBN} 39304@cindex building @value{GDBN}, requirements for 39305 39306Building @value{GDBN} requires various tools and packages to be available. 39307Other packages will be used only if they are found. 39308 39309@heading Tools/Packages Necessary for Building @value{GDBN} 39310@table @asis 39311@item C@t{++}11 compiler 39312@value{GDBN} is written in C@t{++}11. It should be buildable with any 39313recent C@t{++}11 compiler, e.g.@: GCC. 39314 39315@item GNU make 39316@value{GDBN}'s build system relies on features only found in the GNU 39317make program. Other variants of @code{make} will not work. 39318 39319@item GMP (The GNU Multiple Precision Arithmetic Library) 39320@value{GDBN} now uses GMP to perform some of its arithmetics. 39321This library may be included with your operating system distribution; 39322if it is not, you can get the latest version from 39323@url{https://gmplib.org/}. If GMP is installed at an unusual path, 39324you can use the @option{--with-libgmp-prefix} option to specify 39325its location. 39326 39327@end table 39328 39329@heading Tools/Packages Optional for Building @value{GDBN} 39330@table @asis 39331@item Expat 39332@anchor{Expat} 39333@value{GDBN} can use the Expat XML parsing library. This library may be 39334included with your operating system distribution; if it is not, you 39335can get the latest version from @url{http://expat.sourceforge.net}. 39336The @file{configure} script will search for this library in several 39337standard locations; if it is installed in an unusual path, you can 39338use the @option{--with-libexpat-prefix} option to specify its location. 39339 39340Expat is used for: 39341 39342@itemize @bullet 39343@item 39344Remote protocol memory maps (@pxref{Memory Map Format}) 39345@item 39346Target descriptions (@pxref{Target Descriptions}) 39347@item 39348Remote shared library lists (@xref{Library List Format}, 39349or alternatively @pxref{Library List Format for SVR4 Targets}) 39350@item 39351MS-Windows shared libraries (@pxref{Shared Libraries}) 39352@item 39353Traceframe info (@pxref{Traceframe Info Format}) 39354@item 39355Branch trace (@pxref{Branch Trace Format}, 39356@pxref{Branch Trace Configuration Format}) 39357@end itemize 39358 39359@item Guile 39360@value{GDBN} can be scripted using GNU Guile. @xref{Guile}. By 39361default, @value{GDBN} will be compiled if the Guile libraries are 39362installed and are found by @file{configure}. You can use the 39363@code{--with-guile} option to request Guile, and pass either the Guile 39364version number or the file name of the relevant @code{pkg-config} 39365program to choose a particular version of Guile. 39366 39367@item iconv 39368@value{GDBN}'s features related to character sets (@pxref{Character 39369Sets}) require a functioning @code{iconv} implementation. If you are 39370on a GNU system, then this is provided by the GNU C Library. Some 39371other systems also provide a working @code{iconv}. 39372 39373If @value{GDBN} is using the @code{iconv} program which is installed 39374in a non-standard place, you will need to tell @value{GDBN} where to 39375find it. This is done with @option{--with-iconv-bin} which specifies 39376the directory that contains the @code{iconv} program. This program is 39377run in order to make a list of the available character sets. 39378 39379On systems without @code{iconv}, you can install GNU Libiconv. If 39380Libiconv is installed in a standard place, @value{GDBN} will 39381automatically use it if it is needed. If you have previously 39382installed Libiconv in a non-standard place, you can use the 39383@option{--with-libiconv-prefix} option to @file{configure}. 39384 39385@value{GDBN}'s top-level @file{configure} and @file{Makefile} will 39386arrange to build Libiconv if a directory named @file{libiconv} appears 39387in the top-most source directory. If Libiconv is built this way, and 39388if the operating system does not provide a suitable @code{iconv} 39389implementation, then the just-built library will automatically be used 39390by @value{GDBN}. One easy way to set this up is to download GNU 39391Libiconv, unpack it inside the top-level directory of the @value{GDBN} 39392source tree, and then rename the directory holding the Libiconv source 39393code to @samp{libiconv}. 39394 39395@item lzma 39396@value{GDBN} can support debugging sections that are compressed with 39397the LZMA library. @xref{MiniDebugInfo}. If this library is not 39398included with your operating system, you can find it in the xz package 39399at @url{http://tukaani.org/xz/}. If the LZMA library is available in 39400the usual place, then the @file{configure} script will use it 39401automatically. If it is installed in an unusual path, you can use the 39402@option{--with-liblzma-prefix} option to specify its location. 39403 39404@item MPFR 39405@anchor{MPFR} 39406@value{GDBN} can use the GNU MPFR multiple-precision floating-point 39407library. This library may be included with your operating system 39408distribution; if it is not, you can get the latest version from 39409@url{http://www.mpfr.org}. The @file{configure} script will search 39410for this library in several standard locations; if it is installed 39411in an unusual path, you can use the @option{--with-libmpfr-prefix} 39412option to specify its location. 39413 39414GNU MPFR is used to emulate target floating-point arithmetic during 39415expression evaluation when the target uses different floating-point 39416formats than the host. If GNU MPFR it is not available, @value{GDBN} 39417will fall back to using host floating-point arithmetic. 39418 39419@item Python 39420@value{GDBN} can be scripted using Python language. @xref{Python}. 39421By default, @value{GDBN} will be compiled if the Python libraries are 39422installed and are found by @file{configure}. You can use the 39423@code{--with-python} option to request Python, and pass either the 39424file name of the relevant @code{python} executable, or the name of the 39425directory in which Python is installed, to choose a particular 39426installation of Python. 39427 39428@item zlib 39429@cindex compressed debug sections 39430@value{GDBN} will use the @samp{zlib} library, if available, to read 39431compressed debug sections. Some linkers, such as GNU gold, are capable 39432of producing binaries with compressed debug sections. If @value{GDBN} 39433is compiled with @samp{zlib}, it will be able to read the debug 39434information in such binaries. 39435 39436The @samp{zlib} library is likely included with your operating system 39437distribution; if it is not, you can get the latest version from 39438@url{http://zlib.net}. 39439@end table 39440 39441@node Running Configure 39442@section Invoking the @value{GDBN} @file{configure} Script 39443@cindex configuring @value{GDBN} 39444@value{GDBN} comes with a @file{configure} script that automates the process 39445of preparing @value{GDBN} for installation; you can then use @code{make} to 39446build the @code{gdb} program. 39447@iftex 39448@c irrelevant in info file; it's as current as the code it lives with. 39449@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN}, 39450look at the @file{README} file in the sources; we may have improved the 39451installation procedures since publishing this manual.} 39452@end iftex 39453 39454The @value{GDBN} distribution includes all the source code you need for 39455@value{GDBN} in a single directory, whose name is usually composed by 39456appending the version number to @samp{gdb}. 39457 39458For example, the @value{GDBN} version @value{GDBVN} distribution is in the 39459@file{gdb-@value{GDBVN}} directory. That directory contains: 39460 39461@table @code 39462@item gdb-@value{GDBVN}/configure @r{(and supporting files)} 39463script for configuring @value{GDBN} and all its supporting libraries 39464 39465@item gdb-@value{GDBVN}/gdb 39466the source specific to @value{GDBN} itself 39467 39468@item gdb-@value{GDBVN}/bfd 39469source for the Binary File Descriptor library 39470 39471@item gdb-@value{GDBVN}/include 39472@sc{gnu} include files 39473 39474@item gdb-@value{GDBVN}/libiberty 39475source for the @samp{-liberty} free software library 39476 39477@item gdb-@value{GDBVN}/opcodes 39478source for the library of opcode tables and disassemblers 39479 39480@item gdb-@value{GDBVN}/readline 39481source for the @sc{gnu} command-line interface 39482@end table 39483 39484There may be other subdirectories as well. 39485 39486The simplest way to configure and build @value{GDBN} is to run @file{configure} 39487from the @file{gdb-@var{version-number}} source directory, which in 39488this example is the @file{gdb-@value{GDBVN}} directory. 39489 39490First switch to the @file{gdb-@var{version-number}} source directory 39491if you are not already in it; then run @file{configure}. Pass the 39492identifier for the platform on which @value{GDBN} will run as an 39493argument. 39494 39495For example: 39496 39497@smallexample 39498cd gdb-@value{GDBVN} 39499./configure 39500make 39501@end smallexample 39502 39503Running @samp{configure} and then running @code{make} builds the 39504included supporting libraries, then @code{gdb} itself. The configured 39505source files, and the binaries, are left in the corresponding source 39506directories. 39507 39508@need 750 39509@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your 39510system does not recognize this automatically when you run a different 39511shell, you may need to run @code{sh} on it explicitly: 39512 39513@smallexample 39514sh configure 39515@end smallexample 39516 39517You should run the @file{configure} script from the top directory in the 39518source tree, the @file{gdb-@var{version-number}} directory. If you run 39519@file{configure} from one of the subdirectories, you will configure only 39520that subdirectory. That is usually not what you want. In particular, 39521if you run the first @file{configure} from the @file{gdb} subdirectory 39522of the @file{gdb-@var{version-number}} directory, you will omit the 39523configuration of @file{bfd}, @file{readline}, and other sibling 39524directories of the @file{gdb} subdirectory. This leads to build errors 39525about missing include files such as @file{bfd/bfd.h}. 39526 39527You can install @code{@value{GDBN}} anywhere. The best way to do this 39528is to pass the @code{--prefix} option to @code{configure}, and then 39529install it with @code{make install}. 39530 39531@node Separate Objdir 39532@section Compiling @value{GDBN} in Another Directory 39533 39534If you want to run @value{GDBN} versions for several host or target machines, 39535you need a different @code{gdb} compiled for each combination of 39536host and target. @file{configure} is designed to make this easy by 39537allowing you to generate each configuration in a separate subdirectory, 39538rather than in the source directory. If your @code{make} program 39539handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running 39540@code{make} in each of these directories builds the @code{gdb} 39541program specified there. 39542 39543To build @code{gdb} in a separate directory, run @file{configure} 39544with the @samp{--srcdir} option to specify where to find the source. 39545(You also need to specify a path to find @file{configure} 39546itself from your working directory. If the path to @file{configure} 39547would be the same as the argument to @samp{--srcdir}, you can leave out 39548the @samp{--srcdir} option; it is assumed.) 39549 39550For example, with version @value{GDBVN}, you can build @value{GDBN} in a 39551separate directory for a Sun 4 like this: 39552 39553@smallexample 39554@group 39555cd gdb-@value{GDBVN} 39556mkdir ../gdb-sun4 39557cd ../gdb-sun4 39558../gdb-@value{GDBVN}/configure 39559make 39560@end group 39561@end smallexample 39562 39563When @file{configure} builds a configuration using a remote source 39564directory, it creates a tree for the binaries with the same structure 39565(and using the same names) as the tree under the source directory. In 39566the example, you'd find the Sun 4 library @file{libiberty.a} in the 39567directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in 39568@file{gdb-sun4/gdb}. 39569 39570Make sure that your path to the @file{configure} script has just one 39571instance of @file{gdb} in it. If your path to @file{configure} looks 39572like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only 39573one subdirectory of @value{GDBN}, not the whole package. This leads to 39574build errors about missing include files such as @file{bfd/bfd.h}. 39575 39576One popular reason to build several @value{GDBN} configurations in separate 39577directories is to configure @value{GDBN} for cross-compiling (where 39578@value{GDBN} runs on one machine---the @dfn{host}---while debugging 39579programs that run on another machine---the @dfn{target}). 39580You specify a cross-debugging target by 39581giving the @samp{--target=@var{target}} option to @file{configure}. 39582 39583When you run @code{make} to build a program or library, you must run 39584it in a configured directory---whatever directory you were in when you 39585called @file{configure} (or one of its subdirectories). 39586 39587The @code{Makefile} that @file{configure} generates in each source 39588directory also runs recursively. If you type @code{make} in a source 39589directory such as @file{gdb-@value{GDBVN}} (or in a separate configured 39590directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you 39591will build all the required libraries, and then build GDB. 39592 39593When you have multiple hosts or targets configured in separate 39594directories, you can run @code{make} on them in parallel (for example, 39595if they are NFS-mounted on each of the hosts); they will not interfere 39596with each other. 39597 39598@node Config Names 39599@section Specifying Names for Hosts and Targets 39600 39601The specifications used for hosts and targets in the @file{configure} 39602script are based on a three-part naming scheme, but some short predefined 39603aliases are also supported. The full naming scheme encodes three pieces 39604of information in the following pattern: 39605 39606@smallexample 39607@var{architecture}-@var{vendor}-@var{os} 39608@end smallexample 39609 39610For example, you can use the alias @code{sun4} as a @var{host} argument, 39611or as the value for @var{target} in a @code{--target=@var{target}} 39612option. The equivalent full name is @samp{sparc-sun-sunos4}. 39613 39614The @file{configure} script accompanying @value{GDBN} does not provide 39615any query facility to list all supported host and target names or 39616aliases. @file{configure} calls the Bourne shell script 39617@code{config.sub} to map abbreviations to full names; you can read the 39618script, if you wish, or you can use it to test your guesses on 39619abbreviations---for example: 39620 39621@smallexample 39622% sh config.sub i386-linux 39623i386-pc-linux-gnu 39624% sh config.sub alpha-linux 39625alpha-unknown-linux-gnu 39626% sh config.sub hp9k700 39627hppa1.1-hp-hpux 39628% sh config.sub sun4 39629sparc-sun-sunos4.1.1 39630% sh config.sub sun3 39631m68k-sun-sunos4.1.1 39632% sh config.sub i986v 39633Invalid configuration `i986v': machine `i986v' not recognized 39634@end smallexample 39635 39636@noindent 39637@code{config.sub} is also distributed in the @value{GDBN} source 39638directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}). 39639 39640@node Configure Options 39641@section @file{configure} Options 39642 39643Here is a summary of the @file{configure} options and arguments that 39644are most often useful for building @value{GDBN}. @file{configure} 39645also has several other options not listed here. @xref{Running 39646configure Scripts,,,autoconf}, for a full 39647explanation of @file{configure}. 39648 39649@smallexample 39650configure @r{[}--help@r{]} 39651 @r{[}--prefix=@var{dir}@r{]} 39652 @r{[}--exec-prefix=@var{dir}@r{]} 39653 @r{[}--srcdir=@var{dirname}@r{]} 39654 @r{[}--target=@var{target}@r{]} 39655@end smallexample 39656 39657@noindent 39658You may introduce options with a single @samp{-} rather than 39659@samp{--} if you prefer; but you may abbreviate option names if you use 39660@samp{--}. 39661 39662@table @code 39663@item --help 39664Display a quick summary of how to invoke @file{configure}. 39665 39666@item --prefix=@var{dir} 39667Configure the source to install programs and files under directory 39668@file{@var{dir}}. 39669 39670@item --exec-prefix=@var{dir} 39671Configure the source to install programs under directory 39672@file{@var{dir}}. 39673 39674@c avoid splitting the warning from the explanation: 39675@need 2000 39676@item --srcdir=@var{dirname} 39677Use this option to make configurations in directories separate from the 39678@value{GDBN} source directories. Among other things, you can use this to 39679build (or maintain) several configurations simultaneously, in separate 39680directories. @file{configure} writes configuration-specific files in 39681the current directory, but arranges for them to use the source in the 39682directory @var{dirname}. @file{configure} creates directories under 39683the working directory in parallel to the source directories below 39684@var{dirname}. 39685 39686@item --target=@var{target} 39687Configure @value{GDBN} for cross-debugging programs running on the specified 39688@var{target}. Without this option, @value{GDBN} is configured to debug 39689programs that run on the same machine (@var{host}) as @value{GDBN} itself. 39690 39691There is no convenient way to generate a list of all available 39692targets. Also see the @code{--enable-targets} option, below. 39693@end table 39694 39695There are many other options that are specific to @value{GDBN}. This 39696lists just the most common ones; there are some very specialized 39697options not described here. 39698 39699@table @code 39700@item --enable-targets=@r{[}@var{target}@r{]}@dots{} 39701@itemx --enable-targets=all 39702Configure @value{GDBN} for cross-debugging programs running on the 39703specified list of targets. The special value @samp{all} configures 39704@value{GDBN} for debugging programs running on any target it supports. 39705 39706@item --with-gdb-datadir=@var{path} 39707Set the @value{GDBN}-specific data directory. @value{GDBN} will look 39708here for certain supporting files or scripts. This defaults to the 39709@file{gdb} subdirectory of @samp{datadir} (which can be set using 39710@code{--datadir}). 39711 39712@item --with-relocated-sources=@var{dir} 39713Sets up the default source path substitution rule so that directory 39714names recorded in debug information will be automatically adjusted for 39715any directory under @var{dir}. @var{dir} should be a subdirectory of 39716@value{GDBN}'s configured prefix, the one mentioned in the 39717@code{--prefix} or @code{--exec-prefix} options to configure. This 39718option is useful if GDB is supposed to be moved to a different place 39719after it is built. 39720 39721@item --enable-64-bit-bfd 39722Enable 64-bit support in BFD on 32-bit hosts. 39723 39724@item --disable-gdbmi 39725Build @value{GDBN} without the GDB/MI machine interface 39726(@pxref{GDB/MI}). 39727 39728@item --enable-tui 39729Build @value{GDBN} with the text-mode full-screen user interface 39730(TUI). Requires a curses library (ncurses and cursesX are also 39731supported). 39732 39733@item --with-curses 39734Use the curses library instead of the termcap library, for text-mode 39735terminal operations. 39736 39737@item --with-debuginfod 39738Build @value{GDBN} with @file{libdebuginfod}, the @code{debuginfod} client 39739library. Used to automatically fetch ELF, DWARF and source files from 39740@code{debuginfod} servers using build IDs associated with any missing 39741files. Enabled by default if @file{libdebuginfod} is installed and found 39742at configure time. For more information regarding @code{debuginfod} see 39743@ref{Debuginfod}. 39744 39745@item --with-libunwind-ia64 39746Use the libunwind library for unwinding function call stack on ia64 39747target platforms. See http://www.nongnu.org/libunwind/index.html for 39748details. 39749 39750@item --with-system-readline 39751Use the readline library installed on the host, rather than the 39752library supplied as part of @value{GDBN}. Readline 7 or newer is 39753required; this is enforced by the build system. 39754 39755@item --with-system-zlib 39756Use the zlib library installed on the host, rather than the library 39757supplied as part of @value{GDBN}. 39758 39759@item --with-expat 39760Build @value{GDBN} with Expat, a library for XML parsing. (Done by 39761default if libexpat is installed and found at configure time.) This 39762library is used to read XML files supplied with @value{GDBN}. If it 39763is unavailable, some features, such as remote protocol memory maps, 39764target descriptions, and shared library lists, that are based on XML 39765files, will not be available in @value{GDBN}. If your host does not 39766have libexpat installed, you can get the latest version from 39767`http://expat.sourceforge.net'. 39768 39769@item --with-libiconv-prefix@r{[}=@var{dir}@r{]} 39770 39771Build @value{GDBN} with GNU libiconv, a character set encoding 39772conversion library. This is not done by default, as on GNU systems 39773the @code{iconv} that is built in to the C library is sufficient. If 39774your host does not have a working @code{iconv}, you can get the latest 39775version of GNU iconv from `https://www.gnu.org/software/libiconv/'. 39776 39777@value{GDBN}'s build system also supports building GNU libiconv as 39778part of the overall build. @xref{Requirements}. 39779 39780@item --with-lzma 39781Build @value{GDBN} with LZMA, a compression library. (Done by default 39782if liblzma is installed and found at configure time.) LZMA is used by 39783@value{GDBN}'s "mini debuginfo" feature, which is only useful on 39784platforms using the ELF object file format. If your host does not 39785have liblzma installed, you can get the latest version from 39786`https://tukaani.org/xz/'. 39787 39788@item --with-mpfr 39789Build @value{GDBN} with GNU MPFR, a library for multiple-precision 39790floating-point computation with correct rounding. (Done by default if 39791GNU MPFR is installed and found at configure time.) This library is 39792used to emulate target floating-point arithmetic during expression 39793evaluation when the target uses different floating-point formats than 39794the host. If GNU MPFR is not available, @value{GDBN} will fall back 39795to using host floating-point arithmetic. If your host does not have 39796GNU MPFR installed, you can get the latest version from 39797`http://www.mpfr.org'. 39798 39799@item --with-python@r{[}=@var{python}@r{]} 39800Build @value{GDBN} with Python scripting support. (Done by default if 39801libpython is present and found at configure time.) Python makes 39802@value{GDBN} scripting much more powerful than the restricted CLI 39803scripting language. If your host does not have Python installed, you 39804can find it on `http://www.python.org/download/'. The oldest version 39805of Python supported by GDB is 2.6. The optional argument @var{python} 39806is used to find the Python headers and libraries. It can be either 39807the name of a Python executable, or the name of the directory in which 39808Python is installed. 39809 39810@item --with-guile[=GUILE]' 39811Build @value{GDBN} with GNU Guile scripting support. (Done by default 39812if libguile is present and found at configure time.) If your host 39813does not have Guile installed, you can find it at 39814`https://www.gnu.org/software/guile/'. The optional argument GUILE 39815can be a version number, which will cause @code{configure} to try to 39816use that version of Guile; or the file name of a @code{pkg-config} 39817executable, which will be queried to find the information needed to 39818compile and link against Guile. 39819 39820@item --without-included-regex 39821Don't use the regex library included with @value{GDBN} (as part of the 39822libiberty library). This is the default on hosts with version 2 of 39823the GNU C library. 39824 39825@item --with-sysroot=@var{dir} 39826Use @var{dir} as the default system root directory for libraries whose 39827file names begin with @file{/lib}' or @file{/usr/lib'}. (The value of 39828@var{dir} can be modified at run time by using the @command{set 39829sysroot} command.) If @var{dir} is under the @value{GDBN} configured 39830prefix (set with @code{--prefix} or @code{--exec-prefix options}, the 39831default system root will be automatically adjusted if and when 39832@value{GDBN} is moved to a different location. 39833 39834@item --with-system-gdbinit=@var{file} 39835Configure @value{GDBN} to automatically load a system-wide init file. 39836@var{file} should be an absolute file name. If @var{file} is in a 39837directory under the configured prefix, and @value{GDBN} is moved to 39838another location after being built, the location of the system-wide 39839init file will be adjusted accordingly. 39840 39841@item --with-system-gdbinit-dir=@var{directory} 39842Configure @value{GDBN} to automatically load init files from a 39843system-wide directory. @var{directory} should be an absolute directory 39844name. If @var{directory} is in a directory under the configured 39845prefix, and @value{GDBN} is moved to another location after being 39846built, the location of the system-wide init directory will be 39847adjusted accordingly. 39848 39849@item --enable-build-warnings 39850When building the @value{GDBN} sources, ask the compiler to warn about 39851any code which looks even vaguely suspicious. It passes many 39852different warning flags, depending on the exact version of the 39853compiler you are using. 39854 39855@item --enable-werror 39856Treat compiler warnings as errors. It adds the @code{-Werror} flag 39857to the compiler, which will fail the compilation if the compiler 39858outputs any warning messages. 39859 39860@item --enable-ubsan 39861Enable the GCC undefined behavior sanitizer. This is disabled by 39862default, but passing @code{--enable-ubsan=yes} or 39863@code{--enable-ubsan=auto} to @code{configure} will enable it. The 39864undefined behavior sanitizer checks for C@t{++} undefined behavior. 39865It has a performance cost, so if you are looking at @value{GDBN}'s 39866performance, you should disable it. The undefined behavior sanitizer 39867was first introduced in GCC 4.9. 39868@end table 39869 39870@node System-wide configuration 39871@section System-wide configuration and settings 39872@cindex system-wide init file 39873 39874@value{GDBN} can be configured to have a system-wide init file and a 39875system-wide init file directory; this file and files in that directory 39876(if they have a recognized file extension) will be read and executed at 39877startup (@pxref{Startup, , What @value{GDBN} does during startup}). 39878 39879Here are the corresponding configure options: 39880 39881@table @code 39882@item --with-system-gdbinit=@var{file} 39883Specify that the default location of the system-wide init file is 39884@var{file}. 39885@item --with-system-gdbinit-dir=@var{directory} 39886Specify that the default location of the system-wide init file directory 39887is @var{directory}. 39888@end table 39889 39890If @value{GDBN} has been configured with the option @option{--prefix=$prefix}, 39891they may be subject to relocation. Two possible cases: 39892 39893@itemize @bullet 39894@item 39895If the default location of this init file/directory contains @file{$prefix}, 39896it will be subject to relocation. Suppose that the configure options 39897are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit}; 39898if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system 39899init file is looked for as @file{$install/etc/gdbinit} instead of 39900@file{$prefix/etc/gdbinit}. 39901 39902@item 39903By contrast, if the default location does not contain the prefix, 39904it will not be relocated. E.g.@: if @value{GDBN} has been configured with 39905@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit}, 39906then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit}, 39907wherever @value{GDBN} is installed. 39908@end itemize 39909 39910If the configured location of the system-wide init file (as given by the 39911@option{--with-system-gdbinit} option at configure time) is in the 39912data-directory (as specified by @option{--with-gdb-datadir} at configure 39913time) or in one of its subdirectories, then @value{GDBN} will look for the 39914system-wide init file in the directory specified by the 39915@option{--data-directory} command-line option. 39916Note that the system-wide init file is only read once, during @value{GDBN} 39917initialization. If the data-directory is changed after @value{GDBN} has 39918started with the @code{set data-directory} command, the file will not be 39919reread. 39920 39921This applies similarly to the system-wide directory specified in 39922@option{--with-system-gdbinit-dir}. 39923 39924Any supported scripting language can be used for these init files, as long 39925as the file extension matches the scripting language. To be interpreted 39926as regular @value{GDBN} commands, the files needs to have a @file{.gdb} 39927extension. 39928 39929@menu 39930* System-wide Configuration Scripts:: Installed System-wide Configuration Scripts 39931@end menu 39932 39933@node System-wide Configuration Scripts 39934@subsection Installed System-wide Configuration Scripts 39935@cindex system-wide configuration scripts 39936 39937The @file{system-gdbinit} directory, located inside the data-directory 39938(as specified by @option{--with-gdb-datadir} at configure time) contains 39939a number of scripts which can be used as system-wide init files. To 39940automatically source those scripts at startup, @value{GDBN} should be 39941configured with @option{--with-system-gdbinit}. Otherwise, any user 39942should be able to source them by hand as needed. 39943 39944The following scripts are currently available: 39945@itemize @bullet 39946 39947@item @file{elinos.py} 39948@pindex elinos.py 39949@cindex ELinOS system-wide configuration script 39950This script is useful when debugging a program on an ELinOS target. 39951It takes advantage of the environment variables defined in a standard 39952ELinOS environment in order to determine the location of the system 39953shared libraries, and then sets the @samp{solib-absolute-prefix} 39954and @samp{solib-search-path} variables appropriately. 39955 39956@item @file{wrs-linux.py} 39957@pindex wrs-linux.py 39958@cindex Wind River Linux system-wide configuration script 39959This script is useful when debugging a program on a target running 39960Wind River Linux. It expects the @env{ENV_PREFIX} to be set to 39961the host-side sysroot used by the target system. 39962 39963@end itemize 39964 39965@node Maintenance Commands 39966@appendix Maintenance Commands 39967@cindex maintenance commands 39968@cindex internal commands 39969 39970In addition to commands intended for @value{GDBN} users, @value{GDBN} 39971includes a number of commands intended for @value{GDBN} developers, 39972that are not documented elsewhere in this manual. These commands are 39973provided here for reference. (For commands that turn on debugging 39974messages, see @ref{Debugging Output}.) 39975 39976@table @code 39977@kindex maint agent 39978@kindex maint agent-eval 39979@item maint agent @r{[}-at @var{linespec}@r{,}@r{]} @var{expression} 39980@itemx maint agent-eval @r{[}-at @var{linespec}@r{,}@r{]} @var{expression} 39981Translate the given @var{expression} into remote agent bytecodes. 39982This command is useful for debugging the Agent Expression mechanism 39983(@pxref{Agent Expressions}). The @samp{agent} version produces an 39984expression useful for data collection, such as by tracepoints, while 39985@samp{maint agent-eval} produces an expression that evaluates directly 39986to a result. For instance, a collection expression for @code{globa + 39987globb} will include bytecodes to record four bytes of memory at each 39988of the addresses of @code{globa} and @code{globb}, while discarding 39989the result of the addition, while an evaluation expression will do the 39990addition and return the sum. 39991If @code{-at} is given, generate remote agent bytecode for all the 39992addresses to which @var{linespec} resolves (@pxref{Linespec 39993Locations}). 39994If not, generate remote agent bytecode for current frame PC address. 39995 39996@kindex maint agent-printf 39997@item maint agent-printf @var{format},@var{expr},... 39998Translate the given format string and list of argument expressions 39999into remote agent bytecodes and display them as a disassembled list. 40000This command is useful for debugging the agent version of dynamic 40001printf (@pxref{Dynamic Printf}). 40002 40003@kindex maint info breakpoints 40004@item @anchor{maint info breakpoints}maint info breakpoints 40005Using the same format as @samp{info breakpoints}, display both the 40006breakpoints you've set explicitly, and those @value{GDBN} is using for 40007internal purposes. Internal breakpoints are shown with negative 40008breakpoint numbers. The type column identifies what kind of breakpoint 40009is shown: 40010 40011@table @code 40012@item breakpoint 40013Normal, explicitly set breakpoint. 40014 40015@item watchpoint 40016Normal, explicitly set watchpoint. 40017 40018@item longjmp 40019Internal breakpoint, used to handle correctly stepping through 40020@code{longjmp} calls. 40021 40022@item longjmp resume 40023Internal breakpoint at the target of a @code{longjmp}. 40024 40025@item until 40026Temporary internal breakpoint used by the @value{GDBN} @code{until} command. 40027 40028@item finish 40029Temporary internal breakpoint used by the @value{GDBN} @code{finish} command. 40030 40031@item shlib events 40032Shared library events. 40033 40034@end table 40035 40036@kindex maint info btrace 40037@item maint info btrace 40038Pint information about raw branch tracing data. 40039 40040@kindex maint btrace packet-history 40041@item maint btrace packet-history 40042Print the raw branch trace packets that are used to compute the 40043execution history for the @samp{record btrace} command. Both the 40044information and the format in which it is printed depend on the btrace 40045recording format. 40046 40047@table @code 40048@item bts 40049For the BTS recording format, print a list of blocks of sequential 40050code. For each block, the following information is printed: 40051 40052@table @asis 40053@item Block number 40054Newer blocks have higher numbers. The oldest block has number zero. 40055@item Lowest @samp{PC} 40056@item Highest @samp{PC} 40057@end table 40058 40059@item pt 40060For the Intel Processor Trace recording format, print a list of 40061Intel Processor Trace packets. For each packet, the following 40062information is printed: 40063 40064@table @asis 40065@item Packet number 40066Newer packets have higher numbers. The oldest packet has number zero. 40067@item Trace offset 40068The packet's offset in the trace stream. 40069@item Packet opcode and payload 40070@end table 40071@end table 40072 40073@kindex maint btrace clear-packet-history 40074@item maint btrace clear-packet-history 40075Discards the cached packet history printed by the @samp{maint btrace 40076packet-history} command. The history will be computed again when 40077needed. 40078 40079@kindex maint btrace clear 40080@item maint btrace clear 40081Discard the branch trace data. The data will be fetched anew and the 40082branch trace will be recomputed when needed. 40083 40084This implicitly truncates the branch trace to a single branch trace 40085buffer. When updating branch trace incrementally, the branch trace 40086available to @value{GDBN} may be bigger than a single branch trace 40087buffer. 40088 40089@kindex maint set btrace pt skip-pad 40090@item maint set btrace pt skip-pad 40091@kindex maint show btrace pt skip-pad 40092@item maint show btrace pt skip-pad 40093Control whether @value{GDBN} will skip PAD packets when computing the 40094packet history. 40095 40096@kindex maint info jit 40097@item maint info jit 40098Print information about JIT code objects loaded in the current inferior. 40099 40100@anchor{maint info python-disassemblers} 40101@kindex maint info python-disassemblers 40102@item maint info python-disassemblers 40103This command is defined within the @code{gdb.disassembler} Python 40104module (@pxref{Disassembly In Python}), and will only be present after 40105that module has been imported. To force the module to be imported do 40106the following: 40107 40108@smallexample 40109(@value{GDBP}) python import gdb.disassembler 40110@end smallexample 40111 40112This command lists all the architectures for which a disassembler is 40113currently registered, and the name of the disassembler. If a 40114disassembler is registered for all architectures, then this is listed 40115last against the @samp{GLOBAL} architecture. 40116 40117If one of the disassemblers would be selected for the architecture of 40118the current inferior, then this disassembler will be marked. 40119 40120The following example shows a situation in which two disassemblers are 40121registered, initially the @samp{i386} disassembler matches the current 40122architecture, then the architecture is changed, now the @samp{GLOBAL} 40123disassembler matches. 40124 40125@smallexample 40126@group 40127(@value{GDBP}) show architecture 40128The target architecture is set to "auto" (currently "i386"). 40129(@value{GDBP}) maint info python-disassemblers 40130Architecture Disassember Name 40131i386 Disassembler_1 (Matches current architecture) 40132GLOBAL Disassembler_2 40133@end group 40134@group 40135(@value{GDBP}) set architecture arm 40136The target architecture is set to "arm". 40137(@value{GDBP}) maint info python-disassemblers 40138quit 40139Architecture Disassember Name 40140i386 Disassembler_1 40141GLOBAL Disassembler_2 (Matches current architecture) 40142@end group 40143@end smallexample 40144 40145@kindex set displaced-stepping 40146@kindex show displaced-stepping 40147@cindex displaced stepping support 40148@cindex out-of-line single-stepping 40149@item set displaced-stepping 40150@itemx show displaced-stepping 40151Control whether or not @value{GDBN} will do @dfn{displaced stepping} 40152if the target supports it. Displaced stepping is a way to single-step 40153over breakpoints without removing them from the inferior, by executing 40154an out-of-line copy of the instruction that was originally at the 40155breakpoint location. It is also known as out-of-line single-stepping. 40156 40157@table @code 40158@item set displaced-stepping on 40159If the target architecture supports it, @value{GDBN} will use 40160displaced stepping to step over breakpoints. 40161 40162@item set displaced-stepping off 40163@value{GDBN} will not use displaced stepping to step over breakpoints, 40164even if such is supported by the target architecture. 40165 40166@cindex non-stop mode, and @samp{set displaced-stepping} 40167@item set displaced-stepping auto 40168This is the default mode. @value{GDBN} will use displaced stepping 40169only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target 40170architecture supports displaced stepping. 40171@end table 40172 40173@kindex maint check-psymtabs 40174@item maint check-psymtabs 40175Check the consistency of currently expanded psymtabs versus symtabs. 40176Use this to check, for example, whether a symbol is in one but not the other. 40177 40178@kindex maint check-symtabs 40179@item maint check-symtabs 40180Check the consistency of currently expanded symtabs. 40181 40182@kindex maint expand-symtabs 40183@item maint expand-symtabs [@var{regexp}] 40184Expand symbol tables. 40185If @var{regexp} is specified, only expand symbol tables for file 40186names matching @var{regexp}. 40187 40188@kindex maint set catch-demangler-crashes 40189@kindex maint show catch-demangler-crashes 40190@cindex demangler crashes 40191@item maint set catch-demangler-crashes [on|off] 40192@itemx maint show catch-demangler-crashes 40193Control whether @value{GDBN} should attempt to catch crashes in the 40194symbol name demangler. The default is to attempt to catch crashes. 40195If enabled, the first time a crash is caught, a core file is created, 40196the offending symbol is displayed and the user is presented with the 40197option to terminate the current session. 40198 40199@kindex maint cplus first_component 40200@item maint cplus first_component @var{name} 40201Print the first C@t{++} class/namespace component of @var{name}. 40202 40203@kindex maint cplus namespace 40204@item maint cplus namespace 40205Print the list of possible C@t{++} namespaces. 40206 40207@kindex maint deprecate 40208@kindex maint undeprecate 40209@cindex deprecated commands 40210@item maint deprecate @var{command} @r{[}@var{replacement}@r{]} 40211@itemx maint undeprecate @var{command} 40212Deprecate or undeprecate the named @var{command}. Deprecated commands 40213cause @value{GDBN} to issue a warning when you use them. The optional 40214argument @var{replacement} says which newer command should be used in 40215favor of the deprecated one; if it is given, @value{GDBN} will mention 40216the replacement as part of the warning. 40217 40218@kindex maint dump-me 40219@item maint dump-me 40220@cindex @code{SIGQUIT} signal, dump core of @value{GDBN} 40221Cause a fatal signal in the debugger and force it to dump its core. 40222This is supported only on systems which support aborting a program 40223with the @code{SIGQUIT} signal. 40224 40225@kindex maint internal-error 40226@kindex maint internal-warning 40227@kindex maint demangler-warning 40228@cindex demangler crashes 40229@item maint internal-error @r{[}@var{message-text}@r{]} 40230@itemx maint internal-warning @r{[}@var{message-text}@r{]} 40231@itemx maint demangler-warning @r{[}@var{message-text}@r{]} 40232 40233Cause @value{GDBN} to call the internal function @code{internal_error}, 40234@code{internal_warning} or @code{demangler_warning} and hence behave 40235as though an internal problem has been detected. In addition to 40236reporting the internal problem, these functions give the user the 40237opportunity to either quit @value{GDBN} or (for @code{internal_error} 40238and @code{internal_warning}) create a core file of the current 40239@value{GDBN} session. 40240 40241These commands take an optional parameter @var{message-text} that is 40242used as the text of the error or warning message. 40243 40244Here's an example of using @code{internal-error}: 40245 40246@smallexample 40247(@value{GDBP}) @kbd{maint internal-error testing, 1, 2} 40248@dots{}/maint.c:121: internal-error: testing, 1, 2 40249A problem internal to GDB has been detected. Further 40250debugging may prove unreliable. 40251Quit this debugging session? (y or n) @kbd{n} 40252Create a core file? (y or n) @kbd{n} 40253(@value{GDBP}) 40254@end smallexample 40255 40256@cindex @value{GDBN} internal error 40257@cindex internal errors, control of @value{GDBN} behavior 40258@cindex demangler crashes 40259 40260@kindex maint set internal-error 40261@kindex maint show internal-error 40262@kindex maint set internal-warning 40263@kindex maint show internal-warning 40264@kindex maint set demangler-warning 40265@kindex maint show demangler-warning 40266@item maint set internal-error @var{action} [ask|yes|no] 40267@itemx maint show internal-error @var{action} 40268@itemx maint set internal-warning @var{action} [ask|yes|no] 40269@itemx maint show internal-warning @var{action} 40270@itemx maint set demangler-warning @var{action} [ask|yes|no] 40271@itemx maint show demangler-warning @var{action} 40272When @value{GDBN} reports an internal problem (error or warning) it 40273gives the user the opportunity to both quit @value{GDBN} and create a 40274core file of the current @value{GDBN} session. These commands let you 40275override the default behaviour for each particular @var{action}, 40276described in the table below. 40277 40278@table @samp 40279@item quit 40280You can specify that @value{GDBN} should always (yes) or never (no) 40281quit. The default is to ask the user what to do. 40282 40283@item corefile 40284You can specify that @value{GDBN} should always (yes) or never (no) 40285create a core file. The default is to ask the user what to do. Note 40286that there is no @code{corefile} option for @code{demangler-warning}: 40287demangler warnings always create a core file and this cannot be 40288disabled. 40289@end table 40290 40291@kindex maint set internal-error 40292@kindex maint show internal-error 40293@kindex maint set internal-warning 40294@kindex maint show internal-warning 40295@item maint set internal-error backtrace @r{[}on|off@r{]} 40296@itemx maint show internal-error backtrace 40297@itemx maint set internal-warning backtrace @r{[}on|off@r{]} 40298@itemx maint show internal-warning backtrace 40299When @value{GDBN} reports an internal problem (error or warning) it is 40300possible to have a backtrace of @value{GDBN} printed to the standard 40301error stream. This is @samp{on} by default for @code{internal-error} 40302and @samp{off} by default for @code{internal-warning}. 40303 40304@anchor{maint packet} 40305@kindex maint packet 40306@item maint packet @var{text} 40307If @value{GDBN} is talking to an inferior via the serial protocol, 40308then this command sends the string @var{text} to the inferior, and 40309displays the response packet. @value{GDBN} supplies the initial 40310@samp{$} character, the terminating @samp{#} character, and the 40311checksum. 40312 40313Any non-printable characters in the reply are printed as escaped hex, 40314e.g. @samp{\x00}, @samp{\x01}, etc. 40315 40316@kindex maint print architecture 40317@item maint print architecture @r{[}@var{file}@r{]} 40318Print the entire architecture configuration. The optional argument 40319@var{file} names the file where the output goes. 40320 40321@kindex maint print c-tdesc 40322@item maint print c-tdesc @r{[}-single-feature@r{]} @r{[}@var{file}@r{]} 40323Print the target description (@pxref{Target Descriptions}) as 40324a C source file. By default, the target description is for the current 40325target, but if the optional argument @var{file} is provided, that file 40326is used to produce the description. The @var{file} should be an XML 40327document, of the form described in @ref{Target Description Format}. 40328The created source file is built into @value{GDBN} when @value{GDBN} is 40329built again. This command is used by developers after they add or 40330modify XML target descriptions. 40331 40332When the optional flag @samp{-single-feature} is provided then the 40333target description being processed (either the default, or from 40334@var{file}) must only contain a single feature. The source file 40335produced is different in this case. 40336 40337@kindex maint print xml-tdesc 40338@item maint print xml-tdesc @r{[}@var{file}@r{]} 40339Print the target description (@pxref{Target Descriptions}) as an XML 40340file. By default print the target description for the current target, 40341but if the optional argument @var{file} is provided, then that file is 40342read in by GDB and then used to produce the description. The 40343@var{file} should be an XML document, of the form described in 40344@ref{Target Description Format}. 40345 40346@kindex maint check xml-descriptions 40347@item maint check xml-descriptions @var{dir} 40348Check that the target descriptions dynamically created by @value{GDBN} 40349equal the descriptions created from XML files found in @var{dir}. 40350 40351@anchor{maint check libthread-db} 40352@kindex maint check libthread-db 40353@item maint check libthread-db 40354Run integrity checks on the current inferior's thread debugging 40355library. This exercises all @code{libthread_db} functionality used by 40356@value{GDBN} on GNU/Linux systems, and by extension also exercises the 40357@code{proc_service} functions provided by @value{GDBN} that 40358@code{libthread_db} uses. Note that parts of the test may be skipped 40359on some platforms when debugging core files. 40360 40361@kindex maint print core-file-backed-mappings 40362@cindex memory address space mappings 40363@item maint print core-file-backed-mappings 40364Print the file-backed mappings which were loaded from a core file note. 40365This output represents state internal to @value{GDBN} and should be 40366similar to the mappings displayed by the @code{info proc mappings} 40367command. 40368 40369@kindex maint print dummy-frames 40370@item maint print dummy-frames 40371Prints the contents of @value{GDBN}'s internal dummy-frame stack. 40372 40373@smallexample 40374(@value{GDBP}) @kbd{b add} 40375@dots{} 40376(@value{GDBP}) @kbd{print add(2,3)} 40377Breakpoint 2, add (a=2, b=3) at @dots{} 4037858 return (a + b); 40379The program being debugged stopped while in a function called from GDB. 40380@dots{} 40381(@value{GDBP}) @kbd{maint print dummy-frames} 403820xa8206d8: id=@{stack=0xbfffe734,code=0xbfffe73f,!special@}, ptid=process 9353 40383(@value{GDBP}) 40384@end smallexample 40385 40386Takes an optional file parameter. 40387 40388@kindex maint print frame-id 40389@item maint print frame-id 40390@itemx maint print frame-id @var{level} 40391Print @value{GDBN}'s internal frame-id for the frame at relative 40392@var{level}, or for the currently selected frame when @var{level} is 40393not given. 40394 40395If used, @var{level} should be an integer, as displayed in the 40396@command{backtrace} output. 40397 40398@smallexample 40399(@value{GDBP}) maint print frame-id 40400frame-id for frame #0: @{stack=0x7fffffffac70,code=0x0000000000401106,!special@} 40401(@value{GDBP}) maint print frame-id 2 40402frame-id for frame #2: @{stack=0x7fffffffac90,code=0x000000000040111c,!special@} 40403@end smallexample 40404 40405@kindex maint print registers 40406@kindex maint print raw-registers 40407@kindex maint print cooked-registers 40408@kindex maint print register-groups 40409@kindex maint print remote-registers 40410@item maint print registers @r{[}@var{file}@r{]} 40411@itemx maint print raw-registers @r{[}@var{file}@r{]} 40412@itemx maint print cooked-registers @r{[}@var{file}@r{]} 40413@itemx maint print register-groups @r{[}@var{file}@r{]} 40414@itemx maint print remote-registers @r{[}@var{file}@r{]} 40415Print @value{GDBN}'s internal register data structures. 40416 40417The command @code{maint print raw-registers} includes the contents of 40418the raw register cache; the command @code{maint print 40419cooked-registers} includes the (cooked) value of all registers, 40420including registers which aren't available on the target nor visible 40421to user; the command @code{maint print register-groups} includes the 40422groups that each register is a member of; and the command @code{maint 40423print remote-registers} includes the remote target's register numbers 40424and offsets in the `G' packets. 40425 40426These commands take an optional parameter, a file name to which to 40427write the information. 40428 40429@kindex maint print reggroups 40430@item maint print reggroups @r{[}@var{file}@r{]} 40431Print @value{GDBN}'s internal register group data structures. The 40432optional argument @var{file} tells to what file to write the 40433information. 40434 40435The register groups info looks like this: 40436 40437@smallexample 40438(@value{GDBP}) @kbd{maint print reggroups} 40439 Group Type 40440 general user 40441 float user 40442 all user 40443 vector user 40444 system user 40445 save internal 40446 restore internal 40447@end smallexample 40448 40449@kindex maint flush register-cache 40450@kindex flushregs 40451@cindex register cache, flushing 40452@item maint flush register-cache 40453@itemx flushregs 40454Flush the contents of the register cache and as a consequence the 40455frame cache. This command is useful when debugging issues related to 40456register fetching, or frame unwinding. The command @code{flushregs} 40457is deprecated in favor of @code{maint flush register-cache}. 40458 40459@kindex maint flush source-cache 40460@cindex source code, caching 40461@item maint flush source-cache 40462Flush @value{GDBN}'s cache of source code file contents. After 40463@value{GDBN} reads a source file, and optionally applies styling 40464(@pxref{Output Styling}), the file contents are cached. This command 40465clears that cache. The next time @value{GDBN} wants to show lines 40466from a source file, the content will be re-read. 40467 40468This command is useful when debugging issues related to source code 40469styling. After flushing the cache any source code displayed by 40470@value{GDBN} will be re-read and re-styled. 40471 40472@kindex maint print objfiles 40473@cindex info for known object files 40474@item maint print objfiles @r{[}@var{regexp}@r{]} 40475Print a dump of all known object files. 40476If @var{regexp} is specified, only print object files whose names 40477match @var{regexp}. For each object file, this command prints its name, 40478address in memory, and all of its psymtabs and symtabs. 40479 40480@kindex maint print user-registers 40481@cindex user registers 40482@item maint print user-registers 40483List all currently available @dfn{user registers}. User registers 40484typically provide alternate names for actual hardware registers. They 40485include the four ``standard'' registers @code{$fp}, @code{$pc}, 40486@code{$sp}, and @code{$ps}. @xref{standard registers}. User 40487registers can be used in expressions in the same way as the canonical 40488register names, but only the latter are listed by the @code{info 40489registers} and @code{maint print registers} commands. 40490 40491@kindex maint print section-scripts 40492@cindex info for known .debug_gdb_scripts-loaded scripts 40493@item maint print section-scripts [@var{regexp}] 40494Print a dump of scripts specified in the @code{.debug_gdb_section} section. 40495If @var{regexp} is specified, only print scripts loaded by object files 40496matching @var{regexp}. 40497For each script, this command prints its name as specified in the objfile, 40498and the full path if known. 40499@xref{dotdebug_gdb_scripts section}. 40500 40501@kindex maint print statistics 40502@cindex bcache statistics 40503@item maint print statistics 40504This command prints, for each object file in the program, various data 40505about that object file followed by the byte cache (@dfn{bcache}) 40506statistics for the object file. The objfile data includes the number 40507of minimal, partial, full, and stabs symbols, the number of types 40508defined by the objfile, the number of as yet unexpanded psym tables, 40509the number of line tables and string tables, and the amount of memory 40510used by the various tables. The bcache statistics include the counts, 40511sizes, and counts of duplicates of all and unique objects, max, 40512average, and median entry size, total memory used and its overhead and 40513savings, and various measures of the hash table size and chain 40514lengths. 40515 40516@kindex maint print target-stack 40517@cindex target stack description 40518@item maint print target-stack 40519A @dfn{target} is an interface between the debugger and a particular 40520kind of file or process. Targets can be stacked in @dfn{strata}, 40521so that more than one target can potentially respond to a request. 40522In particular, memory accesses will walk down the stack of targets 40523until they find a target that is interested in handling that particular 40524address. 40525 40526This command prints a short description of each layer that was pushed on 40527the @dfn{target stack}, starting from the top layer down to the bottom one. 40528 40529@kindex maint print type 40530@cindex type chain of a data type 40531@item maint print type @var{expr} 40532Print the type chain for a type specified by @var{expr}. The argument 40533can be either a type name or a symbol. If it is a symbol, the type of 40534that symbol is described. The type chain produced by this command is 40535a recursive definition of the data type as stored in @value{GDBN}'s 40536data structures, including its flags and contained types. 40537 40538@kindex maint selftest 40539@cindex self tests 40540@item maint selftest @r{[}-verbose@r{]} @r{[}@var{filter}@r{]} 40541Run any self tests that were compiled in to @value{GDBN}. This will 40542print a message showing how many tests were run, and how many failed. 40543If a @var{filter} is passed, only the tests with @var{filter} in their 40544name will be ran. If @code{-verbose} is passed, the self tests can be 40545more verbose. 40546 40547@kindex maint set selftest verbose 40548@kindex maint show selftest verbose 40549@cindex self tests 40550@item maint set selftest verbose 40551@item maint show selftest verbose 40552Control whether self tests are run verbosely or not. 40553 40554@kindex maint info selftests 40555@cindex self tests 40556@item maint info selftests 40557List the selftests compiled in to @value{GDBN}. 40558 40559@kindex maint set dwarf always-disassemble 40560@kindex maint show dwarf always-disassemble 40561@item maint set dwarf always-disassemble 40562@item maint show dwarf always-disassemble 40563Control the behavior of @code{info address} when using DWARF debugging 40564information. 40565 40566The default is @code{off}, which means that @value{GDBN} should try to 40567describe a variable's location in an easily readable format. When 40568@code{on}, @value{GDBN} will instead display the DWARF location 40569expression in an assembly-like format. Note that some locations are 40570too complex for @value{GDBN} to describe simply; in this case you will 40571always see the disassembly form. 40572 40573Here is an example of the resulting disassembly: 40574 40575@smallexample 40576(gdb) info addr argc 40577Symbol "argc" is a complex DWARF expression: 40578 1: DW_OP_fbreg 0 40579@end smallexample 40580 40581For more information on these expressions, see 40582@uref{http://www.dwarfstd.org/, the DWARF standard}. 40583 40584@kindex maint set dwarf max-cache-age 40585@kindex maint show dwarf max-cache-age 40586@item maint set dwarf max-cache-age 40587@itemx maint show dwarf max-cache-age 40588Control the DWARF compilation unit cache. 40589 40590@cindex DWARF compilation units cache 40591In object files with inter-compilation-unit references, such as those 40592produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 40593reader needs to frequently refer to previously read compilation units. 40594This setting controls how long a compilation unit will remain in the 40595cache if it is not referenced. A higher limit means that cached 40596compilation units will be stored in memory longer, and more total 40597memory will be used. Setting it to zero disables caching, which will 40598slow down @value{GDBN} startup, but reduce memory consumption. 40599 40600@kindex maint set dwarf unwinders 40601@kindex maint show dwarf unwinders 40602@item maint set dwarf unwinders 40603@itemx maint show dwarf unwinders 40604Control use of the DWARF frame unwinders. 40605 40606@cindex DWARF frame unwinders 40607Many targets that support DWARF debugging use @value{GDBN}'s DWARF 40608frame unwinders to build the backtrace. Many of these targets will 40609also have a second mechanism for building the backtrace for use in 40610cases where DWARF information is not available, this second mechanism 40611is often an analysis of a function's prologue. 40612 40613In order to extend testing coverage of the second level stack 40614unwinding mechanisms it is helpful to be able to disable the DWARF 40615stack unwinders, this can be done with this switch. 40616 40617In normal use of @value{GDBN} disabling the DWARF unwinders is not 40618advisable, there are cases that are better handled through DWARF than 40619prologue analysis, and the debug experience is likely to be better 40620with the DWARF frame unwinders enabled. 40621 40622If DWARF frame unwinders are not supported for a particular target 40623architecture, then enabling this flag does not cause them to be used. 40624 40625@kindex maint set worker-threads 40626@kindex maint show worker-threads 40627@item maint set worker-threads 40628@item maint show worker-threads 40629Control the number of worker threads that may be used by @value{GDBN}. 40630On capable hosts, @value{GDBN} may use multiple threads to speed up 40631certain CPU-intensive operations, such as demangling symbol names. 40632While the number of threads used by @value{GDBN} may vary, this 40633command can be used to set an upper bound on this number. The default 40634is @code{unlimited}, which lets @value{GDBN} choose a reasonable 40635number. Note that this only controls worker threads started by 40636@value{GDBN} itself; libraries used by @value{GDBN} may start threads 40637of their own. 40638 40639@kindex maint set profile 40640@kindex maint show profile 40641@cindex profiling GDB 40642@item maint set profile 40643@itemx maint show profile 40644Control profiling of @value{GDBN}. 40645 40646Profiling will be disabled until you use the @samp{maint set profile} 40647command to enable it. When you enable profiling, the system will begin 40648collecting timing and execution count data; when you disable profiling or 40649exit @value{GDBN}, the results will be written to a log file. Remember that 40650if you use profiling, @value{GDBN} will overwrite the profiling log file 40651(often called @file{gmon.out}). If you have a record of important profiling 40652data in a @file{gmon.out} file, be sure to move it to a safe location. 40653 40654Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be 40655compiled with the @samp{-pg} compiler option. 40656 40657@kindex maint set show-debug-regs 40658@kindex maint show show-debug-regs 40659@cindex hardware debug registers 40660@item maint set show-debug-regs 40661@itemx maint show show-debug-regs 40662Control whether to show variables that mirror the hardware debug 40663registers. Use @code{on} to enable, @code{off} to disable. If 40664enabled, the debug registers values are shown when @value{GDBN} inserts or 40665removes a hardware breakpoint or watchpoint, and when the inferior 40666triggers a hardware-assisted breakpoint or watchpoint. 40667 40668@kindex maint set show-all-tib 40669@kindex maint show show-all-tib 40670@item maint set show-all-tib 40671@itemx maint show show-all-tib 40672Control whether to show all non zero areas within a 1k block starting 40673at thread local base, when using the @samp{info w32 thread-information-block} 40674command. 40675 40676@kindex maint set target-async 40677@kindex maint show target-async 40678@item maint set target-async 40679@itemx maint show target-async 40680This controls whether @value{GDBN} targets operate in synchronous or 40681asynchronous mode (@pxref{Background Execution}). Normally the 40682default is asynchronous, if it is available; but this can be changed 40683to more easily debug problems occurring only in synchronous mode. 40684 40685@kindex maint set target-non-stop @var{mode} [on|off|auto] 40686@kindex maint show target-non-stop 40687@item maint set target-non-stop 40688@itemx maint show target-non-stop 40689 40690This controls whether @value{GDBN} targets always operate in non-stop 40691mode even if @code{set non-stop} is @code{off} (@pxref{Non-Stop 40692Mode}). The default is @code{auto}, meaning non-stop mode is enabled 40693if supported by the target. 40694 40695@table @code 40696@item maint set target-non-stop auto 40697This is the default mode. @value{GDBN} controls the target in 40698non-stop mode if the target supports it. 40699 40700@item maint set target-non-stop on 40701@value{GDBN} controls the target in non-stop mode even if the target 40702does not indicate support. 40703 40704@item maint set target-non-stop off 40705@value{GDBN} does not control the target in non-stop mode even if the 40706target supports it. 40707@end table 40708 40709@kindex maint set tui-resize-message 40710@kindex maint show tui-resize-message 40711@item maint set tui-resize-message 40712@item maint show tui-resize-message 40713Control whether @value{GDBN} displays a message each time the terminal 40714is resized when in TUI mode. The default is @code{off}, which means 40715that @value{GDBN} is silent during resizes. When @code{on}, 40716@value{GDBN} will display a message after a resize is completed; the 40717message will include a number indicating how many times the terminal 40718has been resized. This setting is intended for use by the test suite, 40719where it would otherwise be difficult to determine when a resize and 40720refresh has been completed. 40721 40722@kindex maint set per-command 40723@kindex maint show per-command 40724@item maint set per-command 40725@itemx maint show per-command 40726@cindex resources used by commands 40727 40728@value{GDBN} can display the resources used by each command. 40729This is useful in debugging performance problems. 40730 40731@table @code 40732@item maint set per-command space [on|off] 40733@itemx maint show per-command space 40734Enable or disable the printing of the memory used by GDB for each command. 40735If enabled, @value{GDBN} will display how much memory each command 40736took, following the command's own output. 40737This can also be requested by invoking @value{GDBN} with the 40738@option{--statistics} command-line switch (@pxref{Mode Options}). 40739 40740@item maint set per-command time [on|off] 40741@itemx maint show per-command time 40742Enable or disable the printing of the execution time of @value{GDBN} 40743for each command. 40744If enabled, @value{GDBN} will display how much time it 40745took to execute each command, following the command's own output. 40746Both CPU time and wallclock time are printed. 40747Printing both is useful when trying to determine whether the cost is 40748CPU or, e.g., disk/network latency. 40749Note that the CPU time printed is for @value{GDBN} only, it does not include 40750the execution time of the inferior because there's no mechanism currently 40751to compute how much time was spent by @value{GDBN} and how much time was 40752spent by the program been debugged. 40753This can also be requested by invoking @value{GDBN} with the 40754@option{--statistics} command-line switch (@pxref{Mode Options}). 40755 40756@item maint set per-command symtab [on|off] 40757@itemx maint show per-command symtab 40758Enable or disable the printing of basic symbol table statistics 40759for each command. 40760If enabled, @value{GDBN} will display the following information: 40761 40762@enumerate a 40763@item 40764number of symbol tables 40765@item 40766number of primary symbol tables 40767@item 40768number of blocks in the blockvector 40769@end enumerate 40770@end table 40771 40772@kindex maint set check-libthread-db 40773@kindex maint show check-libthread-db 40774@item maint set check-libthread-db [on|off] 40775@itemx maint show check-libthread-db 40776Control whether @value{GDBN} should run integrity checks on inferior 40777specific thread debugging libraries as they are loaded. The default 40778is not to perform such checks. If any check fails @value{GDBN} will 40779unload the library and continue searching for a suitable candidate as 40780described in @ref{set libthread-db-search-path}. For more information 40781about the tests, see @ref{maint check libthread-db}. 40782 40783@kindex maint set gnu-source-highlight enabled 40784@kindex maint show gnu-source-highlight enabled 40785@item maint set gnu-source-highlight enabled @r{[}on|off@r{]} 40786@itemx maint show gnu-source-highlight enabled 40787Control whether @value{GDBN} should use the GNU Source Highlight 40788library for applying styling to source code (@pxref{Output Styling}). 40789This will be @samp{on} by default if the GNU Source Highlight library 40790is available. If the GNU Source Highlight library is not available, 40791then this will be @samp{off} by default, and attempting to change this 40792value to @samp{on} will give an error. 40793 40794If the GNU Source Highlight library is not being used, then 40795@value{GDBN} will use the Python Pygments package for source code 40796styling, if it is available. 40797 40798This option is useful for debugging @value{GDBN}'s use of the Pygments 40799library when @value{GDBN} is linked against the GNU Source Highlight 40800library. 40801 40802@anchor{maint_libopcodes_styling} 40803@kindex maint set libopcodes-styling enabled 40804@kindex maint show libopcodes-styling enabled 40805@item maint set libopcodes-styling enabled @r{[}on|off@r{]} 40806@itemx maint show libopcodes-styling enabled 40807Control whether @value{GDBN} should use its builtin disassembler 40808(@file{libopcodes}) to style disassembler output (@pxref{Output 40809Styling}). The builtin disassembler does not support styling for all 40810architectures. 40811 40812When this option is @samp{off} the builtin disassembler will not be 40813used for styling, @value{GDBN} will fall back to using the Python 40814Pygments package if possible. 40815 40816Trying to set this option @samp{on} for an architecture that the 40817builtin disassembler is unable to style will give an error, otherwise, 40818the builtin disassembler will be used to style disassembler output. 40819 40820This option is @samp{on} by default for supported architectures. 40821 40822This option is useful for debugging @value{GDBN}'s use of the Pygments 40823library when @value{GDBN} is built for an architecture that supports 40824styling with the builtin disassembler 40825@kindex maint space 40826@cindex memory used by commands 40827@item maint space @var{value} 40828An alias for @code{maint set per-command space}. 40829A non-zero value enables it, zero disables it. 40830 40831@kindex maint time 40832@cindex time of command execution 40833@item maint time @var{value} 40834An alias for @code{maint set per-command time}. 40835A non-zero value enables it, zero disables it. 40836 40837@kindex maint translate-address 40838@item maint translate-address @r{[}@var{section}@r{]} @var{addr} 40839Find the symbol stored at the location specified by the address 40840@var{addr} and an optional section name @var{section}. If found, 40841@value{GDBN} prints the name of the closest symbol and an offset from 40842the symbol's location to the specified address. This is similar to 40843the @code{info address} command (@pxref{Symbols}), except that this 40844command also allows to find symbols in other sections. 40845 40846If section was not specified, the section in which the symbol was found 40847is also printed. For dynamically linked executables, the name of 40848executable or shared library containing the symbol is printed as well. 40849 40850@kindex maint test-options 40851@item maint test-options require-delimiter 40852@itemx maint test-options unknown-is-error 40853@itemx maint test-options unknown-is-operand 40854These commands are used by the testsuite to validate the command 40855options framework. The @code{require-delimiter} variant requires a 40856double-dash delimiter to indicate end of options. The 40857@code{unknown-is-error} and @code{unknown-is-operand} do not. The 40858@code{unknown-is-error} variant throws an error on unknown option, 40859while @code{unknown-is-operand} treats unknown options as the start of 40860the command's operands. When run, the commands output the result of 40861the processed options. When completed, the commands store the 40862internal result of completion in a variable exposed by the @code{maint 40863show test-options-completion-result} command. 40864 40865@kindex maint show test-options-completion-result 40866@item maint show test-options-completion-result 40867Shows the result of completing the @code{maint test-options} 40868subcommands. This is used by the testsuite to validate completion 40869support in the command options framework. 40870 40871@kindex maint set test-settings 40872@kindex maint show test-settings 40873@item maint set test-settings @var{kind} 40874@itemx maint show test-settings @var{kind} 40875These are representative commands for each @var{kind} of setting type 40876@value{GDBN} supports. They are used by the testsuite for exercising 40877the settings infrastructure. 40878 40879@kindex maint set backtrace-on-fatal-signal 40880@kindex maint show backtrace-on-fatal-signal 40881@item maint set backtrace-on-fatal-signal [on|off] 40882@itemx maint show backtrace-on-fatal-signal 40883When this setting is @code{on}, if @value{GDBN} itself terminates with 40884a fatal signal (e.g.@: SIGSEGV), then a limited backtrace will be 40885printed to the standard error stream. This backtrace can be used to 40886help diagnose crashes within @value{GDBN} in situations where a user 40887is unable to share a corefile with the @value{GDBN} developers. 40888 40889If the functionality to provide this backtrace is not available for 40890the platform on which GDB is running then this feature will be 40891@code{off} by default, and attempting to turn this feature on will 40892give an error. 40893 40894For platforms that do support creating the backtrace this feature is 40895@code{on} by default. 40896 40897@kindex maint with 40898@item maint with @var{setting} [@var{value}] [-- @var{command}] 40899Like the @code{with} command, but works with @code{maintenance set} 40900variables. This is used by the testsuite to exercise the @code{with} 40901command's infrastructure. 40902 40903@end table 40904 40905The following command is useful for non-interactive invocations of 40906@value{GDBN}, such as in the test suite. 40907 40908@table @code 40909@item set watchdog @var{nsec} 40910@kindex set watchdog 40911@cindex watchdog timer 40912@cindex timeout for commands 40913Set the maximum number of seconds @value{GDBN} will wait for the 40914target operation to finish. If this time expires, @value{GDBN} 40915reports and error and the command is aborted. 40916 40917@item show watchdog 40918Show the current setting of the target wait timeout. 40919@end table 40920 40921@node Remote Protocol 40922@appendix @value{GDBN} Remote Serial Protocol 40923 40924@menu 40925* Overview:: 40926* Packets:: 40927* Stop Reply Packets:: 40928* General Query Packets:: 40929* Architecture-Specific Protocol Details:: 40930* Tracepoint Packets:: 40931* Host I/O Packets:: 40932* Interrupts:: 40933* Notification Packets:: 40934* Remote Non-Stop:: 40935* Packet Acknowledgment:: 40936* Examples:: 40937* File-I/O Remote Protocol Extension:: 40938* Library List Format:: 40939* Library List Format for SVR4 Targets:: 40940* Memory Map Format:: 40941* Thread List Format:: 40942* Traceframe Info Format:: 40943* Branch Trace Format:: 40944* Branch Trace Configuration Format:: 40945@end menu 40946 40947@node Overview 40948@section Overview 40949 40950There may be occasions when you need to know something about the 40951protocol---for example, if there is only one serial port to your target 40952machine, you might want your program to do something special if it 40953recognizes a packet meant for @value{GDBN}. 40954 40955In the examples below, @samp{->} and @samp{<-} are used to indicate 40956transmitted and received data, respectively. 40957 40958@cindex protocol, @value{GDBN} remote serial 40959@cindex serial protocol, @value{GDBN} remote 40960@cindex remote serial protocol 40961All @value{GDBN} commands and responses (other than acknowledgments 40962and notifications, see @ref{Notification Packets}) are sent as a 40963@var{packet}. A @var{packet} is introduced with the character 40964@samp{$}, the actual @var{packet-data}, and the terminating character 40965@samp{#} followed by a two-digit @var{checksum}: 40966 40967@smallexample 40968@code{$}@var{packet-data}@code{#}@var{checksum} 40969@end smallexample 40970@noindent 40971 40972@cindex checksum, for @value{GDBN} remote 40973@noindent 40974The two-digit @var{checksum} is computed as the modulo 256 sum of all 40975characters between the leading @samp{$} and the trailing @samp{#} (an 40976eight bit unsigned checksum). 40977 40978Implementors should note that prior to @value{GDBN} 5.0 the protocol 40979specification also included an optional two-digit @var{sequence-id}: 40980 40981@smallexample 40982@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum} 40983@end smallexample 40984 40985@cindex sequence-id, for @value{GDBN} remote 40986@noindent 40987That @var{sequence-id} was appended to the acknowledgment. @value{GDBN} 40988has never output @var{sequence-id}s. Stubs that handle packets added 40989since @value{GDBN} 5.0 must not accept @var{sequence-id}. 40990 40991When either the host or the target machine receives a packet, the first 40992response expected is an acknowledgment: either @samp{+} (to indicate 40993the package was received correctly) or @samp{-} (to request 40994retransmission): 40995 40996@smallexample 40997-> @code{$}@var{packet-data}@code{#}@var{checksum} 40998<- @code{+} 40999@end smallexample 41000@noindent 41001 41002The @samp{+}/@samp{-} acknowledgments can be disabled 41003once a connection is established. 41004@xref{Packet Acknowledgment}, for details. 41005 41006The host (@value{GDBN}) sends @var{command}s, and the target (the 41007debugging stub incorporated in your program) sends a @var{response}. In 41008the case of step and continue @var{command}s, the response is only sent 41009when the operation has completed, and the target has again stopped all 41010threads in all attached processes. This is the default all-stop mode 41011behavior, but the remote protocol also supports @value{GDBN}'s non-stop 41012execution mode; see @ref{Remote Non-Stop}, for details. 41013 41014@var{packet-data} consists of a sequence of characters with the 41015exception of @samp{#} and @samp{$} (see @samp{X} packet for additional 41016exceptions). 41017 41018@cindex remote protocol, field separator 41019Fields within the packet should be separated using @samp{,} @samp{;} or 41020@samp{:}. Except where otherwise noted all numbers are represented in 41021@sc{hex} with leading zeros suppressed. 41022 41023Implementors should note that prior to @value{GDBN} 5.0, the character 41024@samp{:} could not appear as the third character in a packet (as it 41025would potentially conflict with the @var{sequence-id}). 41026 41027@cindex remote protocol, binary data 41028@anchor{Binary Data} 41029Binary data in most packets is encoded either as two hexadecimal 41030digits per byte of binary data. This allowed the traditional remote 41031protocol to work over connections which were only seven-bit clean. 41032Some packets designed more recently assume an eight-bit clean 41033connection, and use a more efficient encoding to send and receive 41034binary data. 41035 41036The binary data representation uses @code{7d} (@sc{ascii} @samp{@}}) 41037as an escape character. Any escaped byte is transmitted as the escape 41038character followed by the original character XORed with @code{0x20}. 41039For example, the byte @code{0x7d} would be transmitted as the two 41040bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}), 41041@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii} 41042@samp{@}}) must always be escaped. Responses sent by the stub 41043must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it 41044is not interpreted as the start of a run-length encoded sequence 41045(described next). 41046 41047Response @var{data} can be run-length encoded to save space. 41048Run-length encoding replaces runs of identical characters with one 41049instance of the repeated character, followed by a @samp{*} and a 41050repeat count. The repeat count is itself sent encoded, to avoid 41051binary characters in @var{data}: a value of @var{n} is sent as 41052@code{@var{n}+29}. For a repeat count greater or equal to 3, this 41053produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii} 41054code 32) for a repeat count of 3. (This is because run-length 41055encoding starts to win for counts 3 or more.) Thus, for example, 41056@samp{0* } is a run-length encoding of ``0000'': the space character 41057after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 = 410583}} more times. 41059 41060The printable characters @samp{#} and @samp{$} or with a numeric value 41061greater than 126 must not be used. Runs of six repeats (@samp{#}) or 41062seven repeats (@samp{$}) can be expanded using a repeat count of only 41063five (@samp{"}). For example, @samp{00000000} can be encoded as 41064@samp{0*"00}. 41065 41066The error response returned for some packets includes a two character 41067error number. That number is not well defined. 41068 41069@cindex empty response, for unsupported packets 41070For any @var{command} not supported by the stub, an empty response 41071(@samp{$#00}) should be returned. That way it is possible to extend the 41072protocol. A newer @value{GDBN} can tell if a packet is supported based 41073on that response. 41074 41075At a minimum, a stub is required to support the @samp{?} command to 41076tell @value{GDBN} the reason for halting, @samp{g} and @samp{G} 41077commands for register access, and the @samp{m} and @samp{M} commands 41078for memory access. Stubs that only control single-threaded targets 41079can implement run control with the @samp{c} (continue) command, and if 41080the target architecture supports hardware-assisted single-stepping, 41081the @samp{s} (step) command. Stubs that support multi-threading 41082targets should support the @samp{vCont} command. All other commands 41083are optional. 41084 41085@node Packets 41086@section Packets 41087 41088The following table provides a complete list of all currently defined 41089@var{command}s and their corresponding response @var{data}. 41090@xref{File-I/O Remote Protocol Extension}, for details about the File 41091I/O extension of the remote protocol. 41092 41093Each packet's description has a template showing the packet's overall 41094syntax, followed by an explanation of the packet's meaning. We 41095include spaces in some of the templates for clarity; these are not 41096part of the packet's syntax. No @value{GDBN} packet uses spaces to 41097separate its components. For example, a template like @samp{foo 41098@var{bar} @var{baz}} describes a packet beginning with the three ASCII 41099bytes @samp{foo}, followed by a @var{bar}, followed directly by a 41100@var{baz}. @value{GDBN} does not transmit a space character between the 41101@samp{foo} and the @var{bar}, or between the @var{bar} and the 41102@var{baz}. 41103 41104@cindex @var{thread-id}, in remote protocol 41105@anchor{thread-id syntax} 41106Several packets and replies include a @var{thread-id} field to identify 41107a thread. Normally these are positive numbers with a target-specific 41108interpretation, formatted as big-endian hex strings. A @var{thread-id} 41109can also be a literal @samp{-1} to indicate all threads, or @samp{0} to 41110pick any thread. 41111 41112In addition, the remote protocol supports a multiprocess feature in 41113which the @var{thread-id} syntax is extended to optionally include both 41114process and thread ID fields, as @samp{p@var{pid}.@var{tid}}. 41115The @var{pid} (process) and @var{tid} (thread) components each have the 41116format described above: a positive number with target-specific 41117interpretation formatted as a big-endian hex string, literal @samp{-1} 41118to indicate all processes or threads (respectively), or @samp{0} to 41119indicate an arbitrary process or thread. Specifying just a process, as 41120@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an 41121error to specify all processes but a specific thread, such as 41122@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used 41123for those packets and replies explicitly documented to include a process 41124ID, rather than a @var{thread-id}. 41125 41126The multiprocess @var{thread-id} syntax extensions are only used if both 41127@value{GDBN} and the stub report support for the @samp{multiprocess} 41128feature using @samp{qSupported}. @xref{multiprocess extensions}, for 41129more information. 41130 41131Note that all packet forms beginning with an upper- or lower-case 41132letter, other than those described here, are reserved for future use. 41133 41134Here are the packet descriptions. 41135 41136@table @samp 41137 41138@item ! 41139@cindex @samp{!} packet 41140@anchor{extended mode} 41141Enable extended mode. In extended mode, the remote server is made 41142persistent. The @samp{R} packet is used to restart the program being 41143debugged. 41144 41145Reply: 41146@table @samp 41147@item OK 41148The remote target both supports and has enabled extended mode. 41149@end table 41150 41151@item ? 41152@cindex @samp{?} packet 41153@anchor{? packet} 41154This is sent when connection is first established to query the reason 41155the target halted. The reply is the same as for step and continue. 41156This packet has a special interpretation when the target is in 41157non-stop mode; see @ref{Remote Non-Stop}. 41158 41159Reply: 41160@xref{Stop Reply Packets}, for the reply specifications. 41161 41162@item A @var{arglen},@var{argnum},@var{arg},@dots{} 41163@cindex @samp{A} packet 41164Initialized @code{argv[]} array passed into program. @var{arglen} 41165specifies the number of bytes in the hex encoded byte stream 41166@var{arg}. See @code{gdbserver} for more details. 41167 41168Reply: 41169@table @samp 41170@item OK 41171The arguments were set. 41172@item E @var{NN} 41173An error occurred. 41174@end table 41175 41176@item b @var{baud} 41177@cindex @samp{b} packet 41178(Don't use this packet; its behavior is not well-defined.) 41179Change the serial line speed to @var{baud}. 41180 41181JTC: @emph{When does the transport layer state change? When it's 41182received, or after the ACK is transmitted. In either case, there are 41183problems if the command or the acknowledgment packet is dropped.} 41184 41185Stan: @emph{If people really wanted to add something like this, and get 41186it working for the first time, they ought to modify ser-unix.c to send 41187some kind of out-of-band message to a specially-setup stub and have the 41188switch happen "in between" packets, so that from remote protocol's point 41189of view, nothing actually happened.} 41190 41191@item B @var{addr},@var{mode} 41192@cindex @samp{B} packet 41193Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a 41194breakpoint at @var{addr}. 41195 41196Don't use this packet. Use the @samp{Z} and @samp{z} packets instead 41197(@pxref{insert breakpoint or watchpoint packet}). 41198 41199@cindex @samp{bc} packet 41200@anchor{bc} 41201@item bc 41202Backward continue. Execute the target system in reverse. No parameter. 41203@xref{Reverse Execution}, for more information. 41204 41205Reply: 41206@xref{Stop Reply Packets}, for the reply specifications. 41207 41208@cindex @samp{bs} packet 41209@anchor{bs} 41210@item bs 41211Backward single step. Execute one instruction in reverse. No parameter. 41212@xref{Reverse Execution}, for more information. 41213 41214Reply: 41215@xref{Stop Reply Packets}, for the reply specifications. 41216 41217@item c @r{[}@var{addr}@r{]} 41218@cindex @samp{c} packet 41219Continue at @var{addr}, which is the address to resume. If @var{addr} 41220is omitted, resume at current address. 41221 41222This packet is deprecated for multi-threading support. @xref{vCont 41223packet}. 41224 41225Reply: 41226@xref{Stop Reply Packets}, for the reply specifications. 41227 41228@item C @var{sig}@r{[};@var{addr}@r{]} 41229@cindex @samp{C} packet 41230Continue with signal @var{sig} (hex signal number). If 41231@samp{;@var{addr}} is omitted, resume at same address. 41232 41233This packet is deprecated for multi-threading support. @xref{vCont 41234packet}. 41235 41236Reply: 41237@xref{Stop Reply Packets}, for the reply specifications. 41238 41239@item d 41240@cindex @samp{d} packet 41241Toggle debug flag. 41242 41243Don't use this packet; instead, define a general set packet 41244(@pxref{General Query Packets}). 41245 41246@item D 41247@itemx D;@var{pid} 41248@cindex @samp{D} packet 41249The first form of the packet is used to detach @value{GDBN} from the 41250remote system. It is sent to the remote target 41251before @value{GDBN} disconnects via the @code{detach} command. 41252 41253The second form, including a process ID, is used when multiprocess 41254protocol extensions are enabled (@pxref{multiprocess extensions}), to 41255detach only a specific process. The @var{pid} is specified as a 41256big-endian hex string. 41257 41258Reply: 41259@table @samp 41260@item OK 41261for success 41262@item E @var{NN} 41263for an error 41264@end table 41265 41266@item F @var{RC},@var{EE},@var{CF};@var{XX} 41267@cindex @samp{F} packet 41268A reply from @value{GDBN} to an @samp{F} packet sent by the target. 41269This is part of the File-I/O protocol extension. @xref{File-I/O 41270Remote Protocol Extension}, for the specification. 41271 41272@item g 41273@anchor{read registers packet} 41274@cindex @samp{g} packet 41275Read general registers. 41276 41277Reply: 41278@table @samp 41279@item @var{XX@dots{}} 41280Each byte of register data is described by two hex digits. The bytes 41281with the register are transmitted in target byte order. The size of 41282each register and their position within the @samp{g} packet are 41283determined by the @value{GDBN} internal gdbarch functions 41284@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. 41285 41286When reading registers from a trace frame (@pxref{Analyze Collected 41287Data,,Using the Collected Data}), the stub may also return a string of 41288literal @samp{x}'s in place of the register data digits, to indicate 41289that the corresponding register has not been collected, thus its value 41290is unavailable. For example, for an architecture with 4 registers of 412914 bytes each, the following reply indicates to @value{GDBN} that 41292registers 0 and 2 have not been collected, while registers 1 and 3 41293have been collected, and both have zero value: 41294 41295@smallexample 41296-> @code{g} 41297<- @code{xxxxxxxx00000000xxxxxxxx00000000} 41298@end smallexample 41299 41300@item E @var{NN} 41301for an error. 41302@end table 41303 41304@item G @var{XX@dots{}} 41305@cindex @samp{G} packet 41306Write general registers. @xref{read registers packet}, for a 41307description of the @var{XX@dots{}} data. 41308 41309Reply: 41310@table @samp 41311@item OK 41312for success 41313@item E @var{NN} 41314for an error 41315@end table 41316 41317@item H @var{op} @var{thread-id} 41318@cindex @samp{H} packet 41319Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g}, 41320@samp{G}, et.al.). Depending on the operation to be performed, @var{op} 41321should be @samp{c} for step and continue operations (note that this 41322is deprecated, supporting the @samp{vCont} command is a better 41323option), and @samp{g} for other operations. The thread designator 41324@var{thread-id} has the format and interpretation described in 41325@ref{thread-id syntax}. 41326 41327Reply: 41328@table @samp 41329@item OK 41330for success 41331@item E @var{NN} 41332for an error 41333@end table 41334 41335@c FIXME: JTC: 41336@c 'H': How restrictive (or permissive) is the thread model. If a 41337@c thread is selected and stopped, are other threads allowed 41338@c to continue to execute? As I mentioned above, I think the 41339@c semantics of each command when a thread is selected must be 41340@c described. For example: 41341@c 41342@c 'g': If the stub supports threads and a specific thread is 41343@c selected, returns the register block from that thread; 41344@c otherwise returns current registers. 41345@c 41346@c 'G' If the stub supports threads and a specific thread is 41347@c selected, sets the registers of the register block of 41348@c that thread; otherwise sets current registers. 41349 41350@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]} 41351@anchor{cycle step packet} 41352@cindex @samp{i} packet 41353Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is 41354present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle 41355step starting at that address. 41356 41357@item I 41358@cindex @samp{I} packet 41359Signal, then cycle step. @xref{step with signal packet}. @xref{cycle 41360step packet}. 41361 41362@item k 41363@cindex @samp{k} packet 41364Kill request. 41365 41366The exact effect of this packet is not specified. 41367 41368For a bare-metal target, it may power cycle or reset the target 41369system. For that reason, the @samp{k} packet has no reply. 41370 41371For a single-process target, it may kill that process if possible. 41372 41373A multiple-process target may choose to kill just one process, or all 41374that are under @value{GDBN}'s control. For more precise control, use 41375the vKill packet (@pxref{vKill packet}). 41376 41377If the target system immediately closes the connection in response to 41378@samp{k}, @value{GDBN} does not consider the lack of packet 41379acknowledgment to be an error, and assumes the kill was successful. 41380 41381If connected using @kbd{target extended-remote}, and the target does 41382not close the connection in response to a kill request, @value{GDBN} 41383probes the target state as if a new connection was opened 41384(@pxref{? packet}). 41385 41386@item m @var{addr},@var{length} 41387@cindex @samp{m} packet 41388Read @var{length} addressable memory units starting at address @var{addr} 41389(@pxref{addressable memory unit}). Note that @var{addr} may not be aligned to 41390any particular boundary. 41391 41392The stub need not use any particular size or alignment when gathering 41393data from memory for the response; even if @var{addr} is word-aligned 41394and @var{length} is a multiple of the word size, the stub is free to 41395use byte accesses, or not. For this reason, this packet may not be 41396suitable for accessing memory-mapped I/O devices. 41397@cindex alignment of remote memory accesses 41398@cindex size of remote memory accesses 41399@cindex memory, alignment and size of remote accesses 41400 41401Reply: 41402@table @samp 41403@item @var{XX@dots{}} 41404Memory contents; each byte is transmitted as a two-digit hexadecimal number. 41405The reply may contain fewer addressable memory units than requested if the 41406server was able to read only part of the region of memory. 41407@item E @var{NN} 41408@var{NN} is errno 41409@end table 41410 41411@item M @var{addr},@var{length}:@var{XX@dots{}} 41412@cindex @samp{M} packet 41413Write @var{length} addressable memory units starting at address @var{addr} 41414(@pxref{addressable memory unit}). The data is given by @var{XX@dots{}}; each 41415byte is transmitted as a two-digit hexadecimal number. 41416 41417Reply: 41418@table @samp 41419@item OK 41420for success 41421@item E @var{NN} 41422for an error (this includes the case where only part of the data was 41423written). 41424@end table 41425 41426@item p @var{n} 41427@cindex @samp{p} packet 41428Read the value of register @var{n}; @var{n} is in hex. 41429@xref{read registers packet}, for a description of how the returned 41430register value is encoded. 41431 41432Reply: 41433@table @samp 41434@item @var{XX@dots{}} 41435the register's value 41436@item E @var{NN} 41437for an error 41438@item @w{} 41439Indicating an unrecognized @var{query}. 41440@end table 41441 41442@item P @var{n@dots{}}=@var{r@dots{}} 41443@anchor{write register packet} 41444@cindex @samp{P} packet 41445Write register @var{n@dots{}} with value @var{r@dots{}}. The register 41446number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex 41447digits for each byte in the register (target byte order). 41448 41449Reply: 41450@table @samp 41451@item OK 41452for success 41453@item E @var{NN} 41454for an error 41455@end table 41456 41457@item q @var{name} @var{params}@dots{} 41458@itemx Q @var{name} @var{params}@dots{} 41459@cindex @samp{q} packet 41460@cindex @samp{Q} packet 41461General query (@samp{q}) and set (@samp{Q}). These packets are 41462described fully in @ref{General Query Packets}. 41463 41464@item r 41465@cindex @samp{r} packet 41466Reset the entire system. 41467 41468Don't use this packet; use the @samp{R} packet instead. 41469 41470@item R @var{XX} 41471@cindex @samp{R} packet 41472Restart the program being debugged. The @var{XX}, while needed, is ignored. 41473This packet is only available in extended mode (@pxref{extended mode}). 41474 41475The @samp{R} packet has no reply. 41476 41477@item s @r{[}@var{addr}@r{]} 41478@cindex @samp{s} packet 41479Single step, resuming at @var{addr}. If 41480@var{addr} is omitted, resume at same address. 41481 41482This packet is deprecated for multi-threading support. @xref{vCont 41483packet}. 41484 41485Reply: 41486@xref{Stop Reply Packets}, for the reply specifications. 41487 41488@item S @var{sig}@r{[};@var{addr}@r{]} 41489@anchor{step with signal packet} 41490@cindex @samp{S} packet 41491Step with signal. This is analogous to the @samp{C} packet, but 41492requests a single-step, rather than a normal resumption of execution. 41493 41494This packet is deprecated for multi-threading support. @xref{vCont 41495packet}. 41496 41497Reply: 41498@xref{Stop Reply Packets}, for the reply specifications. 41499 41500@item t @var{addr}:@var{PP},@var{MM} 41501@cindex @samp{t} packet 41502Search backwards starting at address @var{addr} for a match with pattern 41503@var{PP} and mask @var{MM}, both of which are are 4 byte long. 41504There must be at least 3 digits in @var{addr}. 41505 41506@item T @var{thread-id} 41507@cindex @samp{T} packet 41508Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}. 41509 41510Reply: 41511@table @samp 41512@item OK 41513thread is still alive 41514@item E @var{NN} 41515thread is dead 41516@end table 41517 41518@item v 41519Packets starting with @samp{v} are identified by a multi-letter name, 41520up to the first @samp{;} or @samp{?} (or the end of the packet). 41521 41522@item vAttach;@var{pid} 41523@cindex @samp{vAttach} packet 41524Attach to a new process with the specified process ID @var{pid}. 41525The process ID is a 41526hexadecimal integer identifying the process. In all-stop mode, all 41527threads in the attached process are stopped; in non-stop mode, it may be 41528attached without being stopped if that is supported by the target. 41529 41530@c In non-stop mode, on a successful vAttach, the stub should set the 41531@c current thread to a thread of the newly-attached process. After 41532@c attaching, GDB queries for the attached process's thread ID with qC. 41533@c Also note that, from a user perspective, whether or not the 41534@c target is stopped on attach in non-stop mode depends on whether you 41535@c use the foreground or background version of the attach command, not 41536@c on what vAttach does; GDB does the right thing with respect to either 41537@c stopping or restarting threads. 41538 41539This packet is only available in extended mode (@pxref{extended mode}). 41540 41541Reply: 41542@table @samp 41543@item E @var{nn} 41544for an error 41545@item @r{Any stop packet} 41546for success in all-stop mode (@pxref{Stop Reply Packets}) 41547@item OK 41548for success in non-stop mode (@pxref{Remote Non-Stop}) 41549@end table 41550 41551@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{} 41552@cindex @samp{vCont} packet 41553@anchor{vCont packet} 41554Resume the inferior, specifying different actions for each thread. 41555 41556For each inferior thread, the leftmost action with a matching 41557@var{thread-id} is applied. Threads that don't match any action 41558remain in their current state. Thread IDs are specified using the 41559syntax described in @ref{thread-id syntax}. If multiprocess 41560extensions (@pxref{multiprocess extensions}) are supported, actions 41561can be specified to match all threads in a process by using the 41562@samp{p@var{pid}.-1} form of the @var{thread-id}. An action with no 41563@var{thread-id} matches all threads. Specifying no actions is an 41564error. 41565 41566Currently supported actions are: 41567 41568@table @samp 41569@item c 41570Continue. 41571@item C @var{sig} 41572Continue with signal @var{sig}. The signal @var{sig} should be two hex digits. 41573@item s 41574Step. 41575@item S @var{sig} 41576Step with signal @var{sig}. The signal @var{sig} should be two hex digits. 41577@item t 41578Stop. 41579@item r @var{start},@var{end} 41580Step once, and then keep stepping as long as the thread stops at 41581addresses between @var{start} (inclusive) and @var{end} (exclusive). 41582The remote stub reports a stop reply when either the thread goes out 41583of the range or is stopped due to an unrelated reason, such as hitting 41584a breakpoint. @xref{range stepping}. 41585 41586If the range is empty (@var{start} == @var{end}), then the action 41587becomes equivalent to the @samp{s} action. In other words, 41588single-step once, and report the stop (even if the stepped instruction 41589jumps to @var{start}). 41590 41591(A stop reply may be sent at any point even if the PC is still within 41592the stepping range; for example, it is valid to implement this packet 41593in a degenerate way as a single instruction step operation.) 41594 41595@end table 41596 41597The optional argument @var{addr} normally associated with the 41598@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is 41599not supported in @samp{vCont}. 41600 41601The @samp{t} action is only relevant in non-stop mode 41602(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise. 41603A stop reply should be generated for any affected thread not already stopped. 41604When a thread is stopped by means of a @samp{t} action, 41605the corresponding stop reply should indicate that the thread has stopped with 41606signal @samp{0}, regardless of whether the target uses some other signal 41607as an implementation detail. 41608 41609The server must ignore @samp{c}, @samp{C}, @samp{s}, @samp{S}, and 41610@samp{r} actions for threads that are already running. Conversely, 41611the server must ignore @samp{t} actions for threads that are already 41612stopped. 41613 41614@emph{Note:} In non-stop mode, a thread is considered running until 41615@value{GDBN} acknowledges an asynchronous stop notification for it with 41616the @samp{vStopped} packet (@pxref{Remote Non-Stop}). 41617 41618The stub must support @samp{vCont} if it reports support for 41619multiprocess extensions (@pxref{multiprocess extensions}). 41620 41621Reply: 41622@xref{Stop Reply Packets}, for the reply specifications. 41623 41624@item vCont? 41625@cindex @samp{vCont?} packet 41626Request a list of actions supported by the @samp{vCont} packet. 41627 41628Reply: 41629@table @samp 41630@item vCont@r{[};@var{action}@dots{}@r{]} 41631The @samp{vCont} packet is supported. Each @var{action} is a supported 41632command in the @samp{vCont} packet. 41633@item @w{} 41634The @samp{vCont} packet is not supported. 41635@end table 41636 41637@anchor{vCtrlC packet} 41638@item vCtrlC 41639@cindex @samp{vCtrlC} packet 41640Interrupt remote target as if a control-C was pressed on the remote 41641terminal. This is the equivalent to reacting to the @code{^C} 41642(@samp{\003}, the control-C character) character in all-stop mode 41643while the target is running, except this works in non-stop mode. 41644@xref{interrupting remote targets}, for more info on the all-stop 41645variant. 41646 41647Reply: 41648@table @samp 41649@item E @var{nn} 41650for an error 41651@item OK 41652for success 41653@end table 41654 41655@item vFile:@var{operation}:@var{parameter}@dots{} 41656@cindex @samp{vFile} packet 41657Perform a file operation on the target system. For details, 41658see @ref{Host I/O Packets}. 41659 41660@item vFlashErase:@var{addr},@var{length} 41661@cindex @samp{vFlashErase} packet 41662Direct the stub to erase @var{length} bytes of flash starting at 41663@var{addr}. The region may enclose any number of flash blocks, but 41664its start and end must fall on block boundaries, as indicated by the 41665flash block size appearing in the memory map (@pxref{Memory Map 41666Format}). @value{GDBN} groups flash memory programming operations 41667together, and sends a @samp{vFlashDone} request after each group; the 41668stub is allowed to delay erase operation until the @samp{vFlashDone} 41669packet is received. 41670 41671Reply: 41672@table @samp 41673@item OK 41674for success 41675@item E @var{NN} 41676for an error 41677@end table 41678 41679@item vFlashWrite:@var{addr}:@var{XX@dots{}} 41680@cindex @samp{vFlashWrite} packet 41681Direct the stub to write data to flash address @var{addr}. The data 41682is passed in binary form using the same encoding as for the @samp{X} 41683packet (@pxref{Binary Data}). The memory ranges specified by 41684@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must 41685not overlap, and must appear in order of increasing addresses 41686(although @samp{vFlashErase} packets for higher addresses may already 41687have been received; the ordering is guaranteed only between 41688@samp{vFlashWrite} packets). If a packet writes to an address that was 41689neither erased by a preceding @samp{vFlashErase} packet nor by some other 41690target-specific method, the results are unpredictable. 41691 41692 41693Reply: 41694@table @samp 41695@item OK 41696for success 41697@item E.memtype 41698for vFlashWrite addressing non-flash memory 41699@item E @var{NN} 41700for an error 41701@end table 41702 41703@item vFlashDone 41704@cindex @samp{vFlashDone} packet 41705Indicate to the stub that flash programming operation is finished. 41706The stub is permitted to delay or batch the effects of a group of 41707@samp{vFlashErase} and @samp{vFlashWrite} packets until a 41708@samp{vFlashDone} packet is received. The contents of the affected 41709regions of flash memory are unpredictable until the @samp{vFlashDone} 41710request is completed. 41711 41712@item vKill;@var{pid} 41713@cindex @samp{vKill} packet 41714@anchor{vKill packet} 41715Kill the process with the specified process ID @var{pid}, which is a 41716hexadecimal integer identifying the process. This packet is used in 41717preference to @samp{k} when multiprocess protocol extensions are 41718supported; see @ref{multiprocess extensions}. 41719 41720Reply: 41721@table @samp 41722@item E @var{nn} 41723for an error 41724@item OK 41725for success 41726@end table 41727 41728@item vMustReplyEmpty 41729@cindex @samp{vMustReplyEmpty} packet 41730The correct reply to an unknown @samp{v} packet is to return the empty 41731string, however, some older versions of @command{gdbserver} would 41732incorrectly return @samp{OK} for unknown @samp{v} packets. 41733 41734The @samp{vMustReplyEmpty} is used as a feature test to check how 41735@command{gdbserver} handles unknown packets, it is important that this 41736packet be handled in the same way as other unknown @samp{v} packets. 41737If this packet is handled differently to other unknown @samp{v} 41738packets then it is possible that @value{GDBN} may run into problems in 41739other areas, specifically around use of @samp{vFile:setfs:}. 41740 41741@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{} 41742@cindex @samp{vRun} packet 41743Run the program @var{filename}, passing it each @var{argument} on its 41744command line. The file and arguments are hex-encoded strings. If 41745@var{filename} is an empty string, the stub may use a default program 41746(e.g.@: the last program run). The program is created in the stopped 41747state. 41748 41749@c FIXME: What about non-stop mode? 41750 41751This packet is only available in extended mode (@pxref{extended mode}). 41752 41753Reply: 41754@table @samp 41755@item E @var{nn} 41756for an error 41757@item @r{Any stop packet} 41758for success (@pxref{Stop Reply Packets}) 41759@end table 41760 41761@item vStopped 41762@cindex @samp{vStopped} packet 41763@xref{Notification Packets}. 41764 41765@item X @var{addr},@var{length}:@var{XX@dots{}} 41766@anchor{X packet} 41767@cindex @samp{X} packet 41768Write data to memory, where the data is transmitted in binary. 41769Memory is specified by its address @var{addr} and number of addressable memory 41770units @var{length} (@pxref{addressable memory unit}); 41771@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}). 41772 41773Reply: 41774@table @samp 41775@item OK 41776for success 41777@item E @var{NN} 41778for an error 41779@end table 41780 41781@item z @var{type},@var{addr},@var{kind} 41782@itemx Z @var{type},@var{addr},@var{kind} 41783@anchor{insert breakpoint or watchpoint packet} 41784@cindex @samp{z} packet 41785@cindex @samp{Z} packets 41786Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or 41787watchpoint starting at address @var{address} of kind @var{kind}. 41788 41789Each breakpoint and watchpoint packet @var{type} is documented 41790separately. 41791 41792@emph{Implementation notes: A remote target shall return an empty string 41793for an unrecognized breakpoint or watchpoint packet @var{type}. A 41794remote target shall support either both or neither of a given 41795@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To 41796avoid potential problems with duplicate packets, the operations should 41797be implemented in an idempotent way.} 41798 41799@item z0,@var{addr},@var{kind} 41800@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]} 41801@cindex @samp{z0} packet 41802@cindex @samp{Z0} packet 41803Insert (@samp{Z0}) or remove (@samp{z0}) a software breakpoint at address 41804@var{addr} of type @var{kind}. 41805 41806A software breakpoint is implemented by replacing the instruction at 41807@var{addr} with a software breakpoint or trap instruction. The 41808@var{kind} is target-specific and typically indicates the size of the 41809breakpoint in bytes that should be inserted. E.g., the @sc{arm} and 41810@sc{mips} can insert either a 2 or 4 byte breakpoint. Some 41811architectures have additional meanings for @var{kind} 41812(@pxref{Architecture-Specific Protocol Details}); if no 41813architecture-specific value is being used, it should be @samp{0}. 41814@var{kind} is hex-encoded. @var{cond_list} is an optional list of 41815conditional expressions in bytecode form that should be evaluated on 41816the target's side. These are the conditions that should be taken into 41817consideration when deciding if the breakpoint trigger should be 41818reported back to @value{GDBN}. 41819 41820See also the @samp{swbreak} stop reason (@pxref{swbreak stop reason}) 41821for how to best report a software breakpoint event to @value{GDBN}. 41822 41823The @var{cond_list} parameter is comprised of a series of expressions, 41824concatenated without separators. Each expression has the following form: 41825 41826@table @samp 41827 41828@item X @var{len},@var{expr} 41829@var{len} is the length of the bytecode expression and @var{expr} is the 41830actual conditional expression in bytecode form. 41831 41832@end table 41833 41834The optional @var{cmd_list} parameter introduces commands that may be 41835run on the target, rather than being reported back to @value{GDBN}. 41836The parameter starts with a numeric flag @var{persist}; if the flag is 41837nonzero, then the breakpoint may remain active and the commands 41838continue to be run even when @value{GDBN} disconnects from the target. 41839Following this flag is a series of expressions concatenated with no 41840separators. Each expression has the following form: 41841 41842@table @samp 41843 41844@item X @var{len},@var{expr} 41845@var{len} is the length of the bytecode expression and @var{expr} is the 41846actual commands expression in bytecode form. 41847 41848@end table 41849 41850@emph{Implementation note: It is possible for a target to copy or move 41851code that contains software breakpoints (e.g., when implementing 41852overlays). The behavior of this packet, in the presence of such a 41853target, is not defined.} 41854 41855Reply: 41856@table @samp 41857@item OK 41858success 41859@item @w{} 41860not supported 41861@item E @var{NN} 41862for an error 41863@end table 41864 41865@item z1,@var{addr},@var{kind} 41866@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]} 41867@cindex @samp{z1} packet 41868@cindex @samp{Z1} packet 41869Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at 41870address @var{addr}. 41871 41872A hardware breakpoint is implemented using a mechanism that is not 41873dependent on being able to modify the target's memory. The 41874@var{kind}, @var{cond_list}, and @var{cmd_list} arguments have the 41875same meaning as in @samp{Z0} packets. 41876 41877@emph{Implementation note: A hardware breakpoint is not affected by code 41878movement.} 41879 41880Reply: 41881@table @samp 41882@item OK 41883success 41884@item @w{} 41885not supported 41886@item E @var{NN} 41887for an error 41888@end table 41889 41890@item z2,@var{addr},@var{kind} 41891@itemx Z2,@var{addr},@var{kind} 41892@cindex @samp{z2} packet 41893@cindex @samp{Z2} packet 41894Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}. 41895The number of bytes to watch is specified by @var{kind}. 41896 41897Reply: 41898@table @samp 41899@item OK 41900success 41901@item @w{} 41902not supported 41903@item E @var{NN} 41904for an error 41905@end table 41906 41907@item z3,@var{addr},@var{kind} 41908@itemx Z3,@var{addr},@var{kind} 41909@cindex @samp{z3} packet 41910@cindex @samp{Z3} packet 41911Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}. 41912The number of bytes to watch is specified by @var{kind}. 41913 41914Reply: 41915@table @samp 41916@item OK 41917success 41918@item @w{} 41919not supported 41920@item E @var{NN} 41921for an error 41922@end table 41923 41924@item z4,@var{addr},@var{kind} 41925@itemx Z4,@var{addr},@var{kind} 41926@cindex @samp{z4} packet 41927@cindex @samp{Z4} packet 41928Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}. 41929The number of bytes to watch is specified by @var{kind}. 41930 41931Reply: 41932@table @samp 41933@item OK 41934success 41935@item @w{} 41936not supported 41937@item E @var{NN} 41938for an error 41939@end table 41940 41941@end table 41942 41943@node Stop Reply Packets 41944@section Stop Reply Packets 41945@cindex stop reply packets 41946 41947The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont}, 41948@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can 41949receive any of the below as a reply. Except for @samp{?} 41950and @samp{vStopped}, that reply is only returned 41951when the target halts. In the below the exact meaning of @dfn{signal 41952number} is defined by the header @file{include/gdb/signals.h} in the 41953@value{GDBN} source code. 41954 41955In non-stop mode, the server will simply reply @samp{OK} to commands 41956such as @samp{vCont}; any stop will be the subject of a future 41957notification. @xref{Remote Non-Stop}. 41958 41959As in the description of request packets, we include spaces in the 41960reply templates for clarity; these are not part of the reply packet's 41961syntax. No @value{GDBN} stop reply packet uses spaces to separate its 41962components. 41963 41964@table @samp 41965 41966@item S @var{AA} 41967The program received signal number @var{AA} (a two-digit hexadecimal 41968number). This is equivalent to a @samp{T} response with no 41969@var{n}:@var{r} pairs. 41970 41971@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{} 41972@cindex @samp{T} packet reply 41973The program received signal number @var{AA} (a two-digit hexadecimal 41974number). This is equivalent to an @samp{S} response, except that the 41975@samp{@var{n}:@var{r}} pairs can carry values of important registers 41976and other information directly in the stop reply packet, reducing 41977round-trip latency. Single-step and breakpoint traps are reported 41978this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows: 41979 41980@itemize @bullet 41981@item 41982If @var{n} is a hexadecimal number, it is a register number, and the 41983corresponding @var{r} gives that register's value. The data @var{r} is a 41984series of bytes in target byte order, with each byte given by a 41985two-digit hex number. 41986 41987@item 41988If @var{n} is @samp{thread}, then @var{r} is the thread ID of 41989the stopped thread, as specified in @ref{thread-id syntax}. 41990 41991@item 41992If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of 41993the core on which the stop event was detected. 41994 41995@item 41996If @var{n} is a recognized @dfn{stop reason}, it describes a more 41997specific event that stopped the target. The currently defined stop 41998reasons are listed below. The @var{aa} should be @samp{05}, the trap 41999signal. At most one stop reason should be present. 42000 42001@item 42002Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair 42003and go on to the next; this allows us to extend the protocol in the 42004future. 42005@end itemize 42006 42007The currently defined stop reasons are: 42008 42009@table @samp 42010@item watch 42011@itemx rwatch 42012@itemx awatch 42013The packet indicates a watchpoint hit, and @var{r} is the data address, in 42014hex. 42015 42016@item syscall_entry 42017@itemx syscall_return 42018The packet indicates a syscall entry or return, and @var{r} is the 42019syscall number, in hex. 42020 42021@cindex shared library events, remote reply 42022@item library 42023The packet indicates that the loaded libraries have changed. 42024@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new 42025list of loaded libraries. The @var{r} part is ignored. 42026 42027@cindex replay log events, remote reply 42028@item replaylog 42029The packet indicates that the target cannot continue replaying 42030logged execution events, because it has reached the end (or the 42031beginning when executing backward) of the log. The value of @var{r} 42032will be either @samp{begin} or @samp{end}. @xref{Reverse Execution}, 42033for more information. 42034 42035@item swbreak 42036@anchor{swbreak stop reason} 42037The packet indicates a software breakpoint instruction was executed, 42038irrespective of whether it was @value{GDBN} that planted the 42039breakpoint or the breakpoint is hardcoded in the program. The @var{r} 42040part must be left empty. 42041 42042On some architectures, such as x86, at the architecture level, when a 42043breakpoint instruction executes the program counter points at the 42044breakpoint address plus an offset. On such targets, the stub is 42045responsible for adjusting the PC to point back at the breakpoint 42046address. 42047 42048This packet should not be sent by default; older @value{GDBN} versions 42049did not support it. @value{GDBN} requests it, by supplying an 42050appropriate @samp{qSupported} feature (@pxref{qSupported}). The 42051remote stub must also supply the appropriate @samp{qSupported} feature 42052indicating support. 42053 42054This packet is required for correct non-stop mode operation. 42055 42056@item hwbreak 42057The packet indicates the target stopped for a hardware breakpoint. 42058The @var{r} part must be left empty. 42059 42060The same remarks about @samp{qSupported} and non-stop mode above 42061apply. 42062 42063@cindex fork events, remote reply 42064@item fork 42065The packet indicates that @code{fork} was called, and @var{r} is the 42066thread ID of the new child process, as specified in @ref{thread-id 42067syntax}. This packet is only applicable to targets that support fork 42068events. 42069 42070This packet should not be sent by default; older @value{GDBN} versions 42071did not support it. @value{GDBN} requests it, by supplying an 42072appropriate @samp{qSupported} feature (@pxref{qSupported}). The 42073remote stub must also supply the appropriate @samp{qSupported} feature 42074indicating support. 42075 42076@cindex vfork events, remote reply 42077@item vfork 42078The packet indicates that @code{vfork} was called, and @var{r} is the 42079thread ID of the new child process, as specified in @ref{thread-id 42080syntax}. This packet is only applicable to targets that support vfork 42081events. 42082 42083This packet should not be sent by default; older @value{GDBN} versions 42084did not support it. @value{GDBN} requests it, by supplying an 42085appropriate @samp{qSupported} feature (@pxref{qSupported}). The 42086remote stub must also supply the appropriate @samp{qSupported} feature 42087indicating support. 42088 42089@cindex vforkdone events, remote reply 42090@item vforkdone 42091The packet indicates that a child process created by a vfork 42092has either called @code{exec} or terminated, so that the 42093address spaces of the parent and child process are no longer 42094shared. The @var{r} part is ignored. This packet is only 42095applicable to targets that support vforkdone events. 42096 42097This packet should not be sent by default; older @value{GDBN} versions 42098did not support it. @value{GDBN} requests it, by supplying an 42099appropriate @samp{qSupported} feature (@pxref{qSupported}). The 42100remote stub must also supply the appropriate @samp{qSupported} feature 42101indicating support. 42102 42103@cindex exec events, remote reply 42104@item exec 42105The packet indicates that @code{execve} was called, and @var{r} 42106is the absolute pathname of the file that was executed, in hex. 42107This packet is only applicable to targets that support exec events. 42108 42109This packet should not be sent by default; older @value{GDBN} versions 42110did not support it. @value{GDBN} requests it, by supplying an 42111appropriate @samp{qSupported} feature (@pxref{qSupported}). The 42112remote stub must also supply the appropriate @samp{qSupported} feature 42113indicating support. 42114 42115@cindex thread create event, remote reply 42116@anchor{thread create event} 42117@item create 42118The packet indicates that the thread was just created. The new thread 42119is stopped until @value{GDBN} sets it running with a resumption packet 42120(@pxref{vCont packet}). This packet should not be sent by default; 42121@value{GDBN} requests it with the @ref{QThreadEvents} packet. See 42122also the @samp{w} (@pxref{thread exit event}) remote reply below. The 42123@var{r} part is ignored. 42124 42125@end table 42126 42127@item W @var{AA} 42128@itemx W @var{AA} ; process:@var{pid} 42129The process exited, and @var{AA} is the exit status. This is only 42130applicable to certain targets. 42131 42132The second form of the response, including the process ID of the 42133exited process, can be used only when @value{GDBN} has reported 42134support for multiprocess protocol extensions; see @ref{multiprocess 42135extensions}. Both @var{AA} and @var{pid} are formatted as big-endian 42136hex strings. 42137 42138@item X @var{AA} 42139@itemx X @var{AA} ; process:@var{pid} 42140The process terminated with signal @var{AA}. 42141 42142The second form of the response, including the process ID of the 42143terminated process, can be used only when @value{GDBN} has reported 42144support for multiprocess protocol extensions; see @ref{multiprocess 42145extensions}. Both @var{AA} and @var{pid} are formatted as big-endian 42146hex strings. 42147 42148@anchor{thread exit event} 42149@cindex thread exit event, remote reply 42150@item w @var{AA} ; @var{tid} 42151 42152The thread exited, and @var{AA} is the exit status. This response 42153should not be sent by default; @value{GDBN} requests it with the 42154@ref{QThreadEvents} packet. See also @ref{thread create event} above. 42155@var{AA} is formatted as a big-endian hex string. 42156 42157@item N 42158There are no resumed threads left in the target. In other words, even 42159though the process is alive, the last resumed thread has exited. For 42160example, say the target process has two threads: thread 1 and thread 421612. The client leaves thread 1 stopped, and resumes thread 2, which 42162subsequently exits. At this point, even though the process is still 42163alive, and thus no @samp{W} stop reply is sent, no thread is actually 42164executing either. The @samp{N} stop reply thus informs the client 42165that it can stop waiting for stop replies. This packet should not be 42166sent by default; older @value{GDBN} versions did not support it. 42167@value{GDBN} requests it, by supplying an appropriate 42168@samp{qSupported} feature (@pxref{qSupported}). The remote stub must 42169also supply the appropriate @samp{qSupported} feature indicating 42170support. 42171 42172@item O @var{XX}@dots{} 42173@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be 42174written as the program's console output. This can happen at any time 42175while the program is running and the debugger should continue to wait 42176for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode. 42177 42178@item F @var{call-id},@var{parameter}@dots{} 42179@var{call-id} is the identifier which says which host system call should 42180be called. This is just the name of the function. Translation into the 42181correct system call is only applicable as it's defined in @value{GDBN}. 42182@xref{File-I/O Remote Protocol Extension}, for a list of implemented 42183system calls. 42184 42185@samp{@var{parameter}@dots{}} is a list of parameters as defined for 42186this very system call. 42187 42188The target replies with this packet when it expects @value{GDBN} to 42189call a host system call on behalf of the target. @value{GDBN} replies 42190with an appropriate @samp{F} packet and keeps up waiting for the next 42191reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S} 42192or @samp{s} action is expected to be continued. @xref{File-I/O Remote 42193Protocol Extension}, for more details. 42194 42195@end table 42196 42197@node General Query Packets 42198@section General Query Packets 42199@cindex remote query requests 42200 42201Packets starting with @samp{q} are @dfn{general query packets}; 42202packets starting with @samp{Q} are @dfn{general set packets}. General 42203query and set packets are a semi-unified form for retrieving and 42204sending information to and from the stub. 42205 42206The initial letter of a query or set packet is followed by a name 42207indicating what sort of thing the packet applies to. For example, 42208@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol 42209definitions with the stub. These packet names follow some 42210conventions: 42211 42212@itemize @bullet 42213@item 42214The name must not contain commas, colons or semicolons. 42215@item 42216Most @value{GDBN} query and set packets have a leading upper case 42217letter. 42218@item 42219The names of custom vendor packets should use a company prefix, in 42220lower case, followed by a period. For example, packets designed at 42221the Acme Corporation might begin with @samp{qacme.foo} (for querying 42222foos) or @samp{Qacme.bar} (for setting bars). 42223@end itemize 42224 42225The name of a query or set packet should be separated from any 42226parameters by a @samp{:}; the parameters themselves should be 42227separated by @samp{,} or @samp{;}. Stubs must be careful to match the 42228full packet name, and check for a separator or the end of the packet, 42229in case two packet names share a common prefix. New packets should not begin 42230with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL} 42231packets predate these conventions, and have arguments without any terminator 42232for the packet name; we suspect they are in widespread use in places that 42233are difficult to upgrade. The @samp{qC} packet has no arguments, but some 42234existing stubs (e.g.@: RedBoot) are known to not check for the end of the 42235packet.}. 42236 42237Like the descriptions of the other packets, each description here 42238has a template showing the packet's overall syntax, followed by an 42239explanation of the packet's meaning. We include spaces in some of the 42240templates for clarity; these are not part of the packet's syntax. No 42241@value{GDBN} packet uses spaces to separate its components. 42242 42243Here are the currently defined query and set packets: 42244 42245@table @samp 42246 42247@item QAgent:1 42248@itemx QAgent:0 42249Turn on or off the agent as a helper to perform some debugging operations 42250delegated from @value{GDBN} (@pxref{Control Agent}). 42251 42252@item QAllow:@var{op}:@var{val}@dots{} 42253@cindex @samp{QAllow} packet 42254Specify which operations @value{GDBN} expects to request of the 42255target, as a semicolon-separated list of operation name and value 42256pairs. Possible values for @var{op} include @samp{WriteReg}, 42257@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace}, 42258@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0, 42259indicating that @value{GDBN} will not request the operation, or 1, 42260indicating that it may. (The target can then use this to set up its 42261own internals optimally, for instance if the debugger never expects to 42262insert breakpoints, it may not need to install its own trap handler.) 42263 42264@item qC 42265@cindex current thread, remote request 42266@cindex @samp{qC} packet 42267Return the current thread ID. 42268 42269Reply: 42270@table @samp 42271@item QC @var{thread-id} 42272Where @var{thread-id} is a thread ID as documented in 42273@ref{thread-id syntax}. 42274@item @r{(anything else)} 42275Any other reply implies the old thread ID. 42276@end table 42277 42278@item qCRC:@var{addr},@var{length} 42279@cindex CRC of memory block, remote request 42280@cindex @samp{qCRC} packet 42281@anchor{qCRC packet} 42282Compute the CRC checksum of a block of memory using CRC-32 defined in 42283IEEE 802.3. The CRC is computed byte at a time, taking the most 42284significant bit of each byte first. The initial pattern code 42285@code{0xffffffff} is used to ensure leading zeros affect the CRC. 42286 42287@emph{Note:} This is the same CRC used in validating separate debug 42288files (@pxref{Separate Debug Files, , Debugging Information in Separate 42289Files}). However the algorithm is slightly different. When validating 42290separate debug files, the CRC is computed taking the @emph{least} 42291significant bit of each byte first, and the final result is inverted to 42292detect trailing zeros. 42293 42294Reply: 42295@table @samp 42296@item E @var{NN} 42297An error (such as memory fault) 42298@item C @var{crc32} 42299The specified memory region's checksum is @var{crc32}. 42300@end table 42301 42302@item QDisableRandomization:@var{value} 42303@cindex disable address space randomization, remote request 42304@cindex @samp{QDisableRandomization} packet 42305Some target operating systems will randomize the virtual address space 42306of the inferior process as a security feature, but provide a feature 42307to disable such randomization, e.g.@: to allow for a more deterministic 42308debugging experience. On such systems, this packet with a @var{value} 42309of 1 directs the target to disable address space randomization for 42310processes subsequently started via @samp{vRun} packets, while a packet 42311with a @var{value} of 0 tells the target to enable address space 42312randomization. 42313 42314This packet is only available in extended mode (@pxref{extended mode}). 42315 42316Reply: 42317@table @samp 42318@item OK 42319The request succeeded. 42320 42321@item E @var{nn} 42322An error occurred. The error number @var{nn} is given as hex digits. 42323 42324@item @w{} 42325An empty reply indicates that @samp{QDisableRandomization} is not supported 42326by the stub. 42327@end table 42328 42329This packet is not probed by default; the remote stub must request it, 42330by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 42331This should only be done on targets that actually support disabling 42332address space randomization. 42333 42334@item QStartupWithShell:@var{value} 42335@cindex startup with shell, remote request 42336@cindex @samp{QStartupWithShell} packet 42337On UNIX-like targets, it is possible to start the inferior using a 42338shell program. This is the default behavior on both @value{GDBN} and 42339@command{gdbserver} (@pxref{set startup-with-shell}). This packet is 42340used to inform @command{gdbserver} whether it should start the 42341inferior using a shell or not. 42342 42343If @var{value} is @samp{0}, @command{gdbserver} will not use a shell 42344to start the inferior. If @var{value} is @samp{1}, 42345@command{gdbserver} will use a shell to start the inferior. All other 42346values are considered an error. 42347 42348This packet is only available in extended mode (@pxref{extended 42349mode}). 42350 42351Reply: 42352@table @samp 42353@item OK 42354The request succeeded. 42355 42356@item E @var{nn} 42357An error occurred. The error number @var{nn} is given as hex digits. 42358@end table 42359 42360This packet is not probed by default; the remote stub must request it, 42361by supplying an appropriate @samp{qSupported} response 42362(@pxref{qSupported}). This should only be done on targets that 42363actually support starting the inferior using a shell. 42364 42365Use of this packet is controlled by the @code{set startup-with-shell} 42366command; @pxref{set startup-with-shell}. 42367 42368@item QEnvironmentHexEncoded:@var{hex-value} 42369@anchor{QEnvironmentHexEncoded} 42370@cindex set environment variable, remote request 42371@cindex @samp{QEnvironmentHexEncoded} packet 42372On UNIX-like targets, it is possible to set environment variables that 42373will be passed to the inferior during the startup process. This 42374packet is used to inform @command{gdbserver} of an environment 42375variable that has been defined by the user on @value{GDBN} (@pxref{set 42376environment}). 42377 42378The packet is composed by @var{hex-value}, an hex encoded 42379representation of the @var{name=value} format representing an 42380environment variable. The name of the environment variable is 42381represented by @var{name}, and the value to be assigned to the 42382environment variable is represented by @var{value}. If the variable 42383has no value (i.e., the value is @code{null}), then @var{value} will 42384not be present. 42385 42386This packet is only available in extended mode (@pxref{extended 42387mode}). 42388 42389Reply: 42390@table @samp 42391@item OK 42392The request succeeded. 42393@end table 42394 42395This packet is not probed by default; the remote stub must request it, 42396by supplying an appropriate @samp{qSupported} response 42397(@pxref{qSupported}). This should only be done on targets that 42398actually support passing environment variables to the starting 42399inferior. 42400 42401This packet is related to the @code{set environment} command; 42402@pxref{set environment}. 42403 42404@item QEnvironmentUnset:@var{hex-value} 42405@anchor{QEnvironmentUnset} 42406@cindex unset environment variable, remote request 42407@cindex @samp{QEnvironmentUnset} packet 42408On UNIX-like targets, it is possible to unset environment variables 42409before starting the inferior in the remote target. This packet is 42410used to inform @command{gdbserver} of an environment variable that has 42411been unset by the user on @value{GDBN} (@pxref{unset environment}). 42412 42413The packet is composed by @var{hex-value}, an hex encoded 42414representation of the name of the environment variable to be unset. 42415 42416This packet is only available in extended mode (@pxref{extended 42417mode}). 42418 42419Reply: 42420@table @samp 42421@item OK 42422The request succeeded. 42423@end table 42424 42425This packet is not probed by default; the remote stub must request it, 42426by supplying an appropriate @samp{qSupported} response 42427(@pxref{qSupported}). This should only be done on targets that 42428actually support passing environment variables to the starting 42429inferior. 42430 42431This packet is related to the @code{unset environment} command; 42432@pxref{unset environment}. 42433 42434@item QEnvironmentReset 42435@anchor{QEnvironmentReset} 42436@cindex reset environment, remote request 42437@cindex @samp{QEnvironmentReset} packet 42438On UNIX-like targets, this packet is used to reset the state of 42439environment variables in the remote target before starting the 42440inferior. In this context, reset means unsetting all environment 42441variables that were previously set by the user (i.e., were not 42442initially present in the environment). It is sent to 42443@command{gdbserver} before the @samp{QEnvironmentHexEncoded} 42444(@pxref{QEnvironmentHexEncoded}) and the @samp{QEnvironmentUnset} 42445(@pxref{QEnvironmentUnset}) packets. 42446 42447This packet is only available in extended mode (@pxref{extended 42448mode}). 42449 42450Reply: 42451@table @samp 42452@item OK 42453The request succeeded. 42454@end table 42455 42456This packet is not probed by default; the remote stub must request it, 42457by supplying an appropriate @samp{qSupported} response 42458(@pxref{qSupported}). This should only be done on targets that 42459actually support passing environment variables to the starting 42460inferior. 42461 42462@item QSetWorkingDir:@r{[}@var{directory}@r{]} 42463@anchor{QSetWorkingDir packet} 42464@cindex set working directory, remote request 42465@cindex @samp{QSetWorkingDir} packet 42466This packet is used to inform the remote server of the intended 42467current working directory for programs that are going to be executed. 42468 42469The packet is composed by @var{directory}, an hex encoded 42470representation of the directory that the remote inferior will use as 42471its current working directory. If @var{directory} is an empty string, 42472the remote server should reset the inferior's current working 42473directory to its original, empty value. 42474 42475This packet is only available in extended mode (@pxref{extended 42476mode}). 42477 42478Reply: 42479@table @samp 42480@item OK 42481The request succeeded. 42482@end table 42483 42484@item qfThreadInfo 42485@itemx qsThreadInfo 42486@cindex list active threads, remote request 42487@cindex @samp{qfThreadInfo} packet 42488@cindex @samp{qsThreadInfo} packet 42489Obtain a list of all active thread IDs from the target (OS). Since there 42490may be too many active threads to fit into one reply packet, this query 42491works iteratively: it may require more than one query/reply sequence to 42492obtain the entire list of threads. The first query of the sequence will 42493be the @samp{qfThreadInfo} query; subsequent queries in the 42494sequence will be the @samp{qsThreadInfo} query. 42495 42496NOTE: This packet replaces the @samp{qL} query (see below). 42497 42498Reply: 42499@table @samp 42500@item m @var{thread-id} 42501A single thread ID 42502@item m @var{thread-id},@var{thread-id}@dots{} 42503a comma-separated list of thread IDs 42504@item l 42505(lower case letter @samp{L}) denotes end of list. 42506@end table 42507 42508In response to each query, the target will reply with a list of one or 42509more thread IDs, separated by commas. 42510@value{GDBN} will respond to each reply with a request for more thread 42511ids (using the @samp{qs} form of the query), until the target responds 42512with @samp{l} (lower-case ell, for @dfn{last}). 42513Refer to @ref{thread-id syntax}, for the format of the @var{thread-id} 42514fields. 42515 42516@emph{Note: @value{GDBN} will send the @code{qfThreadInfo} query during the 42517initial connection with the remote target, and the very first thread ID 42518mentioned in the reply will be stopped by @value{GDBN} in a subsequent 42519message. Therefore, the stub should ensure that the first thread ID in 42520the @code{qfThreadInfo} reply is suitable for being stopped by @value{GDBN}.} 42521 42522@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm} 42523@cindex get thread-local storage address, remote request 42524@cindex @samp{qGetTLSAddr} packet 42525Fetch the address associated with thread local storage specified 42526by @var{thread-id}, @var{offset}, and @var{lm}. 42527 42528@var{thread-id} is the thread ID associated with the 42529thread for which to fetch the TLS address. @xref{thread-id syntax}. 42530 42531@var{offset} is the (big endian, hex encoded) offset associated with the 42532thread local variable. (This offset is obtained from the debug 42533information associated with the variable.) 42534 42535@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the 42536load module associated with the thread local storage. For example, 42537a @sc{gnu}/Linux system will pass the link map address of the shared 42538object associated with the thread local storage under consideration. 42539Other operating environments may choose to represent the load module 42540differently, so the precise meaning of this parameter will vary. 42541 42542Reply: 42543@table @samp 42544@item @var{XX}@dots{} 42545Hex encoded (big endian) bytes representing the address of the thread 42546local storage requested. 42547 42548@item E @var{nn} 42549An error occurred. The error number @var{nn} is given as hex digits. 42550 42551@item @w{} 42552An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub. 42553@end table 42554 42555@item qGetTIBAddr:@var{thread-id} 42556@cindex get thread information block address 42557@cindex @samp{qGetTIBAddr} packet 42558Fetch address of the Windows OS specific Thread Information Block. 42559 42560@var{thread-id} is the thread ID associated with the thread. 42561 42562Reply: 42563@table @samp 42564@item @var{XX}@dots{} 42565Hex encoded (big endian) bytes representing the linear address of the 42566thread information block. 42567 42568@item E @var{nn} 42569An error occured. This means that either the thread was not found, or the 42570address could not be retrieved. 42571 42572@item @w{} 42573An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub. 42574@end table 42575 42576@item qL @var{startflag} @var{threadcount} @var{nextthread} 42577Obtain thread information from RTOS. Where: @var{startflag} (one hex 42578digit) is one to indicate the first query and zero to indicate a 42579subsequent query; @var{threadcount} (two hex digits) is the maximum 42580number of threads the response packet can contain; and @var{nextthread} 42581(eight hex digits), for subsequent queries (@var{startflag} is zero), is 42582returned in the response as @var{argthread}. 42583 42584Don't use this packet; use the @samp{qfThreadInfo} query instead (see above). 42585 42586Reply: 42587@table @samp 42588@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{} 42589Where: @var{count} (two hex digits) is the number of threads being 42590returned; @var{done} (one hex digit) is zero to indicate more threads 42591and one indicates no further threads; @var{argthreadid} (eight hex 42592digits) is @var{nextthread} from the request packet; @var{thread}@dots{} 42593is a sequence of thread IDs, @var{threadid} (eight hex 42594digits), from the target. See @code{remote.c:parse_threadlist_response()}. 42595@end table 42596 42597@item qMemTags:@var{start address},@var{length}:@var{type} 42598@anchor{qMemTags} 42599@cindex fetch memory tags 42600@cindex @samp{qMemTags} packet 42601Fetch memory tags of type @var{type} from the address range 42602@w{@r{[}@var{start address}, @var{start address} + @var{length}@r{)}}. The 42603target is responsible for calculating how many tags will be returned, as this 42604is architecture-specific. 42605 42606@var{start address} is the starting address of the memory range. 42607 42608@var{length} is the length, in bytes, of the memory range. 42609 42610@var{type} is the type of tag the request wants to fetch. The type is a signed 42611integer. 42612 42613Reply: 42614@table @samp 42615@item @var{mxx}@dots{} 42616Hex encoded sequence of uninterpreted bytes, @var{xx}@dots{}, representing the 42617tags found in the requested memory range. 42618 42619@item E @var{nn} 42620An error occured. This means that fetching of memory tags failed for some 42621reason. 42622 42623@item @w{} 42624An empty reply indicates that @samp{qMemTags} is not supported by the stub, 42625although this should not happen given @value{GDBN} will only send this packet 42626if the stub has advertised support for memory tagging via @samp{qSupported}. 42627@end table 42628 42629@item QMemTags:@var{start address},@var{length}:@var{type}:@var{tag bytes} 42630@anchor{QMemTags} 42631@cindex store memory tags 42632@cindex @samp{QMemTags} packet 42633Store memory tags of type @var{type} to the address range 42634@w{@r{[}@var{start address}, @var{start address} + @var{length}@r{)}}. The 42635target is responsible for interpreting the type, the tag bytes and modifying 42636the memory tag granules accordingly, given this is architecture-specific. 42637 42638The interpretation of how many tags (@var{nt}) should be written to how many 42639memory tag granules (@var{ng}) is also architecture-specific. The behavior is 42640implementation-specific, but the following is suggested. 42641 42642If the number of memory tags, @var{nt}, is greater than or equal to the 42643number of memory tag granules, @var{ng}, only @var{ng} tags will be 42644stored. 42645 42646If @var{nt} is less than @var{ng}, the behavior is that of a fill operation, 42647and the tag bytes will be used as a pattern that will get repeated until 42648@var{ng} tags are stored. 42649 42650@var{start address} is the starting address of the memory range. The address 42651does not have any restriction on alignment or size. 42652 42653@var{length} is the length, in bytes, of the memory range. 42654 42655@var{type} is the type of tag the request wants to fetch. The type is a signed 42656integer. 42657 42658@var{tag bytes} is a sequence of hex encoded uninterpreted bytes which will be 42659interpreted by the target. Each pair of hex digits is interpreted as a 42660single byte. 42661 42662Reply: 42663@table @samp 42664@item OK 42665The request was successful and the memory tag granules were modified 42666accordingly. 42667 42668@item E @var{nn} 42669An error occured. This means that modifying the memory tag granules failed 42670for some reason. 42671 42672@item @w{} 42673An empty reply indicates that @samp{QMemTags} is not supported by the stub, 42674although this should not happen given @value{GDBN} will only send this packet 42675if the stub has advertised support for memory tagging via @samp{qSupported}. 42676@end table 42677 42678@item qOffsets 42679@cindex section offsets, remote request 42680@cindex @samp{qOffsets} packet 42681Get section offsets that the target used when relocating the downloaded 42682image. 42683 42684Reply: 42685@table @samp 42686@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]} 42687Relocate the @code{Text} section by @var{xxx} from its original address. 42688Relocate the @code{Data} section by @var{yyy} from its original address. 42689If the object file format provides segment information (e.g.@: @sc{elf} 42690@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire 42691segments by the supplied offsets. 42692 42693@emph{Note: while a @code{Bss} offset may be included in the response, 42694@value{GDBN} ignores this and instead applies the @code{Data} offset 42695to the @code{Bss} section.} 42696 42697@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]} 42698Relocate the first segment of the object file, which conventionally 42699contains program code, to a starting address of @var{xxx}. If 42700@samp{DataSeg} is specified, relocate the second segment, which 42701conventionally contains modifiable data, to a starting address of 42702@var{yyy}. @value{GDBN} will report an error if the object file 42703does not contain segment information, or does not contain at least 42704as many segments as mentioned in the reply. Extra segments are 42705kept at fixed offsets relative to the last relocated segment. 42706@end table 42707 42708@item qP @var{mode} @var{thread-id} 42709@cindex thread information, remote request 42710@cindex @samp{qP} packet 42711Returns information on @var{thread-id}. Where: @var{mode} is a hex 42712encoded 32 bit mode; @var{thread-id} is a thread ID 42713(@pxref{thread-id syntax}). 42714 42715Don't use this packet; use the @samp{qThreadExtraInfo} query instead 42716(see below). 42717 42718Reply: see @code{remote.c:remote_unpack_thread_info_response()}. 42719 42720@item QNonStop:1 42721@itemx QNonStop:0 42722@cindex non-stop mode, remote request 42723@cindex @samp{QNonStop} packet 42724@anchor{QNonStop} 42725Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode. 42726@xref{Remote Non-Stop}, for more information. 42727 42728Reply: 42729@table @samp 42730@item OK 42731The request succeeded. 42732 42733@item E @var{nn} 42734An error occurred. The error number @var{nn} is given as hex digits. 42735 42736@item @w{} 42737An empty reply indicates that @samp{QNonStop} is not supported by 42738the stub. 42739@end table 42740 42741This packet is not probed by default; the remote stub must request it, 42742by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 42743Use of this packet is controlled by the @code{set non-stop} command; 42744@pxref{Non-Stop Mode}. 42745 42746@item QCatchSyscalls:1 @r{[};@var{sysno}@r{]}@dots{} 42747@itemx QCatchSyscalls:0 42748@cindex catch syscalls from inferior, remote request 42749@cindex @samp{QCatchSyscalls} packet 42750@anchor{QCatchSyscalls} 42751Enable (@samp{QCatchSyscalls:1}) or disable (@samp{QCatchSyscalls:0}) 42752catching syscalls from the inferior process. 42753 42754For @samp{QCatchSyscalls:1}, each listed syscall @var{sysno} (encoded 42755in hex) should be reported to @value{GDBN}. If no syscall @var{sysno} 42756is listed, every system call should be reported. 42757 42758Note that if a syscall not in the list is reported, @value{GDBN} will 42759still filter the event according to its own list from all corresponding 42760@code{catch syscall} commands. However, it is more efficient to only 42761report the requested syscalls. 42762 42763Multiple @samp{QCatchSyscalls:1} packets do not combine; any earlier 42764@samp{QCatchSyscalls:1} list is completely replaced by the new list. 42765 42766If the inferior process execs, the state of @samp{QCatchSyscalls} is 42767kept for the new process too. On targets where exec may affect syscall 42768numbers, for example with exec between 32 and 64-bit processes, the 42769client should send a new packet with the new syscall list. 42770 42771Reply: 42772@table @samp 42773@item OK 42774The request succeeded. 42775 42776@item E @var{nn} 42777An error occurred. @var{nn} are hex digits. 42778 42779@item @w{} 42780An empty reply indicates that @samp{QCatchSyscalls} is not supported by 42781the stub. 42782@end table 42783 42784Use of this packet is controlled by the @code{set remote catch-syscalls} 42785command (@pxref{Remote Configuration, set remote catch-syscalls}). 42786This packet is not probed by default; the remote stub must request it, 42787by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 42788 42789@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 42790@cindex pass signals to inferior, remote request 42791@cindex @samp{QPassSignals} packet 42792@anchor{QPassSignals} 42793Each listed @var{signal} should be passed directly to the inferior process. 42794Signals are numbered identically to continue packets and stop replies 42795(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 42796strictly greater than the previous item. These signals do not need to stop 42797the inferior, or be reported to @value{GDBN}. All other signals should be 42798reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not 42799combine; any earlier @samp{QPassSignals} list is completely replaced by the 42800new list. This packet improves performance when using @samp{handle 42801@var{signal} nostop noprint pass}. 42802 42803Reply: 42804@table @samp 42805@item OK 42806The request succeeded. 42807 42808@item E @var{nn} 42809An error occurred. The error number @var{nn} is given as hex digits. 42810 42811@item @w{} 42812An empty reply indicates that @samp{QPassSignals} is not supported by 42813the stub. 42814@end table 42815 42816Use of this packet is controlled by the @code{set remote pass-signals} 42817command (@pxref{Remote Configuration, set remote pass-signals}). 42818This packet is not probed by default; the remote stub must request it, 42819by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 42820 42821@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{} 42822@cindex signals the inferior may see, remote request 42823@cindex @samp{QProgramSignals} packet 42824@anchor{QProgramSignals} 42825Each listed @var{signal} may be delivered to the inferior process. 42826Others should be silently discarded. 42827 42828In some cases, the remote stub may need to decide whether to deliver a 42829signal to the program or not without @value{GDBN} involvement. One 42830example of that is while detaching --- the program's threads may have 42831stopped for signals that haven't yet had a chance of being reported to 42832@value{GDBN}, and so the remote stub can use the signal list specified 42833by this packet to know whether to deliver or ignore those pending 42834signals. 42835 42836This does not influence whether to deliver a signal as requested by a 42837resumption packet (@pxref{vCont packet}). 42838 42839Signals are numbered identically to continue packets and stop replies 42840(@pxref{Stop Reply Packets}). Each @var{signal} list item should be 42841strictly greater than the previous item. Multiple 42842@samp{QProgramSignals} packets do not combine; any earlier 42843@samp{QProgramSignals} list is completely replaced by the new list. 42844 42845Reply: 42846@table @samp 42847@item OK 42848The request succeeded. 42849 42850@item E @var{nn} 42851An error occurred. The error number @var{nn} is given as hex digits. 42852 42853@item @w{} 42854An empty reply indicates that @samp{QProgramSignals} is not supported 42855by the stub. 42856@end table 42857 42858Use of this packet is controlled by the @code{set remote program-signals} 42859command (@pxref{Remote Configuration, set remote program-signals}). 42860This packet is not probed by default; the remote stub must request it, 42861by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 42862 42863@anchor{QThreadEvents} 42864@item QThreadEvents:1 42865@itemx QThreadEvents:0 42866@cindex thread create/exit events, remote request 42867@cindex @samp{QThreadEvents} packet 42868 42869Enable (@samp{QThreadEvents:1}) or disable (@samp{QThreadEvents:0}) 42870reporting of thread create and exit events. @xref{thread create 42871event}, for the reply specifications. For example, this is used in 42872non-stop mode when @value{GDBN} stops a set of threads and 42873synchronously waits for the their corresponding stop replies. Without 42874exit events, if one of the threads exits, @value{GDBN} would hang 42875forever not knowing that it should no longer expect a stop for that 42876same thread. @value{GDBN} does not enable this feature unless the 42877stub reports that it supports it by including @samp{QThreadEvents+} in 42878its @samp{qSupported} reply. 42879 42880Reply: 42881@table @samp 42882@item OK 42883The request succeeded. 42884 42885@item E @var{nn} 42886An error occurred. The error number @var{nn} is given as hex digits. 42887 42888@item @w{} 42889An empty reply indicates that @samp{QThreadEvents} is not supported by 42890the stub. 42891@end table 42892 42893Use of this packet is controlled by the @code{set remote thread-events} 42894command (@pxref{Remote Configuration, set remote thread-events}). 42895 42896@item qRcmd,@var{command} 42897@cindex execute remote command, remote request 42898@cindex @samp{qRcmd} packet 42899@var{command} (hex encoded) is passed to the local interpreter for 42900execution. Invalid commands should be reported using the output 42901string. Before the final result packet, the target may also respond 42902with a number of intermediate @samp{O@var{output}} console output 42903packets. @emph{Implementors should note that providing access to a 42904stubs's interpreter may have security implications}. 42905 42906Reply: 42907@table @samp 42908@item OK 42909A command response with no output. 42910@item @var{OUTPUT} 42911A command response with the hex encoded output string @var{OUTPUT}. 42912@item E @var{NN} 42913Indicate a badly formed request. The error number @var{NN} is given as 42914hex digits. 42915@item @w{} 42916An empty reply indicates that @samp{qRcmd} is not recognized. 42917@end table 42918 42919(Note that the @code{qRcmd} packet's name is separated from the 42920command by a @samp{,}, not a @samp{:}, contrary to the naming 42921conventions above. Please don't use this packet as a model for new 42922packets.) 42923 42924@item qSearch:memory:@var{address};@var{length};@var{search-pattern} 42925@cindex searching memory, in remote debugging 42926@ifnotinfo 42927@cindex @samp{qSearch:memory} packet 42928@end ifnotinfo 42929@cindex @samp{qSearch memory} packet 42930@anchor{qSearch memory} 42931Search @var{length} bytes at @var{address} for @var{search-pattern}. 42932Both @var{address} and @var{length} are encoded in hex; 42933@var{search-pattern} is a sequence of bytes, also hex encoded. 42934 42935Reply: 42936@table @samp 42937@item 0 42938The pattern was not found. 42939@item 1,address 42940The pattern was found at @var{address}. 42941@item E @var{NN} 42942A badly formed request or an error was encountered while searching memory. 42943@item @w{} 42944An empty reply indicates that @samp{qSearch:memory} is not recognized. 42945@end table 42946 42947@item QStartNoAckMode 42948@cindex @samp{QStartNoAckMode} packet 42949@anchor{QStartNoAckMode} 42950Request that the remote stub disable the normal @samp{+}/@samp{-} 42951protocol acknowledgments (@pxref{Packet Acknowledgment}). 42952 42953Reply: 42954@table @samp 42955@item OK 42956The stub has switched to no-acknowledgment mode. 42957@value{GDBN} acknowledges this response, 42958but neither the stub nor @value{GDBN} shall send or expect further 42959@samp{+}/@samp{-} acknowledgments in the current connection. 42960@item @w{} 42961An empty reply indicates that the stub does not support no-acknowledgment mode. 42962@end table 42963 42964@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]} 42965@cindex supported packets, remote query 42966@cindex features of the remote protocol 42967@cindex @samp{qSupported} packet 42968@anchor{qSupported} 42969Tell the remote stub about features supported by @value{GDBN}, and 42970query the stub for features it supports. This packet allows 42971@value{GDBN} and the remote stub to take advantage of each others' 42972features. @samp{qSupported} also consolidates multiple feature probes 42973at startup, to improve @value{GDBN} performance---a single larger 42974packet performs better than multiple smaller probe packets on 42975high-latency links. Some features may enable behavior which must not 42976be on by default, e.g.@: because it would confuse older clients or 42977stubs. Other features may describe packets which could be 42978automatically probed for, but are not. These features must be 42979reported before @value{GDBN} will use them. This ``default 42980unsupported'' behavior is not appropriate for all packets, but it 42981helps to keep the initial connection time under control with new 42982versions of @value{GDBN} which support increasing numbers of packets. 42983 42984Reply: 42985@table @samp 42986@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{} 42987The stub supports or does not support each returned @var{stubfeature}, 42988depending on the form of each @var{stubfeature} (see below for the 42989possible forms). 42990@item @w{} 42991An empty reply indicates that @samp{qSupported} is not recognized, 42992or that no features needed to be reported to @value{GDBN}. 42993@end table 42994 42995The allowed forms for each feature (either a @var{gdbfeature} in the 42996@samp{qSupported} packet, or a @var{stubfeature} in the response) 42997are: 42998 42999@table @samp 43000@item @var{name}=@var{value} 43001The remote protocol feature @var{name} is supported, and associated 43002with the specified @var{value}. The format of @var{value} depends 43003on the feature, but it must not include a semicolon. 43004@item @var{name}+ 43005The remote protocol feature @var{name} is supported, and does not 43006need an associated value. 43007@item @var{name}- 43008The remote protocol feature @var{name} is not supported. 43009@item @var{name}? 43010The remote protocol feature @var{name} may be supported, and 43011@value{GDBN} should auto-detect support in some other way when it is 43012needed. This form will not be used for @var{gdbfeature} notifications, 43013but may be used for @var{stubfeature} responses. 43014@end table 43015 43016Whenever the stub receives a @samp{qSupported} request, the 43017supplied set of @value{GDBN} features should override any previous 43018request. This allows @value{GDBN} to put the stub in a known 43019state, even if the stub had previously been communicating with 43020a different version of @value{GDBN}. 43021 43022The following values of @var{gdbfeature} (for the packet sent by @value{GDBN}) 43023are defined: 43024 43025@table @samp 43026@item multiprocess 43027This feature indicates whether @value{GDBN} supports multiprocess 43028extensions to the remote protocol. @value{GDBN} does not use such 43029extensions unless the stub also reports that it supports them by 43030including @samp{multiprocess+} in its @samp{qSupported} reply. 43031@xref{multiprocess extensions}, for details. 43032 43033@item xmlRegisters 43034This feature indicates that @value{GDBN} supports the XML target 43035description. If the stub sees @samp{xmlRegisters=} with target 43036specific strings separated by a comma, it will report register 43037description. 43038 43039@item qRelocInsn 43040This feature indicates whether @value{GDBN} supports the 43041@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate 43042instruction reply packet}). 43043 43044@item swbreak 43045This feature indicates whether @value{GDBN} supports the swbreak stop 43046reason in stop replies. @xref{swbreak stop reason}, for details. 43047 43048@item hwbreak 43049This feature indicates whether @value{GDBN} supports the hwbreak stop 43050reason in stop replies. @xref{swbreak stop reason}, for details. 43051 43052@item fork-events 43053This feature indicates whether @value{GDBN} supports fork event 43054extensions to the remote protocol. @value{GDBN} does not use such 43055extensions unless the stub also reports that it supports them by 43056including @samp{fork-events+} in its @samp{qSupported} reply. 43057 43058@item vfork-events 43059This feature indicates whether @value{GDBN} supports vfork event 43060extensions to the remote protocol. @value{GDBN} does not use such 43061extensions unless the stub also reports that it supports them by 43062including @samp{vfork-events+} in its @samp{qSupported} reply. 43063 43064@item exec-events 43065This feature indicates whether @value{GDBN} supports exec event 43066extensions to the remote protocol. @value{GDBN} does not use such 43067extensions unless the stub also reports that it supports them by 43068including @samp{exec-events+} in its @samp{qSupported} reply. 43069 43070@item vContSupported 43071This feature indicates whether @value{GDBN} wants to know the 43072supported actions in the reply to @samp{vCont?} packet. 43073@end table 43074 43075Stubs should ignore any unknown values for 43076@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported} 43077packet supports receiving packets of unlimited length (earlier 43078versions of @value{GDBN} may reject overly long responses). Additional values 43079for @var{gdbfeature} may be defined in the future to let the stub take 43080advantage of new features in @value{GDBN}, e.g.@: incompatible 43081improvements in the remote protocol---the @samp{multiprocess} feature is 43082an example of such a feature. The stub's reply should be independent 43083of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN} 43084describes all the features it supports, and then the stub replies with 43085all the features it supports. 43086 43087Similarly, @value{GDBN} will silently ignore unrecognized stub feature 43088responses, as long as each response uses one of the standard forms. 43089 43090Some features are flags. A stub which supports a flag feature 43091should respond with a @samp{+} form response. Other features 43092require values, and the stub should respond with an @samp{=} 43093form response. 43094 43095Each feature has a default value, which @value{GDBN} will use if 43096@samp{qSupported} is not available or if the feature is not mentioned 43097in the @samp{qSupported} response. The default values are fixed; a 43098stub is free to omit any feature responses that match the defaults. 43099 43100Not all features can be probed, but for those which can, the probing 43101mechanism is useful: in some cases, a stub's internal 43102architecture may not allow the protocol layer to know some information 43103about the underlying target in advance. This is especially common in 43104stubs which may be configured for multiple targets. 43105 43106These are the currently defined stub features and their properties: 43107 43108@multitable @columnfractions 0.35 0.2 0.12 0.2 43109@c NOTE: The first row should be @headitem, but we do not yet require 43110@c a new enough version of Texinfo (4.7) to use @headitem. 43111@item Feature Name 43112@tab Value Required 43113@tab Default 43114@tab Probe Allowed 43115 43116@item @samp{PacketSize} 43117@tab Yes 43118@tab @samp{-} 43119@tab No 43120 43121@item @samp{qXfer:auxv:read} 43122@tab No 43123@tab @samp{-} 43124@tab Yes 43125 43126@item @samp{qXfer:btrace:read} 43127@tab No 43128@tab @samp{-} 43129@tab Yes 43130 43131@item @samp{qXfer:btrace-conf:read} 43132@tab No 43133@tab @samp{-} 43134@tab Yes 43135 43136@item @samp{qXfer:exec-file:read} 43137@tab No 43138@tab @samp{-} 43139@tab Yes 43140 43141@item @samp{qXfer:features:read} 43142@tab No 43143@tab @samp{-} 43144@tab Yes 43145 43146@item @samp{qXfer:libraries:read} 43147@tab No 43148@tab @samp{-} 43149@tab Yes 43150 43151@item @samp{qXfer:libraries-svr4:read} 43152@tab No 43153@tab @samp{-} 43154@tab Yes 43155 43156@item @samp{augmented-libraries-svr4-read} 43157@tab No 43158@tab @samp{-} 43159@tab No 43160 43161@item @samp{qXfer:memory-map:read} 43162@tab No 43163@tab @samp{-} 43164@tab Yes 43165 43166@item @samp{qXfer:sdata:read} 43167@tab No 43168@tab @samp{-} 43169@tab Yes 43170 43171@item @samp{qXfer:siginfo:read} 43172@tab No 43173@tab @samp{-} 43174@tab Yes 43175 43176@item @samp{qXfer:siginfo:write} 43177@tab No 43178@tab @samp{-} 43179@tab Yes 43180 43181@item @samp{qXfer:threads:read} 43182@tab No 43183@tab @samp{-} 43184@tab Yes 43185 43186@item @samp{qXfer:traceframe-info:read} 43187@tab No 43188@tab @samp{-} 43189@tab Yes 43190 43191@item @samp{qXfer:uib:read} 43192@tab No 43193@tab @samp{-} 43194@tab Yes 43195 43196@item @samp{qXfer:fdpic:read} 43197@tab No 43198@tab @samp{-} 43199@tab Yes 43200 43201@item @samp{Qbtrace:off} 43202@tab Yes 43203@tab @samp{-} 43204@tab Yes 43205 43206@item @samp{Qbtrace:bts} 43207@tab Yes 43208@tab @samp{-} 43209@tab Yes 43210 43211@item @samp{Qbtrace:pt} 43212@tab Yes 43213@tab @samp{-} 43214@tab Yes 43215 43216@item @samp{Qbtrace-conf:bts:size} 43217@tab Yes 43218@tab @samp{-} 43219@tab Yes 43220 43221@item @samp{Qbtrace-conf:pt:size} 43222@tab Yes 43223@tab @samp{-} 43224@tab Yes 43225 43226@item @samp{QNonStop} 43227@tab No 43228@tab @samp{-} 43229@tab Yes 43230 43231@item @samp{QCatchSyscalls} 43232@tab No 43233@tab @samp{-} 43234@tab Yes 43235 43236@item @samp{QPassSignals} 43237@tab No 43238@tab @samp{-} 43239@tab Yes 43240 43241@item @samp{QStartNoAckMode} 43242@tab No 43243@tab @samp{-} 43244@tab Yes 43245 43246@item @samp{multiprocess} 43247@tab No 43248@tab @samp{-} 43249@tab No 43250 43251@item @samp{ConditionalBreakpoints} 43252@tab No 43253@tab @samp{-} 43254@tab No 43255 43256@item @samp{ConditionalTracepoints} 43257@tab No 43258@tab @samp{-} 43259@tab No 43260 43261@item @samp{ReverseContinue} 43262@tab No 43263@tab @samp{-} 43264@tab No 43265 43266@item @samp{ReverseStep} 43267@tab No 43268@tab @samp{-} 43269@tab No 43270 43271@item @samp{TracepointSource} 43272@tab No 43273@tab @samp{-} 43274@tab No 43275 43276@item @samp{QAgent} 43277@tab No 43278@tab @samp{-} 43279@tab No 43280 43281@item @samp{QAllow} 43282@tab No 43283@tab @samp{-} 43284@tab No 43285 43286@item @samp{QDisableRandomization} 43287@tab No 43288@tab @samp{-} 43289@tab No 43290 43291@item @samp{EnableDisableTracepoints} 43292@tab No 43293@tab @samp{-} 43294@tab No 43295 43296@item @samp{QTBuffer:size} 43297@tab No 43298@tab @samp{-} 43299@tab No 43300 43301@item @samp{tracenz} 43302@tab No 43303@tab @samp{-} 43304@tab No 43305 43306@item @samp{BreakpointCommands} 43307@tab No 43308@tab @samp{-} 43309@tab No 43310 43311@item @samp{swbreak} 43312@tab No 43313@tab @samp{-} 43314@tab No 43315 43316@item @samp{hwbreak} 43317@tab No 43318@tab @samp{-} 43319@tab No 43320 43321@item @samp{fork-events} 43322@tab No 43323@tab @samp{-} 43324@tab No 43325 43326@item @samp{vfork-events} 43327@tab No 43328@tab @samp{-} 43329@tab No 43330 43331@item @samp{exec-events} 43332@tab No 43333@tab @samp{-} 43334@tab No 43335 43336@item @samp{QThreadEvents} 43337@tab No 43338@tab @samp{-} 43339@tab No 43340 43341@item @samp{no-resumed} 43342@tab No 43343@tab @samp{-} 43344@tab No 43345 43346@item @samp{memory-tagging} 43347@tab No 43348@tab @samp{-} 43349@tab No 43350 43351@end multitable 43352 43353These are the currently defined stub features, in more detail: 43354 43355@table @samp 43356@cindex packet size, remote protocol 43357@item PacketSize=@var{bytes} 43358The remote stub can accept packets up to at least @var{bytes} in 43359length. @value{GDBN} will send packets up to this size for bulk 43360transfers, and will never send larger packets. This is a limit on the 43361data characters in the packet, including the frame and checksum. 43362There is no trailing NUL byte in a remote protocol packet; if the stub 43363stores packets in a NUL-terminated format, it should allow an extra 43364byte in its buffer for the NUL. If this stub feature is not supported, 43365@value{GDBN} guesses based on the size of the @samp{g} packet response. 43366 43367@item qXfer:auxv:read 43368The remote stub understands the @samp{qXfer:auxv:read} packet 43369(@pxref{qXfer auxiliary vector read}). 43370 43371@item qXfer:btrace:read 43372The remote stub understands the @samp{qXfer:btrace:read} 43373packet (@pxref{qXfer btrace read}). 43374 43375@item qXfer:btrace-conf:read 43376The remote stub understands the @samp{qXfer:btrace-conf:read} 43377packet (@pxref{qXfer btrace-conf read}). 43378 43379@item qXfer:exec-file:read 43380The remote stub understands the @samp{qXfer:exec-file:read} packet 43381(@pxref{qXfer executable filename read}). 43382 43383@item qXfer:features:read 43384The remote stub understands the @samp{qXfer:features:read} packet 43385(@pxref{qXfer target description read}). 43386 43387@item qXfer:libraries:read 43388The remote stub understands the @samp{qXfer:libraries:read} packet 43389(@pxref{qXfer library list read}). 43390 43391@item qXfer:libraries-svr4:read 43392The remote stub understands the @samp{qXfer:libraries-svr4:read} packet 43393(@pxref{qXfer svr4 library list read}). 43394 43395@item augmented-libraries-svr4-read 43396The remote stub understands the augmented form of the 43397@samp{qXfer:libraries-svr4:read} packet 43398(@pxref{qXfer svr4 library list read}). 43399 43400@item qXfer:memory-map:read 43401The remote stub understands the @samp{qXfer:memory-map:read} packet 43402(@pxref{qXfer memory map read}). 43403 43404@item qXfer:sdata:read 43405The remote stub understands the @samp{qXfer:sdata:read} packet 43406(@pxref{qXfer sdata read}). 43407 43408@item qXfer:siginfo:read 43409The remote stub understands the @samp{qXfer:siginfo:read} packet 43410(@pxref{qXfer siginfo read}). 43411 43412@item qXfer:siginfo:write 43413The remote stub understands the @samp{qXfer:siginfo:write} packet 43414(@pxref{qXfer siginfo write}). 43415 43416@item qXfer:threads:read 43417The remote stub understands the @samp{qXfer:threads:read} packet 43418(@pxref{qXfer threads read}). 43419 43420@item qXfer:traceframe-info:read 43421The remote stub understands the @samp{qXfer:traceframe-info:read} 43422packet (@pxref{qXfer traceframe info read}). 43423 43424@item qXfer:uib:read 43425The remote stub understands the @samp{qXfer:uib:read} 43426packet (@pxref{qXfer unwind info block}). 43427 43428@item qXfer:fdpic:read 43429The remote stub understands the @samp{qXfer:fdpic:read} 43430packet (@pxref{qXfer fdpic loadmap read}). 43431 43432@item QNonStop 43433The remote stub understands the @samp{QNonStop} packet 43434(@pxref{QNonStop}). 43435 43436@item QCatchSyscalls 43437The remote stub understands the @samp{QCatchSyscalls} packet 43438(@pxref{QCatchSyscalls}). 43439 43440@item QPassSignals 43441The remote stub understands the @samp{QPassSignals} packet 43442(@pxref{QPassSignals}). 43443 43444@item QStartNoAckMode 43445The remote stub understands the @samp{QStartNoAckMode} packet and 43446prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}. 43447 43448@item multiprocess 43449@anchor{multiprocess extensions} 43450@cindex multiprocess extensions, in remote protocol 43451The remote stub understands the multiprocess extensions to the remote 43452protocol syntax. The multiprocess extensions affect the syntax of 43453thread IDs in both packets and replies (@pxref{thread-id syntax}), and 43454add process IDs to the @samp{D} packet and @samp{W} and @samp{X} 43455replies. Note that reporting this feature indicates support for the 43456syntactic extensions only, not that the stub necessarily supports 43457debugging of more than one process at a time. The stub must not use 43458multiprocess extensions in packet replies unless @value{GDBN} has also 43459indicated it supports them in its @samp{qSupported} request. 43460 43461@item qXfer:osdata:read 43462The remote stub understands the @samp{qXfer:osdata:read} packet 43463((@pxref{qXfer osdata read}). 43464 43465@item ConditionalBreakpoints 43466The target accepts and implements evaluation of conditional expressions 43467defined for breakpoints. The target will only report breakpoint triggers 43468when such conditions are true (@pxref{Conditions, ,Break Conditions}). 43469 43470@item ConditionalTracepoints 43471The remote stub accepts and implements conditional expressions defined 43472for tracepoints (@pxref{Tracepoint Conditions}). 43473 43474@item ReverseContinue 43475The remote stub accepts and implements the reverse continue packet 43476(@pxref{bc}). 43477 43478@item ReverseStep 43479The remote stub accepts and implements the reverse step packet 43480(@pxref{bs}). 43481 43482@item TracepointSource 43483The remote stub understands the @samp{QTDPsrc} packet that supplies 43484the source form of tracepoint definitions. 43485 43486@item QAgent 43487The remote stub understands the @samp{QAgent} packet. 43488 43489@item QAllow 43490The remote stub understands the @samp{QAllow} packet. 43491 43492@item QDisableRandomization 43493The remote stub understands the @samp{QDisableRandomization} packet. 43494 43495@item StaticTracepoint 43496@cindex static tracepoints, in remote protocol 43497The remote stub supports static tracepoints. 43498 43499@item InstallInTrace 43500@anchor{install tracepoint in tracing} 43501The remote stub supports installing tracepoint in tracing. 43502 43503@item EnableDisableTracepoints 43504The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and 43505@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints 43506to be enabled and disabled while a trace experiment is running. 43507 43508@item QTBuffer:size 43509The remote stub supports the @samp{QTBuffer:size} (@pxref{QTBuffer-size}) 43510packet that allows to change the size of the trace buffer. 43511 43512@item tracenz 43513@cindex string tracing, in remote protocol 43514The remote stub supports the @samp{tracenz} bytecode for collecting strings. 43515See @ref{Bytecode Descriptions} for details about the bytecode. 43516 43517@item BreakpointCommands 43518@cindex breakpoint commands, in remote protocol 43519The remote stub supports running a breakpoint's command list itself, 43520rather than reporting the hit to @value{GDBN}. 43521 43522@item Qbtrace:off 43523The remote stub understands the @samp{Qbtrace:off} packet. 43524 43525@item Qbtrace:bts 43526The remote stub understands the @samp{Qbtrace:bts} packet. 43527 43528@item Qbtrace:pt 43529The remote stub understands the @samp{Qbtrace:pt} packet. 43530 43531@item Qbtrace-conf:bts:size 43532The remote stub understands the @samp{Qbtrace-conf:bts:size} packet. 43533 43534@item Qbtrace-conf:pt:size 43535The remote stub understands the @samp{Qbtrace-conf:pt:size} packet. 43536 43537@item swbreak 43538The remote stub reports the @samp{swbreak} stop reason for memory 43539breakpoints. 43540 43541@item hwbreak 43542The remote stub reports the @samp{hwbreak} stop reason for hardware 43543breakpoints. 43544 43545@item fork-events 43546The remote stub reports the @samp{fork} stop reason for fork events. 43547 43548@item vfork-events 43549The remote stub reports the @samp{vfork} stop reason for vfork events 43550and vforkdone events. 43551 43552@item exec-events 43553The remote stub reports the @samp{exec} stop reason for exec events. 43554 43555@item vContSupported 43556The remote stub reports the supported actions in the reply to 43557@samp{vCont?} packet. 43558 43559@item QThreadEvents 43560The remote stub understands the @samp{QThreadEvents} packet. 43561 43562@item no-resumed 43563The remote stub reports the @samp{N} stop reply. 43564 43565 43566@item memory-tagging 43567The remote stub supports and implements the required memory tagging 43568functionality and understands the @samp{qMemTags} (@pxref{qMemTags}) and 43569@samp{QMemTags} (@pxref{QMemTags}) packets. 43570 43571For AArch64 GNU/Linux systems, this feature also requires access to the 43572@file{/proc/@var{pid}/smaps} file so memory mapping page flags can be inspected. 43573This is done via the @samp{vFile} requests. 43574 43575@end table 43576 43577@item qSymbol:: 43578@cindex symbol lookup, remote request 43579@cindex @samp{qSymbol} packet 43580Notify the target that @value{GDBN} is prepared to serve symbol lookup 43581requests. Accept requests from the target for the values of symbols. 43582 43583Reply: 43584@table @samp 43585@item OK 43586The target does not need to look up any (more) symbols. 43587@item qSymbol:@var{sym_name} 43588The target requests the value of symbol @var{sym_name} (hex encoded). 43589@value{GDBN} may provide the value by using the 43590@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described 43591below. 43592@end table 43593 43594@item qSymbol:@var{sym_value}:@var{sym_name} 43595Set the value of @var{sym_name} to @var{sym_value}. 43596 43597@var{sym_name} (hex encoded) is the name of a symbol whose value the 43598target has previously requested. 43599 43600@var{sym_value} (hex) is the value for symbol @var{sym_name}. If 43601@value{GDBN} cannot supply a value for @var{sym_name}, then this field 43602will be empty. 43603 43604Reply: 43605@table @samp 43606@item OK 43607The target does not need to look up any (more) symbols. 43608@item qSymbol:@var{sym_name} 43609The target requests the value of a new symbol @var{sym_name} (hex 43610encoded). @value{GDBN} will continue to supply the values of symbols 43611(if available), until the target ceases to request them. 43612@end table 43613 43614@item qTBuffer 43615@itemx QTBuffer 43616@itemx QTDisconnected 43617@itemx QTDP 43618@itemx QTDPsrc 43619@itemx QTDV 43620@itemx qTfP 43621@itemx qTfV 43622@itemx QTFrame 43623@itemx qTMinFTPILen 43624 43625@xref{Tracepoint Packets}. 43626 43627@anchor{qThreadExtraInfo} 43628@item qThreadExtraInfo,@var{thread-id} 43629@cindex thread attributes info, remote request 43630@cindex @samp{qThreadExtraInfo} packet 43631Obtain from the target OS a printable string description of thread 43632attributes for the thread @var{thread-id}; see @ref{thread-id syntax}, 43633for the forms of @var{thread-id}. This 43634string may contain anything that the target OS thinks is interesting 43635for @value{GDBN} to tell the user about the thread. The string is 43636displayed in @value{GDBN}'s @code{info threads} display. Some 43637examples of possible thread extra info strings are @samp{Runnable}, or 43638@samp{Blocked on Mutex}. 43639 43640Reply: 43641@table @samp 43642@item @var{XX}@dots{} 43643Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data, 43644comprising the printable string containing the extra information about 43645the thread's attributes. 43646@end table 43647 43648(Note that the @code{qThreadExtraInfo} packet's name is separated from 43649the command by a @samp{,}, not a @samp{:}, contrary to the naming 43650conventions above. Please don't use this packet as a model for new 43651packets.) 43652 43653@item QTNotes 43654@itemx qTP 43655@itemx QTSave 43656@itemx qTsP 43657@itemx qTsV 43658@itemx QTStart 43659@itemx QTStop 43660@itemx QTEnable 43661@itemx QTDisable 43662@itemx QTinit 43663@itemx QTro 43664@itemx qTStatus 43665@itemx qTV 43666@itemx qTfSTM 43667@itemx qTsSTM 43668@itemx qTSTMat 43669@xref{Tracepoint Packets}. 43670 43671@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length} 43672@cindex read special object, remote request 43673@cindex @samp{qXfer} packet 43674@anchor{qXfer read} 43675Read uninterpreted bytes from the target's special data area 43676identified by the keyword @var{object}. Request @var{length} bytes 43677starting at @var{offset} bytes into the data. The content and 43678encoding of @var{annex} is specific to @var{object}; it can supply 43679additional details about what data to access. 43680 43681Reply: 43682@table @samp 43683@item m @var{data} 43684Data @var{data} (@pxref{Binary Data}) has been read from the 43685target. There may be more data at a higher address (although 43686it is permitted to return @samp{m} even for the last valid 43687block of data, as long as at least one byte of data was read). 43688It is possible for @var{data} to have fewer bytes than the @var{length} in the 43689request. 43690 43691@item l @var{data} 43692Data @var{data} (@pxref{Binary Data}) has been read from the target. 43693There is no more data to be read. It is possible for @var{data} to 43694have fewer bytes than the @var{length} in the request. 43695 43696@item l 43697The @var{offset} in the request is at the end of the data. 43698There is no more data to be read. 43699 43700@item E00 43701The request was malformed, or @var{annex} was invalid. 43702 43703@item E @var{nn} 43704The offset was invalid, or there was an error encountered reading the data. 43705The @var{nn} part is a hex-encoded @code{errno} value. 43706 43707@item @w{} 43708An empty reply indicates the @var{object} string was not recognized by 43709the stub, or that the object does not support reading. 43710@end table 43711 43712Here are the specific requests of this form defined so far. All the 43713@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply 43714formats, listed above. 43715 43716@table @samp 43717@item qXfer:auxv:read::@var{offset},@var{length} 43718@anchor{qXfer auxiliary vector read} 43719Access the target's @dfn{auxiliary vector}. @xref{OS Information, 43720auxiliary vector}. Note @var{annex} must be empty. 43721 43722This packet is not probed by default; the remote stub must request it, 43723by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43724 43725@item qXfer:btrace:read:@var{annex}:@var{offset},@var{length} 43726@anchor{qXfer btrace read} 43727 43728Return a description of the current branch trace. 43729@xref{Branch Trace Format}. The annex part of the generic @samp{qXfer} 43730packet may have one of the following values: 43731 43732@table @code 43733@item all 43734Returns all available branch trace. 43735 43736@item new 43737Returns all available branch trace if the branch trace changed since 43738the last read request. 43739 43740@item delta 43741Returns the new branch trace since the last read request. Adds a new 43742block to the end of the trace that begins at zero and ends at the source 43743location of the first branch in the trace buffer. This extra block is 43744used to stitch traces together. 43745 43746If the trace buffer overflowed, returns an error indicating the overflow. 43747@end table 43748 43749This packet is not probed by default; the remote stub must request it 43750by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43751 43752@item qXfer:btrace-conf:read::@var{offset},@var{length} 43753@anchor{qXfer btrace-conf read} 43754 43755Return a description of the current branch trace configuration. 43756@xref{Branch Trace Configuration Format}. 43757 43758This packet is not probed by default; the remote stub must request it 43759by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43760 43761@item qXfer:exec-file:read:@var{annex}:@var{offset},@var{length} 43762@anchor{qXfer executable filename read} 43763Return the full absolute name of the file that was executed to create 43764a process running on the remote system. The annex specifies the 43765numeric process ID of the process to query, encoded as a hexadecimal 43766number. If the annex part is empty the remote stub should return the 43767filename corresponding to the currently executing process. 43768 43769This packet is not probed by default; the remote stub must request it, 43770by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43771 43772@item qXfer:features:read:@var{annex}:@var{offset},@var{length} 43773@anchor{qXfer target description read} 43774Access the @dfn{target description}. @xref{Target Descriptions}. The 43775annex specifies which XML document to access. The main description is 43776always loaded from the @samp{target.xml} annex. 43777 43778This packet is not probed by default; the remote stub must request it, 43779by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43780 43781@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length} 43782@anchor{qXfer library list read} 43783Access the target's list of loaded libraries. @xref{Library List Format}. 43784The annex part of the generic @samp{qXfer} packet must be empty 43785(@pxref{qXfer read}). 43786 43787Targets which maintain a list of libraries in the program's memory do 43788not need to implement this packet; it is designed for platforms where 43789the operating system manages the list of loaded libraries. 43790 43791This packet is not probed by default; the remote stub must request it, 43792by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43793 43794@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length} 43795@anchor{qXfer svr4 library list read} 43796Access the target's list of loaded libraries when the target is an SVR4 43797platform. @xref{Library List Format for SVR4 Targets}. The annex part 43798of the generic @samp{qXfer} packet must be empty unless the remote 43799stub indicated it supports the augmented form of this packet 43800by supplying an appropriate @samp{qSupported} response 43801(@pxref{qXfer read}, @ref{qSupported}). 43802 43803This packet is optional for better performance on SVR4 targets. 43804@value{GDBN} uses memory read packets to read the SVR4 library list otherwise. 43805 43806This packet is not probed by default; the remote stub must request it, 43807by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43808 43809If the remote stub indicates it supports the augmented form of this 43810packet then the annex part of the generic @samp{qXfer} packet may 43811contain a semicolon-separated list of @samp{@var{name}=@var{value}} 43812arguments. The currently supported arguments are: 43813 43814@table @code 43815@item start=@var{address} 43816A hexadecimal number specifying the address of the @samp{struct 43817link_map} to start reading the library list from. If unset or zero 43818then the first @samp{struct link_map} in the library list will be 43819chosen as the starting point. 43820 43821@item prev=@var{address} 43822A hexadecimal number specifying the address of the @samp{struct 43823link_map} immediately preceding the @samp{struct link_map} 43824specified by the @samp{start} argument. If unset or zero then 43825the remote stub will expect that no @samp{struct link_map} 43826exists prior to the starting point. 43827 43828@item lmid=@var{lmid} 43829A hexadecimal number specifying a namespace identifier. This is 43830currently only used together with @samp{start} to provide the 43831namespace identifier back to @value{GDBN} in the response. 43832@value{GDBN} will only provide values that were previously reported to 43833it. If unset, the response will include @samp{lmid="0x0"}. 43834@end table 43835 43836Arguments that are not understood by the remote stub will be silently 43837ignored. 43838 43839@item qXfer:memory-map:read::@var{offset},@var{length} 43840@anchor{qXfer memory map read} 43841Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The 43842annex part of the generic @samp{qXfer} packet must be empty 43843(@pxref{qXfer read}). 43844 43845This packet is not probed by default; the remote stub must request it, 43846by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43847 43848@item qXfer:sdata:read::@var{offset},@var{length} 43849@anchor{qXfer sdata read} 43850 43851Read contents of the extra collected static tracepoint marker 43852information. The annex part of the generic @samp{qXfer} packet must 43853be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint 43854Action Lists}. 43855 43856This packet is not probed by default; the remote stub must request it, 43857by supplying an appropriate @samp{qSupported} response 43858(@pxref{qSupported}). 43859 43860@item qXfer:siginfo:read::@var{offset},@var{length} 43861@anchor{qXfer siginfo read} 43862Read contents of the extra signal information on the target 43863system. The annex part of the generic @samp{qXfer} packet must be 43864empty (@pxref{qXfer read}). 43865 43866This packet is not probed by default; the remote stub must request it, 43867by supplying an appropriate @samp{qSupported} response 43868(@pxref{qSupported}). 43869 43870@item qXfer:threads:read::@var{offset},@var{length} 43871@anchor{qXfer threads read} 43872Access the list of threads on target. @xref{Thread List Format}. The 43873annex part of the generic @samp{qXfer} packet must be empty 43874(@pxref{qXfer read}). 43875 43876This packet is not probed by default; the remote stub must request it, 43877by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43878 43879@item qXfer:traceframe-info:read::@var{offset},@var{length} 43880@anchor{qXfer traceframe info read} 43881 43882Return a description of the current traceframe's contents. 43883@xref{Traceframe Info Format}. The annex part of the generic 43884@samp{qXfer} packet must be empty (@pxref{qXfer read}). 43885 43886This packet is not probed by default; the remote stub must request it, 43887by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43888 43889@item qXfer:uib:read:@var{pc}:@var{offset},@var{length} 43890@anchor{qXfer unwind info block} 43891 43892Return the unwind information block for @var{pc}. This packet is used 43893on OpenVMS/ia64 to ask the kernel unwind information. 43894 43895This packet is not probed by default. 43896 43897@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length} 43898@anchor{qXfer fdpic loadmap read} 43899Read contents of @code{loadmap}s on the target system. The 43900annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap}, 43901executable @code{loadmap} or interpreter @code{loadmap} to read. 43902 43903This packet is not probed by default; the remote stub must request it, 43904by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}). 43905 43906@item qXfer:osdata:read::@var{offset},@var{length} 43907@anchor{qXfer osdata read} 43908Access the target's @dfn{operating system information}. 43909@xref{Operating System Information}. 43910 43911@end table 43912 43913@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{} 43914@cindex write data into object, remote request 43915@anchor{qXfer write} 43916Write uninterpreted bytes into the target's special data area 43917identified by the keyword @var{object}, starting at @var{offset} bytes 43918into the data. The binary-encoded data (@pxref{Binary Data}) to be 43919written is given by @var{data}@dots{}. The content and encoding of @var{annex} 43920is specific to @var{object}; it can supply additional details about what data 43921to access. 43922 43923Reply: 43924@table @samp 43925@item @var{nn} 43926@var{nn} (hex encoded) is the number of bytes written. 43927This may be fewer bytes than supplied in the request. 43928 43929@item E00 43930The request was malformed, or @var{annex} was invalid. 43931 43932@item E @var{nn} 43933The offset was invalid, or there was an error encountered writing the data. 43934The @var{nn} part is a hex-encoded @code{errno} value. 43935 43936@item @w{} 43937An empty reply indicates the @var{object} string was not 43938recognized by the stub, or that the object does not support writing. 43939@end table 43940 43941Here are the specific requests of this form defined so far. All the 43942@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply 43943formats, listed above. 43944 43945@table @samp 43946@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{} 43947@anchor{qXfer siginfo write} 43948Write @var{data} to the extra signal information on the target system. 43949The annex part of the generic @samp{qXfer} packet must be 43950empty (@pxref{qXfer write}). 43951 43952This packet is not probed by default; the remote stub must request it, 43953by supplying an appropriate @samp{qSupported} response 43954(@pxref{qSupported}). 43955@end table 43956 43957@item qXfer:@var{object}:@var{operation}:@dots{} 43958Requests of this form may be added in the future. When a stub does 43959not recognize the @var{object} keyword, or its support for 43960@var{object} does not recognize the @var{operation} keyword, the stub 43961must respond with an empty packet. 43962 43963@item qAttached:@var{pid} 43964@cindex query attached, remote request 43965@cindex @samp{qAttached} packet 43966Return an indication of whether the remote server attached to an 43967existing process or created a new process. When the multiprocess 43968protocol extensions are supported (@pxref{multiprocess extensions}), 43969@var{pid} is an integer in hexadecimal format identifying the target 43970process. Otherwise, @value{GDBN} will omit the @var{pid} field and 43971the query packet will be simplified as @samp{qAttached}. 43972 43973This query is used, for example, to know whether the remote process 43974should be detached or killed when a @value{GDBN} session is ended with 43975the @code{quit} command. 43976 43977Reply: 43978@table @samp 43979@item 1 43980The remote server attached to an existing process. 43981@item 0 43982The remote server created a new process. 43983@item E @var{NN} 43984A badly formed request or an error was encountered. 43985@end table 43986 43987@item Qbtrace:bts 43988Enable branch tracing for the current thread using Branch Trace Store. 43989 43990Reply: 43991@table @samp 43992@item OK 43993Branch tracing has been enabled. 43994@item E.errtext 43995A badly formed request or an error was encountered. 43996@end table 43997 43998@item Qbtrace:pt 43999Enable branch tracing for the current thread using Intel Processor Trace. 44000 44001Reply: 44002@table @samp 44003@item OK 44004Branch tracing has been enabled. 44005@item E.errtext 44006A badly formed request or an error was encountered. 44007@end table 44008 44009@item Qbtrace:off 44010Disable branch tracing for the current thread. 44011 44012Reply: 44013@table @samp 44014@item OK 44015Branch tracing has been disabled. 44016@item E.errtext 44017A badly formed request or an error was encountered. 44018@end table 44019 44020@item Qbtrace-conf:bts:size=@var{value} 44021Set the requested ring buffer size for new threads that use the 44022btrace recording method in bts format. 44023 44024Reply: 44025@table @samp 44026@item OK 44027The ring buffer size has been set. 44028@item E.errtext 44029A badly formed request or an error was encountered. 44030@end table 44031 44032@item Qbtrace-conf:pt:size=@var{value} 44033Set the requested ring buffer size for new threads that use the 44034btrace recording method in pt format. 44035 44036Reply: 44037@table @samp 44038@item OK 44039The ring buffer size has been set. 44040@item E.errtext 44041A badly formed request or an error was encountered. 44042@end table 44043 44044@end table 44045 44046@node Architecture-Specific Protocol Details 44047@section Architecture-Specific Protocol Details 44048 44049This section describes how the remote protocol is applied to specific 44050target architectures. Also see @ref{Standard Target Features}, for 44051details of XML target descriptions for each architecture. 44052 44053@menu 44054* ARM-Specific Protocol Details:: 44055* MIPS-Specific Protocol Details:: 44056@end menu 44057 44058@node ARM-Specific Protocol Details 44059@subsection @acronym{ARM}-specific Protocol Details 44060 44061@menu 44062* ARM Breakpoint Kinds:: 44063* ARM Memory Tag Types:: 44064@end menu 44065 44066@node ARM Breakpoint Kinds 44067@subsubsection @acronym{ARM} Breakpoint Kinds 44068@cindex breakpoint kinds, @acronym{ARM} 44069 44070These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 44071 44072@table @r 44073 44074@item 2 4407516-bit Thumb mode breakpoint. 44076 44077@item 3 4407832-bit Thumb mode (Thumb-2) breakpoint. 44079 44080@item 4 4408132-bit @acronym{ARM} mode breakpoint. 44082 44083@end table 44084 44085@node ARM Memory Tag Types 44086@subsubsection @acronym{ARM} Memory Tag Types 44087@cindex memory tag types, @acronym{ARM} 44088 44089These memory tag types are defined for the @samp{qMemTag} and @samp{QMemTag} 44090packets. 44091 44092@table @r 44093 44094@item 0 44095MTE logical tag 44096 44097@item 1 44098MTE allocation tag 44099 44100@end table 44101 44102@node MIPS-Specific Protocol Details 44103@subsection @acronym{MIPS}-specific Protocol Details 44104 44105@menu 44106* MIPS Register packet Format:: 44107* MIPS Breakpoint Kinds:: 44108@end menu 44109 44110@node MIPS Register packet Format 44111@subsubsection @acronym{MIPS} Register Packet Format 44112@cindex register packet format, @acronym{MIPS} 44113 44114The following @code{g}/@code{G} packets have previously been defined. 44115In the below, some thirty-two bit registers are transferred as 44116sixty-four bits. Those registers should be zero/sign extended (which?) 44117to fill the space allocated. Register bytes are transferred in target 44118byte order. The two nibbles within a register byte are transferred 44119most-significant -- least-significant. 44120 44121@table @r 44122 44123@item MIPS32 44124All registers are transferred as thirty-two bit quantities in the order: 4412532 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point 44126registers; fsr; fir; fp. 44127 44128@item MIPS64 44129All registers are transferred as sixty-four bit quantities (including 44130thirty-two bit registers such as @code{sr}). The ordering is the same 44131as @code{MIPS32}. 44132 44133@end table 44134 44135@node MIPS Breakpoint Kinds 44136@subsubsection @acronym{MIPS} Breakpoint Kinds 44137@cindex breakpoint kinds, @acronym{MIPS} 44138 44139These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets. 44140 44141@table @r 44142 44143@item 2 4414416-bit @acronym{MIPS16} mode breakpoint. 44145 44146@item 3 4414716-bit @acronym{microMIPS} mode breakpoint. 44148 44149@item 4 4415032-bit standard @acronym{MIPS} mode breakpoint. 44151 44152@item 5 4415332-bit @acronym{microMIPS} mode breakpoint. 44154 44155@end table 44156 44157@node Tracepoint Packets 44158@section Tracepoint Packets 44159@cindex tracepoint packets 44160@cindex packets, tracepoint 44161 44162Here we describe the packets @value{GDBN} uses to implement 44163tracepoints (@pxref{Tracepoints}). 44164 44165@table @samp 44166 44167@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]} 44168@cindex @samp{QTDP} packet 44169Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena} 44170is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then 44171the tracepoint is disabled. The @var{step} gives the tracepoint's step 44172count, and @var{pass} gives its pass count. If an @samp{F} is present, 44173then the tracepoint is to be a fast tracepoint, and the @var{flen} is 44174the number of bytes that the target should copy elsewhere to make room 44175for the tracepoint. If an @samp{X} is present, it introduces a 44176tracepoint condition, which consists of a hexadecimal length, followed 44177by a comma and hex-encoded bytes, in a manner similar to action 44178encodings as described below. If the trailing @samp{-} is present, 44179further @samp{QTDP} packets will follow to specify this tracepoint's 44180actions. 44181 44182Replies: 44183@table @samp 44184@item OK 44185The packet was understood and carried out. 44186@item qRelocInsn 44187@xref{Tracepoint Packets,,Relocate instruction reply packet}. 44188@item @w{} 44189The packet was not recognized. 44190@end table 44191 44192@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]} 44193Define actions to be taken when a tracepoint is hit. The @var{n} and 44194@var{addr} must be the same as in the initial @samp{QTDP} packet for 44195this tracepoint. This packet may only be sent immediately after 44196another @samp{QTDP} packet that ended with a @samp{-}. If the 44197trailing @samp{-} is present, further @samp{QTDP} packets will follow, 44198specifying more actions for this tracepoint. 44199 44200In the series of action packets for a given tracepoint, at most one 44201can have an @samp{S} before its first @var{action}. If such a packet 44202is sent, it and the following packets define ``while-stepping'' 44203actions. Any prior packets define ordinary actions --- that is, those 44204taken when the tracepoint is first hit. If no action packet has an 44205@samp{S}, then all the packets in the series specify ordinary 44206tracepoint actions. 44207 44208The @samp{@var{action}@dots{}} portion of the packet is a series of 44209actions, concatenated without separators. Each action has one of the 44210following forms: 44211 44212@table @samp 44213 44214@item R @var{mask} 44215Collect the registers whose bits are set in @var{mask}, 44216a hexadecimal number whose @var{i}'th bit is set if register number 44217@var{i} should be collected. (The least significant bit is numbered 44218zero.) Note that @var{mask} may be any number of digits long; it may 44219not fit in a 32-bit word. 44220 44221@item M @var{basereg},@var{offset},@var{len} 44222Collect @var{len} bytes of memory starting at the address in register 44223number @var{basereg}, plus @var{offset}. If @var{basereg} is 44224@samp{-1}, then the range has a fixed address: @var{offset} is the 44225address of the lowest byte to collect. The @var{basereg}, 44226@var{offset}, and @var{len} parameters are all unsigned hexadecimal 44227values (the @samp{-1} value for @var{basereg} is a special case). 44228 44229@item X @var{len},@var{expr} 44230Evaluate @var{expr}, whose length is @var{len}, and collect memory as 44231it directs. The agent expression @var{expr} is as described in 44232@ref{Agent Expressions}. Each byte of the expression is encoded as a 44233two-digit hex number in the packet; @var{len} is the number of bytes 44234in the expression (and thus one-half the number of hex digits in the 44235packet). 44236 44237@end table 44238 44239Any number of actions may be packed together in a single @samp{QTDP} 44240packet, as long as the packet does not exceed the maximum packet 44241length (400 bytes, for many stubs). There may be only one @samp{R} 44242action per tracepoint, and it must precede any @samp{M} or @samp{X} 44243actions. Any registers referred to by @samp{M} and @samp{X} actions 44244must be collected by a preceding @samp{R} action. (The 44245``while-stepping'' actions are treated as if they were attached to a 44246separate tracepoint, as far as these restrictions are concerned.) 44247 44248Replies: 44249@table @samp 44250@item OK 44251The packet was understood and carried out. 44252@item qRelocInsn 44253@xref{Tracepoint Packets,,Relocate instruction reply packet}. 44254@item @w{} 44255The packet was not recognized. 44256@end table 44257 44258@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes} 44259@cindex @samp{QTDPsrc} packet 44260Specify a source string of tracepoint @var{n} at address @var{addr}. 44261This is useful to get accurate reproduction of the tracepoints 44262originally downloaded at the beginning of the trace run. The @var{type} 44263is the name of the tracepoint part, such as @samp{cond} for the 44264tracepoint's conditional expression (see below for a list of types), while 44265@var{bytes} is the string, encoded in hexadecimal. 44266 44267@var{start} is the offset of the @var{bytes} within the overall source 44268string, while @var{slen} is the total length of the source string. 44269This is intended for handling source strings that are longer than will 44270fit in a single packet. 44271@c Add detailed example when this info is moved into a dedicated 44272@c tracepoint descriptions section. 44273 44274The available string types are @samp{at} for the location, 44275@samp{cond} for the conditional, and @samp{cmd} for an action command. 44276@value{GDBN} sends a separate packet for each command in the action 44277list, in the same order in which the commands are stored in the list. 44278 44279The target does not need to do anything with source strings except 44280report them back as part of the replies to the @samp{qTfP}/@samp{qTsP} 44281query packets. 44282 44283Although this packet is optional, and @value{GDBN} will only send it 44284if the target replies with @samp{TracepointSource} @xref{General 44285Query Packets}, it makes both disconnected tracing and trace files 44286much easier to use. Otherwise the user must be careful that the 44287tracepoints in effect while looking at trace frames are identical to 44288the ones in effect during the trace run; even a small discrepancy 44289could cause @samp{tdump} not to work, or a particular trace frame not 44290be found. 44291 44292@item QTDV:@var{n}:@var{value}:@var{builtin}:@var{name} 44293@cindex define trace state variable, remote request 44294@cindex @samp{QTDV} packet 44295Create a new trace state variable, number @var{n}, with an initial 44296value of @var{value}, which is a 64-bit signed integer. Both @var{n} 44297and @var{value} are encoded as hexadecimal values. @value{GDBN} has 44298the option of not using this packet for initial values of zero; the 44299target should simply create the trace state variables as they are 44300mentioned in expressions. The value @var{builtin} should be 1 (one) 44301if the trace state variable is builtin and 0 (zero) if it is not builtin. 44302@value{GDBN} only sets @var{builtin} to 1 if a previous @samp{qTfV} or 44303@samp{qTsV} packet had it set. The contents of @var{name} is the 44304hex-encoded name (without the leading @samp{$}) of the trace state 44305variable. 44306 44307@item QTFrame:@var{n} 44308@cindex @samp{QTFrame} packet 44309Select the @var{n}'th tracepoint frame from the buffer, and use the 44310register and memory contents recorded there to answer subsequent 44311request packets from @value{GDBN}. 44312 44313A successful reply from the stub indicates that the stub has found the 44314requested frame. The response is a series of parts, concatenated 44315without separators, describing the frame we selected. Each part has 44316one of the following forms: 44317 44318@table @samp 44319@item F @var{f} 44320The selected frame is number @var{n} in the trace frame buffer; 44321@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there 44322was no frame matching the criteria in the request packet. 44323 44324@item T @var{t} 44325The selected trace frame records a hit of tracepoint number @var{t}; 44326@var{t} is a hexadecimal number. 44327 44328@end table 44329 44330@item QTFrame:pc:@var{addr} 44331Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 44332currently selected frame whose PC is @var{addr}; 44333@var{addr} is a hexadecimal number. 44334 44335@item QTFrame:tdp:@var{t} 44336Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 44337currently selected frame that is a hit of tracepoint @var{t}; @var{t} 44338is a hexadecimal number. 44339 44340@item QTFrame:range:@var{start}:@var{end} 44341Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the 44342currently selected frame whose PC is between @var{start} (inclusive) 44343and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal 44344numbers. 44345 44346@item QTFrame:outside:@var{start}:@var{end} 44347Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first 44348frame @emph{outside} the given range of addresses (exclusive). 44349 44350@item qTMinFTPILen 44351@cindex @samp{qTMinFTPILen} packet 44352This packet requests the minimum length of instruction at which a fast 44353tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on 44354the 32-bit x86 architecture, it is possible to use a 4-byte jump, but 44355it depends on the target system being able to create trampolines in 44356the first 64K of memory, which might or might not be possible for that 44357system. So the reply to this packet will be 4 if it is able to 44358arrange for that. 44359 44360Replies: 44361 44362@table @samp 44363@item 0 44364The minimum instruction length is currently unknown. 44365@item @var{length} 44366The minimum instruction length is @var{length}, where @var{length} 44367is a hexadecimal number greater or equal to 1. A reply 44368of 1 means that a fast tracepoint may be placed on any instruction 44369regardless of size. 44370@item E 44371An error has occurred. 44372@item @w{} 44373An empty reply indicates that the request is not supported by the stub. 44374@end table 44375 44376@item QTStart 44377@cindex @samp{QTStart} packet 44378Begin the tracepoint experiment. Begin collecting data from 44379tracepoint hits in the trace frame buffer. This packet supports the 44380@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate 44381instruction reply packet}). 44382 44383@item QTStop 44384@cindex @samp{QTStop} packet 44385End the tracepoint experiment. Stop collecting trace frames. 44386 44387@item QTEnable:@var{n}:@var{addr} 44388@anchor{QTEnable} 44389@cindex @samp{QTEnable} packet 44390Enable tracepoint @var{n} at address @var{addr} in a started tracepoint 44391experiment. If the tracepoint was previously disabled, then collection 44392of data from it will resume. 44393 44394@item QTDisable:@var{n}:@var{addr} 44395@anchor{QTDisable} 44396@cindex @samp{QTDisable} packet 44397Disable tracepoint @var{n} at address @var{addr} in a started tracepoint 44398experiment. No more data will be collected from the tracepoint unless 44399@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued. 44400 44401@item QTinit 44402@cindex @samp{QTinit} packet 44403Clear the table of tracepoints, and empty the trace frame buffer. 44404 44405@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{} 44406@cindex @samp{QTro} packet 44407Establish the given ranges of memory as ``transparent''. The stub 44408will answer requests for these ranges from memory's current contents, 44409if they were not collected as part of the tracepoint hit. 44410 44411@value{GDBN} uses this to mark read-only regions of memory, like those 44412containing program code. Since these areas never change, they should 44413still have the same contents they did when the tracepoint was hit, so 44414there's no reason for the stub to refuse to provide their contents. 44415 44416@item QTDisconnected:@var{value} 44417@cindex @samp{QTDisconnected} packet 44418Set the choice to what to do with the tracing run when @value{GDBN} 44419disconnects from the target. A @var{value} of 1 directs the target to 44420continue the tracing run, while 0 tells the target to stop tracing if 44421@value{GDBN} is no longer in the picture. 44422 44423@item qTStatus 44424@cindex @samp{qTStatus} packet 44425Ask the stub if there is a trace experiment running right now. 44426 44427The reply has the form: 44428 44429@table @samp 44430 44431@item T@var{running}@r{[};@var{field}@r{]}@dots{} 44432@var{running} is a single digit @code{1} if the trace is presently 44433running, or @code{0} if not. It is followed by semicolon-separated 44434optional fields that an agent may use to report additional status. 44435 44436@end table 44437 44438If the trace is not running, the agent may report any of several 44439explanations as one of the optional fields: 44440 44441@table @samp 44442 44443@item tnotrun:0 44444No trace has been run yet. 44445 44446@item tstop[:@var{text}]:0 44447The trace was stopped by a user-originated stop command. The optional 44448@var{text} field is a user-supplied string supplied as part of the 44449stop command (for instance, an explanation of why the trace was 44450stopped manually). It is hex-encoded. 44451 44452@item tfull:0 44453The trace stopped because the trace buffer filled up. 44454 44455@item tdisconnected:0 44456The trace stopped because @value{GDBN} disconnected from the target. 44457 44458@item tpasscount:@var{tpnum} 44459The trace stopped because tracepoint @var{tpnum} exceeded its pass count. 44460 44461@item terror:@var{text}:@var{tpnum} 44462The trace stopped because tracepoint @var{tpnum} had an error. The 44463string @var{text} is available to describe the nature of the error 44464(for instance, a divide by zero in the condition expression); it 44465is hex encoded. 44466 44467@item tunknown:0 44468The trace stopped for some other reason. 44469 44470@end table 44471 44472Additional optional fields supply statistical and other information. 44473Although not required, they are extremely useful for users monitoring 44474the progress of a trace run. If a trace has stopped, and these 44475numbers are reported, they must reflect the state of the just-stopped 44476trace. 44477 44478@table @samp 44479 44480@item tframes:@var{n} 44481The number of trace frames in the buffer. 44482 44483@item tcreated:@var{n} 44484The total number of trace frames created during the run. This may 44485be larger than the trace frame count, if the buffer is circular. 44486 44487@item tsize:@var{n} 44488The total size of the trace buffer, in bytes. 44489 44490@item tfree:@var{n} 44491The number of bytes still unused in the buffer. 44492 44493@item circular:@var{n} 44494The value of the circular trace buffer flag. @code{1} means that the 44495trace buffer is circular and old trace frames will be discarded if 44496necessary to make room, @code{0} means that the trace buffer is linear 44497and may fill up. 44498 44499@item disconn:@var{n} 44500The value of the disconnected tracing flag. @code{1} means that 44501tracing will continue after @value{GDBN} disconnects, @code{0} means 44502that the trace run will stop. 44503 44504@end table 44505 44506@item qTP:@var{tp}:@var{addr} 44507@cindex tracepoint status, remote request 44508@cindex @samp{qTP} packet 44509Ask the stub for the current state of tracepoint number @var{tp} at 44510address @var{addr}. 44511 44512Replies: 44513@table @samp 44514@item V@var{hits}:@var{usage} 44515The tracepoint has been hit @var{hits} times so far during the trace 44516run, and accounts for @var{usage} in the trace buffer. Note that 44517@code{while-stepping} steps are not counted as separate hits, but the 44518steps' space consumption is added into the usage number. 44519 44520@end table 44521 44522@item qTV:@var{var} 44523@cindex trace state variable value, remote request 44524@cindex @samp{qTV} packet 44525Ask the stub for the value of the trace state variable number @var{var}. 44526 44527Replies: 44528@table @samp 44529@item V@var{value} 44530The value of the variable is @var{value}. This will be the current 44531value of the variable if the user is examining a running target, or a 44532saved value if the variable was collected in the trace frame that the 44533user is looking at. Note that multiple requests may result in 44534different reply values, such as when requesting values while the 44535program is running. 44536 44537@item U 44538The value of the variable is unknown. This would occur, for example, 44539if the user is examining a trace frame in which the requested variable 44540was not collected. 44541@end table 44542 44543@item qTfP 44544@cindex @samp{qTfP} packet 44545@itemx qTsP 44546@cindex @samp{qTsP} packet 44547These packets request data about tracepoints that are being used by 44548the target. @value{GDBN} sends @code{qTfP} to get the first piece 44549of data, and multiple @code{qTsP} to get additional pieces. Replies 44550to these packets generally take the form of the @code{QTDP} packets 44551that define tracepoints. (FIXME add detailed syntax) 44552 44553@item qTfV 44554@cindex @samp{qTfV} packet 44555@itemx qTsV 44556@cindex @samp{qTsV} packet 44557These packets request data about trace state variables that are on the 44558target. @value{GDBN} sends @code{qTfV} to get the first vari of data, 44559and multiple @code{qTsV} to get additional variables. Replies to 44560these packets follow the syntax of the @code{QTDV} packets that define 44561trace state variables. 44562 44563@item qTfSTM 44564@itemx qTsSTM 44565@anchor{qTfSTM} 44566@anchor{qTsSTM} 44567@cindex @samp{qTfSTM} packet 44568@cindex @samp{qTsSTM} packet 44569These packets request data about static tracepoint markers that exist 44570in the target program. @value{GDBN} sends @code{qTfSTM} to get the 44571first piece of data, and multiple @code{qTsSTM} to get additional 44572pieces. Replies to these packets take the following form: 44573 44574Reply: 44575@table @samp 44576@item m @var{address}:@var{id}:@var{extra} 44577A single marker 44578@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{} 44579a comma-separated list of markers 44580@item l 44581(lower case letter @samp{L}) denotes end of list. 44582@item E @var{nn} 44583An error occurred. The error number @var{nn} is given as hex digits. 44584@item @w{} 44585An empty reply indicates that the request is not supported by the 44586stub. 44587@end table 44588 44589The @var{address} is encoded in hex; 44590@var{id} and @var{extra} are strings encoded in hex. 44591 44592In response to each query, the target will reply with a list of one or 44593more markers, separated by commas. @value{GDBN} will respond to each 44594reply with a request for more markers (using the @samp{qs} form of the 44595query), until the target responds with @samp{l} (lower-case ell, for 44596@dfn{last}). 44597 44598@item qTSTMat:@var{address} 44599@anchor{qTSTMat} 44600@cindex @samp{qTSTMat} packet 44601This packets requests data about static tracepoint markers in the 44602target program at @var{address}. Replies to this packet follow the 44603syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static 44604tracepoint markers. 44605 44606@item QTSave:@var{filename} 44607@cindex @samp{QTSave} packet 44608This packet directs the target to save trace data to the file name 44609@var{filename} in the target's filesystem. The @var{filename} is encoded 44610as a hex string; the interpretation of the file name (relative vs 44611absolute, wild cards, etc) is up to the target. 44612 44613@item qTBuffer:@var{offset},@var{len} 44614@cindex @samp{qTBuffer} packet 44615Return up to @var{len} bytes of the current contents of trace buffer, 44616starting at @var{offset}. The trace buffer is treated as if it were 44617a contiguous collection of traceframes, as per the trace file format. 44618The reply consists as many hex-encoded bytes as the target can deliver 44619in a packet; it is not an error to return fewer than were asked for. 44620A reply consisting of just @code{l} indicates that no bytes are 44621available. 44622 44623@item QTBuffer:circular:@var{value} 44624This packet directs the target to use a circular trace buffer if 44625@var{value} is 1, or a linear buffer if the value is 0. 44626 44627@item QTBuffer:size:@var{size} 44628@anchor{QTBuffer-size} 44629@cindex @samp{QTBuffer size} packet 44630This packet directs the target to make the trace buffer be of size 44631@var{size} if possible. A value of @code{-1} tells the target to 44632use whatever size it prefers. 44633 44634@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{} 44635@cindex @samp{QTNotes} packet 44636This packet adds optional textual notes to the trace run. Allowable 44637types include @code{user}, @code{notes}, and @code{tstop}, the 44638@var{text} fields are arbitrary strings, hex-encoded. 44639 44640@end table 44641 44642@subsection Relocate instruction reply packet 44643When installing fast tracepoints in memory, the target may need to 44644relocate the instruction currently at the tracepoint address to a 44645different address in memory. For most instructions, a simple copy is 44646enough, but, for example, call instructions that implicitly push the 44647return address on the stack, and relative branches or other 44648PC-relative instructions require offset adjustment, so that the effect 44649of executing the instruction at a different address is the same as if 44650it had executed in the original location. 44651 44652In response to several of the tracepoint packets, the target may also 44653respond with a number of intermediate @samp{qRelocInsn} request 44654packets before the final result packet, to have @value{GDBN} handle 44655this relocation operation. If a packet supports this mechanism, its 44656documentation will explicitly say so. See for example the above 44657descriptions for the @samp{QTStart} and @samp{QTDP} packets. The 44658format of the request is: 44659 44660@table @samp 44661@item qRelocInsn:@var{from};@var{to} 44662 44663This requests @value{GDBN} to copy instruction at address @var{from} 44664to address @var{to}, possibly adjusted so that executing the 44665instruction at @var{to} has the same effect as executing it at 44666@var{from}. @value{GDBN} writes the adjusted instruction to target 44667memory starting at @var{to}. 44668@end table 44669 44670Replies: 44671@table @samp 44672@item qRelocInsn:@var{adjusted_size} 44673Informs the stub the relocation is complete. The @var{adjusted_size} is 44674the length in bytes of resulting relocated instruction sequence. 44675@item E @var{NN} 44676A badly formed request was detected, or an error was encountered while 44677relocating the instruction. 44678@end table 44679 44680@node Host I/O Packets 44681@section Host I/O Packets 44682@cindex Host I/O, remote protocol 44683@cindex file transfer, remote protocol 44684 44685The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O 44686operations on the far side of a remote link. For example, Host I/O is 44687used to upload and download files to a remote target with its own 44688filesystem. Host I/O uses the same constant values and data structure 44689layout as the target-initiated File-I/O protocol. However, the 44690Host I/O packets are structured differently. The target-initiated 44691protocol relies on target memory to store parameters and buffers. 44692Host I/O requests are initiated by @value{GDBN}, and the 44693target's memory is not involved. @xref{File-I/O Remote Protocol 44694Extension}, for more details on the target-initiated protocol. 44695 44696The Host I/O request packets all encode a single operation along with 44697its arguments. They have this format: 44698 44699@table @samp 44700 44701@item vFile:@var{operation}: @var{parameter}@dots{} 44702@var{operation} is the name of the particular request; the target 44703should compare the entire packet name up to the second colon when checking 44704for a supported operation. The format of @var{parameter} depends on 44705the operation. Numbers are always passed in hexadecimal. Negative 44706numbers have an explicit minus sign (i.e.@: two's complement is not 44707used). Strings (e.g.@: filenames) are encoded as a series of 44708hexadecimal bytes. The last argument to a system call may be a 44709buffer of escaped binary data (@pxref{Binary Data}). 44710 44711@end table 44712 44713The valid responses to Host I/O packets are: 44714 44715@table @samp 44716 44717@item F @var{result} [, @var{errno}] [; @var{attachment}] 44718@var{result} is the integer value returned by this operation, usually 44719non-negative for success and -1 for errors. If an error has occured, 44720@var{errno} will be included in the result specifying a 44721value defined by the File-I/O protocol (@pxref{Errno Values}). For 44722operations which return data, @var{attachment} supplies the data as a 44723binary buffer. Binary buffers in response packets are escaped in the 44724normal way (@pxref{Binary Data}). See the individual packet 44725documentation for the interpretation of @var{result} and 44726@var{attachment}. 44727 44728@item @w{} 44729An empty response indicates that this operation is not recognized. 44730 44731@end table 44732 44733These are the supported Host I/O operations: 44734 44735@table @samp 44736@item vFile:open: @var{filename}, @var{flags}, @var{mode} 44737Open a file at @var{filename} and return a file descriptor for it, or 44738return -1 if an error occurs. The @var{filename} is a string, 44739@var{flags} is an integer indicating a mask of open flags 44740(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask 44741of mode bits to use if the file is created (@pxref{mode_t Values}). 44742@xref{open}, for details of the open flags and mode values. 44743 44744@item vFile:close: @var{fd} 44745Close the open file corresponding to @var{fd} and return 0, or 44746-1 if an error occurs. 44747 44748@item vFile:pread: @var{fd}, @var{count}, @var{offset} 44749Read data from the open file corresponding to @var{fd}. Up to 44750@var{count} bytes will be read from the file, starting at @var{offset} 44751relative to the start of the file. The target may read fewer bytes; 44752common reasons include packet size limits and an end-of-file 44753condition. The number of bytes read is returned. Zero should only be 44754returned for a successful read at the end of the file, or if 44755@var{count} was zero. 44756 44757The data read should be returned as a binary attachment on success. 44758If zero bytes were read, the response should include an empty binary 44759attachment (i.e.@: a trailing semicolon). The return value is the 44760number of target bytes read; the binary attachment may be longer if 44761some characters were escaped. 44762 44763@item vFile:pwrite: @var{fd}, @var{offset}, @var{data} 44764Write @var{data} (a binary buffer) to the open file corresponding 44765to @var{fd}. Start the write at @var{offset} from the start of the 44766file. Unlike many @code{write} system calls, there is no 44767separate @var{count} argument; the length of @var{data} in the 44768packet is used. @samp{vFile:pwrite} returns the number of bytes written, 44769which may be shorter than the length of @var{data}, or -1 if an 44770error occurred. 44771 44772@item vFile:fstat: @var{fd} 44773Get information about the open file corresponding to @var{fd}. 44774On success the information is returned as a binary attachment 44775and the return value is the size of this attachment in bytes. 44776If an error occurs the return value is -1. The format of the 44777returned binary attachment is as described in @ref{struct stat}. 44778 44779@item vFile:unlink: @var{filename} 44780Delete the file at @var{filename} on the target. Return 0, 44781or -1 if an error occurs. The @var{filename} is a string. 44782 44783@item vFile:readlink: @var{filename} 44784Read value of symbolic link @var{filename} on the target. Return 44785the number of bytes read, or -1 if an error occurs. 44786 44787The data read should be returned as a binary attachment on success. 44788If zero bytes were read, the response should include an empty binary 44789attachment (i.e.@: a trailing semicolon). The return value is the 44790number of target bytes read; the binary attachment may be longer if 44791some characters were escaped. 44792 44793@item vFile:setfs: @var{pid} 44794Select the filesystem on which @code{vFile} operations with 44795@var{filename} arguments will operate. This is required for 44796@value{GDBN} to be able to access files on remote targets where 44797the remote stub does not share a common filesystem with the 44798inferior(s). 44799 44800If @var{pid} is nonzero, select the filesystem as seen by process 44801@var{pid}. If @var{pid} is zero, select the filesystem as seen by 44802the remote stub. Return 0 on success, or -1 if an error occurs. 44803If @code{vFile:setfs:} indicates success, the selected filesystem 44804remains selected until the next successful @code{vFile:setfs:} 44805operation. 44806 44807@end table 44808 44809@node Interrupts 44810@section Interrupts 44811@cindex interrupts (remote protocol) 44812@anchor{interrupting remote targets} 44813 44814In all-stop mode, when a program on the remote target is running, 44815@value{GDBN} may attempt to interrupt it by sending a @samp{Ctrl-C}, 44816@code{BREAK} or a @code{BREAK} followed by @code{g}, control of which 44817is specified via @value{GDBN}'s @samp{interrupt-sequence}. 44818 44819The precise meaning of @code{BREAK} is defined by the transport 44820mechanism and may, in fact, be undefined. @value{GDBN} does not 44821currently define a @code{BREAK} mechanism for any of the network 44822interfaces except for TCP, in which case @value{GDBN} sends the 44823@code{telnet} BREAK sequence. 44824 44825@samp{Ctrl-C}, on the other hand, is defined and implemented for all 44826transport mechanisms. It is represented by sending the single byte 44827@code{0x03} without any of the usual packet overhead described in 44828the Overview section (@pxref{Overview}). When a @code{0x03} byte is 44829transmitted as part of a packet, it is considered to be packet data 44830and does @emph{not} represent an interrupt. E.g., an @samp{X} packet 44831(@pxref{X packet}), used for binary downloads, may include an unescaped 44832@code{0x03} as part of its packet. 44833 44834@code{BREAK} followed by @code{g} is also known as Magic SysRq g. 44835When Linux kernel receives this sequence from serial port, 44836it stops execution and connects to gdb. 44837 44838In non-stop mode, because packet resumptions are asynchronous 44839(@pxref{vCont packet}), @value{GDBN} is always free to send a remote 44840command to the remote stub, even when the target is running. For that 44841reason, @value{GDBN} instead sends a regular packet (@pxref{vCtrlC 44842packet}) with the usual packet framing instead of the single byte 44843@code{0x03}. 44844 44845Stubs are not required to recognize these interrupt mechanisms and the 44846precise meaning associated with receipt of the interrupt is 44847implementation defined. If the target supports debugging of multiple 44848threads and/or processes, it should attempt to interrupt all 44849currently-executing threads and processes. 44850If the stub is successful at interrupting the 44851running program, it should send one of the stop 44852reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result 44853of successfully stopping the program in all-stop mode, and a stop reply 44854for each stopped thread in non-stop mode. 44855Interrupts received while the 44856program is stopped are queued and the program will be interrupted when 44857it is resumed next time. 44858 44859@node Notification Packets 44860@section Notification Packets 44861@cindex notification packets 44862@cindex packets, notification 44863 44864The @value{GDBN} remote serial protocol includes @dfn{notifications}, 44865packets that require no acknowledgment. Both the GDB and the stub 44866may send notifications (although the only notifications defined at 44867present are sent by the stub). Notifications carry information 44868without incurring the round-trip latency of an acknowledgment, and so 44869are useful for low-impact communications where occasional packet loss 44870is not a problem. 44871 44872A notification packet has the form @samp{% @var{data} # 44873@var{checksum}}, where @var{data} is the content of the notification, 44874and @var{checksum} is a checksum of @var{data}, computed and formatted 44875as for ordinary @value{GDBN} packets. A notification's @var{data} 44876never contains @samp{$}, @samp{%} or @samp{#} characters. Upon 44877receiving a notification, the recipient sends no @samp{+} or @samp{-} 44878to acknowledge the notification's receipt or to report its corruption. 44879 44880Every notification's @var{data} begins with a name, which contains no 44881colon characters, followed by a colon character. 44882 44883Recipients should silently ignore corrupted notifications and 44884notifications they do not understand. Recipients should restart 44885timeout periods on receipt of a well-formed notification, whether or 44886not they understand it. 44887 44888Senders should only send the notifications described here when this 44889protocol description specifies that they are permitted. In the 44890future, we may extend the protocol to permit existing notifications in 44891new contexts; this rule helps older senders avoid confusing newer 44892recipients. 44893 44894(Older versions of @value{GDBN} ignore bytes received until they see 44895the @samp{$} byte that begins an ordinary packet, so new stubs may 44896transmit notifications without fear of confusing older clients. There 44897are no notifications defined for @value{GDBN} to send at the moment, but we 44898assume that most older stubs would ignore them, as well.) 44899 44900Each notification is comprised of three parts: 44901@table @samp 44902@item @var{name}:@var{event} 44903The notification packet is sent by the side that initiates the 44904exchange (currently, only the stub does that), with @var{event} 44905carrying the specific information about the notification, and 44906@var{name} specifying the name of the notification. 44907@item @var{ack} 44908The acknowledge sent by the other side, usually @value{GDBN}, to 44909acknowledge the exchange and request the event. 44910@end table 44911 44912The purpose of an asynchronous notification mechanism is to report to 44913@value{GDBN} that something interesting happened in the remote stub. 44914 44915The remote stub may send notification @var{name}:@var{event} 44916at any time, but @value{GDBN} acknowledges the notification when 44917appropriate. The notification event is pending before @value{GDBN} 44918acknowledges. Only one notification at a time may be pending; if 44919additional events occur before @value{GDBN} has acknowledged the 44920previous notification, they must be queued by the stub for later 44921synchronous transmission in response to @var{ack} packets from 44922@value{GDBN}. Because the notification mechanism is unreliable, 44923the stub is permitted to resend a notification if it believes 44924@value{GDBN} may not have received it. 44925 44926Specifically, notifications may appear when @value{GDBN} is not 44927otherwise reading input from the stub, or when @value{GDBN} is 44928expecting to read a normal synchronous response or a 44929@samp{+}/@samp{-} acknowledgment to a packet it has sent. 44930Notification packets are distinct from any other communication from 44931the stub so there is no ambiguity. 44932 44933After receiving a notification, @value{GDBN} shall acknowledge it by 44934sending a @var{ack} packet as a regular, synchronous request to the 44935stub. Such acknowledgment is not required to happen immediately, as 44936@value{GDBN} is permitted to send other, unrelated packets to the 44937stub first, which the stub should process normally. 44938 44939Upon receiving a @var{ack} packet, if the stub has other queued 44940events to report to @value{GDBN}, it shall respond by sending a 44941normal @var{event}. @value{GDBN} shall then send another @var{ack} 44942packet to solicit further responses; again, it is permitted to send 44943other, unrelated packets as well which the stub should process 44944normally. 44945 44946If the stub receives a @var{ack} packet and there are no additional 44947@var{event} to report, the stub shall return an @samp{OK} response. 44948At this point, @value{GDBN} has finished processing a notification 44949and the stub has completed sending any queued events. @value{GDBN} 44950won't accept any new notifications until the final @samp{OK} is 44951received . If further notification events occur, the stub shall send 44952a new notification, @value{GDBN} shall accept the notification, and 44953the process shall be repeated. 44954 44955The process of asynchronous notification can be illustrated by the 44956following example: 44957@smallexample 44958<- @code{%Stop:T0505:98e7ffbf;04:4ce6ffbf;08:b1b6e54c;thread:p7526.7526;core:0;} 44959@code{...} 44960-> @code{vStopped} 44961<- @code{T0505:68f37db7;04:40f37db7;08:63850408;thread:p7526.7528;core:0;} 44962-> @code{vStopped} 44963<- @code{T0505:68e3fdb6;04:40e3fdb6;08:63850408;thread:p7526.7529;core:0;} 44964-> @code{vStopped} 44965<- @code{OK} 44966@end smallexample 44967 44968The following notifications are defined: 44969@multitable @columnfractions 0.12 0.12 0.38 0.38 44970 44971@item Notification 44972@tab Ack 44973@tab Event 44974@tab Description 44975 44976@item Stop 44977@tab vStopped 44978@tab @var{reply}. The @var{reply} has the form of a stop reply, as 44979described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop}, 44980for information on how these notifications are acknowledged by 44981@value{GDBN}. 44982@tab Report an asynchronous stop event in non-stop mode. 44983 44984@end multitable 44985 44986@node Remote Non-Stop 44987@section Remote Protocol Support for Non-Stop Mode 44988 44989@value{GDBN}'s remote protocol supports non-stop debugging of 44990multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub 44991supports non-stop mode, it should report that to @value{GDBN} by including 44992@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}). 44993 44994@value{GDBN} typically sends a @samp{QNonStop} packet only when 44995establishing a new connection with the stub. Entering non-stop mode 44996does not alter the state of any currently-running threads, but targets 44997must stop all threads in any already-attached processes when entering 44998all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to 44999probe the target state after a mode change. 45000 45001In non-stop mode, when an attached process encounters an event that 45002would otherwise be reported with a stop reply, it uses the 45003asynchronous notification mechanism (@pxref{Notification Packets}) to 45004inform @value{GDBN}. In contrast to all-stop mode, where all threads 45005in all processes are stopped when a stop reply is sent, in non-stop 45006mode only the thread reporting the stop event is stopped. That is, 45007when reporting a @samp{S} or @samp{T} response to indicate completion 45008of a step operation, hitting a breakpoint, or a fault, only the 45009affected thread is stopped; any other still-running threads continue 45010to run. When reporting a @samp{W} or @samp{X} response, all running 45011threads belonging to other attached processes continue to run. 45012 45013In non-stop mode, the target shall respond to the @samp{?} packet as 45014follows. First, any incomplete stop reply notification/@samp{vStopped} 45015sequence in progress is abandoned. The target must begin a new 45016sequence reporting stop events for all stopped threads, whether or not 45017it has previously reported those events to @value{GDBN}. The first 45018stop reply is sent as a synchronous reply to the @samp{?} packet, and 45019subsequent stop replies are sent as responses to @samp{vStopped} packets 45020using the mechanism described above. The target must not send 45021asynchronous stop reply notifications until the sequence is complete. 45022If all threads are running when the target receives the @samp{?} packet, 45023or if the target is not attached to any process, it shall respond 45024@samp{OK}. 45025 45026If the stub supports non-stop mode, it should also support the 45027@samp{swbreak} stop reason if software breakpoints are supported, and 45028the @samp{hwbreak} stop reason if hardware breakpoints are supported 45029(@pxref{swbreak stop reason}). This is because given the asynchronous 45030nature of non-stop mode, between the time a thread hits a breakpoint 45031and the time the event is finally processed by @value{GDBN}, the 45032breakpoint may have already been removed from the target. Due to 45033this, @value{GDBN} needs to be able to tell whether a trap stop was 45034caused by a delayed breakpoint event, which should be ignored, as 45035opposed to a random trap signal, which should be reported to the user. 45036Note the @samp{swbreak} feature implies that the target is responsible 45037for adjusting the PC when a software breakpoint triggers, if 45038necessary, such as on the x86 architecture. 45039 45040@node Packet Acknowledgment 45041@section Packet Acknowledgment 45042 45043@cindex acknowledgment, for @value{GDBN} remote 45044@cindex packet acknowledgment, for @value{GDBN} remote 45045By default, when either the host or the target machine receives a packet, 45046the first response expected is an acknowledgment: either @samp{+} (to indicate 45047the package was received correctly) or @samp{-} (to request retransmission). 45048This mechanism allows the @value{GDBN} remote protocol to operate over 45049unreliable transport mechanisms, such as a serial line. 45050 45051In cases where the transport mechanism is itself reliable (such as a pipe or 45052TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant. 45053It may be desirable to disable them in that case to reduce communication 45054overhead, or for other reasons. This can be accomplished by means of the 45055@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}. 45056 45057When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or 45058expect @samp{+}/@samp{-} protocol acknowledgments. The packet 45059and response format still includes the normal checksum, as described in 45060@ref{Overview}, but the checksum may be ignored by the receiver. 45061 45062If the stub supports @samp{QStartNoAckMode} and prefers to operate in 45063no-acknowledgment mode, it should report that to @value{GDBN} 45064by including @samp{QStartNoAckMode+} in its response to @samp{qSupported}; 45065@pxref{qSupported}. 45066If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been 45067disabled via the @code{set remote noack-packet off} command 45068(@pxref{Remote Configuration}), 45069@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub. 45070Only then may the stub actually turn off packet acknowledgments. 45071@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK} 45072response, which can be safely ignored by the stub. 45073 45074Note that @code{set remote noack-packet} command only affects negotiation 45075between @value{GDBN} and the stub when subsequent connections are made; 45076it does not affect the protocol acknowledgment state for any current 45077connection. 45078Since @samp{+}/@samp{-} acknowledgments are enabled by default when a 45079new connection is established, 45080there is also no protocol request to re-enable the acknowledgments 45081for the current connection, once disabled. 45082 45083@node Examples 45084@section Examples 45085 45086Example sequence of a target being re-started. Notice how the restart 45087does not get any direct output: 45088 45089@smallexample 45090-> @code{R00} 45091<- @code{+} 45092@emph{target restarts} 45093-> @code{?} 45094<- @code{+} 45095<- @code{T001:1234123412341234} 45096-> @code{+} 45097@end smallexample 45098 45099Example sequence of a target being stepped by a single instruction: 45100 45101@smallexample 45102-> @code{G1445@dots{}} 45103<- @code{+} 45104-> @code{s} 45105<- @code{+} 45106@emph{time passes} 45107<- @code{T001:1234123412341234} 45108-> @code{+} 45109-> @code{g} 45110<- @code{+} 45111<- @code{1455@dots{}} 45112-> @code{+} 45113@end smallexample 45114 45115@node File-I/O Remote Protocol Extension 45116@section File-I/O Remote Protocol Extension 45117@cindex File-I/O remote protocol extension 45118 45119@menu 45120* File-I/O Overview:: 45121* Protocol Basics:: 45122* The F Request Packet:: 45123* The F Reply Packet:: 45124* The Ctrl-C Message:: 45125* Console I/O:: 45126* List of Supported Calls:: 45127* Protocol-specific Representation of Datatypes:: 45128* Constants:: 45129* File-I/O Examples:: 45130@end menu 45131 45132@node File-I/O Overview 45133@subsection File-I/O Overview 45134@cindex file-i/o overview 45135 45136The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the 45137target to use the host's file system and console I/O to perform various 45138system calls. System calls on the target system are translated into a 45139remote protocol packet to the host system, which then performs the needed 45140actions and returns a response packet to the target system. 45141This simulates file system operations even on targets that lack file systems. 45142 45143The protocol is defined to be independent of both the host and target systems. 45144It uses its own internal representation of datatypes and values. Both 45145@value{GDBN} and the target's @value{GDBN} stub are responsible for 45146translating the system-dependent value representations into the internal 45147protocol representations when data is transmitted. 45148 45149The communication is synchronous. A system call is possible only when 45150@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S} 45151or @samp{s} packets. While @value{GDBN} handles the request for a system call, 45152the target is stopped to allow deterministic access to the target's 45153memory. Therefore File-I/O is not interruptible by target signals. On 45154the other hand, it is possible to interrupt File-I/O by a user interrupt 45155(@samp{Ctrl-C}) within @value{GDBN}. 45156 45157The target's request to perform a host system call does not finish 45158the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means, 45159after finishing the system call, the target returns to continuing the 45160previous activity (continue, step). No additional continue or step 45161request from @value{GDBN} is required. 45162 45163@smallexample 45164(@value{GDBP}) continue 45165 <- target requests 'system call X' 45166 target is stopped, @value{GDBN} executes system call 45167 -> @value{GDBN} returns result 45168 ... target continues, @value{GDBN} returns to wait for the target 45169 <- target hits breakpoint and sends a Txx packet 45170@end smallexample 45171 45172The protocol only supports I/O on the console and to regular files on 45173the host file system. Character or block special devices, pipes, 45174named pipes, sockets or any other communication method on the host 45175system are not supported by this protocol. 45176 45177File I/O is not supported in non-stop mode. 45178 45179@node Protocol Basics 45180@subsection Protocol Basics 45181@cindex protocol basics, file-i/o 45182 45183The File-I/O protocol uses the @code{F} packet as the request as well 45184as reply packet. Since a File-I/O system call can only occur when 45185@value{GDBN} is waiting for a response from the continuing or stepping target, 45186the File-I/O request is a reply that @value{GDBN} has to expect as a result 45187of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet. 45188This @code{F} packet contains all information needed to allow @value{GDBN} 45189to call the appropriate host system call: 45190 45191@itemize @bullet 45192@item 45193A unique identifier for the requested system call. 45194 45195@item 45196All parameters to the system call. Pointers are given as addresses 45197in the target memory address space. Pointers to strings are given as 45198pointer/length pair. Numerical values are given as they are. 45199Numerical control flags are given in a protocol-specific representation. 45200 45201@end itemize 45202 45203At this point, @value{GDBN} has to perform the following actions. 45204 45205@itemize @bullet 45206@item 45207If the parameters include pointer values to data needed as input to a 45208system call, @value{GDBN} requests this data from the target with a 45209standard @code{m} packet request. This additional communication has to be 45210expected by the target implementation and is handled as any other @code{m} 45211packet. 45212 45213@item 45214@value{GDBN} translates all value from protocol representation to host 45215representation as needed. Datatypes are coerced into the host types. 45216 45217@item 45218@value{GDBN} calls the system call. 45219 45220@item 45221It then coerces datatypes back to protocol representation. 45222 45223@item 45224If the system call is expected to return data in buffer space specified 45225by pointer parameters to the call, the data is transmitted to the 45226target using a @code{M} or @code{X} packet. This packet has to be expected 45227by the target implementation and is handled as any other @code{M} or @code{X} 45228packet. 45229 45230@end itemize 45231 45232Eventually @value{GDBN} replies with another @code{F} packet which contains all 45233necessary information for the target to continue. This at least contains 45234 45235@itemize @bullet 45236@item 45237Return value. 45238 45239@item 45240@code{errno}, if has been changed by the system call. 45241 45242@item 45243``Ctrl-C'' flag. 45244 45245@end itemize 45246 45247After having done the needed type and value coercion, the target continues 45248the latest continue or step action. 45249 45250@node The F Request Packet 45251@subsection The @code{F} Request Packet 45252@cindex file-i/o request packet 45253@cindex @code{F} request packet 45254 45255The @code{F} request packet has the following format: 45256 45257@table @samp 45258@item F@var{call-id},@var{parameter@dots{}} 45259 45260@var{call-id} is the identifier to indicate the host system call to be called. 45261This is just the name of the function. 45262 45263@var{parameter@dots{}} are the parameters to the system call. 45264Parameters are hexadecimal integer values, either the actual values in case 45265of scalar datatypes, pointers to target buffer space in case of compound 45266datatypes and unspecified memory areas, or pointer/length pairs in case 45267of string parameters. These are appended to the @var{call-id} as a 45268comma-delimited list. All values are transmitted in ASCII 45269string representation, pointer/length pairs separated by a slash. 45270 45271@end table 45272 45273 45274 45275@node The F Reply Packet 45276@subsection The @code{F} Reply Packet 45277@cindex file-i/o reply packet 45278@cindex @code{F} reply packet 45279 45280The @code{F} reply packet has the following format: 45281 45282@table @samp 45283 45284@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment} 45285 45286@var{retcode} is the return code of the system call as hexadecimal value. 45287 45288@var{errno} is the @code{errno} set by the call, in protocol-specific 45289representation. 45290This parameter can be omitted if the call was successful. 45291 45292@var{Ctrl-C flag} is only sent if the user requested a break. In this 45293case, @var{errno} must be sent as well, even if the call was successful. 45294The @var{Ctrl-C flag} itself consists of the character @samp{C}: 45295 45296@smallexample 45297F0,0,C 45298@end smallexample 45299 45300@noindent 45301or, if the call was interrupted before the host call has been performed: 45302 45303@smallexample 45304F-1,4,C 45305@end smallexample 45306 45307@noindent 45308assuming 4 is the protocol-specific representation of @code{EINTR}. 45309 45310@end table 45311 45312 45313@node The Ctrl-C Message 45314@subsection The @samp{Ctrl-C} Message 45315@cindex ctrl-c message, in file-i/o protocol 45316 45317If the @samp{Ctrl-C} flag is set in the @value{GDBN} 45318reply packet (@pxref{The F Reply Packet}), 45319the target should behave as if it had 45320gotten a break message. The meaning for the target is ``system call 45321interrupted by @code{SIGINT}''. Consequentially, the target should actually stop 45322(as with a break message) and return to @value{GDBN} with a @code{T02} 45323packet. 45324 45325It's important for the target to know in which 45326state the system call was interrupted. There are two possible cases: 45327 45328@itemize @bullet 45329@item 45330The system call hasn't been performed on the host yet. 45331 45332@item 45333The system call on the host has been finished. 45334 45335@end itemize 45336 45337These two states can be distinguished by the target by the value of the 45338returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system 45339call hasn't been performed. This is equivalent to the @code{EINTR} handling 45340on POSIX systems. In any other case, the target may presume that the 45341system call has been finished --- successfully or not --- and should behave 45342as if the break message arrived right after the system call. 45343 45344@value{GDBN} must behave reliably. If the system call has not been called 45345yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as 45346@code{errno} in the packet. If the system call on the host has been finished 45347before the user requests a break, the full action must be finished by 45348@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary. 45349The @code{F} packet may only be sent when either nothing has happened 45350or the full action has been completed. 45351 45352@node Console I/O 45353@subsection Console I/O 45354@cindex console i/o as part of file-i/o 45355 45356By default and if not explicitly closed by the target system, the file 45357descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output 45358on the @value{GDBN} console is handled as any other file output operation 45359(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled 45360by @value{GDBN} so that after the target read request from file descriptor 453610 all following typing is buffered until either one of the following 45362conditions is met: 45363 45364@itemize @bullet 45365@item 45366The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the 45367@code{read} 45368system call is treated as finished. 45369 45370@item 45371The user presses @key{RET}. This is treated as end of input with a trailing 45372newline. 45373 45374@item 45375The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing 45376character (neither newline nor @samp{Ctrl-D}) is appended to the input. 45377 45378@end itemize 45379 45380If the user has typed more characters than fit in the buffer given to 45381the @code{read} call, the trailing characters are buffered in @value{GDBN} until 45382either another @code{read(0, @dots{})} is requested by the target, or debugging 45383is stopped at the user's request. 45384 45385 45386@node List of Supported Calls 45387@subsection List of Supported Calls 45388@cindex list of supported file-i/o calls 45389 45390@menu 45391* open:: 45392* close:: 45393* read:: 45394* write:: 45395* lseek:: 45396* rename:: 45397* unlink:: 45398* stat/fstat:: 45399* gettimeofday:: 45400* isatty:: 45401* system:: 45402@end menu 45403 45404@node open 45405@unnumberedsubsubsec open 45406@cindex open, file-i/o system call 45407 45408@table @asis 45409@item Synopsis: 45410@smallexample 45411int open(const char *pathname, int flags); 45412int open(const char *pathname, int flags, mode_t mode); 45413@end smallexample 45414 45415@item Request: 45416@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}} 45417 45418@noindent 45419@var{flags} is the bitwise @code{OR} of the following values: 45420 45421@table @code 45422@item O_CREAT 45423If the file does not exist it will be created. The host 45424rules apply as far as file ownership and time stamps 45425are concerned. 45426 45427@item O_EXCL 45428When used with @code{O_CREAT}, if the file already exists it is 45429an error and open() fails. 45430 45431@item O_TRUNC 45432If the file already exists and the open mode allows 45433writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be 45434truncated to zero length. 45435 45436@item O_APPEND 45437The file is opened in append mode. 45438 45439@item O_RDONLY 45440The file is opened for reading only. 45441 45442@item O_WRONLY 45443The file is opened for writing only. 45444 45445@item O_RDWR 45446The file is opened for reading and writing. 45447@end table 45448 45449@noindent 45450Other bits are silently ignored. 45451 45452 45453@noindent 45454@var{mode} is the bitwise @code{OR} of the following values: 45455 45456@table @code 45457@item S_IRUSR 45458User has read permission. 45459 45460@item S_IWUSR 45461User has write permission. 45462 45463@item S_IRGRP 45464Group has read permission. 45465 45466@item S_IWGRP 45467Group has write permission. 45468 45469@item S_IROTH 45470Others have read permission. 45471 45472@item S_IWOTH 45473Others have write permission. 45474@end table 45475 45476@noindent 45477Other bits are silently ignored. 45478 45479 45480@item Return value: 45481@code{open} returns the new file descriptor or -1 if an error 45482occurred. 45483 45484@item Errors: 45485 45486@table @code 45487@item EEXIST 45488@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used. 45489 45490@item EISDIR 45491@var{pathname} refers to a directory. 45492 45493@item EACCES 45494The requested access is not allowed. 45495 45496@item ENAMETOOLONG 45497@var{pathname} was too long. 45498 45499@item ENOENT 45500A directory component in @var{pathname} does not exist. 45501 45502@item ENODEV 45503@var{pathname} refers to a device, pipe, named pipe or socket. 45504 45505@item EROFS 45506@var{pathname} refers to a file on a read-only filesystem and 45507write access was requested. 45508 45509@item EFAULT 45510@var{pathname} is an invalid pointer value. 45511 45512@item ENOSPC 45513No space on device to create the file. 45514 45515@item EMFILE 45516The process already has the maximum number of files open. 45517 45518@item ENFILE 45519The limit on the total number of files open on the system 45520has been reached. 45521 45522@item EINTR 45523The call was interrupted by the user. 45524@end table 45525 45526@end table 45527 45528@node close 45529@unnumberedsubsubsec close 45530@cindex close, file-i/o system call 45531 45532@table @asis 45533@item Synopsis: 45534@smallexample 45535int close(int fd); 45536@end smallexample 45537 45538@item Request: 45539@samp{Fclose,@var{fd}} 45540 45541@item Return value: 45542@code{close} returns zero on success, or -1 if an error occurred. 45543 45544@item Errors: 45545 45546@table @code 45547@item EBADF 45548@var{fd} isn't a valid open file descriptor. 45549 45550@item EINTR 45551The call was interrupted by the user. 45552@end table 45553 45554@end table 45555 45556@node read 45557@unnumberedsubsubsec read 45558@cindex read, file-i/o system call 45559 45560@table @asis 45561@item Synopsis: 45562@smallexample 45563int read(int fd, void *buf, unsigned int count); 45564@end smallexample 45565 45566@item Request: 45567@samp{Fread,@var{fd},@var{bufptr},@var{count}} 45568 45569@item Return value: 45570On success, the number of bytes read is returned. 45571Zero indicates end of file. If count is zero, read 45572returns zero as well. On error, -1 is returned. 45573 45574@item Errors: 45575 45576@table @code 45577@item EBADF 45578@var{fd} is not a valid file descriptor or is not open for 45579reading. 45580 45581@item EFAULT 45582@var{bufptr} is an invalid pointer value. 45583 45584@item EINTR 45585The call was interrupted by the user. 45586@end table 45587 45588@end table 45589 45590@node write 45591@unnumberedsubsubsec write 45592@cindex write, file-i/o system call 45593 45594@table @asis 45595@item Synopsis: 45596@smallexample 45597int write(int fd, const void *buf, unsigned int count); 45598@end smallexample 45599 45600@item Request: 45601@samp{Fwrite,@var{fd},@var{bufptr},@var{count}} 45602 45603@item Return value: 45604On success, the number of bytes written are returned. 45605Zero indicates nothing was written. On error, -1 45606is returned. 45607 45608@item Errors: 45609 45610@table @code 45611@item EBADF 45612@var{fd} is not a valid file descriptor or is not open for 45613writing. 45614 45615@item EFAULT 45616@var{bufptr} is an invalid pointer value. 45617 45618@item EFBIG 45619An attempt was made to write a file that exceeds the 45620host-specific maximum file size allowed. 45621 45622@item ENOSPC 45623No space on device to write the data. 45624 45625@item EINTR 45626The call was interrupted by the user. 45627@end table 45628 45629@end table 45630 45631@node lseek 45632@unnumberedsubsubsec lseek 45633@cindex lseek, file-i/o system call 45634 45635@table @asis 45636@item Synopsis: 45637@smallexample 45638long lseek (int fd, long offset, int flag); 45639@end smallexample 45640 45641@item Request: 45642@samp{Flseek,@var{fd},@var{offset},@var{flag}} 45643 45644@var{flag} is one of: 45645 45646@table @code 45647@item SEEK_SET 45648The offset is set to @var{offset} bytes. 45649 45650@item SEEK_CUR 45651The offset is set to its current location plus @var{offset} 45652bytes. 45653 45654@item SEEK_END 45655The offset is set to the size of the file plus @var{offset} 45656bytes. 45657@end table 45658 45659@item Return value: 45660On success, the resulting unsigned offset in bytes from 45661the beginning of the file is returned. Otherwise, a 45662value of -1 is returned. 45663 45664@item Errors: 45665 45666@table @code 45667@item EBADF 45668@var{fd} is not a valid open file descriptor. 45669 45670@item ESPIPE 45671@var{fd} is associated with the @value{GDBN} console. 45672 45673@item EINVAL 45674@var{flag} is not a proper value. 45675 45676@item EINTR 45677The call was interrupted by the user. 45678@end table 45679 45680@end table 45681 45682@node rename 45683@unnumberedsubsubsec rename 45684@cindex rename, file-i/o system call 45685 45686@table @asis 45687@item Synopsis: 45688@smallexample 45689int rename(const char *oldpath, const char *newpath); 45690@end smallexample 45691 45692@item Request: 45693@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}} 45694 45695@item Return value: 45696On success, zero is returned. On error, -1 is returned. 45697 45698@item Errors: 45699 45700@table @code 45701@item EISDIR 45702@var{newpath} is an existing directory, but @var{oldpath} is not a 45703directory. 45704 45705@item EEXIST 45706@var{newpath} is a non-empty directory. 45707 45708@item EBUSY 45709@var{oldpath} or @var{newpath} is a directory that is in use by some 45710process. 45711 45712@item EINVAL 45713An attempt was made to make a directory a subdirectory 45714of itself. 45715 45716@item ENOTDIR 45717A component used as a directory in @var{oldpath} or new 45718path is not a directory. Or @var{oldpath} is a directory 45719and @var{newpath} exists but is not a directory. 45720 45721@item EFAULT 45722@var{oldpathptr} or @var{newpathptr} are invalid pointer values. 45723 45724@item EACCES 45725No access to the file or the path of the file. 45726 45727@item ENAMETOOLONG 45728 45729@var{oldpath} or @var{newpath} was too long. 45730 45731@item ENOENT 45732A directory component in @var{oldpath} or @var{newpath} does not exist. 45733 45734@item EROFS 45735The file is on a read-only filesystem. 45736 45737@item ENOSPC 45738The device containing the file has no room for the new 45739directory entry. 45740 45741@item EINTR 45742The call was interrupted by the user. 45743@end table 45744 45745@end table 45746 45747@node unlink 45748@unnumberedsubsubsec unlink 45749@cindex unlink, file-i/o system call 45750 45751@table @asis 45752@item Synopsis: 45753@smallexample 45754int unlink(const char *pathname); 45755@end smallexample 45756 45757@item Request: 45758@samp{Funlink,@var{pathnameptr}/@var{len}} 45759 45760@item Return value: 45761On success, zero is returned. On error, -1 is returned. 45762 45763@item Errors: 45764 45765@table @code 45766@item EACCES 45767No access to the file or the path of the file. 45768 45769@item EPERM 45770The system does not allow unlinking of directories. 45771 45772@item EBUSY 45773The file @var{pathname} cannot be unlinked because it's 45774being used by another process. 45775 45776@item EFAULT 45777@var{pathnameptr} is an invalid pointer value. 45778 45779@item ENAMETOOLONG 45780@var{pathname} was too long. 45781 45782@item ENOENT 45783A directory component in @var{pathname} does not exist. 45784 45785@item ENOTDIR 45786A component of the path is not a directory. 45787 45788@item EROFS 45789The file is on a read-only filesystem. 45790 45791@item EINTR 45792The call was interrupted by the user. 45793@end table 45794 45795@end table 45796 45797@node stat/fstat 45798@unnumberedsubsubsec stat/fstat 45799@cindex fstat, file-i/o system call 45800@cindex stat, file-i/o system call 45801 45802@table @asis 45803@item Synopsis: 45804@smallexample 45805int stat(const char *pathname, struct stat *buf); 45806int fstat(int fd, struct stat *buf); 45807@end smallexample 45808 45809@item Request: 45810@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@* 45811@samp{Ffstat,@var{fd},@var{bufptr}} 45812 45813@item Return value: 45814On success, zero is returned. On error, -1 is returned. 45815 45816@item Errors: 45817 45818@table @code 45819@item EBADF 45820@var{fd} is not a valid open file. 45821 45822@item ENOENT 45823A directory component in @var{pathname} does not exist or the 45824path is an empty string. 45825 45826@item ENOTDIR 45827A component of the path is not a directory. 45828 45829@item EFAULT 45830@var{pathnameptr} is an invalid pointer value. 45831 45832@item EACCES 45833No access to the file or the path of the file. 45834 45835@item ENAMETOOLONG 45836@var{pathname} was too long. 45837 45838@item EINTR 45839The call was interrupted by the user. 45840@end table 45841 45842@end table 45843 45844@node gettimeofday 45845@unnumberedsubsubsec gettimeofday 45846@cindex gettimeofday, file-i/o system call 45847 45848@table @asis 45849@item Synopsis: 45850@smallexample 45851int gettimeofday(struct timeval *tv, void *tz); 45852@end smallexample 45853 45854@item Request: 45855@samp{Fgettimeofday,@var{tvptr},@var{tzptr}} 45856 45857@item Return value: 45858On success, 0 is returned, -1 otherwise. 45859 45860@item Errors: 45861 45862@table @code 45863@item EINVAL 45864@var{tz} is a non-NULL pointer. 45865 45866@item EFAULT 45867@var{tvptr} and/or @var{tzptr} is an invalid pointer value. 45868@end table 45869 45870@end table 45871 45872@node isatty 45873@unnumberedsubsubsec isatty 45874@cindex isatty, file-i/o system call 45875 45876@table @asis 45877@item Synopsis: 45878@smallexample 45879int isatty(int fd); 45880@end smallexample 45881 45882@item Request: 45883@samp{Fisatty,@var{fd}} 45884 45885@item Return value: 45886Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise. 45887 45888@item Errors: 45889 45890@table @code 45891@item EINTR 45892The call was interrupted by the user. 45893@end table 45894 45895@end table 45896 45897Note that the @code{isatty} call is treated as a special case: it returns 458981 to the target if the file descriptor is attached 45899to the @value{GDBN} console, 0 otherwise. Implementing through system calls 45900would require implementing @code{ioctl} and would be more complex than 45901needed. 45902 45903 45904@node system 45905@unnumberedsubsubsec system 45906@cindex system, file-i/o system call 45907 45908@table @asis 45909@item Synopsis: 45910@smallexample 45911int system(const char *command); 45912@end smallexample 45913 45914@item Request: 45915@samp{Fsystem,@var{commandptr}/@var{len}} 45916 45917@item Return value: 45918If @var{len} is zero, the return value indicates whether a shell is 45919available. A zero return value indicates a shell is not available. 45920For non-zero @var{len}, the value returned is -1 on error and the 45921return status of the command otherwise. Only the exit status of the 45922command is returned, which is extracted from the host's @code{system} 45923return value by calling @code{WEXITSTATUS(retval)}. In case 45924@file{/bin/sh} could not be executed, 127 is returned. 45925 45926@item Errors: 45927 45928@table @code 45929@item EINTR 45930The call was interrupted by the user. 45931@end table 45932 45933@end table 45934 45935@value{GDBN} takes over the full task of calling the necessary host calls 45936to perform the @code{system} call. The return value of @code{system} on 45937the host is simplified before it's returned 45938to the target. Any termination signal information from the child process 45939is discarded, and the return value consists 45940entirely of the exit status of the called command. 45941 45942Due to security concerns, the @code{system} call is by default refused 45943by @value{GDBN}. The user has to allow this call explicitly with the 45944@code{set remote system-call-allowed 1} command. 45945 45946@table @code 45947@item set remote system-call-allowed 45948@kindex set remote system-call-allowed 45949Control whether to allow the @code{system} calls in the File I/O 45950protocol for the remote target. The default is zero (disabled). 45951 45952@item show remote system-call-allowed 45953@kindex show remote system-call-allowed 45954Show whether the @code{system} calls are allowed in the File I/O 45955protocol. 45956@end table 45957 45958@node Protocol-specific Representation of Datatypes 45959@subsection Protocol-specific Representation of Datatypes 45960@cindex protocol-specific representation of datatypes, in file-i/o protocol 45961 45962@menu 45963* Integral Datatypes:: 45964* Pointer Values:: 45965* Memory Transfer:: 45966* struct stat:: 45967* struct timeval:: 45968@end menu 45969 45970@node Integral Datatypes 45971@unnumberedsubsubsec Integral Datatypes 45972@cindex integral datatypes, in file-i/o protocol 45973 45974The integral datatypes used in the system calls are @code{int}, 45975@code{unsigned int}, @code{long}, @code{unsigned long}, 45976@code{mode_t}, and @code{time_t}. 45977 45978@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are 45979implemented as 32 bit values in this protocol. 45980 45981@code{long} and @code{unsigned long} are implemented as 64 bit types. 45982 45983@xref{Limits}, for corresponding MIN and MAX values (similar to those 45984in @file{limits.h}) to allow range checking on host and target. 45985 45986@code{time_t} datatypes are defined as seconds since the Epoch. 45987 45988All integral datatypes transferred as part of a memory read or write of a 45989structured datatype e.g.@: a @code{struct stat} have to be given in big endian 45990byte order. 45991 45992@node Pointer Values 45993@unnumberedsubsubsec Pointer Values 45994@cindex pointer values, in file-i/o protocol 45995 45996Pointers to target data are transmitted as they are. An exception 45997is made for pointers to buffers for which the length isn't 45998transmitted as part of the function call, namely strings. Strings 45999are transmitted as a pointer/length pair, both as hex values, e.g.@: 46000 46001@smallexample 46002@code{1aaf/12} 46003@end smallexample 46004 46005@noindent 46006which is a pointer to data of length 18 bytes at position 0x1aaf. 46007The length is defined as the full string length in bytes, including 46008the trailing null byte. For example, the string @code{"hello world"} 46009at address 0x123456 is transmitted as 46010 46011@smallexample 46012@code{123456/d} 46013@end smallexample 46014 46015@node Memory Transfer 46016@unnumberedsubsubsec Memory Transfer 46017@cindex memory transfer, in file-i/o protocol 46018 46019Structured data which is transferred using a memory read or write (for 46020example, a @code{struct stat}) is expected to be in a protocol-specific format 46021with all scalar multibyte datatypes being big endian. Translation to 46022this representation needs to be done both by the target before the @code{F} 46023packet is sent, and by @value{GDBN} before 46024it transfers memory to the target. Transferred pointers to structured 46025data should point to the already-coerced data at any time. 46026 46027 46028@node struct stat 46029@unnumberedsubsubsec struct stat 46030@cindex struct stat, in file-i/o protocol 46031 46032The buffer of type @code{struct stat} used by the target and @value{GDBN} 46033is defined as follows: 46034 46035@smallexample 46036struct stat @{ 46037 unsigned int st_dev; /* device */ 46038 unsigned int st_ino; /* inode */ 46039 mode_t st_mode; /* protection */ 46040 unsigned int st_nlink; /* number of hard links */ 46041 unsigned int st_uid; /* user ID of owner */ 46042 unsigned int st_gid; /* group ID of owner */ 46043 unsigned int st_rdev; /* device type (if inode device) */ 46044 unsigned long st_size; /* total size, in bytes */ 46045 unsigned long st_blksize; /* blocksize for filesystem I/O */ 46046 unsigned long st_blocks; /* number of blocks allocated */ 46047 time_t st_atime; /* time of last access */ 46048 time_t st_mtime; /* time of last modification */ 46049 time_t st_ctime; /* time of last change */ 46050@}; 46051@end smallexample 46052 46053The integral datatypes conform to the definitions given in the 46054appropriate section (see @ref{Integral Datatypes}, for details) so this 46055structure is of size 64 bytes. 46056 46057The values of several fields have a restricted meaning and/or 46058range of values. 46059 46060@table @code 46061 46062@item st_dev 46063A value of 0 represents a file, 1 the console. 46064 46065@item st_ino 46066No valid meaning for the target. Transmitted unchanged. 46067 46068@item st_mode 46069Valid mode bits are described in @ref{Constants}. Any other 46070bits have currently no meaning for the target. 46071 46072@item st_uid 46073@itemx st_gid 46074@itemx st_rdev 46075No valid meaning for the target. Transmitted unchanged. 46076 46077@item st_atime 46078@itemx st_mtime 46079@itemx st_ctime 46080These values have a host and file system dependent 46081accuracy. Especially on Windows hosts, the file system may not 46082support exact timing values. 46083@end table 46084 46085The target gets a @code{struct stat} of the above representation and is 46086responsible for coercing it to the target representation before 46087continuing. 46088 46089Note that due to size differences between the host, target, and protocol 46090representations of @code{struct stat} members, these members could eventually 46091get truncated on the target. 46092 46093@node struct timeval 46094@unnumberedsubsubsec struct timeval 46095@cindex struct timeval, in file-i/o protocol 46096 46097The buffer of type @code{struct timeval} used by the File-I/O protocol 46098is defined as follows: 46099 46100@smallexample 46101struct timeval @{ 46102 time_t tv_sec; /* second */ 46103 long tv_usec; /* microsecond */ 46104@}; 46105@end smallexample 46106 46107The integral datatypes conform to the definitions given in the 46108appropriate section (see @ref{Integral Datatypes}, for details) so this 46109structure is of size 8 bytes. 46110 46111@node Constants 46112@subsection Constants 46113@cindex constants, in file-i/o protocol 46114 46115The following values are used for the constants inside of the 46116protocol. @value{GDBN} and target are responsible for translating these 46117values before and after the call as needed. 46118 46119@menu 46120* Open Flags:: 46121* mode_t Values:: 46122* Errno Values:: 46123* Lseek Flags:: 46124* Limits:: 46125@end menu 46126 46127@node Open Flags 46128@unnumberedsubsubsec Open Flags 46129@cindex open flags, in file-i/o protocol 46130 46131All values are given in hexadecimal representation. 46132 46133@smallexample 46134 O_RDONLY 0x0 46135 O_WRONLY 0x1 46136 O_RDWR 0x2 46137 O_APPEND 0x8 46138 O_CREAT 0x200 46139 O_TRUNC 0x400 46140 O_EXCL 0x800 46141@end smallexample 46142 46143@node mode_t Values 46144@unnumberedsubsubsec mode_t Values 46145@cindex mode_t values, in file-i/o protocol 46146 46147All values are given in octal representation. 46148 46149@smallexample 46150 S_IFREG 0100000 46151 S_IFDIR 040000 46152 S_IRUSR 0400 46153 S_IWUSR 0200 46154 S_IXUSR 0100 46155 S_IRGRP 040 46156 S_IWGRP 020 46157 S_IXGRP 010 46158 S_IROTH 04 46159 S_IWOTH 02 46160 S_IXOTH 01 46161@end smallexample 46162 46163@node Errno Values 46164@unnumberedsubsubsec Errno Values 46165@cindex errno values, in file-i/o protocol 46166 46167All values are given in decimal representation. 46168 46169@smallexample 46170 EPERM 1 46171 ENOENT 2 46172 EINTR 4 46173 EBADF 9 46174 EACCES 13 46175 EFAULT 14 46176 EBUSY 16 46177 EEXIST 17 46178 ENODEV 19 46179 ENOTDIR 20 46180 EISDIR 21 46181 EINVAL 22 46182 ENFILE 23 46183 EMFILE 24 46184 EFBIG 27 46185 ENOSPC 28 46186 ESPIPE 29 46187 EROFS 30 46188 ENAMETOOLONG 91 46189 EUNKNOWN 9999 46190@end smallexample 46191 46192 @code{EUNKNOWN} is used as a fallback error value if a host system returns 46193 any error value not in the list of supported error numbers. 46194 46195@node Lseek Flags 46196@unnumberedsubsubsec Lseek Flags 46197@cindex lseek flags, in file-i/o protocol 46198 46199@smallexample 46200 SEEK_SET 0 46201 SEEK_CUR 1 46202 SEEK_END 2 46203@end smallexample 46204 46205@node Limits 46206@unnumberedsubsubsec Limits 46207@cindex limits, in file-i/o protocol 46208 46209All values are given in decimal representation. 46210 46211@smallexample 46212 INT_MIN -2147483648 46213 INT_MAX 2147483647 46214 UINT_MAX 4294967295 46215 LONG_MIN -9223372036854775808 46216 LONG_MAX 9223372036854775807 46217 ULONG_MAX 18446744073709551615 46218@end smallexample 46219 46220@node File-I/O Examples 46221@subsection File-I/O Examples 46222@cindex file-i/o examples 46223 46224Example sequence of a write call, file descriptor 3, buffer is at target 46225address 0x1234, 6 bytes should be written: 46226 46227@smallexample 46228<- @code{Fwrite,3,1234,6} 46229@emph{request memory read from target} 46230-> @code{m1234,6} 46231<- XXXXXX 46232@emph{return "6 bytes written"} 46233-> @code{F6} 46234@end smallexample 46235 46236Example sequence of a read call, file descriptor 3, buffer is at target 46237address 0x1234, 6 bytes should be read: 46238 46239@smallexample 46240<- @code{Fread,3,1234,6} 46241@emph{request memory write to target} 46242-> @code{X1234,6:XXXXXX} 46243@emph{return "6 bytes read"} 46244-> @code{F6} 46245@end smallexample 46246 46247Example sequence of a read call, call fails on the host due to invalid 46248file descriptor (@code{EBADF}): 46249 46250@smallexample 46251<- @code{Fread,3,1234,6} 46252-> @code{F-1,9} 46253@end smallexample 46254 46255Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on 46256host is called: 46257 46258@smallexample 46259<- @code{Fread,3,1234,6} 46260-> @code{F-1,4,C} 46261<- @code{T02} 46262@end smallexample 46263 46264Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on 46265host is called: 46266 46267@smallexample 46268<- @code{Fread,3,1234,6} 46269-> @code{X1234,6:XXXXXX} 46270<- @code{T02} 46271@end smallexample 46272 46273@node Library List Format 46274@section Library List Format 46275@cindex library list format, remote protocol 46276 46277On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the 46278same process as your application to manage libraries. In this case, 46279@value{GDBN} can use the loader's symbol table and normal memory 46280operations to maintain a list of shared libraries. On other 46281platforms, the operating system manages loaded libraries. 46282@value{GDBN} can not retrieve the list of currently loaded libraries 46283through memory operations, so it uses the @samp{qXfer:libraries:read} 46284packet (@pxref{qXfer library list read}) instead. The remote stub 46285queries the target's operating system and reports which libraries 46286are loaded. 46287 46288The @samp{qXfer:libraries:read} packet returns an XML document which 46289lists loaded libraries and their offsets. Each library has an 46290associated name and one or more segment or section base addresses, 46291which report where the library was loaded in memory. 46292 46293For the common case of libraries that are fully linked binaries, the 46294library should have a list of segments. If the target supports 46295dynamic linking of a relocatable object file, its library XML element 46296should instead include a list of allocated sections. The segment or 46297section bases are start addresses, not relocation offsets; they do not 46298depend on the library's link-time base addresses. 46299 46300@value{GDBN} must be linked with the Expat library to support XML 46301library lists. @xref{Expat}. 46302 46303A simple memory map, with one loaded library relocated by a single 46304offset, looks like this: 46305 46306@smallexample 46307<library-list> 46308 <library name="/lib/libc.so.6"> 46309 <segment address="0x10000000"/> 46310 </library> 46311</library-list> 46312@end smallexample 46313 46314Another simple memory map, with one loaded library with three 46315allocated sections (.text, .data, .bss), looks like this: 46316 46317@smallexample 46318<library-list> 46319 <library name="sharedlib.o"> 46320 <section address="0x10000000"/> 46321 <section address="0x20000000"/> 46322 <section address="0x30000000"/> 46323 </library> 46324</library-list> 46325@end smallexample 46326 46327The format of a library list is described by this DTD: 46328 46329@smallexample 46330<!-- library-list: Root element with versioning --> 46331<!ELEMENT library-list (library)*> 46332<!ATTLIST library-list version CDATA #FIXED "1.0"> 46333<!ELEMENT library (segment*, section*)> 46334<!ATTLIST library name CDATA #REQUIRED> 46335<!ELEMENT segment EMPTY> 46336<!ATTLIST segment address CDATA #REQUIRED> 46337<!ELEMENT section EMPTY> 46338<!ATTLIST section address CDATA #REQUIRED> 46339@end smallexample 46340 46341In addition, segments and section descriptors cannot be mixed within a 46342single library element, and you must supply at least one segment or 46343section for each library. 46344 46345@node Library List Format for SVR4 Targets 46346@section Library List Format for SVR4 Targets 46347@cindex library list format, remote protocol 46348 46349On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader 46350(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of 46351shared libraries. Still a special library list provided by this packet is 46352more efficient for the @value{GDBN} remote protocol. 46353 46354The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists 46355loaded libraries and their SVR4 linker parameters. For each library on SVR4 46356target, the following parameters are reported: 46357 46358@itemize @minus 46359@item 46360@code{name}, the absolute file name from the @code{l_name} field of 46361@code{struct link_map}. 46362@item 46363@code{lm} with address of @code{struct link_map} used for TLS 46364(Thread Local Storage) access. 46365@item 46366@code{l_addr}, the displacement as read from the field @code{l_addr} of 46367@code{struct link_map}. For prelinked libraries this is not an absolute 46368memory address. It is a displacement of absolute memory address against 46369address the file was prelinked to during the library load. 46370@item 46371@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment 46372@item 46373@code{lmid}, which is an identifier for a linker namespace, such as 46374the memory address of the @code{r_debug} object that contains this 46375namespace's load map or the namespace identifier returned by 46376@code{dlinfo (3)}. 46377@end itemize 46378 46379Additionally the single @code{main-lm} attribute specifies address of 46380@code{struct link_map} used for the main executable. This parameter is used 46381for TLS access and its presence is optional. 46382 46383@value{GDBN} must be linked with the Expat library to support XML 46384SVR4 library lists. @xref{Expat}. 46385 46386A simple memory map, with two loaded libraries (which do not use prelink), 46387looks like this: 46388 46389@smallexample 46390<library-list-svr4 version="1.0" main-lm="0xe4f8f8"> 46391 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000" 46392 l_ld="0xe4eefc" lmid="0xfffe0"/> 46393 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000" 46394 l_ld="0x152350" lmid="0xfffe0"/> 46395</library-list-svr> 46396@end smallexample 46397 46398The format of an SVR4 library list is described by this DTD: 46399 46400@smallexample 46401<!-- library-list-svr4: Root element with versioning --> 46402<!ELEMENT library-list-svr4 (library)*> 46403<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0"> 46404<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED> 46405<!ELEMENT library EMPTY> 46406<!ATTLIST library name CDATA #REQUIRED> 46407<!ATTLIST library lm CDATA #REQUIRED> 46408<!ATTLIST library l_addr CDATA #REQUIRED> 46409<!ATTLIST library l_ld CDATA #REQUIRED> 46410<!ATTLIST library lmid CDATA #IMPLIED> 46411@end smallexample 46412 46413@node Memory Map Format 46414@section Memory Map Format 46415@cindex memory map format 46416 46417To be able to write into flash memory, @value{GDBN} needs to obtain a 46418memory map from the target. This section describes the format of the 46419memory map. 46420 46421The memory map is obtained using the @samp{qXfer:memory-map:read} 46422(@pxref{qXfer memory map read}) packet and is an XML document that 46423lists memory regions. 46424 46425@value{GDBN} must be linked with the Expat library to support XML 46426memory maps. @xref{Expat}. 46427 46428The top-level structure of the document is shown below: 46429 46430@smallexample 46431<?xml version="1.0"?> 46432<!DOCTYPE memory-map 46433 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 46434 "http://sourceware.org/gdb/gdb-memory-map.dtd"> 46435<memory-map> 46436 region... 46437</memory-map> 46438@end smallexample 46439 46440Each region can be either: 46441 46442@itemize 46443 46444@item 46445A region of RAM starting at @var{addr} and extending for @var{length} 46446bytes from there: 46447 46448@smallexample 46449<memory type="ram" start="@var{addr}" length="@var{length}"/> 46450@end smallexample 46451 46452 46453@item 46454A region of read-only memory: 46455 46456@smallexample 46457<memory type="rom" start="@var{addr}" length="@var{length}"/> 46458@end smallexample 46459 46460 46461@item 46462A region of flash memory, with erasure blocks @var{blocksize} 46463bytes in length: 46464 46465@smallexample 46466<memory type="flash" start="@var{addr}" length="@var{length}"> 46467 <property name="blocksize">@var{blocksize}</property> 46468</memory> 46469@end smallexample 46470 46471@end itemize 46472 46473Regions must not overlap. @value{GDBN} assumes that areas of memory not covered 46474by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X} 46475packets to write to addresses in such ranges. 46476 46477The formal DTD for memory map format is given below: 46478 46479@smallexample 46480<!-- ................................................... --> 46481<!-- Memory Map XML DTD ................................ --> 46482<!-- File: memory-map.dtd .............................. --> 46483<!-- .................................... .............. --> 46484<!-- memory-map.dtd --> 46485<!-- memory-map: Root element with versioning --> 46486<!ELEMENT memory-map (memory)*> 46487<!ATTLIST memory-map version CDATA #FIXED "1.0.0"> 46488<!ELEMENT memory (property)*> 46489<!-- memory: Specifies a memory region, 46490 and its type, or device. --> 46491<!ATTLIST memory type (ram|rom|flash) #REQUIRED 46492 start CDATA #REQUIRED 46493 length CDATA #REQUIRED> 46494<!-- property: Generic attribute tag --> 46495<!ELEMENT property (#PCDATA | property)*> 46496<!ATTLIST property name (blocksize) #REQUIRED> 46497@end smallexample 46498 46499@node Thread List Format 46500@section Thread List Format 46501@cindex thread list format 46502 46503To efficiently update the list of threads and their attributes, 46504@value{GDBN} issues the @samp{qXfer:threads:read} packet 46505(@pxref{qXfer threads read}) and obtains the XML document with 46506the following structure: 46507 46508@smallexample 46509<?xml version="1.0"?> 46510<threads> 46511 <thread id="id" core="0" name="name"> 46512 ... description ... 46513 </thread> 46514</threads> 46515@end smallexample 46516 46517Each @samp{thread} element must have the @samp{id} attribute that 46518identifies the thread (@pxref{thread-id syntax}). The 46519@samp{core} attribute, if present, specifies which processor core 46520the thread was last executing on. The @samp{name} attribute, if 46521present, specifies the human-readable name of the thread. The content 46522of the of @samp{thread} element is interpreted as human-readable 46523auxiliary information. The @samp{handle} attribute, if present, 46524is a hex encoded representation of the thread handle. 46525 46526 46527@node Traceframe Info Format 46528@section Traceframe Info Format 46529@cindex traceframe info format 46530 46531To be able to know which objects in the inferior can be examined when 46532inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of 46533memory ranges, registers and trace state variables that have been 46534collected in a traceframe. 46535 46536This list is obtained using the @samp{qXfer:traceframe-info:read} 46537(@pxref{qXfer traceframe info read}) packet and is an XML document. 46538 46539@value{GDBN} must be linked with the Expat library to support XML 46540traceframe info discovery. @xref{Expat}. 46541 46542The top-level structure of the document is shown below: 46543 46544@smallexample 46545<?xml version="1.0"?> 46546<!DOCTYPE traceframe-info 46547 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" 46548 "http://sourceware.org/gdb/gdb-traceframe-info.dtd"> 46549<traceframe-info> 46550 block... 46551</traceframe-info> 46552@end smallexample 46553 46554Each traceframe block can be either: 46555 46556@itemize 46557 46558@item 46559A region of collected memory starting at @var{addr} and extending for 46560@var{length} bytes from there: 46561 46562@smallexample 46563<memory start="@var{addr}" length="@var{length}"/> 46564@end smallexample 46565 46566@item 46567A block indicating trace state variable numbered @var{number} has been 46568collected: 46569 46570@smallexample 46571<tvar id="@var{number}"/> 46572@end smallexample 46573 46574@end itemize 46575 46576The formal DTD for the traceframe info format is given below: 46577 46578@smallexample 46579<!ELEMENT traceframe-info (memory | tvar)* > 46580<!ATTLIST traceframe-info version CDATA #FIXED "1.0"> 46581 46582<!ELEMENT memory EMPTY> 46583<!ATTLIST memory start CDATA #REQUIRED 46584 length CDATA #REQUIRED> 46585<!ELEMENT tvar> 46586<!ATTLIST tvar id CDATA #REQUIRED> 46587@end smallexample 46588 46589@node Branch Trace Format 46590@section Branch Trace Format 46591@cindex branch trace format 46592 46593In order to display the branch trace of an inferior thread, 46594@value{GDBN} needs to obtain the list of branches. This list is 46595represented as list of sequential code blocks that are connected via 46596branches. The code in each block has been executed sequentially. 46597 46598This list is obtained using the @samp{qXfer:btrace:read} 46599(@pxref{qXfer btrace read}) packet and is an XML document. 46600 46601@value{GDBN} must be linked with the Expat library to support XML 46602traceframe info discovery. @xref{Expat}. 46603 46604The top-level structure of the document is shown below: 46605 46606@smallexample 46607<?xml version="1.0"?> 46608<!DOCTYPE btrace 46609 PUBLIC "+//IDN gnu.org//DTD GDB Branch Trace V1.0//EN" 46610 "http://sourceware.org/gdb/gdb-btrace.dtd"> 46611<btrace> 46612 block... 46613</btrace> 46614@end smallexample 46615 46616@itemize 46617 46618@item 46619A block of sequentially executed instructions starting at @var{begin} 46620and ending at @var{end}: 46621 46622@smallexample 46623<block begin="@var{begin}" end="@var{end}"/> 46624@end smallexample 46625 46626@end itemize 46627 46628The formal DTD for the branch trace format is given below: 46629 46630@smallexample 46631<!ELEMENT btrace (block* | pt) > 46632<!ATTLIST btrace version CDATA #FIXED "1.0"> 46633 46634<!ELEMENT block EMPTY> 46635<!ATTLIST block begin CDATA #REQUIRED 46636 end CDATA #REQUIRED> 46637 46638<!ELEMENT pt (pt-config?, raw?)> 46639 46640<!ELEMENT pt-config (cpu?)> 46641 46642<!ELEMENT cpu EMPTY> 46643<!ATTLIST cpu vendor CDATA #REQUIRED 46644 family CDATA #REQUIRED 46645 model CDATA #REQUIRED 46646 stepping CDATA #REQUIRED> 46647 46648<!ELEMENT raw (#PCDATA)> 46649@end smallexample 46650 46651@node Branch Trace Configuration Format 46652@section Branch Trace Configuration Format 46653@cindex branch trace configuration format 46654 46655For each inferior thread, @value{GDBN} can obtain the branch trace 46656configuration using the @samp{qXfer:btrace-conf:read} 46657(@pxref{qXfer btrace-conf read}) packet. 46658 46659The configuration describes the branch trace format and configuration 46660settings for that format. The following information is described: 46661 46662@table @code 46663@item bts 46664This thread uses the @dfn{Branch Trace Store} (@acronym{BTS}) format. 46665@table @code 46666@item size 46667The size of the @acronym{BTS} ring buffer in bytes. 46668@end table 46669@item pt 46670This thread uses the @dfn{Intel Processor Trace} (@acronym{Intel 46671PT}) format. 46672@table @code 46673@item size 46674The size of the @acronym{Intel PT} ring buffer in bytes. 46675@end table 46676@end table 46677 46678@value{GDBN} must be linked with the Expat library to support XML 46679branch trace configuration discovery. @xref{Expat}. 46680 46681The formal DTD for the branch trace configuration format is given below: 46682 46683@smallexample 46684<!ELEMENT btrace-conf (bts?, pt?)> 46685<!ATTLIST btrace-conf version CDATA #FIXED "1.0"> 46686 46687<!ELEMENT bts EMPTY> 46688<!ATTLIST bts size CDATA #IMPLIED> 46689 46690<!ELEMENT pt EMPTY> 46691<!ATTLIST pt size CDATA #IMPLIED> 46692@end smallexample 46693 46694@include agentexpr.texi 46695 46696@node Target Descriptions 46697@appendix Target Descriptions 46698@cindex target descriptions 46699 46700One of the challenges of using @value{GDBN} to debug embedded systems 46701is that there are so many minor variants of each processor 46702architecture in use. It is common practice for vendors to start with 46703a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example --- 46704and then make changes to adapt it to a particular market niche. Some 46705architectures have hundreds of variants, available from dozens of 46706vendors. This leads to a number of problems: 46707 46708@itemize @bullet 46709@item 46710With so many different customized processors, it is difficult for 46711the @value{GDBN} maintainers to keep up with the changes. 46712@item 46713Since individual variants may have short lifetimes or limited 46714audiences, it may not be worthwhile to carry information about every 46715variant in the @value{GDBN} source tree. 46716@item 46717When @value{GDBN} does support the architecture of the embedded system 46718at hand, the task of finding the correct architecture name to give the 46719@command{set architecture} command can be error-prone. 46720@end itemize 46721 46722To address these problems, the @value{GDBN} remote protocol allows a 46723target system to not only identify itself to @value{GDBN}, but to 46724actually describe its own features. This lets @value{GDBN} support 46725processor variants it has never seen before --- to the extent that the 46726descriptions are accurate, and that @value{GDBN} understands them. 46727 46728@value{GDBN} must be linked with the Expat library to support XML 46729target descriptions. @xref{Expat}. 46730 46731@menu 46732* Retrieving Descriptions:: How descriptions are fetched from a target. 46733* Target Description Format:: The contents of a target description. 46734* Predefined Target Types:: Standard types available for target 46735 descriptions. 46736* Enum Target Types:: How to define enum target types. 46737* Standard Target Features:: Features @value{GDBN} knows about. 46738@end menu 46739 46740@node Retrieving Descriptions 46741@section Retrieving Descriptions 46742 46743Target descriptions can be read from the target automatically, or 46744specified by the user manually. The default behavior is to read the 46745description from the target. @value{GDBN} retrieves it via the remote 46746protocol using @samp{qXfer} requests (@pxref{General Query Packets, 46747qXfer}). The @var{annex} in the @samp{qXfer} packet will be 46748@samp{target.xml}. The contents of the @samp{target.xml} annex are an 46749XML document, of the form described in @ref{Target Description 46750Format}. 46751 46752Alternatively, you can specify a file to read for the target description. 46753If a file is set, the target will not be queried. The commands to 46754specify a file are: 46755 46756@table @code 46757@cindex set tdesc filename 46758@item set tdesc filename @var{path} 46759Read the target description from @var{path}. 46760 46761@cindex unset tdesc filename 46762@item unset tdesc filename 46763Do not read the XML target description from a file. @value{GDBN} 46764will use the description supplied by the current target. 46765 46766@cindex show tdesc filename 46767@item show tdesc filename 46768Show the filename to read for a target description, if any. 46769@end table 46770 46771 46772@node Target Description Format 46773@section Target Description Format 46774@cindex target descriptions, XML format 46775 46776A target description annex is an @uref{http://www.w3.org/XML/, XML} 46777document which complies with the Document Type Definition provided in 46778the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This 46779means you can use generally available tools like @command{xmllint} to 46780check that your feature descriptions are well-formed and valid. 46781However, to help people unfamiliar with XML write descriptions for 46782their targets, we also describe the grammar here. 46783 46784Target descriptions can identify the architecture of the remote target 46785and (for some architectures) provide information about custom register 46786sets. They can also identify the OS ABI of the remote target. 46787@value{GDBN} can use this information to autoconfigure for your 46788target, or to warn you if you connect to an unsupported target. 46789 46790Here is a simple target description: 46791 46792@smallexample 46793<target version="1.0"> 46794 <architecture>i386:x86-64</architecture> 46795</target> 46796@end smallexample 46797 46798@noindent 46799This minimal description only says that the target uses 46800the x86-64 architecture. 46801 46802A target description has the following overall form, with [ ] marking 46803optional elements and @dots{} marking repeatable elements. The elements 46804are explained further below. 46805 46806@smallexample 46807<?xml version="1.0"?> 46808<!DOCTYPE target SYSTEM "gdb-target.dtd"> 46809<target version="1.0"> 46810 @r{[}@var{architecture}@r{]} 46811 @r{[}@var{osabi}@r{]} 46812 @r{[}@var{compatible}@r{]} 46813 @r{[}@var{feature}@dots{}@r{]} 46814</target> 46815@end smallexample 46816 46817@noindent 46818The description is generally insensitive to whitespace and line 46819breaks, under the usual common-sense rules. The XML version 46820declaration and document type declaration can generally be omitted 46821(@value{GDBN} does not require them), but specifying them may be 46822useful for XML validation tools. The @samp{version} attribute for 46823@samp{<target>} may also be omitted, but we recommend 46824including it; if future versions of @value{GDBN} use an incompatible 46825revision of @file{gdb-target.dtd}, they will detect and report 46826the version mismatch. 46827 46828@subsection Inclusion 46829@cindex target descriptions, inclusion 46830@cindex XInclude 46831@ifnotinfo 46832@cindex <xi:include> 46833@end ifnotinfo 46834 46835It can sometimes be valuable to split a target description up into 46836several different annexes, either for organizational purposes, or to 46837share files between different possible target descriptions. You can 46838divide a description into multiple files by replacing any element of 46839the target description with an inclusion directive of the form: 46840 46841@smallexample 46842<xi:include href="@var{document}"/> 46843@end smallexample 46844 46845@noindent 46846When @value{GDBN} encounters an element of this form, it will retrieve 46847the named XML @var{document}, and replace the inclusion directive with 46848the contents of that document. If the current description was read 46849using @samp{qXfer}, then so will be the included document; 46850@var{document} will be interpreted as the name of an annex. If the 46851current description was read from a file, @value{GDBN} will look for 46852@var{document} as a file in the same directory where it found the 46853original description. 46854 46855@subsection Architecture 46856@cindex <architecture> 46857 46858An @samp{<architecture>} element has this form: 46859 46860@smallexample 46861 <architecture>@var{arch}</architecture> 46862@end smallexample 46863 46864@var{arch} is one of the architectures from the set accepted by 46865@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 46866 46867@subsection OS ABI 46868@cindex @code{<osabi>} 46869 46870This optional field was introduced in @value{GDBN} version 7.0. 46871Previous versions of @value{GDBN} ignore it. 46872 46873An @samp{<osabi>} element has this form: 46874 46875@smallexample 46876 <osabi>@var{abi-name}</osabi> 46877@end smallexample 46878 46879@var{abi-name} is an OS ABI name from the same selection accepted by 46880@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}). 46881 46882@subsection Compatible Architecture 46883@cindex @code{<compatible>} 46884 46885This optional field was introduced in @value{GDBN} version 7.0. 46886Previous versions of @value{GDBN} ignore it. 46887 46888A @samp{<compatible>} element has this form: 46889 46890@smallexample 46891 <compatible>@var{arch}</compatible> 46892@end smallexample 46893 46894@var{arch} is one of the architectures from the set accepted by 46895@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}). 46896 46897A @samp{<compatible>} element is used to specify that the target 46898is able to run binaries in some other than the main target architecture 46899given by the @samp{<architecture>} element. For example, on the 46900Cell Broadband Engine, the main architecture is @code{powerpc:common} 46901or @code{powerpc:common64}, but the system is able to run binaries 46902in the @code{spu} architecture as well. The way to describe this 46903capability with @samp{<compatible>} is as follows: 46904 46905@smallexample 46906 <architecture>powerpc:common</architecture> 46907 <compatible>spu</compatible> 46908@end smallexample 46909 46910@subsection Features 46911@cindex <feature> 46912 46913Each @samp{<feature>} describes some logical portion of the target 46914system. Features are currently used to describe available CPU 46915registers and the types of their contents. A @samp{<feature>} element 46916has this form: 46917 46918@smallexample 46919<feature name="@var{name}"> 46920 @r{[}@var{type}@dots{}@r{]} 46921 @var{reg}@dots{} 46922</feature> 46923@end smallexample 46924 46925@noindent 46926Each feature's name should be unique within the description. The name 46927of a feature does not matter unless @value{GDBN} has some special 46928knowledge of the contents of that feature; if it does, the feature 46929should have its standard name. @xref{Standard Target Features}. 46930 46931@subsection Types 46932 46933Any register's value is a collection of bits which @value{GDBN} must 46934interpret. The default interpretation is a two's complement integer, 46935but other types can be requested by name in the register description. 46936Some predefined types are provided by @value{GDBN} (@pxref{Predefined 46937Target Types}), and the description can define additional composite 46938and enum types. 46939 46940Each type element must have an @samp{id} attribute, which gives 46941a unique (within the containing @samp{<feature>}) name to the type. 46942Types must be defined before they are used. 46943 46944@cindex <vector> 46945Some targets offer vector registers, which can be treated as arrays 46946of scalar elements. These types are written as @samp{<vector>} elements, 46947specifying the array element type, @var{type}, and the number of elements, 46948@var{count}: 46949 46950@smallexample 46951<vector id="@var{id}" type="@var{type}" count="@var{count}"/> 46952@end smallexample 46953 46954@cindex <union> 46955If a register's value is usefully viewed in multiple ways, define it 46956with a union type containing the useful representations. The 46957@samp{<union>} element contains one or more @samp{<field>} elements, 46958each of which has a @var{name} and a @var{type}: 46959 46960@smallexample 46961<union id="@var{id}"> 46962 <field name="@var{name}" type="@var{type}"/> 46963 @dots{} 46964</union> 46965@end smallexample 46966 46967@cindex <struct> 46968@cindex <flags> 46969If a register's value is composed from several separate values, define 46970it with either a structure type or a flags type. 46971A flags type may only contain bitfields. 46972A structure type may either contain only bitfields or contain no bitfields. 46973If the value contains only bitfields, its total size in bytes must be 46974specified. 46975 46976Non-bitfield values have a @var{name} and @var{type}. 46977 46978@smallexample 46979<struct id="@var{id}"> 46980 <field name="@var{name}" type="@var{type}"/> 46981 @dots{} 46982</struct> 46983@end smallexample 46984 46985Both @var{name} and @var{type} values are required. 46986No implicit padding is added. 46987 46988Bitfield values have a @var{name}, @var{start}, @var{end} and @var{type}. 46989 46990@smallexample 46991<struct id="@var{id}" size="@var{size}"> 46992 <field name="@var{name}" start="@var{start}" end="@var{end}" type="@var{type}"/> 46993 @dots{} 46994</struct> 46995@end smallexample 46996 46997@smallexample 46998<flags id="@var{id}" size="@var{size}"> 46999 <field name="@var{name}" start="@var{start}" end="@var{end}" type="@var{type}"/> 47000 @dots{} 47001</flags> 47002@end smallexample 47003 47004The @var{name} value is required. 47005Bitfield values may be named with the empty string, @samp{""}, 47006in which case the field is ``filler'' and its value is not printed. 47007Not all bits need to be specified, so ``filler'' fields are optional. 47008 47009The @var{start} and @var{end} values are required, and @var{type} 47010is optional. 47011The field's @var{start} must be less than or equal to its @var{end}, 47012and zero represents the least significant bit. 47013 47014The default value of @var{type} is @code{bool} for single bit fields, 47015and an unsigned integer otherwise. 47016 47017Which to choose? Structures or flags? 47018 47019Registers defined with @samp{flags} have these advantages over 47020defining them with @samp{struct}: 47021 47022@itemize @bullet 47023@item 47024Arithmetic may be performed on them as if they were integers. 47025@item 47026They are printed in a more readable fashion. 47027@end itemize 47028 47029Registers defined with @samp{struct} have one advantage over 47030defining them with @samp{flags}: 47031 47032@itemize @bullet 47033@item 47034One can fetch individual fields like in @samp{C}. 47035 47036@smallexample 47037(gdb) print $my_struct_reg.field3 47038$1 = 42 47039@end smallexample 47040 47041@end itemize 47042 47043@subsection Registers 47044@cindex <reg> 47045 47046Each register is represented as an element with this form: 47047 47048@smallexample 47049<reg name="@var{name}" 47050 bitsize="@var{size}" 47051 @r{[}regnum="@var{num}"@r{]} 47052 @r{[}save-restore="@var{save-restore}"@r{]} 47053 @r{[}type="@var{type}"@r{]} 47054 @r{[}group="@var{group}"@r{]}/> 47055@end smallexample 47056 47057@noindent 47058The components are as follows: 47059 47060@table @var 47061 47062@item name 47063The register's name; it must be unique within the target description. 47064 47065@item bitsize 47066The register's size, in bits. 47067 47068@item regnum 47069The register's number. If omitted, a register's number is one greater 47070than that of the previous register (either in the current feature or in 47071a preceding feature); the first register in the target description 47072defaults to zero. This register number is used to read or write 47073the register; e.g.@: it is used in the remote @code{p} and @code{P} 47074packets, and registers appear in the @code{g} and @code{G} packets 47075in order of increasing register number. 47076 47077@item save-restore 47078Whether the register should be preserved across inferior function 47079calls; this must be either @code{yes} or @code{no}. The default is 47080@code{yes}, which is appropriate for most registers except for 47081some system control registers; this is not related to the target's 47082ABI. 47083 47084@item type 47085The type of the register. It may be a predefined type, a type 47086defined in the current feature, or one of the special types @code{int} 47087and @code{float}. @code{int} is an integer type of the correct size 47088for @var{bitsize}, and @code{float} is a floating point type (in the 47089architecture's normal floating point format) of the correct size for 47090@var{bitsize}. The default is @code{int}. 47091 47092@item group 47093The register group to which this register belongs. It can be one of the 47094standard register groups @code{general}, @code{float}, @code{vector} or an 47095arbitrary string. Group names should be limited to alphanumeric characters. 47096If a group name is made up of multiple words the words may be separated by 47097hyphens; e.g.@: @code{special-group} or @code{ultra-special-group}. If no 47098@var{group} is specified, @value{GDBN} will not display the register in 47099@code{info registers}. 47100 47101@end table 47102 47103@node Predefined Target Types 47104@section Predefined Target Types 47105@cindex target descriptions, predefined types 47106 47107Type definitions in the self-description can build up composite types 47108from basic building blocks, but can not define fundamental types. Instead, 47109standard identifiers are provided by @value{GDBN} for the fundamental 47110types. The currently supported types are: 47111 47112@table @code 47113 47114@item bool 47115Boolean type, occupying a single bit. 47116 47117@item int8 47118@itemx int16 47119@itemx int24 47120@itemx int32 47121@itemx int64 47122@itemx int128 47123Signed integer types holding the specified number of bits. 47124 47125@item uint8 47126@itemx uint16 47127@itemx uint24 47128@itemx uint32 47129@itemx uint64 47130@itemx uint128 47131Unsigned integer types holding the specified number of bits. 47132 47133@item code_ptr 47134@itemx data_ptr 47135Pointers to unspecified code and data. The program counter and 47136any dedicated return address register may be marked as code 47137pointers; printing a code pointer converts it into a symbolic 47138address. The stack pointer and any dedicated address registers 47139may be marked as data pointers. 47140 47141@item ieee_half 47142Half precision IEEE floating point. 47143 47144@item ieee_single 47145Single precision IEEE floating point. 47146 47147@item ieee_double 47148Double precision IEEE floating point. 47149 47150@item bfloat16 47151The 16-bit @dfn{brain floating point} format used e.g.@: by x86 and ARM. 47152 47153@item arm_fpa_ext 47154The 12-byte extended precision format used by ARM FPA registers. 47155 47156@item i387_ext 47157The 10-byte extended precision format used by x87 registers. 47158 47159@item i386_eflags 4716032bit @sc{eflags} register used by x86. 47161 47162@item i386_mxcsr 4716332bit @sc{mxcsr} register used by x86. 47164 47165@end table 47166 47167@node Enum Target Types 47168@section Enum Target Types 47169@cindex target descriptions, enum types 47170 47171Enum target types are useful in @samp{struct} and @samp{flags} 47172register descriptions. @xref{Target Description Format}. 47173 47174Enum types have a name, size and a list of name/value pairs. 47175 47176@smallexample 47177<enum id="@var{id}" size="@var{size}"> 47178 <evalue name="@var{name}" value="@var{value}"/> 47179 @dots{} 47180</enum> 47181@end smallexample 47182 47183Enums must be defined before they are used. 47184 47185@smallexample 47186<enum id="levels_type" size="4"> 47187 <evalue name="low" value="0"/> 47188 <evalue name="high" value="1"/> 47189</enum> 47190<flags id="flags_type" size="4"> 47191 <field name="X" start="0"/> 47192 <field name="LEVEL" start="1" end="1" type="levels_type"/> 47193</flags> 47194<reg name="flags" bitsize="32" type="flags_type"/> 47195@end smallexample 47196 47197Given that description, a value of 3 for the @samp{flags} register 47198would be printed as: 47199 47200@smallexample 47201(gdb) info register flags 47202flags 0x3 [ X LEVEL=high ] 47203@end smallexample 47204 47205@node Standard Target Features 47206@section Standard Target Features 47207@cindex target descriptions, standard features 47208 47209A target description must contain either no registers or all the 47210target's registers. If the description contains no registers, then 47211@value{GDBN} will assume a default register layout, selected based on 47212the architecture. If the description contains any registers, the 47213default layout will not be used; the standard registers must be 47214described in the target description, in such a way that @value{GDBN} 47215can recognize them. 47216 47217This is accomplished by giving specific names to feature elements 47218which contain standard registers. @value{GDBN} will look for features 47219with those names and verify that they contain the expected registers; 47220if any known feature is missing required registers, or if any required 47221feature is missing, @value{GDBN} will reject the target 47222description. You can add additional registers to any of the 47223standard features --- @value{GDBN} will display them just as if 47224they were added to an unrecognized feature. 47225 47226This section lists the known features and their expected contents. 47227Sample XML documents for these features are included in the 47228@value{GDBN} source tree, in the directory @file{gdb/features}. 47229 47230Names recognized by @value{GDBN} should include the name of the 47231company or organization which selected the name, and the overall 47232architecture to which the feature applies; so e.g.@: the feature 47233containing ARM core registers is named @samp{org.gnu.gdb.arm.core}. 47234 47235The names of registers are not case sensitive for the purpose 47236of recognizing standard features, but @value{GDBN} will only display 47237registers using the capitalization used in the description. 47238 47239@menu 47240* AArch64 Features:: 47241* ARC Features:: 47242* ARM Features:: 47243* i386 Features:: 47244* LoongArch Features:: 47245* MicroBlaze Features:: 47246* MIPS Features:: 47247* M68K Features:: 47248* NDS32 Features:: 47249* Nios II Features:: 47250* OpenRISC 1000 Features:: 47251* PowerPC Features:: 47252* RISC-V Features:: 47253* RX Features:: 47254* S/390 and System z Features:: 47255* Sparc Features:: 47256* TIC6x Features:: 47257@end menu 47258 47259 47260@node AArch64 Features 47261@subsection AArch64 Features 47262@cindex target descriptions, AArch64 features 47263 47264The @samp{org.gnu.gdb.aarch64.core} feature is required for AArch64 47265targets. It should contain registers @samp{x0} through @samp{x30}, 47266@samp{sp}, @samp{pc}, and @samp{cpsr}. 47267 47268The @samp{org.gnu.gdb.aarch64.fpu} feature is optional. If present, 47269it should contain registers @samp{v0} through @samp{v31}, @samp{fpsr}, 47270and @samp{fpcr}. 47271 47272The @samp{org.gnu.gdb.aarch64.sve} feature is optional. If present, 47273it should contain registers @samp{z0} through @samp{z31}, @samp{p0} 47274through @samp{p15}, @samp{ffr} and @samp{vg}. 47275 47276The @samp{org.gnu.gdb.aarch64.pauth} feature is optional. If present, 47277it should contain registers @samp{pauth_dmask} and @samp{pauth_cmask}. 47278 47279@node ARC Features 47280@subsection ARC Features 47281@cindex target descriptions, ARC Features 47282 47283ARC processors are so configurable that even core registers and their numbers 47284are not predetermined completely. Moreover, @emph{flags} and @emph{PC} 47285registers, which are important to @value{GDBN}, are not ``core'' registers in 47286ARC. Therefore, there are two features that their presence is mandatory: 47287@samp{org.gnu.gdb.arc.core} and @samp{org.gnu.gdb.arc.aux}. 47288 47289The @samp{org.gnu.gdb.arc.core} feature is required for all targets. It must 47290contain registers: 47291 47292@itemize @minus 47293@item 47294@samp{r0} through @samp{r25} for normal register file targets. 47295@item 47296@samp{r0} through @samp{r3}, and @samp{r10} through @samp{r15} for reduced 47297register file targets. 47298@item 47299@samp{gp}, @samp{fp}, @samp{sp}, @samp{r30}@footnote{Not necessary for ARCv1.}, 47300@samp{blink}, @samp{lp_count}, @samp{pcl}. 47301@end itemize 47302 47303In case of an ARCompact target (ARCv1 ISA), the @samp{org.gnu.gdb.arc.core} 47304feature may contain registers @samp{ilink1} and @samp{ilink2}. While in case 47305of ARC EM and ARC HS targets (ARCv2 ISA), register @samp{ilink} may be present. 47306The difference between ARCv1 and ARCv2 is the naming of registers @emph{29th} 47307and @emph{30th}. They are called @samp{ilink1} and @samp{ilink2} for ARCv1 and 47308are optional. For ARCv2, they are called @samp{ilink} and @samp{r30} and only 47309@samp{ilink} is optional. The optionality of @samp{ilink*} registers is 47310because of their inaccessibility during user space debugging sessions. 47311 47312Extension core registers @samp{r32} through @samp{r59} are optional and their 47313existence depends on the configuration. When debugging GNU/Linux applications, 47314i.e.@: user space debugging, these core registers are not available. 47315 47316The @samp{org.gnu.gdb.arc.aux} feature is required for all ARC targets. Here 47317is the list of registers pertinent to this feature: 47318 47319@itemize @minus 47320@item 47321mandatory: @samp{pc} and @samp{status32}. 47322@item 47323optional: @samp{lp_start}, @samp{lp_end}, and @samp{bta}. 47324@end itemize 47325 47326@node ARM Features 47327@subsection ARM Features 47328@cindex target descriptions, ARM features 47329 47330The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile 47331ARM targets. 47332It should contain registers @samp{r0} through @samp{r13}, @samp{sp}, 47333@samp{lr}, @samp{pc}, and @samp{cpsr}. 47334 47335For M-profile targets (e.g.@: Cortex-M3), the @samp{org.gnu.gdb.arm.core} 47336feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain 47337registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc}, 47338and @samp{xpsr}. 47339 47340The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it 47341should contain registers @samp{f0} through @samp{f7} and @samp{fps}. 47342 47343The @samp{org.gnu.gdb.arm.m-profile-mve} feature is optional. If present, it 47344must contain register @samp{vpr}. 47345 47346If the @samp{org.gnu.gdb.arm.m-profile-mve} feature is available, @value{GDBN} 47347will synthesize the @samp{p0} pseudo register from @samp{vpr} contents. 47348 47349If the @samp{org.gnu.gdb.arm.vfp} feature is available alongside the 47350@samp{org.gnu.gdb.arm.m-profile-mve} feature, @value{GDBN} will 47351synthesize the @samp{q} pseudo registers from @samp{d} register 47352contents. 47353 47354The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present, 47355it should contain at least registers @samp{wR0} through @samp{wR15} and 47356@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon}, 47357@samp{wCSSF}, and @samp{wCASF} registers are optional. 47358 47359The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it 47360should contain at least registers @samp{d0} through @samp{d15}. If 47361they are present, @samp{d16} through @samp{d31} should also be included. 47362@value{GDBN} will synthesize the single-precision registers from 47363halves of the double-precision registers. 47364 47365The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not 47366need to contain registers; it instructs @value{GDBN} to display the 47367VFP double-precision registers as vectors and to synthesize the 47368quad-precision registers from pairs of double-precision registers. 47369If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also 47370be present and include 32 double-precision registers. 47371 47372The @samp{org.gnu.gdb.arm.m-profile-pacbti} feature is optional, and 47373acknowledges support for the ARMv8.1-m PACBTI extensions. @value{GDBN} 47374will track return address signing states and will decorate backtraces using 47375the [PAC] marker, similar to AArch64's PAC extension. 47376@xref{AArch64 PAC}. 47377 47378@node i386 Features 47379@subsection i386 Features 47380@cindex target descriptions, i386 features 47381 47382The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64 47383targets. It should describe the following registers: 47384 47385@itemize @minus 47386@item 47387@samp{eax} through @samp{edi} plus @samp{eip} for i386 47388@item 47389@samp{rax} through @samp{r15} plus @samp{rip} for amd64 47390@item 47391@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es}, 47392@samp{fs}, @samp{gs} 47393@item 47394@samp{st0} through @samp{st7} 47395@item 47396@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff}, 47397@samp{foseg}, @samp{fooff} and @samp{fop} 47398@end itemize 47399 47400The register sets may be different, depending on the target. 47401 47402The @samp{org.gnu.gdb.i386.sse} feature is optional. It should 47403describe registers: 47404 47405@itemize @minus 47406@item 47407@samp{xmm0} through @samp{xmm7} for i386 47408@item 47409@samp{xmm0} through @samp{xmm15} for amd64 47410@item 47411@samp{mxcsr} 47412@end itemize 47413 47414The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the 47415@samp{org.gnu.gdb.i386.sse} feature. It should 47416describe the upper 128 bits of @sc{ymm} registers: 47417 47418@itemize @minus 47419@item 47420@samp{ymm0h} through @samp{ymm7h} for i386 47421@item 47422@samp{ymm0h} through @samp{ymm15h} for amd64 47423@end itemize 47424 47425The @samp{org.gnu.gdb.i386.mpx} is an optional feature representing Intel 47426Memory Protection Extension (MPX). It should describe the following registers: 47427 47428@itemize @minus 47429@item 47430@samp{bnd0raw} through @samp{bnd3raw} for i386 and amd64. 47431@item 47432@samp{bndcfgu} and @samp{bndstatus} for i386 and amd64. 47433@end itemize 47434 47435The @samp{org.gnu.gdb.i386.linux} feature is optional. It should 47436describe a single register, @samp{orig_eax}. 47437 47438The @samp{org.gnu.gdb.i386.segments} feature is optional. It should 47439describe two system registers: @samp{fs_base} and @samp{gs_base}. 47440 47441The @samp{org.gnu.gdb.i386.avx512} feature is optional and requires the 47442@samp{org.gnu.gdb.i386.avx} feature. It should 47443describe additional @sc{xmm} registers: 47444 47445@itemize @minus 47446@item 47447@samp{xmm16h} through @samp{xmm31h}, only valid for amd64. 47448@end itemize 47449 47450It should describe the upper 128 bits of additional @sc{ymm} registers: 47451 47452@itemize @minus 47453@item 47454@samp{ymm16h} through @samp{ymm31h}, only valid for amd64. 47455@end itemize 47456 47457It should 47458describe the upper 256 bits of @sc{zmm} registers: 47459 47460@itemize @minus 47461@item 47462@samp{zmm0h} through @samp{zmm7h} for i386. 47463@item 47464@samp{zmm0h} through @samp{zmm15h} for amd64. 47465@end itemize 47466 47467It should 47468describe the additional @sc{zmm} registers: 47469 47470@itemize @minus 47471@item 47472@samp{zmm16h} through @samp{zmm31h}, only valid for amd64. 47473@end itemize 47474 47475The @samp{org.gnu.gdb.i386.pkeys} feature is optional. It should 47476describe a single register, @samp{pkru}. It is a 32-bit register 47477valid for i386 and amd64. 47478 47479@node LoongArch Features 47480@subsection LoongArch Features 47481@cindex target descriptions, LoongArch Features 47482 47483The @samp{org.gnu.gdb.loongarch.base} feature is required for LoongArch 47484targets. It should contain the registers @samp{r0} through @samp{r31}, 47485@samp{pc}, and @samp{badv}. Either the architectural names (@samp{r0}, 47486@samp{r1}, etc) can be used, or the ABI names (@samp{zero}, @samp{ra}, etc). 47487 47488The @samp{org.gnu.gdb.loongarch.fpu} feature is optional. If present, 47489it should contain registers @samp{f0} through @samp{f31}, @samp{fcc}, 47490and @samp{fcsr}. 47491 47492@node MicroBlaze Features 47493@subsection MicroBlaze Features 47494@cindex target descriptions, MicroBlaze features 47495 47496The @samp{org.gnu.gdb.microblaze.core} feature is required for MicroBlaze 47497targets. It should contain registers @samp{r0} through @samp{r31}, 47498@samp{rpc}, @samp{rmsr}, @samp{rear}, @samp{resr}, @samp{rfsr}, @samp{rbtr}, 47499@samp{rpvr}, @samp{rpvr1} through @samp{rpvr11}, @samp{redr}, @samp{rpid}, 47500@samp{rzpr}, @samp{rtlbx}, @samp{rtlbsx}, @samp{rtlblo}, and @samp{rtlbhi}. 47501 47502The @samp{org.gnu.gdb.microblaze.stack-protect} feature is optional. 47503If present, it should contain registers @samp{rshr} and @samp{rslr} 47504 47505@node MIPS Features 47506@subsection @acronym{MIPS} Features 47507@cindex target descriptions, @acronym{MIPS} features 47508 47509The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets. 47510It should contain registers @samp{r0} through @samp{r31}, @samp{lo}, 47511@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending 47512on the target. 47513 47514The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should 47515contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause} 47516registers. They may be 32-bit or 64-bit depending on the target. 47517 47518The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though 47519it may be optional in a future version of @value{GDBN}. It should 47520contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and 47521@samp{fir}. They may be 32-bit or 64-bit depending on the target. 47522 47523The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should 47524contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through 47525@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should 47526be 32-bit and the rest may be 32-bit or 64-bit depending on the target. 47527 47528The @samp{org.gnu.gdb.mips.linux} feature is optional. It should 47529contain a single register, @samp{restart}, which is used by the 47530Linux kernel to control restartable syscalls. 47531 47532@node M68K Features 47533@subsection M68K Features 47534@cindex target descriptions, M68K features 47535 47536@table @code 47537@item @samp{org.gnu.gdb.m68k.core} 47538@itemx @samp{org.gnu.gdb.coldfire.core} 47539@itemx @samp{org.gnu.gdb.fido.core} 47540One of those features must be always present. 47541The feature that is present determines which flavor of m68k is 47542used. The feature that is present should contain registers 47543@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp}, 47544@samp{sp}, @samp{ps} and @samp{pc}. 47545 47546@item @samp{org.gnu.gdb.coldfire.fp} 47547This feature is optional. If present, it should contain registers 47548@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and 47549@samp{fpiaddr}. 47550 47551Note that, despite the fact that this feature's name says 47552@samp{coldfire}, it is used to describe any floating point registers. 47553The size of the registers must match the main m68k flavor; so, for 47554example, if the primary feature is reported as @samp{coldfire}, then 4755564-bit floating point registers are required. 47556@end table 47557 47558@node NDS32 Features 47559@subsection NDS32 Features 47560@cindex target descriptions, NDS32 features 47561 47562The @samp{org.gnu.gdb.nds32.core} feature is required for NDS32 47563targets. It should contain at least registers @samp{r0} through 47564@samp{r10}, @samp{r15}, @samp{fp}, @samp{gp}, @samp{lp}, @samp{sp}, 47565and @samp{pc}. 47566 47567The @samp{org.gnu.gdb.nds32.fpu} feature is optional. If present, 47568it should contain 64-bit double-precision floating-point registers 47569@samp{fd0} through @emph{fdN}, which should be @samp{fd3}, @samp{fd7}, 47570@samp{fd15}, or @samp{fd31} based on the FPU configuration implemented. 47571 47572@emph{Note:} The first sixteen 64-bit double-precision floating-point 47573registers are overlapped with the thirty-two 32-bit single-precision 47574floating-point registers. The 32-bit single-precision registers, if 47575not being listed explicitly, will be synthesized from halves of the 47576overlapping 64-bit double-precision registers. Listing 32-bit 47577single-precision registers explicitly is deprecated, and the 47578support to it could be totally removed some day. 47579 47580@node Nios II Features 47581@subsection Nios II Features 47582@cindex target descriptions, Nios II features 47583 47584The @samp{org.gnu.gdb.nios2.cpu} feature is required for Nios II 47585targets. It should contain the 32 core registers (@samp{zero}, 47586@samp{at}, @samp{r2} through @samp{r23}, @samp{et} through @samp{ra}), 47587@samp{pc}, and the 16 control registers (@samp{status} through 47588@samp{mpuacc}). 47589 47590@node OpenRISC 1000 Features 47591@subsection Openrisc 1000 Features 47592@cindex target descriptions, OpenRISC 1000 features 47593 47594The @samp{org.gnu.gdb.or1k.group0} feature is required for OpenRISC 1000 47595targets. It should contain the 32 general purpose registers (@samp{r0} 47596through @samp{r31}), @samp{ppc}, @samp{npc} and @samp{sr}. 47597 47598@node PowerPC Features 47599@subsection PowerPC Features 47600@cindex target descriptions, PowerPC features 47601 47602The @samp{org.gnu.gdb.power.core} feature is required for PowerPC 47603targets. It should contain registers @samp{r0} through @samp{r31}, 47604@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and 47605@samp{xer}. They may be 32-bit or 64-bit depending on the target. 47606 47607The @samp{org.gnu.gdb.power.fpu} feature is optional. It should 47608contain registers @samp{f0} through @samp{f31} and @samp{fpscr}. 47609 47610The @samp{org.gnu.gdb.power.altivec} feature is optional. It should 47611contain registers @samp{vr0} through @samp{vr31}, @samp{vscr}, and 47612@samp{vrsave}. @value{GDBN} will define pseudo-registers @samp{v0} 47613through @samp{v31} as aliases for the corresponding @samp{vrX} 47614registers. 47615 47616The @samp{org.gnu.gdb.power.vsx} feature is optional. It should 47617contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN} will 47618combine these registers with the floating point registers (@samp{f0} 47619through @samp{f31}) and the altivec registers (@samp{vr0} through 47620@samp{vr31}) to present the 128-bit wide registers @samp{vs0} through 47621@samp{vs63}, the set of vector-scalar registers for POWER7. 47622Therefore, this feature requires both @samp{org.gnu.gdb.power.fpu} and 47623@samp{org.gnu.gdb.power.altivec}. 47624 47625The @samp{org.gnu.gdb.power.spe} feature is optional. It should 47626contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and 47627@samp{spefscr}. SPE targets should provide 32-bit registers in 47628@samp{org.gnu.gdb.power.core} and provide the upper halves in 47629@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine 47630these to present registers @samp{ev0} through @samp{ev31} to the 47631user. 47632 47633The @samp{org.gnu.gdb.power.ppr} feature is optional. It should 47634contain the 64-bit register @samp{ppr}. 47635 47636The @samp{org.gnu.gdb.power.dscr} feature is optional. It should 47637contain the 64-bit register @samp{dscr}. 47638 47639The @samp{org.gnu.gdb.power.tar} feature is optional. It should 47640contain the 64-bit register @samp{tar}. 47641 47642The @samp{org.gnu.gdb.power.ebb} feature is optional. It should 47643contain registers @samp{bescr}, @samp{ebbhr} and @samp{ebbrr}, all 4764464-bit wide. 47645 47646The @samp{org.gnu.gdb.power.linux.pmu} feature is optional. It should 47647contain registers @samp{mmcr0}, @samp{mmcr2}, @samp{siar}, @samp{sdar} 47648and @samp{sier}, all 64-bit wide. This is the subset of the isa 2.07 47649server PMU registers provided by @sc{gnu}/Linux. 47650 47651The @samp{org.gnu.gdb.power.htm.spr} feature is optional. It should 47652contain registers @samp{tfhar}, @samp{texasr} and @samp{tfiar}, all 4765364-bit wide. 47654 47655The @samp{org.gnu.gdb.power.htm.core} feature is optional. It should 47656contain the checkpointed general-purpose registers @samp{cr0} through 47657@samp{cr31}, as well as the checkpointed registers @samp{clr} and 47658@samp{cctr}. These registers may all be either 32-bit or 64-bit 47659depending on the target. It should also contain the checkpointed 47660registers @samp{ccr} and @samp{cxer}, which should both be 32-bit 47661wide. 47662 47663The @samp{org.gnu.gdb.power.htm.fpu} feature is optional. It should 47664contain the checkpointed 64-bit floating-point registers @samp{cf0} 47665through @samp{cf31}, as well as the checkpointed 64-bit register 47666@samp{cfpscr}. 47667 47668The @samp{org.gnu.gdb.power.htm.altivec} feature is optional. It 47669should contain the checkpointed altivec registers @samp{cvr0} through 47670@samp{cvr31}, all 128-bit wide. It should also contain the 47671checkpointed registers @samp{cvscr} and @samp{cvrsave}, both 32-bit 47672wide. 47673 47674The @samp{org.gnu.gdb.power.htm.vsx} feature is optional. It should 47675contain registers @samp{cvs0h} through @samp{cvs31h}. @value{GDBN} 47676will combine these registers with the checkpointed floating point 47677registers (@samp{cf0} through @samp{cf31}) and the checkpointed 47678altivec registers (@samp{cvr0} through @samp{cvr31}) to present the 47679128-bit wide checkpointed vector-scalar registers @samp{cvs0} through 47680@samp{cvs63}. Therefore, this feature requires both 47681@samp{org.gnu.gdb.power.htm.altivec} and 47682@samp{org.gnu.gdb.power.htm.fpu}. 47683 47684The @samp{org.gnu.gdb.power.htm.ppr} feature is optional. It should 47685contain the 64-bit checkpointed register @samp{cppr}. 47686 47687The @samp{org.gnu.gdb.power.htm.dscr} feature is optional. It should 47688contain the 64-bit checkpointed register @samp{cdscr}. 47689 47690The @samp{org.gnu.gdb.power.htm.tar} feature is optional. It should 47691contain the 64-bit checkpointed register @samp{ctar}. 47692 47693 47694@node RISC-V Features 47695@subsection RISC-V Features 47696@cindex target descriptions, RISC-V Features 47697 47698The @samp{org.gnu.gdb.riscv.cpu} feature is required for RISC-V 47699targets. It should contain the registers @samp{x0} through 47700@samp{x31}, and @samp{pc}. Either the architectural names (@samp{x0}, 47701@samp{x1}, etc) can be used, or the ABI names (@samp{zero}, @samp{ra}, 47702etc). 47703 47704The @samp{org.gnu.gdb.riscv.fpu} feature is optional. If present, it 47705should contain registers @samp{f0} through @samp{f31}, @samp{fflags}, 47706@samp{frm}, and @samp{fcsr}. As with the cpu feature, either the 47707architectural register names, or the ABI names can be used. 47708 47709The @samp{org.gnu.gdb.riscv.virtual} feature is optional. If present, 47710it should contain registers that are not backed by real registers on 47711the target, but are instead virtual, where the register value is 47712derived from other target state. In many ways these are like 47713@value{GDBN}s pseudo-registers, except implemented by the target. 47714Currently the only register expected in this set is the one byte 47715@samp{priv} register that contains the target's privilege level in the 47716least significant two bits. 47717 47718The @samp{org.gnu.gdb.riscv.csr} feature is optional. If present, it 47719should contain all of the target's standard CSRs. Standard CSRs are 47720those defined in the RISC-V specification documents. There is some 47721overlap between this feature and the fpu feature; the @samp{fflags}, 47722@samp{frm}, and @samp{fcsr} registers could be in either feature. The 47723expectation is that these registers will be in the fpu feature if the 47724target has floating point hardware, but can be moved into the csr 47725feature if the target has the floating point control registers, but no 47726other floating point hardware. 47727 47728The @samp{org.gnu.gdb.riscv.vector} feature is optional. If present, 47729it should contain registers @samp{v0} through @samp{v31}, all of which 47730must be the same size. These requirements are based on the v0.10 47731draft vector extension, as the vector extension is not yet final. In 47732the event that the register set of the vector extension changes for 47733the final specification, the requirements given here could change for 47734future releases of @value{GDBN}. 47735 47736@node RX Features 47737@subsection RX Features 47738@cindex target descriptions, RX Features 47739 47740The @samp{org.gnu.gdb.rx.core} feature is required for RX 47741targets. It should contain the registers @samp{r0} through 47742@samp{r15}, @samp{usp}, @samp{isp}, @samp{psw}, @samp{pc}, @samp{intb}, 47743@samp{bpsw}, @samp{bpc}, @samp{fintv}, @samp{fpsw}, and @samp{acc}. 47744 47745@node S/390 and System z Features 47746@subsection S/390 and System z Features 47747@cindex target descriptions, S/390 features 47748@cindex target descriptions, System z features 47749 47750The @samp{org.gnu.gdb.s390.core} feature is required for S/390 and 47751System z targets. It should contain the PSW and the 16 general 47752registers. In particular, System z targets should provide the 64-bit 47753registers @samp{pswm}, @samp{pswa}, and @samp{r0} through @samp{r15}. 47754S/390 targets should provide the 32-bit versions of these registers. 47755A System z target that runs in 31-bit addressing mode should provide 4775632-bit versions of @samp{pswm} and @samp{pswa}, as well as the general 47757register's upper halves @samp{r0h} through @samp{r15h}, and their 47758lower halves @samp{r0l} through @samp{r15l}. 47759 47760The @samp{org.gnu.gdb.s390.fpr} feature is required. It should 47761contain the 64-bit registers @samp{f0} through @samp{f15}, and 47762@samp{fpc}. 47763 47764The @samp{org.gnu.gdb.s390.acr} feature is required. It should 47765contain the 32-bit registers @samp{acr0} through @samp{acr15}. 47766 47767The @samp{org.gnu.gdb.s390.linux} feature is optional. It should 47768contain the register @samp{orig_r2}, which is 64-bit wide on System z 47769targets and 32-bit otherwise. In addition, the feature may contain 47770the @samp{last_break} register, whose width depends on the addressing 47771mode, as well as the @samp{system_call} register, which is always 4777232-bit wide. 47773 47774The @samp{org.gnu.gdb.s390.tdb} feature is optional. It should 47775contain the 64-bit registers @samp{tdb0}, @samp{tac}, @samp{tct}, 47776@samp{atia}, and @samp{tr0} through @samp{tr15}. 47777 47778The @samp{org.gnu.gdb.s390.vx} feature is optional. It should contain 4777964-bit wide registers @samp{v0l} through @samp{v15l}, which will be 47780combined by @value{GDBN} with the floating point registers @samp{f0} 47781through @samp{f15} to present the 128-bit wide vector registers 47782@samp{v0} through @samp{v15}. In addition, this feature should 47783contain the 128-bit wide vector registers @samp{v16} through 47784@samp{v31}. 47785 47786The @samp{org.gnu.gdb.s390.gs} feature is optional. It should contain 47787the 64-bit wide guarded-storage-control registers @samp{gsd}, 47788@samp{gssm}, and @samp{gsepla}. 47789 47790The @samp{org.gnu.gdb.s390.gsbc} feature is optional. It should contain 47791the 64-bit wide guarded-storage broadcast control registers 47792@samp{bc_gsd}, @samp{bc_gssm}, and @samp{bc_gsepla}. 47793 47794@node Sparc Features 47795@subsection Sparc Features 47796@cindex target descriptions, sparc32 features 47797@cindex target descriptions, sparc64 features 47798The @samp{org.gnu.gdb.sparc.cpu} feature is required for sparc32/sparc64 47799targets. It should describe the following registers: 47800 47801@itemize @minus 47802@item 47803@samp{g0} through @samp{g7} 47804@item 47805@samp{o0} through @samp{o7} 47806@item 47807@samp{l0} through @samp{l7} 47808@item 47809@samp{i0} through @samp{i7} 47810@end itemize 47811 47812They may be 32-bit or 64-bit depending on the target. 47813 47814Also the @samp{org.gnu.gdb.sparc.fpu} feature is required for sparc32/sparc64 47815targets. It should describe the following registers: 47816 47817@itemize @minus 47818@item 47819@samp{f0} through @samp{f31} 47820@item 47821@samp{f32} through @samp{f62} for sparc64 47822@end itemize 47823 47824The @samp{org.gnu.gdb.sparc.cp0} feature is required for sparc32/sparc64 47825targets. It should describe the following registers: 47826 47827@itemize @minus 47828@item 47829@samp{y}, @samp{psr}, @samp{wim}, @samp{tbr}, @samp{pc}, @samp{npc}, 47830@samp{fsr}, and @samp{csr} for sparc32 47831@item 47832@samp{pc}, @samp{npc}, @samp{state}, @samp{fsr}, @samp{fprs}, and @samp{y} 47833for sparc64 47834@end itemize 47835 47836@node TIC6x Features 47837@subsection TMS320C6x Features 47838@cindex target descriptions, TIC6x features 47839@cindex target descriptions, TMS320C6x features 47840The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x 47841targets. It should contain registers @samp{A0} through @samp{A15}, 47842registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}. 47843 47844The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should 47845contain registers @samp{A16} through @samp{A31} and @samp{B16} 47846through @samp{B31}. 47847 47848The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should 47849contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}. 47850 47851@node Operating System Information 47852@appendix Operating System Information 47853@cindex operating system information 47854 47855Users of @value{GDBN} often wish to obtain information about the state of 47856the operating system running on the target---for example the list of 47857processes, or the list of open files. This section describes the 47858mechanism that makes it possible. This mechanism is similar to the 47859target features mechanism (@pxref{Target Descriptions}), but focuses 47860on a different aspect of target. 47861 47862Operating system information is retrieved from the target via the 47863remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata 47864read}). The object name in the request should be @samp{osdata}, and 47865the @var{annex} identifies the data to be fetched. 47866 47867@menu 47868* Process list:: 47869@end menu 47870 47871@node Process list 47872@appendixsection Process list 47873@cindex operating system information, process list 47874 47875When requesting the process list, the @var{annex} field in the 47876@samp{qXfer} request should be @samp{processes}. The returned data is 47877an XML document. The formal syntax of this document is defined in 47878@file{gdb/features/osdata.dtd}. 47879 47880An example document is: 47881 47882@smallexample 47883<?xml version="1.0"?> 47884<!DOCTYPE target SYSTEM "osdata.dtd"> 47885<osdata type="processes"> 47886 <item> 47887 <column name="pid">1</column> 47888 <column name="user">root</column> 47889 <column name="command">/sbin/init</column> 47890 <column name="cores">1,2,3</column> 47891 </item> 47892</osdata> 47893@end smallexample 47894 47895Each item should include a column whose name is @samp{pid}. The value 47896of that column should identify the process on the target. The 47897@samp{user} and @samp{command} columns are optional, and will be 47898displayed by @value{GDBN}. The @samp{cores} column, if present, 47899should contain a comma-separated list of cores that this process 47900is running on. Target may provide additional columns, 47901which @value{GDBN} currently ignores. 47902 47903@node Trace File Format 47904@appendix Trace File Format 47905@cindex trace file format 47906 47907The trace file comes in three parts: a header, a textual description 47908section, and a trace frame section with binary data. 47909 47910The header has the form @code{\x7fTRACE0\n}. The first byte is 47911@code{0x7f} so as to indicate that the file contains binary data, 47912while the @code{0} is a version number that may have different values 47913in the future. 47914 47915The description section consists of multiple lines of @sc{ascii} text 47916separated by newline characters (@code{0xa}). The lines may include a 47917variety of optional descriptive or context-setting information, such 47918as tracepoint definitions or register set size. @value{GDBN} will 47919ignore any line that it does not recognize. An empty line marks the end 47920of this section. 47921 47922@table @code 47923@item R @var{size} 47924Specifies the size of a register block in bytes. This is equal to the 47925size of a @code{g} packet payload in the remote protocol. @var{size} 47926is an ascii decimal number. There should be only one such line in 47927a single trace file. 47928 47929@item status @var{status} 47930Trace status. @var{status} has the same format as a @code{qTStatus} 47931remote packet reply. There should be only one such line in a single trace 47932file. 47933 47934@item tp @var{payload} 47935Tracepoint definition. The @var{payload} has the same format as 47936@code{qTfP}/@code{qTsP} remote packet reply payload. A single tracepoint 47937may take multiple lines of definition, corresponding to the multiple 47938reply packets. 47939 47940@item tsv @var{payload} 47941Trace state variable definition. The @var{payload} has the same format as 47942@code{qTfV}/@code{qTsV} remote packet reply payload. A single variable 47943may take multiple lines of definition, corresponding to the multiple 47944reply packets. 47945 47946@item tdesc @var{payload} 47947Target description in XML format. The @var{payload} is a single line of 47948the XML file. All such lines should be concatenated together to get 47949the original XML file. This file is in the same format as @code{qXfer} 47950@code{features} payload, and corresponds to the main @code{target.xml} 47951file. Includes are not allowed. 47952 47953@end table 47954 47955The trace frame section consists of a number of consecutive frames. 47956Each frame begins with a two-byte tracepoint number, followed by a 47957four-byte size giving the amount of data in the frame. The data in 47958the frame consists of a number of blocks, each introduced by a 47959character indicating its type (at least register, memory, and trace 47960state variable). The data in this section is raw binary, not a 47961hexadecimal or other encoding; its endianness matches the target's 47962endianness. 47963 47964@c FIXME bi-arch may require endianness/arch info in description section 47965 47966@table @code 47967@item R @var{bytes} 47968Register block. The number and ordering of bytes matches that of a 47969@code{g} packet in the remote protocol. Note that these are the 47970actual bytes, in target order, not a hexadecimal encoding. 47971 47972@item M @var{address} @var{length} @var{bytes}... 47973Memory block. This is a contiguous block of memory, at the 8-byte 47974address @var{address}, with a 2-byte length @var{length}, followed by 47975@var{length} bytes. 47976 47977@item V @var{number} @var{value} 47978Trace state variable block. This records the 8-byte signed value 47979@var{value} of trace state variable numbered @var{number}. 47980 47981@end table 47982 47983Future enhancements of the trace file format may include additional types 47984of blocks. 47985 47986@node Index Section Format 47987@appendix @code{.gdb_index} section format 47988@cindex .gdb_index section format 47989@cindex index section format 47990 47991This section documents the index section that is created by @code{save 47992gdb-index} (@pxref{Index Files}). The index section is 47993DWARF-specific; some knowledge of DWARF is assumed in this 47994description. 47995 47996The mapped index file format is designed to be directly 47997@code{mmap}able on any architecture. In most cases, a datum is 47998represented using a little-endian 32-bit integer value, called an 47999@code{offset_type}. Big endian machines must byte-swap the values 48000before using them. Exceptions to this rule are noted. The data is 48001laid out such that alignment is always respected. 48002 48003A mapped index consists of several areas, laid out in order. 48004 48005@enumerate 48006@item 48007The file header. This is a sequence of values, of @code{offset_type} 48008unless otherwise noted: 48009 48010@enumerate 48011@item 48012The version number, currently 8. Versions 1, 2 and 3 are obsolete. 48013Version 4 uses a different hashing function from versions 5 and 6. 48014Version 6 includes symbols for inlined functions, whereas versions 4 48015and 5 do not. Version 7 adds attributes to the CU indices in the 48016symbol table. Version 8 specifies that symbols from DWARF type units 48017(@samp{DW_TAG_type_unit}) refer to the type unit's symbol table and not the 48018compilation unit (@samp{DW_TAG_comp_unit}) using the type. 48019 48020@value{GDBN} will only read version 4, 5, or 6 indices 48021by specifying @code{set use-deprecated-index-sections on}. 48022GDB has a workaround for potentially broken version 7 indices so it is 48023currently not flagged as deprecated. 48024 48025@item 48026The offset, from the start of the file, of the CU list. 48027 48028@item 48029The offset, from the start of the file, of the types CU list. Note 48030that this area can be empty, in which case this offset will be equal 48031to the next offset. 48032 48033@item 48034The offset, from the start of the file, of the address area. 48035 48036@item 48037The offset, from the start of the file, of the symbol table. 48038 48039@item 48040The offset, from the start of the file, of the constant pool. 48041@end enumerate 48042 48043@item 48044The CU list. This is a sequence of pairs of 64-bit little-endian 48045values, sorted by the CU offset. The first element in each pair is 48046the offset of a CU in the @code{.debug_info} section. The second 48047element in each pair is the length of that CU. References to a CU 48048elsewhere in the map are done using a CU index, which is just the 480490-based index into this table. Note that if there are type CUs, then 48050conceptually CUs and type CUs form a single list for the purposes of 48051CU indices. 48052 48053@item 48054The types CU list. This is a sequence of triplets of 64-bit 48055little-endian values. In a triplet, the first value is the CU offset, 48056the second value is the type offset in the CU, and the third value is 48057the type signature. The types CU list is not sorted. 48058 48059@item 48060The address area. The address area consists of a sequence of address 48061entries. Each address entry has three elements: 48062 48063@enumerate 48064@item 48065The low address. This is a 64-bit little-endian value. 48066 48067@item 48068The high address. This is a 64-bit little-endian value. Like 48069@code{DW_AT_high_pc}, the value is one byte beyond the end. 48070 48071@item 48072The CU index. This is an @code{offset_type} value. 48073@end enumerate 48074 48075@item 48076The symbol table. This is an open-addressed hash table. The size of 48077the hash table is always a power of 2. 48078 48079Each slot in the hash table consists of a pair of @code{offset_type} 48080values. The first value is the offset of the symbol's name in the 48081constant pool. The second value is the offset of the CU vector in the 48082constant pool. 48083 48084If both values are 0, then this slot in the hash table is empty. This 48085is ok because while 0 is a valid constant pool index, it cannot be a 48086valid index for both a string and a CU vector. 48087 48088The hash value for a table entry is computed by applying an 48089iterative hash function to the symbol's name. Starting with an 48090initial value of @code{r = 0}, each (unsigned) character @samp{c} in 48091the string is incorporated into the hash using the formula depending on the 48092index version: 48093 48094@table @asis 48095@item Version 4 48096The formula is @code{r = r * 67 + c - 113}. 48097 48098@item Versions 5 to 7 48099The formula is @code{r = r * 67 + tolower (c) - 113}. 48100@end table 48101 48102The terminating @samp{\0} is not incorporated into the hash. 48103 48104The step size used in the hash table is computed via 48105@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash 48106value, and @samp{size} is the size of the hash table. The step size 48107is used to find the next candidate slot when handling a hash 48108collision. 48109 48110The names of C@t{++} symbols in the hash table are canonicalized. We 48111don't currently have a simple description of the canonicalization 48112algorithm; if you intend to create new index sections, you must read 48113the code. 48114 48115@item 48116The constant pool. This is simply a bunch of bytes. It is organized 48117so that alignment is correct: CU vectors are stored first, followed by 48118strings. 48119 48120A CU vector in the constant pool is a sequence of @code{offset_type} 48121values. The first value is the number of CU indices in the vector. 48122Each subsequent value is the index and symbol attributes of a CU in 48123the CU list. This element in the hash table is used to indicate which 48124CUs define the symbol and how the symbol is used. 48125See below for the format of each CU index+attributes entry. 48126 48127A string in the constant pool is zero-terminated. 48128@end enumerate 48129 48130Attributes were added to CU index values in @code{.gdb_index} version 7. 48131If a symbol has multiple uses within a CU then there is one 48132CU index+attributes value for each use. 48133 48134The format of each CU index+attributes entry is as follows 48135(bit 0 = LSB): 48136 48137@table @asis 48138 48139@item Bits 0-23 48140This is the index of the CU in the CU list. 48141@item Bits 24-27 48142These bits are reserved for future purposes and must be zero. 48143@item Bits 28-30 48144The kind of the symbol in the CU. 48145 48146@table @asis 48147@item 0 48148This value is reserved and should not be used. 48149By reserving zero the full @code{offset_type} value is backwards compatible 48150with previous versions of the index. 48151@item 1 48152The symbol is a type. 48153@item 2 48154The symbol is a variable or an enum value. 48155@item 3 48156The symbol is a function. 48157@item 4 48158Any other kind of symbol. 48159@item 5,6,7 48160These values are reserved. 48161@end table 48162 48163@item Bit 31 48164This bit is zero if the value is global and one if it is static. 48165 48166The determination of whether a symbol is global or static is complicated. 48167The authorative reference is the file @file{dwarf2read.c} in 48168@value{GDBN} sources. 48169 48170@end table 48171 48172This pseudo-code describes the computation of a symbol's kind and 48173global/static attributes in the index. 48174 48175@smallexample 48176is_external = get_attribute (die, DW_AT_external); 48177language = get_attribute (cu_die, DW_AT_language); 48178switch (die->tag) 48179 @{ 48180 case DW_TAG_typedef: 48181 case DW_TAG_base_type: 48182 case DW_TAG_subrange_type: 48183 kind = TYPE; 48184 is_static = 1; 48185 break; 48186 case DW_TAG_enumerator: 48187 kind = VARIABLE; 48188 is_static = language != CPLUS; 48189 break; 48190 case DW_TAG_subprogram: 48191 kind = FUNCTION; 48192 is_static = ! (is_external || language == ADA); 48193 break; 48194 case DW_TAG_constant: 48195 kind = VARIABLE; 48196 is_static = ! is_external; 48197 break; 48198 case DW_TAG_variable: 48199 kind = VARIABLE; 48200 is_static = ! is_external; 48201 break; 48202 case DW_TAG_namespace: 48203 kind = TYPE; 48204 is_static = 0; 48205 break; 48206 case DW_TAG_class_type: 48207 case DW_TAG_interface_type: 48208 case DW_TAG_structure_type: 48209 case DW_TAG_union_type: 48210 case DW_TAG_enumeration_type: 48211 kind = TYPE; 48212 is_static = language != CPLUS; 48213 break; 48214 default: 48215 assert (0); 48216 @} 48217@end smallexample 48218 48219@node Debuginfod 48220@appendix Download debugging resources with Debuginfod 48221@cindex debuginfod 48222 48223@code{debuginfod} is an HTTP server for distributing ELF, DWARF and source 48224files. 48225 48226With the @code{debuginfod} client library, @file{libdebuginfod}, @value{GDBN} 48227can query servers using the build IDs associated with missing debug info, 48228executables and source files in order to download them on demand. 48229 48230For instructions on building @value{GDBN} with @file{libdebuginfod}, 48231@pxref{Configure Options,,--with-debuginfod}. @code{debuginfod} is packaged 48232with @code{elfutils}, starting with version 0.178. See 48233@uref{https://sourceware.org/elfutils/Debuginfod.html} for more information 48234regarding @code{debuginfod}. 48235 48236@menu 48237* Debuginfod Settings:: Configuring debuginfod with @value{GDBN} 48238@end menu 48239 48240@node Debuginfod Settings 48241@section Debuginfod Settings 48242 48243@value{GDBN} provides the following commands for configuring @code{debuginfod}. 48244 48245@table @code 48246@kindex set debuginfod enabled 48247@anchor{set debuginfod enabled} 48248@item set debuginfod enabled 48249@itemx set debuginfod enabled on 48250@cindex enable debuginfod 48251@value{GDBN} will attempt to query @code{debuginfod} servers when missing debug 48252info or source files. 48253 48254@item set debuginfod enabled off 48255@value{GDBN} will not attempt to query @code{debuginfod} servers when missing 48256debug info or source files. By default, @code{debuginfod enabled} is set to 48257@code{off} for non-interactive sessions. 48258 48259@item set debuginfod enabled ask 48260@value{GDBN} will prompt the user to enable or disable @code{debuginfod} before 48261attempting to perform the next query. By default, @code{debuginfod enabled} 48262is set to @code{ask} for interactive sessions. 48263 48264@kindex show debuginfod enabled 48265@item show debuginfod enabled 48266Display whether @code{debuginfod enabled} is set to @code{on}, @code{off} or 48267@code{ask}. 48268 48269@kindex set debuginfod urls 48270@cindex configure debuginfod URLs 48271@item set debuginfod urls 48272@itemx set debuginfod urls @var{urls} 48273Set the space-separated list of URLs that @code{debuginfod} will attempt to 48274query. Only @code{http://}, @code{https://} and @code{file://} protocols 48275should be used. The default value of @code{debuginfod urls} is copied from 48276the @var{DEBUGINFOD_URLS} environment variable. 48277 48278@kindex show debuginfod urls 48279@item show debuginfod urls 48280Display the list of URLs that @code{debuginfod} will attempt to query. 48281 48282@kindex set debuginfod verbose 48283@cindex debuginfod verbosity 48284@item set debuginfod verbose 48285@itemx set debuginfod verbose @var{n} 48286Enable or disable @code{debuginfod}-related output. Use a non-zero value 48287to enable and @code{0} to disable. @code{debuginfod} output is shown by 48288default. 48289 48290@kindex show debuginfod verbose 48291@item show debuginfod verbose 48292Show the current verbosity setting. 48293 48294@end table 48295 48296@node Man Pages 48297@appendix Manual pages 48298@cindex Man pages 48299 48300@menu 48301* gdb man:: The GNU Debugger man page 48302* gdbserver man:: Remote Server for the GNU Debugger man page 48303* gcore man:: Generate a core file of a running program 48304* gdbinit man:: gdbinit scripts 48305* gdb-add-index man:: Add index files to speed up GDB 48306@end menu 48307 48308@node gdb man 48309@heading gdb man 48310 48311@c man title gdb The GNU Debugger 48312 48313@c man begin SYNOPSIS gdb 48314gdb [OPTIONS] [@var{prog}|@var{prog} @var{procID}|@var{prog} @var{core}] 48315@c man end 48316 48317@c man begin DESCRIPTION gdb 48318The purpose of a debugger such as @value{GDBN} is to allow you to see what is 48319going on ``inside'' another program while it executes -- or what another 48320program was doing at the moment it crashed. 48321 48322@value{GDBN} can do four main kinds of things (plus other things in support of 48323these) to help you catch bugs in the act: 48324 48325@itemize @bullet 48326@item 48327Start your program, specifying anything that might affect its behavior. 48328 48329@item 48330Make your program stop on specified conditions. 48331 48332@item 48333Examine what has happened, when your program has stopped. 48334 48335@item 48336Change things in your program, so you can experiment with correcting the 48337effects of one bug and go on to learn about another. 48338@end itemize 48339 48340You can use @value{GDBN} to debug programs written in C, C@t{++}, Fortran and 48341Modula-2. 48342 48343@value{GDBN} is invoked with the shell command @code{gdb}. Once started, it reads 48344commands from the terminal until you tell it to exit with the @value{GDBN} 48345command @code{quit} or @code{exit}. You can get online help from @value{GDBN} itself 48346by using the command @code{help}. 48347 48348You can run @code{gdb} with no arguments or options; but the most 48349usual way to start @value{GDBN} is with one argument or two, specifying an 48350executable program as the argument: 48351 48352@smallexample 48353gdb program 48354@end smallexample 48355 48356You can also start with both an executable program and a core file specified: 48357 48358@smallexample 48359gdb program core 48360@end smallexample 48361 48362You can, instead, specify a process ID as a second argument or use option 48363@code{-p}, if you want to debug a running process: 48364 48365@smallexample 48366gdb program 1234 48367gdb -p 1234 48368@end smallexample 48369 48370@noindent 48371would attach @value{GDBN} to process @code{1234}. With option @option{-p} you 48372can omit the @var{program} filename. 48373 48374Here are some of the most frequently needed @value{GDBN} commands: 48375 48376@c pod2man highlights the right hand side of the @item lines. 48377@table @env 48378@item break [@var{file}:][@var{function}|@var{line}] 48379Set a breakpoint at @var{function} or @var{line} (in @var{file}). 48380 48381@item run [@var{arglist}] 48382Start your program (with @var{arglist}, if specified). 48383 48384@item bt 48385Backtrace: display the program stack. 48386 48387@item print @var{expr} 48388Display the value of an expression. 48389 48390@item c 48391Continue running your program (after stopping, e.g.@: at a breakpoint). 48392 48393@item next 48394Execute next program line (after stopping); step @emph{over} any 48395function calls in the line. 48396 48397@item edit [@var{file}:]@var{function} 48398look at the program line where it is presently stopped. 48399 48400@item list [@var{file}:]@var{function} 48401type the text of the program in the vicinity of where it is presently stopped. 48402 48403@item step 48404Execute next program line (after stopping); step @emph{into} any 48405function calls in the line. 48406 48407@item help [@var{name}] 48408Show information about @value{GDBN} command @var{name}, or general information 48409about using @value{GDBN}. 48410 48411@item quit 48412@itemx exit 48413Exit from @value{GDBN}. 48414@end table 48415 48416@ifset man 48417For full details on @value{GDBN}, 48418see @cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 48419by Richard M. Stallman and Roland H. Pesch. The same text is available online 48420as the @code{gdb} entry in the @code{info} program. 48421@end ifset 48422@c man end 48423 48424@c man begin OPTIONS gdb 48425Any arguments other than options specify an executable 48426file and core file (or process ID); that is, the first argument 48427encountered with no 48428associated option flag is equivalent to a @option{--se} option, and the second, 48429if any, is equivalent to a @option{-c} option if it's the name of a file. 48430Many options have 48431both long and abbreviated forms; both are shown here. The long forms are also 48432recognized if you truncate them, so long as enough of the option is 48433present to be unambiguous. 48434 48435The abbreviated forms are shown here with @samp{-} and long forms are shown 48436with @samp{--} to reflect how they are shown in @option{--help}. However, 48437@value{GDBN} recognizes all of the following conventions for most options: 48438 48439@table @code 48440@item --option=@var{value} 48441@item --option @var{value} 48442@item -option=@var{value} 48443@item -option @var{value} 48444@item --o=@var{value} 48445@item --o @var{value} 48446@item -o=@var{value} 48447@item -o @var{value} 48448@end table 48449 48450All the options and command line arguments you give are processed 48451in sequential order. The order makes a difference when the @option{-x} 48452option is used. 48453 48454@table @env 48455@item --help 48456@itemx -h 48457List all options, with brief explanations. 48458 48459@item --symbols=@var{file} 48460@itemx -s @var{file} 48461Read symbol table from @var{file}. 48462 48463@item --write 48464Enable writing into executable and core files. 48465 48466@item --exec=@var{file} 48467@itemx -e @var{file} 48468Use @var{file} as the executable file to execute when 48469appropriate, and for examining pure data in conjunction with a core 48470dump. 48471 48472@item --se=@var{file} 48473Read symbol table from @var{file} and use it as the executable 48474file. 48475 48476@item --core=@var{file} 48477@itemx -c @var{file} 48478Use @var{file} as a core dump to examine. 48479 48480@item --command=@var{file} 48481@itemx -x @var{file} 48482Execute @value{GDBN} commands from @var{file}. 48483 48484@item --eval-command=@var{command} 48485@item -ex @var{command} 48486Execute given @value{GDBN} @var{command}. 48487 48488@item --init-eval-command=@var{command} 48489@item -iex 48490Execute @value{GDBN} @var{command} before loading the inferior. 48491 48492@item --directory=@var{directory} 48493@itemx -d @var{directory} 48494Add @var{directory} to the path to search for source files. 48495 48496@item --nh 48497Do not execute commands from @file{~/.config/gdb/gdbinit}, 48498@file{~/.gdbinit}, @file{~/.config/gdb/gdbearlyinit}, or 48499@file{~/.gdbearlyinit} 48500 48501@item --nx 48502@itemx -n 48503Do not execute commands from any @file{.gdbinit} or 48504@file{.gdbearlyinit} initialization files. 48505 48506@item --quiet 48507@item --silent 48508@itemx -q 48509``Quiet''. Do not print the introductory and copyright messages. These 48510messages are also suppressed in batch mode. 48511 48512@item --batch 48513Run in batch mode. Exit with status @code{0} after processing all the command 48514files specified with @option{-x} (and @file{.gdbinit}, if not inhibited). 48515Exit with nonzero status if an error occurs in executing the @value{GDBN} 48516commands in the command files. 48517 48518Batch mode may be useful for running @value{GDBN} as a filter, for example to 48519download and run a program on another computer; in order to make this 48520more useful, the message 48521 48522@smallexample 48523Program exited normally. 48524@end smallexample 48525 48526@noindent 48527(which is ordinarily issued whenever a program running under @value{GDBN} control 48528terminates) is not issued when running in batch mode. 48529 48530@item --batch-silent 48531Run in batch mode, just like @option{--batch}, but totally silent. All @value{GDBN} 48532output is supressed (stderr is unaffected). This is much quieter than 48533@option{--silent} and would be useless for an interactive session. 48534 48535This is particularly useful when using targets that give @samp{Loading section} 48536messages, for example. 48537 48538Note that targets that give their output via @value{GDBN}, as opposed to writing 48539directly to @code{stdout}, will also be made silent. 48540 48541@item --args @var{prog} [@var{arglist}] 48542Change interpretation of command line so that arguments following this 48543option are passed as arguments to the inferior. As an example, take 48544the following command: 48545 48546@smallexample 48547gdb ./a.out -q 48548@end smallexample 48549 48550@noindent 48551It would start @value{GDBN} with @option{-q}, not printing the introductory message. On 48552the other hand, using: 48553 48554@smallexample 48555gdb --args ./a.out -q 48556@end smallexample 48557 48558@noindent 48559starts @value{GDBN} with the introductory message, and passes the option to the inferior. 48560 48561@item --pid=@var{pid} 48562Attach @value{GDBN} to an already running program, with the PID @var{pid}. 48563 48564@item --tui 48565Open the terminal user interface. 48566 48567@item --readnow 48568Read all symbols from the given symfile on the first access. 48569 48570@item --readnever 48571Do not read symbol files. 48572 48573@item --return-child-result 48574@value{GDBN}'s exit code will be the same as the child's exit code. 48575 48576@item --configuration 48577Print details about GDB configuration and then exit. 48578 48579@item --version 48580Print version information and then exit. 48581 48582@item --cd=@var{directory} 48583Run @value{GDBN} using @var{directory} as its working directory, 48584instead of the current directory. 48585 48586@item --data-directory=@var{directory} 48587@item -D 48588Run @value{GDBN} using @var{directory} as its data directory. The data 48589directory is where @value{GDBN} searches for its auxiliary files. 48590 48591@item --fullname 48592@itemx -f 48593Emacs sets this option when it runs @value{GDBN} as a subprocess. It tells 48594@value{GDBN} to output the full file name and line number in a standard, 48595recognizable fashion each time a stack frame is displayed (which 48596includes each time the program stops). This recognizable format looks 48597like two @samp{\032} characters, followed by the file name, line number 48598and character position separated by colons, and a newline. The 48599Emacs-to-@value{GDBN} interface program uses the two @samp{\032} 48600characters as a signal to display the source code for the frame. 48601 48602@item -b @var{baudrate} 48603Set the line speed (baud rate or bits per second) of any serial 48604interface used by @value{GDBN} for remote debugging. 48605 48606@item -l @var{timeout} 48607Set timeout, in seconds, for remote debugging. 48608 48609@item --tty=@var{device} 48610Run using @var{device} for your program's standard input and output. 48611@end table 48612@c man end 48613 48614@c man begin SEEALSO gdb 48615@ifset man 48616The full documentation for @value{GDBN} is maintained as a Texinfo manual. 48617If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 48618documentation are properly installed at your site, the command 48619 48620@smallexample 48621info gdb 48622@end smallexample 48623 48624@noindent 48625should give you access to the complete manual. 48626 48627@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 48628Richard M. Stallman and Roland H. Pesch, July 1991. 48629@end ifset 48630@c man end 48631 48632@node gdbserver man 48633@heading gdbserver man 48634 48635@c man title gdbserver Remote Server for the GNU Debugger 48636@format 48637@c man begin SYNOPSIS gdbserver 48638gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 48639 48640gdbserver --attach @var{comm} @var{pid} 48641 48642gdbserver --multi @var{comm} 48643@c man end 48644@end format 48645 48646@c man begin DESCRIPTION gdbserver 48647@command{gdbserver} is a program that allows you to run @value{GDBN} on a different machine 48648than the one which is running the program being debugged. 48649 48650@ifclear man 48651@subheading Usage (server (target) side) 48652@end ifclear 48653@ifset man 48654Usage (server (target) side): 48655@end ifset 48656 48657First, you need to have a copy of the program you want to debug put onto 48658the target system. The program can be stripped to save space if needed, as 48659@command{gdbserver} doesn't care about symbols. All symbol handling is taken care of by 48660the @value{GDBN} running on the host system. 48661 48662To use the server, you log on to the target system, and run the @command{gdbserver} 48663program. You must tell it (a) how to communicate with @value{GDBN}, (b) the name of 48664your program, and (c) its arguments. The general syntax is: 48665 48666@smallexample 48667target> gdbserver @var{comm} @var{program} [@var{args} ...] 48668@end smallexample 48669 48670For example, using a serial port, you might say: 48671 48672@smallexample 48673@ifset man 48674@c @file would wrap it as F</dev/com1>. 48675target> gdbserver /dev/com1 emacs foo.txt 48676@end ifset 48677@ifclear man 48678target> gdbserver @file{/dev/com1} emacs foo.txt 48679@end ifclear 48680@end smallexample 48681 48682This tells @command{gdbserver} to debug emacs with an argument of foo.txt, and 48683to communicate with @value{GDBN} via @file{/dev/com1}. @command{gdbserver} now 48684waits patiently for the host @value{GDBN} to communicate with it. 48685 48686To use a TCP connection, you could say: 48687 48688@smallexample 48689target> gdbserver host:2345 emacs foo.txt 48690@end smallexample 48691 48692This says pretty much the same thing as the last example, except that we are 48693going to communicate with the @code{host} @value{GDBN} via TCP. The @code{host:2345} argument means 48694that we are expecting to see a TCP connection from @code{host} to local TCP port 486952345. (Currently, the @code{host} part is ignored.) You can choose any number you 48696want for the port number as long as it does not conflict with any existing TCP 48697ports on the target system. This same port number must be used in the host 48698@value{GDBN}s @code{target remote} command, which will be described shortly. Note that if 48699you chose a port number that conflicts with another service, @command{gdbserver} will 48700print an error message and exit. 48701 48702@command{gdbserver} can also attach to running programs. 48703This is accomplished via the @option{--attach} argument. The syntax is: 48704 48705@smallexample 48706target> gdbserver --attach @var{comm} @var{pid} 48707@end smallexample 48708 48709@var{pid} is the process ID of a currently running process. It isn't 48710necessary to point @command{gdbserver} at a binary for the running process. 48711 48712To start @code{gdbserver} without supplying an initial command to run 48713or process ID to attach, use the @option{--multi} command line option. 48714In such case you should connect using @kbd{target extended-remote} to start 48715the program you want to debug. 48716 48717@smallexample 48718target> gdbserver --multi @var{comm} 48719@end smallexample 48720 48721@ifclear man 48722@subheading Usage (host side) 48723@end ifclear 48724@ifset man 48725Usage (host side): 48726@end ifset 48727 48728You need an unstripped copy of the target program on your host system, since 48729@value{GDBN} needs to examine its symbol tables and such. Start up @value{GDBN} as you normally 48730would, with the target program as the first argument. (You may need to use the 48731@option{--baud} option if the serial line is running at anything except 9600 baud.) 48732That is @code{gdb TARGET-PROG}, or @code{gdb --baud BAUD TARGET-PROG}. After that, the only 48733new command you need to know about is @code{target remote} 48734(or @code{target extended-remote}). Its argument is either 48735a device name (usually a serial device, like @file{/dev/ttyb}), or a @code{HOST:PORT} 48736descriptor. For example: 48737 48738@smallexample 48739@ifset man 48740@c @file would wrap it as F</dev/ttyb>. 48741(gdb) target remote /dev/ttyb 48742@end ifset 48743@ifclear man 48744(gdb) target remote @file{/dev/ttyb} 48745@end ifclear 48746@end smallexample 48747 48748@noindent 48749communicates with the server via serial line @file{/dev/ttyb}, and: 48750 48751@smallexample 48752(gdb) target remote the-target:2345 48753@end smallexample 48754 48755@noindent 48756communicates via a TCP connection to port 2345 on host `the-target', where 48757you previously started up @command{gdbserver} with the same port number. Note that for 48758TCP connections, you must start up @command{gdbserver} prior to using the `target remote' 48759command, otherwise you may get an error that looks something like 48760`Connection refused'. 48761 48762@command{gdbserver} can also debug multiple inferiors at once, 48763described in 48764@ifset man 48765the @value{GDBN} manual in node @code{Inferiors Connections and Programs} 48766-- shell command @code{info -f gdb -n 'Inferiors Connections and Programs'}. 48767@end ifset 48768@ifclear man 48769@ref{Inferiors Connections and Programs}. 48770@end ifclear 48771In such case use the @code{extended-remote} @value{GDBN} command variant: 48772 48773@smallexample 48774(gdb) target extended-remote the-target:2345 48775@end smallexample 48776 48777The @command{gdbserver} option @option{--multi} may or may not be used in such 48778case. 48779@c man end 48780 48781@c man begin OPTIONS gdbserver 48782There are three different modes for invoking @command{gdbserver}: 48783 48784@itemize @bullet 48785 48786@item 48787Debug a specific program specified by its program name: 48788 48789@smallexample 48790gdbserver @var{comm} @var{prog} [@var{args}@dots{}] 48791@end smallexample 48792 48793The @var{comm} parameter specifies how should the server communicate 48794with @value{GDBN}; it is either a device name (to use a serial line), 48795a TCP port number (@code{:1234}), or @code{-} or @code{stdio} to use 48796stdin/stdout of @code{gdbserver}. Specify the name of the program to 48797debug in @var{prog}. Any remaining arguments will be passed to the 48798program verbatim. When the program exits, @value{GDBN} will close the 48799connection, and @code{gdbserver} will exit. 48800 48801@item 48802Debug a specific program by specifying the process ID of a running 48803program: 48804 48805@smallexample 48806gdbserver --attach @var{comm} @var{pid} 48807@end smallexample 48808 48809The @var{comm} parameter is as described above. Supply the process ID 48810of a running program in @var{pid}; @value{GDBN} will do everything 48811else. Like with the previous mode, when the process @var{pid} exits, 48812@value{GDBN} will close the connection, and @code{gdbserver} will exit. 48813 48814@item 48815Multi-process mode -- debug more than one program/process: 48816 48817@smallexample 48818gdbserver --multi @var{comm} 48819@end smallexample 48820 48821In this mode, @value{GDBN} can instruct @command{gdbserver} which 48822command(s) to run. Unlike the other 2 modes, @value{GDBN} will not 48823close the connection when a process being debugged exits, so you can 48824debug several processes in the same session. 48825@end itemize 48826 48827In each of the modes you may specify these options: 48828 48829@table @env 48830 48831@item --help 48832List all options, with brief explanations. 48833 48834@item --version 48835This option causes @command{gdbserver} to print its version number and exit. 48836 48837@item --attach 48838@command{gdbserver} will attach to a running program. The syntax is: 48839 48840@smallexample 48841target> gdbserver --attach @var{comm} @var{pid} 48842@end smallexample 48843 48844@var{pid} is the process ID of a currently running process. It isn't 48845necessary to point @command{gdbserver} at a binary for the running process. 48846 48847@item --multi 48848To start @code{gdbserver} without supplying an initial command to run 48849or process ID to attach, use this command line option. 48850Then you can connect using @kbd{target extended-remote} and start 48851the program you want to debug. The syntax is: 48852 48853@smallexample 48854target> gdbserver --multi @var{comm} 48855@end smallexample 48856 48857@item --debug 48858Instruct @code{gdbserver} to display extra status information about the debugging 48859process. 48860This option is intended for @code{gdbserver} development and for bug reports to 48861the developers. 48862 48863@item --remote-debug 48864Instruct @code{gdbserver} to display remote protocol debug output. 48865This option is intended for @code{gdbserver} development and for bug reports to 48866the developers. 48867 48868@item --debug-file=@var{filename} 48869Instruct @code{gdbserver} to send any debug output to the given @var{filename}. 48870This option is intended for @code{gdbserver} development and for bug reports to 48871the developers. 48872 48873@item --debug-format=option1@r{[},option2,...@r{]} 48874Instruct @code{gdbserver} to include extra information in each line 48875of debugging output. 48876@xref{Other Command-Line Arguments for gdbserver}. 48877 48878@item --wrapper 48879Specify a wrapper to launch programs 48880for debugging. The option should be followed by the name of the 48881wrapper, then any command-line arguments to pass to the wrapper, then 48882@kbd{--} indicating the end of the wrapper arguments. 48883 48884@item --once 48885By default, @command{gdbserver} keeps the listening TCP port open, so that 48886additional connections are possible. However, if you start @code{gdbserver} 48887with the @option{--once} option, it will stop listening for any further 48888connection attempts after connecting to the first @value{GDBN} session. 48889 48890@c --disable-packet is not documented for users. 48891 48892@c --disable-randomization and --no-disable-randomization are superseded by 48893@c QDisableRandomization. 48894 48895@end table 48896@c man end 48897 48898@c man begin SEEALSO gdbserver 48899@ifset man 48900The full documentation for @value{GDBN} is maintained as a Texinfo manual. 48901If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 48902documentation are properly installed at your site, the command 48903 48904@smallexample 48905info gdb 48906@end smallexample 48907 48908should give you access to the complete manual. 48909 48910@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 48911Richard M. Stallman and Roland H. Pesch, July 1991. 48912@end ifset 48913@c man end 48914 48915@node gcore man 48916@heading gcore 48917 48918@c man title gcore Generate a core file of a running program 48919 48920@format 48921@c man begin SYNOPSIS gcore 48922gcore [-a] [-o @var{prefix}] @var{pid1} [@var{pid2}...@var{pidN}] 48923@c man end 48924@end format 48925 48926@c man begin DESCRIPTION gcore 48927Generate core dumps of one or more running programs with process IDs 48928@var{pid1}, @var{pid2}, etc. A core file produced by @command{gcore} 48929is equivalent to one produced by the kernel when the process crashes 48930(and when @kbd{ulimit -c} was used to set up an appropriate core dump 48931limit). However, unlike after a crash, after @command{gcore} finishes 48932its job the program remains running without any change. 48933@c man end 48934 48935@c man begin OPTIONS gcore 48936@table @env 48937@item -a 48938Dump all memory mappings. The actual effect of this option depends on 48939the Operating System. On @sc{gnu}/Linux, it will disable 48940@code{use-coredump-filter} (@pxref{set use-coredump-filter}) and 48941enable @code{dump-excluded-mappings} (@pxref{set 48942dump-excluded-mappings}). 48943 48944@item -o @var{prefix} 48945The optional argument @var{prefix} specifies the prefix to be used 48946when composing the file names of the core dumps. The file name is 48947composed as @file{@var{prefix}.@var{pid}}, where @var{pid} is the 48948process ID of the running program being analyzed by @command{gcore}. 48949If not specified, @var{prefix} defaults to @var{gcore}. 48950@end table 48951@c man end 48952 48953@c man begin SEEALSO gcore 48954@ifset man 48955The full documentation for @value{GDBN} is maintained as a Texinfo manual. 48956If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 48957documentation are properly installed at your site, the command 48958 48959@smallexample 48960info gdb 48961@end smallexample 48962 48963@noindent 48964should give you access to the complete manual. 48965 48966@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 48967Richard M. Stallman and Roland H. Pesch, July 1991. 48968@end ifset 48969@c man end 48970 48971@node gdbinit man 48972@heading gdbinit 48973 48974@c man title gdbinit GDB initialization scripts 48975 48976@format 48977@c man begin SYNOPSIS gdbinit 48978@ifset SYSTEM_GDBINIT 48979@value{SYSTEM_GDBINIT} 48980@end ifset 48981 48982@ifset SYSTEM_GDBINIT_DIR 48983@value{SYSTEM_GDBINIT_DIR}/* 48984@end ifset 48985 48986~/.config/gdb/gdbinit 48987 48988~/.gdbinit 48989 48990./.gdbinit 48991@c man end 48992@end format 48993 48994@c man begin DESCRIPTION gdbinit 48995These files contain @value{GDBN} commands to automatically execute during 48996@value{GDBN} startup. The lines of contents are canned sequences of commands, 48997described in 48998@ifset man 48999the @value{GDBN} manual in node @code{Sequences} 49000-- shell command @code{info -f gdb -n Sequences}. 49001@end ifset 49002@ifclear man 49003@ref{Sequences}. 49004@end ifclear 49005 49006Please read more in 49007@ifset man 49008the @value{GDBN} manual in node @code{Startup} 49009-- shell command @code{info -f gdb -n Startup}. 49010@end ifset 49011@ifclear man 49012@ref{Startup}. 49013@end ifclear 49014 49015@table @env 49016@ifset SYSTEM_GDBINIT 49017@item @value{SYSTEM_GDBINIT} 49018@end ifset 49019@ifclear SYSTEM_GDBINIT 49020@item (not enabled with @code{--with-system-gdbinit} during compilation) 49021@end ifclear 49022System-wide initialization file. It is executed unless user specified 49023@value{GDBN} option @code{-nx} or @code{-n}. 49024See more in 49025@ifset man 49026the @value{GDBN} manual in node @code{System-wide configuration} 49027-- shell command @code{info -f gdb -n 'System-wide configuration'}. 49028@end ifset 49029@ifset SYSTEM_GDBINIT_DIR 49030@item @value{SYSTEM_GDBINIT_DIR} 49031@end ifset 49032@ifclear SYSTEM_GDBINIT_DIR 49033@item (not enabled with @code{--with-system-gdbinit-dir} during compilation) 49034@end ifclear 49035System-wide initialization directory. All files in this directory are 49036executed on startup unless user specified @value{GDBN} option @code{-nx} or 49037@code{-n}, as long as they have a recognized file extension. 49038See more in 49039@ifset man 49040the @value{GDBN} manual in node @code{System-wide configuration} 49041-- shell command @code{info -f gdb -n 'System-wide configuration'}. 49042@end ifset 49043@ifclear man 49044@ref{System-wide configuration}. 49045@end ifclear 49046 49047@item @file{~/.config/gdb/gdbinit} or @file{~/.gdbinit} 49048User initialization file. It is executed unless user specified 49049@value{GDBN} options @code{-nx}, @code{-n} or @code{-nh}. 49050 49051@item @file{.gdbinit} 49052Initialization file for current directory. It may need to be enabled with 49053@value{GDBN} security command @code{set auto-load local-gdbinit}. 49054See more in 49055@ifset man 49056the @value{GDBN} manual in node @code{Init File in the Current Directory} 49057-- shell command @code{info -f gdb -n 'Init File in the Current Directory'}. 49058@end ifset 49059@ifclear man 49060@ref{Init File in the Current Directory}. 49061@end ifclear 49062@end table 49063@c man end 49064 49065@c man begin SEEALSO gdbinit 49066@ifset man 49067gdb(1), @code{info -f gdb -n Startup} 49068 49069The full documentation for @value{GDBN} is maintained as a Texinfo manual. 49070If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 49071documentation are properly installed at your site, the command 49072 49073@smallexample 49074info gdb 49075@end smallexample 49076 49077should give you access to the complete manual. 49078 49079@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 49080Richard M. Stallman and Roland H. Pesch, July 1991. 49081@end ifset 49082@c man end 49083 49084@node gdb-add-index man 49085@heading gdb-add-index 49086@pindex gdb-add-index 49087@anchor{gdb-add-index} 49088 49089@c man title gdb-add-index Add index files to speed up GDB 49090 49091@c man begin SYNOPSIS gdb-add-index 49092gdb-add-index @var{filename} 49093@c man end 49094 49095@c man begin DESCRIPTION gdb-add-index 49096When @value{GDBN} finds a symbol file, it scans the symbols in the 49097file in order to construct an internal symbol table. This lets most 49098@value{GDBN} operations work quickly--at the cost of a delay early on. 49099For large programs, this delay can be quite lengthy, so @value{GDBN} 49100provides a way to build an index, which speeds up startup. 49101 49102To determine whether a file contains such an index, use the command 49103@kbd{readelf -S filename}: the index is stored in a section named 49104@code{.gdb_index}. The index file can only be produced on systems 49105which use ELF binaries and DWARF debug information (i.e., sections 49106named @code{.debug_*}). 49107 49108@command{gdb-add-index} uses @value{GDBN} and @command{objdump} found 49109in the @env{PATH} environment variable. If you want to use different 49110versions of these programs, you can specify them through the 49111@env{GDB} and @env{OBJDUMP} environment variables. 49112 49113See more in 49114@ifset man 49115the @value{GDBN} manual in node @code{Index Files} 49116-- shell command @kbd{info -f gdb -n "Index Files"}. 49117@end ifset 49118@ifclear man 49119@ref{Index Files}. 49120@end ifclear 49121@c man end 49122 49123@c man begin SEEALSO gdb-add-index 49124@ifset man 49125The full documentation for @value{GDBN} is maintained as a Texinfo manual. 49126If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo 49127documentation are properly installed at your site, the command 49128 49129@smallexample 49130info gdb 49131@end smallexample 49132 49133should give you access to the complete manual. 49134 49135@cite{Using GDB: A Guide to the GNU Source-Level Debugger}, 49136Richard M. Stallman and Roland H. Pesch, July 1991. 49137@end ifset 49138@c man end 49139 49140@include gpl.texi 49141 49142@node GNU Free Documentation License 49143@appendix GNU Free Documentation License 49144@include fdl.texi 49145 49146@node Concept Index 49147@unnumbered Concept Index 49148 49149@printindex cp 49150 49151@node Command and Variable Index 49152@unnumbered Command, Variable, and Function Index 49153 49154@printindex fn 49155 49156@tex 49157% I think something like @@colophon should be in texinfo. In the 49158% meantime: 49159\long\def\colophon{\hbox to0pt{}\vfill 49160\centerline{The body of this manual is set in} 49161\centerline{\fontname\tenrm,} 49162\centerline{with headings in {\bf\fontname\tenbf}} 49163\centerline{and examples in {\tt\fontname\tentt}.} 49164\centerline{{\it\fontname\tenit\/},} 49165\centerline{{\bf\fontname\tenbf}, and} 49166\centerline{{\sl\fontname\tensl\/}} 49167\centerline{are used for emphasis.}\vfill} 49168\page\colophon 49169% Blame: doc@@cygnus.com, 1991. 49170@end tex 49171 49172@bye 49173