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.
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
Tags und Links c# debugging portable-class-library