Compartir a través de


Notas sobre la versión de depuración de viaje en el tiempo

Logotipo de depuración de viajes en el tiempo con un reloj.

En este tema se proporciona información sobre las novedades de la depuración de viaje en el tiempo.

1.11.429

Esta actualización de TTD contiene algunas correcciones de errores junto con algunos cambios internos para mejorar la confiabilidad.

Nota: 1.11.410 introdujo una regresión en la emulación de la instrucción INTEL/AMD LODSD. En la próxima versión aparecerá una solución para ello.

Correcciones:

  • Mejorar la solidez de lectura de paquetes y otros cambios erróneos para mejorar la confiabilidad.
  • Corregir una regresión al simular la instrucción AVX VBROADCAST[I/F]128.
  • Corregir el acceso al registro de excepciones en ARM64 en compilaciones más recientes de Windows.

1.11.410

Accesibilidad mejorada: la interfaz de usuario de progreso ahora se escala correctamente con cambios de tamaño de texto.

El comando @$cursession.TTD.Calls() del depurador ahora admite caracteres comodín que coinciden con un gran número de funciones. Ahora es posible consultar un gran número de funciones (@$cursession.TTD.Calls("kernel32!*")).

Automatización: una nueva opción de línea de comandos -onMonitorReadyEvent indica cuándo el monitor de grabación (modificador -monitor) está listo para grabar nuevos procesos.

Correcciones:

  • Se han corregido algunas condiciones de carrera al inicializar la grabadora.
  • Se ha corregido el modo en que registramos syscalls para que los puntos de interrupción funcionen correctamente.
  • Se han corregido varios problemas relacionados con la grabación selectiva del módulo.

Correcciones de ARM64:

  • Se ha corregido un error que impedía la grabación de TTD en CPU de nivel ARM64v8.0 sin formato.
  • Se ha mejorado la mensajería al intentar usar en ARM64 un seguimiento de un proceso x86 o x64.

Correcciones de AMD/Intel (incluye algunos problemas notificados por Google):

  • Se ha corregido una emulación incorrecta de LODS: en lugar de llenar con ceros los bits sin usar de RAX, ahora se conservan correctamente.
  • Se ha corregido la emulación de la instrucción "pop ax" en los procesos x86/x64, que estaba llenando con ceros incorrectamente los bits superiores del registro completo (por ejemplo, "pop ax" borraba los bits superiores de rax).
  • Emulación directa de la instrucción XGETBV (más rápido).
  • Emulación directa de todos los movimientos SIMD de AVX512 (más rápido).

1.11.316

Se ha corregido una regresión que provocaba bloqueos ocasionales al grabar programas con secuencias de instrucciones intensivas de datos ininterrumpidas.

Correcciones de ARM64:

  • Ahora se admite la grabación en procesos ARM64 que tienen habilitada la característica PAC.
  • Se han corregido las instrucciones ANDS y TST, que no podían borrar las marcas de transporte y desbordamiento.

Correcciones de AMD/Intel:

  • Se ha corregido un error por el que TTD emulaba incorrectamente "xchg r8, rax" y "xchg r8w", ax" como NOP.

1.11.304

TTD ahora implementa y publica públicamente una API para controlar la grabadora desde el proceso grabado en directo. Puede encontrar documentación y un ejemplo en GitHub.

TTD ahora puede insertarse con la grabación desactivada mediante el nuevo conmutador -recordMode. De forma predeterminada, TTD usa -recordMode Automatic , lo que hace que se registren todos los subprocesos. Si -recordMode Manual se especifica, TTD inserta en el proceso de destino, pero no registra nada hasta que se le indique que lo haga a través de una llamada API.

La grabación ahora se puede restringir a un conjunto específico de módulos mediante el conmutador -module. En algunos escenarios, esto puede dar lugar a una grabación considerablemente más rápida y archivos de seguimiento más pequeños. Se puede especificar más de un conmutador -module.

Los componentes de registro y reproducción coincidentes ahora se incluyen en la distribución. En caso de incompatibilidad entre el depurador y la grabadora de línea de comandos, o un error de reproducción, los componentes de reproducción se pueden copiar en la instalación del depurador como solución alternativa hasta que se publique un nuevo depurador.

La ubicación del archivo instalado se puede encontrar en PowerShell haciendo lo siguiente:

ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation

Se agregó

  • Un conmutador -recordmode para habilitar la inyección sin grabación automática (1.11.296)
  • Un conmutador -module para crear la configuración de SR (1.11.291)
  • Proyección de los datos personalizados registrados por la API en proceso al modelo de datos (1.11.286)
  • Una nueva TTDLiveRecorder.dll para conectarla junto con TTDRecordCPU.dll (1.11.283)
  • Componentes de reproducción a MSIX y corrección de la consulta del SDK (1.11.265)

Cambiado

None

Fijo

  • Solución temporal de un error en el serializador JSON nlohmann, que se usa en algunas herramientas internas (1.11.281)
  • Se ha ajustado la alineación de cadenas para evitar un error de CRT poco frecuente (1.11.279)
    • Se ha notificado y corregido en los códigos base de VS y OS.
  • Varias correcciones pequeñas de los informes de bloqueo de Watson (1.11.276)
  • Se ha corregido una regresión que puede provocar daños en algunos casos del archivo de seguimiento (1.11.264)

Problemas conocidos

  • En ARM64, el compilador no puede llamar al final de una serie de funciones de alta frecuencia que, en casos extremos, pueden hacer que la grabadora se quede sin espacio de pila y se bloquee.

