Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DTrace, D programlama dilini destekler. Bu konuda, DTrace betiklerini yazmaya ve kullanmaya nasıl başlandığı açıklanmaktadır.
Windows'da DTrace hakkında genel bilgi için bkz. DTrace.
DTrace hakkında ayrıntılı bilgi için University Of Cambridge'de OpenDTrace Specification sürüm 1.0'a bakın.
Uyarı
DTrace, sürüm 18980 ve Windows Server derlemesi 18975'in ardından Windows'un Insider derlemelerinde desteklenir.
Ek örnek betikler
Windows senaryoları için geçerli olan ek D betikleri DTrace kaynak kodunun samples dizininde bulunur.
https://github.com/microsoft/DTrace-on-Windows/tree/windows/samples/windows
Bir dizi opentrace betik seti, https://github.com/opendtrace/toolkit adresinde bulunur.
Merhaba Dünya
DTrace betikleri, komutları ve D programlama betiği öğelerini içeren basit metin dosyalarıdır.
dtrace:::BEGIN
{
trace("Hello World from DTrace!");
exit(0);
}
Dosyayı helloworld.d olarak kaydedin.
Yönetici olarak bir komut istemi penceresi açın ve -s seçeneğini kullanarak betiği çalıştırın.
dtrace -s helloworld.d
dtrace: script '.\helloworld.d' matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN Hello World from DTrace!
NtCreateUserProcess dönüş süresi
Birden çok işlev/olay arasında geçen süreyi izlemek için DTrace betikleri yazabilirsiniz. Aşağıda, oluşturma işlemi için girdi/dönüş arasındaki NtCreateUserProcess işlevini izleyen basit bir örnek verilmiştir.
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);
}
Dosyayı ntcreatetime.d olarak kaydedin ve test betiğini çalıştırmak için -s seçeneğini kullanın.
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
Dosya Silme İzleyicisi
Bu örnek betik, girdide NtOpenFile'ı araçlandırmak için sistem çağrısı sağlayıcısını kullanır ve sistem genelinde silmeleri izlemek için belirtilen bayrağı (bağımsız değişken #5) denetler.
Aşağıdaki betiği filedeletetracker.d dosyasına kopyalayın.
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);
}
}
}
Test betiğini çalıştırmak için -s seçeneğini kullanın.
Silmek istediğiniz dosyayı oluşturun veya bulun. Dosyayı Geri Dönüşüm Kutusu'na taşıyın ve ardından Geri Dönüşüm Kutusu'nu boşaltın. Dosya silindiğinde, bir olay tetiklenir ve dosya silme hakkında bilgiler görüntülenir.
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
Bu program, dosya silmeleri izlemeye devam etmek için tasarlanmıştır. Çıkmak için CTRL+C tuşlarına basın.
Daha büyük kod örnekleri için bir sonraki DTrace Windows Kod Örnekleri konusuna bakın.