// QMP2

QMP2 — quick memory profile.

Это небольшой профайлер, показывающий использование памяти в различных частях программы. Работает как обертка над malloc/free функциями. Компилируется gcc пока только на 32 битных платформах.

Вытаскиваем и собираем код:

$ svn checkout http://qmp2.googlecode.com/svn/branches/alpha qmp2
A    qmp2/qmp2
A    qmp2/alloc_hook.c
A    qmp2/Makefile
 U   qmp2
Checked out revision 18.
 
$ cd qmp2/
 
$ make
cc -o alloc_hook.o -c -g -m32 -Wall -fPIC alloc_hook.c
cc -shared -m32 -o libqmp2.so alloc_hook.o -lc
 
$ ls
alloc_hook.c  alloc_hook.o  libqmp2.so  Makefile  qmp2

Теперь попробуем qmp2 в действии на примере:

#include <stdlib.h>
 
int main()
{
    int   i;
    void *p;
 
    for (i = 0; i < 16; i++) {
        p = malloc(sizeof(void *));
        free(p);
    }
 
    return 0;
}

Наш испоняемый фал называется a.out, запускаем на нем qmp2:

$ ./qmp2 ./a.out
4 64 | ::main::_start
44 44 | ::_start

Первая колонка сообщает о том, сколько максимально было выделено памяти для цепочки вызовов фукнций. Вторая — сколько всего было выделено памяти для цепочки.