我正在嘗試使用XPerf來測試性能分析應用程序。我的目標是在我的C#應用程序中記錄開始/停止事件,並分析這些事件之間的某些內核度量標準。用XPerf查看事件數據?
我在我的應用程序中創建了一個TraceListener
和TraceSource
並將事件記錄到源。然後我用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");
}
有您註冊的GUID?檢查命令「logman查詢提供程序」以查看GUID是否已註冊 – yxk