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


当前回答

Boost Test库可以检测内存泄漏。

其他回答

绝对净化!我用它来分析一些大型代码库(>3,000 kSLOC),发现它非常出色。

你可能想在维基百科上看看这个列表。

顺便说一下,我发现memwatch很有用。谢谢约翰!

所有分析器或多或少都包括检查内存泄漏,并在分配内存时显示堆栈。

我可以推荐英特尔并行检查器。使用简单,不需要重新编译。试运行期为30天。

GlowCode和AtromatedQA也包含这样的功能。他们都提供免费试用。

Compuware DevPartner(又名BoundsChecker)在对比中需要慢速的“仪器”重新编译,应用程序在检查错误时也会运行得更慢。和BoundsChecker不能工作与64位evsrions在所有。我们放弃了那个工具。

也许CodeSnitch是你想要的?http://www.entrek.com/codesnitch.html

我用过的最好的工具是DevPartner BoundsChecker——它不是免费的,但它有一个评估期。

正如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