Selecting the right dynamic analysis tool for your team depends on your team requirements, language support, and platform availability. Use this feature comparison chart to determine if TotalView or CodeDynamics is right for your environment.
CodeDynamics supports these key technologies:
C and C++ allow control over data, access patterns, memory management, and execution. But direct control over behavior leaves little margin for error when building and maintaining scalable applications. CodeDynamics provides the environment for troubleshooting C and C++ applications, featuring detailed views of objects, data structures, and pointers. Ability to record and save session session to allow for interactive debug. Support for recreating QA scenarios.
The standard template library (STL) collection classes simplify manipulation of program data, but complicates troubleshooting when your program crashes. CodeDynamics type transformation facility (TTF) provides alternate displays for data objects. STLView transformations includes a logical view of STL collection class objects, for a more useful view of list data. The result is a simplified, intuitive view into the structure of your data.
Mixed Language Debugging with Python and C/C++
Many developers are leveraging the power of Python to develop applications and calling into C/C++ code to perform compute intensive tasks or access existing algorithms. Debugging across the language barriers can be challenging but CodeDynamics makes this easy by showing you a fully integrated call stack across the language barriers and allows all the Python and C/C++ variables and their values to be inspected. No other debugger makes it this easy for you to understand, diagnose and fix your mixed language Python and C/C++ applications! Learn more!
Troubleshooting involves exploring the behavior of a live application, looking for clues as to why the computation is not proceeding as expected, slicing the data presented in different ways to uncover patterns. It is critical that you have the tools that make it easy to view and manipulate that data, and CodeDynamics helps streamline this process.
Memory, as a limited resource, has a significant impact on your application. As program complexity grows, memory leak debugging and troubleshooting malloc errors become more difficult. Memory-related code defects cause out-of-control resource and random data corruption. Memory errors manifest themselves as random program crashes. In a worst-case scenario, memory errors result in corrupted data causing programs to generate inaccurate results. CodeDynamics helps you manage that risk by finding memory corruption.
Processor architectures are characterized by multicore and many-core designs. Building a multithreaded application or transitioning from a serial to a parallel application presents challenges. CodeDynamics is built to help manage the challenges presented by parallelism.
Race conditions are a common problem. Using locks, semaphores, and atomic operations help avoid race conditions, but introduce subtle problems. Our tools provide visibility into the behavior of your code, increasing your understanding of the impact of these problems.
CodeDynamics includes a scripting language, TVScript. Define a series of events that may occur, and TVScript loads the program, sets breakpoints, and runs the program. At each program stop, TVScript gathers data in output files for review after the job has completed. TVScript has been likened to printf on steroids.