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.
Apa itu Debugging Perjalanan Waktu?
Time Travel Debugging (TTD) adalah alat yang menangkap jejak proses Anda saat dijalankan dan memutar ulang nanti baik ke depan maupun mundur. TTD membantu Anda men-debug masalah dengan memungkinkan Anda "memutar balik" sesi debugger Anda, alih-alih harus mereproduksi masalah sampai Anda menemukan bug.
TTD memungkinkan Anda untuk kembali ke masa lalu untuk lebih memahami kondisi yang mengarah ke bug dan memutar ulang beberapa kali untuk mempelajari cara terbaik untuk memperbaiki masalah.
TTD memiliki keuntungan daripada file crash dump, yang sering melewatkan status dan jalur eksekusi yang menyebabkan kegagalan akhir.
Jika Anda tidak dapat mengetahui sendiri masalahnya, Anda dapat berbagi jejak dengan rekan kerja sehingga mereka dapat melihat dengan tepat apa yang Anda lihat. Fitur ini membuat kolaborasi lebih mudah daripada penelusuran kesalahan langsung, karena instruksi yang direkam sama, sedangkan lokasi alamat dan eksekusi kode berbeda pada PC yang berbeda. Anda juga dapat berbagi titik waktu tertentu untuk membantu rekan kerja Anda mencari tahu di mana harus memulai.
TTD efisien dan bekerja untuk menambah overhead seminimal mungkin saat menangkap eksekusi kode dalam file pelacakan.
TTD menyertakan sekumpulan objek model data debugger yang bisa Anda gunakan untuk mengkueri jejak dengan LINQ. Misalnya, Anda dapat menggunakan objek TTD untuk menemukan kapan modul kode tertentu dimuat atau menemukan semua pengecualian.
Persyaratan
Time Travel Debugging terintegrasi dengan WinDbg, memberikan pengalaman perekaman dan pemutaran ulang yang lancar.
Untuk menggunakan TTD, Anda perlu menjalankan debugger dengan izin yang ditingkatkan. Instal WinDbg dengan menggunakan akun yang memiliki hak istimewa administrator dan gunakan akun tersebut saat merekam di debugger. Untuk menjalankan debugger dengan izin yang ditinggikan, pilih dan tahan (atau klik kanan) ikon WinDbg di menu Mulai, lalu pilih Lainnya > Jalankan sebagai Administrator.
Catatan rilis
TTD terus berkembang. Untuk informasi terbaru, lihat Catatan rilis debugging perjalanan waktu.
Rekaman mungkin berisi informasi terkait pengidentifikasi pribadi atau keamanan
File pelacakan yang dibuat yang berisi rekaman mungkin berisi informasi terkait identitas pribadi atau keamanan, termasuk tetapi tidak selalu terbatas pada jalur file, registri, memori, atau konten file. Informasi yang tepat tergantung pada aktivitas proses target saat direkam. Ketahui hal ini ketika berbagi file rekaman dengan orang lain.
utilitas perekaman baris perintah TTD.exe
Selain merekam jejak di UI WinDbg, ada utilitas baris perintah TTD.exe tersedia untuk merekam jejak.
Anda mungkin memiliki skenario di mana hanya perekam baris perintah TTD yang diperlukan: merekam pada PC tanpa menginstal debugger, skenario perekaman tingkat lanjut, otomatisasi pengujian, dll. Dalam skenario ini, Anda hanya dapat menginstal perekam baris perintah TTD melalui URL. Untuk informasi selengkapnya, lihat Debugging Perjalanan Waktu - utilitas baris perintah bernama TTD.exe.
Perbandingan Alat Debugging
Tabel ini meringkas kelebihan dan kekurangan dari berbagai solusi debug yang tersedia.
| Pendekatan | Keuntungan | Kontra |
|---|---|---|
| Penelusuran kesalahan langsung | Pengalaman interaktif, memantau alur eksekusi, dapat mengubah keadaan target, alat yang dikenal dalam konteks yang dikenal. | Mengganggu pengalaman pengguna, mungkin memerlukan upaya untuk mereproduksi masalah berulang kali, dapat berdampak pada keamanan, tidak selalu menjadi opsi pada sistem produksi. Dengan repro sulit untuk bekerja kembali dari titik kegagalan untuk menentukan penyebabnya. |
| Pengumpulan Data | Tidak ada pengkodean di muka, gangguan rendah, berdasarkan pemicu. | Rekam jepret berturut-turut atau cadangan langsung memberikan tampilan "dari waktu ke waktu" sederhana. Overhead pada dasarnya nol jika tidak digunakan. |
| Telemetri dan log-log | Ringan, sering terikat dengan skenario bisnis / tindakan pengguna, ramah pembelajaran mesin. | Masalah muncul di jalur kode yang tidak terduga (tanpa telemetri). Kedalaman data yang kurang, dikompilasi secara statis ke dalam kode. |
| Penelusuran Kesalahan Perjalanan Waktu (TTD) | Hebat dalam menangani bug kompleks, tanpa perlu pengkodean di awal, pemecahan masalah berulang secara offline, mudah untuk analisis, menangkap semuanya. | Overhead besar pada waktu rekaman. Dapat mengumpulkan lebih banyak data yang diperlukan. File data bisa menjadi besar. |
Video pelatihan
Untuk mempelajari lebih lanjut tentang TTD, lihat video ini.
Defrag Tools 185 - Ivette dan JamesP membahas dasar-dasar TTD dan demo beberapa fitur di WinDbg
Defrag Tools 186 - Jordi dan JCAB mendemonstrasikan lebih banyak fitur hebat TTD di WinDbg
CppCon (YouTube) - Jordi, Ken, dan JamesM menghadirkan TTD di WinDbg di CppCon 2017
Dasar-dasar file jejak
Lacak ukuran file
File pelacakan bisa menjadi besar. Anda perlu memastikan bahwa ada cukup ruang kosong yang tersedia. Jika Anda merekam program bahkan selama beberapa menit, file jejak dapat dengan cepat tumbuh menjadi beberapa gigabyte. TTD tidak mengatur ukuran maksimum untuk file pelacakan untuk memungkinkan skenario jangka panjang yang kompleks. Mengulangi masalah dengan cepat menjaga ukuran file pelacakan tetap sesedikit mungkin.
Melacak dan mengindeks file
File pelacakan (.run) menyimpan eksekusi kode selama perekaman.
Saat Anda menghentikan perekaman, sistem membuat file indeks (.idx) untuk mengoptimalkan akses ke informasi pelacakan. WinDbg juga secara otomatis membuat file indeks saat membuka file pelacakan.
File indeks bisa besar, biasanya dua kali lebih besar dari file pelacakan.
Anda dapat membuat ulang file indeks dari file pelacakan dengan menggunakan !tt.index perintah .
0:000> !tt.index
Successfully created the index in 10ms.
Kesalahan perekaman dan output rekaman lainnya masuk ke file log WinDbg.
Anda menyimpan semua file output di lokasi yang Anda konfigurasi. Lokasi default berada di folder dokumen pengguna. Misalnya, untuk User1, file TTD disimpan di sini:
C:\Users\User1\Documents
Untuk informasi selengkapnya tentang menggunakan file pelacakan, lihat Debugging Perjalanan Waktu - Menggunakan file pelacakan.
Hal-hal yang harus diwaspadai
Ketidaksesuaian anti-virus
Anda mungkin mengalami ketidaksesuaian karena bagaimana TTD terhubung ke dalam proses untuk merekam proses-proses tersebut. Biasanya, masalah muncul dengan anti-virus atau perangkat lunak sistem lain yang mencoba melacak dan mengikuti panggilan memori sistem. Jika Anda mengalami masalah dengan perekaman, seperti pesan izin yang tidak memadai, coba nonaktifkan anti-virus untuk sementara waktu.
Utilitas lain yang mencoba memblokir akses memori juga bisa bermasalah. Misalnya, 'Toolkit Pengalaman Mitigasi yang Ditingkatkan' Microsoft.
Contoh lain dari lingkungan yang bertentangan dengan TTD adalah kerangka kerja aplikasi Electron. Dalam hal ini, penelusuran mungkin merekam, tetapi kebuntuan atau crash proses yang direkam juga dimungkinkan.
Mode pengguna saja
TTD saat ini hanya mendukung operasi mode pengguna, sehingga Anda tidak dapat melacak proses mode kernel.
Pemutaran baca-saja
Anda dapat melakukan perjalanan kembali ke waktu, tetapi Anda tidak dapat mengubah riwayat. Anda dapat menggunakan perintah memori baca, tetapi Anda tidak dapat menggunakan perintah yang mengubah atau menulis ke memori.
Proses yang dilindungi sistem
Beberapa proses yang dilindungi sistem Windows, seperti proses Protected Process Light (PPL), dilindungi. TTD tidak dapat menyuntikkan dirinya ke dalam proses yang dilindungi untuk memungkinkan perekaman eksekusi kode.
Dampak performa perekaman
Merekam aplikasi atau proses berdampak pada performa PC. Overhead kinerja aktual bervariasi berdasarkan jumlah dan jenis kode yang dijalankan selama perekaman. Anda dapat mengharapkan penurunan performa sekitar 10x-20x dalam skenario perekaman umum. Terkadang tidak ada perlambatan yang terlihat di UI. Tetapi untuk operasi yang membutuhkan banyak sumber daya, seperti dialog Buka File, Anda dapat melihat dampak dari perekaman.
Melacak kesalahan dalam file
Kesalahan pada file pelacakan bisa terjadi. Untuk informasi selengkapnya, lihat Debugging Perjalanan Waktu - Pemecahan Masalah.
Fitur lanjutan Time Travel Debugging
Garis waktu
Garis waktu adalah representasi visual peristiwa yang terjadi selama eksekusi. Peristiwa ini dapat menjadi lokasi: titik henti, baca/tulis memori, panggilan dan pengembalian fungsi, dan pengecualian. Untuk informasi selengkapnya tentang garis waktu, lihat WinDbg - Timelines.
Dukungan model data debugger
-
Dukungan model data bawaan - TTD menyertakan dukungan model data. Menggunakan kueri LINQ untuk menganalisis kegagalan aplikasi dapat menjadi alat yang ampuh. Anda dapat menggunakan jendela model data di WinDbg untuk bekerja dengan versi dapat diperluas dan dijelajahi dari
dxdandx -g, memungkinkan Anda membuat tabel menggunakan NatVis, JavaScript, dan kueri LINQ.
Untuk informasi umum tentang model data debugger, lihat WinDbg - Model data. Untuk informasi tentang cara bekerja dengan model objek debugger TTD, lihat Penelusuran Kesalahan Perjalanan Waktu - Pengantar objek Penelusuran Kesalahan Perjalanan Waktu.
Dukungan pembuatan skrip
- Otomatisasi Pembuatan Skrip - Dukungan pembuatan skrip untuk JavaScript dan NatVis memungkinkan otomatisasi penyelidikan masalah. Untuk informasi selengkapnya, lihat Penelusuran Kesalahan Perjalanan Waktu - Otomatisasi JavaScript.
Untuk informasi umum tentang bekerja dengan JavaScript dan NatVis, lihat WinDbg - Scripting.
utilitas baris perintah TTD.exe
Utilitas baris perintah TTD.exe untuk merekam jejak tersedia. Untuk informasi selengkapnya, lihat Debugging Perjalanan Waktu - utilitas baris perintah bernama TTD.exe.
Dukungan TTD kode terkelola
Anda dapat menggunakan ekstensi penelusuran kesalahan SOS (sos.dll) yang berjalan dalam mode 64-bit untuk men-debug kode terkelola menggunakan TTD di WinDbg. Untuk informasi selengkapnya, lihat Men-debug Kode Terkelola Menggunakan Windows Debugger.
Mulai menggunakan TTD
Mulai di sini
Jika Anda baru menggunakan TTD, ikuti jalur pembelajaran ini:
- Rekam jejak - Ambil jejak eksekusi pertama Anda
- Memutar ulang jejak - Menavigasi dan menganalisis rekaman Anda
- Contoh Panduan Langkah Aplikasi - Contoh debugging langkah demi langkah
Butuh bantuan?
- Bekerja dengan file pelacakan - Mengelola dan mengoptimalkan file pelacakan
- Pemecahan masalah - Mengatasi masalah umum
Fitur tingkat lanjut
- Objek debugger TTD - Pelacakan kueri menggunakan LINQ
- JavaScript Automation - Mengotomatiskan penyelidikan masalah