J'utilise VS 2008 sur une machine XP 64 bits. Je débogène 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 en test. P>
Que se passe-t-il est que de temps en temps, je tue le programme avec débogage | Arrêter le débogage (Shift-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 appuyez sur SHIFT-F5, il se terminera correctement, mais si le programme fonctionne complètement lorsque je l'arrête, je le vois souvent à la place. P>
Le gros problème est que je ne peux pas fermer ces fenêtres de zombies. Utilisation de la tâche de fin dans le gestionnaire de tâches ne fait rien (aucun message, sans rien). Lorsque j'ai fermé la machine, il est incapable de dû aux orphelins et je dois recourir à la mise hors tension. P>
Je pense que cela est connecté à avoir le projet DLL et EXE dans le même SLN, car pendant des mois, j'ai travaillé sur ce projet dans des instances 2 VS, une pour la DLL et l'autre pour l'EXE. Je sauterais continuellement entre les fenêtres que j'ai travaillé. Ce problème n'est jamais arrivé tant que je mets les deux projets en une seule SLN. Le Single SLN fonctionne beaucoup mieux, mais cette anomalie est très irritante. P>
Des idées quiconque? P>
Après un peu de recherche ( Ici ), j'ai constaté que cela semble avoir à voir avec l'une des mises à jour du mardi dernier (KB977165 ou KB978037). Merci Microsoft pour votre excellent test de pré-version. P>
7 Réponses :
J'ai définitivement vu des bizarreries avec des poignées non libérées et que le responsable des tâches ne fonctionne pas correctement. J'ai trouvé que Explorateur de processus fait un bon travail et déterminer Que se passe-t-il avec des fenêtres orphelines, des serrures de fichier et un comportement impaitré qui se produit. p>
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 connecté à la manière dont vos projets sont organisés. Peut-être qu'un correctif installé via Windows Update a provoqué cela. P>
Les fenêtres de la console appartiennent à CSRSS.EXE, qui est un processus système et le seul processus que vous ne pouvez pas tuer (au moins sur XP, vous pouvez tuer les autres processus système si vous le faites dans le bon ordre, regardez Pour l'article "Exécution de Windows sans services" par Mark Russinovich). Malheureusement, le vélo de puissance semble être le seul moyen de se débarrasser des fenêtres de la console zombie. P>
C'est kb978037. La désinstallation de cela résout le problème. P>
La meilleure chose que j'ai pu trouver est une solution de contournement: liant le détachement de tout au 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 avec une fenêtre CMD orpheline. Espérons que MS proposera une solution. Outils -> Options -> Environnement -> Clavier. p>
Au fait, le processus que j'ai décrit ci-dessus ne fonctionne que sporadiquement. Étant donné que ce problème semble se produire assez souvent, existe-t-il un moyen de le résoudre enfin une fois pour tous? P>
mcrosoft reconnaît et décrivez ce problème, ici: http://support.microsoft.com/kb/982551/ p>
Ils ont libéré une solution chaude que vous pouvez obtenir de: http://support.microsoft.com/hotfix/kbhotfix. Aspx? kbnum = 982551 & KBLN = EN-US P>
(vous devez fournir une adresse électronique, puis ils vous envoient un programme d'installation de correctif protégé par mot de passe) P>
WOW, Microsoft a pris 4 mois pour résoudre ce problème. Vous penseriez que celui-ci aurait fait le sommet de leur liste. Ils utilisent Visual Studio là-bas, ne sont-ils pas?
4 mois sont rapides de M $ ... Il a fallu 6-8 ans pour réparer plusieurs sécurité critiques dans leur explorateur Internet ...
KB 982551 ne semble pas avoir de téléchargement pour 64 bits XP
Certaines bonnes solutions ont été fournies ici. p>
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 éliminant normalement la source du problème. P>