Id. de artículo: 286350 - Última revisión: martes, 04 de diciembre de 2007 - Versión: 9.4 Cómo utilizar ADPlus para solucionar bloqueosEn esta páginaResumen 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ónRequisitos del sistemaADPlus tiene los requisitos mínimos de hardware siguientes:
Nuevas características de ADPlus versión 6.0ADPlus 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:
¿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:
¿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:
¿Cuándo no debe utilizarse ADPlus?No debe utilizar ADPlus en las situaciones siguientes:
¿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:
Modo de bloqueoEn 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 falloEn 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:
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 oportunidadCada 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:
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 oportunidadCuando 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:
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 ADPlusPara 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).
Ejecutar ADPlus por primera vezDe 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. SintaxisADPlus utiliza la sintaxis siguiente: ADPlus.vbs modo de funcionamientoprocesos que supervisar modificadores opcionales, donde modo de funcionamiento es -hang o -crashdonde 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 falloAntes 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
Pasos para preparar un servidor basado en Windows NT 4.0 para la depuración en modo de fallo
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 ADPlusEn 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 CPUEn 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 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. 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. 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 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. 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. 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:
Un proceso termina inesperadamenteEn 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 NotaEste 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.) 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 inesperadamenteLos 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:
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 falloHay 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:
Información adicional y problemas conocidos
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:
| Seleccione idioma
|
Volver al principio
