2008年2月26日火曜日

mtrace

[indou@std tstPrg030]$ cat free.c
#include
#include
#include
#include
int main() {
char *buf1, *buf2;
mtrace();
buf1=(char *)malloc(10);
buf2=(char *)malloc(10);
free(buf1);
muntrace();
return EXIT_SUCCESS;
}
[indou@std tstPrg030]$
[indou@std tstPrg030]$ ./free
[indou@std tstPrg030]$ ls -l
合計 20
-rw-r--r-- 1 indou users 507 2月 26 01:03 Makefile
-rwxr-xr-x 1 indou users 6212 2月 26 01:03 free
-rw-r--r-- 1 indou users 225 2月 26 01:02 free.c
-rw-r--r-- 1 indou users 2480 2月 26 01:03 free.o
[indou@std tstPrg030]$ export MALLOC_TRACE=./free.dat
[indou@std tstPrg030]$ ./free
[indou@std tstPrg030]$ ls -l
合計 24
-rw-r--r-- 1 indou users 507 2月 26 01:03 Makefile
-rwxr-xr-x 1 indou users 6212 2月 26 01:03 free
-rw-r--r-- 1 indou users 225 2月 26 01:02 free.c
-rw-r--r-- 1 indou users 121 2月 26 01:03 free.dat
-rw-r--r-- 1 indou users 2480 2月 26 01:03 free.o
[indou@std tstPrg030]$ mtrace free free.dat

Memory not freed:
-----------------
Address Size Caller
0x0989c388 0xa at /home/indou/src/c/tstPrg030/free.c:9
[indou@std tstPrg030]$ sed -n "9p" free.c
buf2=(char *)malloc(10);
[indou@std tstPrg030]$

0 件のコメント: