如何在FreeBSD中调试malloc/memleaks

如何在FreeBSD中调试malloc/memleaks,c,memory-management,freebsd,C,Memory Management,Freebsd,我看到了这篇文章: 文章中引用的脚本似乎已经过时,第一条评论中的链接是404 Valgrind似乎没有在FreeBSD上为我工作,因为一些系统调用和我自己实现它们的错误,我对此不感兴趣 这个脚本说它可以做什么来跟踪malloc/free 谢谢在Linux上,您可以在程序中启用,但这是一个代码更改 在OpenBSD上,您可以尝试malloc统计 谷歌的泄漏检测器也值得一看,与mtrace不同,你可以使用LD_PRELOAD来避免重新编译。你可以尝试使用devel/ElectricFence端口插

我看到了这篇文章:

文章中引用的脚本似乎已经过时,第一条评论中的链接是404

Valgrind似乎没有在FreeBSD上为我工作,因为一些系统调用和我自己实现它们的错误,我对此不感兴趣

这个脚本说它可以做什么来跟踪malloc/free


谢谢在Linux上,您可以在程序中启用,但这是一个代码更改

在OpenBSD上,您可以尝试malloc统计


谷歌的泄漏检测器也值得一看,与mtrace不同,你可以使用LD_PRELOAD来避免重新编译。

你可以尝试使用
devel/ElectricFence
端口插入(链接)你的代码。只要您的代码不分配无数的小比特,这将有助于您找到超过分配内存的访问。如果您只是检查是否存在泄漏,ElectricFence可能不是您想要的。

该端口最近进行了升级,现在可能满足您的需要


但是FreeBSD的malloc实现(也称为phk malloc)也有一些内置功能。有关详细信息,请阅读手册页-“调优”部分也包含对开发人员有用的信息。

使用internet archive:。internet archive有该脚本的第一个版本,但没有第二个版本=(你可以试着给那个家伙发电子邮件……keramida在FreeBSD.org我真的无法将这段代码移植到Linux。它需要一些FreeBSD特定的部分。我曾试图启动valgrind,但我能从中得到的只是一些关于未经处理的系统调用的错误提示。我检查了它,你是对的,对于无效访问,它可能是al是的,但似乎不适合泄漏检测。我必须检查一下。我有点忘记了这个电话,但我最终自己修复了valgrind,所以我会比较一下在端口中做了什么。