Objek Panggilan TTD
Deskripsi
Objek Panggilan TTD digunakan untuk memberikan informasi tentang panggilan fungsi yang terjadi selama pelacakan.
Parameter
Properti | Deskripsi |
---|---|
Fungsi! SymbolName | Satu atau beberapa terkandung dalam tanda kutip ganda, dipisahkan oleh koma. Misalnya dx @$cursession. TTD. Panggilan("module!symbol1", "module!symbol2", ...) |
Properti
Properti | Deskripsi |
---|---|
EventType | Jenis kejadian. Ini adalah "Panggilan" untuk semua objek Panggilan TTD. |
ThreadId | ID utas OS utas yang membuat permintaan. |
UniqueThreadId | ID unik untuk utas di seluruh jejak. ID utas reguler dapat digunakan kembali selama masa pakai proses tetapi UniqueThreadIds tidak dapat digunakan kembali. |
Fungsi | Nama simbolis fungsi. |
FunctionAddress | Alamat fungsi dalam memori. |
ReturnValue | Nilai yang dikembalikan dari fungsi. Jika fungsi memiliki jenis kekosongan, properti ini tidak akan ada. |
Anak-anak
Objek | Deskripsi |
---|---|
Parameter[] | Array yang berisi parameter yang diteruskan ke fungsi. Jumlah elemen bervariasi berdasarkan jenis tanda tangan fungsi. |
Mulai Waktu | Objek posisi yang menjelaskan posisi di awal panggilan. |
TimeEnd | Objek posisi yang menjelaskan posisi di akhir panggilan. |
Keterangan
Penelusuran kesalahan perjalanan waktu menggunakan informasi simbol yang disediakan dalam PDB untuk menentukan jumlah parameter untuk fungsi dan jenisnya, jenis nilai yang dikembalikan, dan konvensi panggilan. Jika informasi simbol tidak tersedia atau simbol telah dibatasi untuk informasi simbol publik, masih mungkin untuk melakukan kueri. Mesin kueri perjalanan waktu akan membuat beberapa asumsi dalam skenario ini:
- Ada empat parameter bilangan bulat tidak bertanda 64-bit ke fungsi
- Nilai yang dikembalikan adalah bilangan bulat yang tidak ditandatangani 64-bit
- Nama fungsi diatur ke string tetap: "UnknownOrMissingSymbols"
Asumsi ini memungkinkan kueri dibuat tanpa adanya informasi simbol yang memadai. Namun, untuk hasil terbaik, gunakan simbol PDB penuh jika memungkinkan.
Perhatikan bahwa fungsi Panggilan melakukan komputasi, dan tergantung pada ukuran jejak, dibutuhkan waktu beberapa saat untuk dijalankan. Penggunaan CPU akan lonjakan selama komputasi dan menonton penggunaan CPU di task manager, memberikan indikasi bahwa komputasi sedang berlangsung. Hasil kueri di-cache dalam memori sehingga kueri berikutnya terhadap panggilan yang dikueri sebelumnya secara signifikan lebih cepat.
Contoh Penggunaan
Contoh ini menunjukkan objek panggilan untuk ucrtbase!initterm.
0:000> dx -r2 @$cursession.TTD.Calls("ucrtbase!initterm")
@$cursession.TTD.Calls("ucrtbase!initterm")
[0x0]
EventType : Call
ThreadId : 0x2074
UniqueThreadId : 0x2
TimeStart : 1E:5D0
TimeEnd : 2D:E
Function : ucrtbase!_initterm
FunctionAddress : 0x7ffb345825d0
ReturnAddress : 0x7ff6a521677e
Parameters
Lihat juga
Penelusuran Kesalahan Perjalanan Waktu - Pengantar objek Penelusuran Kesalahan Perjalanan Waktu