Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menyediakan informasi tentang apa yang baru dalam Time Travel Debugging.
1.11.553
!tt tanpa kata argumen sekarang memperlihatkan teks bantuan singkat dan posisi saat ini (alih-alih berpindah ke awal penelusuran).
Metode model data baru memungkinkan Anda melihat riwayat nilai variabel lokal. Dalam objek Bingkai, seperti @$curframe untuk bingkai saat ini, Anda dapat menggunakan . TTD. VariableHistory() untuk mendapatkan log nilai yang ditulis ke variabel dan rentang posisi variabel yang disimpan nilai tersebut.
-
dx -g @$curframe.TTD.VariableHistory().Variablesmenampilkan daftar nama variabel lokal. -
dx -g @$curframe.TTD.VariableHistory().Variables[n].Valuesmenampilkan riwayat untuk variabel lokal #n.
API Pemutaran Ulang TTD juga tersedia dalam SDK eksperimental. API ini adalah API yang sama dengan yang digunakan debugger untuk berinteraksi dengan TTD dan apa yang memungkinkan . Calls() / . Memori() untuk mengumpulkan data secara efisien. Untuk informasi selengkapnya, lihat https://aka.ms/ttdsdk .
Diperbaiki
- Memperbaiki crash yang disebabkan oleh penghentian penggunaan
ErrorReporting::PrintError(1.11.553)
1.11.532
Rilis ini adalah rilis pemeliharaan yang membuat peningkatan pada ketahanan perekaman. Rilis TTD ini bertepatan dengan rilis Windbg Juni 2025. Salah satu fitur baru adalah objek model data posisi sekarang melaporkan persentase ke dalam pelacakan.
Diubah
- Pemeliharaan infrastruktur lain-lain.
- Gunakan implementasi standar ISO dari volatile dalam C++. (1.11.518)
- Tambahkan Persentase ke proyeksi model data posisi. (1.11.514)
Diperbaiki
- Meningkatkan ketahanan penanganan instruksi yang didekodekan TTD. (1.11.530)
- Hapus penggunaan XSAVE di emulator dan optimalkan transfer register internal. (1.11.509)
1.11.506
Rilis ini adalah rilis kecil yang bertepatan dengan rilis April 2025 dari WinDbg.
Diubah
Mengklik posisi TTD dalam model data (misalnya, dalam daftar Modul) menavigasi ke posisi tersebut dalam pelacakan. (1.11.492)
Catatan: Jendela perintah tidak akan menampilkan posisi TTD yang diperbarui hingga langkah berikutnya atau perintah jalankan dijalankan.
Diperbaiki
- Tambahkan nama proses ke file .out saat melampirkan ke PID untuk membantu pemecahan masalah. (1.11.486)
1.11.481
Kami mengubah perintah !tt untuk memberi Anda cara yang lebih kuat untuk menavigasi melalui jejak Anda:
- Persentase pecahan dapat digunakan untuk mempersempit ruang pencarian (!tt 23.65)
- Temukan waktu sebelumnya/berikutnya saat nilai register berubah (!tt br ebx)
- Temukan waktu sebelumnya/berikutnya ketika rentang memori diakses (!tt ba- [addr] [range])
- Temukan waktu eksekusi sebelumnya/berikutnya saat beralih ke modul lain (!tt bm)
- Temukan eksekusi sebelumnya/berikutnya yang berpindah ke modul tertentu (!tt bm ntdll)
Untuk informasi selengkapnya, lihat !tt (perjalanan waktu).
Beberapa perbaikan penting:
- Pesan "Kesalahan: Nilai 64-bit kehilangan presisi pada konversi ke angka" saat menggunakan
@$cursession.TTD.Data.Heap()pada pelacakan 32-bit tidak muncul lagi. - Sekarang, penguraian opsi bantuan (
-?,-help) terdeteksi dengan benar di mana saja di baris perintah. -
dx @$cursession.TTD.Calls()tidak lagi memerlukan alamat untuk mencocokkan awal fungsi. Sebagai gantinya, alamat dipetakan ke awal fungsi pencocokan terdekat. - TTD melaporkan versi OS target dengan benar dari perintah vertarget.
- Menggunakan "-monitor" dengan nama layanan yang dihosting tidak lagi merekam layanan yang dihosting yang tidak terkait.
Ditambahkan
- Mendaftarkan titik henti perubahan dalam jejak TTD (1.11.431)
Diubah
- Memperbaiki perekaman layanan berdasarkan nama menggunakan mode monitor (1.11.477)
- Mengambil informasi OS sistem target aktual untuk digunakan oleh debugger (1.11.473)
- Memperbaiki transfer register XMM antara emulator dan CONTEXT (1.11.469)
- Mengizinkan kueri panggilan terhadap alamat di dalam fungsi (1.11.459)
- Mendukung simbol sebagai alamat/ukuran di baris perintah !tt (1.11.454)
- Meningkatkan konsistensi dan memperluas kemampuan perintah navigasi TTD (1.11.453)
- Meningkatkan konsistensi DB modul dalam menghadapi data yang rusak (1.11.430)
Diperbaiki
- Menambahkan nama proses ke output ketika terhubung ke PID (1.11.486)
- TTD. Data.Heap() melaporkan "Kesalahan: Nilai 64-bit kehilangan presisi pada konversi ke angka" dalam beberapa kasus (1.11.471)
- Meningkatkan keandalan perekaman proses dengan mengaktifkan shadow stacks (1.11.466)
- Tambahkan navigasi modul melalui !tt bm dan model data (1.11.462)
- Perbaiki Beberapa masalah dengan penguraian baris perintah. (1.11.444)
- Perbaiki lodsd, muat doubleword di alamat (menghapus bagian atas register rax menjadi nol) (1.11.434)
- Memperbaiki beberapa bug libfuzzer (1.11.433)
1.11.429
Pembaruan TTD ini berisi beberapa perbaikan bug bersama dengan beberapa perubahan internal untuk meningkatkan keandalan.
Catatan: 1.11.410 memperkenalkan regresi dalam emulasi instruksi Intel/AMD LODSD. Perbaikan untuk regresi ini akan datang di rilis berikutnya.
Perbaikan
- Meningkatkan ketahanan dalam membaca paket dan berbagai perubahan lain untuk meningkatkan keandalan.
- Perbaiki regresi dalam meniru instruksi AVX VBROADCAST[I/F]128.
- Perbaiki akses rekaman pengecualian pada ARM64 di build Windows yang lebih baru.
1.11.410
Aksesibilitas yang ditingkatkan: Antarmuka pengguna Progress sekarang dapat diskalakan dengan benar sesuai perubahan Ukuran Teks.
Perintah @$cursession.TTD.Calls() dalam debugger sekarang mendukung karakter pengganti yang cocok dengan sejumlah besar fungsi.
Sekarang dimungkinkan untuk mengkueri sejumlah besar fungsi (@$cursession.TTD.Calls("kernel32!*")).
Automasi: Opsi baris perintah baru -onMonitorReadyEvent menunjukkan kapan pengalih monitor rekaman (-monitor) siap untuk merekam proses baru.
Perbaikan
- Perbaiki beberapa kondisi balapan saat menginisialisasi perekam.
- Perbaiki cara kami merekam syscalls sehingga titik henti berfungsi dengan benar.
- Perbaiki beberapa masalah yang terkait dengan perekaman selektif modul.
Perbaikan ARM64:
- Memperbaiki bug yang mencegah perekaman TTD pada CPU tingkat ARM64v8.0 biasa.
- Meningkatkan pesan saat mencoba menggunakan pelacakan proses x86 atau x64 pada ARM64.
Perbaikan AMD/Intel (termasuk beberapa masalah yang dilaporkan oleh Google):
- Mengoreksi emulasi LODS yang salah: Alih-alih mengosongkan bit-bit RAX yang tidak digunakan, sekarang bit-bit tersebut dipertahankan dengan benar.
- Memperbaiki emulasi instruksi "pop ax" dalam proses x86/x64, yang secara keliru men-nol-kan bit atas dari register lengkap (misalnya, "pop ax" membersihkan bit atas rax).
- Emulasi langsung dari instruksi XGETBV (lebih cepat).
- Emulasi langsung semua gerakan AVX512 SIMD (lebih cepat).
1.11.316
Memperbaiki regresi yang menyebabkan crash sesekali saat merekam program dengan urutan instruksi berat data yang lama tidak terganggu.
Perbaikan ARM64:
- Perekaman dalam proses ARM64 yang mengaktifkan fitur PAC sekarang didukung.
- Memperbaiki instruksi ANDS dan TST, yang gagal menghapus bendera carry dan overflow.
Pemecahan Masalah AMD/Intel:
- Memperbaiki kesalahan di mana TTD mengemulasikan secara tidak benar "xchg r8,rax" dan "xchg r8w,ax" sebagai NOP.
1.11.304
TTD sekarang menerapkan dan menerbitkan API secara publik untuk mengontrol perekam dari dalam proses yang direkam langsung. Dokumentasi dan sampel dapat ditemukan di GitHub.
TTD sekarang dapat menyuntikkan sendiri dengan mematikan perekaman menggunakan sakelar baru -recordMode. Secara default, TTD menggunakan -recordMode Automatic, yang menyebabkan semua utas direkam. Jika -recordMode Manual ditentukan, maka TTD menyuntikkan ke dalam proses target tetapi tidak merekam apa pun sampai disuruh melakukannya melalui panggilan API.
Perekaman sekarang dapat dibatasi untuk sekumpulan modul tertentu menggunakan sakelar -module . Dalam beberapa skenario, pembatasan ini dapat mengakibatkan perekaman yang jauh lebih cepat dan file pelacakan yang lebih kecil. Lebih dari satu -module switch dapat ditentukan.
Komponen rekaman dan pemutaran ulang yang sesuai sekarang disertakan dalam distribusi. Jika terjadi ketidakcocokan antara debugger dan perekam baris perintah, atau bug pemutaran ulang, komponen pemutaran ulang dapat disalin ke dalam penginstalan debugger sebagai solusi hingga debugger baru dirilis.
Lokasi file yang diinstal dapat ditemukan di PowerShell dengan menjalankan perintah berikut:
ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation
Ditambahkan
- Tambahkan -recordmode switch untuk mengaktifkan injeksi tanpa rekaman otomatis (1.11.296)
- Tambahkan -module switch dan gunakan untuk membuat konfigurasi SR (1.11.291)
- Memproyeksikan data kustom yang direkam oleh API dalam proses ke model data (1.11.286)
- Tambahkan TTDLiveRecorder.dll baru dan hubungkan dengan TTDRecordCPU.dll (1.11.283)
- Tambahkan komponen pemutaran ulang ke MSIX & perbaiki pencarian SDK (1.11.265)
Diubah
tidak ada
Diperbaiki
- Mengatasi bug pada serializer JSON nlohmann yang digunakan dalam beberapa alat internal (1.11.281)
- Memberikan kontribusi berupa perbaikan pada perpustakaan tersebut yang akan tersedia dalam rilis mendatang.
- Menyesuaikan string alignment untuk menghindari bug CRT yang langka (1.11.279)
- Dilaporkan dan diperbaiki dalam basis kode VS dan OS.
- Beberapa perbaikan kecil berdasarkan laporan kerusakan Watson (1.11.276)
- Memperbaiki regresi yang dapat menyebabkan kerusakan file jejak dalam beberapa kasus (1.11.264)
Masalah umum
- Pada ARM64, pengkompilasi gagal memanggil beberapa fungsi frekuensi tinggi, yang dalam kasus ekstrem dapat menyebabkan perekam kehabisan ruang tumpukan dan crash.
1.11.261
Perubahan penting dalam rilis ini meliputi:
- [ARM64] Memperbaiki perilaku
SXTL, ,SQXTN2,SQXTUN2UQXTN2,XTN2danTRN1instruksi ketika register tujuan digunakan sebagai sumber. - [ARM64] Memperbaiki masalah yang menyebabkan debugger menampilkan register SIMD dengan menggandakan 64 bit terendah ke dalam 64 bit tertinggi.
- [AMD64] Perbaikan emulasi AVX512 untuk prosesor Zen4 AMD (register rusak).
Diubah
- Terapkan sistem penerapan versi baru khusus untuk emulator. (1.11.260)
Diperbaiki
- Perbaiki instruksi ARM64 yang rusak di mana register tujuan juga digunakan sebagai sumber. (1.11.261)
- Perbaiki solusi Zen4 untuk pengembalian langsung ke emulator. (1.11.222)
1.11.202
Rilis ini memperbaiki beberapa masalah yang dihadapi saat merekam layanan atau memantau peluncuran proses melalui sakelar -monitor . Ini juga menghapus dukungan perekaman ARM32 dari produk.
Diubah
- Kurangi ukuran biner dengan menautkan komponen TTD ke UCRT sebagai DLL. (1.11.191)
Diperbaiki
- Perbaiki perekaman layanan. (1.11.193)
- Perbaiki beberapa masalah saat menggunakan -monitor. (1.11.189)
- Perbaiki bingkai tumpukan fungsi yang mempertahankan non-volatil saat menjalankan fallback pada x64 (1.11.188)
- Pengaktifan kembali buffering output untuk TTD (1.11.187)
- Memperbaiki penanganan handle GPO di ProcessMonitorServer (1.11.179)
Dihapus
- Menghapus kode rekaman ARM32 dari repositori (1.11.198)
1.11.173
Rilis ini meningkatkan visibilitas pesan kesalahan tertentu dengan mengekstraknya dari file .out dan mencetaknya ke konsol. Ini juga memperbaiki crash yang jarang terjadi selama pemutaran ulang jejak.
Diubah
- Mengekstrak dan mencetak pesan kesalahan dari file .out (1.11.173)
Diperbaiki
- Perbaiki konflik file saat membaca file .out dari proses terpisah. (1.11.171)
- Perbaiki crash langka selama pemutaran ulang jejak. (1.11.166)
1.11.163
Rilis ini menambahkan dukungan untuk merekam proses x86 pada mesin x64.
Diubah
- Memperbaiki perekaman x86 dengan penginstalan X64 TTD (1.11.163)
Diperbaiki
- Pembersihan EULA (1.11.161)
1.11.159
Rilis ini adalah rilis publik pertama dari perekam baris perintah. Seiring dengan beberapa perubahan yang diperlukan untuk mengaktifkan rilis publik perekam baris perintah, rilis ini juga mencakup beberapa perbaikan bug, termasuk beberapa perbaikan pada emulator CPU.
Sakelar baru -timestampFileName memungkinkan pembuatan file .run berbasis tanda waktu. Sakelar ini berguna saat Anda merekam banyak instans dari proses yang sama, dan ingin meminimalkan waktu mulai perekaman.
Diubah
- Pilih mode injeksi default pada runtime berdasarkan pelacak mana yang digunakan (1.11.156)
- Tambahkan sakelar untuk mengaktifkan pembuatan file .run berbasis tanda waktu (1.11.155)
- Tambahkan EULA dan
-accepteulake TTD (1.11.154) - Menambahkan ProcLaunchMon.sys ke MSIX (1.11.153)
- Membuat MSIX per-arch dan MSIXBUNDLE (1.11.152)
- Perbaiki beberapa masalah yang muncul saat menguji TTD yang dibangun dengan Clang. (1.11.146)
- Perbaikan Clang untuk TTDAnalyze (1.11.144)
Diperbaiki
- Meninjau umpan balik tentang appinstaller / rilis publik (1.11.159)
- Umpan balik RC (1.11.157)
- Hindari merusak register Zero dengan cara menginisialisasi RegisterInfo untuk menunjuk ke Sink. (1.11.149)
- Perbaiki instruksi TST dengan segera dan tingkatkan pengujian unit untuk mencakupnya dan banyak lagi. (1.11.148)
- Mengonsolidasikan keputusan proses yang dilindungi dan menonaktifkan penggunaan proses yang dilindungi (1.11.147)
1.11.138
Diubah
- Membuat perekam MSIX (1.11.138)
- Perbaiki semua masalah sehingga Clang dapat membangun TTD. (1.11.137)
- Perkenalkan -monitor X sebagai cara untuk merekam proses saat diluncurkan (1.11.116)
Diperbaiki
- Memperbaiki emulasi ARM64 "CMP ZR" (1.11.128)
- Memperbaiki emulasi AVX512 pada prosesor Zen4 AMD (1.11.127)
- Perbaiki mekanisme yang digunakan TTD untuk menemukan file untuk CPU tertentu (1.11.121)
- Memperbaiki regresi TTD x86 (TTDRecordCPU.dll gagal dimuat) (1.11.110)
- Perbaiki pengembalian ke jalur asli di ARM64 agar tidak membuang X28 (1.11.109)
Lihat Juga
Debugging Time Travel – Gambaran Umum
Penelusuran Kesalahan Perjalanan Waktu – Perekam baris perintah