Cómo depurar los servicios de Windows

Seleccione idioma Seleccione idioma
Id. de artículo: 824344 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso describe cómo depurar un Windows servicio mediante el depurador WinDbg (windbg.exe). Para depurar un servicio de Windows puede adjuntar al depurador WinDbg para el proceso que aloja el servicio después de el servicio se inicia o se puede configurar el servicio se inicie con WinDbg depurador asociado para que puede solucionar los problemas relacionados con el inicio de servicio problemas. En este artículo se describe ambos métodos.

Requisitos

Esto artículo se supone que está familiarizado con los temas siguientes:
  • Servicios de Windows
  • Depurador WinDbg

Adjuntar al depurador WinDbg a un servicio, una vez iniciado el servicio

Este método es similar al método que puede utilizar para adjuntar un el depurador a un proceso y, a continuación, depurar un proceso.

Utilizar el ID del proceso que aloja el servicio que desea depurar

  1. Para determinar el identificador de proceso (PID) del proceso que aloja el servicio que desee depurar, utilice uno de los métodos siguientes.
    • Método 1: Usar el Administrador de tareas
      1. Haga clic en la barra de tareas y, a continuación, haga clic en Administrador de tareas. El Administrador de tareas de Windows cuadro de diálogo Aparecerá el cuadro.
      2. Haga clic en el Procesos ficha de la Administrador de tareas de Windows cuadro de diálogo.
      3. Bajo Nombre de la imagen, haga clic en la imagen nombre del proceso que aloja el servicio que desea depurar. Nota el Identificador de este proceso según lo especificado por el valor de la correspondiente PID campo.
    • Método 2: Usar la utilidad de la lista de tareas (tlist.exe)
      1. Haga clic en Inicioy, a continuación, haga clic en Ejecutar. El Ejecutar Aparecerá el cuadro de diálogo.
      2. En el Abierto cuadro, escriba cmdy, a continuación, haga clic en ACEPTAR.
      3. En el símbolo del sistema, cambie la ruta de acceso reflejar la ubicación del archivo tlist.exe en su equipo.

        Nota El archivo tlist.exe se encuentra normalmente en el siguiente directorio: C:\Program programa\Debugging Tools for Windows
      4. En el símbolo del sistema, escriba Tlist para enumerar los nombres de imagen y el proceso de identificadores de todos los procesos que se están ejecutando en el equipo.

        Nota Anote el identificador de proceso del proceso que aloja el servicio que usted ¿desea depurar.
  2. En el símbolo del sistema, cambie la ruta del directorio para reflejar el ubicación del archivo windbg.exe en su equipo.

    Nota Si el símbolo no está abierto, siga los pasos a y b del método 1. El archivo windbg.exe normalmente se encuentra en el siguiente directorio: C:\Program programa\Debugging Tools for Windows.
  3. En el símbolo del sistema, escriba ? p de WinDbgProcessID / g Para asociar al depurador WinDbg en el proceso que aloja el servicio que desea depurar.

    Nota ProcessID es un marcador de posición para el Id. de proceso del proceso que aloja el servicio que desea depurar.

Utilice el nombre de la imagen del proceso que aloja el servicio que desea depurar

Puede utilizar este método sólo si hay exactamente una se ejecuta instancia del proceso que aloja el servicio que desea ejecutar. Para realizar Esto, siga estos pasos:
  1. Haga clic en Inicioy, a continuación, haga clic enEjecutar. El Ejecutar Aparecerá el cuadro de diálogo.
  2. En el Abierto cuadro, escribacmdy, a continuación, haga clic en ACEPTAR Para abrir un símbolo del sistema.
  3. En el símbolo del sistema, cambie la ruta del directorio para reflejar el ubicación del archivo windbg.exe en su equipo.

    Nota El archivo windbg.exe normalmente se encuentra en el siguiente directorio: C:\Program programa\Debugging Tools for Windows.
  4. En el símbolo del sistema, escriba ?pn de WinDbgNombre de esta imagen / g Para asociar al depurador WinDbg en el proceso que aloja el servicio que desea depurar.

    NotaNombre de esta imagen es un marcador de posición para el nombre de la imagen del proceso que aloja el servicio que desea depurar. El "-pn" opción de línea de comandos que especifica elNombre de esta imagen argumento de línea de comandos es el nombre de imagen un proceso.

Iniciar al depurador WinDbg y asociar al proceso que aloja el servicio que desea depurar

  1. Inicie el Explorador de Windows.
  2. Busque el archivo windbg.exe en su equipo.

    Nota El archivo windbg.exe normalmente se encuentra en el siguiente directorio: C:\Program programa\Debugging Tools for Windows
  3. Ejecute el archivo windbg.exe junto con el / g modificador de línea de comandos para iniciar el WinDbg depurador. El / g modificador de línea de comandos permite que el proceso de seguimiento continuar después de establecer el punto de interrupción.
  4. En el Archivo menú, haga clic en Adjuntar a un proceso para mostrar la Asociar al proceso cuadro de diálogo cuadro.
  5. Haga clic para seleccionar el nodo que corresponde al proceso que aloja el servicio que desea depurar y, a continuación, haga clic enACEPTAR.
  6. En el cuadro de diálogo que aparece, haga clic en Para guardar la información de la base del área de trabajo. Observe que ahora puede depurar el código desensamblado del servicio.

