Artikel-ID: 892277 - Geändert am: Freitag, 18. Mai 2007 - Version: 2.4 Problembehandlung bei ASP.NET mit WinDbg und SOS-Erweiterung
ASP .NET Support Voice-SpalteProblembehandlung bei ASP.NET mit WinDbg und SOS-Erweiterungdiese Kolumne an Ihre Bedürfnisse anpassen wir möchten Sie Ihre Ideen zu den Themen zu senden, die Sie interessieren einladen möchten, und behandelt Probleme, die Sie anzeigen möchten, in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen. Sie können Ihre Ideen und ihr Feedback über das Formular Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) senden. Es gibt auch eine Verknüpfung zu dem Formular am unteren Rand dieser Spalte.Auf dieser SeiteErneut Hallo und Willkommen bei der die Spalte Support Voice-Edition Januar 2005. Noch einmal möchte ich Jim Cheshire, einen Supportmitarbeiter hier bei Microsoft Unterstützung von ASP.NET für seine Beiträge danken. Gérard hat sich tolle Ideen für Support Voice-Kolumne und weiterhin freigeben möchten. Suchen für Gérards Beiträge letzten Monat und über den nächsten Monat oder so ein, und senden Sie uns wie immer Ihre Vorschläge für zukünftige Spalten. Jim Danke! Gérard hat mit Microsoft sechs Jahren auf die Teams FrontPage, VB- und ASP.NET gearbeitet. Während dieser Zeit er hat für das Office Developer Center auf MSDN geschrieben, und er ist Autor von einem Buch auf FrontPage Inhalte Edition mithilfe von Microsoft Office FrontPage 2003 . Jim hat auch eine Website, in dem er bietet kostenlose Add-Ins für FrontPage zum Aktivieren von Webentwicklern das Microsoft-Produkten treffen. Hier ist die Website-Adresse: http://www.jimcosoftware.com
(http://www.jimcosoftware.com)
So geben Sie pull von einem Stuhl, deaktiviert die Schuhe kick und Lesen Sie unsere Rubrik alle zur Problembehandlung bei ASP.NET und beachten Sie, dass Sie Ihre Ideen zu uns auch über die "ASK FOR IT" Verknüpfung in jeder Spalte enthalten, die wir Veröffentlichen absenden können. Jeremy Problembehandlung bei ASP.NET mit WinDbg und SOS-ErweiterungEin guter Entwickler wird für alle Notfall planen. Natürlich entwickelt Teil der Planung einige stabile Routinen für die Ausnahmebehandlung. Viele ASP.NET-Entwickler werden Ausnahmen behandeln, indem den Benutzer mit einer ordentlich formatierte Webseite präsentieren und dann die Ausnahme in einer Datei später zu Analysezwecken Protokollinformationen. Szenario:haben Sie entwickelt und getestet, eine neue ASP.NET-Anwendung, die Ausnahmen in einer Protokolldatei protokolliert. Sie bereitstellen die ASPX-Seiten und die Assemblys, auf den Produktionswebserver. Wenn Personen Ihrer Anwendung verwenden, Sie sind eine Fehlerseite angezeigt, aber keine Ausnahme Protokollierung wird in die Protokolldateien geschrieben. Beachten Sie auch Sie, dass viele ASP.NET-Ereignisse in das Anwendungsprotokoll der Ereignisanzeige besagt, dass Aspnet_wp.exe unerwartet beendet wurde.Dies ist eine häufige Art des Problems, die wir in Developer Support finden, und die Mehrheit der Kunden nicht wirklich wissen, wie bei der Problembehandlung bei der es. Schlimmer ist die gefürchtete "Server Application Unavailable" Fehlermeldung. Diesen Monat zeige ich Ihnen wie Sie diese Arten von Problemen mit der Debugtools für Windows beheben können. Verzichtserklärung: Wenn Sie Microsoft Developer Support aufrufen, können wir Sie uns eine Absturzabbilddatei oder eine Speicherabbilddatei hängt schicken häufig auffordern. Die Analyse der Speicherabbilddatei in diesem Artikel werden ganz einfach und schnell. In vielen Fällen die Ursache eines Problems ist nicht sichtbar und kann Analyse, um die Hauptursache abzurufen viele Stunden dauern. Lassen Sie nicht der Einfachheit und geraden-Forwardness dieser Analyse Dump-Datei verleiten verwirren, dass Sie alle diesem leicht sind. Die meisten, sind in der Tat nicht! Erste vorbereitetBevor wir beginnen, müssen Sie die Installation der Debugtools für Windows. Auch wenn Sie bereits eine Kopie installiert haben, stellen Sie sicher, dass die neueste Version, verfügen da wir eine Erweiterung für verwaltete Debuggen, ist nur in der neuesten Version der Debugtools für Windows enthalten.Sie können die Debugtools für Windows aus folgenden Microsoft Web Website herunterladen: http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
(http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx)
Beim Installieren der Debugtools für Windows können Sie eine benutzerdefinierte Installation im Ordner C:\Debuggers ausführen möchten. Wir werden ausgeführt werden Tools von der Befehlszeile aus, und wenn der Pfad einen kurzen ist, wird sein dies so einfacher für Sie. Nach Abschluss der Installation sollten Sie die ASP.NET-Seite Beispiel herunterladen, die den Arbeitsprozess Absturz wird. http://download.microsoft.com/download/c/a/1/ca1c6329-3b3f-4d9e-a76d-54c78d3ddfbc/crash.exe
(http://download.microsoft.com/download/c/a/1/ca1c6329-3b3f-4d9e-a76d-54c78d3ddfbc/crash.exe)
Anmerkung Damit Sie die Abbilddatei, die mithilfe dieser Seite erstellen können, müssen Sie ASP.NET 1.1 mit Service Pack 1 (SP1) installiert ausgeführt werden. Ohne SP1 wird diese Seite ausgeführt, ohne zu einen Absturz generieren.Sie sollten auch den Symbolpfad für WinDbg einrichten. Symbole sind nicht für die Funktion der Namensauflösung auf verwaltete Assemblys erforderlich, aber Sie Symbole für systemeigene Funktion Auflösung benötigt werden. So legen Sie den Symbolpfad in WinDbg fest
Erstellen der Absturz Speicherabbild-DateiIn dieser exemplarischen Vorgehensweise verursacht auf die Schaltfläche auf der Beispielseite den ASP.NET-Workerprozess zum Absturz. In vielen Fällen wird nicht wissen Sie die genauen Schritte zum Generieren von eines Absturzes. In der Tat stürzt Ihr Produktionsanwendung zu einem zufälligen Zeitpunkt. Wie Sie bald sehen werden, ist es unwichtig, ob ein Absturz vorhersehbarer oder zufällig auftritt. Erstellen einer Speicherabbilddatei ist recht einfach mithilfe von Adplus, die VBScript-Datei, die den gesamten Prozess automatisiert.Um die Abbilddatei zu erstellen, müssen Sie zunächst zu der Beispielseite wechseln. (Klicken Sie nicht auf die Schaltfläche!) Nachdem die Seite erfolgreich bedient wurde wurde, wissen Sie, dass der Aspnet_wp.exe-Prozess (oder der Prozess w3wp.exe auf Windows Server 2003) gestartet wurde. Sie können nun den Debugger an den Workerprozess anhängen, damit eine Speicherabbilddatei erfasst, wenn es abstürzt. Zur Erstellung einer Speicherabbilddatei:
286350
(http://support.microsoft.com/kb/286350/
)
Verwendung von ADPlus zur Problembehandlung bei "hängt" und "abstürzt" Nachdem Sie diesen Befehl ausgeführt haben, wird eine Reihe von Dialogfeldern angezeigt. Klicken Sie auf OK in jedem Dialogfeld. Eine Schaltfläche sollte auf der Taskleiste jetzt für den Debugger, CDB, den Anwendungsnamen für Debugger angezeigt werden. Allerdings können Sie im Fenster abweichen.Note Sie müssen an der Konsole auf dem Webserver sein, wenn Sie Adplus im Absturzmodus ausführen. Sie können nicht remote Adplus im Absturzmodus ausführen. Sie können nun einen Absturz zu generieren. Klicken Sie auf der Seite zum Absturz des Arbeitsprozesses. Wenn JIT-Debuggen in Visual Studio .NET aktiviert ist, wird ein Dialogfeld angezeigt, Sie informiert, dass eine Ausnahme aufgetreten ist, aber der angefügte Debugger konnte nicht behandelt. Wenn ist JIT-Debuggen aktiviert, wird die Speicherabbilddatei ohne alle Dialoge angezeigt wird, erstellt. In beiden Fällen nach dem Sie die CDB -Schaltfläche in der Taskleiste ausgeblendet angezeigt wird, die Abbilddatei ist abgeschlossen, und Sie sind bereit, zu der nächsten Schritt zu verschieben, auf. Beim Auschecken der Speicherabbilddatei
Bild minimieren ![]() Sie können den fehlerhaften Stapel anzeigen, indem Sie den kb -Befehl an der Eingabeaufforderung eingeben. Hier ist die Ausgabe aus der Dumpdatei: 0:000> kb ChildEBP RetAddr Args to Child 00771018 791b6173 00000643 00000000 00b59bc0 mscorwks!_EH_prolog+0x2 00771928 791b60c0 00771a04 00000000 00000000 mscorwks!EEClass::DoRunClassInit+0xbe 0077193c 791d75a7 00771a04 00771a50 00b59bc0 mscorwks!MethodTable::CheckRunClassInit+0x1d 00771a14 791d7746 00000000 0086fb88 00771a50 mscorwks!MethodDesc::DoPrestub+0x28e 00771a2c 00a92f76 00771a50 0180f154 00ee5cd4 mscorwks!PreStubWorker+0x42 WARNING: Frame IP not in any known module. Following frames may be wrong. 00773a38 0337f2bc 00f8463c 00eb593c 00ee5cc8 0xa92f76 00773a64 031cd7e4 00eb593c 0180ea7c 00f84560 0x337f2bc 00773aac 033a3299 00000000 00eb593c 0180ea7c 0x31cd7e4 00773b50 033a3031 00000001 00000000 0180e238 0x33a3299 00773bec 0332ee47 00edb274 0180df00 00f8463c 0x33a3031 00773c28 0332e71b 0180df00 033a35c5 0180d870 0x332ee47 00773cc4 033a3031 00000001 00000000 0180d2b4 0x332e71b 00773d60 0332ee47 00edb274 0180cf7c 00f8463c 0x33a3031 00773d9c 0332e71b 0180cf7c 033a35c5 0180c8ec 0x332ee47 00773e38 033a3031 00000001 00000000 0180c330 0x332e71b 00773ed4 0332ee47 00edb274 0180bff8 00f8463c 0x33a3031 00773f10 0332e71b 0180bff8 033a35c5 0180b968 0x332ee47 00773fac 033a3031 00000001 00000000 0180b3ac 0x332e71b 00774048 0332ee47 00edb274 0180b074 00f8463c 0x33a3031 00774084 0332e71b 0180b074 033a35c5 0180a9e4 0x332ee47 Note Wenn Sie auf einem Multiprozessorsystem (oder ein System hyper-Threading) ausführen, sehen Sie sich in Mscorsvr statt Mscorwks Funktionsaufrufe. Sie können die Funktionsnamen in "Mscorwks.dll" sehen, da WinDbg Symbole für Mscorwks geladen. Jedoch sehen folgenden Aufrufe in Mscorwks keine Modulnamen und keine Funktionsnamen an. Ist welche verwalteten Code (Code, der unter der Common Language Runtime ausgeführt wird) in WinDbg standardmäßig aussieht, und es ist offensichtlich nicht hilfreich Ausgabe. Um anzuzeigen, wo in verwaltetem Code, müssen Sie die SOS-Erweiterung für WinDbg verwenden. Die SOS-ErweiterungSOS ist eine Erweiterung für WinDbg, die das Debuggen von verwaltetem Code ermöglicht. SOS WinDbg, der Schwerpunkt Debuggen von verwalteten Anwendungen viele Befehle hinzugefügt, und viele ASP.NET-spezifische sind. Die Erweiterung ist eine DLL-Datei sos.dll aufgerufen, und befindet sich im Ordner Clr10 in dem Ordner, in denen der Debugtools für Windows installiert werden.Geben Sie Folgendes an der Eingabeaufforderung in WinDbg, um die SOS-Erweiterung zu laden: .Load clr10\sos Überspringen Sie nicht den Punkt am Anfang des Befehls! Wenn alles gut geht, werden Sie wieder die Eingabeaufforderung weitergeleitet. Wenn ein Fehler auftritt, stellen Sie sicher, dass Sie die neueste Version des Debugging Tools für Windows installiert haben. Besprochen ein paar der Befehle aus SOS debug die Absturzabbilddatei, aber gerne die anderen Befehle in SOS auf Ihrer eigenen Zeit durchsuchen. Können Sie die ! Hilfe Befehl, um eine Liste der Befehle und eine kurze Beschreibung der einzelnen abrufen. Untersuchung der HauptursacheNun, SOS geladen wurde, haben wir einen Blick auf einige der Befehle, die in eine Absturzabbilddatei Problembehandlung nützlich sind.Sehen wir uns dem verwaltete Stapel für den aktuellen Thread, Thread 0. Erledigen Sie in Übung verwenden die ! Clrstack Befehl. Typ ! Clrstack an der Eingabeaufforderung. WinDbg startet, sichern den Stapel. Ein normaler Stapel sollte vollständig in wenigen Sekunden out ausgeben. In diesem Fall scheint die Ausgabe um kontinuierlich zu wechseln. Fahren Sie fort, und drücken Sie STRG-UNTBR (oder klicken Sie in WinDbg im Menü Debuggen auf unterbrechen ), und es wir betrachten. Here's a portion of the stack: Erhalten eine bessere Vorstellung von Was ist passiert hier Sie erhalten eine detailliertere Ausgabe aus dem Stapel, indem Ausführen der ! Clrstack s Befehl. Dadurch können Sie den vollständigen Stapel. Hier finden Sie einige dieser Ausgabe. Erstellen Sie für die vollständige Ausgabe dieses Befehls eine Speicherabbilddatei die Beispielseite verwenden, und führen Sie dann den Befehl. Ich haben es hier bearbeitet, ist die Ausgabe sehr ausführlichen. Sie können das HttpRequest-Objekt in diesem Stapel sehen wir betrachten, um herauszufinden, was in dieser Anforderung übergeben wurde. Die Verwendung des Befehls Dump Objekt erledigen Sie Übung ! Führen Sie . Dieser Befehl einen Parameter: die Adresse des Objekts zu sichern. In der obigen Ausgabe ist die Adresse in der Ausgabe die zweite Hexadezimalzahl. Hier ist die Ausgabe des HttpRequest-Objekts. Ich diese Ausgabe aus Gründen der Kürze bearbeitet haben. Wieder betrachten Sie die Ausgabe von ! Clrstack . Wenn Sie genau betrachten, sehen Sie sich, dass das Click -Ereignis für die Schaltfläche jedes Mal ausgelöst der Seite laden. Dadurch wird angewiesen, die Sie in einem PostBack Zustand laden die Seite Mal. Sie können auch aus dem Stapel feststellen, dass in das Click -Ereignis Server.Transfer aufgerufen wird. Aus diesem Grund müssen verhindern, dass ASP.NET abstürzt, wenn diese Seite geladen wird, Sie so wird ein PostBack bei jedem der Seite aufgrund von der Server.Transfer laden verhindern dies. Note Wenn Sie eine Server.Transfer in mit ASP.NET Framework 1.1 SP1 installiert und behalten Sie Formulardaten, dadurch das Problem immer. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base: 839521
(http://support.microsoft.com/kb/839521/
)
Update: Die Methode Server.Transfer verursacht einen Stapelüberlauf und führt den ASP.NET-Workerprozess zu reagieren Die Methode Server.Transfer verfügt über zwei Parameter; das erste ist der URL auf die Ausführung übertragen soll und die zweite ist ein boolescher Wert, der angibt, ob die Daten des Formulars beibehalten werden soll. Was geschieht, wenn wir die Daten des Formulars beibehalten? Einerseits wird ASP.NET berücksichtigen, die ein PostBack. Sie können, daher dieser Absturz beenden, indem Sie den zweiten Parameter dem Aufrufen von Server.Transfer False festlegen. Bis umbrechenIn diesem Artikel präsentiert eine kurze Exemplarische Vorgehensweise, wie Sie WinDbg und SOS zum Debuggen von ASP.NET-Anwendungen verwenden können. Der Zweck dieses Artikels wurde eine Einführung in einige der Konzepte und Terminologie Debuggen im Benutzermodus beteiligt. Es ist eine unterschiedliche Fertigkeiten als Quellcode Debuggen und erste gut es erfordert eine erhebliche Zeit Investition. Es ist eine Fähigkeit, die Erfahrung ist.Mehr Erfahrung empfehle ich, dass Sie die ASP.NET-Anwendung in einer Entwicklungs- oder Testumgebung zu laden und einige hängt-Abbilddateien zu unterschiedlichen Zeiten erfassen. Sie hierfür unter Adplus im Hängmodus mithilfe von den folgenden Befehl: Cscript adplus.vbs - hängt - Pn "aspnet_wp.exe" -o c:\aspnet_dump Dieser Befehl wird den aspnet_wp.exe-Prozess sofort sichern und erstellen Sie eine Speicherabbilddatei im Ordner C:\Aspnet_dump. Eine hängt Dump-Datei wie diese kann über eine Remoteverbindung ausgeführt werden. Microsoft's Patterns and Practices-Gruppe (PAG) hat auch einige ausgezeichnete und ausführliche Artikel auf geschrieben Debuggen von .NET-Anwendungen mit WinDbg. Die folgende Microsoft-Website diese Artikel: http://msdn2.microsoft.com/en-us/library/ms954594.aspx
(http://msdn2.microsoft.com/en-us/library/ms954594.aspx)
Eines meiner Ziele beim Schreiben dieses Artikels war in der Tat bieten Ihnen die Grundlage zum ausgezeichneten Artikel PAG bereitgestellt hat, nutzen. Stark sollten Sie davon profitieren.Sie hier im nächsten Monat angezeigt wenn ich Sie Verwendung von WinDbg und SOS-Erweiterung zum Analysieren von Dateien für das Absturzspeicherabbild beibringen. Bis nächsten, Jim Cheshire Support-Ingenieur Microsoft Developer Support Sie gerne wie immer Ideen auf Themen, die Spalten in Zukunft behandelt werden soll oder in der Knowledge Base mithilfe des Formulars Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) zu senden.
Maschinell übersetzter ArtikelWichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten. Den englischen Originalartikel können Sie über folgenden Link abrufen: 892277
(http://support.microsoft.com/kb/892277/en-us/
)
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
| Weitere Ressourcen Weitere SupportseitenCommunityHilfe erhaltenSPRACHE AUSWÄHLEN
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Zum Anfang
