Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O DTrace suporta a linguagem de programação D. Este tópico descreve como começar a escrever e usar scripts do DTrace.
Para obter informações gerais sobre o DTrace no Windows, consulte DTrace.
Para obter informações detalhadas sobre o DTrace, consulte a Especificação OpenDTrace versão 1.0 na Universidade de Cambridge.
Observação
O DTrace é suportado nas compilações do Insider do Windows após a versão 18980 e a compilação 18975 do Windows Server.
Scripts de exemplo adicionais
Scripts D adicionais aplicáveis a cenários do Windows estão disponíveis no diretório de exemplos do código-fonte do DTrace.
https://github.com/microsoft/DTrace-on-Windows/tree/windows/samples/windows
Um conjunto de scripts do kit de ferramentas opentrace está disponível em https://github.com/opendtrace/toolkit.
Hello World
Os scripts do DTrace são arquivos de texto simples que contêm comandos e elementos de script de programação D.
dtrace:::BEGIN
{
trace("Hello World from DTrace!");
exit(0);
}
Salve o arquivo como helloworld.d.
Abra uma janela de prompt de comando como administrador e execute o script usando a opção -s.
dtrace -s helloworld.d
dtrace: script '.\helloworld.d' matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN Hello World from DTrace!
Tempo de retorno de NtCreateUserProcess
Você pode criar scripts do DTrace para controlar o tempo gasto em várias funções/eventos. Abaixo está um exemplo simples que rastreia a função NtCreateUserProcess entre entrada/retorno para o processo de criação.
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);
}
Salve o arquivo como ntcreatetime.d e use a opção -s para executar o script de teste.
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
Rastreador de Eliminação de Ficheiros
Este script de exemplo usa o provedor syscall para instrumentar NtOpenFile na entrada e verifica se o sinalizador passou (argumento #5) para rastrear exclusões em todo o sistema.
Copie o script abaixo em 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);
}
}
}
Use a opção -s para executar o script de teste.
Crie ou localize um ficheiro que pretende eliminar. Mova o ficheiro para o Lixo e, em seguida, esvazie o Lixo. Quando o ficheiro é eliminado, o evento será acionado e as informações sobre a eliminação do ficheiro serão exibidas.
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
Este programa é projetado para continuar a monitorar exclusões de arquivos. Pressione CTRL+C para sair.
Para obter exemplos de código maiores adicionais, consulte o próximo tópico, Exemplos de código do Windows DTrace.