C# ETW。如何在 PerfView 中查看调用堆栈?

C# ETW. How view call stack in PerfView?

给定

  1. 具有动态事件的 ETW 提供程序(继承自 EventSource)的实现。提供商名称 "IDS-IDComplete-DynamicTrace"

  2. 我实现的Windows服务,其中生成了ETW的事件

  3. 我使用 PerfVev 从服务中收集事件:

PerfView.exe collect ETWTrace.etl /merge /zip /OnlyProviders=*IDS-IDComplete-DynamicTrace

  1. 我看到了我所有的活动。

问题

如何在 PerfVev 中查看调用堆栈以便查看对我的代码的调用?

您尚未捕获调用堆栈。在命令行选项 @StacksEnabled 设置为 true 以捕获调用堆栈:/providers=YOUR_EVENTSOURCE@StacksEnabled=true:

PerfView.exe collect ETWTrace.etl /merge /zip /Providers=*IDS-IDComplete-DynamicTrace@StacksEnabled=true