Guia de rastreamento dinâmico Solaris

Arquivos de intérprete

Semelhante ao shell e aos utilitários, tais como awk(1) e perl(1), o dtrace(1M) pode ser usado para criar arquivos de intérprete executáveis. Um arquivo de intérprete começa com uma linha do formato:

#! nome do caminho arg

onde nome do caminho é o caminho do intérprete e arg é um único argumento opcional. Quando um arquivo de intérprete é executado, o sistema chama o intérprete especificado. Se arg foi especificado no arquivo do intérprete, ele é passado como um argumento para o intérprete. O caminho para o próprio arquivo do intérprete e quaisquer argumentos adicionais especificados quando ele foi executado são, em seguida, adicionados à lista de argumentos do intérprete. Portanto, você sempre precisará criar arquivos de intérprete do DTrace com pelo menos estes argumentos:

#!/usr/sbin/dtrace -s

Quando o seu arquivo de intérprete é executado, o argumento para a opção - s será, portanto, o nome do caminho do próprio arquivo do intérprete. dtrace irá, em seguida, ler, compilar e executar este arquivo, como se você tivesse digitado o seguinte comando no shell:


# dtrace -s interpreter-file

O exemplo seguinte mostra como criar e executar um arquivo de intérprete do dtrace . Digite o seguinte código-fonte de D e salve-o em um arquivo chamado interp.d:

#!/usr/sbin/dtrace -s
BEGIN
{
	trace("hello");
	exit(0);
}

Marque o arquivo interp.d como executável e execute-o da seguinte forma:


# chmod a+rx interp.d
# ./interp.d
dtrace: script './interp.d' matched 1 probe
CPU     ID                    FUNCTION:NAME
  1      1                           :BEGIN   hello
#

Lembre-se que a diretiva #! deve compreender os dois primeiros caracteres do seu arquivo sem espaço em branco precedente ou intermediário. O compilador de D sabe como ignorar automaticamente esta linha quando processa o arquivo de intérprete.

O dtrace usa getopt(3C) para processar opções da linha de comando, para que você possa combinar várias opções em seu único argumento de intérprete. Por exemplo, para adicionar a opção -q ao exemplo anterior, você poderia alterar a diretiva do intérprete para:

#!/usr/sbin/dtrace -qs

Se você especificar letras de várias opções, a opção -s deve sempre terminar a lista de opções booleanas, para que o próximo argumento (o nome do arquivo do intérprete) seja processado como o argumento correspondente à opção -s.

Se você precisar especificar mais de uma opção que requeira um argumento em seu arquivo de intérprete, suas opções e argumentos não caberão em um único argumento de intérprete. Em vez disso, use a sintaxe de diretiva da opção #pragma de D para definir suas opções. Todas as opções da linha de comando do dtrace possuem #pragma equivalentes que você pode usar, conforme mostrado no Capítulo 16Opções e ajustáveis.