东坡下载:内容最丰富最安全的下载站!

帮助|文件类型库|最新更新|下载分类|排行榜

开关定时系统增强磁盘工具安装制作内存工具卸载清除备份恢复系统其它桌面工具CPU相关虚拟机

首页系统工具内存工具 → 内存泄露查找清理软件(MemProof) v0.9.4.8 绿色免费版

内存泄露查找清理软件(MemProof)

内存泄露查找清理软件(MemProof)v0.9.4.8 绿色免费版

  • 大小:1.8M
  • 语言:英文
  • 平台:WinXP, WinAll
  • 更新:2013-07-09 08:34
  • 等级:
  • 类型:内存工具
  • 网站:暂无
  • 授权:免费软件
  • 厂商:
  • 产地:国外软件
好用好玩 50%(0)
坑爹 坑爹 50%(0)
软件介绍软件截图相关软件软件教程网友评论下载地址

一般来说内存泄露是常见的问题,那么怎么处理它呢?这里给大家分享一款内存泄露查找清理软件(MemProof),使用它可以快速的查找内存和资源的泄露,帮助您更好的检测和处理您的系统。

软件说明:

内存泄露查找清理软件(MemProof) 是AutomatedQA出品的一款非常不错的检测内存泄漏和资源泄漏的免费调试工具,适合于WIN32平台下使用DELPHI/C++ BUILDER开发的应用程序。利用它可以方便的查找出一些忘记释放的指针以及资源。它通过在调试模式下运行目标程序,监视程序的创建和释放操作,以达到检测资源泄漏的效果。监测过程中它会根据资源类型计数,每次创建后增加计数,释放则递减计数,最后程序结束根据计数即可判断出资源的泄漏。

安装说明:

MemProof是一个绿色软件,下载完成后解压,运行MemProof.exe即可。

使用说明:

MemProof要求目标程序带有完整的调试信息。打开工程选项(Project-Options)

1、  Compiler面板

去掉Optimization(代码优化)选项

选择Stack Frames(为所有过程函数强制生成调用堆栈)选项

选择Debug information (在DCU文件中生成调试信息)选项

选择Use Debug DCUS(编译时链接带有调试信息的VCL DCU文件)选项

2、  Linker面板

选择Detailed(生成完整的MAP文件,包含模块、单元、过程等地址信息)选项

选择Include TD32 debug info(将调试信息生成到可执行文件)选项

该选项会导致可执行文件体积增大,但不会影响运行效率以及内存占用,建议在正式发布时不要带上该选项。

打开MemProof:

Resources –资源的类型,包括Error(错误)、Pointers(指针)、Memory(内存)、GDI(画布资源)、User(系统对象)、Kernel(核心对象)、Registry(注册表)。

Resources Count –资源数目,Current#代表当前数目,Peak#代表峰值数目

Resources Size –资源大小,Current#代表当前大小,Peak#代表峰值大小

选择File-Open打开要调试的执行文件,再选择Run-Run开始运行,再正常退出目标程序,如果有资源泄漏MemProof会自动打开Resources Details面板:

MemProof共列出5个内存泄漏,我们可以看到每个内存泄漏都有详细的调用栈情况,以及相对应的源码位置。

有时它会提示我们找不到对应的源码,这是应为没有指定源码搜索路径的原因。MemProof有两个位置可以设置源码搜索路径,一个在Configure- Search Directories,一个在Projects-Search Directories。前者是设置全局路径,后者是设置当前路径。一般建议在前者中设置DELPHI的VCL以及共用库代码的路径,后者设置工程本身源码的路径。MemProof还为用户提供了快捷搜索VCL源码路径的按钮Get Default for,使用这个按钮可以快捷的获取DELPHI的Libray Path(有的用户安装了VC覆盖了默认调试工具选项,所以有可能得到的是VC的Libray Path,这种情况可以直接到DELPHI的Libray Path中去拷贝即可)。

