我正在寻找Valgrind来帮助提高我的C编码/调试,当我发现它只适用于Linux时——我没有其他需要或兴趣将我的操作系统转移到Linux,所以我想知道是否有同样好的Windows程序。


当前回答

正如jakobengbloom2所指出的,valgrind有一套工具。根据你谈论的是哪一个,有不同的窗口柜台部分。这里我只提到OSS或免费工具。

1. MemCheck:

博士的记忆。这是一个相对较新的工具,在Windows 7上运行得很好。我最喜欢的特性是它在报告中对相同的泄漏分配堆栈进行分组。

http://code.google.com/p/drmemory/

我也使用过UMDH(http://support.microsoft.com/kb/268343),发现它非常有用,而且易于安装。它适用于Win2000到Win7。

AppVerifier是windows本地代码开发人员必须拥有的swissknife,它的“内存”检查器做类似的工作 http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

2. Callgrind:

我最喜欢的是verysley (http://www.codersnotes.com/sleepy),它很小,但非常有用,很容易使用。

如果您需要更多的功能,AMD CodeAnalyst™性能分析器是免费的: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

Windows性能分析工具是免费的微软,不是很容易使用,但可以完成工作,如果你愿意花时间。http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx 下载: http://msdn.microsoft.com/en-us/performance/cc752957

3.地块:

类似的(不完全匹配)windows上的免费工具有:

VMMap来自sysinternals: http://technet.microsoft.com/en-us/sysinternals/dd535533

windbg中的!heap命令:http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html

4. Cachegrind:

上面提到的Windows性能工具有一定程度的L2缓存丢失分析能力,但不像Cachegrind那么好和容易使用。

5. DRD:

我还没有在Windows上找到任何免费和强大的工具,我能找到的唯一一个稍微接近的免费工具是“锁定”检查器 AppVerifier: http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

其他回答

Windows的调试工具中有Pageheap.exe部分。它是免费的,基本上是一个自定义的内存分配器/释放器。

参见http://support.microsoft.com/kb/286470

用户模式转储堆(UMDH)实用程序与操作系统一起工作,分析特定进程的Windows堆分配。这是微软提供的一个很好的免费工具。这是一个小教程“如何使用Umdh.exe来查找内存泄漏”。

我今天发现了这个SF项目:

http://sourceforge.net/p/valgrind4win/wiki/Home/

他们正在将valgrind移植到Windows。也许几年后,我们的窗户就会有可靠的耐磨材料了。

您可以尝试RuntimeChecker试用版或者IBM Purify试用版。

一个免费的解决方案是在Visual Studio中使用以下代码:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

只要把这个写在所有cpp文件的顶部。 这将在停止调试运行时检测应用程序的内存泄漏,并在输出窗口中列出它们。双击内存泄漏行将突出显示已分配内存且从未释放内存的行。这可能对你有帮助:http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml

为什么不用Valgrind + Wine来调试你的Windows应用程序呢?看到 http://wiki.winehq.org/Wine_and_Valgrind

(Chromium使用这个来检查Windows版本的内存错误;看到 build.chromium.org 看看实验瀑布或记忆瀑布,寻找葡萄酒。)

还有记忆博士 dynamorio.org/drmemory.html