2010-02-16 7 views
7

J'utilise VS 2008 sur une machine XP 64 bits. Je débogue une DLL C++ 32 bits via un programme de console. Les projets DLL et EXE sont contenus dans le même SLN afin que je puisse modifier la DLL pendant que je teste.La fenêtre du programme débogué ne se ferme pas

Qu'est-ce qui se passe est que de temps en temps je tue le programme avec Debug | Arrêtez le débogage (Maj-F5). VS arrête le programme, mais la fenêtre de la console reste ouverte! Si je suis assis à un point d'arrêt et que je clique sur Shift-F5, il se terminera correctement, mais si le programme est en mode full-tilt lorsque je l'arrête, je le vois souvent à la place.

Le gros problème est que je ne peux pas fermer ces fenêtres de zombies. L'utilisation de Fin de tâche dans le Gestionnaire des tâches ne fait rien (aucun message, rien). Quand j'arrête la machine, elle ne peut pas être due aux orphelins et je dois recourir à la mise hors tension.

Je pense que cela est lié à avoir le projet DLL et EXE dans la même SLN, comme pour les mois j'ai travaillé sur ce projet dans 2 instances VS, un pour la DLL et l'autre pour l'EXE. Je sautais continuellement d'avant en arrière entre les fenêtres pendant que je travaillais. Ce problème n'est jamais arrivé jusqu'à ce que je mette les deux projets dans une seule SLN. Le SLN simple fonctionne beaucoup mieux, mais cette anomalie est très irritante.

Vous avez des idées?

MISE À JOUR

Après un peu de recherche (here), je trouve qu'il semble avoir à faire avec l'une des mises à jour de mardi dernier (KB977165 ou KB978037). Merci Microsoft pour vos excellents tests préliminaires.

Répondre

0

J'ai certainement vu des bizarreries avec les poignées n'étant pas libérées et le gestionnaire de tâches ne fonctionne pas correctement. J'ai trouvé que Process Explorer fait un bon travail et comprendre ce qui se passe avec les fenêtres orphelines, les verrous de fichiers, et le comportement généralement étrange qui se passe.

0

La même chose a récemment commencé à m'arriver. J'utilise Windows XP 32 bits, VS 2008. Je ne pense pas que cela soit lié à l'organisation de vos projets. Peut-être qu'un correctif installé via Windows Update a causé cela.

1

Les fenêtres de console appartiennent à csrss.exe, qui est un processus système, et en fait le seul processus que vous ne pouvez pas tuer (au moins sur XP, vous pouvez tuer les autres processus du système si vous le faites dans le bon ordre, recherchez l'article "Windows en cours d'exécution avec aucun service" par Mark Russinovich). Donc, malheureusement, le vélo de puissance semble être le seul moyen de se débarrasser des fenêtres de la console zombie.

0

La meilleure chose que j'ai pu trouver une solution de contournement: lier le Détacher tout le bouton shift-F5. De cette façon, vous libérez essentiellement la fenêtre du débogueur et vous pouvez fermer la fenêtre elle-même sans finir avec une fenêtre cmd orpheline. Espérons que MS proposera une solution. Outils -> Options -> Environnement -> Clavier. Par ailleurs, le processus que j'ai décrit ci-dessus ne fonctionne que sporadiquement. Étant donné que ce problème semble survenir assez souvent, y a-t-il un moyen de le résoudre une fois pour toutes?

0

Mcrosoft reconnaître et décrire ce problème, ici: http://support.microsoft.com/kb/982551/

Ils ont publié un correctif, que vous pouvez obtenir à partir de: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(vous devez fournir une adresse e-mail, puis ils envoient vous un programme d'installation HotFix protégé par mot de passe)

+1

Wow, Microsoft a pris 4 mois pour résoudre ce problème. On pourrait penser que celui-ci aurait fait le haut de leur liste. Ils utilisent Visual Studio là-bas, n'est-ce pas? –

+0

4 mois sont rapides à partir de M $ ... Il a fallu 6-8 ans pour corriger plusieurs problèmes de sécurité critiques dans leur Internet Explorer ... – Calmarius

+0

KB 982551 ne semble pas avoir de téléchargement pour 64 bits XP – danio

0

Certaines bonnes solutions ont été fournies ici.

Une alternative: Au lieu d'arrêter une session de débogage en appuyant sur SHIFT-F5, appuyez sur CTRL-C, ce qui entraîne la fin du programme en éliminant normalement la source du problème.

Questions connexes