Why not make a generic add-on library for debugging memory? Then in most cases there would be no reason for anyone to use those new functions. They would instead use the add-on library interface. You could then debug everything that uses al_malloc(); and get whatever information you need...
Not sure if this is relevant, but something I did a while back for debugging in windows was to create a header file that would override all libc functions that allocated, reallocated or freed memory (but I may have missed some). As long as the header file was included after all other header files it captures all allocations of memory...
It would put everything into a sort of garbage collector. If the program exited without freeing all the allocated memory then it would dump a list of each leak. The dump included the source file and line where it was allocated, the size in bytes and even a short memory dump of each memory leak.
It's a crude hack for a specific project/purpose, but I attached it in case it inspires anyone... May need a little modification to work for you, like removal of cbuf/fifo stuff, but it should work should you decide to hack it...
Just define these in leak.c and it should compile
// Also comment these out!
#define OMF_DEBUG_FILE_NAME "omfdebug.txt"
Then add 'atexit(debug_atexit);' in your 'main()'.
Arg... I must be bored...