Frage

Was sind die Schritte und Techniken eine scheinbare zu debuggen hängen aufgrund eines Deadlocks in einem Win32-Produktionsprozess. Ich habe gehört, dass WinDbg kann für diesen Zweck verwendet werden, aber könnten Sie bitte klare Hinweise geben, wie dies erreicht werden kann?

War es hilfreich?

Lösung

Das Post sollten Sie auf die verschiedenen options..Check erhalten begonnen, die Einträge getaggt mit Debugging ..

Ein weiterer nützlicher Artikel über Debuggen Deadlocks ..

Andere Tipps

eine echte Deadlock Debugging ist eigentlich ganz einfach, wenn Sie Zugriff auf die Quelle haben und ein Speicherabbild (oder Live-Debugging-Sitzung).

Alles, was Sie tun Blick auf den Fäden, und diejenigen finden, die auf irgendeine Art von gemeinsam genutzten Ressource (zum Beispiel hingen in WaitForSingleObject warten) warten. Im Allgemeinen von dort aus gesehen ist es eine Sache, herauszufinden ist, die zwei oder mehr Threads sie eingesperrt haben, und dann muss man nur noch herausfinden, welche das Schloss Hierarchie brach.

Wenn Sie nicht so leicht herausfinden können, welche Themen sind gesperrt, verwenden Sie die Methode gezeigt in

Wenn Sie sehr faul sind, können Sie Application Verifier installieren können, dann fügen Sie das Modul und wählen Sie einfach „Sperren“ aus dem Basistest. dann können Sie Ihre Anwendung unter einem beliebigen Debugger ausführen.
wenn ein kritischer Abschnitt Deadlock geschieht Sie den Grund sofort finden mit.

Welche Sprache / IDE verwenden Sie?

In .Net können Sie die Threads einer Anwendung anzuzeigen: Debug-> Windows-> Themen oder Strg + Alt + H

Debuggen Deadlock kann schwierig sein. Normalerweise mache ich eine Art von Protokollierung und sehen, wo das Protokoll hält. Ich entweder melden Sie sich in eine Datei oder auf die Debug-Konsole mit Output ().

Das Beste ist, durch Hinzufügen von Logging-Anweisungen zu starten. Generell würde ich nur um die gemeinsam genutzten Ressourcen empfehlen, die Deadlocks werden, sondern sie auch im allgemeinen das Hinzufügen könnte zu Situationen oder Bereiche des Codes verweisen Sie nicht erwartet hatten. Die viel beachteten stackoverflow.com Datenbank Problem stellte sich tatsächlich heraus zu log4net werden! Das Team nie Stackoverflow log4net vermutet wird, und nur, indem Sie die Prüfung (ironischerweise) zeigte dies. Ich würde zunächst verzichten keine komplizierte Werkzeuge beispielsweise WinDgb da sie mit nicht sehr intuitiv IMHO ist.

scroll top