Compartir a través de


Elección del mejor método para depurar una aplicación de servicio

Hay varias maneras diferentes de depurar una aplicación de servicio. Para elegir el método correcto, primero debe tomar dos decisiones: la hora en la que se adjunta el depurador a la aplicación de servicio y la configuración de depuración que utilizar.

Hay tres fases en las que el depurador se puede adjuntar a la aplicación de servicio:

  • El comienzo mismo de la puesta en marcha 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 fallo 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 previos 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 el 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 Vista o 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, 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 inicie y se conecte 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.