Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
¿Qué es la depuración de viajes de tiempo?
Time Travel Debugging (TTD) es una herramienta que captura un seguimiento del proceso a medida que se ejecuta y lo reproduce más adelante y hacia atrás. TTD le ayuda a depurar problemas al permitirle "rebobinar" la sesión del depurador, en lugar de tener que reproducir el problema hasta que encuentre el error.
TTD le permite volver atrás en el tiempo para comprender mejor las condiciones que conducen al error y reproducirlo varias veces para aprender a corregir el problema.
TTD tiene ventajas sobre los archivos de volcado de memoria, que a menudo pierden el estado y la ruta de acceso de ejecución que provocó el error final.
Si no puede resolver el problema usted mismo, puede compartir la traza con un compañero de trabajo para que pueda ver exactamente lo que está viendo. Esta característica facilita la colaboración más que la depuración en vivo, ya que las instrucciones grabadas son las mismas, mientras que las direcciones de memoria y la ejecución del código difieren en diferentes equipos. También puede compartir un momento específico para ayudar a su compañero de trabajo a averiguar dónde empezar.
TTD es eficaz y funciona para agregar la menor sobrecarga posible, ya que captura la ejecución de código en archivos de seguimiento.
TTD incluye un conjunto de objetos del modelo de datos del depurador que puede usar para consultar la traza con LINQ. Por ejemplo, puede usar objetos TTD para buscar cuándo se cargó un módulo de código específico o localizar todas las excepciones.
Requisitos
Time Travel Debugging se integra con WinDbg, lo que proporciona una experiencia de grabación y reproducción perfectas.
Para usar TTD, debe ejecutar el depurador con permisos elevados. Instale WinDbg mediante una cuenta que tenga privilegios de administrador y use esa cuenta al grabar en el depurador. Para ejecutar el depurador con permisos elevados, seleccione y mantenga presionado (o haga clic con el botón derecho) en el icono de WinDbg en el menú Inicio y, a continuación, seleccione Más > ejecutar como administrador.
Notas de la versión
TTD continúa evolucionando. Para obtener la información más reciente, consulte las notas de la versión de depuración de viajes en el tiempo.
La grabación puede contener información relacionada con la identificación personal o la seguridad
El archivo de seguimiento creado que contiene la grabación puede contener información relacionada con la seguridad o la identificación personal, incluidos, entre otros, las rutas de acceso de archivo, el registro, la memoria o el contenido del archivo. La información exacta depende de la actividad del proceso de destino mientras se registró. Tenga en cuenta esto al compartir archivos de grabación con otras personas.
utilidad de grabación de línea de comandos TTD.exe
Además de grabar seguimientos en la interfaz de usuario de WinDbg, hay una utilidad de línea de comandos TTD.exe disponible para grabar un seguimiento.
Es posible que tenga escenarios en los que solo se requiera la grabadora de línea de comandos TTD: grabación en un equipo sin instalar el depurador, escenarios avanzados de grabación, automatización de pruebas, etc. En estos escenarios, puede instalar solo la grabadora de línea de comandos TTD a través de una dirección URL. Para obtener más información, vea Time Travel Debugging - TTD.exe utilidad de línea de comandos.
Comparación de las herramientas de depuración
En esta tabla se resumen las ventajas y desventajas de las diferentes soluciones de depuración disponibles.
| Enfoque | Ventajas | Desventajas |
|---|---|---|
| Depuración en directo | La experiencia interactiva, ve el flujo de ejecución, puede cambiar el estado de destino, herramienta familiar en la configuración conocida. | Interrumpe la experiencia del usuario, puede requerir esfuerzo para reproducir el problema repetidamente, puede afectar a la seguridad, no siempre una opción en los sistemas de producción. Con la reproducción difícil de volver a trabajar desde el punto de error para determinar la causa. |
| Volcados | No hay codificación inicial ni intrusiva, basada en desencadenadores. | Las instantáneas sucesivas o volcados dinámicos proporcionan una vista simple "a lo largo del tiempo". La sobrecarga es básicamente cero si no se usa. |
| Telemetría y registros | Ligero, a menudo vinculado a escenarios empresariales o acciones de usuario, fácil de aprender automático. | Surgen problemas en rutas de acceso de código inesperadas (sin telemetría). Falta de profundidad de datos, compilada estáticamente en el código. |
| Depuración de viaje en el tiempo (TTD) | Excelente en errores complejos, sin codificar por adelantado, depuración repetible sin conexión, análisis descriptivo, captura todo. | Sobrecarga grande en tiempo de registro. Puede recopilar más datos necesarios. Los archivos de datos pueden ser grandes. |
Entrenamiento en vídeo
Para obtener más información sobre TTD, consulte estos vídeos.
Herramientas de desfragmentación 185 : Ivette y JamesP pasan por los conceptos básicos de TTD y demostración de algunas características en WinDbg
Herramientas de desfragmentación 186 - Jordi y JCAB demo más excelentes características de TTD en WinDbg
CppCon (YouTube): Jordi, Ken y JamesM presentaron TTD en WinDbg en CppCon 2017
Conceptos básicos del archivo de seguimiento
Tamaño del archivo de rastreo
El archivo de seguimiento puede ser grande. Debe asegurarse de que hay suficiente espacio disponible. Si graba un programa durante unos minutos, los archivos de seguimiento pueden crecer rápidamente para ser varios gigabytes. TTD no establece un tamaño máximo para los archivos de seguimiento para permitir escenarios complejos de larga duración. La nueva creación rápida del problema mantiene el tamaño del archivo de seguimiento lo más pequeño posible.
Archivos de seguimiento e índice
Un archivo de seguimiento (.run) almacena la ejecución del código durante la grabación.
Al detener la grabación, el sistema crea un archivo de índice (.idx) para optimizar el acceso a la información de seguimiento. WinDbg también crea automáticamente archivos de índice cuando abre archivos de seguimiento.
Los archivos de índice pueden ser grandes, normalmente dos veces más grandes que el archivo de seguimiento.
Puede volver a crear el archivo de índice desde el archivo de seguimiento mediante el !tt.index comando .
0:000> !tt.index
Successfully created the index in 10ms.
Los errores de registro y otras salidas de registro van a un archivo de registro de WinDbg.
Almacenará todos los archivos de salida en una ubicación que configure. La ubicación predeterminada está en la carpeta de documentos del usuario. Por ejemplo, para User1, los archivos TTD se almacenan aquí:
C:\Users\User1\Documents
Para obtener más información sobre cómo trabajar con archivos de seguimiento, vea Time Travel Debugging - Working with trace files (Depuración de viajes de tiempo: trabajar con archivos de seguimiento).
Cosas que hay que buscar
Incompatibilidades antivirus
Es posible que encuentre incompatibilidades debido a cómo TTD se engancha en los procesos para registrarlos. Normalmente, surgen problemas con el software antivirus u otro software del sistema que intenta rastrear y monitorear las llamadas de memoria del sistema. Si tiene problemas con la grabación, como un mensaje de permiso insuficiente, intente deshabilitar temporalmente cualquier software antivirus.
Otras utilidades que intentan bloquear el acceso a la memoria también pueden ser problemáticas. Por ejemplo, el Microsoft Enhanced Mitigation Experience Toolkit.
Otro ejemplo de un entorno que entra en conflicto con TTD es el marco de la aplicación Electron. En este caso, el seguimiento puede registrar, pero también puede ocurrir un interbloqueo o un fallo del proceso que se está grabando.
Solo modo de usuario
Actualmente, TTD solo admite la operación en modo de usuario, por lo que no se puede realizar un seguimiento de un proceso de modo kernel.
Reproducción de solo lectura
Puede viajar de nuevo en el tiempo, pero no puede cambiar el historial. Puede usar comandos de lectura de memoria, pero no puede usar comandos que modifiquen o escriban en la memoria.
Procesos protegidos por el sistema
Algunos procesos protegidos del sistema Windows, como el proceso Protected Process Light (PPL), están protegidos. TTD no se puede insertar en el proceso protegido para permitir la grabación de la ejecución del código.
Impacto en el rendimiento de la grabación
La grabación de una aplicación o proceso afecta al rendimiento del equipo. La sobrecarga de rendimiento real varía en función de la cantidad y el tipo de código que se ejecuta durante la grabación. Puede esperar aproximadamente un éxito de rendimiento de 10x-20x en escenarios de grabación típicos. A veces no hay una ralentización notable en la interfaz de usuario. Pero para las operaciones que requieran más recursos, como el cuadro de diálogo Abrir archivo, verás el impacto de la grabación.
Errores de archivo de seguimiento
Se pueden producir errores en el archivo de trazas. Para obtener más información, vea Time Travel Debugging - Troubleshooting (Depuración de viajes de tiempo: solución de problemas).
Características avanzadas de la depuración temporal
Escalas de tiempo
Las cronologías son una representación visual de los eventos que suceden durante la ejecución. Estos eventos pueden ser localizaciones de: puntos de interrupción, lecturas/escrituras de memoria, llamadas y retornos de funciones y excepciones. Para obtener más información sobre las escalas de tiempo, consulta WinDbg - Timelines.
Compatibilidad con el modelo de datos del depurador
-
Compatibilidad del modelo de datos integrado: TTD incluye compatibilidad con el modelo de datos. El uso de consultas LINQ para analizar errores de aplicación puede ser una herramienta eficaz. Puede usar la ventana del modelo de datos en WinDbg para trabajar con una versión expandible y explorable de
dxydx -g, lo que le permite crear tablas mediante consultas NatVis, JavaScript y LINQ.
Para obtener información general sobre el modelo de datos del depurador, consulte WinDbg - Modelo de datos. Para obtener información sobre cómo trabajar con el modelo de objetos del depurador TTD, vea Time Travel Debugging - Introduction to Time Travel Debugging objects .
Compatibilidad con scripting
- Automatización de scripting: la compatibilidad de scripting con JavaScript y NatVis permite la automatización de la investigación de problemas. Para obtener más información, consulte Time Travel Debugging - JavaScript Automation.
Para obtener información general sobre cómo trabajar con JavaScript y NatVis, vea WinDbg - Scripting.
utilidad de línea de comandos de TTD.exe
La utilidad de línea de comandos TTD.exe para registrar seguimientos está disponible. Para obtener más información, vea Time Travel Debugging - TTD.exe utilidad de línea de comandos.
Compatibilidad con TTD de código administrado
Puede usar la extensión de depuración de SOS (sos.dll) que se ejecuta en modo de 64 bits para depurar código administrado mediante TTD en WinDbg. Para obtener más información, consulte Depuración de código administrado mediante el depurador de Windows.
Introducción a TTD
Comience aquí
Si no está familiarizado con TTD, siga esta ruta de aprendizaje:
- Graba una traza - Captura tu primera traza de ejecución
- Reproducir un seguimiento - navegar y analizar la grabación
- Guía de recorrido de la aplicación de ejemplo: ejemplo de depuración detallado paso a paso
¿Necesita ayuda?
- Trabajar con archivos de seguimiento: administración y optimización de archivos de seguimiento
- Solución de problemas: resolución de problemas comunes
Características avanzadas
- Objetos del depurador TTD - consultar trazas con LINQ
- Automatización de JavaScript : automatización de la investigación de problemas