Configurar un servicio para iniciar con WinDbg depurador asociado

Puede utilizar este método para depurar los servicios si desea solucionar problemas relacionados con el inicio de servicio.
  1. Configure las opciones de "Ejecución del archivo de imagen". Para ello, Utilice uno de los métodos siguientes:
    • Método 1: Utilice el Editor de indicadores globales (gflags.exe)
      1. Inicie el Explorador de Windows.
      2. Busque el archivo gflags.exe en su equipo.

        Nota El archivo gflags.exe se encuentra normalmente en el siguiente directorio: C:\Program programa\Debugging Tools for Windows.
      3. Ejecute el archivo gflags.exe para iniciar los indicadores globales Editor.
      4. En el Nombre de archivo de imagen cuadro de texto, Escriba el nombre de la imagen del proceso que aloja el servicio que desea depurar. Por ejemplo, si desea depurar un servicio que está alojado en un proceso tiene MyService.exe como el nombre de la imagen, tipo MyService.exe.
      5. Bajo Destino, haga clic para seleccionar el Opciones de archivo de imagen opción.
      6. Bajo Opciones del depurador de imagen, Haga clic para seleccionar la Depurador casilla de verificación.
      7. En el Depurador cuadro de texto, escriba la ruta de acceso completa del depurador que desea utilizar. Por ejemplo, si usted desea utilizar el depurador WinDbg para depurar un servicio, puede escribir una ruta de acceso completa que es similar al siguiente: C:\Program Programa\herramientas de depuración para Windows\windbg.exe
      8. Haga clic en Aplicary, a continuación, haga clic en ACEPTAR para salir del Editor de indicadores globales.
    • Método 2: Usar el Editor del registro
      1. Haga clic en Inicioy, a continuación, haga clic en Ejecutar. El Ejecutar Aparecerá el cuadro de diálogo.
      2. En el Abierto cuadro, escriba Regedity, a continuación, haga clic en ACEPTAR Para iniciar Editor del registro.
      3. Importante Esta sección, el método o la tarea contiene pasos que le indican cómo modificar el registro. Sin embargo, pueden producirse problemas graves si modifica incorrectamente el registro. Por lo tanto, asegúrese de que sigue estos pasos cuidadosamente. Para una mayor protección, copia de seguridad del registro antes de modificarlo. Luego puede restaurar el registro si surge algún problema. Para obtener más información acerca de cómo hacer copia de seguridad y restaurar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
        322756 Cómo hacer copia de seguridad y restaurar el registro en Windows


        En el Editor del registro, busque y, a continuación, haga clic en la siguiente subclave del registro:
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. Seleccione Nuevoy, a continuación, haga clic en Clave. En el panel izquierdo del Editor del registro, tenga en cuenta que Nueva clave de #1 (el nombre de una nueva subclave del registro) se selecciona para edición.
      5. Tipo Nombre de esta imagen Para reemplazar Nueva clave de #1y, a continuación, presione ESCRIBA.

        Nota Nombre de esta imagen es un marcador de posición para el nombre de la imagen del proceso que aloja el servicio que desea depurar. Para ejemplo, si desea depurar un servicio que está alojado en un proceso que tiene MyService.exe como el nombre de la imagen, tipo MyService.exe.
      6. Haga clic en la subclave del registro que ha creado en paso e.
      7. Seleccione Nuevoy, a continuación, haga clic en Valor de cadena. En el panel derecho del Editor del registro, tenga en cuenta que Nuevo valor #1, el nombre de una nueva entrada del registro, es seleccionado para su edición.
      8. Reemplazar Nuevo valor #1 con Depurador, y, a continuación, presione ENTRAR.
      9. Haga clic en el Depurador registro entrada que creó en el paso h y, a continuación, haga clic en Modificar. El Editar cadena Aparecerá el cuadro de diálogo.
      10. En el Información del valor cuadro de texto, escriba DebuggerPathy, a continuación, haga clic en ACEPTAR.

        Nota DebuggerPath es un marcador de posición para la ruta de acceso completa del depurador que desea utilizar. Por ejemplo, si usted desea utilizar el depurador WinDbg para depurar un servicio, puede escribir un completo ruta de acceso que es similar al siguiente:
        C:\progra~1\Debugg~1\windbg.exe
  2. Para que aparezca en el escritorio, la ventana de depurador y para interactuar con el depurador, que el servicio interactivo. Si usted no hace el servicio interactivo, el depurador se iniciará, pero no se puede vea que y que el usuario no puede emitir comandos. Para hacer que su servicio interactivo, utilice uno de los métodos siguientes:
    • Método 1: Utilice la consola de servicios
      1. Haga clic en Inicioy, a continuación, seleccione Programas.
      2. En el Programas menú, elija Herramientas administrativasy, a continuación, haga clic en Servicios. El Servicios consola aparece.
      3. En el panel derecho de la Serviciosla consola, haga clic en ServiceName, y, a continuación, haga clic en Propiedades.

        Nota ServiceName es un marcador de posición para el nombre del servicio que desea depurar.
      4. En el Inicio de sesión ficha, haga clic para seleccionar el Permitir que los servicios que interactúen con el escritorio casilla de verificación en Cuenta de sistema localy, a continuación, haga clic en ACEPTAR.
    • Método 2: Usar el Editor del registro
      1. En el Editor del registro, busque y, a continuación, haga clic en el subclave del registro siguiente:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        Nota Reemplazar ServiceName con el nombre de el servicio que desea depurar. Por ejemplo, si desea depurar un servicio denomina MiServicio, busque y, a continuación, haga clic en la siguiente clave del registro:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. En el Nombre en el panel derecho del Editor del registro del campo, pulse el botón derecho Tipoy, a continuación, haga clic en Modificar. El Editar valor DWORD cuadro de diálogo aparece.
      3. Cambiar el texto en el Información del valorcuadro de texto para el resultado de la operación OR binaria con el valor binario de la texto actual y el valor binario, 0 x 00000100, como los dos operandos. El archivo binario valor, 0 x 00000100, corresponde a la constante SERVICE_INTERACTIVE_PROCESS que se define en el archivo de encabezado WinNT.h en su equipo. Esta constante especifica que un servicio es interactivo en la naturaleza.
  3. Cuando se inicia un servicio, el servicio se comunica con el ¿Cuánto tiempo debe tener el servicio (el tiempo de espera de iniciar el Administrador de Control de servicio período para el servicio). Si el Administrador de Control de servicio no recibe una aviso de "Iniciar servicio" del servicio dentro de este periodo de tiempo de espera de la Service Control Manager, se termina el proceso que aloja el servicio. Esto período de tiempo de espera suele ser menos de 30 segundos. Si esto no ajustar período de tiempo de espera, el Administrador de Control de servicio finaliza el proceso y el adjunta el depurador mientras se intenta depurar. Para ajustar este tiempo de espera período, siga estos pasos:
    1. En el Editor del registro, busque y, a continuación, haga clic en el subclave del registro siguiente:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    2. Seleccione Nuevoy, a continuación, haga clic en Valor DWORD. En el panel derecho del Editor del registro, tenga en cuenta que Nuevo valor #1 está activado (el nombre de una nueva entrada del registro) para su edición.
    3. Tipo ServicesPipeTimeout Para reemplazar Nuevo valor #1y, a continuación, presione ESCRIBA.
    4. Haga clic en el ServicesPipeTimeoutentrada del registro que creó en el paso c y, a continuación, haga clic en Modificar. El Editar valor DWORD cuadro de diálogo aparece.
    5. En el Información del valor cuadro de texto, escriba TimeoutPeriody, a continuación, haga clic en ACEPTAR

      Nota TimeoutPeriod es un marcador de posición para el valor del período de tiempo de espera (en milisegundos) que usted desea establecer para el servicio. Por ejemplo, si desea establecer el tiempo de espera período de 24 horas (86400000 milisegundos), tipo 86400000.
    6. Reinicie el equipo. Debe reiniciar el equipo para el Administrador de Control de servicios para aplicar este cambio.
  4. Inicie el servicio de Windows. Para ello, siga estos pasos:
    1. Haga clic en Inicioy, a continuación, seleccione Programas.
    2. En el Programas menú, elija Herramientas administrativasy, a continuación, haga clic en Servicios. El Servicios consola aparece.
    3. En el panel derecho de la Serviciosla consola, haga clic en ServiceName, y, a continuación, haga clic en Inicio.

      Nota ServiceName es un marcador de posición para el nombre del servicio que desea depurar.

