Improved debugging for complex C/C++ and HPC applicationsBill Burns | November 14, 2017
When talking with C, C++, and Fortran developers, we continue to see trends of applications becoming more complex, larger, using more threads and increasing their use of multiple languages within one application.
With the 2017.3 release:
• CodeDynamics continues to improve its dynamic analysis and debugging abilities providing very strong features for debugging complex C and C++ multithreaded code.
• TotalView continues to expand and improve its abilities as a leading HPC debugger.
Let’s look at the new features and improvements in 2017.3 and how they’ll help your development group quickly diagnose and fix problems in your code.
Better debugging of optimized applications with debug information
As applications continue to grow both in size and complexity, developers are finding that if they built the application unoptimized and with debug information execution, it’s too slow when they try to debug the application. More and more we are seeing customers build applications optimized and with debug information. Building applications this way creates a complex scenario for the debugger as it follows the optimized code paths and locates optimized variables. As with prior releases, TotalView and CodeDynamics 2017.3 continues to bring further improvements for debugging optimized code including better handling of inline functions and locating variables.
More efficient control of program execution with TotalView evaluation points
TotalView evaluation points provide developers the ability to dynamically execute a small snippet of code at a location in code during the program's execution. The code snippet can perform logic to determine if execution should be halted, print a value of a variable or test a code patch for broken application logic without rebuilding the application. When debugging remote processes, such as in an MPI application, TotalView has typically executed all evaluation points on the “front-end” portion of the debugger but with the 2017.3 release TotalView compiles almost all the evaluation point snippets for execution on the remote debugger server. This improves debugging performance by allowing the snippets to be executed in parallel across the debugger servers and reduces network communication between the front-end debugger and remote debuggers. For the developer, this equates to a faster-debugging experience enabling you to analyze and resolve issues in code faster!
Better mixed language debugging with Python and C/C++
Beginning with TotalView and CodeDynamics 2017.2, and improved in 2017.3 was the support for debugging Python applications to call out to C/C++ Python extensions. This feature is a huge time saver for understanding the call sequences between the languages and examining the data passed between the language barriers. Benefiting from the optimized code and inline debugging improvements, CodeDynamics can now debug the python executable directly on the system without having to prepare a special debug build of the interpreter. Check out The challenge – Debugging Python and C/C++ applications for more information about the Python debugging feature.
Utilize leak detection and reverse debugging within your CI process
Continuous integration (CI), the process of frequently integrating changes from the development into the existing code repository and automatically triggering a build and test of the new changes, has enabled development teams to avoid major integration and merge headaches and resulted in the routine production of a quality build of the product. In this release, we provide several how-to articles, scripts, and examples so you can learn how to integrate leak detection and leverage the power of reverse debugging to quickly solve test failures within your CI process. These are available in the examples/CIExamples of the product installation directory.
And there’s more!
Release 2017.3 brings support for CUDA 9, macOS High Sierra, Fedora 26, and GCC 7.1 to both TotalView and CodeDynamics.
The CodeDynamics’ UI has been improved with added for conditional watchpoints, the ability to modify properties on any action point. You’ll also be able to access this functionally by trying out the new UI in TotalView, simply supply the -newUI switch at startup.
We continue to improve the search algorithm for finding files and functions in you program.