How to install the tracing functionality
........................................
- Function: void mtrace (void)
When the `mtrace' function is called it looks for an environment
variable named `MALLOC_TRACE'. This variable is supposed to
contain a valid file name. The user must have write access. If
the file already exists it is truncated. If the environment
variable is not set or it does not name a valid file which can be
opened for writing nothing is done. The behavior of `malloc' etc.
is not changed. For obvious reasons this also happens if the
application is installed with the SUID or SGID bit set.
If the named file is successfully opened, `mtrace' installs special
handlers for the functions `malloc', `realloc', and `free' (Note:Hooks for Malloc). From then on, all uses of these functions
are traced and protocolled into the file. There is now of course
a speed penalty for all calls to the traced functions so tracing
should not be enabled during normal use.
This function is a GNU extension and generally not available on
other systems. The prototype can be found in `mcheck.h'.
- Function: void muntrace (void)
The `muntrace' function can be called after `mtrace' was used to
enable tracing the `malloc' calls. If no (successful) call of
`mtrace' was made `muntrace' does nothing.
Otherwise it deinstalls the handlers for `malloc', `realloc', and
`free' and then closes the protocol file. No calls are
protocolled anymore and the program runs again at full speed.
This function is a GNU extension and generally not available on
other systems. The prototype can be found in `mcheck.h'.