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 adalah alat yang memungkinkan Anda mengambil jejak proses saat dijalankan dan kemudian memutarnya kembali nanti baik ke depan maupun ke belakang. Debugging Perjalanan Waktu (TTD) dapat memudahkan Anda men-debug masalah dengan memutar balik sesi debugging, alih-alih mereproduksi masalah sampai 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 dapat memiliki keuntungan dibandingkan file crash dump, yang sering kehilangan informasi tentang status dan jalur eksekusi yang menyebabkan kegagalan yang terjadi.
Jika Anda tidak dapat mengetahui sendiri masalahnya, Anda dapat berbagi jejak dengan rekan kerja dan mereka dapat melihat dengan tepat apa yang Anda lihat. Ini dapat memungkinkan kolaborasi yang lebih mudah daripada penelusuran kesalahan langsung, karena instruksi yang direkam sama, sedangkan lokasi alamat dan eksekusi kode akan 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 berfungsi menambah overhead sesedikit mungkin karena menangkap eksekusi kode dalam file pelacakan.
TTD menyertakan sekumpulan objek model data debugger untuk memungkinkan Anda mengkueri jejak menggunakan 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 yang ditingkatkan. Instal WinDbg menggunakan akun yang memiliki hak istimewa administrator dan gunakan akun tersebut saat merekam di debugger. Untuk menjalankan debugger 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 Debug Penelusuran 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 selengkapnya 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 dan pengguna TTD perlu memastikan bahwa ada ruang kosong yang memadai yang tersedia. Jika Anda merekam program bahkan selama beberapa menit, file jejak dapat dengan cepat tumbuh menjadi beberapa gigabyte. TTD tidak mengatur ukuran maksimum file pelacakan untuk memungkinkan skenario jangka panjang yang kompleks. Mengulangi masalah dengan cepat akan menjaga ukuran file pelacakan sekecil mungkin.
Melacak dan mengindeks file
File pelacakan (.run
) menyimpan eksekusi kode selama perekaman.
Setelah perekaman dihentikan, file indeks (.idx
) dibuat untuk mengoptimalkan akses ke informasi pelacakan. File indeks juga dibuat secara otomatis ketika WinDbg membuka file pelacakan.
File indeks juga bisa besar, biasanya dua kali lebih besar dari file pelacakan.
Anda dapat membuat ulang file indeks dari file pelacakan menggunakan !tt.index
perintah .
0:000> !tt.index
Successfully created the index in 10ms.
Kesalahan perekaman dan output rekaman lainnya ditulis ke file log WinDbg.
Semua file output disimpan di lokasi yang dikonfigurasi oleh pengguna. Lokasi default berada di folder dokumen pengguna. Misalnya, untuk User1, file TTD akan disimpan di sini:
C:\Users\User1\Documents
Untuk informasi selengkapnya tentang mengerjakan file pelacakan, lihat Penelusuran Kesalahan Perjalanan Waktu - Bekerja dengan file pelacakan.
Hal-hal yang harus diwaspadai
Ketidaksesuaian anti-virus
Anda mungkin mengalami ketidaksesuaian karena cara TTD berinteraksi dengan proses untuk merekamnya. Biasanya masalah muncul dengan perangkat lunak anti-virus atau sistem lainnya yang mencoba melacak dan memonitor panggilan memori sistem. Jika Anda mengalami masalah dengan perekaman, seperti pesan izin yang tidak memadai, coba nonaktifkan perangkat lunak anti-virus sementara.
Utilitas lain yang mencoba memblokir akses memori, juga dapat bermasalah, misalnya, Microsoft Enhanced Mitigation Experience Toolkit.
Contoh lain dari lingkungan yang bertentangan dengan TTD, adalah kerangka kerja aplikasi elektron. Dalam hal ini jejak dapat tercatat, tetapi kebuntuan atau kerusakan proses yang sedang direkam juga dapat terjadi.
Mode pengguna saja
TTD saat ini hanya mendukung operasi mode pengguna, sehingga melacak proses mode kernel tidak dimungkinkan.
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, sehingga 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 performa 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 akan ada perlambatan yang terlihat di UI. Untuk operasi yang membutuhkan lebih banyak sumber daya, seperti dialog Buka File, Anda dapat melihat dampak perekaman.
Melacak kesalahan dalam file
Ada beberapa kasus di mana kesalahan file pelacakan dapat terjadi. Untuk informasi selengkapnya, lihat Debugging Perjalanan Waktu - Pemecahan Masalah.
Fitur Lanjutan Penelusuran Kesalahan Perjalanan Waktu
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 'dx' dan 'dx -g' yang dapat diperluas dan dapat ditelusuri, memungkinkan Anda membuat tabel menggunakan kueri NatVis, JavaScript, dan 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 - TTD.exe utilitas baris perintah.
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
Tinjau topik ini untuk merekam dan memutar ulang file jejak serta untuk informasi tentang bekerja dengan file pelacakan dan pemecahan masalah.
- Debugging Perjalanan Waktu - Rekam Jejak
- Debugging Melalui Waktu - Memutar ulang jejak
- Debugging dengan Melacak Waktu - Bekerja dengan berkas jejak
- Debugging Perjalanan Waktu - Pemecahan Masalah
- Penelusuran Kesalahan Perjalanan Waktu - Contoh Panduan Aplikasi
Topik-topik ini menjelaskan fungsionalitas tambahan yang lanjutan dalam debugging perjalanan waktu.