CodeDynamics supports these key technologies:
- Laptops and workstations
- C and C++: Comprehensive support for templates and standard template libraries
- Multithreaded and multiprocesses: Debugging multithreaded applications with pthreads
- CodeDynamics provides powerful functionality to make debugging as easy as possible
- Data visualization: Visibility into program data and variables
- Type transformation: Transform your custom data structures into a simpler form for debugging
- Advanced memory debugging: Dynamic memory debugging features
- Unattended batch debugging
- Reverse debugging: Record and replay, debugging race conditions and deadlocks in Linux applications
- Platform support: Linux x86-64, MAC OSX, ARM64 (early access)
C and C++ debugging and troubleshooting
C and C++ give you control over the details of data, access patterns, memory management, and execution. But direct control over low level machine behavior leaves little margin for error when it comes to building and maintaining scalable scientific applications. CodeDynamics provides the ideal environment for troubleshooting complex C and C++ applications. They feature detailed views of objects, data structures, and pointers, simplifying working with complex objects.
The standard template library (STL) collection classes simplify the way you manipulate your program's data, but they complicate troubleshooting when your program hangs or crashes. CodeDynamics type transformation facility (TTF) provides a flexible way for you to provide alternate displays for data objects. STLView transformations provide a logical view of STL collection class objects, providing a more practical view of list data. The end result is a simplified, intuitive view into the structure and behavior of your code.st data. The end result is a simplified, intuitive view into the structure and behavior of your code.
Data visualization for understanding application behavior, computational data, and patterns
Most of the applications you are developing are engines for manipulating data. Whether observational or computational, it is the data that you really care about. When you are trying to develop insight into the behavior of a physical system you approach it quantitatively. The same approach is necessary when trying to understand the behavior of computational systems.
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.
Debugging memory leaks and malloc errors
The fact that memory is a limited resource has a significant impact on the implementation of your application, especially when it contains millions of lines of code. As program complexity grows, memory leak debugging and troubleshooting malloc errors become more difficult. Memory-related code defects can cause out-of-control resource and random data corruption. Memory errors can also manifest themselves as random program crashes, negatively impacting productivity. In a worst-case scenario, memory errors can result in corrupted data causing programs to generate inaccurate results. CodeDynamics helps you manage that risk by ensuring working code and accurate results.
Multithreaded applications / multicore architectures
The era of increasing clock rates has ended. Processor architectures are characterized by multicore and many-core designs. Building a multithreaded application or transitioning from a serial application to a parallel application presents significant challenges. CodeDynamics and ReplayEngine are natively built to help you manage the challenges presented by concurrency, parallelism, and threads.
Race conditions are a common problem, even in a well-tested multithreaded application. You can use locks, semaphores, and atomic operations to avoid race conditions, but they can introduce subtle problems of their own. Our tools provide visibility into the behavior of your code, increasing your understanding of the impact of these problems.
Unattended batch debugging
CodeDynamics unattended batch debugging script, TVScript, is a framework for non-interactive debugging with CodeDynamics. You define a series of events that may occur within the target program, TVScript loads the program under its control, sets breakpoints as necessary, and runs the program. At each program stop, TVScript gathers data which is logged to a set of output files for your review when the job has completed. If you call TVScript with no arguments, it provides usage guidelines and a listing of available events and actions. TVScript has been likened to printf on steroids.
Learn more about our capabilities.
Open Source Support
Resolve open source issues ranging from package selection and setup to integration and production problems with expert, commercial-grade technical support.
See how we help
Deliver sophisticated analytics without worrying about the underlying algorithms by embedding proven modeling, forecasting, and optimization functions within your apps.
Protect your software against security risks by detecting vulnerabilities within code and during runtime. With advanced static code analysis, runtime debugging, predictive analytics, and open source scanning, you’re covered.
Strengthen your code