#include #include extern void *__real_malloc(size_t); static int mode = 0; static void fin(void) { if (mode > 0) fprintf(stderr, "intercept: stopped\n"); mode = 0; } static void init(void) { if (mode) return; mode = -1; atexit(fin); fprintf(stderr, "intercept: intercepting function calls\n"); mode = 1; } void *__wrap_malloc(size_t size) { init(); // before call to malloc void *ret = __real_malloc(size); // after call to malloc return ret; }