Id. de artículo: 286350 - Última revisión: martes, 04 de diciembre de 2007 - Versión: 9.4

Cómo utilizar ADPlus para solucionar bloqueos

En esta página

Expandir todo | Contraer todo

Resumen

ADPlus es una nueva herramienta de los Servicios de soporte técnico de Microsoft (PSS) que puede solucionar problemas de cualquier proceso o aplicación que deje de responder (se bloquee) o falle. Con frecuencia, puede utilizar ADPlus (ADPlus.vbs) en lugar de Exception Monitor (6.1/7.1) y User Mode Process Dump de Microsoft Internet Information Server (IIS). Se trata de dos herramientas independientes que PSS suele utilizar para aislar las causas por las que un proceso deja de responder (se bloquea) o termina inesperadamente (falla) en entornos DNA de Microsoft Windows.

Más información

Requisitos del sistema

ADPlus tiene los requisitos mínimos de hardware siguientes:
  • Service Pack 4 o posterior de Windows NT 4.0
  • Windows Scripting Host 5.6 o posterior
  • Al menos 10 megabytes (MB) de espacio disponible en el disco o en el recurso compartido de red donde ADPlus pondrá los archivos de resultados
  • Instaladas las herramientas de depuración de Microsoft para Windows

Nuevas características de ADPlus versión 6.0

ADPlus V6.0 se ha vuelto a escribir completamente. La herramienta tiene nuevos modificadores y nuevas funciones. Ahora puede configurar la herramienta mediante un archivo de configuración externo. Puede ver información actualizada acerca de las nuevas características y modificadores en el archivo de Ayuda del depurador (Debugger.chm) que se incluye en el paquete de Depuradores de Microsoft Windows. Para obtener el paquete, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Debugger.chm se encuentra en la misma carpeta que ADPlus.vbs. Para ver la documentación de ADPlus, haga clic en la ficha Contenido y, después, haga clic en los elementos siguientes:
  • Using Debugging Tools for Windows
  • Crash Dump Files
  • User-Mode Dump Files
  • Creating a User Mode Dump File
  • ADPlus
También puede encontrar la documentación de ADPlus si hace clic en la ficha Índice. Escriba ADPlus en el cuadro de texto de palabra clave.

¿Qué hace ADPlus?

ADPlus es una funcionalidad de secuencia de comandos de Microsoft Visual Basic basada en consola. Automatiza el depurador CDB de Microsoft para realizar volcados de memoria y crear archivos de registro que contienen los resultados de depuración de uno o varios procesos. Cada vez que se ejecuta ADPlus, se coloca información de depuración (volcados de memoria y archivos de texto que contienen información de depuración) en una nueva carpeta con un nombre único (como C:\Temp\Crash_Mode__Date_01-22-2001__Time_09-41-08AM) en el sistema de archivos local o en un recurso compartido de red remoto. Además, a cada archivo que crea ADPlus también se le asigna un nombre único (como PID-1708__Inetinfo.exe__Date_01-22-2001__Time_09-41-08AM.log) para evitar que los archivos más recientes sobrescriban los archivos antiguos.

ADPlus funciona con cualquier proceso o servicio de modo de usuario, como Servicios de Internet Information Server (IIS), Microsoft Transaction Server (MTS) o aplicaciones COM+ de Microsoft.

A continuación se enumeran algunas de las funciones de ADPlus:
  • ADPlus utiliza los depuradores más actualizados de Microsoft con características, velocidad y confiabilidad mejoradas.
  • Cuando ADPlus realiza un volcado de memoria para varios procesos, lo hace de forma asincrónica para que la inmovilización y el volcado de cada proceso se realicen al mismo tiempo. Este método puede proporcionar una "instantánea" efectiva de toda la aplicación en el momento de la ejecución de ADPlus. Debe capturar todos los procesos que componen una aplicación y todos los procesos que la aplicación utiliza al mismo tiempo para poder capturar el estado de la aplicación en el momento de producirse el problema. Esto es sumamente importante para aplicaciones que realizan llamadas a procedimiento remoto a otros procesos.
  • ADPlus tiene una interfaz de línea de comandos. Como ADPlus no tiene una interfaz gráfica para el usuario, se puede ejecutar en modo no interactivo (para suprimir los cuadros de diálogo) desde un shell de comandos remoto (un shell de comandos que adquiere la condición de remoto mediante el uso de Remote.exe). En modo no interactivo, los errores se muestran en la consola y se escriben en el registro de sucesos. Para obtener más información acerca de cómo ejecutar ADPlus desde un shell de comandos remoto, consulte la sección "Escenarios típicos de uso de ADPlus" de este artículo.
  • Si utiliza el modificador -notify cuando ADPlus supervisa fallos, y el servicio Windows Messenger se ha iniciado, ADPlus puede alertar a un usuario o a un equipo de un fallo a través del servicio Windows Messenger.
  • Cuando ADPlus supervisa un proceso en modo de fallo, si se produce un fallo, envía información relevante sobre el tipo de fallo al registro de sucesos.
  • ADPlus admite la implementación de XCOPY. Si instala en un equipo de pruebas el paquete de depuradores que se incluye con ADPlus, puede copiar a otro equipo la carpeta donde se instalaron los depuradores. Además, ADPlus no requiere el registro de componentes personalizados del Modelo de objetos componentes (COM) en el sistema. Por esto, puede utilizar ADPlus en servidores de producción que tienen una configuración de software de bloqueo. Para quitar ADPlus, elimine la carpeta donde se instaló o copió.

¿Cuándo debe utilizarse ADPlus?

ADPlus se ha diseñado para proporcionar a los profesionales de Soporte técnico de Microsoft la información de depuración necesaria para aislar la causa de los problemas que surgen en entornos complejos.

