Debugging Fortran with Allinea DDT
Allinea DDT is fast, powerful and comprehensive for Fortran developers on Linux.
- Rapid process control and inspection.
- Debug code that uses even the most recent standards.
- Memory debugging for hard-to-find or intermittent problems caused by memory leaks, dangling pointers, beyond-bounds array access.
- Fast navigation of complex code - with in-built editing, building and version control integration.
- Outstanding support for working on remote or cloud-based systems.
- For single threaded, multi-threaded and multi-process applications - including those running on HPC clusters such as those using MPI, client-server models and RPC.
Rapid Process Control and Inspection
- Keyboard shortcuts accelerate those common operations such as step in to, step over and step out of functions, pause, resume.
- Set breakpoints to pause at any location - or watchpoints to trigger when a variable is accessed.
- Advanced conditions and counters to pause every n'th pass or change for breakpoints and watchpoints.
- Choose to pause at fork or exec, exit or abort, or for specific signals such as floating point exceptions.
- Windows show local variables, current lines, or expressions - and see variable values as tooltips in the source code.
- Navigate complex stacks with the stacks view that groups threads and processes by stack traces.
Debugging derived types, allocatable arrays and pointers
DDT lets you see variables quickly and understand the most complex data structures:
- View variables and expressions - and watch as they change as you move through your code with automatic change highlighting.
- Browse user defined types, modules, variables and multi-dimensional arrays.
- Access pointers and allocatable memory - and use memory debugging to find out where an array was allocated and how large the allocation is.
DDT is the only Fortran debugger that has been designed to handle the large data sets of scientific computing. It can display large arrays - even when distributed on multiple processes - and filter, including for intrinsics such as IsNan.
Allocated (heap) memory is often behind random and difficult to catch bugs. DDT's built-in fast memory debugger can spot these problems automatically.
- Instantly stops on 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.
- Allocatable memory - arrays allocated with allocatable - and pointers.
- Navigate even the largest codes with rapid search of files and functions.
- Key GUI components are connected to let you navigate to the relevant source easily.
- Edit the code within your debugging session - and build and commit to your version control system.
- Working on remote systems or in the cloud? Connect from your laptop with native Mac, Windows and Linux clients with the free native remote client - no more laggy X connection forwarding!
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.
- 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.
If you work with multiple processes and threads, through libraries like MPI or OpenMP, or with client-server and RPC style applications, DDT makes it easy.
Control threads and processes individually and collectively
- Set breakpoints on groups of 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
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:
Read more about sparklines in our blog.