2010-03-12 27 views
0

我为其他程序编写了许多基于.NET的插件,这些程序通常编译为一个由本地应用程序启动的DLL。我一直在使用Equatec的分析器,这个分析器效果很好,但现在想要更多的功能,包括能够分析内存使用情况。哪个.NET性能和/或内存分析器将允许我分析DLL?

我尝试了Red Gate的Ant Profiler,但据我所见,没有办法来配置一个DLL。唯一的选择是配置一个EXE。

所以我的问题是什么其他分析工具可用,这将允许我配置单个库DLL而不是EXE。我假设这需要向Equatec注入配置文件代码到库中?

回答

0

.Net Memory Validator.Net Performance Validator都允许你简介一个dll。

您必须在设置对话框的“钩子DLL”部分指定您感兴趣的DLL(或不感兴趣)。然后启动您的应用程序 - 仅收集指定DLL中的数据。

完全披露:我是公司的软件工程师,创建这些工具。

1

是的,这确实有效。 DLL只是一个代码块,它会与EXE中的代码合并。一个DLL不能“拥有”任何AppDomain的内存。但是,您可以看到在来自DLL的代码中花了多少时间。

如果你编写一个测试程序本身没有做任何主要的内存分配,但是调用DLL中的类的方法,那么你可以将内存使用归因于DLL,而不会出现问题。然而,编写这样的测试程序并使其类似于在真实程序中使用DLL代码的方式并不那么容易。

0

这可能不再与您无关,但我想我把它拿出来这里为后人,展鹏蚂蚁探查器允许您使用自定义过滤器来分析一个DLL:

http://www.red-gate.com/supportcenter/content/ANTS_Profiler/articles/profiling_single_dotnet_assembly

我们使用ANTS Profiler 3项目向导以通常的方式设置“CoolApp”的性能分析。向导的最后一个屏幕是我们可以自定义项目以限制只分析一个库的分析。我们指定我们想要使用自定义过滤器来限制将被分析的应用程序的区域。

我们编辑自定义过滤器,并指定我们只对分析特定命名空间感兴趣,如下所示。在这种情况下,我们设置了一个过滤器,它将导致ANTS Profiler只对属于RedGate.Library1命名空间的方法进行剖析。这正是我们想要的,我们现在准备开始分析。

我们现在可以按照通常的方式进行分析。但是,当我们通过拍摄快照或关闭应用程序来获得性能分析结果时,它们将只包含有关RedGate.Library1.dll中方法的数据。

包含来自网站的文本,以防万一链接死机。