0

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

我不希望我的 .man 文件打包在安装文件中,所以我不必担心泄漏它。当然我也不能注册我的提供商。

有没有办法尽可能好地查看 .etl(在没有我的提供商先注册的情况下收集)?

提前致谢。

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

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

图片:在我的提供商未注册的情况下录制

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

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

4

2 回答 2

1

我在 msdn 论坛上找到了答案,这是我自己提出的同一个问题。

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,我可以看到我所期望的每一个细节。

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

于 2017-03-30T14:24:43.827 回答
0

如果您使用 .Net,请使用EventSource 包,它将清单添加到 ETL ( ProviderName/ManifestData) 中。

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

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

于 2017-03-29T15:18:28.223 回答