Elección del mejor método
Hay varias maneras diferentes de depurar una aplicación de servicio. Para elegir el método correcto, primero debe tomar dos opciones: la hora en la que se adjunta el depurador a la aplicación de servicio y la configuración de depuración que se va a usar.
Hay tres fases en las que el depurador se puede adjuntar a la aplicación de servicio:
El principio del inicio del servicio. El depurador se inicia automáticamente cuando se inicia el servicio. Elija esta opción si desea depurar el código de inicialización del servicio.
La primera vez que el servicio encuentra una excepción. El depurador se inicia automáticamente cuando se produce una excepción o un bloqueo o si la aplicación de servicio llama a la función DebugBreak . Elija esta opción si desea que el depurador aparezca cuando se encuentre un problema, pero no antes.
Una vez que el servicio se esté ejecutando normalmente. Puede asociar manualmente un depurador a un servicio que ya se está ejecutando en cualquier momento. Elija esta opción si no desea realizar preparativos avanzados para la depuración.
Hay tres configuraciones de depuración que puede elegir:
Depuración local. Un único depurador, que se ejecuta en el mismo equipo que el servicio.
Depuración remota. Un servidor de depuración que se ejecuta en el mismo equipo que el servicio, que se controla desde un cliente de depuración que se ejecuta en un segundo equipo.
Depuración en modo de usuario controlada por kernel. Un depurador en modo de usuario que se ejecuta en el mismo equipo que el servicio, que se controla desde un depurador de kernel en un segundo equipo.
Si el servicio se ejecuta en Windows 2000, Windows XP o Windows Server 2003, puede combinar cualquiera de estas tres opciones de asociación con cualquiera de estas tres opciones de configuración de depuración.
Si el servicio se ejecuta en Windows Vista o en una versión posterior de Windows, hay una restricción sobre cómo se pueden combinar estas opciones. Si desea depurar desde el principio del inicio del servicio o desde el momento en que se encuentra una excepción, debe usar la depuración remota o la depuración en modo de usuario controlada por kernel.
En otras palabras, en Windows Vista y versiones posteriores, no puede usar la depuración local a menos que planee adjuntar el depurador manualmente después de que el servicio ya se esté ejecutando. Esta restricción resulta del hecho de que en estas versiones de Windows, los servicios se ejecutan en la sesión 0 y cualquier depurador que se inicia y adjunta automáticamente al servicio también está en la sesión 0 y no tiene una interfaz de usuario en el equipo en el que se ejecuta el servicio.