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

问题描述 投票:0回答:2

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

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

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

提前致谢。

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

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

我的提供者注册记录的图像:

etw xperf windows-performance-analyzer
2个回答
1
投票

我在msdn论坛找到答案,here is the same question asked by myself.

xperf -merge is the key!

整个步骤如下:

  1. 安装我的软件并开始在自定义机器上收集事件数据。 (无需注册我的提供者。)调用xperf -start mysession -on MY_PROVIDER_GUID开始收集事件数据。
  2. 运行一段时间后,调用xperf -stop mysession -d poor.etl停止收集并保存到poor.etl文件。
  3. 将poor.etl复制到我的开发机器(我的提供商已注册)和callxperf -merge poor.etl good.etl
  4. 用wpa打开good.etl,我可以看到我预期的每一个细节。

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


0
投票

如果使用.Net,则使用EventSource package,它会将清单添加到ETL(ProviderName/ManifestData)中。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.