当前位置:  开发笔记 > 开发工具 > 正文

有一个很好的Valgrind替代Windows吗?

如何解决《有一个很好的Valgrind替代Windows吗?》经验,为你挑选了12个好方法。

当我发现它仅适用于Linux时,我正在研究Valgrind以帮助改进我的C编码/调试 - 我没有其他需要或兴趣将我的操作系统转移到Linux所以我想知道是否有一个同样好的Windows程序.



1> Lailin Chen..:

正如jakobengblom2指出的那样,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:

我最喜欢的是verysleepy(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上的类似(不完全匹配)免费工具是:

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

!windbg中的堆命令: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


还有[gperftools(以前称为Google PerfTools)](http://code.google.com/p/gperftools/).它不是valgrind的替代品(实际上是什么),但它有一个新的malloc,cpu profiler,堆分析器和检查器.值得一看,因为它支持Linux和Windows(包括Mingw)和其他unices.

2> Dan Kegel..:

为什么不使用Valgrind + Wine调试您的Windows应用程序?请参阅 http://wiki.winehq.org/Wine_and_Valgrind

(Chromium使用它来检查Windows版本的内存错误;请参阅build.chromium.org并查看实验或内存瀑布,并搜索wine.)

还有Memory博士,请参阅dynamorio.org/drmemory.html


无需重新编译Wine.只需将.exe和.pdb转移到Linux机器上即可.你不会调试Linux应用程序; 你正在调试你的确切Windows应用程序.
太好了!从Windows可以运行运行linux的虚拟机,在valgrind vm中运行几乎vm葡萄酒中的软件.如果windows是从windows vm中运行linux的vm运行的,那么奖励积分:)
因为那时你不会调试Windows应用程序 - 你将调试Linux应用程序.
确切地说,使用真实的东西比使用蹩脚的克隆更好:D Love valgrind.

3> orip..:

一些更好的商业工具:

净化

保证++


Insure ++将永远用于检测代码,并永远在运行时执行代码.

4> 小智..:

对于Visual C++,请尝试Visual Leak Detector.当我使用它时,它检测到来自new调用的内存泄漏并返回泄漏源代码中的实际行.最新版本可在http://vld.codeplex.com/上找到.



5> dmityugov..:

您正在使用的Windows开发环境可能包含自己的工具.例如,Visual Studio允许您检测并隔离程序中的内存泄漏


它几乎没有实际用途.它将记录文件名/亚麻,以便进行违规分配,但如果您直接调用malloc,则仅提供信息.当使用new/delete时,它将无益地将new.h定位为"违规"代码.
它对我来说正常工作,指向正确的行,甚至使用new/delete.

6> Satbir..:

我想列出一些工具,希望会有用

阅读这篇文章了解更多细节

    净化

    Bounds Checker

    Coverity(基本上是它的代码分析器,但它会在静态中捕获内存泄漏)

    发光代码

    dmalloc

    ccmalloc

    NJAMD

    YAMD

    Valgrind的

    mpatrol

    保证++



7> Diaa Sami..:

试试DUMA



8> 小智..:

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

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



9> Jasper Bekke..:

与Visual Studio结合使用时,我通常使用Visual Leak Detector或简单的_CrtDumpMemoryLeaks()这是一个win32 api调用.两者都没什么特别的,但他们完成了工作.



10> Manuel..:

我有机会在过去使用Compuware DevPartner Studio,这非常好,但它非常昂贵.一个更便宜的解决方案可能是GlowCode,我刚刚使用5.x版本,尽管在附加到我需要调试的过程中存在一些问题,但它工作得很好.



11> stevex..:

我一直喜欢来自一家名为Software Verification的公司的Memory Validator.



12> fmuecke..:

Viusual Studio可以帮助检测内存泄漏.请参阅Microsoft Visual C++提示和技巧 - >"内存泄漏"部分.另见SO中的这篇文章

虽然只有Visual Studio的Team Edtion才能实现真正的跟踪.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有