Debe utilizar ADPlus para capturar información de depuración si está teniendo los problemas siguientes:
  • Procesos que dejan de responder.
  • Procesos que consumen el 100% de uso de CPU en un equipo con un solo procesador, el 50% de uso de CPU en un equipo con dos procesadores, el 25% de CPU en un equipo con cuatro procesadores, etc.
  • Procesos que fallan o se cierran inesperadamente.

¿Cuándo no debe utilizarse ADPlus?

No debe utilizar ADPlus en las situaciones siguientes:
  • Si necesita solucionar problemas de un programa o un proceso que finaliza de forma inesperada al iniciarse. Sólo puede utilizar ADPlus con procesos que se inician correctamente. Para solucionar problemas de procesos que finalizan de forma inesperada al iniciarse, User Mode Process Dump puede ser una solución mejor. Para obtener más información acerca de User Mode Process Dump, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    253066  (http://support.microsoft.com/kb/253066/ ) Disponibilidad de las herramientas de soporte técnico de OEM, fase 3 Service Release 2
    También puede utilizar los depuradores más actualizados para depurar el proceso manualmente. Para obtener más información acerca de los depuradores más recientes, visite el siguiente sitio Web de Microsoft:
    http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
  • Si se aprecia un impacto importante en el rendimiento al utilizar ADPlus en modo de fallo. Normalmente, esto se debe a bibliotecas de vínculos dinámicos (archivos DLL) o a programas que inician un gran número de excepciones EH de Microsoft Visual C++. (Estas excepciones se producen cuando utiliza la instrucción throw de C++ o cuando utiliza bloques try/catch.) Los programas que escriben una gran cantidad de información en la secuencia de salida de depuración también ocasionan un descenso del rendimiento. En la gran mayoría de los casos, ADPlus no afecta al rendimiento de manera importante cuando se ejecuta en modo de fallo.

¿Dónde se obtiene ADPlus?

ADPlus se incluye con las Herramientas de depuración de Microsoft para Windows más recientes. Para obtener la versión más reciente de las Herramientas de depuración de Microsoft para Windows, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)

¿Cómo funciona ADPlus?

ADPlus tiene dos modos de funcionamiento:
  • El modo de "bloqueo" se utiliza para solucionar problemas de bloqueos en procesos, problemas de 100% de uso de CPU y otros problemas que no implican necesariamente un bloqueo. Cuando utiliza ADPlus en modo de bloqueo, debe esperar hasta que el proceso o los procesos dejen de responder antes de ejecutar la secuencia de comandos (a diferencia del modo de fallo, el modo de bloqueo no es persistente).
  • El modo de "fallo" se utiliza para solucionar fallos que dan lugar a errores de Dr. Watson, o cualquier otro tipo de error que provoca la finalización inesperada de un programa o un servicio. Cuando utiliza ADPlus en modo de fallo, debe iniciar ADPlus antes de que se produzca el fallo. Puede configurar ADPlus para que notifique un fallo a un administrador o a un equipo mediante el modificador -notify.

Modo de bloqueo

En este modo, ADPlus genera inmediatamente volcados de memoria completa para todos los procesos que se especifican en la línea de comandos después de que finalice la ejecución de la secuencia de comandos. Cada archivo .dmp que se crea se pone en una carpeta que contiene la marca de fecha y hora en que se ejecutó ADPlus. Cada nombre de archivo contiene el nombre y el identificador del proceso, así como la marca de fecha y hora en que se ejecutó ADPlus. Durante el volcado de la memoria del proceso en un archivo, el proceso se inmoviliza. Una vez creado el archivo de volcado de memoria, el proceso se reanuda mediante el uso de una conexión/desconexión no invasiva con el depurador CDB.

Sugerencia de uso Puede utilizar ADPlus en modo de bloqueo en lugar de Userdump.exe para realizar el volcado de memoria correspondiente a uno o más procesos. Además, el modo de bloqueo funciona dentro de una sesión de Terminal Server.

Modo de fallo

En este modo, ADPlus conecta el depurador CDB a todos los procesos que se especifican en la línea de comandos. ADPlus configura automáticamente el depurador para que supervise los siguientes tipos de excepciones:
  • Identificador no válido
  • Instrucción no válida
  • División de un entero por cero
  • División por cero en punto flotante
  • Desbordamiento de entero
  • Secuencia de bloqueo no válida
  • Infracción de acceso
  • Desbordamiento de pila
  • Excepción EH de C++
  • Excepción desconocida
Puede utilizar ADPlus en modo de fallo en lugar de Exception Monitor de IIS o Userdump.exe cuando esté solucionando problemas relacionados con estos tipos de excepciones. Como el modo de fallo utiliza una conexión "invasiva" mediante el depurador CDB, no funciona dentro de una sesión de Terminal Server en Microsoft Windows NT 4.0 o en Windows 2000. Sólo el modo de bloqueo funciona dentro de una sesión de Terminal Server en estos sistemas operativos porque requieren el uso de una conexión no invasiva. Para obtener más información acerca de cómo conectar de forma invasiva y no invasiva a un proceso con los depuradores más recientes, consulte la sección "Using Debugging Tools for Windows: Attaching to a Running Process (User Mode)" en la ayuda de los depuradores.

Nota
El modo de fallo se admite en una sesión de Terminal Server en los sistemas operativos Windows XP y Microsoft Windows Server 2003.

Cuando ADPlus se ejecuta en modo de fallo, un depurador permanece conectado a cada proceso especificado en la línea de comandos a lo largo de su duración, hasta que se produce una excepción grave y el proceso finaliza inesperadamente o hasta que un usuario presiona la combinación de teclas CTRL+C para desconectar el depurador del proceso en cuestión. Para desconectar manualmente el depurador del proceso, debe maximizar la ventana del depurador y presionar CTRL+C para interrumpir y abrir el depurador.

