2010-02-16 13 views
7

Estoy usando VS 2008 en una máquina XP de 64 bits. Estoy depurando una DLL C++ de 32 bits a través de un programa de consola. Los proyectos DLL y EXE están contenidos en el mismo SLN, por lo que puedo modificar el archivo DLL a medida que lo pruebo.Ventana del programa depurado no se cerrará

Lo que ocurre es que de vez en cuando mato el programa con Debug | Detener la depuración (Shift-F5). VS detiene el programa, pero la ventana de la consola permanece abierta. Si estoy sentado en un punto de interrupción y presiono Shift-F5, terminará correctamente, pero si el programa se ejecuta a toda velocidad cuando lo detengo, a menudo veo esto.

El gran problema es que no puedo cerrar estas ventanas zombies. El uso de la Tarea final en el Administrador de tareas no hace nada (no hay mensaje, no hay nada). Cuando apago la máquina, no puedo debido a los huérfanos y tengo que recurrir a desconectar la corriente.

Creo que esto está relacionado con tener el proyecto DLL y EXE en el mismo SLN, ya que durante meses trabajé en este proyecto en 2 instancias de VS, una para el DLL y otra para el EXE. Continuamente saltaba de un lado a otro entre las ventanas mientras trabajaba. Este problema nunca ocurrió hasta que puse los dos proyectos en un solo SLN. El único SLN funciona mucho mejor, pero esta anomalía es muy irritante.

¿Alguna idea a alguien?

ACTUALIZACIÓN

Después de un poco de búsqueda (here), me encontré con que parece que tiene que ver con una de las actualizaciones de último martes (KB977165 o KB978037). Gracias Microsoft por sus excelentes pruebas preliminares.

Respuesta

0

Definitivamente he visto rarezas con los identificadores no publicados y el administrador de tareas no funciona bien. Descubrí que Process Explorer hace un buen trabajo y averigua qué ocurre con las ventanas huérfanas, los bloqueos de archivos y, en general, con el comportamiento extraño que ocurre.

0

Lo mismo comenzó a sucederme recientemente. Estoy usando Windows XP 32-bit, VS 2008. No creo que esto esté relacionado con la organización de sus proyectos. Tal vez un parche instalado a través de la Actualización de Windows causó esto.

1

Las ventanas de consola son propiedad de csrss.exe, que es un proceso del sistema, y ​​en realidad el único proceso que no se puede matar (al menos en XP, puede matar los otros procesos del sistema si lo hace en el orden correcto, busque el artículo "Ejecución de Windows sin servicios" por Mark Russinovich). Desafortunadamente, el ciclo de encendido parece ser la única forma de deshacerse de las ventanas de la consola zombie.

0

Lo mejor que pude encontrar es una solución: la unión de soltar todo el botón de cambio-F5. De esta manera, básicamente liberas la ventana del depurador y puedes cerrar la ventana sin terminar con una ventana de cmd huérfana. Esperemos que MS encuentre una solución. Herramientas -> Opciones -> Entorno -> Teclado.

Por cierto, el proceso que describí anteriormente solo funciona esporádicamente. Dado que este problema parece ocurrir con bastante frecuencia, ¿hay alguna manera de finalmente resolverlo de una vez por todas?

0

Mcrosoft reconocer y describir este problema, aquí: http://support.microsoft.com/kb/982551/

Se han publicado una revisión en caliente, que se puede obtener de: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(que tienen que proporcionar una dirección de correo electrónico, a continuación, se envían usted es un instalador de HotFix protegido con contraseña)

+1

Wow, Microsoft tardó 4 meses para resolver este problema. Uno pensaría que este habría sido el primero de su lista. Utilizan Visual Studio por allá, ¿no? –

+0

4 meses son rápidos desde M $ ... Tomó 6-8 años arreglar varias seguridad críticas en su Internet Explorer ... – Calmarius

+0

KB 982551 no parece tener una descarga para XP de 64-bit – danio

0

Algunas buenas soluciones se han proporcionado aquí.

Una alternativa: en lugar de detener una sesión de depuración presionando SHIFT-F5, presione CTRL-C, que hace que el programa termine normalmente eliminando el origen del problema.

Cuestiones relacionadas