2010-02-16 6 views
7

Ich verwende VS 2008 auf einem 64-Bit-XP-Computer. Ich debugge eine 32-Bit-C++ - DLL über ein Konsolenprogramm. Die DLL- und EXE-Projekte sind in derselben SLN enthalten, so dass ich die DLL beim Testen modifizieren kann.Debugged Program Fenster wird nicht geschlossen

Was passiert ist, dass ich ab und zu das Programm mit Debug | Stoppen Sie das Debugging (Umschalt-F5). VS stoppt das Programm, aber das Konsolenfenster bleibt geöffnet! Wenn ich an einem Haltepunkt sitze und Shift-F5 drücke, wird es ordnungsgemäß beendet, aber wenn das Programm voll tilt, wenn ich es stoppe, sehe ich oft das stattdessen.

Das große Problem ist, dass ich diese Zombie-Fenster nicht schließen kann. Die Verwendung der End-Task im Task-Manager führt nichts aus (keine Nachricht, nichts). Wenn ich die Maschine herunterfahre, kann sie aufgrund der Waisen nicht und ich muss darauf zurückgreifen, den Strom tatsächlich abzuschalten.

Ich denke, dies ist mit der DLL und EXE-Projekt in der gleichen SLN verbunden, seit Monaten habe ich an diesem Projekt in 2 VS-Instanzen, eine für die DLL und die andere für die EXE gearbeitet. Ich würde ständig zwischen den Fenstern hin und her springen, während ich arbeitete. Dieses Problem passierte nie, bis ich die beiden Projekte in einen einzigen SLN legte. Der einzelne SLN funktioniert viel besser, aber diese Anomalie ist sehr irritierend.

Irgendwelche Ideen jemand?

UPDATE

Nach einem bisschen (here) dem Suchen, fand ich, dass es mit einem des Updates von letzten Dienstag (KB977165 oder KB978037) zu tun zu haben scheint. Vielen Dank Microsoft für Ihre ausgezeichneten Vorab-Tests.

Antwort

0

Ich habe definitiv merkwürdigkeiten mit Griffen nicht freigegeben und Task-Manager nicht richtig funktioniert. Ich habe festgestellt, dass Process Explorer einen guten Job macht und herausfinden, was mit verwaisten Fenstern, Dateisperren und generell merkwürdigem Verhalten passiert.

0

Das gleiche passiert vor kurzem passiert mir. Ich verwende Windows XP 32-Bit, VS 2008. Ich glaube nicht, dass dies mit der Organisation Ihrer Projekte zusammenhängt. Möglicherweise hat dies ein Patch verursacht, der über Windows Update installiert wurde.

1

Konsolenfenster sind Eigentum von csrss.exe, was ein Systemprozess ist, und eigentlich der einzige Prozess, den Sie nicht beenden können (zumindest unter XP können Sie die anderen Systemprozesse ausschalten, wenn Sie es in der richtigen Reihenfolge tun, Suchen Sie nach dem Artikel "Running Windows with No Services" von Mark Russinovich). Leider scheint Power-Cycling die einzige Möglichkeit zu sein, die Zombie-Konsolenfenster loszuwerden.

0

Das Beste, was ich finden konnte ist eine Abhilfe: die detach alle auf die Shift-Taste F5 verbindlich. Auf diese Weise geben Sie das Fenster aus dem Debugger heraus und Sie können das Fenster selbst schließen, ohne mit einem verwaisten Cmd-Fenster zu enden. Hoffentlich wird MS eine Lösung finden. Extras -> Optionen -> Umgebung -> Tastatur.

Übrigens funktioniert der oben beschriebene Prozess nur sporadisch. Da dieses Problem häufig auftritt, gibt es einen Weg, es endgültig zu lösen?

0

Mcrosoft bestätigen und dieses Problem beschreiben, hier: http://support.microsoft.com/kb/982551/

Sie ein Hot-Fix freigegeben haben, die Sie aus erhalten: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(Sie eine E-Mail-Adresse angeben, dann schicken sie Sie ein passwortgeschütztes HotFix-Installationsprogramm)

+1

Wow, Microsoft hat 4 Monate gebraucht, um dieses Problem anzugehen. Man könnte meinen, dass dieser Punkt ganz oben auf der Liste steht. Sie benutzen Visual Studio da drüben, nicht wahr? –

+0

4 Monate sind schnell von M $ ... Es dauerte 6-8 Jahre, mehrere kritische Sicherheit in ihrem Internet Explorer zu beheben ... – Calmarius

+0

KB 982551 scheint keinen Download für 64-Bit-XP zu haben – danio

0

Einige gute Lösungen wurden hier zur Verfügung gestellt.

Eine Alternative: Statt eine Debugsitzung durch Drücken von UMSCHALT-F5 zu beenden, drücken Sie STRG-C, wodurch das Programm normalerweise beendet wird und die Ursache des Problems beseitigt wird.

Verwandte Themen