Depuración de viajes en el tiempo - Trabajo con archivos de rastreo
En esta sección se describe cómo trabajar con archivos creados y consumidos por la depuración de viajes en el tiempo.
Información general sobre archivos de rastreo
La depuración de viajes en el tiempo usa los siguientes archivos para depurar la ejecución del código.
El archivo de rastreo contiene el registro de la ejecución del código y tiene una extensión .RUN.
El archivo índice permite acceder rápidamente a la información del archivo de rastreo y tiene una extensión .IDX.
Los errores de registro y otra salida de registro se escriben en el archivo de registro del depurador.
Archivos .RUN de rastreo
Los archivos .RUN de rastreo pueden abrirse después de registrarse usando Archivo>Iniciar depuración>Abrir archivo de rastreo.
Por defecto, todos los archivos de registro se almacenan en la carpeta de documentos del usuario. Por ejemplo, para User1, los archivos de TTD se almacenarían aquí:
C:\Users\User1\Documents
Puede cambiar la ubicación de los archivos de rastreo al empezar a registrar. Para obtener más información, consulte Depuración de viajes en el tiempo - Registro.
La lista de archivos utilizados más recientemente le permite acceder rápidamente a los archivos de configuración de destino utilizados anteriormente. También se enumeran los archivos de rastreo o de volcado utilizados recientemente.
Archivos .IDX de índice
Se crea automáticamente un archivo .IDX de índice para el archivo .RUN de rastreo asociado al abrir el archivo de rastreo en WinDbg. Puede crear manualmente el archivo de índice utilizando el comando !index. Un índice permite acceder más rápidamente a la información de rastreo.
Los archivos IDX también pueden ser grandes, normalmente el doble que el archivo .RUN.
Nueva creación del archivo .IDX
Puede volver a crear el archivo .IDX a partir del archivo .RUN, utilizando el comando !index
. Para obtener más información, consulte Depuración de viajes en el tiempo - !index (viaje en el tiempo).
0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.
Uso compartido de archivos .RUN de rastreo de TTD
TTD solo es local y no funciona de forma remota conectada a otra máquina.
Los archivos de rastreo de TTD pueden compartirse con otros copiando el archivo .RUN. Esto puede ser útil para que un compañero de trabajo le ayude a resolver el problema. No es necesario instalar la aplicación que se bloquea ni realizar ninguna otra configuración relacionada para intentar reproducir el problema. Solo tienen que cargar el archivo de rastreo y depurar la aplicación como si estuviera instalada en su PC.
La máquina donde reproduzca el rastreo de TTD debe soportar todas las instrucciones que se utilizaron en la máquina de registro - por ejemplo instrucciones AVX.
Puede cambiar el nombre del archivo para incluir cualquier información adicional, como la fecha o un número de error.
El. No es necesario copiar el archivo IDX, ya que se puede volver a crear mediante el comando !index, tal como se describió anteriormente.
Sugerencia
Cuando colabore con otras personas, transmita cualquier posición de rastreo relevante relacionada con el problema en cuestión. El colaborador puede utilizar el comando !tt x:y
para desplazarse a ese punto exacto en el tiempo de la ejecución del código. Se pueden incluir intervalos de posiciones en el tiempo en las descripciones de los fallos para rastrear dónde se puede estar produciendo el posible problema.
Error - Archivo de registro
Los errores de registro y otra salida de registro se escriben en el archivo de registro del depurador. Para ver el archivo de registro, seleccione Ver>Registros.
Este ejemplo muestra el texto del registro de errores cuando se intenta iniciar y registrar un ejecutable llamado Foo.exe que no se encuentra en el directorio C:\Windows.
2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output:
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors:
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.
Tamaño del archivo de rastreo
Los archivos de rastreo de TTD pueden llegar a ser realmente grandes y es importante asegurarse de que dispone de suficiente espacio libre en disco. Si registra una aplicación o un proceso, aunque solo sea durante unos minutos, el archivo de rastreo puede llegar a tener un tamaño de varios gigabytes. El tamaño del archivo de rastreo depende de una serie de factores que se describen a continuación.
TTD no establece un tamaño máximo de archivos de seguimiento para permitir escenarios complejos de larga duración. Al recrear rápidamente el problema, el tamaño del archivo de rastreo será lo más pequeño posible.
Factores de tamaño de archivo de rastreo
No es posible proporcionar una estimación exacta del tamaño de los archivos de rastreo, pero existen algunas reglas generales que le ayudarán a comprender los tamaños de archivo de TTD.
Los siguientes factores pueden afectar al tamaño del archivo de rastreo:
- Número de instrucciones de código ejecutadas en todos los subprocesos al registrar la aplicación o el proceso en ejecución.
- El tiempo durante el cual se registró la aplicación o el proceso (solo porque afecta al número de instrucciones de código registradas)
- El tamaño de los datos de memoria utilizados por la aplicación o el proceso
El número de instrucciones ejecutadas y registradas es el factor que más afecta al tamaño del archivo de rastreo. Una rastreo suele requerir entre 1 bit y 1 byte por instrucción ejecutada. Es probable que un rastreo se sitúe en el extremo inferior de ese intervalo cuando el programa registrado ejecuta un menor número de funciones distintas y opera con un conjunto de datos más reducido. Es probable que un rastreo se sitúe en el extremo superior de ese intervalo cuando el programa registrado ejecute un mayor número de funciones distintas u opere con un conjunto de datos mayor.
Regla general del tamaño del archivo de rastreo
El archivo de seguimiento crece aproximadamente de 5 MB a 50 MB por segundo al grabar una aplicación o proceso activo, según los factores de tamaño de archivo de seguimiento identificados anteriormente.
El archivo de seguimiento no aumentará cuando la aplicación o el proceso que se grabe esté inactivo (por ejemplo, al esperar la entrada).
Actualmente no existe un límite máximo de tamaño para los archivos de rastreo. WinDbg puede reproducir archivos de rastreo de cientos de gigabytes de tamaño.
Tamaño del archivo de índice
WinDbg crea automáticamente el archivo de índice cuando se abre un rastreo por primera vez. Contiene información que ayuda al depurador a reproducir el rastreo y consultar información sobre la memoria de forma más eficiente. Su tamaño suele oscilar entre 1 y 2 veces el tamaño del archivo de rastreo. Los factores que afectan a su tamaño son similares a los que afectan al tamaño del archivo de rastreo.
En primer lugar, el tamaño del archivo de índice es proporcional a la longitud del rastreo. Un rastreo que contenga un mayor número de instrucciones registradas tendrá generalmente un índice mayor..
En segundo lugar, el tamaño del índice es proporcional a la amplitud de los accesos a la memoria. Si el programa que se registró accedió con frecuencia a un gran número de posiciones de memoria distintas, el índice será generalmente mayor que si el programa que se registró accedió a menos posiciones de memoria distintas o si los accesos a las posiciones de memoria fueron menos frecuentes.
Dado que estos factores son similares a los que afectan al tamaño del archivo de rastreo, el tamaño del archivo de índice suele ser proporcional al tamaño del archivo de índice (de ahí nuestra estimación de que suele ser entre 1 y 2 veces el tamaño del archivo de rastreo).
¿Qué ocurre si me quedo sin espacio en disco?
Tanto los archivos de rastreo de TTD como los de índice se escriben en el disco. En la actualidad no existe una limitación de tamaño máximo de archivo ni para el archivo de rastreo ni para el de índice. El archivo de rastreo crece en tamaño hasta que deje de registrar o supere la cantidad de espacio disponible en disco.
Durante el registro: TTD escribirá la última página en el archivo de rastreo y luego esperará efectivamente hasta que pueda escribir de nuevo. WinDbg sigue mostrando el cuadro de diálogo Grabación, pero no muestra un mensaje de error o advertencia cuando se agota el espacio en disco durante la grabación.
Si se agota el espacio en disco durante el registro, se obtiene un archivo de rastreo con un registro incompleto de la ejecución del código. El archivo de rastreo incompleto puede abrirse en WinDbg, pero es posible que no incluya el problema real si el error se produce después de haberse quedado sin espacio en disco al escribir el archivo de rastreo.
Solución alternativa: abra Explorador de archivos y compruebe si el espacio disponible en disco está cerca de cero. Alternativamente, observe el archivo de rastreo (.RUN) en el Explorador de archivos (por defecto en la carpeta Documentos) y si no crece regularmente en tamaño, puede que el registro esté a la espera. Seleccione el botón Detener y depurar en WinDbg, libere espacio o guárdelo en otro disco y comience a registrar de nuevo.
Durante la indexación: El depurador puede producir un archivo de índice no válido, dando lugar a un comportamiento impredecible en el depurador, o el host del motor del depurador puede fallar.
Solución: Cierre el depurador y elimine cualquier archivo de índice (.idx) que pueda existir para su rastreo. Libere espacio suficiente en el disco o mueva el archivo de seguimiento a otro disco con suficiente espacio libre. Vuelva a abrir el rastreo en el depurador y ejecute !index para crear un nuevo índice correcto. La indexación no modifica el archivo de seguimiento original (.run), por lo que no se habrá perdido ningún dato.