2012-08-31 53 views
3

我正在嘗試使用XPerf來測試性能分析應用程序。我的目標是在我的C#應用​​程序中記錄開始/停止事件,並分析這些事件之間的某些內核度量標準。用XPerf查看事件數據?

我在我的應用程序中創建了一個TraceListenerTraceSource並將事件記錄到源。然後我用logman開始兩會:一個捕獲事件從我的供應商,而另一個捕獲內核事件(xperf -on DiagEasy)。在會議結束時,我使用XPerf將這些文件合併在一起並查看/疊加圖形。所有這一切運作良好。

我的應用程序的事件「一般事件」圖表中顯示出來,但是這些事件有任何標識信息(沒有名字,沒有事件數據),所以很難說哪個事件是哪個。我知道我的事件數據被捕獲,因爲它在跟蹤輸出上運行tracerpt時出現在'dumpfile.xml'中。有沒有辦法將事件名稱或事件數據附加到XPerf中的「通用事件」?我的XPerf使用方法錯了嗎?

下面是一些示例代碼演示如何我使用ETW:

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"); 
} 
+0

有您註冊的GUID?檢查命令「logman查詢提供程序」以查看GUID是否已註冊 – yxk

回答

1

由於user31273提到鍵XPerf理解的有效載荷你事件是註冊你的提供者的清單。我沒有看到magicandre1981鏈接的視頻,但我敢打賭,萬斯提到了如何註冊您的C#提供商。記住指定正確的操作碼(開始/停止)來獲得你想要的。