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.
Bagian ini menjelaskan cara memutar ulang jejak perjalanan waktu, menavigasi maju, dan mundur dalam waktu.
Perintah navigasi perjalanan waktu
Gunakan tanda minus di akhir dengan perintah berikut untuk melakukan perjalanan ke masa lampau.
| Perintah |
|---|
| p- (Langkah Mundur) |
| t- (Telusuri Kembali) |
| g- (Kembali) |
Untuk informasi selengkapnya, lihat Debugging Perjalanan Waktu - Perintah Navigasi.
Navigasi perjalanan waktu tombol pita
Atau, gunakan tombol pita untuk menavigasi dalam jejak.
Contoh Pemutaran Ulang Pelacakan TTD
Gunakan perintah g- untuk mengeksekusi mundur hingga suatu peristiwa terjadi atau sampai awal rekaman TTD tercapai. Peristiwa yang dapat menghentikan eksekusi mundur adalah sama yang akan menghentikan eksekusi ke depan. Dalam contoh ini, sudah mencapai awal jejak.
0:000> g-
TTD: Start of trace reached.
(3f78.4274): Break instruction exception - code 80000003 (first/second chance not available)
Time Travel Position: 29:0
ntdll!ZwTestAlert+0x14:
00007ffc`61f789d4 c3 ret
Gunakan perintah p (Langkah) untuk melangkah maju dalam jejak TTD.
0:000> p
Time Travel Position: F:1
ntdll!LdrpInitializeProcess+0x1bc5:
7774f828 740b je ntdll!LdrpInitializeProcess+0x1bd2 (7774f835) [br=1]
0:000> p
Time Travel Position: F:2
ntdll!LdrpInitializeProcess+0x1bd2:
7774f835 83bdd0feffff00 cmp dword ptr [ebp-130h],0 ss:002b:010ff454=00000000
0:000> p
Time Travel Position: F:3
ntdll!LdrpInitializeProcess+0x1bd9:
7774f83c 0f8450e8ffff je ntdll!LdrpInitializeProcess+0x42f (7774e092) [br=1]
Anda juga dapat menggunakan perintah t (Trace) untuk menavigasi dalam pelacakan.
0:000> t
Time Travel Position: F:4
ntdll!LdrpInitializeProcess+0x42f:
7774e092 33c0 xor eax,eax
0:000> t
Time Travel Position: F:5
ntdll!LdrpInitializeProcess+0x431:
7774e094 e9f5170000 jmp ntdll!LdrpInitializeProcess+0x1c2b (7774f88e)
Gunakan perintah p- untuk melangkah mundur dalam jejak TTD.
0:000> p-
Time Travel Position: F:4
ntdll!LdrpInitializeProcess+0x42f:
7774e092 33c0 xor eax,eax
0:000> p-
Time Travel Position: F:3
ntdll!LdrpInitializeProcess+0x1bd9:
7774f83c 0f8450e8ffff je ntdll!LdrpInitializeProcess+0x42f (7774e092) [br=1]
Anda juga dapat menggunakan perintah t- untuk menavigasi mundur dalam waktu.
!tt perintah navigasi
Gunakan perintah !tt untuk menavigasi maju atau mundur dalam waktu, dengan melompat ke posisi tertentu dalam pelacakan.
!tt [posisi]
Berikan posisi waktu dalam salah satu format berikut untuk melakukan perjalanan ke titik waktu tersebut.
Jika [posisi] adalah angka desimal antara 0 dan 100, maka ia bergerak ke persentase yang kira-kira sesuai di dalam lintasan. Misalnya
!tt 50berpergian hingga setengah jalan melalui lintasan.Jika {position} adalah #:#, di mana # adalah angka heksadesimal, ia akan menuju ke posisi tersebut. Misalnya,
!tt 1A0:12Fbergerak ke posisi 1A0:12F dalam pelacakan.
Untuk informasi lebih lanjut, lihat Debugging Perjalanan Waktu - !tt (time travel).
!posisi
Gunakan !positions untuk menampilkan semua utas aktif, termasuk posisinya dalam pelacakan. Untuk informasi selengkapnya, lihat Time Travel Debugging - !positions (time travel).
0:000> !positions
>*Thread ID=0x1C74 - Position: F:2
Thread ID=0x1750 - Position: A5:0
Thread ID=0x3FFC - Position: 200:0
Thread ID=0x36B8 - Position: 403:0
Thread ID=0x3BC4 - Position: 5F2:0
Thread ID=0x392C - Position: B45:0
Thread ID=0x32B4 - Position: C87:0
Thread ID=0x337C - Position: DF1:0
* indicates an actively running thread
Contoh ini menunjukkan bahwa ada delapan utas pada posisi saat ini. Thread saat ini adalah 3604, ditandai dengan '>'.
Petunjuk / Saran
Cara lain untuk menampilkan daftar utas saat ini dan posisinya adalah dengan menggunakan perintah model data dx:
dx -g @$curprocess.Threads.Select(t => new { IsCurrent = t.Id == @$curthread.Id, ThreadId = t.Id, Position = t.TTD.Position })
Gunakan perintah mode pengguna ~ (Status Utas) menunjukkan delapan utas yang sama, dan menandai utas saat ini dengan '.':
0:000> ~
. 0 Id: 954.1c74 Suspend: 4096 Teb: 00fdb000 Unfrozen
1 Id: 954.1750 Suspend: 4096 Teb: 00fea000 Unfrozen
2 Id: 954.3ffc Suspend: 4096 Teb: 00fde000 Unfrozen
3 Id: 954.36b8 Suspend: 4096 Teb: 00fe1000 Unfrozen
4 Id: 954.3bc4 Suspend: 4096 Teb: 00fe4000 Unfrozen
5 Id: 954.392c Suspend: 4096 Teb: 00fed000 Unfrozen
6 Id: 954.32b4 Suspend: 4096 Teb: 00ff0000 Unfrozen
7 Id: 954.337c Suspend: 4096 Teb: 00ff3000 Unfrozen
Dalam output perintah !positions, klik tautan di samping utas ketiga (3FFC) untuk melompat ke posisi tersebut dalam jejak waktu, 200:0.
0:002> !tt 200:0
Setting position: 200:0
(954.3ffc): Break instruction exception - code 80000003 (first/second chance not available)
Time Travel Position: 200:0
ntdll!NtWaitForWorkViaWorkerFactory+0xc:
7775396c c21400 ret 14h
Gunakan perintah ~ (Status Utas) untuk mengonfirmasi bahwa kita sekarang diposisikan di utas ketiga, 3ffc.
0:002> ~
0 Id: 954.1c74 Suspend: 4096 Teb: 00fdb000 Unfrozen
1 Id: 954.1750 Suspend: 4096 Teb: 00fea000 Unfrozen
. 2 Id: 954.3ffc Suspend: 4096 Teb: 00fde000 Unfrozen
3 Id: 954.36b8 Suspend: 4096 Teb: 00fe1000 Unfrozen
4 Id: 954.3bc4 Suspend: 4096 Teb: 00fe4000 Unfrozen
5 Id: 954.392c Suspend: 4096 Teb: 00fed000 Unfrozen
6 Id: 954.32b4 Suspend: 4096 Teb: 00ff0000 Unfrozen
7 Id: 954.337c Suspend: 4096 Teb: 00ff3000 Unfrozen
Nota
~s#, di mana # adalah nomor utas, juga beralih ke utas yang ditentukan, tetapi tidak mengubah posisi saat ini dalam jejak. Ketika !tt digunakan untuk melakukan perjalanan waktu ke posisi thread lain, nilai apa pun yang Anda (dan debugger) baca dari memori akan diakses pada posisi tersebut. Saat beralih utas dengan ~s#, debugger tidak mengubah posisi saat ini secara internal, yang digunakan untuk semua kueri memori. Ini bekerja dengan cara ini terutama sehingga ~s# tidak perlu mengatur ulang perulangan dalam debugger.
Perintah ekstensi debugging perjalanan waktu
Untuk informasi tentang perintah-perintah !tt, !positions, dan !index, silakan lihat Penelusuran Kesalahan Perjalanan Waktu - Perintah Ekstensi.
Lihat Juga
Debugging Perjalanan Waktu - Gambaran Umum
Debugging dengan Perjalanan Waktu - Merekam pelacakan