首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XPerf查看事件数据?

使用XPerf查看事件数据?
EN

Stack Overflow用户
提问于 2012-08-31 10:46:57
回答 2查看 1.3K关注 0票数 3

我正在尝试使用XPerf来检测应用程序以进行性能分析。我的目标是记录C#应用程序中的启动/停止事件,并分析这些事件之间的某些内核指标。

我正在应用程序中创建一个TraceListenerTraceSource,并将事件记录到源中。然后,我使用logman启动两个会话:一个捕获来自提供程序的事件,另一个捕获内核事件(xperf -on DiagEasy)。在我的会话结束时,我使用XPerf将这些文件合并在一起并查看/覆盖图形。所有这些都运行得很好。

我的应用程序的事件显示在“通用事件”图表中,但是这些事件没有标识信息(没有名称,没有事件数据),所以很难区分哪个事件是哪个事件。我知道我的事件数据被捕获了,因为当我在跟踪输出上运行tracerpt时,它会出现在'dumpfile.xml‘中。有没有办法将事件名称或事件数据附加到XPerf中的'Generic Events‘?我使用XPerf的方法是错误的吗?

下面是一些示例代码,演示了如何使用ETW:

代码语言:javascript
复制
static Guid providerId = new Guid("{4A9FD4F3-032B-4733-8455-03BC71ECEFB0}");
static void Main(string[] args)
{
    EventProviderTraceListener listener =
        new EventProviderTraceListener(providerId.ToString());
    TraceSource source = new TraceSource("ProductRepository", SourceLevels.All);
    source.Listeners.Add(listener);

    int id = 12;
    source.TraceData(TraceEventType.Warning, 12, "Some sample data");
    source.TraceEvent(TraceEventType.Start, 1, "TraceEvent.Start({0})", id);
    source.TraceEvent(TraceEventType.Stop, 1, "TraceEvent.Stop({0})", id);
    source.TraceInformation("TraceInformation");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-03 22:36:16

使用.net 4.5中的新System.Diagnostics.Tracing.EventSource类。Vance创建了一个如何使用它的演示:

System.Diagnostics.Tracing.EventSource 简介教程:在C#中记录ETW事件:C# http://blogs.msdn.com/b/vancem/archive/2012/07/09/logging-your-own-etw-events-in-c-system-diagnostics-tracing-eventsource.aspx

票数 1
EN

Stack Overflow用户

发布于 2013-01-06 10:04:49

正如user31273提到的,XPerf理解事件的有效负载的关键是注册提供者的清单。我没有看到magicandre1981链接的视频,但我打赌Vance提到了如何注册你的C#提供商。记住要指定正确的操作码(start/stop)来获得您想要的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12208243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档