C++ Debugging Support library 1.0.0
C++ Debugging Support library is a ostream-based debug output and memory allocation debug support library.
C++ Debugging Support library includes 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. It is thread-safe.
Here are some key features of "Cplusplus Debugging Support library":
· End-users of an application don't need to install libcwd.
· The use of namespaces prevents name collisions between debug channels of different libraries.
· Debug channels and devices can be turned on or off on a per thread basis.
· All debug code can be omitted from the executable by not defining a single CWDEBUG macro.
· Code using libcwd looks clean and is surveyable as a result of using a few well-defined macros, avoiding the need of disturbing #ifdef CWDEBUG ... #endif constructs.
· Debug output is written to an ostream and as such type-safe and customizable as is usual for C++ ostreams.
· 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 surveyable as a result of several possibilities to format the output, like a margin string, a marker string, indentation and fixed-width channel labels. All formatting is thread specific.
· Printing the type of arbitrary variables in demangled form.
· Printing addresses in source file:line number presentation.
· Deallocation pointer validation.
· Magic numbers around allocated memory blocks in order to detect buffer overruns.
· Printing an overview of current memory allocations, including start address, size, type of allocated object, source file and line number of allocation and a user definable description.
· Finding allocation information with only a pointer that points inside an allocated memory block, in logarithmic time.
What's New in This Release:
· An important bug has been fixed for the threaded case: libcwd_r uses several pthread_mutexattr_t objects, but never initialized those.
· This resulted in uninitialized memory being used, resulting in random mutex attributes.
· This is believed to be the reason that gcc-3.x locked up.
· That version of gcc is therefore now supported again.
· This version adds support for sparc64.
· All configure options now work also on 64-bit platforms.
· Support for the latest SVN version of gcc (4.3) was updated.