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Первая колонка сообщает о том, сколько максимально было выделено памяти для цепочки вызовов фукнций. Вторая — сколько всего было выделено памяти для цепочки.