如何通过wpa查看自定义提供商的事件(在没有提供商注册的情况下收集)

时间:2017-03-29 02:51:14

标签: etw xperf windows-performance-analyzer

我尝试使用显式基本事件来记录事件以进行调试和分析。 但我有一个问题:当我在我的提供者注册时记录,一切都很好,当在WPA中打开.etl文件时,我可以查看尽可能多的信息。 但是如果我在没有注册提供者的情况下收集事件,当我在WPA中打开.etl文件时,一切都不是人性化的。 那么,在开始收集活动之前,我必须注册我的提供商吗?我希望不会,因为如果是这样,我必须冒险泄漏我的.man文件,所以其他人也可以使用它来获取详细跟踪日志。这是不可接受的!

我不希望我的.man文件打包在安装文件中,因此我不需要担心泄漏它。当然,我也无法注册我的提供商。

有没有办法查看.etl(尽可能先收到我的提供商注册)?

提前感谢。

下面是可能使我说的更容易理解的图片。

没有我的提供者注册的记录图片:

image:record without my provider registered

我的提供商注册的记录图片:

image:record with my provider registered

2 个答案:

答案 0 :(得分:1)

我在msdn forums,here is the same question asked by myself.

找到了答案

xperf -merge 是关键!

整个步骤如下:

  1. 安装我的软件并开始在自定义计算机上收集事件数据。 (无需注册我的提供者。) 致电xperf -start mysession -on MY_PROVIDER_GUID开始收集活动数据。

  2. 运行一段时间后,请致电xperf -stop mysession -d poor.etl停止收集并保存到 poor.etl 文件。

  3. poor.etl 复制到我的开发计算机(我的提供商已注册)并致电xperf -merge poor.etl good.etl

  4. 使用wpa打开 good.etl ,我可以按预期看到每个细节。

  5. 就是这样。希望它会帮助像我这样的其他人。谢谢大家。

答案 1 :(得分:0)

如果您使用.Net,请使用EventSource package,这会将清单添加到ETL(ProviderName/ManifestData)。

通过这种方式,您不需要在捕获和解码系统上安装清单。清单现在是ETL的一部分。

当然,如果有人获得ETL,他可以使用Perfview转储清单。