运行lepd的时候,发现在运行PS命令之后,lepd会有将近1M的内存泄漏。
内存泄漏使用mtrace来调试,需要如下几步:
1,在编译选项cflag加上-g
2,需要调试的代码中加入如下两行,我在ps_main中加入
setenv("MALLOC_TRACE", "output", 1);
mtrace();
3,编译,运行
4,运行结束以后,在console中运行如下命令:
mtrace lepd output
其中lepd是可执行文件,output是mtrace生成的对malloc监测的文件,是用mtrace脚本来解析。得到如下信息:
0x000000000214f8c0 0x6 at 0x477a72 0x000000000214f8e0 0x28 at /home/xxx/linuxep/code/lepd/src/modules/ps/src/sortformat.c:559 0x000000000214f910 0x2f at 0x477a72 0x000000000214f950 0x28 at /home/xxx/linuxep/code/lepd/src/modules/ps/src/sortformat.c:559 0x000000000214f980 0x30 at 0x40cecf 0x000000000214f9c0 0x30 at /home/xxx/linuxep/code/lepd/src/modules/ps/src/sortformat.c:48 0x000000000214fa00 0x4 at 0x477a72 0x000000000214fa20 0x5 at 0x477a72
5,根据上述信息进行代码分析和调试