1.11.261

Entre los cambios importantes de esta versión se incluyen los siguientes:

  • [ARM64] Se ha corregido el comportamiento de las instrucciones SXTL, SQXTN2, SQXTUN2, UQXTN2y XTN2 y TRN1 cuando el registro de destino se usa como origen.
  • [ARM64] Se ha corregido un problema que provocaba que el depurador mostrara los registros SIMD con sus 64 bits inferiores duplicados en los 64 bits altos.
  • [AMD64] Correcciones de emulación AVX512 para los procesadores Zen4 de AMD (los registros estaban dañados).

Cambiado

  • Se ha implementado un nuevo sistema de control de versiones específicamente para el emulador. (1.11.260)

Fijo

  • Se han corregido las instrucciones de ARM64 erróneas en las que el registro de destino también se usa como origen. (1.11.261)
  • Se ha corregido la solución temporal de Zen4 para los retornos directos al emulador. (1.11.222)

1.11.202

Esta versión corrige una serie de problemas que se producían al grabar servicios o supervisar el inicio de procesos a través del conmutador -monitor. También se ha eliminado la compatibilidad con la grabación ARM32 del producto.

Cambiado

  • Se ha reducido el tamaño de los archivos binarios vinculando componentes de TTD a UCRT como DLL. (1.11.191)

Fijo

  • Se ha corregido la grabación de servicios. (1.11.193)
  • Se han corregido varios problemas al usar -monitor. (1.11.189)
  • Se ha corregido el marco de pila de la función que conserva los valores no volátiles al ejecutar reservas en x64 (1.11.188)
  • Se ha vuelto a habilitar el búfer de salida para TTD (1.11.187)
  • Se ha corregido el control del GPO en ProcessMonitorServer (1.11.179)

Quitado

  • Se ha eliminado el código de grabación ARM32 del repositorio (1.11.198)

1.11.173

Esta versión aumenta la visibilidad de ciertos mensajes de error extrayéndolos del archivo .out e imprimiéndolos en la consola. También se ha corregido un bloqueo poco frecuente durante la reproducción de seguimiento.

Cambiado

  • Extracción e impresión de mensajes de error del archivo .out (1.11.173)

Fijo

  • Se ha corregido el conflicto de archivos al leer el archivo .out del proceso independiente. (1.11.171)
  • Se ha corregido un bloqueo poco frecuente durante la reproducción de seguimiento. (1.11.166)

1.11.163

Esta versión agrega compatibilidad con la grabación de procesos x86 en máquinas x64.

Cambiado

  • Se ha corregido la grabación x86 con la instalación de TTD x64 (1.11.163)

Fijo

  • Limpieza del CLUF (1.11.161)

1.11.159

Esta versión es la primera versión pública de la grabadora de línea de comandos. Junto con varios cambios necesarios para habilitar la versión pública de la grabadora de línea de comandos, esta versión también incluye una serie de correcciones de errores, incluidas un par de correcciones para el emulador de CPU.

El nuevo conmutador -timestampFileName habilita la generación de archivos .run basada en marca de tiempo. Esto resulta útil cuando se graban muchas instancias del mismo proceso y se desea minimizar el tiempo de inicio de la grabación.

Cambiado

  • Se puede elegir el modo de inyección predeterminado en tiempo de ejecución en función del cual se usará el seguimiento (1.11.156)
  • Se ha agregado un conmutador para habilitar la generación de archivos .run basada en marca de tiempo (1.11.155)
  • Se ha agregado CLUF y -accepteula a TTD (1.11.154)
  • Se ha agregado ProcLaunchMon.sys a MSIX (1.11.153)
  • Se ha creado de MSIX y MSIXBUNDLE por arquitectura (1.11.152)
  • Se ha corregido una serie de problemas que surgieron al probar TTD creado con Clang. (1.11.146)
  • Correcciones de Clang para TTDAnalyze (1.11.144)

Fijo

  • Se han revisado los comentarios sobre appinstaller/versión pública (1.11.159)
  • Comentarios de RC (1.11.157)
  • Se ha evitado destruir el registro Zero inicializando RegisterInfo para que apunte a Sink. (1.11.149)
  • Se ha corregido la instrucción TST de inmediato y se ha mejorado la prueba de unidad para cubrirla y más. (1.11.148)
  • Se ha consolidado la decisión del proceso protegido y se ha deshabilitado el uso de procesos protegidos (1.11.147)

1.11.138

Cambiado

  • Se ha creado MSIX de grabadora (1.11.138)
  • Se han corregido todos los problemas para que Clang pueda crear TTD. (1.11.137)
  • Se ha introducido -monitor X como forma de registrar un proceso cuando se inicia (1.11.116)

Fijo

  • Se ha corregido la emulación "CMP ZR" ARM64 (1.11.128)
  • Se ha corregido la emulación de AVX512 en los procesadores Zen4 de AMD (1.11.127)
  • Se ha corregido el mecanismo que usa TTD para buscar archivos para una CPU específica (1.11.121)
  • Se ha corregido la regresión x86 TTD (TTDRecordCPU.dll no se puede cargar) (1.11.110)
  • Se ha corregido el retorno a la ruta de acceso nativa en ARM64 para que no se destruya X28 (1.11.109)

Consulte también

Depuración de viaje en el tiempo - Información general

Depuración de viaje en el tiempo - Grabadora de línea de comandos