DDT
Describes how to use Arm® DDT.
Get started with DDT
Prepare a program for debugging
Express Launch (DDT)
Run dialog box
Run a program
Application
MPI
OpenMP
CUDA
ROCM
Memory debugging
Environment variables
Plugins
Run the program
End the session
remote-exec
required by some MPIs (DDT)
Open core files
Procedure
Next steps
Attach to running programs
Automatically-detected jobs
List of all processes
Choose hosts
Use command-line arguments
Debug single-process programs
About this task
Procedure
Next steps
Debug OpenMP programs
Debug MPMD programs
About this task
Procedure
Example: Compatibility mode
Manual launch of multi-process non-MPI programs
About this task
Procedure
Results
Next steps
Start a job in a queue
Job scheduling with jsrun
Use custom MPI scripts
Start DDT from a job script
Procedure
Numactl (DDT)
MPI and SLURM
Non-MPI Programs
Python debugging
About this task
Procedure
DDT user interface
Save and load sessions
Source code
Source code viewer
View source code
Edit source code
Rebuilding and restarting
Committing changes
Assembly debugging
Enable assembly debugging
Breakpoints
Project Files
Application Code and External Code
Finding lost source files
Find Files or Functions
Find code or variables
Find code or variables in files
Go To Line
Navigate through source code history
Static analysis
Version control information
Control program execution
Process control and process groups
Detailed view
Summary view
Focus control
Process group viewer
Breakpoints tab
Source Code viewer
Parallel Stack View
Playing and stepping
Step threads together
Start, stop, and restart a program
Step through a program
Stop messages
Set breakpoints
Use the Source Code viewer
Use the Add Breakpoint window
Pending breakpoints
Conditional breakpoints
Suspend breakpoints
Delete breakpoints
Load and save breakpoints
Default breakpoints
Synchronize processes
Set watchpoints
Tracepoints
Set tracepoints
Tracepoint output
Version control breakpoints and tracepoints
Examine the stack frame
Align stacks
View stacks in parallel
Browse source code
View multiple files simultaneously
Signal handling
Custom signal handling (signal dispositions)
Send signals
Variables and data
Variables window
Sparklines
Current line
Local variables
Arbitrary expressions and global variables
Fortran intrinsics
Changing the language of an expression
Macros and #defined constants
Edit variables
Help with Fortran modules
View complex numbers in Fortran
C++ STL support
Custom pretty printers
View array data
Fortran Array
Flexible Array
UPC support
Change data values
View numbers in different bases
Examine pointers
Multi-dimensional arrays in the Variable View
Multi-Dimensional Array Viewer (MDA)
Array expression
Filter by value
Distributed arrays
Advanced: how arrays are laid out in the data table
Auto update
Compare elements across processes
Statistics tab
Export
Visualization
Cross-process and cross-thread comparison
Assign MPI ranks
View registers
Process details
Disassembly
Interact directly with the debugger
Program input and output
View standard output and error
Save output
Send standard input
Logbook
Usage
Annotation
Logbook comparison
Message queues
View message queues
Interpret message queues
Deadlock
Memory debugging
Enable memory debugging
CUDA memory debugging
PMDK memory debugging
Memory debugging options
Static linking
Available checks
Change settings at run time
Pointer error detection and validity checking
Library usage errors
View pointer details
Cross-process comparison of pointers
Writing beyond an allocated area
Fencepost checking
Suppress an error
Node memory threshold detection
Usage
Offline usage
Current memory usage
Detect leaks when using custom allocators/memory wrappers
Memory Statistics
Use and write plugins
Supported plugins
Install a plugin
Use a plugin
Write a plugin
Plugin reference
GPU debugging
Control GPU threads
GPU breakpoints
Stepping
Running and pausing
Examine GPU threads and data
Select GPU threads
View GPU thread locations
Kernel Progress View
Source Code viewer
GPU devices information
Attach to running GPU programs
NVIDIA GPU debugging
CUDA licensing
Prepare to debug CUDA GPU code
Launch the program
NVIDIA GPU Breakpoints
Open CUDA core files
Known issues and limitations
Debug multiple NVIDIA GPU processes
Thread control
Debug multiple GPU processes on Cray
Notes
NVIDIA GPU language support
Cray OpenACC
PGI/NVIDIA HPC OpenACC and CUDA Fortran
IBM XLC/XLF with offloading OpenMP
ROCm GPU debugging
ROCm licensing
Prepare to debug ROCm code
Launch the program
AMD GPU Breakpoints
Known issues and limitations
AMD GPU language support
ROCmCC with offloading OpenMP
Cray with offloading OpenMP
Offline debugging
Use offline debugging
Read a file for standard input
Write a file from standard output
Offline report HTML output
Messages
Tracepoints
Memory Leak Report
Output
Offline report plain text output
Run-time job progress reporting
Periodic snapshots
Signal-triggered snapshots