En este momento estoy tratando de ejecutar / depurar mi aplicación en Visual Studio, pero no puede crearla porque la última instancia del app.vshost.exe
todavía se está ejecutando. Luego, al usar el Administrador de tareas, intento matarlo, pero simplemente permanece allí sin señal de actividad.
Más allá de ese caso en particular (tal vez un error de Visual Studio), tengo mucha curiosidad sobre las razones técnicas por las que a veces Windows no puede matar un proceso.
¿Puede un desarrollador iluminado relacionado con el SO intentar explicar?
(Y, por favor, no comience una batalla de Unix / Linux / Mac contra Windows).
windows
process
visual-studio
kill
Néstor Sánchez A.
fuente
fuente
Respuestas:
La causa suele ser un controlador que no responde y que tiene solicitudes de E / S sin terminar en curso.
Ver la entrada del blog de Mark Russinovich Procesos inquebrantables ( archivo )
fuente
Una posible razón: no puede matar una tarea que está adjunta a un depurador.
La única forma de detener la tarea es desde el depurador.
fuente
taskkill /f
, ni conwmic ... call terminate
... sigue diciendo "error: el proceso X con pid Y no se pudo terminar . No hay una instancia en ejecución de esta tarea ".Una razón sería que no tienes permiso para matarlo. Por ejemplo, si el proceso se ejecuta como administrador y usted es un usuario normal.
fuente
Abra la página Propiedades para el proyecto, vaya a la pestaña Depuración y marque "Habilitar depuración de código no administrado". O, desmarque la opción para usar el proceso de host.
fuente
Si el último archivo app.vshost.exe aún se está ejecutando, solo conéctese a ese proceso con el depurador.
Debería encontrarse en el menú en Debug-> AttachToProcess, luego elija el proceso de colgar y conéctese a él.
fuente
Mi única experiencia de desarrollo a nivel de SO fue en la escuela de posgrado, pero sospecho que lo que está sucediendo es esto (o algo similar):
Se produjo un error al ejecutar la última instancia que el depurador trató de manejar, pero otro problema causó que fallara (tal vez se encontró una afirmación de depuración, pero antes de que pudiera hacer clic en el cuadro de diálogo para Anular / Reintentar / Ignorar, se activó otra interrupción , tal vez debido a un puntero nulo). El resultado, después de que detuvo la depuración, fue que el depurador todavía estaba esperando su respuesta a la primera afirmación de depuración, por lo que no permitiría que el proceso terminara. Pero luego el depurador finalizó cuando dejaste de depurar (¿o lo hiciste?), Convirtiendo el proceso en un zombie, o su árbol en zombies. Cuando trataste de matar el proceso zombie, ocurrió un error similar a este, pero el administrador de tareas no te lo contó:
Si decide intentar lo mismo en el padre (en mi caso, el padre fue el proceso del depurador, msvsmon.exe), falla de la misma manera:
El IDE inició al padre, pero el IDE cortó el cordón umbilical, por lo que ahora tiene dos procesos zombie. No puede adjuntar un depurador al proceso que estaba depurando, porque ya hay un depurador (zombie) conectado, y no puede adjuntar un depurador al depurador (zombie) porque, como Visual Studio le dirá cuando intente :
Los zombis todavía están en la tabla de procesos lo suficientemente bien como para evitar que ejecutes otra instancia a través del depurador, pero probablemente puedas iniciar otra instancia fuera del IDE.
Esto aborda el problema más específico de hacer que VS cree un proceso zombie. Pero, los procesos zombis a menudo no mueren. Bueno, a menudo en Windows, a veces en Linux, no hasta que les disparas con una escopeta. ¿O fue un cierre? Pero tenga cuidado con la aplicación accidental de actualizaciones pendientes de Windows.
Me emocioné con algunas de las respuestas anteriores que sugerían asociarme con el depurador, pero lo anterior es el resultado que obtuve. Así que estoy enviando mi respuesta y reiniciando para limpiar la tabla de procesos.
fuente
¿Quizás un examen de algunas de las herramientas citadas aquí podría dar lugar a respuestas?
/programming/49988/really-killing-a-process-in-windows
(Justo ahora descubrí que pskill era la única de varias herramientas que podían matar un proceso que se ejecutaba bajo la sesión de Windows 7 de un usuario, desde la sesión de otro usuario (o credenciales, supongo).
fuente
¡Usted puede!
Usando ProcessHacker (clic derecho en el proceso) -> Terminator.
fuente
Si está utilizando VS para depurar el proceso y lo elimina con el administrador de tareas, entonces VS no puede manejarlo bien.
Por lo tanto, VS todavía está depurando el proceso de destino, pero no puede simplemente presionar detener proceso en VS.Solo salga de su VS y verá que su proceso se cierra.
fuente