mpatrol 1.4.8 review

by on

The mpatrol library is a powerful debugging tool that attempts to diagnose run-time errors that are caused by the wrong use of dynami

License: LGPL (GNU Lesser General Public License)
File size: 0K
Developer: Graeme Roy
0 stars award from

The mpatrol library is a powerful debugging tool that attempts to diagnose run-time errors that are caused by the wrong use of dynamically allocated memory. It acts as a malloc() debugger for debugging dynamic memory allocations, although it can also trace and profile calls to malloc() and free() too. If you don't know what the malloc() function or operator new[] do then this library is probably not for you. You have to have a certain amount of programming expertise and a knowledge of how to run a command line compiler and linker before you should attempt to use this.

Along with providing a comprehensive and configurable log of all dynamic memory operations that occurred during the lifetime of a program, the mpatrol library performs extensive checking to detect any misuse of dynamically allocated memory. All of this functionality can be integrated into existing code through the inclusion of a single header file at compile-time. On UNIX and Windows platforms (and AmigaOS when using GCC) this may not even be necessary as the mpatrol library can be linked with existing object files at link-time or, on some platforms, even dynamically linked with existing programs at run-time.

All logging and tracing output from the mpatrol library is sent to a separate log file in order to keep its diagnostics separate from any that the program being tested might generate. A wide variety of library settings can also be changed at run-time via an environment variable, thus removing the need to recompile or relink in order to change the library's behaviour.

A file containing a summary of the memory allocation profiling statistics for a particular program can be produced by the mpatrol library. This file can then be read by a profiling tool which will display a set of tables based upon the accumulated data. The profiling information includes summaries of all of the memory allocations listed by size and the function that allocated them and a list of memory leaks with the call stack of the allocating function. It also includes a graph of all memory allocations listed in tabular form, and an optional graph specification file for later processing by the dot graph visualisation package.

A file containing a concise encoded trace of all memory allocations and deallocations made by a program can also be produced by the mpatrol library. This file can then be read by a tracing tool which will decode the trace and display the events in tabular or graphical form, and also display any relevant statistics that could be calculated.

The mpatrol library has been designed with the intention of replacing calls to existing C and C++ memory allocation functions as seamlessly as possible, but in many cases that may not be possible and slight code modifications may be required. However, a preprocessor macro containing the version of the mpatrol library is provided for the purposes of conditional compilation so that release builds and debug builds can be easily automated.

What's New in This Release:
Added better logging for diagnostic messages.
Added much-improved autoconf, automake and libtool support.
Added provisional HTML log file support with the HTML option.
The library now checks to ensure that there were not any problems writing the profiling and tracing output files.
Added better Tru64 thread-safe support.
Fixed a problem locating symbols for the a.out object file format.
Fixed diagnostics for the number of symbols read from Windows DLLs.
Fixed a bug which calculated the wrong total size of marked allocations.
The mpatrol command now has the --read-env option for using the existing contents of the MPATROL_OPTIONS environment variable.
The mpsym command now autodetects 64-bit support and now has the --skip option.
The source code now compiles properly on BSD systems.

mpatrol 1.4.8 keywords