Debugging a Program With dbx Sun Microsystems



1.  Starting dbx

Starting a Debugging Session
Debugging an Existing Core File
Using the Process ID
The dbx Start-up Sequence
Setting Startup Properties
Mapping With the pathmap Command
Setting Environment Variables With the dbxenv Command
Creating Your Own dbx Commands Using the alias Command
Compiling a Program for Debugging
Debugging Optimized Code
Code Compiled Without the -g Option
Shared Libraries Require the -g Option for Full dbx Support
Completely Stripped Programs
Quitting Debugging
Stopping a Process Execution
Detaching a Process From dbx
Killing a Program Without Terminating the Session
Saving and Restoring a Debugging Run
Using the save Command
Saving a Series of Debugging Runs as Checkpoints
Restoring a Saved Run
Saving and Restoring Using replay

2.  Customizing dbx

Using the .dbxrc File
Creating a .dbxrc File
Initialization File Sample
The dbx Environment Variables and the Korn Shell
Customizing dbx in Sun WorkShop
Setting Debugging Options
Maintaining a Unified Set of Options
Maintaining Two Sets of Options
Storing Custom Buttons
Setting dbx Environment Variables With the dbxenv Command

3.  Viewing and Visiting Code

Mapping to the Location of the Code
Visiting Code
Visiting a File
Visiting Functions
Printing a Source Listing
Walking the Call Stack to Visit Code
Qualifying Symbols With Scope Resolution Operators
Backquote Operator
C++ Double Colon Scope Resolution Operator
Block Local Operator
Linker Names
Scope Resolution Search Path
Locating Symbols
Printing a List of Occurrences of a Symbol
Determining Which Symbol dbx Uses
Viewing Variables, Members, Types, and Classes
Looking Up Definitions of Variables, Members, and Functions
Looking Up Definitions of Types and Classes
Using the Auto-Read Facility
Debugging Without the Presence of .o Files
Listing Debugging Information for Modules
Listing Modules

4.  Controlling Program Execution

Running a Program
Attaching dbx to a Running Process
Detaching dbx From a Process
Stepping Through a Program
Single Stepping
Continuing Execution of a Program
Calling a Function
Using Ctrl+C to Stop a Process

5.  Setting Breakpoints and Traces

Setting Breakpoints
Setting a stop Breakpoint at a Line of Source Code
Setting a stop Breakpoint in a Function
Setting a when Breakpoint at a Line
Setting a Breakpoint in a Dynamically Linked Library
Setting Multiple Breaks in C++ Programs
Tracing Code
Setting a Trace
Controlling the Speed of a Trace
Listing and Clearing Event Handlers
Listing Breakpoints and Traces
Deleting Specific Breakpoints Using Handler ID Numbers
Faster modify Event
Setting Breakpoint Filters
Efficiency Considerations

6.  Event Management

Event Handlers
Creating Event Handlers
Manipulating Event Handlers
Using Event Counters
Setting Event Specifications
Breakpoint Event Specifications
Watchpoint Event Specifications
System Event Specifications
Execution Progress Event Specifications
Other Event Specifications
Event Specification Modifiers
Parsing and Ambiguity
Using Predefined Variables
Variables Valid for when Command
Variables Valid for Specific Events
Setting Event Handler Examples
Setting a Watchpoint for Store to an Array Member
Implementing a Simple Trace
Enabling a Handler While Within a Function (in func)
Determining the Number of Lines Executed
Determining the Number of Instructions Executed by a Source Line
Enabling a Breakpoint After An Event Occurs
Resetting Application Files for replay
Checking Program Status
Catch Floating Point Exceptions

7.  Using the Call Stack

Finding Your Place on the Stack
Walking the Stack and Returning Home
Moving Up and Down the Stack
Moving Up the Stack
Moving Down the Stack
Moving to a Specific Frame
Popping the Call Stack
Hiding Stack Frames

8.  Evaluating and Displaying Data

Evaluating Variables and Expressions
Verifying Which Variable dbx Uses
Variables Outside the Scope of the Current Function
Printing the Value of a Variable or an Expression
Printing C++
Dereferencing Pointers
Monitoring Expressions
Turning Off Display (Undisplay)
Assigning a Value to a Variable
Evaluating Arrays
Array Slicing

9.  Using Runtime Checking

