使用ltrace定位内存泄漏-Linux

ltrace和strace是Linux上常用的调试工具:strace跟踪用户程序的系统调用;ltrace跟踪动态库函数的调用。

本文介绍怎么使用ltrace找到内存泄露-调用了malloc而没有调用对应的free函数释放内存。

看下面一段无意义的代码:

使用ltrace调试:

找到我们关注的malloc和free函数调用:

简单的跟踪malloc分配内存地址和free释放内存地址就可以找到哪里发生了内存泄露,上面0x1ae7010没有释放(malloc(124))。为了简单我忽略了calloc/realloc。

ltrace并不能直接定位到调用位置,也就是说我们只知道发生了内存泄露。后续你可以选择使用Valgrind定位位置,它是内存调试、内存泄漏检测以及性能分析的工具。

使用Python脚本分析输出,实现自动检测:

把j结果输出到文件:

Python脚本:

注意:上面脚本并没有处理calloc和realloc。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注