CLR完全介绍: .NET的内部诊断工具2011-11-14 msdn Jonathan Keljo很多诊断工具都需要使用 CLR 分析 API,甚至包括那些在严格意义上讲不是探查器的工具。因此,如 果您曾经想知道这些工具是如何工作的,那么,了解 API 的分析会是个良好的开端。在本专栏中,您将 看到它们是如何工作的,并了解一些有用的提示和技巧。您还将在“其他分析资源”侧栏内找 到一些基本的资源。若要使用 CLR 分析 API,需要使用非托管语言(通常是 C++)来创建 DLL,然后设置一些环境变量, 用于指导公共语言运行库 (CLR) 加载 DLL 并允许它使用分析 API。此 DLL 加载后,实际上会变成 CLR 自身的扩展,以接收回调、请求信息并对 CLR 的执行进行深层次的更改。分析 API 可以就 CLR 和托管 代码中发生的很多活动发出通知,这些活动包括 Appdomains 的创建和析构、程序集的加载和卸载、JIT 编译函数、执行函数、引发和捕获异常以及进行垃圾回收。使用分析 API,可以获得有关应用程序各部分 的信息,例如,程序集的名称和位置、类型和函数的说明以及对象在内存中的位置和分布。最后,可以使 用分析 API 来修改设置、说明和类似信息,包括禁用 JIT 编译器中的优化、更改函数的中间语言 (IL) 、甚至创建新的类型和函数。您将看到,这些功能结合在一起可以为许多诊断工具提供动力。性能探查器性能探查器是显示应用程序如何利用时间的诊断工具。如果应用程序中的某些 操作运行得太缓慢,则探查器可以识别出问题出在哪里,以便将优化工作集中在相应的地方。性 能探查器有两个主要类别:跟踪和采样。跟踪探查器的基本任务是在日志中记录应用程序运行时每个函数 的调用或返回所用的时间。从此日志中,探查器可以知道控制流如何在整个应用程序中移动,以及时间的 花费情况。在 Visual Studio® 2005 性能工具中,从性能向导中选择“检测”可指定跟 踪探查器(参见图 1)。

图 1 Visual Studio 2005 中的性能分析