.net traceprocessing .net跟踪处理是否具有与ETW2JSON相同或更好的事件解析支持?

.net traceprocessing .net跟踪处理是否具有与ETW2JSON相同或更好的事件解析支持?,.net-traceprocessing,.net Traceprocessing,一般来说,我已经阅读了很多关于跟踪处理和ETW的文档,但仍然觉得缺少一些细节。跟踪处理库是否支持处理.etl文件中的所有事件?例如,声明支持以下内容,并提供反序列化事件的库: Windows MOF类事件、Windows Vista清单事件和EventSource.NET事件。它还了解XPERF(WPR)作为其合并过程的一部分添加的事件(以提供PDB信息),这些事件用于诸如Windows Performance Recorder之类的探查器工具 跟踪处理库是否为处理.etl文件中的所有类型的事件

一般来说,我已经阅读了很多关于跟踪处理和ETW的文档,但仍然觉得缺少一些细节。跟踪处理库是否支持处理
.etl
文件中的所有事件?例如,声明支持以下内容,并提供反序列化事件的库:

Windows MOF类事件、Windows Vista清单事件和EventSource.NET事件。它还了解XPERF(WPR)作为其合并过程的一部分添加的事件(以提供PDB信息),这些事件用于诸如Windows Performance Recorder之类的探查器工具

跟踪处理库是否为处理
.etl
文件中的所有类型的事件提供了等效或更好的支持

例如,假设我正在通过泛型事件进行处理

使用(ITraceProcessor trace=TraceProcessor.Create(etlPath))
{
IPendingResult genericEvents=trace.UseGenericEvents();
trace.Process();
IGenericEventDataSource genericEventDataSource=genericEvents.Result;
foreach(genericEventDataSource.Events中的IGenericEvent gevent)
{
//过程事件
}
} 
使用上述代码,我是否可以访问
.etl
文件中的所有事件?

(我是Microsoft的开发人员,从事TraceProcessor项目。)

我没有ETW2JSON项目的经验,因此无法进行比较

有四种:

  • MOF/Classic-活动可在
  • Windows跟踪预处理器(WPP)-中提供的事件
  • 已显示-事件可在
  • TraceLogging-中提供的事件
(您可以使用on来区分显示事件和跟踪记录事件。)


我不知道跟踪中有哪种类型的事件不会出现在这三个数据源中,但如果您发现缺少什么,请告诉我。

我知道有关显式事件和经典ETW事件的信息。但什么是WPP和跟踪记录事件?它们通常是如何编写的,由谁编写的?任何文档链接?事件作者感兴趣的四种事件类型在三个主要方面有所不同:1)如何在代码的有效负载中使用正确的元数据触发事件2)在最终ETL中磁盘上的每个事件有多大3)在处理ETL经典事件时如何使用它们没有固定的有效负载模式,因此,触发代码和消费代码都需要知道/同意模式。这使得事件在跟踪中很小,因为没有关于占用空间的事件模式的元数据,但它使事件的消费/解码变得不那么简单。显式事件以清单文件的形式修复负载模式。这同样使事件在跟踪中变得很小,因为没有模式元数据,并且也有助于版本控制,因为可以在清单中记录不同的事件版本。然而,这需要清单存在以进行解码,当触发代码被更改以在有效负载中包含更多/不同的元数据时,清单会被主动更新,因此会使用于迭代/进行更改的开发循环复杂化。将事件架构数据与跟踪中的事件数据捆绑在一起。这意味着事件通常更大,触发它们的性能通常不如显式/经典事件,但这意味着解码更灵活,因为模式信息保证存在。它也有助于开发循环,因为没有清单文件来保持更新。不过,版本控制更为棘手,这可能会在解码时引起问题。是显示事件和追踪事件之间的一种中间状态。它们使用“printf”样式的命令来触发事件,这使得在代码中编写变得非常容易。与显式事件一样,解码WPP事件需要单独的文件。和跟踪事件一样,该文件通常是作为构建过程的一部分创建的,因此不需要维护单独的清单。(有关解码的更多信息,请参阅)。