Enable mtrace (MALLOC_TRACE) for binary

How to enable mtrace() (and MALLOC_TRACE env) for a binary program without sources?

mtrace is a glibc function: http://www.gnu.org/s/hello/manual/libc/Allocation-Debugging.html

thanks

+4
source share
1 answer

mtrace.c

 #include <mcheck.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> void __mtracer_on () __attribute__((constructor)); void __mtracer_off () __attribute__((destructor)); void __mtracer_on () { char *p=getenv("MALLOC_TRACE"); char tracebuf[1023]; if(!p) p="malloc_trace"; sprintf(tracebuf, "%s.%d", p, getpid()); setenv("MALLOC_TRACE",tracebuf, 1); atexit(&__mtracer_off); mtrace(); } void __mtracer_off () { muntrace(); } 

Compile with gcc mtrace.c -fPIC -shared -o libmmtrace.so

Run with

 MALLOC_TRACE=echo LD_PRELOAD=./libmmtrace.so /bin/echo 42 

or

 LD_PRELOAD=./libmmtrace.so /bin/echo 42 

Is it OK for you?

+14
source

Source: https://habr.com/ru/post/1306251/


All Articles