Cómo: Depurar aplicaciones de servicios de Windows
Puesto que un servicio se debe ejecutar desde el contexto del Administrador de control de servicios en vez de en Visual Studio, la depuración de un servicio no es tan sencillo como la depuración de otros tipos de aplicaciones de Visual Studio. Para depurar un servicio, deberá iniciar el servicio y, a continuación, asociar un depurador al proceso en el que se está ejecutando. A continuación, podrá depurar la aplicación con toda la funcionalidad de depuración estándar de Visual Studio.
Precaución |
---|
No es recomendable asociarlo a un proceso a menos que se sepa en qué consiste el proceso y se comprendan las consecuencias de la asociación y, probablemente, eliminarlo. Por ejemplo, si realiza la asociación con el proceso WinLogon y, a continuación, detiene la depuración, el sistema se detendrá, porque no puede funcionar sin WinLogon. |
Sólo es posible asociar el depurador a un proceso en funcionamiento. El proceso de asociación interrumpe el funcionamiento actual del servicio; realmente, no detiene ni pausa el proceso del servicio. Es decir, si el servicio está en funcionamiento cuando se inicia la depuración, técnicamente, se encuentra aún iniciado durante la misma, aunque su procesamiento esté suspendido.
Asociarse al proceso del servicio le permite depurar gran parte del código del servicio, pero no todo; por ejemplo, debido a que se ha iniciado el servicio, no puede depurar de este modo el código del método OnStart del servicio ni el código en el método Main que se utiliza para cargar el servicio. Una forma de evitar este inconveniente es crear un segundo servicio temporal en la aplicación de servicio con el único propósito de ayudar a la depuración. Puede instalar ambos servicios y, a continuación, iniciar este servicio "simulado" para cargar el proceso del servicio. Una vez que el servicio temporal ha iniciado el proceso, puede utilizar el menú Depurar de Visual Studio para asociarlo al proceso del servicio.
Después de conectarse al proceso, se pueden establecer puntos de interrupción y utilizarlos para depurar el código. Después de salir del cuadro de diálogo utilizado para conectarse al proceso, se encuentra realmente en modo de depuración. Se puede utilizar el Administrador de control de servicios para iniciar, detener, pausar y continuar el servicio, pasando por los puntos de interrupción establecidos. Más tarde, podrá quitar el servicio simulado, una vez que la depuración haya finalizado correctamente.
Nota
Depurar el método OnStart puede ser difícil, puesto que el Administrador de servicios de Windows impone un límite de 30 segundos cada vez que se intenta iniciar un servicio. Para obtener más información, vea Solución de problemas: depurar servicios de Windows.
Para depurar un servicio
Instale el servicio. Para obtener más información, vea Cómo: Instalar y desinstalar servicios.
Inicie el servicio, ya sea desde el Administrador de control de servicios, Explorador de servidores o desde el código. Para obtener más información, vea Cómo: Iniciar servicios.
En Visual Studio, elija la opción Procesos del menú Depurar.
Aparecerá el cuadro de diálogo Procesos.
Haga clic en Mostrar los procesos del sistema.
En la sección Procesos disponibles, haga clic en el proceso correspondiente al servicio y, a continuación, haga clic en Asociar.
Sugerencia El proceso tendrá el mismo nombre que el archivo ejecutable correspondiente al servicio.
Aparecerá el cuadro de diálogo Asociar al proceso.
Elija las opciones apropiadas y, a continuación, haga clic en Aceptar para cerrar el cuadro de diálogo.
Nota
Ahora se encuentra en modo de depuración.
Establezca los puntos de interrupción que desee utilizar en el código.
Vaya al Administrador de control de servicios y manipule el servicio, enviando comandos de detención, pausa y continuación para alcanzar los puntos de interrupción. para obtener más información sobre la ejecución del Administrador de control de servicios, vea Cómo: Iniciar servicios.
Vea también
Tareas
Cómo: Instalar y desinstalar servicios