C # Tragbares Klassenbibliotheksäquivalent von System.Diagnostics.StackTrace

9

Ein Programm, an dem ich gerade arbeite, hat eine Logging-Funktion namens "Error", um Fehler zu melden, ohne das Programm zu stürzen. Allerdings würde ich gerne einen Stack-Trace einbauen, damit diese nicht-fatalen Fehler einfacher zu beheben sind. Mein erster Instinkt war System.Diagnostics.StackTrace zu verwenden, was in PCLs leider nicht verfügbar ist.

Dann habe ich versucht zu werfen und sofort eine Ausnahme zu fangen.

%Vor%

Leider bietet dies nur den Anfang des Aufruf-Stacks: Da es den Stapel auf seinem Weg nach unten nicht entwirrt, liefert es keine nützlichen Informationen. Meine Frage ist also: Wie bekomme ich einen Stack-Trace in der ac # PCL-Funktion, ohne einen Fehler zu erzeugen und ihn am unteren Ende des Stacks einzufangen? Ich würde es vorziehen, den Code vollständig in der PCL und vermeiden Sie die Verwendung von Abstraktionen und plattformspezifischen Implementierungscode für etwas so Triviales.

Bearbeite als Antwort auf einen Kommentar: 'neue Exception werfen (ex) Fügt dem Stack-Trace nur einen weiteren Layer hinzu, so dass er zwei Zeilen in der Stack-Trace-Funktion hat, aber immer noch nicht den vollständigen Trace abruft.

    
Colorfully Monochrome 27.12.2014, 09:05
quelle

1 Antwort

-1

Versuchen Sie, die Environment.StackTrace-Eigenschaft .

  

Die StackTrace-Eigenschaft listet Methodenaufrufe in umgekehrter chronologischer Reihenfolge auf   Reihenfolge, das heißt, der neueste Methodenaufruf wird zuerst beschrieben, und   Eine Zeile mit Stack-Trace-Informationen wird für jeden aufgerufenen Methodenaufruf aufgelistet   der Stapel. Die StackTrace-Eigenschaft meldet jedoch möglicherweise nicht so viele   Methodenaufrufe wie erwartet aufgrund von Codeumwandlungen während   Optimierung.

BEARBEITEN:

In der Versionsbeschreibung wird darauf hingewiesen, dass die Umgebungsklasse unterstützt wird von PCL :

  

Versionsinformationen .NET Framework Unterstützt in: 4.6, 4.5, 4, 3.5,   3.0, 2.0, 1.1, 1.0 .NET Framework-Clientprofil Unterstützt in: 4, 3.5 SP1 Portable-Klassenbibliothek Unterstützt in: Portable Class Library .NET   für Windows Store-Apps Unterstützt in: Windows 8 Unterstützt in: Windows   Telefon 8.1 Unterstützt in: Windows Phone Silverlight 8.1 Unterstützt in:   Windows Phone Silverlight 8

    
Lajos Arpad 27.12.2014 09:43
quelle