使用 ETW 改善调试和性能优化
2008-11-17 17:39:25 来源:WEB开发网核心提示: 图 1ETW 体系结构事件提供程序指的是一种可以将事件写入 ETW 会话的逻辑实体,任何可记录的重要活动均可作为事件,使用 ETW 改善调试和性能优化(3),每个活动由记录到 ETW 中的一个事件表示,事件提供程序可以是用户模式应用程序、托管应用程序、驱动程序或任何其他软件实体,在 Wi
图 1ETW 体系结构
事件提供程序指的是一种可以将事件写入 ETW 会话的逻辑实体。任何可记录的重要活动均可作为事件,每个活动由记录到 ETW 中的一个事件表示。事件提供程序可以是用户模式应用程序、托管应用程序、驱动程序或任何其他软件实体。唯一的要求是,事件提供程序必须通过注册 API 向 ETW 注册一个提供程序 ID。提供程序首先向 ETW 注册,然后调用 ETW 日志记录 API 写入来自代码内多个点的事件。当 ETW 控制器应用程序动态启用提供程序时,对日志记录 API 的调用将事件发送给控制器指定的特定跟踪会话。事件提供程序发送给跟踪会话的每个事件由一个包含事件元数据和其他可变用户上下文数据的固定标头构成。由于很多操作系统组件中事件检测的不断增多,因此就连为 Windows Vista 设计的一个简单程序也将包含多个事件提供程序作为组件。
当事件被记录到会话时,除用户提供的数据外,ETW 还会添加一些额外的数据项。其中包括时间戳、进程和线程 ID、处理器编号和日志记录线程的 CPU 使用率数据。这些数据项被记录在 ETW 事件标头中,并连同提供程序提供的可变事件内容一起传递给事件使用者。很多跟踪使用者发现,这些数据字段对于他们的分析必不可少。
控制器可以启动和停止 ETW 会话,并为会话启用提供程序。在调试和诊断等情况下,可以根据需要调用控制器工具以收集深度跟踪。相反地,对于那些始终需要传递给事件查看器的事件,例如针对管理员的事件(稍后会给出定义),事件日志记录服务会在事件注册时自动启用提供程序。在 Windows Vista 中,控制器必须具有 ETW 权限以控制会话。默认情况下只有一小部分有特权的用户才被授予该权限。
更多精彩
赞助商链接