Pergunta

De preferência, a partir de repositórios do Ubuntu.

Foi útil?

Solução

Outros mencionaram OProfile ; para perfilamento estatística de todo o sistema em instalações modernas do Linux, é, de fato, o rock.

A ferramenta mais venerável (que não requer suporte do kernel e, portanto, irá funcionar em versões mais antigas do Linux ou mesmo sistemas operacionais não-Linux) é GNU gprof , incluído no binutils (e, portanto, sem dúvida, já instalado em seu ambiente de desenvolvimento).

Para usar gprof, apenas compilar o seu pedido com o argumento -pg para gcc; um arquivo chamado gmon.out será criado depois da saída do programa, e gprof pode então ser usada para analisar esse arquivo.

Outras dicas

Um simples, mas técnica eficaz é executar o programa sob GDB e manipular o sinal SIGINT. Enquanto o programa está sendo executado, gera SIGINT manualmente, digitando control-c ou o que quer, e enquanto ela é interrompida, gravar a pilha de chamadas. Fazer este número um de vezes, como 10 ou 20, enquanto o programa está sendo subjetivamente lento. Isto lhe dará uma boa idéia de onde o tempo passa.

Este método não lhe dá tempo preciso, mas não localizar com precisão as instruções, incluindo instruções de chamada, esse custo a mais tempo.

Como posso perfil C ++ código em execução no Linux?

Sysprof é um bom profiler, semelhante ao OProfile (também tem um GTK GUI). que está disponível no repositório do Ubuntu. É um profiler nível do kernel, o que requer um módulo do kernel ao contrário gprof, no entanto, também ao contrário gprof, é possível determinar o perfil de aplicativos multithreaded.

OProfile . Não é tão difícil de usar, mas é um pouco buggy.

Eu tive um bom sucesso com oprofile ( http://oprofile.sourceforge.net/news/ ), que está disponível nos repositórios do Ubuntu também. Ele não requer recompilação, e não tem quaisquer limitações sobre objetos compartilhados ou similares.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top