2010-09-09 18 views
36

Estoy tratando de adjuntar a un servicio de Windows utilizando el Visual Studio 2010 -> Depurar -> adjuntar al comando de proceso. Cuando me desplazo por la lista de procesos, el servicio de Windows aparece atenuado y el botón de activación también aparece atenuado. He intentado cambiar la cuenta de servicio a servicio local, mi cuenta, etc. pero sigue en gris. Alguien tiene alguna sugerencia o de todos modos para solucionar este problema?Visual Studio Adjuntar el depurador al servicio de Windows - adjuntar gris

+0

¿Podría ser porque el servicio está en modo de lanzamiento? – pdiddy

+0

Buena idea, pero ya había comprobado que estaba en modo de depuración. –

Respuesta

56

Normalmente tengo el mismo problema y me ocupo de ello agregando un bool a mi configuración que desencadena un lanzamiento de depuración. Puede iniciar una instancia de depurador de VS que se fija al proceso de servicio triunfo llamando a esto:

System.Diagnostics.Debugger.Launch(); 

Lo bueno es que se puede llamar dondequiera que usted desee en el código.

+1

Me gusta esto. Una forma sencilla y agradable de iniciar un depurador desde un servicio. La siguiente pregunta es si hay alguna manera de adjuntar de forma remota con este método si el servicio está instalado en otra máquina. –

+0

No tengo una respuesta inmediata, pero eso sería beneficioso para mí también. Veré si hay una forma fácil de lograrlo y si es así, editaré mi respuesta para incluir también esa solución. – jlafay

+1

La mejor línea de código de todos los tiempos. – Archer

1

Asegúrese de ejecutar Visual Studio como administrador. Requerirá derechos de administrador para conectarse a un servicio en ejecución.

+0

Intenté esto pero no tuve suerte. Puedo adjuntar a otros servicios enumerados en la lista de procesos, simplemente no es el que necesito. :) –

0

Es posible que no tenga permiso para conectarse al servicio. ¿Tienes privilegios de administrador en el escritorio? Muchas empresas no permiten esto por defecto, supuestamente para ayudar a proteger su entorno.

+0

Sí, tengo privs de administrador e intenté hacer clic derecho y ejecutar como administrador en vs para ver si eso me ayudó. Sin suerte. –

+0

¿Está en condiciones de probar las estrategias alternativas de depuración que se describen aquí: http://msdn.microsoft.com/en-us/library/7a50syb3(VS.80).aspx? –

+0

Steve, gracias por el enlace. De hecho, había mirado esa página pero no veía las estrategias alternativas en la parte inferior. He usado una consola para probar los servicios antes y esa es una buena alternativa de muerte. –

36

En VS2010, en el 'asociar al proceso' de diálogo, compruebe las dos casillas de verificación en la parte inferior que dicen 'Mostrar procesos de todos los usuarios' y 'Mostrar procesos en todas las sesiones'.

Al hacer eso, descubrí que mi proceso se mostraba dos veces, una ejecutándose como Sistema y otra ejecutándose bajo el nombre de usuario de Windows local. No estoy seguro de por qué (¡cualquier comentario sobre esto sería genial!), Pero pude adjuntarlo al que no apareció en gris, y también pude pasar por mi código de esta manera. Espero que esto haya ayudado! Intentaré actualizar esto cuando tenga tiempo.

ACTUALIZACIÓN: El segundo fue el proceso servicename.vshost.exe como señaló Ozz en los comentarios.

Si aún no lo ve, asegúrese de que su servicio aún se esté ejecutando, a veces puede tener un servicio defectuoso que se inició y se detuvo automáticamente y, por lo tanto, no aparece en las opciones adjuntar.

+4

esto funcionó para mí. Lo que noté es que el proceso "gris", en realidad es el proceso myservice.vshost.exe, pero no me di cuenta, ya que el nombre era bastante largo y la columna ocultaba el final. El que aparece usando las instrucciones de PreethA es el verdadero proceso a seguir. Supongo que el 1 de los 2 PreethA vio su myservice.vshost.exe – ozz

+0

En mi caso, tuve que marcar la casilla que decía 'Mostrar todos los procesos en todas las sesiones'. Por alguna razón, después de hacer eso, ya no estaba atenuado. – Flea

+1

Whoa - Gracias ...... Tuve lo mismo, tuve 2 corriendo. – coder32

-2

Herramientas-> Adjuntar al proceso. Simplemente marque Mostrar Procesos de todos los usuarios en la parte inferior izquierda. Ordene por proceso e intente buscar el servicio de Windows

6

No solo tuve que seleccionar las casillas de verificación show processes from all users y show processes in all sessions; También tuve que hacer clic en el botón Select y luego elegir el código Managed.

enter image description here

-2

me encontré con el mismo problema hoy con ninguna de las soluciones anteriores de trabajo. Como resultado, no es posible adjuntar a un proceso si tiene una sesión de procdump que monitorea ese proceso.

0

He resuelto mi problema cambiando la forma en que se generó la configuración de LIBERACIÓN a DEPURAR. Y luego, instalé el servicio y lo adjunté como de costumbre.

1

Después de instalar el servicio de winsdows, inícielo, luego en Visual Studio abra Adjuntar a la ventana de proceso (Alt + Control + P), encuentre su proceso y selecciónelo y haga clic en Adjuntar botón en la parte inferior de la ventana.

buena suerte!

+0

Esto no debe ser downvoted, es exactamente lo que Microsoft sugiere: https://docs.microsoft.com/en-us/dotnet/framework/windows-services/how-to-debug-windows-service-applications – Worthy7

Cuestiones relacionadas