c内存泄漏检查工具---mtrace

版权声明:转载请注明出处 https://blog.csdn.net/u010659887/article/details/80046068

    项目中出现内存泄漏是让人很头疼的事情,使用了vargrind效果不明显,可能因为试用了libuv里面有太多异步处理,导致使用vargrind会出现段错误。后来发现mtrace,使用还是挺简单的。

    mtrace是gnu自带的库,因为我的项目是嵌入式开发,使用arm平台,刚开始想交叉编译mtrace在arm上使用,后来发现没有必要,使用方法如下。

    在代码main函数里加入下面两行代码:

setenv("MALLOC_TRACE", "output", 1);
mtrace();

   output会在执行的文件目录下生成,mtrace()开始检测malloc函数。

    程序运行一段时间,用top发现内存泄漏再现后即可把output拖出来,比如arm里的可执行文件是test,将test和output放到linux虚拟机同一目录下(test是arm的编译版本,但是不用担心,虚拟机下也可以使用),然后执行:

    mtrace test output

    然后就会看到屏幕上出现许多文件名和对应的函数,这些都是没有释放的函数,一般来说多次重复出现的地方就是内存泄漏的地方。

 

猜你喜欢

转载自blog.csdn.net/u010659887/article/details/80046068