Solución de problemas

Antes de intentar depurar un servicio a través de una red, asegúrese de que son los símbolos y los archivos de código fuente que utiliza el servicio accesible desde el equipo donde se ejecutará el servicio. Para ello, utilice uno de los métodos siguientes:
  • Conceder permisos de acceso de lectura al menos a todos los usuarios de la carpeta en la equipo que contiene los símbolos y los archivos de código fuente que utiliza el servicio.
  • Copiar estos símbolos y los archivos de código fuente que utiliza el servicio en el equipo donde va el servicio ejecutar.

Referencias

Para descargar las herramientas y las utilidades que se mencionan en este artículo, visite el siguiente sitio Web de Microsoft:
Herramientas de depuración para Windows: visión general
http://www.Microsoft.com/whdc/devtools/debugging/default.mspx
Para obtener más información, visite el siguiente Microsoft Developer Sitios Web de Network (MSDN):
Depurador WinDbg
http://www.Microsoft.com/whdc/devtools/debugging/installx86.mspx
Servicios
http://msdn2.Microsoft.com/en-us/library/ms685141.aspx
Utilizando los indicadores globales utilidad
http://msdn2.Microsoft.com/en-us/library/ms792858.aspx

Propiedades

Id. de artículo: 824344 - Última revisión: jueves, 21 de marzo de 2013 - Versión: 8.0
La información de este artículo se refiere a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
Palabras clave: 
kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster kbmt KB824344 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 824344

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com