diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 7faab2b8e5..97171e4bfd 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,9 @@ +Tue Jan 12 16:54:37 1999 Edith Epstein + + * gdb.texinfo (Shell Commands): fixed messages about shell usage. + HP was insisting on C shell. Now all UNIX platforms have the + same message. removed @ifset HPPA and @ifclear HPPA + Wed Jan 6 11:55:34 1999 David Taylor The following changes were made by Edith Epstein diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 8467157def..b982a89b61 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -30,14 +30,27 @@ @c readline appendices use @vindex @syncodeindex vr cp +@ifclear HPPA @c !!set GDB manual's edition---not the same as GDB version! -@set EDITION Fifth +@set EDITION Sixth @c !!set GDB manual's revision date @set DATE April 1998 +@end ifclear @c THIS MANUAL REQUIRES TEXINFO-2 macros and info-makers to format properly. +@ifset HPPA +@c !!set GDB manual's edition---not the same as GDB version! +@set EDITION Sixth-HP + +@c !!set GDB manual's revision date +@set DATE November 1997 + +@c !!set HP version +@set HPVER HP WDB Version 0.75 +@end ifset + @ifinfo @c This is a dir.info fragment to support semi-automated addition of @c manuals to an info tree. zoo@cygnus.com is developing this facility. @@ -87,10 +100,18 @@ into another language, under the above conditions for modified versions. @subtitle (@value{TARGET}) @end ifclear @sp 1 +@ifclear HPPA @subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN} @subtitle @value{DATE} @author Richard M. Stallman and Roland H. Pesch +@end ifclear +@ifset HPPA +@subtitle Edition @value{EDITION}, for @value{HPVER} (based on @value{GDBN} @value{GDBVN}) +@subtitle @value{DATE} +@author Richard M. Stallman and Roland H. Pesch (modified by HP) +@end ifset @page +@ifclear HPPA @tex {\parskip=0pt \hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@prep.ai.mit.edu.)\par @@ -99,16 +120,27 @@ into another language, under the above conditions for modified versions. \hfill doc\@cygnus.com\par } @end tex +@end ifclear +@ifset HPPA +@tex +{\parskip=0pt +\hfill {\it Debugging with @value{GDBN}}\par +\hfill \TeX{}info \texinfoversion\par +} +@end tex +@end ifset @vskip 0pt plus 1filll Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. @sp 2 +@ifclear HPPA Published by the Free Software Foundation @* 59 Temple Place - Suite 330, @* Boston, MA 02111-1307 USA @* Printed copies are available for $20 each. @* ISBN 1-882114-11-6 @* +@end ifclear Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -125,7 +157,7 @@ into another language, under the above conditions for modified versions. @page @ifinfo -@node Top +@node Top, Summary, (dir), (dir) @top Debugging with @value{GDBN} This file describes @value{GDBN}, the @sc{gnu} symbolic debugger. @@ -133,6 +165,8 @@ This file describes @value{GDBN}, the @sc{gnu} symbolic debugger. This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version @value{GDBVN}. +Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997 +Free Software Foundation, Inc. @menu * Summary:: Summary of @value{GDBN} @ifclear BARETARGET @@ -149,10 +183,10 @@ This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version @ifclear CONLY * Languages:: Using @value{GDBN} with different languages @end ifclear + @ifset CONLY * C:: C language support @end ifset -@c remnant makeinfo bug, blank line needed after two end-ifs? * Symbols:: Examining the symbol table * Altering:: Altering execution @@ -164,22 +198,309 @@ This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs @end ifclear +@ifset LUCID +* Energize:: +@end ifset + * GDB Bugs:: Reporting bugs in @value{GDBN} -* Command Line Editing:: Facilities of the readline library -* Using History Interactively:: -@c @ifset NOVEL -@c * Renamed Commands:: -@c @end ifset +@ifset NOVEL +@ifset RENAMED +* Renamed Commands:: @c @end ifset +@end ifset + +@end ifset + @ifclear PRECONFIGURED +@ifclear HPPA * Formatting Documentation:: How to format and print @value{GDBN} documentation -* Installing GDB:: Installing GDB @end ifclear +@end ifclear + +* Command Line Editing:: Command Line Editing +* Using History:: Using History Interactively +* Installing GDB:: Installing GDB * Index:: Index + + --- The Detailed Node Listing --- + +Summary of @value{GDBN} + +* Free Software:: Freely redistributable software +* Contributors:: Contributors to GDB + +Getting In and Out of @value{GDBN} + +* Invoking GDB:: How to start @value{GDBN} +* Quitting GDB:: How to quit @value{GDBN} +* Shell Commands:: How to use shell commands inside @value{GDBN} + +Invoking @value{GDBN} + +* File Options:: Choosing files +* Mode Options:: Choosing modes + +@value{GDBN} Commands + +* Command Syntax:: How to give commands to @value{GDBN} +* Completion:: Command completion +* Help:: How to ask @value{GDBN} for help + +Running Programs Under @value{GDBN} + +* Compilation:: Compiling for debugging +* Starting:: Starting your program +@ifclear BARETARGET +* Arguments:: Your program's arguments +* Environment:: Your program's environment +@end ifclear + +* Working Directory:: Your program's working directory +* Input/Output:: Your program's input and output +* Attach:: Debugging an already-running process +* Kill Process:: Killing the child process +@ifclear HPPA +* Process Information:: Additional process information +@end ifclear + +* Threads:: Debugging programs with multiple threads +* Processes:: Debugging programs with multiple processes + +Stopping and Continuing + +@ifclear CONLY +@ifclear HPPA +* Breakpoints:: Breakpoints, watchpoints, and exceptions +@end ifclear + +@ifset HPPA +* Breakpoints:: Breakpoints, watchpoints, and catchpoints +@end ifset + +@end ifclear + +@ifset CONLY +* Breakpoints:: Breakpoints and watchpoints +@end ifset + +* Continuing and Stepping:: Resuming execution +@ifset POSIX +* Signals:: Signals +@end ifset + +@ifclear BARETARGET +* Thread Stops:: Stopping and starting multi-thread programs +@end ifclear + +Breakpoints and watchpoints + +* Set Breaks:: Setting breakpoints +* Set Watchpoints:: Setting watchpoints +@ifclear CONLY +@ifclear HPPA +* Exception Handling:: Breakpoints and exceptions +@end ifclear + +@ifset HPPA +* Set Catchpoints:: Setting catchpoints +@end ifset + +@end ifclear + +* Delete Breaks:: Deleting breakpoints +* Disabling:: Disabling breakpoints +* Conditions:: Break conditions +* Break Commands:: Breakpoint command lists +@ifclear CONLY +* Breakpoint Menus:: Breakpoint menus +@end ifclear + +Examining the Stack + +* Frames:: Stack frames +* Backtrace:: Backtraces +* Selection:: Selecting a frame +* Frame Info:: Information on a frame +@ifset MIPS +* MIPS Stack:: MIPS machines and the function stack +@end ifset + +Examining Source Files + +* List:: Printing source lines +@ifclear DOSHOST +* Search:: Searching source files +@end ifclear + +* Source Path:: Specifying source directories +* Machine Code:: Source and machine code + +Examining Data + +* Expressions:: Expressions +* Variables:: Program variables +* Arrays:: Artificial arrays +* Output Formats:: Output formats +* Memory:: Examining memory +* Auto Display:: Automatic display +* Print Settings:: Print settings +* Value History:: Value history +* Convenience Vars:: Convenience variables +* Registers:: Registers +@ifclear HAVE-FLOAT +* Floating Point Hardware:: Floating point hardware +@end ifclear + +Using @value{GDBN} with Different Languages + +* Setting:: Switching between source languages +* Show:: Displaying the language +@ifset MOD2 +* Checks:: Type and range checks +@end ifset + +* Support:: Supported languages + +Switching between source languages + +* Filenames:: Filename extensions and languages. +* Manually:: Setting the working language manually +* Automatically:: Having @value{GDBN} infer the source language + +@ifset MOD2 +Type and range checking + +* Type Checking:: An overview of type checking +* Range Checking:: An overview of range checking +@end ifset + +Supported languages + +@ifset MOD2 +* C:: C and C++ + +C Language Support + +* C Operators:: C operators + +C Language Support +@end ifset + +* C Operators:: C and C++ operators +* C Constants:: C and C++ constants +* Cplus expressions:: C++ expressions +* C Defaults:: Default settings for C and C++ +@ifset MOD2 +* C Checks:: C and C++ type and range checks +@end ifset +* Debugging C:: @value{GDBN} and C +* Debugging C plus plus:: @value{GDBN} features for C++ + +@ifset MOD2 +Modula-2 + +* M2 Operators:: Built-in operators +* Built-In Func/Proc:: Built-in functions and procedures +* M2 Constants:: Modula-2 constants +* M2 Defaults:: Default settings for Modula-2 +* Deviations:: Deviations from standard Modula-2 +* M2 Checks:: Modula-2 type and range checks +* M2 Scope:: The scope operators @code{::} and @code{.} +* GDB/M2:: @value{GDBN} and Modula-2 +@end ifset + +Altering Execution + +* Assignment:: Assignment to variables +* Jumping:: Continuing at a different address +@ifclear BARETARGET +* Signaling:: Giving your program a signal +@end ifclear + +* Returning:: Returning from a function +* Calling:: Calling your program's functions +* Patching:: Patching your program + +@value{GDBN} Files + +* Files:: Commands to specify files +* Symbol Errors:: Errors reading symbol files + +Specifying a Debugging Target + +* Active Targets:: Active targets +* Target Commands:: Commands for managing targets +@ifclear HPPA +* Byte Order:: Choosing target byte order +* Remote:: Remote debugging + +Remote debugging +@end ifclear + +@ifset REMOTESTUB +* Remote Serial:: @value{GDBN} remote serial protocol +@end ifset + +@ifset I960 +* i960-Nindy Remote:: @value{GDBN} with a remote i960 (Nindy) +@end ifset + +@ifset AMD29K +* UDI29K Remote:: The UDI protocol for AMD29K +* EB29K Remote:: The EBMON protocol for AMD29K +@end ifset + +@ifset VXWORKS +* VxWorks Remote:: @value{GDBN} and VxWorks +@end ifset + +@ifset ST2000 +* ST2000 Remote:: @value{GDBN} with a Tandem ST2000 +@end ifset + +@ifset H8 +* Hitachi Remote:: @value{GDBN} and Hitachi Microprocessors +@end ifset + +@ifset MIPS +* MIPS Remote:: @value{GDBN} and MIPS boards +@end ifset + +@ifset SIMS +* Simulator:: Simulated CPU target +@end ifset + +Controlling @value{GDBN} + +* Prompt:: Prompt +* Editing:: Command editing +* History:: Command history +* Screen Size:: Screen size +* Numbers:: Numbers +* Messages/Warnings:: Optional warnings and messages + +Canned Sequences of Commands + +* Define:: User-defined commands +* Hooks:: User-defined command hooks +* Command Files:: Command files +* Output:: Commands for controlled output + +Reporting Bugs in @value{GDBN} + +* Bug Criteria:: Have you found a bug? +* Bug Reporting:: How to report bugs + +Installing @value{GDBN} + +* Separate Objdir:: Compiling @value{GDBN} in another directory +* Config Names:: Specifying names for hosts and targets +* Configure Options:: Summary of options for configure @end menu + @end ifinfo -@node Summary +@node Summary, Sample Session, Top, Top @unnumbered Summary of @value{GDBN} The purpose of a debugger such as @value{GDBN} is to allow you to see what is @@ -220,8 +541,8 @@ see @ref{Modula-2,,Modula-2}. There is no further documentation on Chill yet. Debugging Pascal programs which use sets, subranges, file variables, or nested functions does not currently work. @value{GDBN} does not support entering expressions, printing values, or similar features using Pascal syntax. - @end ifset + @ifset FORTRAN @cindex Fortran @value{GDBN} can be used to debug programs written in Fortran, although @@ -231,12 +552,21 @@ some variables with a trailing underscore. @end ifset @end ifclear +@ifset HPPA +This version of the manual documents HP Wildebeest (WDB) Version 0.75, +implemented on HP 9000 systems running Release 10.20, 10.30, or 11.0 of +the HP-UX operating system. HP WDB 0.75 can be used to debug code +generated by the HP ANSI C and HP ANSI C++ compilers as well as the +@sc{gnu} C and C++ compilers. It does not support the debugging of +Fortran, Modula-2, or Chill programs. +@end ifset + @menu * Free Software:: Freely redistributable software * Contributors:: Contributors to GDB @end menu -@node Free Software +@node Free Software, Contributors, Summary, Summary @unnumberedsec Free software @value{GDBN} is @dfn{free software}, protected by the @sc{gnu} @@ -252,7 +582,7 @@ Fundamentally, the General Public License is a license which says that you have these freedoms and that you cannot take these freedoms away from anyone else. -@node Contributors +@node Contributors, , Free Software, Summary @unnumberedsec Contributors to GDB Richard Stallman was the original author of GDB, and of many other @sc{gnu} @@ -362,8 +692,18 @@ nearly innumerable bug fixes and cleanups throughout GDB. Cygnus Solutions has sponsored GDB maintenance and much of its development since 1991. +@ifset HPPA +The following people at the Hewlett-Packard Company contributed +support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0 +(narrow mode), HP's implementation of kernel threads, HP's aC++ +compiler, and the terminal user interface: Ben Krepp, Richard Title, +John Bishop, Susan Macchia, Kathy Mann, Satish Pai, India Paul, Steve +Rehrauer, and Elena Zannoni. Kim Haase provided HP-specific +information in this manual. +@end ifset + @ifclear BARETARGET -@node Sample Session +@node Sample Session, Invocation, Summary, Top @chapter A Sample @value{GDBN} Session You can use this manual at your leisure to read all about @value{GDBN}. @@ -410,6 +750,7 @@ m4: End of input: 0: fatal error: EOF in string @noindent Let us use @value{GDBN} to try to see what is going on. +@ifclear HPPA @smallexample $ @b{@value{GDBP} m4} @c FIXME: this falsifies the exact text played out, to permit smallbook @@ -423,6 +764,21 @@ There is absolutely no warranty for @value{GDBN}; type "show warranty" @value{GDBN} @value{GDBVN}, Copyright 1995 Free Software Foundation, Inc... (@value{GDBP}) @end smallexample +@end ifclear +@ifset HPPA +@smallexample +$ @b{@value{GDBP} m4} +Wildebeest is free software and you are welcome to distribute copies of +it under certain conditions; type "show copying" to see the conditions. +There is absolutely no warranty for Wildebeest; type "show warranty" +for details. + +Hewlett-Packard Wildebeest 0.75 (based on GDB 4.16) +(built for PA-RISC 1.1 or 2.0, HP-UX 10.20) +Copyright 1996, 1997 Free Software Foundation, Inc. +(@value{GDBP}) +@end smallexample +@end ifset @noindent @value{GDBN} reads only enough symbol data to know where to find the @@ -634,7 +990,7 @@ session with the @value{GDBN} @code{quit} command. @end smallexample @end ifclear -@node Invocation +@node Invocation, Commands, Sample Session, Top @chapter Getting In and Out of @value{GDBN} This chapter discusses how to start @value{GDBN}, and how to get out of it. @@ -648,11 +1004,11 @@ type @kbd{quit} or @kbd{C-d} to exit. @menu * Invoking GDB:: How to start @value{GDBN} -* Quitting GDB:: How to quit @value{GDBN} +* Quitting GDB:: How to quit @value{GDBN} * Shell Commands:: How to use shell commands inside @value{GDBN} @end menu -@node Invoking GDB +@node Invoking GDB, Quitting GDB, Invocation, Invocation @section Invoking @value{GDBN} @ifset H8EXCLUSIVE @@ -700,17 +1056,19 @@ to debug a running process: would attach @value{GDBN} to process @code{1234} (unless you also have a file named @file{1234}; @value{GDBN} does check for a core file first). +@ifclear HPPA Taking advantage of the second command-line argument requires a fairly complete operating system; when you use @value{GDBN} as a remote debugger attached to a bare board, there may not be any notion of ``process'', and there is often no way to get a core dump. @end ifclear +@end ifclear You can run @code{gdb} without printing the front material, which describes @value{GDBN}'s non-warranty, by specifying @code{-silent}: @smallexample -@value{GDBP} @var{-silent} +@value{GDBP} -silent @end smallexample @noindent @@ -771,8 +1129,10 @@ in sequential order. The order makes a difference when the @end menu @ifclear GENERIC +@ifclear HPPA @include remote.texi @end ifclear +@end ifclear @node File Options @subsection Choosing files @@ -840,6 +1200,7 @@ Files,, Command files}. Add @var{directory} to the path to search for source files. @ifclear BARETARGET +@ifclear HPPA @item -m @itemx -mapped @emph{Warning: this option depends on operating system facilities that are not @@ -857,27 +1218,32 @@ The @file{.syms} file is specific to the host machine where @value{GDBN} is run. It holds an exact image of the internal @value{GDBN} symbol table. It cannot be shared across multiple host platforms. @end ifclear +@end ifclear +@ifclear HPPA @item -r @itemx -readnow Read each symbol file's entire symbol table immediately, rather than the default, which is to read it incrementally as it is needed. This makes startup slower, but makes future operations faster. +@end ifclear @end table @ifclear BARETARGET +@ifclear HPPA The @code{-mapped} and @code{-readnow} options are typically combined in order to build a @file{.syms} file that contains complete symbol -information. (@xref{Files,,Commands to specify files}, for information - -a @file{.syms} file for future use is: +information. (@xref{Files,,Commands to specify files}, for +information on @file{.syms} files.) A simple GDB invocation to do +nothing but build a @file{.syms} file for future use is: @example gdb -batch -nx -mapped -readnow programname @end example @end ifclear +@end ifclear -@node Mode Options +@node Mode Options, , File Options, Invoking GDB @subsection Choosing modes You can run @value{GDBN} in various alternative modes---for example, in @@ -943,17 +1309,34 @@ a signal to display the source code for the frame. @end ifclear @ifset SERIAL +@ifclear HPPA @item -b @var{bps} Set the line speed (baud rate or bits per second) of any serial interface used by @value{GDBN} for remote debugging. +@end ifclear @item -tty @var{device} Run using @var{device} for your program's standard input and output. @c FIXME: kingdon thinks there is more to -tty. Investigate. @end ifset + +@ifset HPPA +@item -tui +Use a Terminal User Interface. For information, use your Web browser to +read the file @file{TUI.html}, which is usually installed in the +directory @code{/opt/langtools/wdb/doc} on HP-UX systems. Do not use +this option if you run @value{GDBN} from Emacs (see @pxref{Emacs, ,Using +@value{GDBN} under @sc{gnu} Emacs}). + +@item -xdb +Run in XDB compatibility mode, allowing the use of certain XDB commands. +For information, see the file @file{xdb_trans.html}, which is usually +installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX +systems. +@end ifset @end table -@node Quitting GDB +@node Quitting GDB, Shell Commands, Invoking GDB, Invocation @section Quitting @value{GDBN} @cindex exiting @value{GDBN} @cindex leaving @value{GDBN} @@ -981,7 +1364,7 @@ device, you can release it with the @code{detach} command (@pxref{Attach, ,Debugging an already-running process}). @end ifclear -@node Shell Commands +@node Shell Commands, , Quitting GDB, Invocation @section Shell commands If you need to execute occasional shell commands during your @@ -992,7 +1375,7 @@ just use the @code{shell} command. @kindex shell @cindex shell escape @item shell @var{command string} -Invoke a the standard shell to execute @var{command string}. +Invoke a standard shell to execute @var{command string}. @ifclear DOSHOST If it exists, the environment variable @code{SHELL} determines which shell to run. Otherwise @value{GDBN} uses @code{/bin/sh}. @@ -1011,7 +1394,7 @@ Execute the @code{make} program with the specified arguments. This is equivalent to @samp{shell make @var{make-args}}. @end table -@node Commands +@node Commands, Running, Invocation, Top @chapter @value{GDBN} Commands You can abbreviate a @value{GDBN} command to the first few letters of the command @@ -1026,7 +1409,7 @@ show you the alternatives available, if there is more than one possibility). * Help:: How to ask @value{GDBN} for help @end menu -@node Command Syntax +@node Command Syntax, Completion, Commands, Commands @section Command syntax A @value{GDBN} command is a single line of input. There is no limit on @@ -1069,7 +1452,7 @@ Any text from a @kbd{#} to the end of the line is a comment; it does nothing. This is useful mainly in command files (@pxref{Command Files,,Command files}). -@node Completion +@node Completion, Help, Command Syntax, Commands @section Command completion @cindex completion @@ -1185,10 +1568,15 @@ place: In general, @value{GDBN} can tell that a quote is needed (and inserts it) if you have not yet started typing the argument list when you ask for completion on an overloaded symbol. + +For more information about overloaded functions, @pxref{Cplus +expressions, ,C++ expressions}. You can use the command @code{set +overload-resolution off} to disable overload resolution; +@pxref{Debugging C plus plus, ,@value{GDBN} features for C++}. @end ifclear -@node Help +@node Help, , Completion, Commands @section Getting help @cindex online documentation @kindex help @@ -1266,9 +1654,11 @@ complete i @noindent results in: @smallexample +@group info inspect ignore +@end group @end smallexample @noindent This is intended for use by @sc{gnu} Emacs. @@ -1341,7 +1731,7 @@ Display information about permission for copying @value{GDBN}. Display the @sc{gnu} ``NO WARRANTY'' statement. @end table -@node Running +@node Running, Stopping, Commands, Top @chapter Running Programs Under @value{GDBN} When you run a program under @value{GDBN}, you must first generate @@ -1358,17 +1748,21 @@ already running process, or kill a child process. @ifclear BARETARGET * Arguments:: Your program's arguments * Environment:: Your program's environment +@end ifclear + * Working Directory:: Your program's working directory * Input/Output:: Your program's input and output * Attach:: Debugging an already-running process * Kill Process:: Killing the child process +@ifclear HPPA * Process Information:: Additional process information -* Threads:: Debugging programs with multiple threads -* Processes:: Debugging programs with multiple processes @end ifclear + +* Threads:: Debugging programs with multiple threads +* Processes:: Debugging programs with multiple processes @end menu -@node Compilation +@node Compilation, Starting, Running, Running @section Compiling for debugging In order to debug a program effectively, you need to generate @@ -1384,7 +1778,13 @@ Many C compilers are unable to handle the @samp{-g} and @samp{-O} options together. Using those compilers, you cannot generate optimized executables containing debugging information. +@ifclear HPPA @value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or without +@end ifclear +@ifset HPPA +The HP ANSI C and C++ compilers, as well as @value{NGCC}, the @sc{gnu} C +compiler, support @samp{-g} with or without +@end ifset @samp{-O}, making it possible to debug optimized code. We recommend that you @emph{always} use @samp{-g} whenever you compile a program. You may think your program is correct, but there is no sense in pushing @@ -1409,7 +1809,7 @@ Older versions of the @sc{gnu} C compiler permitted a variant option format; if your @sc{gnu} C compiler has this option, do not use it. @need 2000 -@node Starting +@node Starting, Arguments, Compilation, Running @section Starting your program @cindex starting @cindex running @@ -1448,9 +1848,10 @@ Specify the arguments to give your program as the arguments of the @code{run} command. If a shell is available on your target, the shell is used to pass the arguments, so that you may use normal conventions (such as wildcard expansion or variable substitution) in describing -the arguments. In Unix systems, you can control which shell is used -with the @code{SHELL} environment variable. @xref{Arguments, ,Your -program's arguments}. +the arguments. +In Unix systems, you can control which shell is used with the +@code{SHELL} environment variable. +@xref{Arguments, ,Your program's arguments}. @item The @emph{environment.} Your program normally inherits its environment from @value{GDBN}, but you can @@ -1490,16 +1891,17 @@ table, and reads it again. When it does this, @value{GDBN} tries to retain your current breakpoints. @ifclear BARETARGET -@node Arguments +@node Arguments, Environment, Starting, Running @section Your program's arguments @cindex arguments (to your program) The arguments to your program can be specified by the arguments of the -@code{run} command. They are passed to a shell, which expands wildcard -characters and performs redirection of I/O, and thence to your program. -Your @code{SHELL} environment variable (if it exists) specifies what -shell @value{GDBN} uses. If you do not define @code{SHELL}, -@value{GDBN} uses @code{/bin/sh}. +@code{run} command. +They are passed to a shell, which expands wildcard characters and +performs redirection of I/O, and thence to your program. Your +@code{SHELL} environment variable (if it exists) specifies what shell +@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses +@code{/bin/sh}. @code{run} with no arguments uses the same arguments used by the previous @code{run}, or those set by the @code{set args} command. @@ -1518,7 +1920,7 @@ it again without arguments. Show the arguments to give your program when it is started. @end table -@node Environment +@node Environment, Working Directory, Arguments, Running @section Your program's environment @cindex environment (of your program) @@ -1599,7 +2001,7 @@ your program. You may wish to move setting of environment variables to files that are only run when you sign on, such as @file{.login} or @file{.profile}. -@node Working Directory +@node Working Directory, Input/Output, Environment, Running @section Your program's working directory @cindex working directory (of your program) @@ -1623,7 +2025,7 @@ Set the @value{GDBN} working directory to @var{directory}. Print the @value{GDBN} working directory. @end table -@node Input/Output +@node Input/Output, Attach, Working Directory, Running @section Your program's input and output @cindex redirection @@ -1677,7 +2079,7 @@ When you use the @code{tty} command or redirect input in the @code{run} command, only the input @emph{for your program} is affected. The input for @value{GDBN} still comes from your terminal. -@node Attach +@node Attach, Kill Process, Input/Output, Running @section Debugging an already-running process @kindex attach @cindex attach @@ -1699,14 +2101,23 @@ which supports processes; for example, @code{attach} does not work for programs on bare-board targets that lack an operating system. You must also have permission to send the process a signal. -When using @code{attach}, you should first use the @code{file} command -to specify the program running in the process and load its symbol table. -@xref{Files, ,Commands to Specify Files}. +When you use @code{attach}, the debugger finds the program running in +the process first by looking in the current working directory, then (if +the program is not found) by using the source file search path +(@pxref{Source Path, ,Specifying source directories}). You can also use +the @code{file} command to load the program. @xref{Files, ,Commands to +Specify Files}. The first thing @value{GDBN} does after arranging to debug the specified process is to stop it. You can examine and modify an attached process with all the @value{GDBN} commands that are ordinarily available when you start +@ifclear HPPA processes with @code{run}. You can insert breakpoints; you can step and +@end ifclear +@ifset HPPA +processes with @code{run}. You can insert breakpoints (except in shared +libraries); you can step and +@end ifset continue; you can modify storage. If you would rather the process continue running, you may use the @code{continue} command after attaching @value{GDBN} to the process. @@ -1730,9 +2141,14 @@ control whether or not you need to confirm by using the @code{set confirm} command (@pxref{Messages/Warnings, ,Optional warnings and messages}). -@node Kill Process -@c @group +@ifset HPPA +@node Kill Process, Threads, Attach, Running @section Killing the child process +@end ifset +@ifclear HPPA +@node Kill Process, Process Information, Attach, Running +@section Killing the child process +@end ifclear @table @code @kindex kill @@ -1743,7 +2159,6 @@ Kill the child process in which your program is running under @value{GDBN}. This command is useful if you wish to debug a core dump instead of a running process. @value{GDBN} ignores any core dump file while your program is running. -@c @end group On some operating systems, a program cannot be executed outside @value{GDBN} while you have breakpoints set on it inside @value{GDBN}. You can use the @@ -1757,7 +2172,8 @@ next type @code{run}, @value{GDBN} notices that the file has changed, and reads the symbol table again (while trying to preserve your current breakpoint settings). -@node Process Information +@ifclear HPPA +@node Process Information, Threads, Kill Process, Running @section Additional process information @kindex /proc @@ -1798,14 +2214,25 @@ received. @item info proc all Show all the above information about the process. @end table +@end ifclear -@node Threads +@ifset HPPA +@node Threads, Processes, Kill Process, Running @section Debugging programs with multiple threads +@end ifset +@ifclear HPPA +@node Threads, Processes, Process Information, Running +@section Debugging programs with multiple threads +@end ifclear @cindex threads of execution @cindex multiple threads @cindex switching threads -In some operating systems, a single program may have more than one +In some operating systems, +@ifset HPPA +including HP-UX, +@end ifset +a single program may have more than one @dfn{thread} of execution. The precise semantics of threads differ from one operating system to another, but in general the threads of a single program are akin to multiple processes---except that they share one @@ -1825,6 +2252,7 @@ a command to apply a command to a list of threads @item thread-specific breakpoints @end itemize +@ifclear HPPA @quotation @emph{Warning:} These facilities are not yet available on every @value{GDBN} configuration where the operating system supports threads. @@ -1842,6 +2270,7 @@ see the IDs of currently known threads. @c FIXME to implementors: how hard would it be to say "sorry, this GDB @c doesn't support threads"? @end quotation +@end ifclear @cindex focus of debugging @cindex current thread @@ -1851,6 +2280,7 @@ control, one thread in particular is always the focus of debugging. This thread is called the @dfn{current thread}. Debugging commands show program information from the perspective of the current thread. +@ifclear HPPA @kindex New @var{systag} @cindex thread identifier (system) @c FIXME-implementors!! It would be more helpful if the [New...] message @@ -1913,6 +2343,62 @@ For example, * 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) at threadtest.c:68 @end smallexample +@end ifclear +@ifset HPPA + +@cindex thread number +@cindex thread identifier (GDB) +For debugging purposes, @value{GDBN} associates its own thread +number---a small integer assigned in thread-creation order---with each +thread in your program. + +@kindex New @var{systag} +@cindex thread identifier (system) +@c FIXME-implementors!! It would be more helpful if the [New...] message +@c included GDB's numeric thread handle, so you could just go to that +@c thread without first checking `info threads'. +Whenever @value{GDBN} detects a new thread in your program, it displays +both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the +form @samp{[New @var{systag}]}. @var{systag} is a thread identifier +whose form varies depending on the particular system. For example, on +HP-UX, you see + +@example +[New thread 2 (system thread 26594)] +@end example + +@noindent +when @value{GDBN} notices a new thread. + +@table @code +@kindex info threads +@item info threads +Display a summary of all threads currently in your +program. @value{GDBN} displays for each thread (in this order): + +@enumerate +@item the thread number assigned by @value{GDBN} + +@item the target system's thread identifier (@var{systag}) + +@item the current stack frame summary for that thread +@end enumerate + +@noindent +An asterisk @samp{*} to the left of the @value{GDBN} thread number +indicates the current thread. + +For example, +@end table +@c end table here to get a little more width for example + +@example +(@value{GDBP}) info threads + * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") at quicksort.c:137 + 2 system thread 26606 0x7b0030d8 in __ksleep () from /usr/lib/libc.2 + 1 system thread 27905 0x7b003498 in _brk () from /usr/lib/libc.2 +@end example +@end ifset @table @code @kindex thread @var{threadno} @@ -1926,7 +2412,12 @@ you selected, and its current stack frame summary: @smallexample @c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one (@value{GDBP}) thread 2 +@ifclear HPPA [Switching to process 35 thread 23] +@end ifclear +@ifset HPPA +[Switching to thread 2 (system thread 26594)] +@end ifset 0x34e5 in sigpause () @end smallexample @@ -1962,7 +2453,8 @@ programs with multiple threads. watchpoints in programs with multiple threads. @end ifclear -@node Processes +@ifclear HPPA +@node Processes, , Threads, Running @section Debugging programs with multiple processes @cindex fork, debugging programs which call @@ -1985,8 +2477,68 @@ get its process ID. Then tell @value{GDBN} (a new invocation of @value{GDBN} if you are also debugging the parent process) to attach to the child process (see @ref{Attach}). From that point on you can debug the child process just like any other process which you attached to. +@end ifclear +@ifset HPPA +@node Processes, , Threads, Running +@section Debugging programs with multiple processes -@node Stopping +@cindex fork, debugging programs which call +@cindex multiple processes +@cindex processes, multiple + +@value{GDBN} provides support for debugging programs that create +additional processes using the @code{fork} or @code{vfork} function. + +By default, when a program forks, @value{GDBN} will continue to debug +the parent process and the child process will run unimpeded. + +If you want to follow the child process instead of the parent process, +use the command @w{@code{set follow-fork-mode}}. + +@table @code +@kindex set follow-fork-mode +@item set follow-fork-mode @var{mode} +Set the debugger response to a program call of @code{fork} or +@code{vfork}. A call to @code{fork} or @code{vfork} creates a new +process. The @var{mode} can be: + +@table @code +@item parent +The original process is debugged after a fork. The child process runs +unimpeded. + +@item child +The new process is debugged after a fork. The parent process runs +unimpeded. + +@item ask +The debugger will ask for one of the above choices. +@end table + +@item show follow-fork-mode +Display the current debugger response to a fork or vfork call. +@end table + +If you ask to debug a child process and a @code{vfork} is followed by an +@code{exec}, @value{GDBN} executes the new target up to the first +breakpoint in the new target. If you have a breakpoint set on +@code{main} in your original program, the breakpoint will also be set on +the child process's @code{main}. + +When a child process is spawned by @code{vfork}, you cannot debug the +child or parent until an @code{exec} call completes. + +If you issue a @code{run} command to @value{GDBN} after an @code{exec} +call executes, the new target restarts. To restart the parent process, +use the @code{file} command with the parent executable name as its +argument. + +You can use the @code{catch} command to make @value{GDBN} stop whenever +a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set +Catchpoints, ,Setting catchpoints}. +@end ifset + +@node Stopping, Stack, Running, Top @chapter Stopping and Continuing The principal purposes of using a debugger are so that you can stop your @@ -2018,31 +2570,46 @@ and why it stopped. @menu @ifclear CONLY +@ifclear HPPA * Breakpoints:: Breakpoints, watchpoints, and exceptions @end ifclear + +@ifset HPPA +* Breakpoints:: Breakpoints, watchpoints, and catchpoints +@end ifset + +@end ifclear + @ifset CONLY * Breakpoints:: Breakpoints and watchpoints @end ifset -@c Remnant makeinfo bug requires blank line after *successful* end-if in menu: * Continuing and Stepping:: Resuming execution @ifset POSIX * Signals:: Signals @end ifset + @ifclear BARETARGET -* Thread Stops:: Stopping and starting multi-thread programs +* Thread Stops:: Stopping and starting multi-thread programs @end ifclear + @end menu @c makeinfo node-defaulting requires adjacency of @node and sectioning cmds @c ...hence distribute @node Breakpoints over two possible @if expansions. @c @ifclear CONLY -@node Breakpoints +@ifclear HPPA +@node Breakpoints, Continuing and Stepping, Stopping, Stopping @section Breakpoints, watchpoints, and exceptions @end ifclear +@ifset HPPA +@node Breakpoints, Continuing and Stepping, Stopping, Stopping +@section Breakpoints, watchpoints, and catchpoints +@end ifset +@end ifclear @ifset CONLY -@node Breakpoints +@node Breakpoints, Continuing and Stepping, Stopping, Stopping @section Breakpoints and watchpoints @end ifset @@ -2055,13 +2622,21 @@ You can set breakpoints with the @code{break} command and its variants your program should stop by line number, function name or exact address in the program. @ifclear CONLY +@ifclear HPPA In languages with exception handling (such as @sc{gnu} C++), you can also set breakpoints where an exception is raised (@pxref{Exception Handling,, Breakpoints and exceptions}). @end ifclear +@end ifclear -In SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can now set +In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set breakpoints in shared libraries before the executable is run. +@ifset HPPA +There is a minor limitation on HP-UX systems: you must wait until the +executable is run in order to set breakpoints in shared library routines +that are not called directly by the program (for example, routines that +are arguments in a @code{pthread_create} call). +@end ifset @cindex watchpoints @cindex memory tracing @@ -2078,9 +2653,25 @@ You can arrange to have values from your program displayed automatically whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,, Automatic display}. +@cindex catchpoints +@cindex breakpoint on events +A @dfn{catchpoint} is another special breakpoint that stops your program +when a certain kind of event occurs, such as the throwing of a C++ +exception or the loading of a library. As with watchpoints, you use a +different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting +catchpoints}), but aside from that, you can manage a catchpoint like any +other breakpoint. (To stop when your program receives a signal, use the +@code{handle} command; @pxref{Signals, ,Signals}.) + @cindex breakpoint numbers @cindex numbers for breakpoints +@ifclear HPPA @value{GDBN} assigns a number to each breakpoint or watchpoint when you +@end ifclear +@ifset HPPA +@value{GDBN} assigns a number to each breakpoint, watchpoint, or +catchpoint when you +@end ifset create it; these numbers are successive integers starting with one. In many of the commands for controlling various features of breakpoints you use the breakpoint number to say which breakpoint you want to change. @@ -2091,9 +2682,16 @@ no effect on your program until you enable it again. * Set Breaks:: Setting breakpoints * Set Watchpoints:: Setting watchpoints @ifclear CONLY +@ifclear HPPA * Exception Handling:: Breakpoints and exceptions @end ifclear +@ifset HPPA +* Set Catchpoints:: Setting catchpoints +@end ifset + +@end ifclear + * Delete Breaks:: Deleting breakpoints * Disabling:: Disabling breakpoints * Conditions:: Break conditions @@ -2101,12 +2699,13 @@ no effect on your program until you enable it again. @ifclear CONLY * Breakpoint Menus:: Breakpoint menus @end ifclear + @c @ifclear BARETARGET @c * Error in Breakpoints:: ``Cannot insert breakpoints'' @c @end ifclear @end menu -@node Set Breaks +@node Set Breaks, Set Watchpoints, Breakpoints, Breakpoints @subsection Setting breakpoints @c FIXME LMB what does GDB do if no code on line of breakpt? @@ -2193,6 +2792,7 @@ same as for the @code{break} command, and the breakpoint is set in the same way, but the breakpoint is automatically deleted after the first time your program stops there. @xref{Disabling, ,Disabling breakpoints}. +@ifclear HPPA @kindex hbreak @item hbreak @var{args} Set a hardware-assisted breakpoint. @var{args} are the same as for the @@ -2218,6 +2818,7 @@ first time your program stops there. Also, like the @code{hbreak} command, the breakpoint requires hardware support and some target hardware may not have this support. @xref{Disabling, ,Disabling breakpoints}. Also @xref{Conditions, ,Break conditions}. +@end ifclear @kindex rbreak @cindex regular expression @@ -2242,13 +2843,24 @@ classes. @item info breakpoints @r{[}@var{n}@r{]} @itemx info break @r{[}@var{n}@r{]} @itemx info watchpoints @r{[}@var{n}@r{]} +@ifclear HPPA Print a table of all breakpoints and watchpoints set and not deleted, with the following columns for each breakpoint: +@end ifclear +@ifset HPPA +Print a table of all breakpoints, watchpoints, and catchpoints set and +not deleted, with the following columns for each breakpoint: +@end ifset @table @emph @item Breakpoint Numbers @item Type +@ifclear HPPA Breakpoint or watchpoint. +@end ifclear +@ifset HPPA +Breakpoint, watchpoint, or catchpoint. +@end ifset @item Disposition Whether the breakpoint is marked to be disabled or deleted when hit. @item Enabled or Disabled @@ -2274,12 +2886,12 @@ the @code{x} command are set to the address of the last breakpoint listed (@pxref{Memory, ,Examining memory}). @noindent -@code{info break} now displays a count of the number of times the -breakpoint has been hit. This is especially useful in conjunction with -the @code{ignore} command. You can ignore a large number of breakpoint -hits, look at the breakpoint info to see how many times the -breakpoint was hit, and then run again, ignoring one less than that -number. This will get you quickly to the last hit of that breakpoint. +@code{info break} displays a count of the number of times the breakpoint +has been hit. This is especially useful in conjunction with the +@code{ignore} command. You can ignore a large number of breakpoint +hits, look at the breakpoint info to see how many times the breakpoint +was hit, and then run again, ignoring one less than that number. This +will get you quickly to the last hit of that breakpoint. @end table @value{GDBN} allows you to set any number of breakpoints at the same place in @@ -2325,22 +2937,34 @@ Temporary internal breakpoint used by the @value{GDBN} @code{until} command. @item finish Temporary internal breakpoint used by the @value{GDBN} @code{finish} command. -@end table +@ifset HPPA +@item shlib events +Shared library events. +@end ifset +@end table @end table -@node Set Watchpoints +@ifclear HPPA +@node Set Watchpoints, Exception Handling, Set Breaks, Breakpoints @subsection Setting watchpoints +@end ifclear +@ifset HPPA +@node Set Watchpoints, Set Catchpoints, Set Breaks, Breakpoints +@subsection Setting watchpoints +@end ifset @cindex setting watchpoints You can use a watchpoint to stop execution whenever the value of an expression changes, without having to predict a particular place where this may happen. +@ifclear HPPA Watchpoints currently execute two orders of magnitude more slowly than other breakpoints, but this can be well worth it to catch errors where you have no clue what part of your program is the culprit. +@end ifclear @c FIXME - did Stan mean to @ignore this out? @ignore @@ -2354,6 +2978,7 @@ and if the support code has been added for that configuration. @item watch @var{expr} Set a watchpoint for an expression. @value{GDBN} will break when @var{expr} is written into by the program and its value changes. +@ifclear HPPA This can be used with the new trap-generation provided by SPARClite DSU. DSU will generate traps when a program accesses some data or instruction address that is assigned to the debug registers. @@ -2368,7 +2993,7 @@ Delete or disable unused watchpoint commands before setting new ones. @kindex rwatch @item rwatch @var{expr} -Set a watchpoint that will break when watch @var{args} is read by the program. +Set a watchpoint that will break when watch @var{expr} is read by the program. If you use both watchpoints, both must be set with the @code{rwatch} command. @@ -2377,18 +3002,48 @@ command. Set a watchpoint that will break when @var{args} is read and written into by the program. If you use both watchpoints, both must be set with the @code{awatch} command. +@end ifclear @kindex info watchpoints @item info watchpoints +@ifclear HPPA This command prints a list of watchpoints and breakpoints; it is the same as @code{info break}. +@end ifclear +@ifset HPPA +This command prints a list of watchpoints, breakpoints, and catchpoints; +it is the same as @code{info break}. +@end ifset @end table +@ifset HPPA +@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware +watchpoints execute very quickly, and the debugger reports a change in +value at the exact instruction where the change occurs. If @value{GDBN} +cannot set a hardware watchpoint, it sets a software watchpoint, which +executes more slowly and reports the change in value at the next +statement, not the instruction, after the change occurs. + +When you issue the @code{watch} command, @value{GDBN} reports + +@example +Hardware watchpoint @var{num}: @var{expr} +@end example + +@noindent +if it was able to set a hardware watchpoint. +@end ifset + +If you call a function interactively using @code{print} or @code{call}, +any watchpoints you have set will be inactive until GDB reaches another +kind of breakpoint or the call completes. + @ifclear BARETARGET @quotation @cindex watchpoints and threads @cindex threads and watchpoints -@emph{Warning:} in multi-thread programs, watchpoints have only limited +@ifclear HPPA +@emph{Warning:} In multi-thread programs, watchpoints have only limited usefulness. With the current watchpoint implementation, @value{GDBN} can only watch the value of an expression @emph{in a single thread}. If you are confident that the expression can only change due to the current @@ -2396,11 +3051,24 @@ thread's activity (and if you are also confident that no other thread can become current), then you can use watchpoints as usual. However, @value{GDBN} may not notice when a non-current thread's activity changes the expression. +@end ifclear +@ifset HPPA +@emph{Warning:} In multi-thread programs, software watchpoints have only +limited usefulness. If @value{GDBN} creates a software watchpoint, it +can only watch the value of an expression @emph{in a single thread}. If +you are confident that the expression can only change due to the current +thread's activity (and if you are also confident that no other thread +can become current), then you can use software watchpoints as usual. +However, @value{GDBN} may not notice when a non-current thread's +activity changes the expression. (Hardware watchpoints, in contrast, +watch an expression in all threads.) +@end ifset @end quotation @end ifclear @ifclear CONLY -@node Exception Handling +@ifclear HPPA +@node Exception Handling, Delete Breaks, Set Watchpoints, Breakpoints @subsection Breakpoints and exceptions @cindex exception handlers @@ -2414,7 +3082,7 @@ given point in time. @item catch @var{exceptions} You can set breakpoints at active exception handlers by using the @code{catch} command. @var{exceptions} is a list of names of exceptions -to catch. +to catch. @end table You can use @code{info catch} to list active exception handlers. @@ -2469,19 +3137,113 @@ breakpoints to stop your program when any of a number of exceptions are raised. @end ifclear -@node Delete Breaks +@ifset HPPA +@node Set Catchpoints, Delete Breaks, Set Watchpoints, Breakpoints +@subsection Setting catchpoints +@cindex catchpoints +@cindex exception handlers +@cindex event handling + +You can use @dfn{catchpoints} to cause the debugger to stop for certain +kinds of program events, such as C++ exceptions or the loading of a +shared library. Use the @code{catch} command to set a catchpoint. + +@table @code +@kindex catch +@item catch @var{event} +Stop when @var{event} occurs. @var{event} can be any of the following: +@table @code +@item throw +@kindex catch throw +The throwing of a C++ exception. + +@item catch +@kindex catch catch +The catching of a C++ exception. + +@item exec +@kindex catch exec +A call to @code{exec}. + +@item fork +@kindex catch fork +A call to @code{fork}. + +@item vfork +@kindex catch vfork +A call to @code{vfork}. + +@item load +@itemx load @var{libname} +@kindex catch load +The dynamic loading of any shared library, or the loading of the library +@var{libname}. + +@item unload +@itemx unload @var{libname} +@kindex catch unload +The unloading of any dynamically loaded shared library, or the unloading +of the library @var{libname}. +@end table + +@item tcatch @var{event} +Set a catchpoint that is enabled only for one stop. The catchpoint is +automatically deleted after the first time the event is caught. + +@end table + +Use the @code{info break} command to list the current catchpoints. + +There are currently some limitations to C++ exception handling +(@code{catch throw} and @code{catch catch}) in @value{GDBN}: + +@itemize @bullet +@item +If you call a function interactively, @value{GDBN} normally returns +control to you when the function has finished executing. If the call +raises an exception, however, the call may bypass the mechanism that +returns control to you and cause your program either to abort or to +simply continue running until it hits a breakpoint, catches a signal +that @value{GDBN} is listening for, or exits. This is the case even if +you set a catchpoint for the exception; catchpoints on exceptions are +disabled within interactive calls. + +@item +You cannot raise an exception interactively. + +@item +You cannot install an exception handler interactively. +@end itemize +@end ifset +@end ifclear + +@node Delete Breaks, Disabling, Set Catchpoints, Breakpoints @subsection Deleting breakpoints +@ifclear HPPA @cindex clearing breakpoints, watchpoints @cindex deleting breakpoints, watchpoints It is often necessary to eliminate a breakpoint or watchpoint once it +@end ifclear +@ifset HPPA +@cindex clearing breakpoints, watchpoints, catchpoints +@cindex deleting breakpoints, watchpoints, catchpoints +It is often necessary to eliminate a breakpoint, watchpoint, or +catchpoint once it +@end ifset has done its job and you no longer want your program to stop there. This is called @dfn{deleting} the breakpoint. A breakpoint that has been deleted no longer exists; it is forgotten. With the @code{clear} command you can delete breakpoints according to where they are in your program. With the @code{delete} command you can +@ifclear HPPA delete individual breakpoints or watchpoints by specifying their +@end ifclear +@ifset HPPA +delete individual breakpoints, watchpoints, or catchpoints by specifying +their +@end ifset breakpoint numbers. It is not necessary to delete a breakpoint to proceed past it. @value{GDBN} @@ -2489,8 +3251,8 @@ automatically ignores breakpoints on the first instruction to be executed when you continue execution without changing the execution address. @table @code -@item clear @kindex clear +@item clear Delete any breakpoints at the next instruction to be executed in the selected stack frame (@pxref{Selection, ,Selecting a frame}). When the innermost frame is selected, this is a good way to delete a @@ -2508,29 +3270,59 @@ Delete any breakpoints set at or within the code of the specified line. @kindex delete @kindex d @item delete @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]} +@ifclear HPPA Delete the breakpoints or watchpoints of the numbers specified as +@end ifclear +@ifset HPPA +Delete the breakpoints, watchpoints, or catchpoints of the numbers +specified as +@end ifset arguments. If no argument is specified, delete all breakpoints (@value{GDBN} asks confirmation, unless you have @code{set confirm off}). You can abbreviate this command as @code{d}. @end table -@node Disabling +@node Disabling, Conditions, Delete Breaks, Breakpoints @subsection Disabling breakpoints @kindex disable breakpoints @kindex enable breakpoints +@ifclear HPPA Rather than deleting a breakpoint or watchpoint, you might prefer to +@end ifclear +@ifset HPPA +Rather than deleting a breakpoint, watchpoint, or catchpoint, you might +prefer to +@end ifset @dfn{disable} it. This makes the breakpoint inoperative as if it had been deleted, but remembers the information on the breakpoint so that you can @dfn{enable} it again later. +@ifclear HPPA You disable and enable breakpoints and watchpoints with the +@end ifclear +@ifset HPPA +You disable and enable breakpoints, watchpoints, and catchpoints with +the +@end ifset @code{enable} and @code{disable} commands, optionally specifying one or more breakpoint numbers as arguments. Use @code{info break} or +@ifclear HPPA @code{info watch} to print a list of breakpoints or watchpoints if you +@end ifclear +@ifset HPPA +@code{info watch} to print a list of breakpoints, watchpoints, and +catchpoints if you +@end ifset do not know which numbers to use. +@ifclear HPPA A breakpoint or watchpoint can have any of four different states of +@end ifclear +@ifset HPPA +A breakpoint, watchpoint, or catchpoint can have any of four different +states of +@end ifset enablement: @itemize @bullet @@ -2548,8 +3340,14 @@ Enabled for deletion. The breakpoint stops your program, but immediately after it does so it is deleted permanently. @end itemize +@ifclear HPPA You can use the following commands to enable or disable breakpoints and watchpoints: +@end ifclear +@ifset HPPA +You can use the following commands to enable or disable breakpoints, +watchpoints, and catchpoints: +@end ifset @table @code @kindex disable breakpoints @@ -2585,7 +3383,7 @@ breakpoint of its own, but it does not change the state of your other breakpoints; see @ref{Continuing and Stepping, ,Continuing and stepping}.) -@node Conditions +@node Conditions, Break Commands, Disabling, Breakpoints @subsection Break conditions @cindex conditional breakpoints @cindex breakpoint conditions @@ -2625,15 +3423,33 @@ purpose of performing side effects when a breakpoint is reached Break conditions can be specified when a breakpoint is set, by using @samp{if} in the arguments to the @code{break} command. @xref{Set Breaks, ,Setting breakpoints}. They can also be changed at any time -with the @code{condition} command. The @code{watch} command does not -recognize the @code{if} keyword; @code{condition} is the only way to -impose a further condition on a watchpoint. +with the @code{condition} command. +@ifclear HPPA +@c The watch command now seems to recognize the if keyword. +@c catch doesn't, though. +The @code{watch} command does not recognize the @code{if} keyword; +@code{condition} is the only way to impose a further condition on a +watchpoint. +@end ifclear +@ifset HPPA +You can also use the @code{if} keyword with the @code{watch} command. +The @code{catch} command does not recognize the @code{if} keyword; +@code{condition} is the only way to impose a further condition on a +catchpoint. +@end ifset @table @code @kindex condition @item condition @var{bnum} @var{expression} +@ifclear HPPA Specify @var{expression} as the break condition for breakpoint or watchpoint number @var{bnum}. After you set a condition, breakpoint +@end ifclear +@ifset HPPA +Specify @var{expression} as the break condition for breakpoint, +watchpoint, or catchpoint number @var{bnum}. After you set a condition, +breakpoint +@end ifset @var{bnum} stops your program only if the value of @var{expression} is true (nonzero, in C). When you use @code{condition}, @value{GDBN} checks @var{expression} immediately for syntactic correctness, and to @@ -2688,11 +3504,22 @@ is decremented each time. @xref{Convenience Vars, ,Convenience variables}. @end table -@node Break Commands +@ifset HPPA +Ignore counts apply to breakpoints, watchpoints, and catchpoints. +@end ifset + + +@node Break Commands, Breakpoint Menus, Conditions, Breakpoints @subsection Breakpoint command lists @cindex breakpoint commands +@ifclear HPPA You can give any breakpoint (or watchpoint) a series of commands to +@end ifclear +@ifset HPPA +You can give any breakpoint (or watchpoint or catchpoint) a series of +commands to +@end ifset execute when your program stops due to that breakpoint. For example, you might want to print the values of certain expressions, or enable other breakpoints. @@ -2711,7 +3538,13 @@ To remove all commands from a breakpoint, type @code{commands} and follow it immediately with @code{end}; that is, give no commands. With no @var{bnum} argument, @code{commands} refers to the last +@ifclear HPPA breakpoint or watchpoint set (not to the breakpoint most recently +@end ifclear +@ifset HPPA +breakpoint, watchpoint, or catchpoint set (not to the breakpoint most +recently +@end ifset encountered). @end table @@ -2770,7 +3603,7 @@ end @end example @ifclear CONLY -@node Breakpoint Menus +@node Breakpoint Menus, , Break Commands, Breakpoints @subsection Breakpoint menus @cindex overloading @cindex symbol overloading @@ -2795,6 +3628,7 @@ We choose three particular definitions of that function name: @c FIXME! This is likely to change to show arg type lists, at least @smallexample +@group (@value{GDBP}) b String::after [0] cancel [1] all @@ -2812,6 +3646,7 @@ Multiple breakpoints were set. Use the "delete" command to delete unwanted breakpoints. (@value{GDBP}) +@end group @end smallexample @end ifclear @@ -2845,7 +3680,7 @@ Use the "delete" command to delete unwanted @c @end enumerate @c @end ifclear -@node Continuing and Stepping +@node Continuing and Stepping, Signals, Breakpoints, Stopping @section Continuing and stepping @cindex stepping @@ -2894,8 +3729,13 @@ different address}) to go to an arbitrary location in your program. A typical technique for using stepping is to set a breakpoint @ifclear CONLY +@ifclear HPPA (@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}) @end ifclear +@ifset HPPA +(@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) +@end ifset +@end ifclear @ifset CONLY (@pxref{Breakpoints, ,Breakpoints and watchpoints}) @end ifset @@ -2968,7 +3808,7 @@ An argument @var{count} is a repeat count, as for @code{step}. The @code{next} command now only stops at the first instruction of a source line. This prevents the multiple stops that used to occur in -swtch statements, for loops, etc. +switch statements, for loops, etc. @kindex finish @item finish @@ -2979,9 +3819,9 @@ Contrast this with the @code{return} command (@pxref{Returning, ,Returning from a function}). @kindex until -@itemx u @kindex u @item until +@itemx u Continue running until a source line past the current line, in the current stack frame, is reached. This command is used to avoid single stepping through a loop more than once. It is like the @code{next} @@ -3057,7 +3897,7 @@ An argument is a repeat count, as in @code{next}. @end table @ifset POSIX -@node Signals +@node Signals, Thread Stops, Continuing and Stepping, Stopping @section Signals @cindex signals @@ -3153,7 +3993,7 @@ program a signal}. @end ifset @ifclear BARETARGET -@node Thread Stops +@node Thread Stops, , Signals, Stopping @section Stopping and starting multi-thread programs When your program has multiple threads (@pxref{Threads,, Debugging @@ -3217,7 +4057,7 @@ thread runs into a breakpoint, a signal, or an exception before the first thread completes whatever you requested. @end ifclear -@node Stack +@node Stack, Source, Stopping, Top @chapter Examining the Stack When your program has stopped, the first thing you need to know is where it @@ -3256,9 +4096,10 @@ currently executing frame and describes it briefly, similar to the @ifset MIPS * MIPS Stack:: MIPS machines and the function stack @end ifset + @end menu -@node Frames +@node Frames, Backtrace, Stack, Stack @section Stack frames @cindex frame @@ -3324,9 +4165,12 @@ to another without printing the frame. This is the silent version of @code{frame}. @end table -@node Backtrace +@node Backtrace, Selection, Frames, Stack @section Backtraces +@cindex backtraces +@cindex tracebacks +@cindex stack traces A backtrace is a summary of how your program got where it is. It shows one line per frame, for many frames, starting with the currently executing frame (frame zero), followed by its caller (frame one), and on up the @@ -3384,7 +4228,7 @@ The display for frame zero does not begin with a program counter value, indicating that your program has stopped at the beginning of the code for line @code{993} of @code{builtin.c}. -@node Selection +@node Selection, Frame Info, Backtrace, Stack @section Selecting a frame Most commands for examining the stack and other data in your program work on @@ -3411,6 +4255,7 @@ addition, this can be useful when your program has multiple stacks and switches between them. @ifclear H8EXCLUSIVE +@ifclear HPPA On the SPARC architecture, @code{frame} needs two addresses to select an arbitrary frame: a frame pointer and a stack pointer. @@ -3423,6 +4268,7 @@ pointer, a program counter, and a memory stack pointer. @c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date @c as of 27 Jan 1994. @end ifclear +@end ifclear @kindex up @item up @var{n} @@ -3472,8 +4318,14 @@ in @value{GDBN} command scripts, where the output might be unnecessary and distracting. @end table -@node Frame Info +@ifset MIPS +@node Frame Info, MIPS Stack, Selection, Stack @section Information about a frame +@end ifset +@ifclear MIPS +@node Frame Info, , Selection, Stack +@section Information about a frame +@end ifclear There are several other commands to print information about the selected stack frame. @@ -3534,6 +4386,7 @@ line. These are all variables (declared either static or automatic) accessible at the point of execution of the selected frame. @ifclear CONLY +@ifclear HPPA @kindex info catch @cindex catch exceptions @cindex exception handlers @@ -3544,10 +4397,11 @@ exception handlers, visit the associated frame (using the @code{up}, @code{down}, or @code{frame} commands); then type @code{info catch}. @xref{Exception Handling, ,Breakpoints and exceptions}. @end ifclear +@end ifclear @end table @ifset MIPS -@node MIPS Stack +@node MIPS Stack, , Frame Info, Stack @section MIPS machines and the function stack @cindex stack on MIPS @@ -3580,7 +4434,7 @@ These commands are available @emph{only} when @value{GDBN} is configured for debugging programs on MIPS processors. @end ifset -@node Source +@node Source, Data, Stack, Top @chapter Examining Source Files @value{GDBN} can print parts of your program's source, since the debugging @@ -3607,7 +4461,7 @@ Emacs facilities to view source; @pxref{Emacs, ,Using @value{GDBN} under @sc{gnu * Machine Code:: Source and machine code @end menu -@node List +@node List, Search, Source, Source @section Printing source lines @kindex list @@ -3725,7 +4579,7 @@ Specifies the line containing the program address @var{address}. @end table @ifclear DOSHOST -@node Search +@node Search, Source Path, List, Source @section Searching source files @cindex searching @kindex reverse-search @@ -3752,7 +4606,7 @@ this command as @code{rev}. @end table @end ifclear -@node Source Path +@node Source Path, Machine Code, Search, Source @section Specifying source directories @cindex source path @@ -3832,7 +4686,7 @@ directories you want in the source path. You can add all the directories in one command. @end enumerate -@node Machine Code +@node Machine Code, , Source Path, Source @section Source and machine code You can use the command @code{info line} to map source lines to program @@ -3892,6 +4746,7 @@ surrounding this value. Two arguments specify a range of addresses @end table @ifclear H8EXCLUSIVE +@ifclear HPPA We can use @code{disassemble} to inspect the object code range shown in the last @code{info line} example (the example shows SPARC machine instructions): @@ -3911,6 +4766,7 @@ Dump of assembler code from 0x63e4 to 0x6404: End of assembler dump. @end smallexample @end ifclear +@end ifclear @ifset H8EXCLUSIVE For example, here is the beginning of the output for the @@ -3949,7 +4805,26 @@ to either @code{i386} or @code{i8086}. The default is @code{i386}. @end table -@node Data +@ifset HPPA +The following example shows the disassembly of a range of addresses of +HP PA-RISC 2.0 code: + +@smallexample +(@value{GDBP}) disas 0x32c4 0x32e4 +Dump of assembler code from 0x32c4 to 0x32e4: +0x32c4 : addil 0,dp +0x32c8 : ldw 0x22c(sr0,r1),r26 +0x32cc : ldil 0x3000,r31 +0x32d0 : ble 0x3f8(sr4,r31) +0x32d4 : ldo 0(r31),rp +0x32d8 : addil -0x800,dp +0x32dc : ldo 0x588(r1),r26 +0x32e0 : ldil 0x3000,r31 +End of assembler dump. +@end smallexample +@end ifset + +@node Data, Languages, Source, Top @chapter Examining Data @cindex printing data @@ -4009,9 +4884,10 @@ command rather than @code{print}. @xref{Symbols, ,Examining the Symbol Table}. @ifclear HAVE-FLOAT * Floating Point Hardware:: Floating point hardware @end ifclear + @end menu -@node Expressions +@node Expressions, Variables, Data, Data @section Expressions @cindex expressions @@ -4066,7 +4942,7 @@ a cast). This construct is allowed regardless of what kind of data is normally supposed to reside at @var{addr}. @end table -@node Variables +@node Variables, Arrays, Expressions, Data @section Program variables The most common kind of expression to use is the name of a variable @@ -4077,7 +4953,7 @@ Variables in expressions are understood in the selected stack frame @itemize @bullet @item -global (or static) +global (or file-static) @end itemize @noindent or @@ -4162,7 +5038,7 @@ also takes more than one machine instruction to destroy a stack frame; after you begin stepping through that group of instructions, local variable definitions may be gone. -@node Arrays +@node Arrays, Output Formats, Variables, Data @section Artificial arrays @cindex artificial array @@ -4234,7 +5110,7 @@ p dtab[$i++]->fv @dots{} @end example -@node Output Formats +@node Output Formats, Memory, Arrays, Data @section Output formats @cindex formatted output @@ -4303,7 +5179,7 @@ To reprint the last value in the value history with a different format, you can use the @code{print} command with just a format and no expression. For example, @samp{p/x} reprints the last value in hex. -@node Memory +@node Memory, Auto Display, Output Formats, Data @section Examining memory You can use the command @code{x} (for ``examine'') to examine memory in @@ -4408,7 +5284,7 @@ If the @code{x} command has a repeat count, the address and contents saved are from the last memory unit printed; this is not the same as the last address printed if several units were printed on the last line of output. -@node Auto Display +@node Auto Display, Print Settings, Memory, Data @section Automatic display @cindex automatic display @cindex display of expressions @@ -4504,7 +5380,7 @@ there is no variable @code{last_char}---the display is disabled automatically. The next time your program stops where @code{last_char} is meaningful, you can enable the display expression once again. -@node Print Settings +@node Print Settings, Value History, Auto Display, Data @section Print settings @cindex format options @@ -4800,7 +5676,14 @@ Allow @value{GDBN} to choose a decoding style by inspecting your program. @item gnu Decode based on the @sc{gnu} C++ compiler (@code{g++}) encoding algorithm. +@ifclear HPPA This is the default. +@end ifclear + +@ifset HPPA +@item hp +Decode based on the HP ANSI C++ (@code{aCC}) encoding algorithm. +@end ifset @item lucid Decode based on the Lucid C++ compiler (@code{lcc}) encoding algorithm. @@ -4846,10 +5729,15 @@ Do not print static members when displaying a C++ object. @item show print static-members Show whether C++ static members are printed, or not. +@c These don't work with HP ANSI C++ yet. @kindex set print vtbl @item set print vtbl @itemx set print vtbl on Pretty print C++ virtual function tables. The default is off. +@ifset HPPA +(The @code{vtbl} commands do not work on programs compiled with the HP +ANSI C++ compiler (@code{aCC}).) +@end ifset @item set print vtbl off Do not pretty print C++ virtual function tables. @@ -4860,7 +5748,7 @@ Show whether C++ virtual function tables are pretty printed, or not. @end table @end ifclear -@node Value History +@node Value History, Convenience Vars, Print Settings, Data @section Value history @cindex value history @@ -4937,7 +5825,7 @@ values are available, @code{show values +} produces no display. Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the same effect as @samp{show values +}. -@node Convenience Vars +@node Convenience Vars, Registers, Value History, Data @section Convenience variables @cindex convenience variables @@ -5018,7 +5906,13 @@ The variable @code{$_exitcode} is automatically set to the exit code when the program being debugged terminates. @end table -@node Registers +@ifset HPPA +If you refer to a function or variable name that begins with a dollar +sign, @value{GDBN} searches for a user or system name first, before it +searches for a convenience variable. +@end ifset + +@node Registers, Floating Point Hardware, Convenience Vars, Data @section Registers @cindex registers @@ -5140,7 +6034,7 @@ processors. @end ifset @ifclear HAVE-FLOAT -@node Floating Point Hardware +@node Floating Point Hardware, , Registers, Data @section Floating point hardware @cindex floating point @@ -5158,7 +6052,7 @@ the ARM and x86 machines. @end ifclear @ifclear CONLY -@node Languages +@node Languages, Symbols, Data, Top @chapter Using @value{GDBN} with Different Languages @cindex languages @@ -5189,7 +6083,7 @@ language}. * Support:: Supported languages @end menu -@node Setting +@node Setting, Show, Languages, Languages @section Switching between source languages There are two ways to control the working language---either have @value{GDBN} @@ -5221,7 +6115,7 @@ program, and will display that source code, not the generated C code. * Automatically:: Having @value{GDBN} infer the source language @end menu -@node Filenames +@node Filenames, Manually, Setting, Setting @subsection List of filename extensions and languages If a source file name ends in one of the following extensions, then @@ -5244,10 +6138,12 @@ C source file @itemx .c++ C++ source file +@ifclear HPPA @item .ch @itemx .c186 @itemx .c286 CHILL source file. +@end ifclear @item .s @itemx .S @@ -5255,7 +6151,7 @@ Assembler source file. This actually behaves almost like C, but @value{GDBN} does not skip over function prologues when stepping. @end table -@node Manually +@node Manually, Automatically, Filenames, Setting @subsection Setting the working language If you allow @value{GDBN} to set the language automatically, @@ -5274,6 +6170,13 @@ a language, such as @end ifset For a list of the supported languages, type @samp{set language}. +@ifclear MOD2 +Setting the language manually prevents @value{GDBN} from updating the +working language automatically. For example, if you used the @code{c} +setting to debug a C++ program, names might not be demangled properly, +overload resolution would not work, user-defined operators might not be +interpreted correctly, and so on. +@end ifclear @ifset MOD2 Setting the language manually prevents @value{GDBN} from updating the working language automatically. This can lead to confusion if you try @@ -5294,7 +6197,7 @@ printed would be the value of @code{a}. In Modula-2, this means to compare @code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value. @end ifset -@node Automatically +@node Automatically, , Manually, Setting @subsection Having @value{GDBN} infer the source language To have @value{GDBN} set the working language automatically, use @@ -5313,8 +6216,14 @@ written in one source language can be used by a main program written in a different source language. Using @samp{set language auto} in this case frees you from having to set the working language manually. -@node Show +@ifset MOD2 +@node Show, Checks, Setting, Languages @section Displaying the language +@end ifset +@ifclear MOD2 +@node Show, Support, Setting, Languages +@section Displaying the language +@end ifclear The following commands help you find out which language is the working language, and also what language source files were written in. @@ -5341,7 +6250,7 @@ information listed here. @end table @ifset MOD2 -@node Checks +@node Checks, Support, Show, Languages @section Type and range checking @quotation @@ -5374,7 +6283,7 @@ for the default settings of supported languages. @cindex type checking @cindex checks, type -@node Type Checking +@node Type Checking, Range Checking, Checks, Checks @subsection An overview of type checking Some languages, such as Modula-2, are strongly typed, meaning that the @@ -5445,7 +6354,7 @@ is setting it automatically. @cindex range checking @cindex checks, range -@node Range Checking +@node Range Checking, , Type Checking, Checks @subsection An overview of range checking In some languages (such as Modula-2), it is an error to exceed the @@ -5505,14 +6414,20 @@ being set automatically by @value{GDBN}. @end table @end ifset -@node Support +@ifset MOD2 +@node Support, , Checks, Languages @section Supported languages +@end ifset +@ifclear MOD2 +@node Support, , Show, Languages +@section Supported languages +@end ifclear @ifset MOD2 @value{GDBN} 4 supports C, C++, and Modula-2. @end ifset @ifclear MOD2 -@value{GDBN} 4 supports C, and C++. +@value{GDBN} 4 supports C and C++. @end ifclear Some @value{GDBN} features may be used in expressions regardless of the language you use: the @value{GDBN} @code{@@} and @code{::} operators, @@ -5534,20 +6449,22 @@ language reference or tutorial. * Modula-2:: Modula-2 @end menu -@node C +@node C, Modula-2, , Support @subsection C and C++ @cindex C and C++ @cindex expressions in C or C++ +@end ifset Since C and C++ are so closely related, many features of @value{GDBN} apply to both languages. Whenever this is the case, we discuss those languages together. -@end ifset + @ifclear MOD2 @c Cancel this below, under same condition, at end of this chapter! @raisesections @end ifclear +@ifclear HPPA @cindex C++ @kindex g++ @cindex @sc{gnu} C++ @@ -5562,8 +6479,26 @@ command-line options @samp{-gstabs} or @samp{-gstabs+}. See @ref{Debugging Options,,Options for Debugging Your Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more information. @end ifclear +@ifset HPPA +@cindex C++ +@kindex g++ +@cindex @sc{gnu} C++ +You can use @value{GDBN} to debug C programs compiled with either the HP +C compiler (@code{cc}) or the GNU C compiler (@code{gcc}), and to debug +programs compiled with either the HP ANSI C++ compiler (@code{aCC}) or +the @sc{gnu} C++ compiler (@code{g++}). + +If you compile with the @sc{gnu} C++ compiler, use the stabs debugging +format for best results when debugging. You can select that format +explicitly with the @code{g++} command-line options @samp{-gstabs} or +@samp{-gstabs+}. See @ref{Debugging Options,,Options for Debugging Your +Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more +information. +@end ifset +@end ifclear + @ifset CONLY -@node C +@node C, Symbols, Data, Top @chapter C Language Support @cindex C language @cindex expressions in C @@ -5574,10 +6509,9 @@ output values in a manner consistent with C conventions. @menu * C Operators:: C operators -* C Constants:: C constants -* Debugging C:: @value{GDBN} and C @end menu @end ifset + @ifclear CONLY @menu * C Operators:: C and C++ operators @@ -5589,18 +6523,18 @@ output values in a manner consistent with C conventions. @end ifset * Debugging C:: @value{GDBN} and C -* Debugging C plus plus:: Special features for C++ +* Debugging C plus plus:: @value{GDBN} features for C++ @end menu @end ifclear @ifclear CONLY @cindex C and C++ operators -@node C Operators +@node C Operators, C Constants, , C @subsubsection C and C++ operators @end ifclear @ifset CONLY @cindex C operators -@node C Operators +@node C Operators, C Constants, C, C @section C operators @end ifset @@ -5614,8 +6548,14 @@ For the purposes of C and C++, the following definitions hold: @itemize @bullet @item +@ifclear HPPA @emph{Integral types} include @code{int} with any of its storage-class specifiers; @code{char}; and @code{enum}. +@end ifclear +@ifset HPPA +@emph{Integral types} include @code{int} with any of its storage-class +specifiers; @code{char}; @code{enum}; and, for C++, @code{bool}. +@end ifset @item @emph{Floating-point types} include @code{float} and @code{double}. @@ -5733,6 +6673,11 @@ Structure member, and pointer-to-structure member. For convenience, pointer based on the stored type information. Defined on @code{struct} and @code{union} data. +@ifset HPPA +@item .*@r{, }->* +Dereferences of pointers to members. +@end ifset + @item [] Array indexing. @code{@var{a}[@var{i}]} is defined as @code{*(@var{a}+@var{i})}. Same precedence as @code{->}. @@ -5758,17 +6703,33 @@ Same precedence as @code{::}, above. @end ifclear @end table -@ifclear CONLY -@cindex C and C++ constants -@node C Constants -@subsubsection C and C++ constants +@ifset HPPA +If an operator is redefined in the user code, @value{GDBN} usually +attempts to invoke the redefined version instead of using the operator's +predefined meaning. +@end ifset +@ifclear CONLY +@menu +* C Constants:: +@end menu + +@ifset MOD2 +@node C Constants, Cplus expressions, C Operators, C +@subsubsection C and C++ constants +@end ifset +@ifclear MOD2 +@node C Constants, Cplus expressions, C Operators, Support +@subsubsection C and C++ constants +@end ifclear + +@cindex C and C++ constants @value{GDBN} allows you to express the constants of C and C++ in the following ways: @end ifclear @ifset CONLY @cindex C constants -@node C Constants +@node C Constants, Debugging C, C Operators, C @section C constants @value{GDBN} allows you to express the constants of C in the @@ -5820,13 +6781,29 @@ and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers. @end itemize @ifclear CONLY -@node Cplus expressions +@menu +* Cplus expressions:: +* C Defaults:: +@ifset MOD2 +* C Checks:: +@end ifset + +* Debugging C:: +@end menu + +@ifset MOD2 +@node Cplus expressions, C Defaults, C Constants, C @subsubsection C++ expressions +@end ifset +@ifclear MOD2 +@node Cplus expressions, C Defaults, C Constants, Support +@subsubsection C++ expressions +@end ifclear @cindex expressions in C++ -@value{GDBN} expression handling has a number of extensions to -interpret a significant subset of C++ expressions. +@value{GDBN} expression handling can interpret most C++ expressions. +@ifclear HPPA @cindex C++ support, not in @sc{coff} @cindex @sc{coff} versus C++ @cindex C++ and object formats @@ -5851,6 +6828,7 @@ extensions explicitly.) Where the object code format is standard @sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C++ support in @value{GDBN} does @emph{not} work. @end quotation +@end ifclear @enumerate @@ -5870,6 +6848,7 @@ expressions have the same namespace available as the member function; that is, @value{GDBN} allows implicit references to the class instance pointer @code{this} following the same rules as C++. +@ifclear HPPA @cindex call overloaded functions @cindex type conversions in C++ @item @@ -5878,6 +6857,38 @@ call to the right definition, with one restriction---you must use arguments of the type required by the function that you want to call. @value{GDBN} does not perform conversions requiring constructors or user-defined type operators. +@end ifclear +@ifset HPPA +@cindex call overloaded functions +@cindex overloaded functions +@cindex type conversions in C++ +@item +You can call overloaded functions; @value{GDBN} resolves the function +call to the right definition, with some restrictions. GDB does not +perform overload resolution involving user-defined type conversions, +calls to constructors, or instantiations of templates that do not exist +in the program. It also cannot handle ellipsis argument lists or +default arguments. + +It does perform integral conversions and promotions, floating-point +promotions, arithmetic conversions, pointer conversions, conversions of +class objects to base classes, and standard conversions such as those of +functions or arrays to pointers; it requires an exact match on the +number of function arguments. + +Overload resolution is always performed, unless you have specified +@code{set overload-resolution off}. @xref{Debugging C plus plus, +,@value{GDBN} features for C++}. + +You must specify@code{set overload-resolution off} in order to use an +explicit function signature to call an overloaded function, as in +@smallexample +p 'foo(char,int)'('x', 13) +@end smallexample +The @value{GDBN} command-completion facility can simplify this; +@pxref{Completion, ,Command completion}. + +@end ifset @cindex reference declarations @item @@ -5901,14 +6912,28 @@ resolving name scope by reference to source files, in both C and C++ debugging (@pxref{Variables, ,Program variables}). @end enumerate -@node C Defaults +@ifset HPPA +In addition, @value{GDBN} supports calling virtual functions correctly, +printing out virtual bases of objects, calling functions in a base +subobject, casting objects, and invoking user-defined operators. +@end ifset + +@ifset MOD2 +@node C Defaults, C Checks, Cplus expressions, C @subsubsection C and C++ defaults +@end ifset +@ifclear MOD2 +@node C Defaults, Debugging C, Cplus expressions, Support +@subsubsection C and C++ defaults +@end ifclear @cindex C and C++ defaults +@ifclear HPPA If you allow @value{GDBN} to set type and range checking automatically, they both default to @code{off} whenever the working language changes to C or C++. This happens regardless of whether you or @value{GDBN} selects the working language. +@end ifclear If you allow @value{GDBN} to set the language automatically, it recognizes source files whose names end with @file{.c}, @file{.C}, or @file{.cc}, and @@ -5921,7 +6946,7 @@ further details. @c Type checking is (a) primarily motivated by Modula-2, and (b) @c unimplemented. If (b) changes, it might make sense to let this node @c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93. -@node C Checks +@node C Checks, Debugging C, C Defaults, C Constants @subsubsection C and C++ type and range checks @cindex C and C++ checks @@ -5955,11 +6980,17 @@ that is not itself an array. @end ifclear @ifclear CONLY -@node Debugging C +@ifset MOD2 +@node Debugging C, Debugging C plus plus, C Checks, C +@subsubsection @value{GDBN} and C +@end ifset +@ifclear MOD2 +@node Debugging C, Debugging C plus plus, C Defaults, Support @subsubsection @value{GDBN} and C @end ifclear +@end ifclear @ifset CONLY -@node Debugging C +@node Debugging C, , C Constants, C @section @value{GDBN} and C @end ifset @@ -5977,8 +7008,18 @@ with pointers and a memory allocation function. @xref{Expressions, ,Expressions}. @ifclear CONLY -@node Debugging C plus plus +@menu +* Debugging C plus plus:: +@end menu + +@ifset MOD2 +@node Debugging C plus plus, , Debugging C, C @subsubsection @value{GDBN} features for C++ +@end ifset +@ifclear MOD2 +@node Debugging C plus plus, , Debugging C, Support +@subsubsection @value{GDBN} features for C++ +@end ifclear @cindex commands for C++ Some @value{GDBN} commands are particularly useful with C++, and some are @@ -5998,11 +7039,20 @@ breakpoints on overloaded functions that are not members of any special classes. @xref{Set Breaks, ,Setting breakpoints}. +@ifclear HPPA @cindex C++ exception handling @item catch @var{exceptions} @itemx info catch Debug C++ exception handling using these commands. @xref{Exception Handling, ,Breakpoints and exceptions}. +@end ifclear +@ifset HPPA +@cindex C++ exception handling +@item catch throw +@itemx catch catch +Debug C++ exception handling using these commands. @xref{Set +Catchpoints, ,Setting catchpoints}. +@end ifset @cindex inheritance @item ptype @var{typename} @@ -6028,6 +7078,29 @@ Choose whether to print derived (actual) or declared types of objects. @itemx show print vtbl Control the format for printing virtual function tables. @xref{Print Settings, ,Print settings}. +@ifset HPPA +(The @code{vtbl} commands do not work on programs compiled with the HP +ANSI C++ compiler (@code{aCC}).) + +@kindex set overload-resolution +@cindex overloaded functions +@item set overload-resolution on +Enable overload resolution for C++ expression evaluation. The default +is on. For overloaded functions, @value{GDBN} evaluates the arguments +and searches for a function whose signature matches the argument types, +using the standard C++ conversion rules (@pxref{Cplus expressions, ,C++ +expressions} for details). If it cannot find a match, it emits a +message. + +@item set overload-resolution off +Disable overload resolution for C++ expression evaluation. For +overloaded functions that are not class member functions, @value{GDBN} +chooses the first function of the specified name that it finds in the +symbol table, whether or not its arguments are of the correct type. For +overloaded functions that are class member functions, @value{GDBN} +searches for a function whose signature @emph{exactly} matches the +argument types. +@end ifset @item @r{Overloaded symbol names} You can specify a particular definition of an overloaded symbol, using @@ -6043,7 +7116,7 @@ available choices, or to finish the type list for you. @end ifclear @ifset MOD2 -@node Modula-2 +@node Modula-2, ,C , Support @subsection Modula-2 @cindex Modula-2 @@ -6057,7 +7130,7 @@ table. @cindex expressions in Modula-2 @menu * M2 Operators:: Built-in operators -* Built-In Func/Proc:: Built-in functions and procedures +* Built-In Func/Proc:: Built-in functions and procedures * M2 Constants:: Modula-2 constants * M2 Defaults:: Default settings for Modula-2 * Deviations:: Deviations from standard Modula-2 @@ -6066,7 +7139,7 @@ table. * GDB/M2:: @value{GDBN} and Modula-2 @end menu -@node M2 Operators +@node M2 Operators, Built-In Func/Proc, Modula-2, Modula-2 @subsubsection Operators @cindex Modula-2 operators @@ -6190,7 +7263,7 @@ treats the use of the operator @code{IN}, or the use of operators @end quotation @cindex Modula-2 built-ins -@node Built-In Func/Proc +@node Built-In Func/Proc, M2 Constants, M2 Operators, Modula-2 @subsubsection Built-in functions and procedures Modula-2 also makes available several built-in procedures and functions. @@ -6302,7 +7375,7 @@ an error. @end quotation @cindex Modula-2 constants -@node M2 Constants +@node M2 Constants, M2 Defaults, Built-In Func/Proc, Modula-2 @subsubsection Constants @value{GDBN} allows you to express the constants of Modula-2 in the following @@ -6351,7 +7424,7 @@ Pointer constants consist of integral values only. Set constants are not yet supported. @end itemize -@node M2 Defaults +@node M2 Defaults, Deviations, M2 Constants, Modula-2 @subsubsection Modula-2 defaults @cindex Modula-2 defaults @@ -6365,7 +7438,7 @@ code compiled from a file whose name ends with @file{.mod} sets the working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set the language automatically}, for further details. -@node Deviations +@node Deviations, M2 Checks, M2 Defaults, Modula-2 @subsubsection Deviations from standard Modula-2 @cindex Modula-2, deviations from @@ -6395,7 +7468,7 @@ argument. All built-in procedures both modify @emph{and} return their argument. @end itemize -@node M2 Checks +@node M2 Checks, M2 Scope, Deviations, Modula-2 @subsubsection Modula-2 type and range checks @cindex Modula-2 checks @@ -6423,7 +7496,7 @@ whose types are not equivalent is an error. Range checking is done on all mathematical operations, assignment, array index bounds, and all built-in functions and procedures. -@node M2 Scope +@node M2 Scope, GDB/M2, M2 Checks, Modula-2 @subsubsection The scope operators @code{::} and @code{.} @cindex scope @kindex . @@ -6463,7 +7536,7 @@ an error if the identifier @var{id} was not imported from definition module @var{module}, or if @var{id} is not an identifier in @var{module}. -@node GDB/M2 +@node GDB/M2, , M2 Scope, Modula-2 @subsubsection @value{GDBN} and Modula-2 Some @value{GDBN} commands have little use when debugging Modula-2 programs. @@ -6486,7 +7559,7 @@ interpreted as the beginning of a comment. Use @code{<>} instead. @end ifset @end ifclear -@node Symbols +@node Symbols, Altering, Languages, Top @chapter Examining the Symbol Table The commands described in this section allow you to inquire about the @@ -6640,6 +7713,7 @@ from the @code{ptype} command can be overwhelming and hard to use. The which match the regular-expression @var{regexp}. @end ignore +@ifclear HPPA @cindex reloading symbols Some systems allow individual object files that make up your program to be replaced without stopping and restarting your program. @@ -6668,6 +7742,31 @@ different directories or libraries) with the same name. @item show symbol-reloading Show the current @code{on} or @code{off} setting. @end table +@end ifclear + +@ifset HPPA +@kindex set opaque-type-resolution +@item set opaque-type-resolution on +Tell @value{GDBN} to resolve opaque types. An opaque type is a type +declared as a pointer to a @code{struct}, @code{class}, or +@code{union}---for example, @code{struct MyType *}---that is used in one +source file although the full declaration of @code{struct MyType} is in +another source file. The default is on. + +A change in the setting of this subcommand will not take effect until +the next time symbols for a file are loaded. + +@item set opaque-type-resolution off +Tell @value{GDBN} not to resolve opaque types. In this case, the type +is printed as follows: +@smallexample +@{@} +@end smallexample + +@kindex show opaque-type-resolution +@item show opaque-type-resolution +Show whether opaque types are resolved or not. +@end ifset @kindex maint print symbols @cindex symbol dump @@ -6692,7 +7791,7 @@ required for each object file from which @value{GDBN} has read some symbols. @value{GDBN} reads symbols (in the description of @code{symbol-file}). @end table -@node Altering +@node Altering, GDB Files, Symbols, Top @chapter Altering Execution Once you think you have found an error in your program, you might want to @@ -6723,7 +7822,7 @@ at a different address, or even return prematurely from a function. * Patching:: Patching your program @end menu -@node Assignment +@node Assignment, Jumping, Altering, Altering @section Assignment to variables @cindex assignment @@ -6751,13 +7850,14 @@ really the same as @code{print} except that the expression's value is not printed and is not put in the value history (@pxref{Value History, ,Value history}). The expression is evaluated only for its effects. +@ifclear HPPA If the beginning of the argument string of the @code{set} command appears identical to a @code{set} subcommand, use the @code{set variable} command instead of just @code{set}. This command is identical -to @code{set} except for its lack of subcommands. For example, if -your program has a variable @code{width}, you get -an error if you try to set a new value with just @samp{set width=13}, -because @value{GDBN} has the command @code{set width}: +to @code{set} except for its lack of subcommands. For example, if your +program has a variable @code{width}, you get an error if you try to set +a new value with just @samp{set width=13}, because @value{GDBN} has the +command @code{set width}: @example (@value{GDBP}) whatis width @@ -6775,6 +7875,43 @@ order to actually set the program's variable @code{width}, use @example (@value{GDBP}) set var width=47 @end example +@end ifclear +@ifset HPPA +Because the @code{set} command has many subcommands that can conflict +with the names of program variables, it is a good idea to use the +@code{set variable} command instead of just @code{set}. For example, if +your program has a variable @code{g}, you run into problems if you try +to set a new value with just @samp{set g=4}, because @value{GDBN} has +the command @code{set gnutarget}, abbreviated @code{set g}: + +@example +@group +(@value{GDBP}) whatis g +type = double +(@value{GDBP}) p g +$1 = 1 +(@value{GDBP}) set g=4 +(gdb) p g +$2 = 1 +(@value{GDBP}) r +The program being debugged has been started already. +Start it from the beginning? (y or n) y +Starting program: /home/smith/cc_progs/a.out +"/home/smith/cc_progs/a.out": can't open to read symbols: Invalid bfd target. +(@value{GDBP}) show g +The current BFD target is "=4". +@end group +@end example + +@noindent +The program variable @code{g} did not change, and you silently set the +@code{gnutarget} to an invalid value. In order to set the variable +@code{g}, use + +@example +(@value{GDBP}) set var g=4 +@end example +@end ifset @value{GDBN} allows more implicit conversions in assignments than C; you can freely store an integer value into a pointer variable or vice versa, @@ -6796,7 +7933,7 @@ set @{int@}0x83040 = 4 @noindent stores the value 4 into that memory location. -@node Jumping +@node Jumping, Signaling, Assignment, Altering @section Continuing at a different address Ordinarily, when you continue your program, you do so at the place where @@ -6810,6 +7947,10 @@ Resume execution at line @var{linespec}. Execution stops again immediately if there is a breakpoint there. @xref{List, ,Printing source lines}, for a description of the different forms of @var{linespec}. +@ifset HPPA +It is common practice to use the @code{tbreak} command in conjunction +with @code{jump}. @xref{Set Breaks, ,Setting breakpoints}. +@end ifset The @code{jump} command does not change the current stack frame, or the stack pointer, or the contents of any memory location or any @@ -6825,6 +7966,8 @@ well acquainted with the machine-language code of your program. Resume execution at the instruction at address @var{address}. @end table +@ifclear HPPA +@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt. You can get much the same effect as the @code{jump} command by storing a new value into the register @code{$pc}. The difference is that this does not start your program running; it only changes the address of where it @@ -6838,14 +7981,16 @@ set $pc = 0x485 makes the next @code{continue} command or stepping command execute at address @code{0x485}, rather than at the address where your program stopped. @xref{Continuing and Stepping, ,Continuing and stepping}. +@end ifclear -The most common occasion to use the @code{jump} command is to back up-- -perhaps with more breakpoints set--over a portion of a program that has -already executed, in order to examine its execution in more detail. +The most common occasion to use the @code{jump} command is to back +up---perhaps with more breakpoints set---over a portion of a program +that has already executed, in order to examine its execution in more +detail. @ifclear BARETARGET @c @group -@node Signaling +@node Signaling, Returning, Jumping, Altering @section Giving your program a signal @table @code @@ -6875,7 +8020,7 @@ passes the signal directly to your program. @end ifclear -@node Returning +@node Returning, Calling, Signaling, Altering @section Returning from a function @table @code @@ -6906,7 +8051,7 @@ returned. In contrast, the @code{finish} command (@pxref{Continuing and Stepping, ,Continuing and stepping}) resumes execution until the selected stack frame returns naturally. -@node Calling +@node Calling, Patching, Returning, Altering @section Calling program functions @cindex calling functions @@ -6922,13 +8067,15 @@ execute a function from your program, but without cluttering the output with @code{void} returned values. If the result is not void, it is printed and saved in the value history. +@ifclear HPPA A new user-controlled variable, @var{call_scratch_address}, specifies the location of a scratch area to be used when @value{GDBN} calls a function in the target. This is necessary because the usual method of putting the scratch area on the stack does not work in systems that have separate instruction and data spaces. +@end ifclear -@node Patching +@node Patching, , Calling, Altering @section Patching programs @cindex patching binaries @cindex writing into executables @@ -6978,7 +8125,7 @@ and core files are opened for writing as well as reading. @end table -@node GDB Files +@node GDB Files, Targets, Altering, Top @chapter @value{GDBN} Files @value{GDBN} needs to know the file name of the program to be debugged, both in @@ -6993,7 +8140,7 @@ the name of the core dump file. * Symbol Errors:: Errors reading symbol files @end menu -@node Files +@node Files, Symbol Errors, GDB Files, GDB Files @section Commands to specify files @cindex symbol table @@ -7028,6 +8175,7 @@ directories to search, just as the shell does when looking for a program to run. You can change the value of this variable, for both @value{GDBN} and your program, using the @code{path} command. +@ifclear HPPA On systems with memory-mapped files, an auxiliary file @file{@var{filename}.syms} may hold symbol table information for @var{filename}. If so, @value{GDBN} maps in the symbol table from @@ -7036,6 +8184,7 @@ descriptions of the file options @samp{-mapped} and @samp{-readnow} (available on the command line, and with the commands @code{file}, @code{symbol-file}, or @code{add-symbol-file}, described below), for more information. +@end ifclear @item file @code{file} with no argument makes @value{GDBN} discard any information it @@ -7069,11 +8218,19 @@ executing it once. When @value{GDBN} is configured for a particular environment, it understands debugging information in whatever format is the standard generated for that environment; you may use either a @sc{gnu} compiler, or -other compilers that adhere to the local conventions. Best results are -usually obtained from @sc{gnu} compilers; for example, using @code{@value{GCC}} -you can generate debugging information for optimized code. +other compilers that adhere to the local conventions. +@ifclear HPPA +Best results are usually obtained from @sc{gnu} compilers; for example, +using @code{@value{GCC}} you can generate debugging information for +optimized code. +@end ifclear +@ifclear HPPA On some kinds of object files, the @code{symbol-file} command does not +@end ifclear +@ifset HPPA +The @code{symbol-file} command does not +@end ifset normally read the symbol table in full right away. Instead, it scans the symbol table quickly to find which source files and which symbols are present. The details are read later, one source file at a time, @@ -7086,6 +8243,7 @@ being read. (The @code{set verbose} command can turn these pauses into messages if desired. @xref{Messages/Warnings, ,Optional warnings and messages}.) +@ifclear HPPA We have not implemented the two-stage strategy for COFF yet. When the symbol table is stored in COFF format, @code{symbol-file} reads the symbol table data in full right away. @@ -7102,8 +8260,10 @@ You can override the @value{GDBN} two-stage strategy for reading symbol tables by using the @samp{-readnow} option with any of the commands that load symbol table information, if you want to be sure @value{GDBN} has the entire symbol table available. +@end ifclear @ifclear BARETARGET +@ifclear HPPA If memory-mapped files are available on your system through the @code{mmap} system call, you can use another option, @samp{-mapped}, to cause @value{GDBN} to write the symbols for your program into a reusable @@ -7125,6 +8285,7 @@ needed. The @file{.syms} file is specific to the host machine where you run @value{GDBN}. It holds an exact image of the internal @value{GDBN} symbol table. It cannot be shared across multiple host platforms. +@end ifclear @c FIXME: for now no mention of directories, since this seems to be in @c flux. 13mar1992 status is that in theory GDB would look either in @@ -7152,6 +8313,7 @@ program is running. To do this, use the @code{kill} command (@pxref{Kill Process, ,Killing the child process}). @end ifclear +@ifclear HPPA @kindex load @var{filename} @item load @var{filename} @ifset GENERIC @@ -7198,8 +8360,10 @@ opens it as the current executable target for @value{GDBN} on your host @end ifset @code{load} does not repeat if you press @key{RET} again after using it. +@end ifclear @ifclear BARETARGET +@ifclear HPPA @kindex add-symbol-file @cindex dynamic linking @item add-symbol-file @var{filename} @var{address} @@ -7230,7 +8394,9 @@ operating system for the Motorola 88k. @value{GDBN} automatically looks for shared libraries, however if @value{GDBN} does not find yours, you can run @code{add-shared-symbol-file}. It takes no arguments. @end ifclear +@end ifclear +@ifclear HPPA @kindex section @item section The @code{section} command changes the base address of section SECTION of @@ -7239,6 +8405,7 @@ section addresses, (such as in the a.out format), or when the addresses specified in the file itself are wrong. Each section must be changed separately. The ``info files'' command lists all the sections and their addresses. +@end ifclear @kindex info files @kindex info target @@ -7264,12 +8431,23 @@ name and remembers it that way. @ifclear BARETARGET @cindex shared libraries -@value{GDBN} supports SunOS, SVr4, Irix 5, and IBM RS/6000 shared libraries. +@ifclear HPPA +@c added HP-UX -- Kim (HP writer) +@value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared +libraries. +@end ifclear +@ifset HPPA +@value{GDBN} supports HP-UX shared libraries. +@end ifset @value{GDBN} automatically loads symbol definitions from shared libraries when you use the @code{run} command, or when you examine a core file. (Before you issue the @code{run} command, @value{GDBN} does not understand references to a function in a shared library, however---unless you are debugging a core file). +@ifset HPPA +If the program loads a library explicitly, @value{GDBN} automatically +loads the symbols at the time of the @code{shl_load} call. +@end ifset @c FIXME: some @value{GDBN} release may permit some refs to undef @c FIXME...symbols---eg in a break cmd---assuming they are from a shared @c FIXME...lib; check this from time to time when updating manual @@ -7293,9 +8471,39 @@ required by your program for a core file or after typing @code{run}. If @var{regex} is omitted all shared libraries required by your program are loaded. @end table + +@ifset HPPA +@value{GDBN} detects the loading of a shared library and automatically +reads in symbols from the newly loaded library, up to a threshold that +is initially set but that you can modify if you wish. + +Beyond that threshold, symbols from shared libraries must be explicitly +loaded. To load these symbols, use the command @code{sharedlibrary} +@var{filename}. The base address of the shared library is determined +automatically by @value{GDBN} and need not be specified. + +To display or set the threshold, use the commands: + +@table @code +@kindex set auto-solib-add +@item set auto-solib-add @var{threshold} +Set the autoloading size threshold, in megabytes. If @var{threshold} is +nonzero, symbols from all shared object libraries will be loaded +automatically when the inferior begins execution or when the dynamic +linker informs @value{GDBN} that a new library has been loaded, until +the symbol table of the program and libraries exceeds this threshold. +Otherwise, symbols must be loaded manually, using the +@code{sharedlibrary} command. The default threshold is 100 megabytes. + +@kindex show auto-solib-add +@item show auto-solib-add +Display the current autoloading size threshold, in megabytes. +@end table +@end ifset + @end ifclear -@node Symbol Errors +@node Symbol Errors, , Files, GDB Files @section Errors reading symbol files While reading a symbol file, @value{GDBN} occasionally encounters problems, @@ -7391,12 +8599,13 @@ for it. @value{GDBN} could not parse a type specification output by the compiler. @end table -@node Targets +@node Targets, Controlling GDB, GDB Files, Top @chapter Specifying a Debugging Target @cindex debugging target @kindex target A @dfn{target} is the execution environment occupied by your program. +@ifclear HPPA @ifclear BARETARGET Often, @value{GDBN} runs in the same host environment as your program; in that case, the debugging target is specified as a side effect when you @@ -7405,6 +8614,29 @@ flexibility---for example, running @value{GDBN} on a physically separate host, or controlling a standalone system over a serial port or a realtime system over a TCP/IP connection---you @end ifclear +@end ifclear +@ifset HPPA +On HP-UX systems, @value{GDBN} has been configured to support debugging +of processes running on the PA-RISC architecture. This means that the +only possible targets are: + +@itemize @bullet +@item +An executable that has been compiled and linked to run on HP-UX + +@item +A live HP-UX process, either started by @value{GDBN} (with the +@code{run} command) or started outside of @value{GDBN} and attached to +(with the @code{attach} command) + +@item +A core file generated by an HP-UX process that previously aborted +execution +@end itemize + +@value{GDBN} on HP-UX has not been configured to support remote +debugging, or to support programs running on other platforms. You +@end ifset @ifset BARETARGET You @end ifset @@ -7415,10 +8647,14 @@ targets}). @menu * Active Targets:: Active targets * Target Commands:: Commands for managing targets +@ifset REMOTESTUB +* Byte Order:: Choosing target byte order * Remote:: Remote debugging +@end ifset + @end menu -@node Active Targets +@node Active Targets, Target Commands, Targets, Targets @section Active targets @cindex stacking targets @cindex active targets @@ -7464,7 +8700,7 @@ the @code{attach} command (@pxref{Attach, ,Debugging an already-running process}). @end ifclear -@node Target Commands +@node Target Commands, Byte Order, Active Targets, Targets @section Commands for managing targets @table @code @@ -7498,14 +8734,14 @@ select it. @kindex set gnutarget @item set gnutarget @var{args} -@value{GDBN}uses its own library BFD to read your files. @value{GDBN} +@value{GDBN} uses its own library BFD to read your files. @value{GDBN} knows whether it is reading an @dfn{executable}, -a @dfn{core}, or a @dfn{.o} file, however you can specify the file format +a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format with the @code{set gnutarget} command. Unlike most @code{target} commands, with @code{gnutarget} the @code{target} refers to a program, not a machine. @emph{Warning:} To specify a file format with @code{set gnutarget}, -you must know the actual BFD name. +you must know the actual BFD name. @noindent @xref{Files, , Commands to specify files}. @@ -7513,12 +8749,17 @@ you must know the actual BFD name. @item show gnutarget Use the @code{show gnutarget} command to display what file format @code{gnutarget} is set to read. If you have not set @code{gnutarget}, -@value{GDBN} will determine the file format for each file automatically -and @code{show gnutarget} displays @code{The current BDF target is "auto"}. +@value{GDBN} will determine the file format for each file automatically, +and @code{show gnutarget} displays @samp{The current BDF target is "auto"}. @end table +@ifclear HPPA Here are some common targets (available, or not, depending on the GDB configuration): +@end ifclear +@ifset HPPA +These are the valid targets on HP-UX systems: +@end ifset @table @code @kindex target exec @@ -7608,6 +8849,7 @@ is the target system's machine name or IP address. @item target bug @var{dev} BUG monitor, running on a MVME187 (m88k) board. +@ifclear HPPA @kindex target cpu32bug @item target cpu32bug @var{dev} CPU32BUG monitor, running on a CPU32 (M68K) board. @@ -7638,6 +8880,7 @@ Fujitsu sparclite boards, used only for the purpose of loading. You must use an additional command to debug the program. For example: target remote @var{dev} using @value{GDBN} standard remote protocol. +@end ifclear @end table @ifset GENERIC @@ -7645,6 +8888,8 @@ Different targets are available on different configurations of @value{GDBN}; your configuration may have more or fewer targets. @end ifset +@ifset REMOTESTUB +@node Byte Order, Remote, Target Commands, Targets @section Choosing target byte order @cindex choosing target byte order @cindex target byte order @@ -7663,7 +8908,7 @@ command. @emph{Warning:} Currently, only embedded MIPS configurations support dynamic selection of target byte order. -@node Remote +@node Remote, , Byte Order, Targets @section Remote debugging @cindex remote debugging @@ -7682,6 +8927,7 @@ communicate with @value{GDBN}. Other remote targets may be available in your configuration of @value{GDBN}; use @code{help target} to list them. +@end ifset @ifset GENERIC @c Text on starting up GDB in various specific cases; it goes up front @@ -7738,7 +8984,7 @@ here. * Messages/Warnings:: Optional warnings and messages @end menu -@node Prompt +@node Prompt, Editing, Controlling GDB, Controlling GDB @section Prompt @cindex prompt @@ -7764,7 +9010,7 @@ Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth. Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}} @end table -@node Editing +@node Editing, History, Prompt, Controlling GDB @section Command editing @cindex readline @cindex command line editing @@ -7794,7 +9040,7 @@ Disable command line editing. Show whether command line editing is enabled. @end table -@node History +@node History, Screen Size, Editing, Controlling GDB @section Command history @value{GDBN} can keep track of the commands you type during your @@ -7890,7 +9136,7 @@ Print ten commands centered on command number @var{n}. Print ten commands just after the commands last printed. @end table -@node Screen Size +@node Screen Size, Numbers, History, Controlling GDB @section Screen size @cindex size of screen @cindex pauses in output @@ -7931,7 +9177,7 @@ Likewise, you can specify @samp{set width 0} to prevent @value{GDBN} from wrapping its output. @end table -@node Numbers +@node Numbers, Messages/Warnings, Screen Size, Controlling GDB @section Numbers @cindex number representation @cindex entering numbers @@ -7977,7 +9223,7 @@ Display the current default base for numeric input. Display the current default base for numeric display. @end table -@node Messages/Warnings +@node Messages/Warnings, , Numbers, Controlling GDB @section Optional warnings and messages By default, @value{GDBN} is silent about its inner workings. If you are running @@ -8048,7 +9294,7 @@ Enables confirmation requests (the default). Displays state of confirmation requests. @end table -@node Sequences +@node Sequences, Emacs, Controlling GDB, Top @chapter Canned Sequences of Commands Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint @@ -8057,12 +9303,12 @@ for execution as a unit: user-defined commands and command files. @menu * Define:: User-defined commands -* Hooks:: User-defined command hooks +* Hooks:: User-defined command hooks * Command Files:: Command files * Output:: Commands for controlled output @end menu -@node Define +@node Define, Hooks, Sequences, Sequences @section User-defined commands @cindex user-defined command @@ -8151,7 +9397,7 @@ without asking when used inside a user-defined command. Many @value{GDBN} commands that normally print messages to say what they are doing omit the messages when used in a user-defined command. -@node Hooks +@node Hooks, Command Files, Define, Sequences @section User-defined command hooks @cindex command files @@ -8197,7 +9443,7 @@ If an error occurs during the execution of your hook, execution of If you try to define a hook which does not match any known command, you get a warning from the @code{define} command. -@node Command Files +@node Command Files, Output, Hooks, Sequences @section Command files @cindex command files @@ -8260,7 +9506,7 @@ without asking when used in a command file. Many @value{GDBN} commands that normally print messages to say what they are doing omit the messages when called from command files. -@node Output +@node Output, , Command Files, Sequences @section Commands for controlled output During the execution of a command file or a user-defined command, normal @@ -8337,7 +9583,7 @@ letter. @end table @ifclear DOSHOST -@node Emacs +@node Emacs, GDB Bugs, Sequences, Top @chapter Using @value{GDBN} under @sc{gnu} Emacs @cindex Emacs @@ -8350,6 +9596,9 @@ To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the executable file you want to debug as an argument. This command starts @value{GDBN} as a subprocess of Emacs, with input and output through a newly created Emacs buffer. +@ifset HPPA +(Do not use the @code{-tui} option to run @value{GDBN} from Emacs.) +@end ifset Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two things: @@ -8512,7 +9761,7 @@ each value is printed in its own window. @end ifclear @ifset LUCID -@node Energize +@node Energize, GDB Bugs, Emacs, Top @chapter Using @value{GDBN} with Energize @cindex Energize @@ -8540,7 +9789,7 @@ development tools that Energize integrates with @value{GDBN}. @end ifset -@node GDB Bugs +@node GDB Bugs, Command Line Editing, Emacs, Top @chapter Reporting Bugs in @value{GDBN} @cindex bugs in @value{GDBN} @cindex reporting bugs in @value{GDBN} @@ -8560,7 +9809,7 @@ information that enables us to fix the bug. * Bug Reporting:: How to report bugs @end menu -@node Bug Criteria +@node Bug Criteria, Bug Reporting, GDB Bugs, GDB Bugs @section Have you found a bug? @cindex bug criteria @@ -8590,11 +9839,12 @@ If you are an experienced user of debugging tools, your suggestions for improvement of @value{GDBN} are welcome in any case. @end itemize -@node Bug Reporting +@node Bug Reporting, , Bug Criteria, GDB Bugs @section How to report bugs @cindex bug reports @cindex @value{GDBN} bugs, reporting +@ifclear HPPA A number of companies and individuals offer support for @sc{gnu} products. If you obtained @value{GDBN} from a support organization, we recommend you contact that organization first. @@ -8633,6 +9883,15 @@ Free Software Foundation Inc. Boston, MA 02111-1307 USA @end example +@end ifclear + +@ifset HPPA +If you obtained HP GDB as part of your HP ANSI C or HP ANSI C++ compiler +kit, report problems to your HP Support Representative. + +If you obtained HP GDB from the Hewlett-Packard Web site, report +problems by electronic mail to @code{wdb-www@@ch.hp.com}. +@end ifset The fundamental principle of reporting bugs usefully is this: @strong{report all the facts}. If you are not sure whether to state a @@ -8678,13 +9937,22 @@ the bug in the current version of @value{GDBN}. The type of machine you are using, and the operating system name and version number. +@ifclear HPPA @item What compiler (and its version) was used to compile @value{GDBN}---e.g. ``@value{GCC}--2.0''. +@end ifclear @item What compiler (and its version) was used to compile the program you +@ifclear HPPA are debugging---e.g. ``@value{GCC}--2.0''. +@end ifclear +@ifset HPPA +are debugging---e.g. ``HP92453-01 A.10.32.03 HP C Compiler''. Use the +@code{what} command with the pathname of the compile command +(@file{what /opt/ansic/bin/cc}, for example) to obtain this information. +@end ifset @item The command arguments you gave the compiler to compile your example and @@ -8717,6 +9985,7 @@ then when ours fails to crash, we would know that the bug was not happening for us. If you had not told us to expect a crash, then we would not be able to draw any conclusion from our observations. +@ifclear HPPA @item If you wish to suggest changes to the @value{GDBN} source, send us context diffs. If you even discuss something in the @value{GDBN} source, refer to @@ -8724,6 +9993,7 @@ it by context, not by line number. The line numbers in our development sources will not match those in your sources. Your line numbers would convey no useful information to us. +@end ifclear @end itemize Here are some things that are not necessary: @@ -8784,7 +10054,7 @@ things without first using the debugger to find the facts. @ifset NOVEL @ifset RENAMED -@node Renamed Commands +@node Renamed Commands, Formatting Documentation, GDB Bugs, Top @appendix Renamed Commands The following commands were renamed in @value{GDBN} 4, in order to make the @@ -8904,7 +10174,8 @@ unset &&\rm(No longer an alias for delete)\cr @end ifset @ifclear PRECONFIGURED -@node Formatting Documentation +@ifclear HPPA +@node Formatting Documentation, Installing GDB, Renamed Commands, Top @appendix Formatting Documentation @cindex @value{GDBN} reference card @@ -8987,12 +10258,43 @@ subdirectory of the main source directory (for example, to @example make gdb.dvi @end example +@end ifclear -@node Installing GDB +@node Installing GDB, Index, Using History, Top @appendix Installing @value{GDBN} @cindex configuring @value{GDBN} @cindex installation +@ifset HPPA +If you obtain @value{GDBN} (HP WDB 0.75) as part of your HP ANSI C or +HP ANSI C++ Developer's Kit at HP-UX Release 11.0, you do not have to +take any special action to build or install @value{GDBN}. + +If you obtain @value{GDBN} (HP WDB 0.75) from an HP web site, you may +download either a @code{swinstall}-able package or a source tree, or +both. + +Most customers will want to install the @value{GDBN} binary that is part +of the @code{swinstall}-able package. To do so, use a command of the +form + +@smallexample +/usr/sbin/swinstall -s @var{package-name} WDB +@end smallexample + +Alternatively, it is possible to build @value{GDBN} from the source +distribution. Sophisticated customers who want to modify the debugger +sources to tailor @value{GDBN} to their their needs may wish to do this. +The source distribution consists of a @code{tar}'ed source tree rooted +at @file{gdb-4.16/...}. The instructions that follow describe how to +build a @file{gdb} executable from this source tree. HP believes that +these instructions apply to the WDB source tree that it distributes. +However, HP does not explicitly support building a @file{gdb} for any +non-HP platform from the WDB source tree. It may work, but HP has not +tested it for any platforms other than those described in the WDB 0.75 +Release Notes. +@end ifset + @value{GDBN} comes with a @code{configure} script that automates the process of preparing @value{GDBN} for installation; you can then use @code{make} to build the @code{gdb} program. @@ -9105,10 +10407,10 @@ let @value{GDBN} debug child processes whose programs are not readable. @menu * Separate Objdir:: Compiling @value{GDBN} in another directory * Config Names:: Specifying names for hosts and targets -* configure Options:: Summary of options for configure +* Configure Options:: Summary of options for configure @end menu -@node Separate Objdir +@node Separate Objdir, Config Names, Installing GDB, Installing GDB @section Compiling @value{GDBN} in another directory If you want to run @value{GDBN} versions for several host or target machines, @@ -9169,7 +10471,7 @@ directories, you can run @code{make} on them in parallel (for example, if they are NFS-mounted on each of the hosts); they will not interfere with each other. -@node Config Names +@node Config Names, Configure Options, Separate Objdir, Installing GDB @section Specifying names for hosts and targets The specifications used for hosts and targets in the @code{configure} @@ -9211,7 +10513,7 @@ Invalid configuration `i786v': machine `i786v' not recognized @code{config.sub} is also distributed in the @value{GDBN} source directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}). -@node configure Options +@node Configure Options, , Config Names, Installing GDB @section @code{configure} options Here is a summary of the @code{configure} options and arguments that @@ -9287,7 +10589,8 @@ configuring other @sc{gnu} tools recursively; but these are the only options that affect @value{GDBN} or its supporting libraries. @end ifclear -@node Index + +@node Index, , Installing GDB, Top @unnumbered Index @printindex cp diff --git a/gdb/inftarg.c b/gdb/inftarg.c index 9439a9f7cf..592b5d90aa 100644 --- a/gdb/inftarg.c +++ b/gdb/inftarg.c @@ -571,7 +571,7 @@ child_create_inferior (exec_file, allargs, env) else shell_file = tryname; - fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, pre_fork_inferior, shell_file); + fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, pre_fork_inferior, NULL); #else fork_inferior (exec_file, allargs, env, ptrace_me, ptrace_him, NULL, NULL); #endif