Al presionar CTRL+C, ADPlus captura este comando, comienza a enumerar las pilas de todos los subprocesos en un archivo de registro y realiza un volcado de memoria parcial del proceso antes de que se desconecte del depurador. Como el modo de fallo realiza una conexión invasiva, el proceso se detiene cuando se desconecta el depurador. Debe reiniciar el proceso. Si se trata de un proceso de MTS o COM+, el proceso se reiniciará automáticamente la próxima vez que se realice una llamada a un componente de ese paquete.

Excepciones de primera oportunidad

Cada tipo de excepción (como una infracción de acceso o un desbordamiento de pila) se puede enviar a un depurador como una excepción de primera oportunidad o como una excepción de segunda oportunidad. Por definición, las excepciones de primera oportunidad no son graves, a menos que no se traten correctamente con un controlador de errores. En este caso, vuelven a enviarse como una excepción de segunda oportunidad (que sólo puede tratar un depurador). Si ningún depurador procesa una excepción de segunda oportunidad, la aplicación se cierra.

Para obtener más información acerca de las excepciones de primera y segunda oportunidad, y el control de excepciones estructurado (SEH) de Windows NT, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
105675  (http://support.microsoft.com/kb/105675/ ) Control de excepciones de primera y segunda oportunidad
De forma predeterminada, cuando ADPlus detecta una excepción de primera oportunidad (no grave) para todos los tipos de excepciones salvo excepciones desconocidas y EH, realiza las siguientes acciones:
  1. Pausa el proceso para registrar la fecha y la hora en que se produjo la excepción en el archivo de registro correspondiente al proceso que se está supervisando.
  2. Registra el identificador del subproceso y la pila de llamadas del subproceso que generó la excepción en el archivo de registro correspondiente al proceso que se está supervisando.
  3. Realiza un volcado de memoria parcial con un nombre único (.dump -u /m) del proceso en el momento de producirse la excepción y, a continuación, reanuda el proceso.
Nota
De forma predeterminada, ADPlus no realiza un volcado de memoria parcial con un nombre único para las excepciones desconocidas y EH de primera oportunidad porque estas excepciones se producen con frecuencia. Normalmente, este tipo de excepciones se suele tratar mediante código de control de errores dentro de un proceso o una biblioteca DLL. Como suelen ser excepciones controladas, no llegan a convertirse en excepciones de segunda oportunidad (no controladas) y no finalizan el proceso.

Sin embargo, puede configurar ADPlus de modo que realice volcados de memoria parcial con un nombre único para las excepciones desconocidas y EH de primera oportunidad. Para ello, debe utilizar un archivo de configuración para personalizar ADPlus.

Excepciones de segunda oportunidad

Cuando ADPlus detecta una excepción de segunda oportunidad (grave) para todos los tipos de excepciones (incluidas las excepciones desconocidas y EH), realiza las siguientes acciones:
  1. Pausa el proceso para registrar la fecha y la hora en que se produjo la excepción en el archivo de registro correspondiente al proceso que se está supervisando.
  2. Registra el identificador del subproceso y la pila de llamadas del subproceso que generó la excepción en el archivo de registro correspondiente al proceso que se está supervisando.
  3. Realiza un volcado de memoria completa del proceso en el momento de producirse la excepción grave y, a continuación, sale del depurador. Esta acción destruye el proceso.
Nota
Para que los profesionales de Soporte técnico de Microsoft analicen los volcados de memoria, es posible que sea necesario obtener copias de bibliotecas DLL o componentes personalizados y sus correspondientes archivos de símbolos. Para obtener más información acerca de cómo crear archivos de símbolos para las bibliotecas DLL, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
121366  (http://support.microsoft.com/kb/121366/ ) Descripción de los archivos .PDB y .DBG
291585  (http://support.microsoft.com/kb/291585/ ) Cómo crear símbolos de depuración para una aplicación de Visual C++
Para obtener más información acerca de cómo obtener símbolos para productos de Microsoft (necesarios para analizar volcados de memoria con los depuradores), visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx (http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx)

Modificadores de la línea de comandos de ADPlus

Para utilizar ADPlus, debe especificar una serie de modificadores de la línea de comandos o argumentos a la secuencia de comandos. Como mínimo, ADPlus requiere dos modificadores: uno que especifica el modo de funcionamiento y otro que especifica un proceso de destino para su funcionamiento.

A continuación se muestran los modificadores utilizados con más frecuencia. También puede ver la lista completa de modificadores si ejecuta ADPlus -help o si examina el archivo de Ayuda de los depuradores (Debugger.chm).
  • -hang
    Este modificador configura ADPlus para ejecutarse en modo de bloqueo. Debe utilizar este modificador junto con los modificadores -iis, -pn o -p. No puede utilizar -hang con el modificador -crash.

    Nota
    Cuando ADPlus se ejecuta en modo de bloqueo, debe iniciar ADPlus después de que el proceso deje de responder o cuando esté consumiendo un porcentaje alto de la CPU.
  • -crash
    Este modificador configura ADPlus para ejecutarse en modo de fallo. Debe utilizar este modificador junto con los modificadores -iis, -pn o -p. No puede utilizar -crash con el modificador -hang.

    Nota
    Cuando ADPlus se ejecuta en modo de fallo, debe iniciar ADPlus antes de que el proceso finalice inesperadamente o se vuelva inestable.
  • -pn nombreDeProceso
    El modificador -pn se utiliza para especificar el nombre de un proceso que ADPlus debe analizar. Para especificar más de un proceso, utilice varios modificadores -pn nombreDeProceso. Por ejemplo:
    -pn proceso1.exe -pn proceso2.exe
  • -p IdDeProceso
    El modificador -p se utiliza para especificar el identificador de un proceso (PID) que ADPlus debe analizar. Para especificar más de un proceso, utilice varios modificadores -p PID. Por ejemplo:
    -p 1896 -p 1702
  • -sccomandoDeCreación
    A diferencia de los modificadores -pn y -p, que especifican los procesos que ya están en ejecución para conectarse al depurador, el modificador -sc define la aplicación y los parámetros que se van a iniciar (o crear) en el depurador. Por ejemplo:
    -sc "c:\windows\system32\notepad.exe
  • -iis
    El modificador -iis se utiliza para depurar servidores que ejecutan Internet Information Server (IIS) 4.0 o posterior. Cuando utiliza ADPlus con el modificador -iis, ADPlus supervisa todas las aplicaciones IIS que se ejecutan en proceso (Inetinfo.exe) y fuera de proceso (Mtx.exe/Dllhost.exe). Puede utilizar el modificador -iis junto con los modificadores -pn o -p, o puede utilizarlo en solitario para analizar IIS y todas las aplicaciones MTS/COM+ que hay en ejecución en el modo de bloqueo o de fallo.

    Si intenta analizar un servidor que ejecuta IIS 3.0 o anterior, debe utilizar el modificador -pn y especificar Inetinfo.exe como proceso que se va a supervisar.
  • -notify nombreDeEquipo o nombreDeUsuario
    Este modificador sólo es válido cuando ADPlus se ejecuta en modo de fallo. Este modificador indica a ADPlus que alerte al nombre de equipo o al nombre de usuario especificados de un fallo. Cuando el depurador se desconecte del proceso debido a una excepción de segunda oportunidad, o cuando un usuario presione CTRL+C para detener la depuración, se enviará una notificación al usuario o al equipo remoto a través del servicio Messenger local. Esta notificación sólo se realiza si el servicio Messenger local se ha iniciado en el equipo que se está depurando.
  • -quiet
    Este modificador indica a ADPlus que suprima todos los cuadros de diálogo modales. Es útil si está ejecutando ADPlus desde un shell de comandos remoto donde los cuadros de diálogo modales pueden hacer que ADPlus tenga que esperar indefinidamente a que un usuario haga clic en Aceptar. Para obtener unos resultados óptimos, asegúrese de que éste es el primer modificador que se pasa a ADPlus.vbs.
  • -o directorioDeResultados
    Este modificador indica a ADPlus dónde se han de colocar los archivos con los resultados de la depuración. Si utiliza nombres largos de archivo, debe escribirlos entre comillas dobles. Además, puede utilizar una ruta de acceso UNC (\\servidor\recursoCompartido). Si utiliza una ruta de acceso UNC, ADPlus creará una nueva carpeta inmediatamente debajo de la ruta UNC que especificó. La carpeta tiene el nombre del servidor donde se está ejecutando ADPlus (por ejemplo, \\servidor\recursoCompartido\Web1 o \\servidor\recursoCompartido\Web2). Este modificador es útil si ADPlus se ejecuta en varios equipos de un conjunto de servidores Web que están colocando los resultados en el mismo recurso compartido de red.

Ejecutar ADPlus por primera vez

De forma predeterminada, los depuradores se instalan en la carpeta C:\Archivos de programa\Debugging Tools for Windows. Para cambiar la carpeta de instalación, realice una instalación personalizada cuando instale los depuradores y especifique otra carpeta diferente. Si se ha realizado una instalación típica, copie el contenido de la carpeta Archivos de programa\Debugging Tools for Windows a otra carpeta diferente.

Para ejecutar ADPlus, abra un shell de comandos, cambie a la carpeta donde se instalaron o copiaron los depuradores y escriba ADPlus.vbs.

Quizás se le pregunte si desea cambiar el intérprete de secuencias de comandos predeterminado de Wscript.exe a Cscript.exe. Microsoft recomienda encarecidamente que permita que ADPlus configure CSCript como intérprete de secuencias de comandos predeterminado.

Sintaxis

ADPlus utiliza la sintaxis siguiente: ADPlus.vbs modo de funcionamientoprocesos que supervisar modificadores opcionales, donde modo de funcionamiento es -hang o -crash
donde procesos que supervisar es -iis, -pn proceso.exe o -p PID
donde modificadores opcionales es -notify, -o o -quiet.

Preparar el servidor para la depuración en modo de fallo

Antes de ejecutar ADPlus en modo de fallo, debe preparar el servidor para obtener la máxima información posible de las sesiones de depuración en este modo de ADPlus.

Pasos para preparar un servidor basado en Windows 2000 para la depuración en modo de fallo

  1. Instale los símbolos del SP1 o el SP2 de Windows 2000 en la carpeta C:\WINNT\Symbols de los servidores. Puede descargar los símbolos de los siguientes sitios Web de Microsoft:
    SP1 de Windows 2000
    http://www.microsoft.com/windows2000/downloads/servicepacks/sp1/debug/default.mspx (http://www.microsoft.com/windows2000/downloads/servicepacks/sp1/debug/default.mspx)

    SP2 de Windows 2000
    http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/debug/default.mspx (http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/debug/default.mspx) Después de descargar Sp1sym.exe o Sp2sym.exe, ejecute el archivo desde la carpeta designada.
  2. Cuando se le pida, extraiga los archivos a una nueva carpeta temporal, como C:\Sp1sym o C:\Sp2sym, o a una unidad o una carpeta que tengan suficiente espacio libre en disco.
  3. Ejecute C:\Sp1sym\Support\Debug\Symbols\i386\Symbols_spexe o C:\Sp2sym\Support\Debug\Symbols\i386\Symbols_spexe (donde C:\Sp1sym o C:\Sp2sym es la carpeta en la que se extrajeron los archivos en el paso anterior).
  4. Cuando aparezca el CLUF, haga clic en .
  5. Cuando se le pida una carpeta donde extraer los archivos, haga clic en C:\WINNT\Symbols y, a continuación, haga clic en Aceptar. Observe que aparece una nueva carpeta C:\WINNT\Symbols. Esta carpeta contiene varias subcarpetas denominadas DLL y EXE.
  6. Copie los símbolos de las bibliotecas DLL personalizadas y los hotfix posteriores a SP1 o al SP2 a la carpeta C:\WINNT\Symbols\Dll.
  7. Copie los símbolos de los archivos .exe personalizados a la carpeta C:\WINNT\Symbols\Exe. Además, debe obtener los archivos .pdb o .dbg de los desarrolladores y colocarlos en la carpeta C:\WINNT\Symbols\Dll.
  8. Sobrescriba los archivos dbg o .pdb existentes en la carpeta C:\WINNT\Symbols\Dll con las versiones de los hotfix.

    Nota
    Puede utilizar la versión más reciente de Winzip para abrir los paquetes de hotfix. Puede extraer los símbolos de la subcarpeta \Debug. La subcarpeta \Debug está contenida en el instalador automático de cada hotfix.
  9. Cree una variable de entorno _NT_SYMBOL_PATH y establezca su valor en C:\WINNT\Symbols. Esta variable puede ser del sistema o del entorno de usuario.

Pasos para preparar un servidor basado en Windows NT 4.0 para la depuración en modo de fallo

  1. Suponga que está ejecutando el Service Pack 6a de Windows NT 4.0. Instale los símbolos del SP6a de Windows NT 4.0 en la carpeta C:\WINNT\Symbols de los servidores.
    Para obtener más información acerca de Windows NT 4.0 Service Pack 6/6a, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    241211  (http://support.microsoft.com/kb/241211/ ) Lista de errores corregidos en el Service Pack 6/6a de Windows NT 4.0 (parte 1)
    Después de descargar el archivo Sp6symi.exe, ejecútelo desde la carpeta designada.
  2. Cuando se le pida, extraiga los archivos en la carpeta C:\WINNT (o sustitúyala por la carpeta \WINNT apropiada si los símbolos no se instalaron en C:\WINNT). Observe que aparece una nueva carpeta C:\WINNT\Symbols con diversas subcarpetas denominadas DLL, EXE, etc.
  3. Copie las subcarpetas de la carpeta C:\WINNT\Symbols\IIS4 a C:\WINNT\Symbols. Cuando se le pregunte si desea sobrescribir todos los archivos, haga clic en .
  4. Copie los símbolos de las bibliotecas DLL personalizadas y las revisiones posteriores a SP6a en la carpeta C:\WINNT\Symbols\Dll.
  5. Copie los símbolos de los archivos .exe personalizados a la carpeta C:\WINNT\Symbols\Exe. Además, debe obtener los archivos .pdb o .dbg de los desarrolladores y colocarlos en la carpeta C:\WINNT\Symbols\Dll.
  6. Sobrescriba los archivos dbg o .pdb existentes en la carpeta C:\WINNT\Symbols\Dll con las versiones de los hotfix.

    Nota
    Puede utilizar la versión más reciente de Winzip para abrir los paquetes de hotfix. Puede extraer los símbolos de la subcarpeta \Debug. Esta subcarpeta está contenida en el instalador automático de cada hotfix.
  7. Cree una variable de entorno _NT_SYMBOL_PATH y establezca su valor en C:\WINNT\Symbols. Esta variable puede ser del sistema o del entorno de usuario.
Aunque no tiene que descargar e instalar símbolos en los servidores que se van a depurar, se recomienda encarecidamente hacerlo. Cuando descarga e instala símbolos en el servidor, los resultados que se capturan en los archivos de registro son mucho más útiles para el personal de Soporte técnico de Microsoft.

Para obtener más información acerca de cómo obtener los símbolos de depuración de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
268343  (http://support.microsoft.com/kb/268343/ ) Umdhtools.exe: cómo utilizar Umdh.exe para buscar pérdidas de memoria
Después de configurar los servidores, puede ejecutar ADPlus en modo de fallo. Este modo se describe en la sección "Escenarios típicos de uso de ADPlus".

Escenarios típicos de uso de ADPlus

En esta sección se describen algunas de las situaciones más comunes donde puede ser necesaria la ejecución de ADPlus.

Un proceso deja de responder o consume el 100 de utilización de CPU

En esta situación, un proceso puede consumir aleatoriamente el 100% de uso de CPU durante períodos de tiempo prolongados o indefinidos. Ejecute ADPlus en modo de bloqueo para obtener un volcado de memoria del proceso o los procesos que están consumiendo la CPU después de producirse el problema. Por ejemplo, utilice una de las sintaxis de comandos siguientes:
ADPlus -hang -p 1896
Este comando ejecuta ADPlus en modo de bloqueo y genera un archivo de volcado de memoria completa de un proceso cuyo PID es 1896.

ADPlus -hang -pn miapl.exe
Este comando ejecuta ADPlus en modo de bloqueo y genera archivos de volcado de memoria completa de todos los procesos denominados Miapl.exe.

ADPlus -hang -iis -pn miapl.exe -o c:\temp
Este comando ejecuta ADPlus en modo de bloqueo y genera archivos de volcado de memoria completa de IIS, de todas las instancias de Mtx.exe o de Dllhost.exe, y de todos los procesos denominados Miapl.exe. Después pone los archivos de volcado de memoria en la carpeta C:\Temp.
Cuando ejecuta ADPlus en modo de bloqueo durante la condición de 100% de uso de CPU, la herramienta genera archivos de volcado de memoria del proceso o los procesos que se especifican en la línea de comandos.

Nota
En ciertas situaciones poco frecuentes, es posible que el depurador no pueda conectarse al proceso después de producirse una condición de 100% de uso de CPU o de un bloqueo. Si ejecuta ADPlus en modo de bloqueo después de producirse el problema, la herramienta no puede generar archivos de volcado de memoria. En estas situaciones, puede ser preferible conectar el depurador antes de que se produzca el problema. Para ello, utilice una de las sintaxis siguientes para ejecutar ADPlus en modo de fallo:
ADPlus -crash -p 1896
Este comando ejecuta ADPlus en modo de fallo para un proceso cuyo PID es 1896. ADPlus espera a que se genere una excepción o a que un usuario presione CTRL+C en la ventana minimizada del depurador para realizar un volcado de memoria y desconectar el depurador.

ADPlus -crash -pn miapl.exe
Este comando ejecuta ADPlus en modo de fallo para el proceso denominado Miapl.exe. ADPlus espera a que se genere una excepción o a que un usuario presione CTRL+C en la ventana minimizada del depurador para realizar un volcado de memoria y desconectar el depurador.

ADPlus -crash -iis -pn miapl.exe -o c:\temp
Este comando ejecuta ADPlus en modo de fallo para todas las instancias de los procesos denominados Miapl.exe e Inetinfo.exe, y para todas las instancias de Mtx.exe o Dllhost.exe. ADPlus espera a que se genere una excepción o a que un usuario presione CTRL+C en una o más de las ventanas minimizadas del depurador para realizar uno o varios volcados de memoria y desconectar el depurador o los depuradores. ADPlus pone los archivos de volcado de memoria y los archivos de registro en la carpeta C:\Temp.
A continuación, después de que el proceso se bloquee o consuma el 100% de uso de CPU, el usuario puede presionar CTRL+C en la ventana o ventanas minimizadas del depurador o los depuradores que genera ADPlus, de modo que puedan producir un volcado de memoria para el proceso o procesos.

Nota
De forma predeterminada, ADPlus sólo realiza volcados de memoria parcial cuando el usuario presiona CTRL+C. De esta forma se ahorra espacio de disco. En esta situación, puede ser útil para configurar ADPlus para que genere un archivo de volcado de memoria completa cuando el usuario presione CTRL+C. Para ello, utilice el modificador ?CTCF. Además, suele ser útil capturar un archivo de registro de supervisión del sistema o del rendimiento durante el período de tiempo transcurrido hasta que se produzca la condición de 100% de uso de CPU y durante la existencia de esta condición. Como mínimo, este archivo de registro debe capturar los siguientes objetos a intervalos de 1 a 5 segundos:
  • Memoria
  • Proceso
  • Procesador
  • Sistema
  • Subproceso

Un proceso termina inesperadamente

En esta situación, un proceso puede cerrarse aleatoriamente (o fallar) de forma inesperada. Ejecute ADPlus en modo de fallo para obtener un volcado de memoria del proceso o los procesos que se están cerrando antes de producirse el problema. Por ejemplo, utilice una de las sintaxis de comandos siguientes:
ADPlus -crash -iis
Este comando ejecuta ADPlus en modo de fallo y hace que conecte el depurador CDB a Inetinfo.exe y a todos los procesos Mtx.exe o Dllhost.exe que se están ejecutando en el equipo. ADPlus espera después a que se generen excepciones de primera y segunda oportunidad. De forma predeterminada, ADPlus pone todos los archivos en una subcarpeta de la carpeta de instalación porque se ha omitido el modificador -o.

ADPlus -quiet -crash -iis -notify equipoRemoto -o c:\temp
Este comando ejecuta ADPlus de forma no interactiva (sin cuadros de diálogo y registrando todos los resultados en el registro de sucesos) en modo de fallo y hace que conecte el depurador CDB a Inetinfo.exe y a todos los procesos Mtx.exe o Dllhost.exe que se están ejecutando en el equipo. Como se utiliza el modificador -notify, los depuradores notifican a todos los usuarios que han iniciado sesión en el equipo denominado equipoRemoto cada vez que se detecta un fallo o cuando el proceso que se está supervisando se cierra. Como se utiliza el modificador -o, ADPlus pone todos los resultados en la carpeta C:\Temp. Si la carpeta no existe, ADPlus la crea.

ADPlus -crash -iis -o \\servidor\recursoCompartido
Este comando es igual que el anterior, con la excepción de que registra todos los resultados en un servidor de red. ADPlus crea una nueva subcarpeta en \\servidor\recursoCompartido y asigna a la subcarpeta el nombre del equipo local. Por tanto, si está ejecutando ADPlus en un conjunto de servidores Web, cada servidor del conjunto donde se ejecuta ADPlus registra su propia carpeta única bajo \\servidor\recursoCompartido. (No tiene que crear carpetas únicas para cada servidor. ADPlus lo hace automáticamente.)
Nota
Si ejecuta ADPlus en modo de fallo desde la consola local (en lugar de hacerlo desde un shell de comandos remoto, como se describe en la próxima sección), debe permanecer con la sesión iniciada en la consola durante la sesión de depuración.

Por ejemplo, suponga que inicia ADPlus en modo de fallo y utiliza el modificador -iis para supervisar IIS. Cuando cierra la sesión de la consola, las copias de Cdb.exe que se están ejecutando en la consola (y todas las demás aplicaciones en ejecución) finalizan. Por tanto, la depuración se detiene y el proceso que se está supervisando finaliza.

Para evitar este problema, puede bloquear la sesión de consola (presione la combinación de teclas CTRL+ALT+SUPR y, a continuación, haga clic en Bloquear equipo) o ejecutar ADPlus desde un shell de comandos remoto programado para ejecutarse de forma no interactiva (es decir, no requiere un inicio de sesión interactivo).

Para obtener más información acerca de cómo programar un shell de comandos remoto para que se ejecute de forma no interactiva, consulte la sección "Escenarios típicos de uso de ADPlus: Ejecución remota en modo de fallo".

Una aplicación de servidor MTS o COM+ termina inesperadamente

Los componentes personalizados del Modelo de objetos componentes (COM) que se ejecutan dentro de una aplicación de servidor MTS o COM+ se ejecutan realmente dentro de un proceso suplente (Mtx.exe o Dllhost.exe). Estos procesos suplentes tienen propiedades y valores que puede configurar mediante MTS Explorer (en Windows NT 4.0) o mediante el complemento Servicios de componentes de Microsoft Management Console (MMC) (en Windows 2000, Windows XP y Windows Server 2003).

De forma predeterminada, las aplicaciones de servidor MTS o COM+ están configuradas para cerrarse tras un tiempo de inactividad de tres minutos. Para asegurarse de que estos procesos permanecen en ejecución mientras el depurador está conectado y supervisan excepciones, deben configurarse en Dejar ejecutando cuando esté inactivo.

Además, MTS y COM+ implementan Failfast. Failfast es un método de protección diseñado para que los procesos de MTS o COM+ que generan infracciones de acceso no controladas fallen (o se cierren).

Failfast está habilitado de forma predeterminada en las aplicaciones MTS o COM+ que generan excepciones de infracciones de acceso no controladas. Por tanto, si una aplicación de servidor MTS o COM+ falla, no puede producir una excepción de segunda oportunidad de infracción de acceso (es decir, se cierra después de producirse la infracción de acceso de primera oportunidad). De forma predeterminada, ADPlus está configurado para realizar sólo un volcado de memoria parcial cuando se producen excepciones de primera oportunidad.

Para depurar correctamente aplicaciones de servidor MTS o COM+, siga estos pasos:
  1. Configure la aplicación de servidor MTS o COM+ en Dejar ejecutando cuando esté inactivo.
  2. Utilice el modificador FullOnFirst para crear archivos de volcado de memoria completa en las excepciones de primera oportunidad.
  3. Ejecute ADPlus en modo de fallo y espere a que se produzca el fallo de la aplicación.
Nota
Puesto que MTS y COM+ cierran una aplicación de servidor, y como la directiva Failfast impide que el proceso genere una excepción de segunda oportunidad, sólo puede obtener un archivo de volcado de memoria por excepción de primer oportunidad de infracción de acceso.

Ejecución remota en modo de fallo

Hay muchas ocasiones en que es necesario iniciar ADPlus en modo de fallo desde un equipo cliente local para supervisar un proceso que se cierra inesperadamente en uno o más servidores remotos de un conjunto de servidores. Normalmente, en Windows 2000, esto se realiza mediante Servicios de Terminal Server de Windows. Sin embargo, como no es posible depurar aplicaciones que se ejecutan en estaciones diferentes en Windows NT 4.0 y en Windows 2000, ADPlus deshabilita la funcionalidad de modo de fallo cuando detecta que se está ejecutando dentro de una sesión de Servicios de Terminal Server. Para resolver este problema, comparta el servidor remoto mediante la utilidad Remote.exe, cree un archivo de proceso por lotes que inicie un shell de comandos en el servidor remoto y programe este archivo por lotes para que se ejecute en el servidor de destino utilizando el comando AT. (El comando AT hace que el shell de comandos se ejecute de forma no interactiva, de forma similar a un servicio.) Después, el shell de comandos remoto se conecta a una estación de trabajo o a un equipo cliente local que emplea la misma utilidad Remote.exe que usó para iniciarlo.

Para iniciar un shell de comandos remoto en un servidor utilizando el comando AT, siga estos pasos:
  • En el servidor remoto
    Suponga que los depuradores se han instalado en C:\Debuggers. Siga estos pasos:
    1. En la carpeta C:\Debuggers, cree un nuevo archivo de proceso por lotes denominado Remoteshell.cmd.
    2. Agregue la línea siguiente a este archivo por lotes:
      c:\debuggers\remote.exe /s "cmd.exe" remoteshell
    3. En la consola del servidor, o en una sesión de Servicios de Terminal Server, abra un nuevo shell de comandos y escriba el comando siguiente:
      AT 15:00 c:\debuggers\remoteshell.cmd
      donde 15:00 es la hora con un minuto más que la hora actual. Por ejemplo, si la hora actual es 14:59, escriba 15:00.
    4. Espere a que se ejecute el comando AT.
    5. En el símbolo del sistema, escriba AT sin parámetros para comprobar que la tarea se ha ejecutado sin errores.
  • En el cliente local:
    Instale los depuradores en el equipo cliente local o (como mínimo) copie la utilidad Remote.exe localmente. (De forma predeterminada, la utilidad se instala con los depuradores en la carpeta de instalación raíz.)

    Suponga que los depuradores y la utilidad Remote.exe se han instalado en C:\Debuggers. Siga estos pasos:
    1. En un símbolo del sistema, cambie a la carpeta C:\Debuggers.
    2. Escriba el siguiente comando:
      remote.exe /c servidorRemoto remoteshell
      donde servidorRemoto es el nombre del servidor remoto.
    3. Ahora, el shell de comandos local está conectado al shell de comandos remoto que se ejecuta en el servidor, y todos los comandos que escriba localmente se ejecutarán en el servidor remoto (el comando DIR c:\ muestra el contenido de la unidad C en el servidor remoto).
    4. En el shell de comandos remoto, puede ejecutar ahora ADPlus en modo de fallo como si lo estuviera ejecutando localmente desde la consola. Sin embargo, debe utilizar el modificador -quiet para suprimir todos los cuadros de diálogo que ADPlus genera de manera predeterminada. Si no utiliza el modificador -quiet, el shell de comandos remoto dejará de responder después de ejecutar ADPlus y no volverá a un símbolo del sistema. Si se produce este problema, debe salir del shell de comandos remoto (Cmd.exe) en el servidor e iniciar una nueva instancia.
    5. Para enviar una interrupción de depuración (CTRL+C) a un proceso que ADPlus está depurando actualmente de forma remota a través del modo de fallo, debe emplear la utilidad Breakin.exe. De forma predeterminada, Breakin.exe se instala con los depuradores en la raíz de la carpeta de los depuradores. Por ejemplo, para detener la depuración de IIS (Inetinfo.exe) que se está ejecutando con un proceso cuyo identificador es 1975, escriba el siguiente comando en el shell de comandos remoto:
      breakin.exe 1975
      Otra posibilidad es utilizar el comando Kill.exe (ubicado en la carpeta raíz de los depuradores) para finalizar los procesos que se están depurando.

Información adicional y problemas conocidos

  • ¿Cómo puedo averiguar si ADPlus ha capturado información acerca de un fallo o si un proceso que se está supervisando en modo de fallo se ha cerrado?

    Hay varias formas de determinar este punto:
    • Utilice el modificador -notify y compruebe que Messenger Service se ha iniciado en el servidor que se está depurando y en el equipo cliente que recibirá las notificaciones.
    • En un editor de texto, abra el archivo .log que aparece en la carpeta de resultados para cada proceso y desplácese hasta el final del archivo. Busque el texto siguiente:
           0:070> * -------- AutodumpPlus 4.01 finished running at: --------
           0:070> .time
           Debug session time: Mon Aug 06 15:25:15 2001
           System Uptime: 3 days 17:00:34
           Process Uptime: 1 days 3:10:38
           0:070> * -------------------------------------------------------
    • En la carpeta de resultados, busque archivos .dmp que contengan la frase "__2nd_chance". Si esta frase aparece en la etiqueta de un registro de volcado de memoria, un proceso ha finalizado inesperadamente.
    • En la carpeta de resultados, busque archivos .dmp que contengan la frase "__Process_was_shutdown". Si esta frase aparece en la etiqueta de un registro de volcado de memoria, un administrador finalizó el proceso o, si se trata de una aplicación MTS o COM+, el proceso finalizó porque llegó al límite de tiempo de inactividad.
    • En la carpeta de resultados, busque archivos .dmp que contengan la frase "__CTRL-C". Si un volcado de memoria está etiquetado con esta frase, se ha generado una excepción de interrupción de depuración desde una biblioteca DLL que se estaba ejecutando dentro del proceso o alguien ha presionado CTRL+C desde la consola (o se ha utilizado Breakin.exe si ADPlus se estaba ejecutando de forma remota) para detener la sesión de depuración actual.
  • Debe instalar los componentes de Windows Scripting Host en el sistema para que ADPlus se ejecute. Para descargar Windows Scripting Host, visite el siguiente sitio Web de Microsoft:
    http://msdn2.microsoft.com/en-us/library/ms950396.aspx (http://msdn2.microsoft.com/en-us/library/ms950396.aspx)
    Nota
    Es posible que los componentes de Windows Scripting Host ya estén instalados si tiene instalado alguno de los productos de Microsoft siguientes:
    • Microsoft Internet Explorer 5
    • Microsoft Office 2000
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual Studio 6.0
    • Microsoft Windows NT Option Pack
    • Microsoft Windows 2000
    • Microsoft Windows XP
    • Microsoft Windows Server 2003
    • Microsoft Windows Vista
  • El modificador -iis sólo funciona si está instalado Internet Information Server (IIS) 4.0 o Servicios de Internet Information Server (IIS) 5.0.x.
  • Cuando ejecuta ADPlus en modo no interactivo, la herramienta graba información en el registro de sucesos.
  • Si utiliza el modificador -o, la ruta de acceso especificada no debe contener más de una carpeta inexistente. Por ejemplo:
    1. Especifica -o c:\temp1\temp2. Sin embargo, las carpetas C:\Temp1 y \Temp2 no existen.
    2. Recibe un mensaje de error de ADPlus que indica que las carpetas no existen y que ADPlus no las creará.
    Si sólo especifica -o c:\temp1, ADPlus creará la carpeta C:\Temp1 si no existe y, a continuación, pondrá todos los archivos de resultados en esa carpeta. Si desea especificar varias subcarpetas y utiliza el modificador -o, compruebe que todas las subcarpetas existen antes de ejecutar ADPlus.
  • En COM+, puede configurar que un paquete de servidor se inicie en el depurador en la ficha Opciones avanzadas del cuadro de diálogo Propiedades del paquete. Si habilita la opción Iniciar en el depurador, ADPlus no puede conectar el depurador CDB a un proceso. De forma predeterminada, sólo se puede conectar un depurador a un proceso cada vez.
  • Cuando se realiza una llamada a procedimiento remoto (RPC) desde un proceso que ADPlus está analizando en modo de fallo a otro proceso que se ha cerrado (de forma intencionada o inesperadamente), el archivo de registro que ADPlus crea para el proceso que está analizando puede contener una o varias excepciones como las siguientes:
    Unknown exception - code 80010105 (first chance)
    Unknown exception - code 800706be (first chance)
    Unknown exception - code 800706ba (first chance)
    Estas excepciones son normales. RPC genera estas excepciones cuando se realiza una llamada desde un proceso que se está supervisando a un proceso inexistente o que ha fallado.

    Además, si ADPlus está supervisando Inetinfo.exe en el registro de depuración de ADPlus para ese proceso, puede aparecer la excepción siguiente en el registro:
    Unknown exception - code 800706bf (first chance)
    Esta excepción suele aparecer después de que IIS realice una llamada a un sitio Web fuera de proceso (nivel de aislamiento alto) que ha fallado. Puede ir seguida de dos instancias de la excepción siguiente:
    Unknown exception - code 800706ba (first chance)

Referencias

Para obtener más información al respecto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
323478  (http://support.microsoft.com/kb/323478/ ) No puede depurar en una sesión de Terminal Server

La información de este artículo se refiere a:
  • Servicios de Microsoft Internet Information Server 6.0
  • Servicios de Microsoft Internet Information Server 5.1
  • Servicios de Microsoft Internet Information Server 5.0
  • Microsoft Internet Information Server 4.0
  • Servicios de Microsoft Internet Information Server 3.0
  • Microsoft Windows NT 4.0
  • Microsoft Windows 2000 Standard Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Windows Vista Enterprise
Palabras clave: 
kbhowto kbbug kbdebug KB286350
 

Seleccione idioma