1. 在用户的.profile中加入如下脚本:
LD_PRELOAD_32=libumem.so.1:/usr/lib/extendedFILE.so.1:$LD_PRELOAD_32;
export LD_PRELOAD_32
UMEM_DEBUG=default;
export UMEM_DEBUG
UMEM_LOGGING=transaction;
export UMEM_LOGGING
UMEM_OPTIONS=backend=mmap;
export UMEM_OPTIONS
2. 重新执行一下上面的脚本:. .profile
3. 重启测试内存泄露的进程
4. 确认进程是否加在了lieumem库 pgrep $procname | xargs ldd | grep umem
若显示存在umem库,则表示加载成功
5. 执行操作,让内存涨起来, 然后用gcore收集core文件
gcore -o filename procid
6. 用mdb调试,收集泄露信息:
mdb filename(gcore出来的文件名称)
>$G
>::log result.log
>::findleaks -d
>c
>$q
7. 执行完毕之后,分析result.log文件
文件比较简单,可以清晰地看到堆栈和各个地方泄露点!
LD_PRELOAD_32=libumem.so.1:/usr/lib/extendedFILE.so.1:$LD_PRELOAD_32;
export LD_PRELOAD_32
UMEM_DEBUG=default;
export UMEM_DEBUG
UMEM_LOGGING=transaction;
export UMEM_LOGGING
UMEM_OPTIONS=backend=mmap;
export UMEM_OPTIONS
2. 重新执行一下上面的脚本:. .profile
3. 重启测试内存泄露的进程
4. 确认进程是否加在了lieumem库 pgrep $procname | xargs ldd | grep umem
若显示存在umem库,则表示加载成功
5. 执行操作,让内存涨起来, 然后用gcore收集core文件
gcore -o filename procid
6. 用mdb调试,收集泄露信息:
mdb filename(gcore出来的文件名称)
>$G
>::log result.log
>::findleaks -d
>c
>$q
7. 执行完毕之后,分析result.log文件
文件比较简单,可以清晰地看到堆栈和各个地方泄露点!