闪电下载吧 最新软件 免费软件 绿色软件

教程资讯 软件专题

您的位置:SD124 > 工具软件 > Deleaker 2022.6

Deleaker 2022.6

  • 软件大小:未知
  • 更新日期:2022-07-20
  • 官方网站:闪电下载吧
  • 软件等级:★★★☆☆
  • 运行环境:Winxp/Win7/Win8/Win10
Deleaker 2022.6
  • 软件说明
  • 软件截图
  • 下载地址
  • 相关软件
  • 用户评论
  • 投诉建议: 858898909@qq.com
Deleaker是Visual C ++开发人员的工具,旨在帮助他们发现代码中的各种泄漏类型和内存泄漏。对于每次泄漏,它将显示完整的堆栈跟踪。只要有可能,它就会显示确切的源文件和行。众多选项可以快速有效地发现泄漏。Deleaker可以监视32位和64位代码,并支持从VS 2005开始的所有版本的Visual Studio。支持各种泄漏类型,内存,GDI,句柄和其他泄漏,还具有非托管配置文件和.Net代码、提供丰富的报告、将结果导出为XML等功能特色,本次带来破解版下载,含破解文件,有需要的朋友不要错过了!

安装破解说明

1、下载并解压,如图所示,得到DeleakerSetup_2019.20.0.0.exe安装程序和crack破解文件夹

2、双击DeleakerSetup_2019.20.0.0.exe运行,勾选我接受协议,点击next

3、选择软件安装路径,点击next

4、安装完成,退出向导

5、将crack中的dll文件复制到安装目录中,点击替换目标中的文件,默认路径C:\Program Files (x86)\Deleaker

功能特色

1、C ++内存泄漏检测
Deleaker是一个Visual C ++扩展和独立应用程序,用于内存泄漏检测-内存,GDI和到目前为止的处理。
即使是最稳定的Windows应用程序也不能幸免于资源泄漏。在所有错误和问题中,内存泄漏检测往往是最困难的,尤其是在GDI对象和菜单中。经验丰富的黄金法则是,发现并处理漏洞的时间越早,事实证明它们的成本就越低。
尽管不乏帮助追踪内存泄漏的工具和附件,但很少有人能够追踪会破坏Windows性能的GDI资源泄漏。Deleaker是少数几个能够实现此目的的工具之一,并且对应用程序的性能影响很小。
2、查找所有内存泄漏
不管发生什么类型的泄漏,Deleaker都会找到它们的全部:内存泄漏(由堆,虚拟内存或OLE分配器等产生),GDI泄漏,Windows USER对象和句柄的泄漏。
3、Visual Studio整合
作为Visual Studio扩展,Deleaker与您喜欢的IDE紧密集成。您可以随时查看所有已分配对象的列表。支持Visual C ++ 6.0,Visual Studio 2005、2008、2010、2012、2013、2015、2017和new 2019。
4、单机版
Deleaker Standalone不需要Visual Studio。独立版本调试任何应用程序并显示所有当前分配。您可以在没有Visual Studio的客户端计算机上运行它。

使用帮助

一、在Deleaker的帮助下进行VisualStudio内存泄漏检测  
由于Deleaker是VisualStudio扩展,因此VisualStudio内存泄漏检测紧密集成在VisualStudio中。通过VisualStudio调试进程时,将自动显示Deleaker窗口。如果看不到Deleaker窗口,只需在VisualStudio的主菜单中单击Deleaker->Deleaker窗口。  
默认情况下,Deleaker附加到VisualStudio正在调试的每个进程。但是有时您不需要Deleaker的帮助。在这种情况下,只需在Deleaker窗口中选中EnableDeleaker复选框即可将其禁用。转到Deleaker选项(可通过VisualStudio主菜单:Deleaker->Options,或通过DeleakerWindows:Options按钮获得),然后将“设置”部分中的MonitorLeaks选项设置为False。  
启用Deleaker并在VisualStudio中开始调试。该过程照常运行,您可以随时进入Deleaker窗口并获取当前可用分配的列表(单击以获取快照)。分配是任何可能在分配但未释放的情况下泄漏的对象:到目前为止,内存块,句柄或已初始化的关键部分。  
要获取此列表,请单击“拍摄快照”按钮。您将看到一个带有进度条的对话框,以及一些有关当前数据收集状态的信息。让Deleaker完成数据收集过程,结束后,您将看到分配列表以及每个泄漏的所有详细信息:值,源文件(如果有),泄漏类型,等等。  
  
