2017-02-19 3 views
0

Die Ereignisprotokollierung für Windows (ETW) verfügt über eine Funktion zum Erfassen von Stack-Ablaufverfolgungen mit dem Ereignisstream. Ich nehme an, dass sie mit einem Header EVENT_HEADER_EXT_TYPE_STACK_TRACE32 (oder 64) abgerufen/codiert werden. Der Ereignisheader ist jedoch außerhalb der Kontrolle des POV einer Ereignisquelle.So schreiben Sie eine benutzerdefinierte Stack-Ablaufverfolgung mithilfe von ETW

https://msdn.microsoft.com/en-us/library/windows/desktop/aa363760%28v=vs.85%29.aspx

In meiner .net-Anwendung, ich habe eine bestimmte Bedingung ich in einem anderen Thread bin Diagnose (der UI-Thread), indem sie beobachtet. Ich kann Stapelspuren sammeln, die die Bedingung offen legen, die Datenstücke sind vorhanden, aber ich möchte ETW und seine Toolchain für weitere Analysen verwenden.

[Nebenbei, ja, ich bin auf der Suche nach Blockern, aber während die vorhandene Infrastruktur ist großartig für die Diagnose von bekannten individuellen Blockern, ich brauche einen Überblick und Ereigniskorrelation ist in diesem Fall nicht ausreichend. Auch die gesammelten Daten überwältigen das Gerät, auf dem ich sammeln muss. Mein Detektor ist viel klüger, für meinen Fall zumindest.]

Also ich suche (in der Reihenfolge der Präferenz)

  1. eine Möglichkeit, den Stapel I Header der Veranstaltung gesammelt haben, ersetzen
  2. ein anderes Attribut für den Stacktrace verwenden, und ein Weg, um tell Werkzeuge (perfview oder xperf), diese zu verwenden, anstatt
  3. ein Weg, um Schreib ETW .etl kompatibele Dateien ohne ETW (aber in .net), mit voller Kontrolle über den Header (ich brauche nicht die l ive features)

Zeig jemand?

Antwort

0

Ich ging mit Option 4: Verwenden Sie ein völlig anderes Format mindestens ein Werkzeug kann aufnehmen und analysieren. In diesem Fall wurde eine .perfView.xml-Datei geschrieben und die Aufgabe erledigt, obwohl die Analysefunktionen nicht so gut sind, wie ich es mir gewünscht hätte.

Verwandte Themen