设为首页 加入收藏

TOP

Linux下用内存管理器的钩子函数跟踪内存泄漏(三)
2014-11-24 02:38:55 来源: 作者: 【 】 浏览:4
Tags:Linux 内存 管理 钩子 函数 跟踪 泄漏
line_index++;
continue;
}


addr = NULL;
if(strncmp(line, "alloc", 5) == 0 && n < MAX_ENTRY)
...{
sscanf(line, "alloc %p", &addr);
addrs_array[n] = addr;
lines_array[n] = line_index;
n++;

printf("a");
}
else if(strncmp(line, "free", 4) == 0)
...{
sscanf(line, "free %p", &addr);
for(i = 0; i < n; i++)
...{
if(addrs_array[i] == addr)
...{
lines_array[i] = -1;
break;
}
}


printf("f");
}
line_index++;
}


printf(" ");
fseek(fp, 0, 0);


i = 0;
line_index = 0;
while(fgets(line, sizeof(line), fp) != NULL)
...{
if(strncmp(line, "alloc", 5) == 0)
...{
if(lines_array[i] == line_index)
...{
printf("leak %s", line);
fprintf(fp_out, "*");
skip = 0;
i++;
}
else
...{
skip = 1;
}
}
else if(strncmp(line, "free", 4) == 0)
...{
skip = 1;
}


if(!skip)
...{
fputs(line, fp_out);
}


line_index++;
}


fclose(fp);
fclose(fp_out);


return 0;
}
把这个段代码编译成一个可执行文件mtrace,以前面记录的LOG为输入,再指定个输出文件,内存泄漏会被写到输出文件中,可以看到内存泄漏的地地址,大小和调用关系。


~~end~~


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux Shell 下的输出重定向 下一篇C++中友元的一些总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: