可以使用 Windows 事件跟踪(ETW)来记录公共语言运行时(CLR)事件。 可以使用以下工具创建和查看跟踪:
Windows 性能工具包中的 Xperf 工具。 有关 Xperf 的详细信息,请参阅 Windows 性能博客。
若要捕获 CLR 事件信息,必须在计算机上安装 CLR 提供程序。 若要确认提供程序已安装,请在命令提示符处键入 logman query providers
。 提供商列表将显示。 此列表应包含与 CLR 提供程序对应的项,如下所示。
Provider GUID
-------------------------------------------------------------------------------
.NET Common Language Runtime {E13C0D23-CCBC-4E12-931B-D9CC2EEE27E4}.
如果未列出 CLR 提供程序,则可以使用 Windows Wevtutil 命令行工具在 Windows Vista 及更高版本的作系统上安装它。 以管理员身份打开命令提示符窗口。 将提示目录更改为 .NET Framework 4 文件夹(%WINDIR%\Microsoft.NET\Framework[64]\v4.<。NET 版本>\ 。 此文件夹包含 CLR-ETW.man 文件。 在命令提示符下,键入以下命令以安装 CLR 提供程序:
wevtutil im CLR-ETW.man
捕获 CLR ETW 事件
可以使用 Logman 和 Xperf 命令行工具捕获 ETW 事件,使用 Tracerpt 和 Xperf 工具解码跟踪事件。
若要启用日志记录,用户必须指定以下三项:
进行通信的提供程序。
一个表示一组关键字的 64 位数字。 每个关键字代表服务提供者可以激活的一组事件。 此数字表示要启用的关键字的组合集。
一个表示进行记录的级别(详细信息)的较小数。 级别 1 是最不详细,级别 5 是最详细。 级别 0 是默认值,其含义是提供程序特定的。
使用 Logman 捕获 CLR ETW 事件
在命令提示符下,键入:
logman start clrevents -p {e13c0d23-ccbc-4e12-931b-d9cc2eee27e4} 0x1CCBD 0x5 -ets -ct perf
地点:
此参数
-p
标识提供程序 GUID。0x1CCBD
指定将引发的事件类别。0x5
设置记录的级别(在本例中为详细级别 (5))。该
-ets
参数指示 Logman 将命令发送到事件跟踪会话。该
-ct perf
参数指定QueryPerformanceCounter
函数将用于记录每个事件的时间戳。
若要停止记录事件,请键入:
logman stop clrevents -ets
此命令创建名为 clrevents.etl 的二进制跟踪文件。
使用 Xperf 捕获 CLR ETW 事件
在命令提示符下,键入:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:5 -f clrevents.etl
其中 GUID 是 CLR ETW 提供程序 GUID,
0x1CCBD:5
指跟踪级别 5(详细)及以下级别的所有事件。若要停止跟踪,请键入:
Xperf -stop clr
此命令创建名为 clrevents.etl 的跟踪文件。
查看 CLR ETW 事件
使用下面列出的命令查看 CLR ETW 事件。 有关事件的说明,请参阅 CLR ETW 事件。
使用 Tracerpt 查看 CLR ETW 事件
在命令提示符下,键入:
tracerpt clrevents.etl
此命令将创建两个文件:dumpfile.xml 和 summary.txt。 dumpfile.xml 文件列出所有事件,summary.txt 提供事件的摘要。
使用 Xperf 查看 CLR ETW 事件
在命令提示符下,键入:
xperf clrevents.etl
此命令将打开 Xperf ETL 文件查看器。 在此查看器中,CLR 事件显示在 “通用事件” 视图中。 若要显示按类型分类的事件的数据网格,请选择此视图中的时间区域,然后右键单击并选择“ 摘要”。
将 .etl 文件转换为逗号分隔值文件
在命令提示符下,键入:
xperf -i clrevents.etl -f clrevents.csv
此命令会导致 XPerf 将事件转储为逗号分隔值(CSV)文件,你可以查看。 由于不同的事件具有不同的字段,因此此 CSV 文件在数据之前包含多个标头行。 每行的第一个字段是事件类型,该类型指示应使用哪个标头来确定字段的其余部分。