如果需要测试动态连接库,可以选择Project-Parameters,在Host Applications中选择主体程序,如果需要带命令行,则在Parameters中输入命令行,然后就可以开始测试了,和DELPHI中调试的方法是一样的。MemProof不支持Attach Process的调试方式,这是一个不足的地方。

使用其实非常简单,一看就明白了,下面介绍些调试中的经验技巧。

使用技巧:

渐进式测试,从最易发现的错误开始解决

一个大型的软件可能会有很多泄漏或者错误,这个时候可以渐进式的来测试,第一次测试可以直接运行后立即退出,检测在加载的过程中是否存在泄漏,然后逐一更正。再分功能模块进行测试,比如只针对某个功能进行操作,然后退出检测该模块是否存在泄漏,如果存在,更正。最后再进行整体测试。这样可以避免一些关联性错误导致重复测试,而且可以节省测试时间,可以使测试更有针对性。

分模块测试,从单个的模块开始解决

和上一条原则一样,为了缩小测试面。在Projects的Moudle Configers中选择测试的模块,开始每次只选择一个模块针对性测试,最后再选择所有模块测试。注意:不要选择一些如:Ole32.dll、kernel32.dll等系统模块。

错误优先,发现错误与泄漏并存时,优先解决错误

测试过程中,代表错误,这些错误往往是由于错误的使用系统API导致,如:释放不存在的句柄,访问权限不够的资源,传递了错误的调用参数等。这些错误往往会导致代码没有按照预计的方式运行,触发一些内存泄漏。所以,需要优先修正这些位置。

系统资源优先,发现有GDI、User、Kernel、Registry等存在泄漏时优先解决

系统资源泄漏往往是由于窗体、画布等资源没有及时释放,这些错误非常明显,而且这种错误往往会带有很多的Pointers、Memory泄漏,所以,优先修正

什么是内存泄露?

一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,calloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
内存泄漏是常见的问题。当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,那么对于该进程来说,会因此导致总可用内存的减少,这时就出现了内存泄漏。尽管优秀的编程实践可以确保最少的泄漏,但是根据经验,当使用大量的函数对相同的内存块进行处理时,很可能会出现内存泄漏。尤其是在碰到错误路径的情况下更是如此。

怎么解决内存泄露问题?

1. 一般内存泄露都是在new 和delete 或malloc和free没有成对使用的情况下产生的。在代码量较少的情况下可自行检测。确保两着成对使用。
2. c++中有智能指针的概念,sp和wp。这也是内存管理,避免内存泄露的一个方法。不过这个概念相对难度大一些。lz感兴趣的话可以上网搜关键字“C++智能指针”。
3.在一些大的软件工程中,一般在代码设计完成后,会使用一些代码检测工具对代码的运行进行跟踪。这里就包括对内存泄露问题的检测,常用的工具有valgrind,它会在跟着整个程序运行一遍后显示内存的使用和释放情况。valgrind使用方法不难,lz可上网搜索相应教程。

内存优化工具(Wise Memory Optimizer)
类型:内存工具大小:1016KB语言:多国语言[中文]时间:8-14评分:7.5

PC官方
安卓官方手机版
IOS官方手机版

内存泄露查找清理软件(MemProof)截图

下载地址

内存泄露查找清理软件(MemProof) v0.9.4.8 绿色免费版

热门评论
最新评论
第 1 楼 上海有线通 网友 东坡网友 发表于: 2019/1/17 14:55:53
可以根据字节、MD5、SHA等多种方式来快速扫描 你的电脑,然后帮你找出并清理掉隐藏在电脑内的各种重复文件,最大化利用硬盘空间资源。

支持( 0 ) 盖楼(回复)

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)

编辑推荐

报错

请简要描述您遇到的错误,我们将尽快予以修正。

转帖到论坛
轮坛转帖HTML方式

轮坛转帖UBB方式