Puredev
MemPro提供内存分析功能,可以通过这款软件立即分析当前设备的内存情况,软件提供多种视图查看内存情况,轻松查找和修复内存泄漏,快速,有效地分析任意大小的应用程序,也可以连接到你的设备直接分析内存,这款软件功能很多,可以保存历史分析记录,历史记录路径连接MemPro并收集分配时,它将所有分配存储在磁盘中的文件中,MemPro将为每个会话重复使用相同的历史记录文件,保存mempro文件时,您可以选择嵌入历史记录文件,Puredev
MemPro功能很多,如果你需要清晰查看内存情况就可以下载这款软件!
软件功能
MemPro是Windows的C ++ MemPro分析器。 MemPro可以分析具有Windows兼容pdb文件的任何应用程序。
MemPro是一个单独的应用程序,它连接到使用TCP进行分析的应用程序,并记录有关所有分配和整个内存状态的信息。
连接后,MemPro将跟踪所有分配和释放。您随时可以对内存的整个状态进行快照。然后可以通过多种方式查看这些快照。
MemPro旨在快速高效地工作,并且可以每秒对数千个分配进行性能分析。
拍摄快照
单击快照按钮(带有橙色框的快照按钮)
查看快照
单击呼叫树按钮
现在,您将看到调用树视图,该视图显示了应用程序中所有内存以及从中分配内存的细分。
软件特色
可以快退和快进时间查看在特定内存范围内发生的所有分配和空闲事件。
一旦指定了内存范围,MemPro将返回分配历史记录文件,查找与此范围重叠的所有分配和空闲空间。它将这些分配和空闲存储为事件。然后,您可以在这些事件中前后滑动,以查看分配的内容和时间。
对于跟踪内存损坏非常有用。发生大多数损坏的原因是,某些东西正在写入内存,而不再拥有。它的内存已被释放,可能正在被其他东西使用。当它写入该内存时,会导致未定义的行为或崩溃。由于崩溃是在再次使用该内存时发生的,因此很难确定实际写入该内存的内容。该视图解决了该问题,您可以回退内存并查看先前在损坏地址处分配的内容。
1.最小/最大地址输入您感兴趣的内存范围的最小和最大地址。
2.获取历史记录输入最小/最大地址后,点击“获取历史记录”以获取该范围内所有分配和空闲时间的历史记录。
3.上一个/下一个事件使用这些按钮可以移到下一个和上一个事件。时间滑块和事件列表视图将显示当前事件。
4.事件时间滑块分配事件以绿线显示。免费事件显示为红线。拖动滑块在事件之间移动。黑色三角形显示当前事件。
5.分配栏类似于“内存视图”中的内存栏。显示当前范围内的分配。单击分配(绿色矩形)以获取有关该分配的更多信息。在事件之间拖动时间滑块,可以看到分配出现和消失,并且分配和释放了它们。
6.事件列表显示内存范围内的所有分配事件和空闲事件。该地址是正在分配或释放的分配的地址,类似于大小和时间。选择这些事件还将更新时间滑块。
7.分配信息在分配存储器栏中显示有关当前所选分配的信息。显示分配的开始和结束地址,分配的大小和分配调用堆栈。
安装方法
1、打开MemPro 1.5.6.0_x64.exe软件直接启动,点击install
2、软件显示的协议内容,点击accept接受
3、软件的安装地址C:\Program Files\PureDevSoftware\MemPro
4、软件的安装结束界面,点击finish
5、安装完毕以后将补丁Registration.dll复制到安装地址替换同名文件既可以完成破解
6、打开Puredev MemPro软件如图所示,如果你会英文就可以正常使用软件
使用说明
树视图
调用树视图显示了应用程序内存中的分配位置。每个分配都存储一个调用栈,这些调用栈组合成一个调用栈树,并且为每个符号聚合内存。
分组编辑器是将这些信息分为几类的有效方法。
这可能是MemPro中最有用的视图,因为它可以轻松地向您显示应用程序中内存的位置。
1、逆向层次结构:逆向层次结构,以便根是分配函数。如果您想找出分配最多内存的函数,这将很有用。
2、源代码:切换源代码视图窗口。
3、分组编辑器:显示分组编辑器。有关更多详细信息,请参见“分组编辑器”页面。
4、应用分组:应用当前在分组下拉框中显示的分组。
5、自动扩展:自动扩展当前选定的行及其所有子行,这些行包含应用程序分配的内存的n%以上。值n设置在此按钮右侧的框中。您也可以通过右键单击行来自动展开。
6、调用树:显示所有直接或间接分配内存的所有调用堆栈条目的树。
7、计数:在此符号(包括子符号)上分配的分配数
8、内存:此符号分配的内存量(包括子符号)
9、百分比:进程分配的总内存的百分比。
10、源代码窗口:显示当前所选符号的文件和行
总览
分组编辑器使用通配符过滤器将调用堆栈分组。
将根据组通配符评估调用堆栈中的每个符号,以确定哪个组属于。按照在组列表中显示的顺序检查组。比赛结束后,它将停止检查其他组。与任何组都不匹配的所有调用堆栈都将放入未跟踪的未过滤状态。
分组是组的集合。您可以创建多个组,并使用窗口顶部的下拉框在它们之间切换。可以独立于会话保存和加载组。
如何使用
1、使用“新建”按钮创建新的分组(请参见GUI图中的第3点)
2、新组将以默认名称显示在“已保存的组”列表框中。双击名称以重命名。
3、在“组”列表中输入组名称和组通配符(第4点)。您可以根据需要设置任意数量的组,它们将按照在此显示的顺序进行评估。拖动并滑动以重新排序。
4、单击“应用组”以使用新分组刷新呼叫树。
1.分组编辑器切换按钮:显示/隐藏分组面板
2.应用分组:用分组下拉框中显示的当前分组刷新呼叫树。
3.新建分组:创建,加载和保存分组。创建分组后,它将显示在“已保存的分组”列表框中。
4.组列表:当前分组中所有规则名称的列表
5.组通配符:当前分组中组的通配符。
记忆体检视
内存视图显示:
整个虚拟地址空间
所有4K页面的状态
所有分配
内存内容
窗口右上方是复选框,您可以在其中启用和禁用查看特定类型的内存。这些框还用作不同存储状态的颜色键。
内存条以3种不同的缩放级别显示内存状态。单击一个栏以在下一个栏中显示该内存。右键单击并拖动以滚动,然后使用鼠标滚轮进行缩放。
您可以使用“内存视图”执行以下操作:
查看内存碎片
确定缓存位置
查看内存内容
界面:
1、虚拟内存条:此条以最大缩小级别显示内存。每个像素有多个4K页。每个页面范围在条上方用黑色小线表示。红色的曲折线表示MemPro并未显示所有可用页面以节省空间(将鼠标悬停在上面,并看到内存位置跳转)。
左键单击该条以在4K Page Memory Bar中显示该存储器。
鼠标右键拖动和滚动。
鼠标滚轮进行缩放
2、4K页面内存条:该条显示4K页面级别的内存。页面用黑线分隔。该栏将滚动到当前所选的页面。所选页面将在页面上方和下方以黑色矩形显示。
左键单击该条以在“分配内存”栏中显示该内存。
鼠标右键拖动和滚动。
鼠标滚轮进行缩放
3、分配页面内存条:此条显示内存分配,低至字节分辨率。该栏将滚动到页面栏中当前选择的4K页面。
左键单击分配以查看下面的更多详细信息。
鼠标右键拖动和滚动。
鼠标滚轮进行缩放
4、页面统计信息:显示当前所选4K页面上的信息。
地址页面的起始地址
国家免费,保留或承诺
类型图像,映射,专用
5、分配:显示有关当前所选分配的信息。
国家分配或免费
地址分配开始的地址
大小分配大小
6、呼叫堆栈:显示当前选定分配的呼叫堆栈。
7、内存内容:显示当前所选分配的内存内容。
您可以在地址文本框中键入一个地址以转到任何地址。右侧的下拉列表控制可见的列数。右键单击存储器内容以调出上下文菜单,您可以在其中指定应如何显示存储器字节。
注意:仅当您已使用完整调用堆栈时,此选项才可用。有关更多信息,请参见完整的调用堆栈页面。
8、当前内存地址:当鼠标悬停在其中一个内存条上时,在鼠标光标处显示内存地址。
功能视图
功能视图按功能显示内存的细分。
包含的是指由该函数或其调用的函数分配的内存。
独占表示仅由该功能分配的内存。
%列是内存占已分配内存总数的百分比
类型视图
Types视图显示按类型细分的分配,其中type是要分配的对象的类型。
它是如何工作的?
对于调用堆栈中的每一行,MemPro将尝试查找源代码的文件和行。如果这看起来像是对new的调用,它将确定正在分配的数据类型。例如,这可能是调用栈:
`匿名命名空间':: TestInfiniteAllocs(+232)-mempro_test.cpp(443)
wmain(+98)-mempro_test.cpp(580)
__tmainCRTStartup(+447)-crtexe.c(552)
wmainCRTStartup(+15)-crtexe.c(371)
wkernel32.pdb:(0x773B33AA)(+0)
MemPro检查mempro_test.cpp中的行并找到:
char * p =新的char [size];
然后可以计算出所分配的对象类型为char。
为什么只显示“未跟踪”
MemPro无法计算出该类型有两个原因。一种是应用程序不使用新/删除,而是使用其自己的分配功能。另一个是MemPro找不到源代码文件。例如,如果应用程序在另一台计算机上编译,则会发生这种情况。
泄漏视图
MemPro通过以下三种方式跟踪泄漏:
退出时未释放的分配。
过程中其他任何未引用的分配。
具有特定内存分配模式的分配调用栈
未引用分配
未引用的分配是:
退出应用程序时尚未释放的所有分配
内存中其他任何未引用的分配
(注意:要使用此功能,您必须拍摄完整快照)。
在应用程序仍在运行时,可以检测到后一种类型的未引用分配。 MemPro将为整个进程内存创建快照,并对其进行扫描以查找指向分配的指针。 MemPro找不到指针的任何分配都被视为泄漏。
怀疑泄漏
MemPro分析所有调用堆栈的分配模式。分配按调用堆栈分组。简而言之,如果一个调用栈一直在分配内存并且从不释放内存,那么调用栈图将看起来像一条对角线(从左下到右上)。 MemPro使用一组试探法来分析调用堆栈图,看它看起来像一个泄漏,然后给该调用堆栈评分从0到100,其中100是确定的泄漏。调用栈图是规范化的,因此仅应考虑图的形状。
MemPro可能会带来一些误报,为消除这些误报,您可以使用下面讨论的排除过滤器和最低泄漏分数。
默认情况下,MemPro将仅列出前500个分配。这是为了使GUI保持响应。可以在设置中更改此限制。
泄漏视图:
1.泄漏的调用堆栈数明确泄漏的调用堆栈数。明确的泄漏是指尚未在出口处清除或未被内存中其他任何内容引用的分配。
2.泄漏的分配数泄漏的分配数
3.内存泄漏内存泄漏量
4.可疑的调用栈看起来像正在泄漏的调用栈的数量。使用泄漏试探法对它们进行评估。
5.怀疑的内存泄漏怀疑的泄漏导致的内存泄漏量。
6.最小确定性可疑泄漏必须具有大于此值的置信度百分比才能被视为泄漏。
7.总结在这里,MemPro会告诉您您有多少确定的泄漏以及您有多少可疑的泄漏。
8.排除过滤器MemPro几乎可以肯定会在可疑泄漏中显示一些误报。您可以使用此排除过滤器列表排除这些。输入通配符,任何符号与这些通配符之一匹配的调用堆栈将被排除。
9.计分启发法在这里,您可以控制MemPro用于评估调用堆栈中可疑泄漏的启发法。除非您完全了解它们的工作原理,否则建议您将其保持启用状态,否则可能会收到很多误报。
减速度:梯度在时间刻度的后三分之一中减慢了多少(在内存分配中减慢的Callstack通常不会泄漏)。
年龄分布:有多少个分配以及它们之间的间隔均匀。许多常规分配更可能是泄漏。
泄漏量:与时间范围的开始和结束之间的差异。如果调用栈释放了分配的内存,则不会泄漏。
10.扩展泄漏的调用栈MemPro认为正在泄漏的所有调用栈都将在此处列出。单击行以展开或折叠它们。按确定泄漏的泄漏量排序,然后按可疑泄漏的置信度值排序。
11.有关泄漏的内存泄漏的信息:肯定泄漏了多少内存(未引用的分配)
泄漏的分配:泄漏了多少分配(未引用)
怀疑泄漏信心:MemPro对这个调用堆栈泄漏的信心有多强。
可疑的内存泄漏:可疑的内存泄漏量
可疑泄漏分配:可疑泄漏分配的数量
梯度:在时间间隔的后三分之一中,梯度增加了多少。
减速:在时间范围的最后三分之一中,调用堆栈减速了多少。
年龄分布:有多少个分配以及它们的紧缩程度。
12.调用堆栈图调用堆栈图。红色越多,泄漏越多。泄漏的分配显示为小红色正方形。该图在时间范围和内存泄漏量上进行了标准化。
减去快照
从另一个快照中减去一个快照是查找内存泄漏和内存峰值的有用方法。它可以显示在一个时间范围内分配和释放的所有内容。
如何使用:
1、拍摄两个快照,然后单击“减去快照”按钮(或从工具菜单中)。
2、然后,您将看到一个对话框,您可以在其中选择您感兴趣的两个快照。
3、这将创建一个新的快照,该快照将显示在快照列表视图中。
4、然后,您可以像查看其他任何快照一样查看此快照。
5、请注意,如果某些呼叫站点释放的空间超过了分配的数量,则快照可能包含负值。
使用图形视图减去
有一种使用图形视图来实现上述目的的快速方法。在您感兴趣的范围的开始处按Shift左键,然后将鼠标拖到范围的末尾。您将看到一个蓝色透明矩形。
MemPro将自动在该范围的开始和结束处拍摄快照,并创建一个新快照,该快照将两个快照相减。
这些新快照将出现在快照列表视图中,您可以按常规方式查看它们。
∨ 展开