我编写了一个 ETW 提供程序,我的系统使用它使用 TraceEvent API 函数记录二进制数据的不透明 blob。我的系统本质上是一个高吞吐量的事件处理系统,我希望能够(廉价地)捕获某些对象通过系统时的序列化状态。这将给我一个可重播的特性,以便在将来的任何时候我都可以重播事件跟踪并重现导致应用程序特定状态的事件的确切序列。
它仍处于早期阶段,因此目前我对跟踪的唯一控制是使用 logman 或 tracelog 等工具之一,它们可以创建跟踪控制器以将事件记录到扩展名为 .etl 的跟踪文件中。我知道我可以编写一个独立的控制器,它可以实时消耗事件并将事件写入自己的文件,但我想在这个阶段尽量避免这种情况(称之为懒惰:)),但说真的,为什么要重写已经存在的东西可用的?
那么,有人对 .etl 文件的二进制格式有任何了解吗?我知道像 tracedmp 这样的东西可以读取它们并生成 CSV,但这对二进制部分没有帮助。如果我可以读取这些文件并解析出我编写的 blob,那么我基本上将拥有我所追求的可重播性,但我在这种文件格式上找不到任何东西。
谢谢,保罗