当我在寻找帮助改进我的C语言编程和调试的工具时,我发现Valgrind仅适用于Linux操作系统。由于我没有将操作系统转移到Linux的其他需要或兴趣,因此我想知道是否有同样优秀的程序适用于Windows。
当我在寻找帮助改进我的C语言编程和调试的工具时,我发现Valgrind仅适用于Linux操作系统。由于我没有将操作系统转移到Linux的其他需要或兴趣,因此我想知道是否有同样优秀的程序适用于Windows。
http://code.google.com/p/drmemory/
我也使用过UMDH(http://support.microsoft.com/kb/268343),发现它非常有用且易于设置。它适用于Win2000到Win7。
AppVerifier是Windows本机代码开发人员必备的瑞士军刀,其“内存”检查器执行类似的工作http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx
2. Callgrind:
我的最爱是verysleepy(http://www.codersnotes.com/sleepy)。它很小但非常有用且易于使用。
如果您需要更多功能,AMD CodeAnalyst™ Performance Analyzer是免费的: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. Massif:
类似(但不完全相同)的免费工具在Windows上有:
来自Sysinternals的VMMap: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
如果你使用的是Visual C++,可以尝试使用Visual Leak Detector。我使用它时,它可以检测到new
调用导致的内存泄漏,并且返回泄漏源代码中实际的行数。最新版本可以在http://vld.codeplex.com/找到。
你正在使用的Windows开发环境可能包含自己的工具。例如,Visual Studio可以帮助你检测和隔离程序中的内存泄漏
我想列举一些工具,希望能够有所帮助
阅读此文章以了解更多详情
Pageheap.exe是Windows调试工具的一部分。它是免费的,基本上是一个自定义的内存分配器/释放器。
gflags
和来自mingw的gdb
很有帮助。 - Jarekczek与Visual Studio结合使用,我通常使用Visual Leak Detector或简单地使用win32 api调用_CrtDumpMemoryLeaks()。这两种方法都不是很花哨,但它们可以完成工作。
我曾经有机会使用Compuware DevPartner Studio,那真的很好,但是它相当昂贵。 一个更便宜的解决方案可能是GlowCode,我刚刚使用了5.x版本,尽管在附加到我需要调试的进程时遇到了一些问题,但它表现得非常好。