在linux上查找漏洞的valgrind(memcheck)替代方案?

在linux上查找漏洞的valgrind(memcheck)替代方案?,linux,memory-leaks,valgrind,Linux,Memory Leaks,Valgrind,我有一个linux x86应用程序,它使用各种第三方共享对象库。我怀疑这些库正在泄漏内存(因为它不可能是mycode;-) 我试了一下可靠的valgrind,但它死得很惨 我发现并尝试了一下(使用LD_PRELOAD技术在运行时引入DUMA),但它放弃了,因为它抱怨内存上的空闲操作没有通过DUMA分配(几乎可以肯定是由前面提到的第三方库中的某个静态对象的构造函数分配的) 是否有其他运行时可链接(或不需要重新编译/重新链接)工具可以在linux上运行?该工具(或者更准确地说,其Memscope)具

我有一个linux x86应用程序,它使用各种第三方共享对象库。我怀疑这些库正在泄漏内存(因为它不可能是mycode;-)

我试了一下可靠的valgrind,但它死得很惨

我发现并尝试了一下(使用LD_PRELOAD技术在运行时引入DUMA),但它放弃了,因为它抱怨内存上的空闲操作没有通过DUMA分配(几乎可以肯定是由前面提到的第三方库中的某个静态对象的构造函数分配的)

是否有其他运行时可链接(或不需要重新编译/重新链接)工具可以在linux上运行?

该工具(或者更准确地说,其Memscope)具有与Valgrind类似的功能集

您还可以尝试()缓冲区溢出(DUMA的起源)或在空闲情况下触摸(但不适用于memleaks)。

试一试。它基于Valgrind,并与Valgrind共享许多功能。

是一个简单的运行时工具,用于查找Linux和macOS上的内存泄漏。泄漏的输出记录格式与Valgrind非常相似,但它只记录明确的泄漏(即,在终止时分配不自由)


充分披露:我编写了heapsage,用于Valgrind不足的情况(高性能应用程序,以及Valgrind不支持的CPU架构)

2020年,要查找Linux上的内存泄漏,您可以尝试:

对于GCC(4.8以上)和Clang(3.1以上),都可以使用地址消毒剂,这很好 该工具已被证明在Chromium和Firefox等大型项目中非常有用

ASan将提供非常详细的内存区域信息,这对泄漏分析非常有帮助

ASan的缺点是:您需要使用选项
-fsanize=address

TCmalloc既可以与LD_PRELOAD一起使用,也可以直接链接到您的程序。结果可以用程序可视化,它有漂亮的web UI和控制台文本模式,我建议在地址消毒器不适用于您的环境时使用它(如果您有一个非常旧的编译器,或者您的PC运行ASan的内存非常有限)。

只是想补充一点,它是32位的。@SantoshTiwari:我不这么认为。我认为您的意思是,您的平台的二进制软件包可能只适用于特定的平台。DynamoRIO非常灵活,也可以在(某些)64位平台上工作。~~Dr.M~~此Dr.Memory版本不支持64位应用程序。