2 Stimmen

Visual Studio friert an Haltepunkten ein

Seit einer Woche sehe ich ein sehr ärgerliches Verhalten von VS2010: Wenn ich ein Projekt debugge und der Debugger an einem Breakpoint anhält, friert Windows fast zehn Sekunden lang ein. Ich sage "Windows friert ein", weil die Maus und die Tastatur während dieser Zeit unbrauchbar sind.

Das Problem tritt nur auf, wenn ich ein bestimmtes Projekt debugge, und ich habe es auf zwei verschiedenen Maschinen mit dem gleichen Ergebnis ausprobiert. Das Projekt ist WPF und ich greife an einer Stelle auf die Tastatur zu (nicht auf die Maus), aber dieser Code wurde seit Monaten nicht mehr geändert, während das Problem erst eine Woche alt ist.

Ich habe kurz vor Beginn dieses Problems Teleriks großes Paket von allem (Testversion) installiert, daher war mein erster Verdacht, dass die VS-Integration von Telerik der Übeltäter war. Ich habe alle Telerik VS-Integrationen deinstalliert (die "JustXXX"-Produkte), aber das Problem bleibt bestehen.

Ich wäre sehr dankbar, wenn jemand einen Hinweis darauf geben könnte, was hier passiert.

Danke

EDIT 1: Ich habe jetzt versucht, eine neue Lösung zu erstellen, alle Projekte darin zu verschieben, aber das Problem bleibt bestehen.

Dann habe ich alles von Telerik deinstalliert, nur um sicherzugehen, aber auch das hatte keine Wirkung.

Der nächste Test bestand darin, die genau gleiche Lösung auf einer anderen Maschine zu laden, und das hat geholfen. Diese Maschine hat keine Drittanbieter-Integrationen mit VS2010, außer reSHarper 6.1.

Ich habe das Problem auch etwas genauer analysiert, und das typische Szenario ist, dass die UI die ersten Male, wenn ein Breakpoint erreicht wird, für ungefähr zehn Sekunden einfriert. Maus/Tastatur reagieren nicht mehr, aber der Cursor blinkt weiter im Code-Editor. Die nächsten Breakpoints machen dasselbe, und oft führt das Wechseln von einer Zeile zur anderen zu einer sehr langen Verzögerung (kein Einfrieren der UI).

Außerdem, wenn der erste Breakpoint sehr früh im Startcode meiner Anwendung gesetzt ist, könnte ich das Problem möglicherweise nicht erleben. Aber wenn ich weiterhin durch den Code schreite, wird der Debugger zunehmend träger, wenn die Anwendung sich selbst initialisiert (in separaten Threads).

Wie bereits erwähnt, tritt dies nur bei einer einzelnen Anwendung auf, also ist der Code offensichtlich irgendwie damit verbunden.

Hat jemand gute Kenntnisse darüber, wie der Debugger arbeitet? Abgesehen von den offensichtlichen Schritten, die immer benötigt werden, wenn ein Breakpoint gesetzt wird oder der Benutzer von einer Zeile zur anderen geht (Aktualisierung des Stapels und der Watch-Fenster), was geschieht im Hintergrund, das alles einfrieren lässt und wie ist das möglich?

Meine letzte Hoffnung ist eine komplette Neuinstallation von VS2010, aber ich hoffe, dass ich dieses Problem lösen kann, bevor diese Option erforderlich ist.

4voto

Jonas Rembratt Punkte 1500

Ich habe endlich die Ursache für dieses seltsame Verhalten gefunden. Wie ich im Originalbeitrag erwähnte, hänge ich die Tastatur (UND die Maus, das hatte ich vergessen) während der Initialisierung der Anwendung ein, um Benutzer-Inaktivität feststellen zu können.

Das Monitoring findet in einem Hintergrundthread statt, der einfach auf ein AutoResetEvent wartet, um Benutzeraktivität oder -inaktivität zu entdecken. Aus irgendeinem seltsamen Grund beeinflusst das AutoResetEvent.WaitOne(...) irgendwie den Debugger. Meine derzeitige Lösung ist einfach das Warten zu vermeiden, wenn der Debugger angehängt ist.

Ich kann immer noch nicht erklären, warum dies jetzt passiert. Es hat ein Jahr lang funktioniert, aber die Ursache für das Problem ist endlich gefunden und behoben.

Ich habe meine Frage an Microsoft geschickt, in der Hoffnung, eine gute Erklärung zu erhalten. Wenn ich eine bekomme, werde ich sie hier veröffentlichen.

-1voto

Dänu Punkte 5551

Wenn Sie wirklich das Problem mit einem Projekt / einer Lösung haben, könnten Sie versuchen, eine neue leere Lösung zu erstellen und das Projekt dort hinzuzufügen, vielleicht hilft das.

Ich weiß nicht wirklich viel über die inneren Abläufe von Visual Studio (immerhin muss es eines der komplexesten Softwareprodukte da draußen sein). Aber was ich gelernt habe, ist, dass eine Neuinstallation oft die beste und schnellste Lösung ist (auch wenn es eine Stunde oder zwei dauert). Stellen Sie einfach sicher, dass Sie alle Einstellungen sichern, die Sie nicht verlieren möchten.

Update:

Ich habe das hier gefunden, vielleicht haben Sie es auch schon gefunden: http://connect.microsoft.com/VisualStudio/feedback/details/260864/visual-studio-debugger-occasionally-locks-up-the-entire-windows-gui

Sie könnten es versuchen und die Sprachleiste deaktivieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X