comando do prof
Propósito
Exibe dados do perfil de arquivo de objetos.
Sintaxe
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...
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 .
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..
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:
| 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). |
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. |
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
- 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 - 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
| Item | Descrição |
|---|---|
| mon.out | Perfil padrão. |
| a.out | Arquivo de objeto padrão. |
| mon.sum | Perfil do resumo. |