我一直在寻找到Valgrind的,有助于提高我的C编码/调试时,我发现这是仅适用于Linux - 我在我的操作系统转向Linux,所以我在想,如果有一个用于Windows的同样好的程序中没有其他的需要或兴趣。
Answer 1:
一些更良好的商业工具:
- 净化
- 保证++
Answer 2:
作为jakobengblom2指出,有Valgrind的工具套装。 根据哪一个你正在谈论有不同的窗口柜台的部分。 我只提OSS或免费工具在这里。
1. MEMCHECK:
内存博士。 这是一个相对较新的工具,效果很好在Windows 7上我最喜欢的特点是,它集团在报告相同泄漏分配栈。
http://code.google.com/p/drmemory/
我也用UMDH( http://support.microsoft.com/kb/268343 ),发现它安静有用的,易于安装。 它从Win2000的工程Win7的。
AppVerifier的是一个必须有swissknife用于Windows本地代码开发者,它的“记忆”检查程序类似的工作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的免费工具有:
从的VMMap Sysinternals的: http://technet.microsoft.com/en-us/sysinternals/dd535533
!在WinDbg中堆命令: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html
4.缓存研磨:
上面提到的Windows性能工具有一定的水平L2高速缓存未命中分析能力,但不太好和容易Cachegrind使用。
5 DRD:
有没有发现什么自由和强大的Windows上,然而对于窗户的唯一免费工具,我可以发现,稍微接近于在AppVerifier的“锁定”检查: http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
Answer 3:
为什么不使用Valgrind的+酒调试您的Windows应用程序? 见http://wiki.winehq.org/Wine_and_Valgrind
(铬使用它来检查Windows版本的内存错误;见build.chromium.org,并期待在实验或内存的瀑布,并搜索葡萄酒)
也有记忆博士,看到dynamorio.org/drmemory.html
Answer 4:
对于Visual C ++,尝试视觉检漏仪 。 当我用它,它检测到来自内存泄漏new
呼叫并返回在泄漏的源代码的实际线路。 最新版本可以在这里找到http://vld.codeplex.com/ 。
Answer 5:
对于Windows您使用的是可能包含它自己的工具的开发环境。 Visual Studio中,例如,让您检测和隔离内存泄漏在你的程序
Answer 6:
我想列出一些常用的工具,希望将是有益的
阅读这篇文章更多的细节
- 净化
- 边界检查
- Coverity的(基本上其代码分析器但是,它会赶上在静态存储器泄漏)
- 夜光代码
- dmalloc
- ccmalloc
- NJAMD
- YAMD
- Valgrind的
- mpatrol
- 保证++
Answer 7:
尝试杜玛
Answer 8:
目前的调试工具的Windows Pageheap.exe在部分。 它是免费的,基本上是一个自定义的内存分配器/释放。
见http://support.microsoft.com/kb/286470
Answer 9:
在使用Visual Studio组合我一般用视觉检漏仪或干脆_CrtDumpMemoryLeaks(),这是一个Win32 API调用。 两者都没有什么花哨,但他们把工作做好。
Answer 10:
我不得不使用的机会Compuware公司DevPartner工作室在过去,这是非常好的,但它是相当昂贵的。 一个便宜的解决办法是GlowCode ,我只是一个5.x版工作,尽管在连接到一个进程,我需要调试的一些问题,它的工作相当不错。
Answer 11:
我已经爱内存验证 ,从一个叫软件验证的公司。
Answer 12:
Viusual Studio可以帮助检测内存泄漏本身。 请参阅微软的Visual C ++技巧和诀窍 - >“内存泄漏”一节。 也看到这个帖子在SO
虽然真正的跟踪是唯一可能与Visual Studio的团队Edtion。
Answer 13:
请参阅“ 源测试工具软件QA测试和测试工具的资源页面上的类似工具列表”链接。
我用的BoundsChecker,DevPartner Studio和英特尔V-调过去的分析。 我喜欢V-Tune的最好的; 你可以模仿各种英特尔芯片组,它将给你如何来优化该平台的提示。
Answer 14:
是否约亨Kalmbach的内存泄漏检测资格吗?
PS:本网址到最新版本在文章的评论线程的地方埋葬。
Answer 15:
LeakDiag,UMDH,应用验证,DebugDiag资料,是提高代码的健壮性和查找内存泄漏的有用工具。
Answer 16:
升压测试库可以检测内存泄漏。
Answer 17:
怎么样的净化 ?
Answer 18:
尝试英特尔督察XE产品,它可以帮助您检测内存和线程问题: http://software.intel.com/en-us/articles/intel-inspector-xe/
Answer 19:
也许CodeSnitch将是你后的东西吗? http://www.entrek.com/codesnitch.html
Answer 20:
如果你正在使用Borland / CodeGear的/ Embarcadero的C ++ Builder中开发的,你可以使用了CodeGuard。
Answer 21:
都或多或少廓线包括检查内存泄漏,并显示您的堆栈分配内存时。
我可以推荐英特尔Parallel Inspector中 。 使用简单,无需重新编译需要。 试用版30天运行一次。
GlowCode和AtromatedQA还包括这样的capabilites。 他们都提供免费试用。
Compuware公司DevPartner(又名的BoundsChecker):与需要放慢“仪器”重新编译应用程序也检查错误时运行速度较慢。 和的BoundsChecker不能在所有64个evsrions工作。 我们放弃了这个工具。
Answer 22:
我用过的最好的工具是DevPartner的BoundsChecker -它不是免费的,但它有一个评估期。
Answer 23:
另一种记忆的工具列表: 内存验证 。
不是免费的,但远不及作为净化或的BoundsChecker昂贵。
Answer 24:
如果你不害怕的MinGW的,这里有一些链接(有些人可能会用MSVC工作)... http://betterlogic.com/roger/?p=1140
Answer 25:
我们只是完成了内存的安全检查工具适用于Windows,它处理GCC和项目建立在微软的Visual C(不是C ++还),并正在寻找Beta测试。
编辑2011年6月12日:不是beta了,现在生产GCC和Microsoft Visual Studio C.
Answer 26:
我今天发现这个SF项目:
http://sourceforge.net/p/valgrind4win/wiki/Home/
他们的valgrind移植到Windows。 大概在几年我们就可以在Windows上可靠的valgrind。
Answer 27:
看看这个问题: 是否有一个良好的Valgrind的替代品用于Windows? 。 虽然对于一般Valgrind的替代品被要求,主要讨论了内存泄漏探测器,而不是竞争条件检测。
Answer 28:
我曾经投保++这确实非常出色找到C ++内存泄漏/损坏等诸多蝽象未初始化的变量,指针错误,字符串等,它也做视觉上的“代码覆盖率”和运行时内存的使用情况等。这给更多的自信你的代码..你可以尝试为试用版..
Answer 29:
你可能想读什么的Mozilla 正在做关于内存泄漏。 在其工具箱的一个工具是用作汉斯贝姆垃圾收集器内存泄漏检测器。
Answer 30:
你可以给一个尝试RuntimeChecker审判加时赛IBM净化试验..
免费的解决方案是使用Visual Studio中的以下代码:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
就在所有的cpp文件的顶部写这篇文章。 这会检测你的应用程序的内存泄漏whenc停止调试运行,并在输出窗口中列出。 在内存泄漏线双击将higlight你在哪里内存分配和永远不会释放行。 这可以帮助你: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml