Depuración de un servicio
Puede usar cualquiera de los métodos siguientes para depurar el servicio.
Use el depurador para depurar el servicio mientras se ejecuta. En primer lugar, obtenga el identificador de proceso (PID) del proceso de servicio. Después de obtener el PID, adjunte al proceso en ejecución. Para obtener información sobre la sintaxis, consulte la documentación incluida con el depurador.
Llame a la función DebugBreak para invocar al depurador para la depuración Just-In-Time.
Especifique un depurador que se usará al iniciar un programa. Para ello, cree una clave denominada Opciones de ejecución de archivos de imagen en la siguiente ubicación del Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Cree una subclave con el mismo nombre que el servicio (por ejemplo, MYSERV.EXE). Para esta subclave, agregue un valor de tipo REG_SZ, denominado Debugger. Use la ruta de acceso completa al depurador como valor de cadena. En el applet del panel de control Servicios, seleccione el servicio, haga clic en Inicio y active Permitir que el servicio interactúe con el escritorio. El servicio debe ser un servicio interactivo o, de lo contrario, el depurador no se puede ejecutar en el escritorio predeterminado. Tenga en cuenta que esta técnica ya no se admite a partir de Windows Vista porque todos los servicios se ejecutan en la sesión reservada exclusivamente para los servicios y no admite la visualización de una interfaz de usuario.
Use seguimiento de eventos para registrar información.
Para depurar el código de inicialización de un servicio de inicio automático, tendrá que instalar y ejecutar temporalmente el servicio como un servicio de inicio a petición.
En ocasiones, puede ser necesario ejecutar un servicio como una aplicación de consola con fines de depuración. En este escenario, la función StartServiceCtrlDispatcher devolverá ERROR_FAILED_SERVICE_CONTROLLER_CONNECT. Por lo tanto, asegúrese de estructurar el código de forma que no se llame al código específico del servicio cuando se devuelva este error.
Temas relacionados