我有一个ETW提供程序,我的系统使用它来使用TraceEvent API函数记录不透明的二进制数据blob。我的系统本质上是一个高吞吐量的事件处理系统,我希望能够(廉价地)捕获某些对象在通过系统时的序列化状态。这将给我一个重播功能,以便在将来的任何时候我都可以重放事件跟踪并重现在应用程序中产生特定状态的确切事件序列。
它还处于早期阶段,所以目前我对跟踪的唯一控制是使用logman或tracelog之类的工具,它可以创建跟踪控制器,使用.etl将事件记录到跟踪文件中延期。我知道我可以编写一个独立的控制器,它可以实时消耗事件并将事件写入文件本身,但我想在这个阶段尽量避免这种情况(称之为懒惰:))但是,为什么要重写已经存在的东西呢?可用?
那么,有没有人对.etl文件的二进制格式有任何了解?我知道tracedmp可以读取它们并生成CSV,但这对二进制部分没有帮助。如果我可以读取这些文件并解析出我写的blob,那么我基本上会拥有我可以重放的功能,但是我找不到这种文件格式的任何内容。
谢谢, 保罗
答案 0 :(得分:8)
好吧,15分钟回答我自己的问题。必须是某种记录,但我发誓我花了半天时间寻找这个...... :)
OpenTrace / ProcessTrace / CloseTrace
函数允许您使用实时跟踪会话或ETL日志文件中的事件,这似乎正是我所寻找的。 p>