The C++ Debugging Support library is a debug output and memory allocation support tool that operates using an ostream-based interface.
One of the key features of the C++ Debugging Support library is its support for ostream-based debug output, custom debug channels and devices, memory allocation debugging, run-time sourcefile:linenumber information, and demangled type names of variables. Plus, it's completely thread-safe!
But that's not all. Here are some more highlights:
- End-users of an application don't need to install libcwd.
- Namespaces prevent name collisions between debug channels of different libraries.
- Debug channels and devices can be turned off or on for each thread as necessary.
- All debug code can be omitted from the executable by not defining a single CWDEBUG macro. This results in cleaner and more surveyable code.
- Debug output is written to an ostream and is type-safe and customizable.
- An arbitrary number of debug channels and debug devices can be created without any penalty in terms of CPU usage.
- Full support for all forms of iterative and recursive calls.
- Debug output is highly customizable, thanks to features like margin strings, marker strings, indentation, and fixed-width channel labels.
- You can print the type of arbitrary variables in demangled form and print addresses in source file:line number presentation.
- Deallocation pointer validation, magic numbers around allocated memory blocks, and current memory allocation overviews are all supported.
In addition to all these features, the new release of Libcwd comes with some important updates. An issue with libcwd_r has been fixed, making it safer for threaded use. This version also adds support for sparc64 and updates support for the latest SVN version of gcc (4.3).
Overall, if you're a C++ developer looking for a powerful and reliable debugging tool, Libcwd is definitely worth checking out.