Debugging with GDB (February 2008)
Table Of Contents
- Summary of GDB
- A Sample GDB Session
- Getting In and Out of GDB
- GDB Commands
- Running Programs Under GDB
- Stopping and Continuing
- Examining the Stack
- Examining Source Files
- Examining Data
- Using GDB with Different Languages
- Examining the Symbol Table
- Altering Execution
- GDB Files
- Specifying a Debugging Target
- HP-UX Configuration-Specific Information
- Summary of HP Enhancements to GDB
- HP-UX dependencies
- Supported Platforms and Modes
- HP-UX targets
- Support for Alternate root
- Specifying object file directories
- Fix and continue debugging
- Inline Support
- Debugging Macros
- Debugging Memory Problems
- When to suspect a memory leak
- Memory debugging restrictions
- Memory Debugging Methodologies
- Debugging Memory in Interactive Mode
- Debugging Memory in Batch Mode
- Debugging Memory Interactively After Attaching to a Running Process
- Configuring memory debugging settings
- Scenarios in memory debugging
- Stop when freeing unallocated or deallocated blocks
- Stop when freeing a block if bad writes occurred outside block boundary
- Stop when a specified block address is allocated or deallocated
- Scramble previous memory contents at malloc/free calls
- Detect dangling pointers and dangling blocks
- Detect in-block corruption of freed blocks
- Specify the amount of guard bytes for every block of allocated memory
- Comparison of Memory Debugging Commands in Interactive Mode and Batch Mode
- Heap Profiling
- Memory Checking Analysis for User Defined Memory Management Routines
- Commands to track the change in data segment value
- Thread Debugging Support
- Debugging MPI Programs
- Debugging multiple processes ( programs with fork and vfork calls)
- Debugging Core Files
- Printing the Execution Path Entries for the Current Frame or Thread
- Invoking GDB Before a Program Aborts
- Aborting a Command Line Call
- Instruction Level Stepping
- Enhanced support for watchpoints and breakpoints
- Debugging support for shared libraries
- Language support
- Enhanced Java Debugging Support
- Commands for Examining Java Virtual Machine(JVM) internals
- Support for stack traces in Java, C, and C++ programs
- Support for 64-bit Java, C, aC++ stack unwinding
- Enhanced support for C++ templates
- 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
- Support for output logging
- Getting information from a non-debug executable
- Debugging optimized code
- Visual Interface for WDB
- Starting and stopping Visual Interface for WDB
- Navigating the Visual Interface for WDB display
- Specifying foreground and background colors
- Using the X-window graphical interface
- Using the TUI mode
- Changing the size of the source or debugger pane
- Using commands to browse through source files
- Loading source files
- Editing source files
- Editing the command line and command-line history
- Saving the contents of a debugging session to a file
- Support for ddd
- Support for XDB commands
- GNU GDB Logging Commands
- Support for command line calls in a stripped executable
- Displaying the current block scope information
- Linux support
- The HP-UX Terminal User Interface
- XDB to WDB Transition Guide
- By-function lists of XDB commands and HP WDB equivalents
- Overall breakpoint commands
- XDB data formats and HP WDB equivalents
- XDB location syntax and HP WDB equivalents
- XDB special language operators and HP WDB equivalents
- XDB special variables and HP WDB equivalents
- XDB variable identifiers and HP WDB equivalents
- Alphabetical lists of XDB commands and HP WDB equivalents
- Controlling GDB
- Canned Sequences of Commands
- Using GDB under gnu Emacs
- GDB Annotations
- The gdb/mi Interface
- Function and purpose
- Notation and terminology
- gdb/mi Command Syntax
- gdb/mi compatibility with CLI
- gdb/mi output records
- gdb/mi command description format
- gdb/mi breakpoint table commands
- gdb/mi Data manipulation
- gdb/mi program control
- Miscellaneous GDB commands in gdb/mi
- gdb/mi Stack Manipulation Commands
- gdb/mi Symbol query commands
- gdb/mi Target Manipulation Commands
- gdb/mi thread commands
- gdb/mi tracepoint commands
- gdb/mi variable objects
- Reporting Bugs in GDB
- Installing GDB
- Index
x Debugging with GDB
20 GDB Annotations . . . . . . . . . . . . . . . . . . . . . . 261
20.1 What is an annotation?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
20.2 The server prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
20.3 Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
20.4 Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
20.5 Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
20.6 Annotation for GDB input . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
20.7 Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
20.8 Information on breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
20.9 Invalidation notices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
20.10 Running the program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
20.11 Displaying source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
20.12 Annotations We Might Want in the Future. . . . . . . . . . . . 268
21 The gdb/mi Interface . . . . . . . . . . . . . . . . . . . 269
Function and purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Notation and terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
21.1 gdb/mi Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
21.1.1 gdb/mi Input syntax . . . . . . . . . . . . . . . . . . . . . . . . 269
21.1.2 gdb/mi Output syntax . . . . . . . . . . . . . . . . . . . . . . 270
21.1.3 Simple examples of gdb/mi interaction. . . . . . . . 272
21.2 gdb/mi compatibility with CLI . . . . . . . . . . . . . . . . . . . . . . . 272
21.3 gdb/mi output records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
21.3.1 gdb/mi result records . . . . . . . . . . . . . . . . . . . . . . . 273
21.3.2 gdb/mi stream records . . . . . . . . . . . . . . . . . . . . . . 273
21.3.3 gdb/mi out-of-band records . . . . . . . . . . . . . . . . . . 273
21.4 gdb/mi command description format . . . . . . . . . . . . . . . . . . 274
21.5 gdb/mi breakpoint table commands . . . . . . . . . . . . . . . . . . . 275
21.6 gdb/mi Data manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
21.7 gdb/mi program control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
21.8 Miscellaneous GDB commands in gdb/mi. . . . . . . . . . . . . . 304
21.9 gdb/mi Stack Manipulation Commands . . . . . . . . . . . . . . . 306
21.10 gdb/mi Symbol query commands . . . . . . . . . . . . . . . . . . . . 311
21.11 gdb/mi Target Manipulation Commands . . . . . . . . . . . . . 314
21.12 gdb/mi thread commands . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
21.13 gdb/mi tracepoint commands. . . . . . . . . . . . . . . . . . . . . . . . 321
21.14 gdb/mi variable objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
22 Reporting Bugs in GDB . . . . . . . . . . . . . . . . 327
22.1 Have you found a bug? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
22.2 How to report bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Appendix A Installing GDB . . . . . . . . . . . . . . . . 331
A.1 Compiling GDB in another directory . . . . . . . . . . . . . . . . . . . 332
A.2 Specifying names for hosts and targets . . . . . . . . . . . . . . . . . 333
A.3 configure options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334