哪些.NET性能和/或内存分析器允许我分析DLL?

时间:2010-03-12 02:05:55

标签: c# performance profiling memory-profiling

我为其他程序编写了很多基于.NET的插件,这些程序通常被编译为DLL,这是由本机应用程序启动的。我一直在使用Equatec的分析器,它工作得很好,但现在想要具有更多功能的东西,包括分析内存使用情况的能力。

我尝试了Red Gate的Ant Profiler,但据我所知,没有办法分析DLL。唯一的选择是分析EXE。

所以我的问题是有哪些其他分析工具可以让我分析单个库DLL而不是EXE。我假设这需要像Equatec一样将配置文件代码注入库中吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

.Net Memory Validator.Net Performance Validator都允许您分析一个dll。

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

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

答案 2 :(得分:0)

这可能不再适用于您,但我认为我会把它放在这里作为后代,Redgate Ants Profiler允许您使用自定义过滤器配置单个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中方法的数据。

网站中包含的文字,以防链接死亡。