comando do prof

Propósito

Exibe dados do perfil de arquivo de objetos.

Sintaxe

prof [ -t | -c | -a| -n ] [  -o | -x ] [  -g ] [  -z ] [  -h ] [  -s ] [  -S ] [  -v ] [  -L PathName ] [ Program ] [  -m MonitorData ... ]

Descrição

O comando prof interpreta dados do perfil que são coletados pela sub-rotina monitor para o arquivo de objeto Programa (a.out por padrão). Ele lê a tabela de símbolos no arquivo de objeto Programa e a correlaciona com o arquivo de perfil (mon.out , por padrão) O comando prof exibe, para cada símbolo de texto externo, a porcentagem de tempo de execução gasto entre o endereço desse símbolo e o endereço do próximo, o número de vezes que a função foi chamada e o número médio de milissegundos por chamada...

Nota: Os símbolos de arquivos de objeto C++ têm seus nomes que são desmarcados antes de serem usados.

Para contar o número de chamadas para uma função, você deve ter compilado o arquivo usando o comando cc com o sinalizador -p . O sinalizador -p faz com que o compilador insira uma chamada para a sub-rotina mcount no código do objeto gerado para cada função recompilada do programa. Enquanto o programa é executado, cada vez que um pai chama uma função filha, o filho chama a sub-rotina mcount para incrementar um contador distinto para esse par pai-filho.. Programas que não são recompilados com o sinalizador -p não têm a sub-rotina mcount que é inserida e, portanto, não mantêm nenhum registro de qual função os chamou.

A sinalização -p também organiza o arquivo de objeto para incluir uma função de inicialização de criação de perfil especial que chama a sub-rotina monitor quando o programa começa e termina. A chamada para a sub-rotina monitor quando o programa termina e grava o arquivo mon.out . Portanto, apenas programas que explicitamente saem ou retornam do programa principal causam a produção do arquivo mon.out .

Nota: Para alterar o nome do arquivo de saída gerado, utilize a variável de ambiente PROF e configure-a da seguinte forma:
PROF=filename:<filename>
por exemplo, se você configurar PROF=myprof, o arquivo gerado será nomeado como myprof.out.

O local e os nomes dos objetos carregados são armazenados no arquivo mon.out Se você não selecionar nenhuma sinalização, o prof usará esses nomes. Especifique um programa ou use a opção -L para acessar outros objetos..

Nota: Chamadas de rotina externas importadas, como uma chamada para uma rotina de biblioteca compartilhada, possuem uma chamada intermediária para o código local glink que configura a chamada para a rotina real. Se o relógio do cronômetro for desligado durante a execução desse código, o tempo será cobrado em uma rotina chamada rotina.gl, em que rotina é a rotina que está sendo chamada Por exemplo, se o cronômetro for desligado enquanto no código glink para chamar a subrotina printf , o tempo será cobrado na rotina printf.gl .

Sinalizações

Os sinalizadores mutuamente exclusivos a, c, ne t determinam como o comando prof classifica as linhas de saída:

Tabela 1. sinalizadores
Item Descrição
-a Classifica ao aumentar o endereço do símbolo
-c Classifica o número de chamadas.
-n Classificam-se lexicamente por nome de símbolo.
-t Classificam-se percentuais decrescentes do tempo total (padrão).
Nota: O comando prof ainda poderá ser executado com êxito se você usar mais de uma das sinalizações a, c, ne t no mesmo comando. O comando prof aceita o primeiro desses sinalizadores que encontra na linha de comandos e ignora os outros.

Os sinalizadores mutuamente exclusivos o e x especificam como exibir o endereço de cada símbolo monitorado

Item Descrição
-o Exibe cada endereço em octal, juntamente com o nome do símbolo.
-x Exibe cada endereço em hexadecimal, juntamente com o nome do símbolo.
Nota: o comando prof ainda poderá ser executado com êxito se você usar as sinalizações -o e -x no mesmo comando. O comando prof aceita a primeira dessas duas sinalizações que ele encontra na linha de comandos e ignora a outra sinalização.
Observação:

Use as seguintes bandeiras em qualquer combinação:

Item Descrição
-g Inclui símbolos não globais (funções estáticas).
-h Suprime o título normalmente exibido no relatório. Isso é útil se o relatório deve ser processado mais adiante.
-L PathName Usa um nome de caminho alternativo para localizar objetos compartilhados..
-m MonitorData Obtém dados de criação de perfil de MonitorData , em vez de mon.out
-s Produz um arquivo de resumo em mon.sum.. Isso é útil quando mais de um arquivo de perfil é especificado.
-S Exibe um resumo de parâmetros de monitoramento e estatísticas sobre erro padrão.
-v Suprime toda a impressão e envia uma versão gráfica do perfil para saída padrão para exibição pelos filtros da trama. Portanto, ao plotar, os números baixo e alto, por padrão 0 e 100, podem ser fornecidos para fazer com que uma porcentagem selecionada do perfil seja plotada com resolução mais alta.
-z Inclui todos os símbolos na faixa de perfil, mesmo que associados a chamadas de 0 (zero) e 0 (zero) tempo.

Exemplos

  1. Para exibir, sem um cabeçalho, a quantidade de tempo que é gasta em cada endereço de símbolo, que é classificado por tempo, insira:
    prof -t -h
  2. O exemplo a seguir obtém uma versão local de qualquer biblioteca compartilhada usada para criar o arquivo runfile no diretório /home/score/lib . O arquivo de dados usado será runfile.mon em vez de mon.out.
    prof -x -L/home/score/lib runfile -m runfile.mon

Arquivos

Tabela 2.. arquivos
Item Descrição
mon.out Perfil padrão.
a.out Arquivo de objeto padrão.
mon.sum Perfil do resumo.