Ich habe ein vb.net-Projekt, das manchmal, wenn es in der IDE läuft, plötzlich hängt. Normalerweise wäre das kein Problem. Klicken Sie einfach auf "Pause", sehen Sie sich die aktuell laufenden Threads an und finden Sie den Deadlock (oder was auch immer).
Aber jetzt stoße ich in eine Situation, in der nicht nur das Programm hängt, sondern auch, wenn ich versuche es anzuhalten, das Visual Studio selbst zum Erliegen bringt. Um die Kontrolle zurückzugewinnen, muss ich den Prozess des Debuggens beenden, bei dem Visual Studio wieder zum Leben erwacht und sagt, dass es die Ausführung nicht pausieren konnte. Das ist frustrierend, weil das Töten des Prozesses bedeutet, dass der Programmstatus verloren ist (natürlich), also weiß ich nicht, wo der Hang ist .
Gibt es also häufige Ursachen für dieses Verhalten? Nach was soll ich suchen?
Wenn Ihr Programm globale Hooks installiert (die mit der App kommunizieren), könnte dies der Fall sein. Ein Hook versucht, mit Ihrer App zu kommunizieren (die vom Debugger angehalten wird) und wird gesperrt. Und Debugger kann seine Fenstermeldungen nicht empfangen: Klassischer Deadlock zwischen süchtigem Debugger (mit Hook-DLL) und einer Hooking-App.
Das Finden einer bestimmten Korrektur für ein Visual Studio-Problem kann schwierig sein: Ссылка
Außerdem werden nicht alle Hotfixes von Microsoft direkt an die Öffentlichkeit freigegeben. Einige werden nur an Kunden ausgegeben, deren Systeme ein spezifisches Problem aufweisen. Sie müssen sich also an Microsoft wenden, um den Fehler zu beheben. Sie tun dies, um den potenziellen Nachteil der Veröffentlichung eines Hotfixes zu begrenzen, der möglicherweise etwas anderes kaputt macht. Wenn alles andere fehlschlägt, rufen Sie sie an.
Hier sind einige andere Dinge, die ich gerne mache, wenn Visual Studio anfängt zu agieren:
Ich würde den Code des zu debuggenden Programms überprüfen. Ich denke, dass es im Code, den Sie zu debuggen versuchen, eine Endlosschleife oder eine Race-Bedingung geben kann. Dies war in der Vergangenheit der Fall, besonders bei einem Single-Core-Laptop, den ich früher hatte. Können Sie Informationen darüber geben, wo im Programm die Ausführung ausgeführt wird, wenn Sie versuchen zu pausieren?
Tags und Links visual-studio-2008 vb.net freeze