Marvin's Blog【程式人生】

Ability will never catch up with the demand for it

16 May 2020

WDK文档阅读笔记(一):软件追踪工具

本文是的Windows Driver Kit的Tools for Software Tracing章节的阅读笔记。

Tools for Software Tracing

WDK提供了一系列的应用程序以及命令行工具来进行软件跟踪。这些工具设计上支持ETW(Event Tracing for Windows)。这些工具可以访问Windows内建的跟踪会话,比如Global Logger trace session和NT Kernel Logger trace session。

为了生成可供追踪用的事件,软件注入生成事件的代码,可以使用WPP software tracing或者ETW。WPP的主要目的是采集开发过程中用于分析和调试的事件;ETW则可以用于任何目的。

WPP需要TMF文件才能解码trace,这些TMF文件要从pdb中生成。每个生成者只能被一个会话跟踪;字符串不能本地化;生成者没有ACL控制,只能避免GUID和TMF被他人获取。

ETW(基于manifest或者tracelogging)的则比较灵活,没有WPP这些限制。

另外,WMI(Windows Management Instrumentation)作为Windows驱动模型的扩展,也可以添加软件追踪功能。

可以作为ETW追踪控制器的工具:

  • tracelog
  • traceview(既是控制器又是采集者)

可以作为ETW采集器的工具

  • tracefmt
  • traceview

tracelog的用法示例

rem 开启一个会话
tracelog -start session1 
rem 停止一个会话
tracelog -stop session1

rem 更新一个会话,指定-rt选项,即实时记录
tracelog -update session1 -rt
rem 启用一个通道,这里使用*AnEtwProvider作为通道名
tracelog -enable session1 -guid *AnEtwProvider

Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)

Download Debugging Tools for Windows 下载WinDbg Preview或者老式的WinDbg(包含着Windows SDK中)

Microsoft public symbol server,调试符号表可以从服务器下载:

set _NT_SYMBOL_PATH=srv*DownstreamStore*https://msdl.microsoft.com/download/symbols

其他

(本篇完)