Debugging with GDB Manual
Page
Table of Contents
Continuing and stepping Signals
Print settings Value history
Breakpoints
Stack frames
Examining the Symbol Table
Specifying a Debugging Target
Stop when freeing unallocated or deallocated blocks
Scramble previous memory contents at malloc/free calls
Batch Mode
Commands for heap profiling
Support for the info target Command
Support for the dumpcore command
Enhancements to the dumpcore command
Example Illustrating Execution Path Recovery
Command for evaluating the address of an expression
Support for steplast command for C and C++
Debugging the application using GDB under Aries
Detecting memory leaks using GDB under Aries
HP-UX Terminal User Interface
Miscellaneous commands 265 16.3
Setting Command History Feature in GDB 281 17.4
User-defined commands 287 18.2
Command files 289 Commands for controlled output 290
20.7 Errors 302 20.8
22.2 How to report bugs 361
20.9 Invalidation notices 303
304
List of Tables
List of Examples
Summary of GDB
Free Software
Contributors to GDB
Page
Contributors to GDB
Page
Let us use GDB to try to see what is going on
Sample GDB Session
Loading the Executable
Setting Display width
Setting Breakpoints
Here we describe how to set a breakpoint
Running the executable under GDB
Stepping into a subroutine
Examining the Stack
Printing Variable Values
Setting Variable Values During a Session
Listing Source Code
Gdb c Continuing Definebaz,defnQUOTEfooUNQUOTE Baz
Page
Getting In and Out of GDB
Invoking GDB
Choosing files
Files
Processed. See Command files
Choosing modes
GNU Emacs sets this option when it runs GDB as a
Line number in a standard, recognizable fashion each
Time a stack frame is displayed which includes each
Like two `\032 characters, followed by the file name
Emacs
Quitting GDB
Redirecting WDB input and output to a file
Interface
Shell commands
Page
GDB Commands
Command syntax
Command completion
GDB sounds bell press TAB again, to see
Short list of named classes of commands
Getting help
Help , h
Apropos reload
Results
Complete
This is intended for use by GNU Emacs
Getting help
Page
Running Programs Under GDB
Compiling for debugging
Starting your program
Arguments, so that you may use normal
See Arguments To Your Program
Your program. SeeProgram Environment
Directory
Arguments To Your Program
Program Environment
Program. See Program Input and Output
For example, this command
Display the list of search paths for executables
Path environment variable
Do not supply varname, print the names
Working directory
Program Input and Output
Debugging a Running Process
Killing the child process
Debugging programs with multiple threads
New process 35 thread
Here are commands to get more information about threads
Thread apply command allows you to
With the command argument threadno
Display a summary of all threads currently
Debugging programs with multiple processes
New process. The mode can be
Unimpeded. This is the default
Set the debugger response to a program call
Fork. The child process runs
Stopping and Continuing
Breakpoints
Setting breakpoints
See Break conditions page 59, for more
Breakpoints
Breakpoint
Catchpoint
Whether
Breakpoint is
When hit
Enabled
Marked to be
Breakpoints are
Setting catchpoints
Call to vfork. This is currently only
Is currently only available for HP-UX
Unloading of any dynamically loaded
Shared library, or the unloading
Deleting breakpoints
Disabling breakpoints
Selecting a frame page 73 . When
Break conditions
Breakpoint, GDB prints an error message
No symbol foo in current context
Stops your program only if the value
Use condition, GDB checks expression
Breakpoint command lists
Breakpoint menus
Cannot insert breakpoints
Continuing and stepping
Conditions
Function
Setting breakpoints page 52. This form of the command
Signals
Stops. See Automatic display
Info handle is an alias for info signals
Stopping and starting multi-thread programs
Stopping and Continuing
Examining the Stack
Stack frames
Commands for Examining the Stack
Stacks Without frames
Backtraces
Selecting a frame
Have existed longer. n defaults to one
When used without any argument, this command does not
With an argument, this command is used to select a stack
Information about a frame
Setting catchpoints
Page
Examining Source Files
Printing source lines
List
Show listsize
Searching source files
Specifying source directories
Source and machine code
Show directories
Contains
Set disassembly-flavor
Disassemble or x/i commands
Select the instruction set to use when
Disassembling the program via
Page
Following forms of print command are supported
Examining Data
Expressions
To See Artificial arrays page 85, for more information
Where it is defined. See Program variables
Program variables
Type addr
Normally supposed to reside at addr
You can print the contents of array with
Artificial arrays
Output formats
Machine instruction. The default is
Examining memory
Print, s null-terminated string, or
Time you use either x or print
However, the count n must come first wx4 does not work
Automatic display
For fmt specifying only a display format and not a size or
See Output formats
For fmt i or s, or including a unit-size or a number
Print settings
A symbol. This is the default
File name and line number of a symbol
Symbolic form of an address
Address
Default is off
Strings. When GDB starts, this limit is set to
Setting number-of-elementsto zero
Short strings. The default is off
This is the default format
Show which format GDB is using to print
Print using only seven-bit characters if this
Default
These settings are of interest when debugging C++ programs
Default is on
Show whether C++ names in assembly listings
Would print
Value history
Convenience variables
Command, in which case it is a pointer to the type of $
Format in which the data was printed
$exitcode
Program being debugged terminates
Registers
Info registers Info all-registers Info registers regname
Or print the instruction to be executed next with
Or add four to the stack pointer3 with3with
Printing Floating Point Values
Floating point hardware
To get the bit pattern, try the following macro
This is what the macro produces
100
Using GDB with Different Languages
Switching between source languages
List of filename extensions and languages
Cpp
Setting the working language
Not skip over function prologues when stepping
Having GDB infer the source language
Files
Displaying the language
Type and range checking
An overview of type checking
An overview of range checking
Supported languages
C++
Expressions is 0 for false and non-zero for true
Non-zero for true
Left shift, and right shift. Defined on integral types
Types and pointer types
Class types
Double colons also represent the GDB scope operator see
Expressions page 83. Same precedence as , above
C++ constants
1.3 C++ expressions
GDB expression handling can interpret most C++ expressions
C++ defaults
Printing the variable or class returns
C++ type and range checks
GDB features for C++
GDB and C
Breakpoint menus
See Breakpoint menus
Fortran
Fortran types
Fortran types supported
Less than
Less than or equal to
Greater than
Greater than or equal to
Fortran special issues
Commonblockname
Block
Examining the Symbol Table
Two commands give this output
As with whatis, using ptype without an
Symbols will be read when needed
For example, for this variable declaration
Allow GDB to reload the symbols for
Replace symbol definitions
Do not replace symbol
Once. This is the default
Setting
Is in another source file. The default is on
Tell GDB to resolve opaque types. An opaque
Class, or union―for example, struct
Altering Execution
Assignment to variables
Continuing at a different address
Stores the value 4 into that memory location
Giving your program a signal
You can use the following command to return from a function
Returning from a function
Calling program functions
Patching programs
Return , return
Is used as the return value from the function value
Patching programs
124
Commands to specify files
GDB Files
See Optional warnings and messages
Option with any of the commands that load
GDB has the entire symbol table available
Write the symbols for your program into a
Map in symbol information from this auxiliary
Section
Symbols were loaded. Both the commands list
To display or set the threshold, use the commands
If threshold is nonzero, symbols from all
New library has been loaded, until the symbol
Names where the desired shared libraries reside. GDB
Searching the default system directories
Specifying shared library locations
Megabytes
Errors reading symbol files
Verbose on. See Optional warnings
Messages
Symbol scope block as starting on the previous
Is the symbol type of the uncomprehended
GDB circumvents the error by ignoring this
Debug your program, though certain symbols
Commands for managing targets
Specifying a Debugging Target
Active targets
See Commands to specify files
Choosing target byte order
Instruct GDB to assume the target is big-endian
Instruct GDB to assume the target is little-endian
Executable
Display GDBs current idea of the target byte order
HP-UX Configuration-Specific Information
Summary of HP Enhancements to GDB
Implementation of ask mode for set follow-fork-mode
Support for setting breakpoints using shared library name
Command watchtarget
HP-UX dependencies
Linker Dependencies
Dependent Standard Library Routines for Run Time Checking
Abort Unlink Atoi
Getpid Close Srand Strchr
Supported Platforms and Modes
HP-UX targets
Support for Alternate root
WDB Location
GDB location
Specifying object file directories
Librtc.sl location $WDBROOT/bin Opt/langtools/ n/a
None
Bin $WDBROOT/bin
Fix and continue debugging
Fix and Continue compiler dependencies
Fix and Continue restrictions
Using Fix and Continue
Example Fix and Continue session
Compile the program
Run the program
Gdb b main
Gdb run
Gdb edit
Make the necessary changes. In this case, add return total
Inline Support
Inline Debugging in HP 9000 Systems
Gdb q
Breakpoint info frame disassembly
Following options available for the set inline-debugcommand
Inline Debugging in Integrity Systems
Step next list backtrace frame n info locals info args
Limitations
Debugging Inline Functions in Integrity Systems
Info frame disassembly
Debugging Macros
Viewing and Evaluating Macro Definitions
Compiler Options to Enable Macro Debugging
Evaluating Macros
Debug=none
Examples for Macro Debugging
HP-UX Configuration-Specific Information
Debugging Memory Problems
When to suspect a memory leak
Memory debugging restrictions
Memory Debugging Methodologies
Debugging Memory in Interactive Mode
Displays all current settings for memory
This command are ignored from report. If
Heap growth. The default value is 100. Every
Command discards the data existing in the file
Debugging Memory Problems
Debugging when the string option is set for
Have occurred and WDB reports the problem
Specific pattern when it is allocated or
Such as attempting to access space that is freed
Use the info command to show list of memory leaks
If the user specifies a value less than 16 for
Number of bytes, the debugger ignores it
User-specified value
Debugging Memory in Batch Mode
Setting Configuration Options for Batch Mode
Gdb info leak
Framecount=noframes or set heap-check frame-count noframes
Sets the number of frames to be printed for leak context
For 32 bit IPF applications
For 64 bit IPF applications
For 64 bit PA applications
For 64-bit IPF applications
Environment variable setting for Batch mode debugging
Ldpreload
Aborts execution when heap objects
Aborts execution when out of memory
Log file for batch mode must be
Stderr error message goes to stderr
Example for Batch Mode RTC
Complete one of the following steps
Rtcconfig file should contain entries such as the following
Preload the librtc library as follows
Run the program as follows
For 32 bit PA applications
Configuring memory debugging settings
Run the program Start a debugging session as follows
Specifying the stack depth
Specifying minimum leak size
Stop when freeing unallocated or deallocated blocks
Scenarios in memory debugging
For example, if you use
Specifying minimum block size
Scramble previous memory contents at malloc/free calls
Interactive debugging mode set heap-check scramble on off
Syntax
Detect dangling pointers and dangling blocks
Detect in-block corruption of freed blocks
Memory Debugging Commands in Interactive and Batch Mode
Off
Commands for heap profiling
Point you use the info heap command
Heap Profiling
As the start of the heap, end of the heap, heap
This example shows how to use this feature on HP-UX
Set a breakpoint
Commands to track the change in data segment value
Changes for a given run
Thread Debugging Support
Support for Enabling and Disabling Specific Threads
Backtrace Support for Thread Debugging
Advanced Thread Debugging Support
Enabling and Disabling Advanced Thread Debugging Features
Pre-requisites for Advanced Thread Debugging
Onoff command checks if an application
Unlock-not-own onoff The set thread-check unlock-not-own
Mixed-sched-policy onoff The set thread-check
Cv-multiple-mxs onoff The set thread-check cv-multiple-mxs
This returns an Einval error to
User and prints a warning message when this
Command checks if any thread has terminated
Different mutexes. The debugger transfers
When this condition is detected. This situation
Command checks if a thread has terminated
Exception or a cancel without joining or
Created with the detach attribute. When an
Provided, the command displays extended
Is provided, the command displays extended
Condvar-id is provided, the command displays
Rwlock-id is provided, the command displays
For 64-bit PA applications
Thread Debugging in Batch Mode
Pre-requisites for Batch mode of Thread Debugging
For 64 bit IPF applications, set
For 64-bit PA applications, set
And/Or
Set the environment variable Batchrtc to on as
Opt/langtools/lib/hpux64/librtc.so
Thread Debugging in +check Mode
Where Pid is the process id
Limitations in Batch mode of thread debugging
Where pid is the process identifier
Issue
Debugging MPI Programs
Ask mode for set follow-fork-mode
Serial mode for set follow-fork-mode
Support for showing unwind info
Debugger response to a program call to fork or vfork is ask
Command to Search for a Pattern in the Memory Address Space
Printing CFM and PFS registers
Parameter is mandatory when end-addressis not
Specifies the length of the memory address range. This
String value. The character pattern must be enclosed
Within double quotes. This parameter is mandatory
Example 14-1 Sample Output for the find command
Using the /max-countparameter
Using the /size-charparameter
Str0 Specifies the starting address
Specifies the pattern expr1
Debugging Core Files
Generating core files with packcore /unpackcore/getcore
Support for the info target Command
Support for the dumpcore command
When starting from the HP WDB command line
When starting from the shell prompt
Enhancements to the dumpcore command
When starting from shell prompt
Support for display of run time type information
Info rtti address
Sample Output
Info exec-path summary
Info global-exec-path summary
Exec-path updownpathindex aliased to ep
Example Illustrating Execution Path Recovery
Sample Program
Sample Debugging Session
Command to Unwind Beyond 10000 Frames
Aborting a Command Line Call
Invoking GDB Before a Program Aborts
Instruction Level Stepping
Enhanced support for watchpoints and breakpoints
Deferred watchpoints
Hardware watchpoints
Support for procedural breakpoints
Support for template breakpoints
Rbp
Rdp
Using shared library as main program
Debugging support for shared libraries
Setting Deferred Breakpoints in Shared Library
Using catch load
Privately mapping shared libraries
Selectively Mapping Shared Libraries As Private
Opt/langtools/bin/pxdb -s on executable-name
Setting breakpoints in shared library
Enhancement to the info shared Command
Debugging support for Decimal Floating Point data type
Printing Decimal Floating point data types
Following are sample commands to print NaT registers
Printing NaT Registers
Handling Decimal Floating Point Data types
Evaluating Decimal Floating Point data types
Assignment of Decimal floating point value to variable
Arithmetic Operations
Comparison Operations
Printing type of Decimal Floating Point variable
Additional Support for binary floating point data type
Support for Binary Floating Point constants f, l
This prints the binary floating point value as oat
This prints the binary floating point value as double
Java Stack Unwind Features
Language support
Enhanced Java Debugging Support
Gdb Subcommands for Java VM Debugging
Gdb help java
Frame command of GDB has been enhanced to interpret a Java
Java and native stack frames
Info frame
Stack frame
Java attach mode debugging support
Java corefile debugging support
Enhanced support for C++ templates
Syntax
Support for fpreg data type on IPF
Support for Complex variables in HP C
Support for debugging namespaces
Command for evaluating the address of an expression
Viewing Wide Character Strings
This is equivalent to executing
Support for output logging
Support for dumping array in an Ascii file
Support for steplast command for C and C++
Support for Fortran array slices
Displaying enumerators
Support for debugging typedefs
Getting information from a non-debug executable
Debugging optimized code
Break Call Clear Disassem List
Break Call Cond Jump Return Print Set var Watch Whatis
HP-UX Configuration-Specific Information
Debugging Optimized Code at Various Optimization Levels
14.29.1.1 +O0 and +O1
14.29.1.2 +O2/+O3/+O4/-ipo
Following limitations apply when debugging optimized code
Debugging with Aries
+O2 or -O
Debugging the application using GDB under Aries
Limitations of GDB Support under Aries
Detecting memory leaks using GDB under Aries
Attaching GDB to an already running emulated process
Visual Interface for WDB
Starting and stopping Visual Interface for WDB
Navigating the Visual Interface for WDB display
Visual Interface for WDB GUI display
Using the X-window graphical interface
Specifying foreground and background colors
Using the TUI mode
Changing the size of the source or debugger pane
For dterm, use the following
Using commands to browse through source files
Editing the command line and command-line history
Saving the contents of a debugging session to a file
Loading source files
Support for XDB commands
GNU GDB Logging Commands
Support for command line calls in a stripped executable
Stop in/at dbx commands
Execute the chatr -B immediate executable command
For 32-bit applications
Command line calls to non-stripped library
Support for debugging stripped binaries
For 64-bit applications
Printing of locals and globals in a stripped module
Displaying the current block scope information
Linux support
Syntax
242
Invoke the debugger using a command like the following
HP-UX Terminal User Interface
Starting the TUI
Main
Automatically running a program at startup
Screen Layouts
Disassembly pane
Disassembly pane appears when you issue the command
Source pane
Pane looks like this
Source/Disassembly pane
Disassembly/Register pane
Source/Disassembly pane appears when you issue the command
Source/Register pane appears when you issue the command
Source/Register pane
Use the commands
Toggle split-screen mode
Cycling through the panes
Changing pane focus
Fs regs Foc next
Scrolling panes
Changing the register display
Changing the pane size
Refreshing and updating the window
By-function lists of XDB commands and HP WDB equivalents
XDB to WDB Transition Guide
Invocation commands
Window mode commands
Invocation commands
Window mode commands
File viewing commands
File viewing commands
Source directory mapping commands
Data Viewing and modification commands
Data viewing and modification commands
Ll string Lm string
Stack viewing commands
Stack viewing commands
Status-viewing command
Job control commands
Status viewing commands
Job control commands
Overall breakpoint commands
Auxiliary breakpoint commands
Overall breakpoint commands
Breakpoint creation commands
Auxillary breakpoint commands
10 Breakpoint creation commands
Breakpoint status commands
11 Overall breakpoint commands
All-procedures breakpoint commands
Global breakpoint commands
12 Global breakpoint commands
Bp bpt bpx dp Dpt Dpx
Assertion control commands
Record and playback commands
Macro facility commands
Signal control commands
Miscellaneous commands
13 Macro facility commands
14 Signal control commands
Format of the print command is different in XDB and GDB
16 Data format commands
XDB data formats and HP WDB equivalents
Decimal integer
17 Macro facility commands
XDB location syntax and HP WDB equivalents
XDB special language operators and HP WDB equivalents
XDB special variables and HP WDB equivalents
18 Special language operators
19 Special variables
Alphabetical lists of XDB commands and HP WDB equivalents
XDB variable identifiers and HP WDB equivalents
16.8.1 a
20 Variable Identifiers
16.8.2 B
22 B
Through D
23 C through D
Through K
16.8.5 L
24 F through K
25 L
Through P
26 M through P
Through S
16.8.8 T
27 Q through S
28 T
Through Z
29 U through Z
Symbols
30 Symbols
Any string
Control-C # text
280
Setting the GDB Prompt
Setting Command Editing Options in GDB
Setting Command History Feature in GDB
Controlling GDB
Control the settings
To fname. This is the file where GDB reads an
Exits. You can access this list through history
Expansion or through the history command
Setting the GDB Screen Size
Supported Number Formats
Optional warnings and messages
Optional messages about internal happenings
Set confirm on
Show confirm Displays state of confirmation requests
Show debug varobj
Object debugging info
Canned Sequences of Commands
User-defined commands
User-defined command hooks
Command files
To add source directories or
Commands for controlled output
Expressions
Output formats
292
Using GDB under gnu Emacs
Calls, like the GDB next command. Then update the display
Execute to next instruction, using the GDB nexti command
Update display window accordingly
GDB up command
295
296
What is an annotation?
GDB Annotations
Server prefix
When printing a structure, GDB annotates it as follows
Values
When printing an array, GDB annotates it as follows
Frames
Frame annotation begins with
Then comes
Displays
Annotation for GDB input
Errors
Information on breakpoints
Invalidation notices
Running the program
Displaying source
Annotations We Might Want in the Future
Target-invalid
306
21.1 GDB/MI Command Syntax
GDB/MI Interface
Done running connected error exit
21.1.2 GDB/MI Output syntax
Pragmatics
Value Const tuple list String Tuple →
Here is what happens if you pass a bad command
21.2 GDB/MI compatibility with CLI
Simple examples of GDB/MI interaction
Here is an example to evaluate an expression
21.4 GDB/MI command description format
21.3 GDB/MI output records
21.3.1 GDB/MI result records
21.3.2 GDB/MI stream records
21.5 GDB/MI breakpoint table commands
-break-after Command
-break-condition command
Corresponding GDB command is condition
-break-delete command
-break-disable command
Corresponding GDB command is delete
Corresponding GDB command is disable
-break-enable command
-break-info Command
-break-insert command
Result
-break-list command
-break-watch command
Corresponding GDB commands are watch, awatch, and rwatch
Setting a watchpoint on a variable in the main function
Exec-continue running gdb
-data-disassemble command
21.6 GDB/MI Data manipulation
There is no direct mapping from this command to the CLI
Disassemble from the current value of $pc to $pc +
Disassemble 3 instructions from the start of main
-data-evaluate-expression command
-data-list-changed-registers Command
-data-list-register-names command
Display a list of the registers that have changed
On a PPC MBX board
-data-list-register-values command
-data-read-memory command
Space should be quoted using the C convention
To be read. Complex expressions containing embedded white
Word-format Word-sizenr-rowsnr-cols aschar
-display-delete command
-display-disable Command
-display-enable command
-display-insert Command
-display-list command
-environment-cd command
-environment-directory command
-environment-path command
-environment-pwd command
Corresponding GDB command is pwd
21.7 GDB/MI program control
Show the current working directory
-exec-abort command
-exec-arguments command
-exec-continue command
-exec-finish command
-exec-interrupt command
Corresponding GDB command is finish
Corresponding GDB command is interrupt
-exec-nextcommand Synopsis
-exec-next-instruction command
Corresponding GDB command is next
Corresponding GDB command is nexti
-exec-return command
-exec-runcommand Synopsis
Corresponding GDB command is return
Corresponding GDB command is run
-exec-show-arguments command
Example -exec-stepCommand Synopsis
-exec-step-instruction command
-exec-until command
Corresponding GDB command is stepi
Regular stepping
-file-exec-and-symbols command
-file-exec-file command
Corresponding GDB command is until
Corresponding GDB command is file
-file-list-exec-sections command
-file-list-exec-source-files command
-file-list-shared-libraries command
Miscellaneous GDB commands in GDB/MI
-file-list-symbol-files command
-file-symbol-file command
-gdb-exitcommand Synopsis
-gdb-setcommand Synopsis
-gdb-showcommand Synopsis
-gdb-version command
21.9 GDB/MI Stack Manipulation Commands
-stack-info-frame command
-stack-info-depth command
-stack-list-arguments command Synopsis
For a stack with frame levels 0 through
-stack-list-frames command
Corresponding GDB commands are backtrace and where
Full stack backtrace
Show frames between lowframe and highframe
Show a single frame
-stack-list-locals command
-stack-select-frame command
Info locals in GDB, gdbgetlocals in gdbtk
21.10 GDB/MI Symbol query commands
-symbol-info-address command
-symbol-info-file command
-symbol-info-function command
-symbol-info-line command
-symbol-info-symbol command
-symbol-list-functions command
-symbol-list-types command
-symbol-list-variables command
-symbol-locate command
-symbol-type command
21.11 GDB/MI Target Manipulation Commands
-target-attach command
-target-compare-sections command
-target-detach command
-target-download command
Corresponding GDB command is load
Name of the section
At the end, a summary is printed
-target-exec-status command
-target-list-available-targets command
-target-list-current-targets command
-target-list-parameters command
21.12 GDB/MI thread commands
-target-select command
-thread-info command
-thread-list-all-threads command
-thread-list-ids command
-thread-select command
21.13 GDB/MI tracepoint commands
Tracepoint commands are not yet implemented
21.14 GDB/MI variable objects
-var-create command
GDB/MI Operations
Description and use of operations on variable objects
-var-delete command
-var-set-format command
-var-show-format command
-var-info-num-children command
-var-list-children command
-var-info-type command
-var-info-expression command
-var-show-attributes command
-var-assign command
-var-update command
360
How to report bugs
Reporting Bugs in GDB
Have you found a bug?
Reporting Bugs in GDB
How to report bugs
364
Installing GDB
Compiling GDB in another directory
Gdb-gdb-199991101/mmalloc
Package
Specifying names for hosts and targets
Configure options
Separate directories. configure writes configuration
To use the source in the directory dirname. configure
Srcdir= dirname
Target=target
All available targets