当进程退出时,Deleaker自动收集所有内存泄漏:尚未释放的分配。  
与调试.NET代码有关的一件重要事情。Deleaker能够在.NET代码中找到托管和非托管泄漏:如果.NET代码调用以C++编写的DLL,则Deleaker能够找到此类泄漏。但是,不要忘记在项目设置中启用非托管代码调试。否则,Deleaker无法附加到已启动的流程。  
有了分配列表后,Deleaker会自动保存它。Deleaker将此列表称为“快照”。比较快照可能对帮助您找到泄漏源非常有帮助。我们将在“快照”部分中介绍更多内容。  
另一种方法是按“命中计数”对内存泄漏进行排序。如果一段代码重复进行分配,您将看到一个命中计数值很高的分配。通常,这是泄漏。  
通常,您会遇到某种类型的泄漏问题,例如GDI泄漏或内存。默认情况下,Deleaker显示所有类型的泄漏,但也可以过滤它们。只需在“泄漏类型”组合框中选择泄漏类型,列表就会被更新;其他类型的所有泄漏将从视图中隐藏。  
您可以使用的另一个过滤器是调用模块。泄漏的模块是什么?导致泄漏的模块。但是实际执行分配的模块是什么?答案并不像您想象的那么明显。您可能会假设是调用相应功能的模块。但是,设想一下您的主exe调用new运算符,并且该exe与C运行时动态链接的情况。新的运算符将从msvcrt.dll或mfc.dll调用另一个函数,而该函数将调用另一个函数,依此类推。最后,将调用kernel32.dll中的HeapAlloc。那么,进行分配的模块是什么?当然,这是您的主要exe文件。但是HeapAlloc是从mfc**。dll调用的!  
在这种情况下,Deleaker将mfc**。dll称为“中间模块”。阅读堆栈,Deleaker向下跳过中间模块,然后寻找将被视为真正的调用者模块的模块。设置中提供了中间模块的列表。  
这样,您现在知道Deleaker如何匹配分配和模块。按模块过滤允许您查看哪些分配是由您的模块分配的,哪些分配是由其他模块分配的。  
有了分配列表,您就可以更深入地探索每个泄漏。单击泄漏,您将看到在进行分配时保存的堆栈跟踪。堆栈跟踪可以帮助您了解发生内存泄漏的位置。  
可用的堆栈有两个视图:完整视图和简短视图。要在它们之间切换,请使用“显示完整堆栈”按钮。完整的堆栈包括堆栈跟踪中的所有模块。简短的堆栈仅显示具有相应源数据文件的那些条目。请注意,尽管经常有此类数据可用,但实际上磁盘上没有此类源文件。此数据是从模块的调试数据中检索的。如果使用mfc**。dll的调试版本,则它包含源文件引用,但是在大多数情况下,您将没有此类文件。不用担心:只需从顶部到底部移动堆栈跟踪条目,以找到属于您的模块。您可以双击该条目,如果相应的文件可用,则Deleaker会将源文件加载到VisualStudio中,并将光标移动到文件中的相应行。  
快照  
如您所知,可以保存分配列表。保存快照后,可以在它们之间切换。但是快照主要用于比较目的。想象一下,在任务管理器中您会看到GDI泄漏的数量不断增加。您会看到GDI对象计数为51,几秒钟后为52,依此类推。显然,这是一个泄漏。您转到“Deleaker”窗口,然后单击“拍摄快照”:  
如何拍摄快照进行比较  
在几秒钟内,您再次单击“拍摄快照”并保存。  
现在我们只需要得到差异。在左侧组合框中选择第一个快照,然后在“与...比较中”选择第二个快照。  
这将显示第二个快照中存在但第一个快照中不存在的分配。换句话说,您将看到新的分配。这些是内存泄漏,因此请仔细检查!  

二、如何在Delphi中查找内存泄漏?  
本教程演示了用Delphi编写的在应用程序中查找内存泄漏和其他资源泄漏的方法。  
Deleaker可以作为独立的应用程序,也可以作为RADStudio扩展。DeleakerStandalone非常方便,例如,如果未安装RADStudio。  
如果Deleaker作为扩展,开发人员可以在不离开RADStudio的情况下搜索泄漏,这使他可以更快地找到可能的错误源。  
安装后,新的Deleaker项将添加到RADStudio主菜单中:  
要打开Deleaker窗口,请单击Deleaker-Deleaker窗口:  

