跟踪内存泄漏

bbc 使用 ebpf 提供了一个叫做memleak的工具,是专门用来检测内存泄露的。它可以跟踪系统或者指定进程的内存分配、释放请求,然后定期输出一个未释放内存和相应调⽤栈的汇总情况(默认5 秒)。

代码地址:https://github.com/iovisor/bcc/blob/master/tools/memleak.py

注意,这个工具会定期输出未释放的内存以及相应调用栈的汇总情况。所以如下情况也会被检测出来。

1
2
3
4
5
6
7
void test3() {
for (;;) {
void* p = malloc(16);
sleep(10);
free(p);
}
}