使用 ETW 改善调试和性能优化
2008-11-17 17:39:25 来源:WEB开发网最初引入 ETW 的操作系统是 Windows 2000。自此开始,各种核心的操作系统和服务器组件开始纷纷采用 ETW 对其活动进行检测。现在,ETW 已成为 Windows 平台中的主要检测技术之一。越来越多的第三方应用程序也开始采用 ETW 进行检测,有些则利用 Windows 自身提供的事件。ETW 还被提取到 Windows 预处理器 (WPP) 软件跟踪技术中,为跟踪“printf”样式的消息提供了一组简单易用的宏,以便用于开发过程中的调试。
在 Windows Vista™ 上,ETW 发生了改头换面的变化,其中最重大的变化之一就是引入了统一的事件提供程序模型和 API。简而言之,新的统一 API 对跟踪结果进行日志记录并将结果写至事件查看器,为事件提供程序提供了一种一致的、简单易用的机制。同时,还添加了一些用于改善开发人员和用户体验的新功能。在本文中,我们将介绍新的 ETW 提供程序模型,并为大家讲解开发人员应如何在基于 Windows Vista 的应用程序中采用这一新模型。
首先要对 ETW 体系结构和使用模型进行概述,然后再讲解新的事件模型和 API。接下来对事件检测的设计和实现进行简要介绍,最后再了解用于控制 ETW 会话、处理所记录事件并分析这些事件以生成更高一级报告的随机工具。
Windows 事件跟踪
ETW 的核心体系结构如图 1 所示。如图所示,ETW 主要包含四种类型的组件:事件提供程序、控制器、使用者和事件跟踪会话。事件跟踪会话中会发生缓冲和日志记录,此会话用于接受事件并创建一个跟踪文件。ETW 会话可以使用多种日志记录模式。例如,可以对会话进行配置,直接向使用者应用程序传送事件,或在文件达到特定大小时通过回绕在某个文件中重写旧事件。为每个会话创建的单独写线程会将这些事件刷新到文件或实时使用者应用程序中。要实现高性能,可以使用每服务器的缓冲区,这样无需在日志记录路径中设置锁定。
更多精彩
赞助商链接