Erzeugen eines Dumpfiles

02/11/2009 - 10:35 von Michael Burkhardt | Report spam
Hallo,
auf einer Entwickler Konferenz habe ich gehört dass es möglich ist bei einem
eventuell abgestürtzten Programm ein dumpfile zu erzeugen, welches man in
seine Entwicklungsumgebung (Visual Studio 2008) öffnen kann und somit die
Sittuation und den Speicher abbilden kann, wie er zur zeit des Absturzes war.
Gibt es für diese Technologie einen Frameworkaufruf? Wenn ja wie heißt
dieser.

Mfg Michael
 

Lesen sie die antworten

#1 Kerem Gümrükcü
02/11/2009 - 12:15 | Warnen spam
Hallo Michael,

Gibt es für diese Technologie einen Frameworkaufruf? Wenn ja wie heißt
dieser.



Nein, dem ist nicht so, so was gibt es nicht. Du hast im Prinzip bei einem
Vollabsturtz deines Programmes, was u.U. auch das .NET Framework
mitnimmt keine Möglichkeit überhaupt noch was aus dem .NET Framework
aufzurufen. Es gibt da einige wenige Möglichkeiten, die die hier zur
Verfügung
hast. Handlet es sich bei deinem Absturtz um eine vom .NET Framework
generierte Exception, so kannst Du einen StackTrace ab dem Absturtz (wenn
Du die Exception abgefangen hast!) erstellen und diesen anzeigen/speichern
etc. Dazu gebe ich Dir spàter ein Beispiel! Du kannst auch von dem gesamten
Programm einen Dump erstellen (vermutlich das was Du willst), der
unterschiedliche
"Level" beinhalten kann. Wenn dein Program als Debug kompilliert ist und
innerhalb
des Debug Modes in der IDE abstürtzt, so kannst Du alles sauber debuggen,
d.h.
Du hast volle Einsicht auf Stacks, Speicher, Heaps, Variablen, Parameter,
etc. in
den einzelnen kleine Fensterchen unten in der IDE (bei mir auf Englisch
"Locals",
"Watch", Stack Trace", etc...), Stürtzt dein Program im Release Modus ab, so
kannst
Du ausser der Exception nicht mehr viel sehen und auch den Fehler nicht mehr
ohne weiteres zurückverfolgen, bzw. wenn Du Assembler oder ILCode kannst,
dann kannst Du dir das ansehen, was aber nicht einfach ist, wenn man damit
keine Erfahrung hat. Stürtzt aber dein Program wàhrend der Laufzeit ohne
IDE ab, so kannst Du nur noch mit einem externen Debugger diesen Absturtz
abfangen und debuggen. Das geht entweder mit der VS IDE oder einem anderen
Debugger. Ich persönlich mag OllyDbg und WinDbg (googeln!). Du kannst
aber auch im laufenden Betrieb einen Dump deines Programes erstellen. Dafür
hast Du zwei "gàngige" Möglichkeiten. Zum einen kannst Du die Funktion der
DbgHelp-Library benutzen: MiniDumpWriteDump(...) hier dazu mehr:

[MiniDumpWriteDump Function]
http://msdn.microsoft.com/en-us/lib...85%29.aspx

Zum anderen kannst Du die "User Mode Process Dumper" Umgebung
dafür benutzen (vorzuziehen, da dieser verflucht gut konfigurierbar ist!):

[User Mode Process Dumper Version 8.1]
http://www.microsoft.com/downloads/...laylang=en

Du kannst auch einen StackTrace und jede Menge Informationen im laufenden
Betrieb
aus deinem Program extrahieren. Ein Beispiel befindet sich in meinem
aktuellen
Hobby Projekt "Device Remover". Du kannst das gerne mal ausprobieren: Lade
den DR herunter und installiere den, Du kannst auch die Standalone nehmen,
die Links findest Du unten in meiner Signatur! Nach dem starten gib unten in
dem Befehlsfeld "tde" ein und dann kommt ein Exception Handler, der alle
möglichen
Informationen über die Exception hat. Das geht aber NUR dann, wenn Du die
Exception
abfàngst und das Program nicht mit dem .NET abstürzt!

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de

Ähnliche fragen