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.
En este tema se proporciona información sobre las novedades de la depuración de viaje en el tiempo.
1.11.553
!tt sin argumentos ahora muestra un breve texto de ayuda y su posición actual (en lugar de pasar al principio del seguimiento).
Un nuevo método de modelo de datos permite ver el historial de los valores de una variable local. Dentro de un objeto Frame, como @$curframe para el marco actual, puede usar . TTD. VariableHistory() para obtener un registro de los valores escritos en una variable y el intervalo de posiciones que la variable mantuvo ese valor.
-
dx -g @$curframe.TTD.VariableHistory().Variablesmuestra la lista de nombres de variables locales. -
dx -g @$curframe.TTD.VariableHistory().Variables[n].Valuesmuestra el historial de la variable local #n.
La API de reproducción de TTD también está disponible en un SDK experimental. Esta API es la misma API que usa el depurador para interactuar con TTD y lo que habilita . Calls() / . Memory() para recopilar datos de forma eficaz. Para obtener más información, consulte https://aka.ms/ttdsdk.
Fijo
- Corrección del bloqueo causado por el desuso de
ErrorReporting::PrintError(1.11.553)
1.11.532
Esta versión es una versión de mantenimiento que mejora la solidez de la grabación. Esta versión TTD coincide con la versión de junio de 2025 de Windbg. Una nueva característica es que el objeto del modelo de datos Position actualmente informa el porcentaje en la traza.
Cambiado
- Mantenimiento de infraestructura varios.
- Use la implementación estándar ISO de C++ volatile. (1.11.518)
- Agregar porcentaje a la proyección del modelo de datos "Position". (1.11.514)
Fijo
- Aumente la robustez del manejo de TTD de las instrucciones decodificadas. (1.11.530)
- Quite los usos de XSAVE en el emulador y optimice la transferencia de registros interna. (1.11.509)
1.11.506
Esta versión es una versión menor para coincidir con la versión de abril de 2025 de WinDbg.
Cambiado
Al hacer clic en una posición TTD en el modelo de datos (por ejemplo, en la lista Módulos), se desplaza a esa posición en el seguimiento. (1.11.492)
Nota: La ventana de comandos no mostrará la posición actualizada de TTD hasta que se ejecute el siguiente paso o se ejecute el siguiente comando.
Fijo
- Agregue el nombre del proceso al archivo .out al asociarlo a un PID para ayudar a solucionar problemas. (1.11.486)
1.11.481
Hemos renovado el comando !tt para brindarte formas más poderosas de navegar por tu rastro.
- Los porcentajes fraccionarios se pueden usar para reducir el espacio de búsqueda (!tt 23.65)
- Busque el valor anterior o la próxima vez que un registro cambie el valor (!tt br ebx)
- Encontrar la anterior/siguiente vez que se accede a un rango de memoria (!tt ba- [addr] [range])
- Encontrar la anterior/siguiente vez que la ejecución se mueve a un módulo diferente (!tt bm)
- Encontrar la anterior/siguiente vez que la ejecución se mueve a un módulo específico (!tt bm ntdll)
Para obtener más información, consulte !tt (viaje de tiempo).
Algunas correcciones importantes:
- "Error: el valor de 64 bits pierde precisión en la conversión a un número" los mensajes de error cuando se usa el
@$cursession.TTD.Data.Heap()en un seguimiento de 32 bits han desaparecido. - El análisis sintáctico de la opción de ayuda (
-?,-help) ahora se detecta correctamente en cualquier parte de la línea de comandos. -
dx @$cursession.TTD.Calls()ya no requiere direcciones para que coincidan con el inicio de una función. En su lugar, la dirección se asigna al inicio de la función coincidente más cercana. - TTD informa correctamente de la versión del sistema operativo de destino desde el comando vertarget.
- El uso de "-monitor" con un nombre de servicio hospedado ya no registra los servicios hospedados no relacionados.
Se agregó
- Puntos de interrupción de cambio de registro en trazas TTD (1.11.431)
Cambiado
- Corregir registro de servicios por nombre usando modo monitor (1.11.477)
- Capture la información real del sistema operativo del sistema de destino para su uso por el depurador (1.11.473)
- Corregir la transferencia de registros XMM entre el emulador y CONTEXT (1.11.469)
- Permitir consultas de llamada contra direcciones dentro de una función (1.11.459)
- Soportar símbolos como direcciones y tamaños en la línea de comandos !tt (1.11.454)
- Mejorar la coherencia y ampliar las funcionalidades de los comandos de navegación TTD (1.11.453)
- Mejora de la coherencia de la base de datos del módulo frente a datos dañados (1.11.430)
Fijo
- Añadir el nombre del proceso a la salida al vincularse con el PID (1.11.486)
- TTD. Data.Heap() notifica "Error: el valor de 64 bits pierde precisión en la conversión al número" en algunos casos (1.11.471)
- Mejorar la confiabilidad de la grabación de un proceso con pilas de sombra activadas (1.11.466)
- Agregar la navegación del módulo mediante !tt bm y el modelo de datos (1.11.462)
- Se han corregido algunos problemas con el análisis de la línea de comandos. (1.11.444)
- Corregir lodsd, cargar doble palabra en la dirección (poner a cero la parte superior de rax) (1. 11.434)
- Corrección de algunos errores de libfuzzer (1.11.433)
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. Se producirá una corrección para esta regresión en la próxima versión.
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 poner a cero 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 anulando 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 utiliza -recordMode Automatic, lo que provoca que todos los subprocesos se registren. Si -recordMode Manual se especifica, entonces TTD inyecta en el proceso de destino, pero no registra nada hasta que se le indique que lo haga a través de una llamada de API.
La grabación ahora se puede restringir a un conjunto específico de módulos mediante el conmutador -module. En algunos escenarios, esta restricción 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 mediante la ejecución del siguiente comando:
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 de un error en el serializador JSON nlohmann, que se usa en algunas herramientas internas (1.11.281)
- Ha contribuido a una corrección para esa biblioteca que estará disponible en una versión futura.
- 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 a varias funciones de alta frecuencia, lo que, en casos extremos, puede hacer que la grabadora se queda 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,UQXTN2yXTN2yTRN1cuando 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 varios problemas detectados durante la grabación de servicios o el monitoreo del lanzamiento de procesos a través del interruptor -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
- Solucione el conflicto de archivos al leer el archivo .out desde un proceso separado. (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 varias correcciones de errores, incluido 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. Este modificador es ú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
-accepteulaa 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)
- Corrija varios problemas que se han detectado al probar TTD compilado 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 viajes en el tiempo: Información general
Depuración de viaje en el tiempo - Grabadora de línea de comandos