Capabilities of Runtime Checking
When to Use Runtime Checking
Runtime Checking Requirements
Using Runtime Checking
Turning On Memory Use and Memory Leak Checking
Turning On Memory Access Checking
Turning On All Runtime Checking
Turning Off Runtime Checking
Running Your Program
Using Access Checking (SPARC only)
Understanding the Memory Access Error Report
Memory Access Errors
Using Memory Leak Checking
Detecting Memory Leak Errors
Possible Leaks
Checking for Leaks
Understanding the Memory Leak Report
Fixing Memory Leaks
Using Memory Use Checking
Suppressing Errors
Types of Suppression
Suppressing Error Examples
Default Suppressions
Using Suppression to Manage Errors
Using Runtime Checking on a Child Process
Using Runtime Checking on an Attached Process
Using Fix and Continue With Runtime Checking
Runtime Checking Application Programming Interface
Using Runtime Checking in Batch Mode
bcheck Syntax
bcheck Examples
Enabling Batch Mode Directly From dbx
Troubleshooting Tips
Runtime Checking's 8 Megabyte Limit
Runtime Checking Errors
Access Errors
Memory Leak Errors

10.  Data Visualization

Specifying Proper Array Expressions
Graphing an Array
Getting Ready
Multiple Ways to Graph an Array
Automatic Updating of Array Displays
Changing Your Display
Analyzing Visualized Data
Scenario 1: Comparing Different Views of the Same Data
Scenario 2: Updating Graphs of Data Automatically
Scenario 3: Comparing Data Graphs at Different Points in a Program
Scenario 4: Comparing Data Graphs from Different Runs of the Same Program
Fortran Program Example
C Program Example

11.  Fixing and Continuing

Using Fix and Continue
How fix and continue Operates
Modifying Source Using Fix and Continue
Fixing Your Program
Continuing After Fixing
Changing Variables After Fixing
Modifying a Header File
Fixing C++ Template Definitions

12.  Debugging Multithreaded Applications

Understanding Multithreaded Debugging
Thread Information
Viewing the Context of Another Thread
Viewing the Threads List
Resuming Execution
Understanding LWP Information

13.  Debugging Child Processes

Attaching to Child Processes
Following the exec Function
Following the fork Function
Interacting with Events

14.  Working With Signals

Understanding Signal Events
Catching Signals
Changing the Default Signal Lists
Trapping the FPE Signal
Sending a Signal in a Program
Automatically Handling Signals

15.  Debugging C++

Using dbx with C++
Exception Handling in dbx
Commands for Handling Exceptions
Examples of Exception Handling
Debugging With C++ Templates
Template Example
Commands for C++ Templates

16.  Debugging Fortran Using dbx

Debugging Fortran
Current Procedure and File
Uppercase Letters
Optimized Programs
Sample dbx Session
Debugging Segmentation Faults
Using dbx to Locate Problems
Locating Exceptions
Tracing Calls
Working With Arrays
Fortran 95 Allocatable Arrays
Showing Intrinsic Functions
Showing Complex Expressions
Showing Logical Operators
Viewing Fortran 95 Derived Types
Pointer to Fortran 95 Derived Type

17.  Debugging at the
Machine-Instruction Level

Examining the Contents of Memory
Using the examine or x Command
Using the dis Command
Using the listi Command
Stepping and Tracing at Machine-Instruction Level
Single Stepping at the Machine-Instruction Level
Tracing at the Machine-Instruction Level
Setting Breakpoints at the Machine-Instruction Level
Setting a Breakpoint at an Address
Using the adb Command
Using the regs Command
Platform-Specific Registers
Intel Register Information

18.  Using dbx With the Korn Shell

ksh-88 Features Not Implemented
Extensions to ksh-88
Renamed Commands

19.  Debugging Shared Libraries

Dynamic Linker
Link Map
Startup Sequence and .init Sections
Procedure Linkage Tables
Debugging Support for Preloaded Shared Objects
Fix and Continue
Setting a Breakpoint in a Dynamically Linked Library

A.  Modifying a Program State

Impacts of Running a Program Under dbx
Commands That Alter the State of the Program
assign Command
pop Command
call Command
print Command
when Command
fix Command
cont at Command


Sun Microsystems, Inc.
Copyright information. All rights reserved.
Library   |   Contents   |   Previous   |   Next   |   Index