C, C++, Fortran and F90 debugger for parallel and threaded Linux code - Allinea DDT

Debugger Features and Benefits

Allinea DDT makes debugging faster and gives developers the break they need to deliver software on time. The comprehensive debugger for C, C++, Fortran and F90 multi-process and multi-threaded applications:

  • Debugs native Linux applications, including those running on more than one server - such as on HPC clusters using MPI.
  • Controls processes and threads - step through program execution, stop on variable changes, errors and at user inserted breakpoints.
  • Has market leading memory debugging to detect hard-to-find or intermittent problems caused by memory leaks, dangling pointers, beyond-bounds array access.
  • Has powerful and extensible C++ STL debugging to view STL containers intuitively.
  • Shows variables and arrays across multiple processes and detects changes automatically.
  • Provides In-built editing, building and version control integration - with outstanding support for working on remote systems.
  • Has an Offline mode for debugging non-interactively and recording application behavior and state.

Request a live demo Try now Buy now

Powerful, scalable, multi-process, multi-threaded debugging

If you work with multiple processes and threads, through libraries like MPI or OpenMP, Allinea DDT makes concurrency easy.

Control threads and processes individually and collectively

  • Set breakpoints on groups of MPI processes, and all or individual threads (OpenMP and pthreads).
  • Step or play processes and threads individually or en-masse.
  • Create groups of processes based on variable/expression values, current code location or process state.

See state and differences between processes and threads easily

DDT has unique data aggregation and difference-highlighting views that automatically compare and contrast program state so it's quicker to handle multiple contexts.

Screenshot of multiple process debugging

The parallel stack view gives a scalable view of thread and process stacks - from a handful of processes and threads to hundreds of thousands - it groups stacks to highlight the differences that can indicate divergence - ideal for MPI, OpenMP, pthreads, CUDA and OpenACC debugging.

Screenshot of sparkline plots of variables from different processes

Unusual data values and changes are seen instantly with smart highlighting and sparklines - thumbnail-plots that show values of variables across every process. Read more about sparklines in our blog. Additional cross-process and thread comparison tools help to group or search data.

DDT also makes it easier to understand the types of bugs that multi-process codes can introduce.

MPI Message Queue Debugging

  • Diagnose deadlocks, livelocks and message synchronization errors with both graphical and table-based message queue displays for MPI.
  • Integration support for open-source MPI correctness tools.

Above all, it's tried and tested at scale - with lightning-fast performance even at the extreme: step and display 700,000 processes in a fraction of a second.

Data Browsing for C, C++ and F90 structures and classes

Displaying C++ STL types

We know it's essential to see variables quickly and understand the most complex data structures - and with Allinea DDT you can.

  • View variables and expressions - and watch as they change as you debug through your code with automatic change detection
  • Browse through variables, objects, modules and complex C++ classes, structs or F90 derived type data structures and multi-dimensional arrays.
  • Dereference pointers or find addresses of objects - and use memory debugging to find out where a pointer was allocated and how large the allocation is.
  • Extensible intelligent display of complex data structures such as C++ and C++11 STL, Boost and Qt data containers - including list, set, map, multimap, QString and many more.
  • Add support for your own custom data types to show only the data you care about.
  • Set watchpoints to stop when data is read or written by any process.

Memory Debugging

Screenshot from memory debugging with Allinea DDTDDT's built-in fast memory debugger reveals problems in heap (allocated) memory usage automatically.

  • Instantly stops on exceptions and crashes – identify the source and data behind any crash with an easy to use comprehensive interface to application state.
  • Catch out-of-bounds data access as soon as it occurs.
  • Consign memory leaks to history: leak reports detail the source locations that are responsible for the memory allocation.
  • Supports custom allocators - so that allocation locations are reported at the level that matters to your application.
  • Check for dangling pointers.
  • Examine a pointer - check if it is valid and and view the full stack of where it was allocated - and how large its allocation is.
  • C, C++ memory allocated with malloc, new and similar
  • Fortran or F90 allocatable memory and pointers.

Read More about Memory Debugging

Powerful navigation, edit, build and version control - in a comprehensive toolsuite

It's natural to want to improve the speed of code after removing the bugs. That's why Allinea DDT is part of Allinea Forge. DDT is available separately or in an Allinea Forge license that includes the leading Linux parallel and threaded code profiler, Allinea MAP. MAP shares the same user interface and installation as DDT - which means it is easy to switch to profile a code once debugging is complete.

The powerful user interface allows developers to edit, build and commit whilst debugging - and much more! The development capabilities in Allinea DDT and Allinea Forge are explored in the Allinea Forge features page.

Working on remote systems? Connect from your laptop with native Mac, Windows and Linux clients with the free native remote client - no more laggy X connection forwarding!

Thinking smarter about solving bugs

We've put time into debugging so that you don't have to.  Allinea DDT integrates the best practice to help you spot the causes of problems more quickly.

Screenshot of static analysis integrated in Allinea DDT debugger

  • Catch common errors at source with built-in static analysis for C, C++ and Fortran - which warns about bugs before you've even hit them.
  • Why does this revision of my code behave differently to the previous one?  Version control integration highlights recent changes - and allows you to see why and where changes have been introduced.
  • A single command in Allinea DDT will automatically log the values of variables across all processes at each changed section of code, allowing you to track down exactly how and why a particular change introduced problems to your code.

To help you manage your progress during debugging our logbook provides a handy record of the steps you've taken and the things that have been observed.

  • Automatic, always-on logging of your debugging activity so that it’s easy to go back and review the evidence for things you might have missed at the time.
  • Share logbooks with others on your team, making collaborative debugging a reality.
  • Compare two traces side-by-side, to see changes between systems, versions or process counts jump right out.

Scalable printf and powerful command-line modes

Offline non-interactive debugging screenshot
Tracepoints provide scalable "printf" debugging. DDT can insert tracepoints into your code, and log values scalably each time a line of code is passed. The results are available interactively - or in the offline debugging mode.
Offline mode debugs whilst you sleep. Submit an offline debug run to your batch scheduler from the command line and receive a text or HTML error and trace report from DDT when the job is done. Read more about offline debugging in our blog.

Handles and visualizes huge data sets

DDT is designed to handle the large data sets of scientific and technical computing. It can display or filter large arrays - even when distributed on multiple processes.

Screenshot of array viewing in Allinea DDT

  • Export to industry standard data formats HDF5 and CSV.
  • Browse arrays and gather statistics – over all your processes in parallel – with powerful filtering to search petabytes in parallel.

Screenshot of VisIT toolkit and Allinea DDT

Cross-platform for the HPC architectures of today and tomorrow

Allinea DDT is cross-platform - supporting all of today's leading technical-computing platforms. It's a CUDA debugger, a parallel debugger, a multi-threaded debugger, an OpenMP debugger and a memory debugger all at the same time - and supports mixed hybrid programming models.

Intel Xeon, Intel Xeon Phi , NVIDIA CUDA , IBM BlueGene/Q, OpenPOWER, ARM 8 (64 bit)
MPI, OpenMP, CUDA , OpenACC, UPC, CoArray Fortran, PGAS Languages, pthread-based multithreading, SHMEM, OpenSHMEM
Fortran, C++, C++11, C, PGAS Languages, CoArray Fortran

View the full platform compatibility list

Request a live demo Try now Buy now