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.
DTrace mendukung bahasa pemrograman D. Topik ini menjelaskan cara mulai menulis dan menggunakan skrip DTrace.
Untuk informasi umum tentang DTrace di Windows, lihat DTrace.
Untuk informasi terperinci tentang DTrace, lihat Spesifikasi OpenDTrace versi 1.0 di University Of Cambridge.
Nota
DTrace didukung di build Insider Windows setelah versi 18980 dan Windows Server build 18975.
Sampel skrip tambahan
Skrip D tambahan yang berlaku untuk skenario Windows tersedia di direktori sampel kode sumber DTrace.
https://github.com/microsoft/DTrace-on-Windows/tree/windows/samples/windows
Satu set skrip toolkit opentrace tersedia di https://github.com/opendtrace/toolkit.
Halo Dunia
Skrip DTrace adalah file teks sederhana yang berisi perintah dan elemen skrip pemrograman D.
dtrace:::BEGIN
{
trace("Hello World from DTrace!");
exit(0);
}
Simpan file sebagai helloworld.d.
Buka jendela prompt perintah sebagai Administrator dan jalankan skrip menggunakan opsi -s.
dtrace -s helloworld.d
dtrace: script '.\helloworld.d' matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN Hello World from DTrace!
Waktu pengembalian NtCreateUserProcess
Anda dapat menulis skrip DTrace untuk melacak waktu yang diambil di beberapa fungsi/peristiwa. Di bawah ini adalah contoh sederhana yang melacak fungsi NtCreateUserProcess antara entri/pengembalian untuk proses pembuatan.
syscall::NtCreateUserProcess:entry
{
self->ts = timestamp;
}
syscall::NtCreateUserProcess:return
{
printf(" [Caller %s]: Time taken to return from create process is %d MicroSecond \n", execname, (timestamp - self->ts)/ 1000);
}
Simpan file sebagai ntcreatetime.d dan gunakan opsi -s untuk menjalankan skrip pengujian.
C:\Windows\system32>dtrace -s ntcreatetime.d
dtrace: script 'ntcreatetime.d' matched 2 probes
CPU ID FUNCTION:NAME
0 183 NtCreateUserProcess:return [Caller svchost.exe]: Time taken to return from create process is 51191 MicroSecond
0 183 NtCreateUserProcess:return [Caller SearchIndexer.]: Time taken to return from create process is 84418 MicroSecond
0 183 NtCreateUserProcess:return [Caller SearchIndexer.]: Time taken to return from create process is 137961 MicroSecond
Pelacak Penghapusan File
Skrip sampel ini menggunakan penyedia syscall untuk menginstrumen NtOpenFile saat masuk dan memeriksa bendera yang diteruskan (argumen #5) untuk melacak penghapusan dalam sistem.
Salin skrip di bawah ini ke filedeletetracker.d.
ERROR{exit(0);}
struct ustr{uint16_t buffer[256];};
syscall::NtOpenFile:entry
{
this->deleted = arg5 & 0x00001000; /* & with FILE_DELETE_ON_CLOSE */
if (this->deleted) {
this->attr = (nt`_OBJECT_ATTRIBUTES*)
copyin(arg2, sizeof(nt`_OBJECT_ATTRIBUTES));
if (this->attr->ObjectName) {
this->objectName = (nt`_UNICODE_STRING*)
copyin((uintptr_t)this->attr->ObjectName,
sizeof(nt`_UNICODE_STRING));
this->fname = (uint16_t*)
copyin((uintptr_t)this->objectName->Buffer,
this->objectName->Length);
printf("Process %s PID %d deleted file %*ws \n", execname,pid,
this->objectName->Length / 2,
((struct ustr*)this->fname)->buffer);
}
}
}
Gunakan opsi -s untuk menjalankan skrip pengujian.
Buat atau temukan file yang ingin Anda hapus. Pindahkan file ke Keranjang Sampah lalu kosongkan Keranjang Sampah. Ketika file dihapus, sebuah peristiwa akan terjadi dan informasi mengenai penghapusan file akan ditampilkan.
C:\Windows\system32>dtrace -s filedeletetracker.d
dtrace: script 'filedeletetracker.d' matched 8 probes
CPU ID FUNCTION:NAME
0 512 NtOpenFile:entry Process explorer.exe PID 4684 deleted file \??\C:\$Recycle.Bin\S-1-12-1-3310478672-1302480547-4207937687-2985363607\$ROSR3FA.txt
Program ini dirancang untuk terus memantau penghapusan berkas. Tekan CTRL+C untuk keluar.
Untuk sampel kode tambahan yang lebih besar, lihat topik berikutnya, DTrace Windows Code Samples.