1、添加内存泄漏  
让我们用一个表单创建一个简单的应用程序,然后添加一个按钮,通过单击它分配一些内存并创建一个对象:  
2、项目设置  
为了获得有关泄漏的最可靠和完整的信息,您需要配置项目选项。  
启用调试信息  
首先,有必要使编译器生成调试信息。使用此信息,Deleaker可以确定包含源代码的文件,该源代码与调用堆栈中的地址相对应。  
要生成调试信息,点击项目-项目选项,进入大厦-Delphi编译器-编译,并设置代码生成-调试信息到调试信息:  
如果使用命令行构建项目,则指定编译器开关-V生成调试信息。  
堆栈帧生成  
使编译器创建堆栈框架是一个好主意。  
Deleaker可以处理任何代码,即使该代码没有堆栈框架也可以使用。但是,如果使用堆栈框架编译代码,则有关调用堆栈的信息会更加完整。  
要启用堆栈框架,请单击“项目”-“项目选项”,转到“建筑物”-“Delphi编译器”-“编译”,然后将“代码生成”-“堆栈框架”设置为true:  
如果应用程序是通过命令行构建的,则为了生成堆栈帧,应指定编译器开关-$W+。  
禁用优化  
通过禁用优化可以获得有关泄漏的更完整和正确的信息。点击项目-项目选项,进入大厦-Delphi编译器-编译和一套代码生成-优化,以假:  
如果应用程序是通过命令行构建的,则要禁用优化,必须指定编译器开关-$O-。  
拍摄快照  
开始调试,然后单击按钮。然后返回RADStudio,单击Deleaker-Deleaker窗口,然后单击TakeSnapshot以获取已分配资源的列表:内存,句柄,GDI资源,对象等:  
对于每个资源,可以查看其调用堆栈,这可以了解该资源在代码中的分配位置。如果有关源文件和行的信息可用,则Deleaker双击(或通过上下文菜单)在编辑器中打开源代码:  
3、如何获取delphi对象列表?  
在“Delphi对象”选项卡上,对象按类分组。对于每个类别,将显示以下类别的对象列表。对于每个对象,其调用堆栈可用:  
您可以使用“按名称过滤”快速找到所需的类,只需开始输入:  
4、获取泄漏清单  
当应用程序退出时,Deleaker自动创建一个快照,其中包含泄漏列表,即已分配但尚未释放的所有资源。在检查了每个分配和每个对象的调用堆栈之后,开发人员可以确定是否显式释放资源:  
5、如果一个进程消耗越来越多的内存怎么办?  
碰巧一个进程消耗的内存在不断增加。在其他情况下,句柄数或GDI对象数正在增长:  
让我们看看如何快速识别泄漏源。  
例如,添加一个计时器以定期分配内存:  
注意命中数  
Deleaker通过调用堆栈将所有泄漏分组。命中计数列中显示了共享同一调用堆栈的泄漏数。因此,如果在同一位置不断分配内存,则命中计数将永久增长。  
如果不断创建相同类的对象,则“Delphi对象”选项卡中“对象计数”列中的值将增加。  
事实证明,按“命中计数”和“对象计数”排序可以快速指示代码中的问题区域:  
第二种方法:获取连续快照之间的差异  
但是,按“命中计数”和“对象计数”排序不允许隐藏“累积”的资源。还有另一种方法来查看那些不断泄漏的资源。  
首先,获取基本快照,并给该过程分配更多资源的时间。因此,有两个快照,并且我们仅对自获取基本快照以来分配的资源感兴趣。选择基本快照,单击“与...比较”,然后单击第二个快照,以便Deleaker可以计算它们之间的差异。  
有时在比较快照之后,列表为空。在这种情况下,请清除所有过滤器以毫无例外地查看所有分配。  
结果列表更干净:  
6、筛选器  
Deleaker尝试仅显示程序可能造成的泄漏,并过滤掉其余泄漏。例如,内存是由系统库或某些其他代码分配的。如果显示了由进程分配的所有资源,则很难理解其中哪个资源负责您的应用程序代码。  
为了提醒开发人员某些泄漏已被隐藏,Deleaker在“过滤器”按钮的右侧显示了已隐藏和显示的泄漏数。借助此按钮,您可以快速启用或禁用过滤器:  
过滤器分为三种:  
隐藏没有源代码的泄漏-隐藏Deleaker找不到源代码的泄漏。  
隐藏排除的模块中的泄漏-隐藏由模块中的代码造成的泄漏,这些泄漏的列表在Options-Exceptions-ExcludedModules中。默认情况下,这些是系统库。  
隐藏已知的泄漏-隐藏可能已知的泄漏是绝望的:无法避免或修复它们。这些包括,例如,标准库的一次性内存分配。您可以在“选项-例外-已知泄漏”中找到此类泄漏的列表。
下载地址
有任何意见或者建议请联系邮箱:858898909[at]qq.com 本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!
Copyright © 2012 SDBETA.com. All Rights Reserved 豫ICP备12021367号 豫公网安备 41019702002546号闪电下载吧