Ich habe eine Website, die auf einem Remote-Server ausgeführt wird und Informationen von einer auftretenden Ausnahme abrufen möchte. Ich kann VS nicht installieren oder Remotedebuggen verwenden und habe versucht, verschiedene Versionen von WinDbg mit wenig Erfolg zu verwenden. In meinen lokalen Tests kann ich WinDbg veranlassen, eine C ++ - Ausnahme oder eine CLR-Ausnahme, die ich geworfen habe, zu unterbrechen, kann aber nicht viel mehr Informationen erhalten als "etwas wurde geworfen".
Ist WinDbg der Weg zu gehen, oder gibt es einen anderen Weg, oder bin ich geschraubt, weil ich keine ausreichende Protokollierung habe?
Hängen Sie WinDbg an den Prozess an und geben Sie dann folgende Befehle ein:
%Vor%Die Ausführung wird fortgesetzt (nach dem Befehl go) und bricht jedes Mal ab, wenn eine CLR-Ausnahme ausgelöst wird (oder eine andere nicht behandelte Ausnahme). Wann immer es bei CLR-Ausnahme bricht, sehen Sie:
%Vor% Dann können Sie SOS-Befehle wie !pe
verwenden, um den Ausnahmetyp auszudrucken, !ClrStack
um den Stapel zu stapeln, !dso
, um verwaltete Objekte im Stapel auszugeben usw.
EDIT: Ich hatte Tippfehler in sxe
und sxd
Befehle. Danke an @MStodd, dass du das bemerkt hast.