免注册的探查器启动和附加

从 .NET Framework 4 版开始,可以在应用程序启动时附加探查器(启动-加载),也可以在应用程序运行时附加探查器(附加-加载)。 这两个选项都提供了启动尚未注册为 COM 组件的探查器的能力。

这两个方法使用不同的协议来启动探查器,以下各节对它们进行了讨论。

启动-加载探查器

当启动要分析的应用程序时,将加载启动-加载探查器。 在 .NET Framework 4 之前,启动加载是加载探查器的唯一方法。 必须注册探查器并已通过下列环境变量的值定位这些探查器:

  • COR_ENABLE_PROFILING=1

  • COR_PROFILER={探查器的 CLSID}

公共语言运行时 (CLR) 使用来自 COR_PROFILER 的 CLSID 在注册表的 HKEY_CLASSES_ROOT 中查找探查器。

从 .NET Framework 4 开始,可以继续注册探查器;但是,在执行注册表查找之前将检查另一个环境变量:

  • COR_PROFILER_PATH=探查器 DLL 的完整路径

如果存在 COR_PROFILER_PATH,则使用其值查找探查器,并跳过注册表查找。

说明:

  • COR_PROFILER_PATH 是可选的。 如果未指定 COR_PROFILER_PATH,则使用探查器的 CLSID 在注册表中查找其路径。

  • 如果指定 COR_PROFILER_PATH 并注册探查器,则 COR_PROFILER_PATH 优先。 如果 COR_PROFILER_PATH 指向无效的路径,则探查器将无法加载,即使已注册探查器也是如此。

  • COR_PROFILER 始终是必需的。 如果指定 COR_PROFILER_PATH,则跳过注册表查找;但是,CreateInstance 调用仍需要来自 COR_PROFILER 的 CLSID。

附加-加载探查器

从 .NET Framework 4 开始,可以将探查器附加到正在运行的应用程序。 有关此功能的更多信息,请参见探查器附加和分离。附加-加载探查器使用 ICLRProfiling::AttachProfiler 方法的 wszProfilerPath 参数查找探查器 DLL 文件的位置。如果 wszProfilerPath 为 null,则运行时会通过在注册表中查找在 pClsidProfiler 参数中指定的 CLSID 来尝试查找探查器。

请参见

概念

分析概述

其他资源

分析(非托管 API 参考)

非托管 API 参考