Next: Using the Memory Debugger, Up: Allocation Debugging
When the
mtracefunction is called it looks for an environment variable namedMALLOC_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 ofmallocetc. 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,
mtraceinstalls special handlers for the functionsmalloc,realloc, andfree(see 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.
The
muntracefunction can be called aftermtracewas used to enable tracing themalloccalls. If no (successful) call ofmtracewas mademuntracedoes nothing.Otherwise it deinstalls the handlers for
malloc,realloc, andfreeand 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.