Este documento resume uma pesquisa sobre o desenvolvimento de uma ferramenta chamada traceAnalyzer para análise de chamadas de função em programas C/C++ usando tracing. O traceAnalyzer usa o tracer LTTng para gravar eventos de um programa em execução e constrói uma árvore de chamadas para elucidar o comportamento dinâmico do programa. Os testes demonstraram que a ferramenta facilita a análise de grandes quantidades de dados de tracing e fornece informações úteis sobre o programa.
Honour Thesis Gabriel Alabarse - TCC Anhembi Morumbi
1. Aluno: Gabriel Alabarse Rocha Mendes
Orientador: Prof. Doutor Fernando Ryioji Kakugawa
Co-orientador: Pesquisador Isnaldo Francisco de Melo Junior
São Paulo, junho de 2017
Trabalho de Conclusão do Curso de Ciência da
Computação
2. TRACEANALYZER
DESENVOLVIMENTO DE UMA FERRAMENTA PARA ANÁLISE DE
TRACING
DESENVOLVIMENTO DE UMA FERRAMENTA PARA ANÁLISE DE
TRACINGAluno: Gabriel Alabarse Rocha Mendes
Orientador: Prof. Doutor Fernando Ryioji Kakugawa
Co-orientador: Pesquisador Isnaldo Francisco de Melo Junior
4. Analisar um programa em C/C++ e suas chamadas de
função sem alterar sua performance
Problema
5. Introdução
Profiling: processo de gravar a execução de um programa
para analisar as suas chamadas.
Debugging: processo de encontrar e resolver defeitos que
impedem o funcionamento correto do software de
computador ou um sistema.
6. Tracing
Tracing: Técnica de baixo overhead do sistema, permitindo
a gravação do eventos de alto e baixo nível.
▶ Espaço do usuário x Espaço kernel
▶ Estático x Dinâmico
19. Discussão
Leitura linear do tracing
Contadores de performance por amostragem: Perf
Construção da árvore: Árvore de chamada
Uso da ferramenta nm
20. Conclusão
traceAnalyzer se mostrou eficaz na análise do tracing pelas
seguintes razões:
▶ Facilitou o processo de análise de uma quantidade considerável
de informação gerada pelo tracing
▶ Elucidou parte do comportamento dinâmico do programa da
aplicação
21. Extensão
traceAnalyzer pode ser estendido na utilização de outros tracers e
outras árvores.
Criação de mecanismos automáticos de comparação e correlação
de árvores complexas.
Mais eventos podem ser incluídos como informação de análise do
programa.
22. Referências
BABELTRACE. Babeltrace. Diamon. 2016. Disponível em <http://diamon.org/babeltrace/>. Acessado
em: 10 abr. 2016.
DESNOYERS, M.. Low-impact operating system tracing. 2009. Dissertação (Ph.D. em Engenharia
da computação) – École Polytechnique de Montréal, Montréal.
LTTNG. LTTng is an open source tracing framework for Linux. LTTng. 2014. Disponível em <
http://lttng.org/docs/>. Acessado em: 1 mar. 2016.
NM. nm(1) - Linux man page. nm(1): symbols from object files - Linux man page. 2009. Disponível em
<https://linux.die.net/man/1/nm>. Acessado em: 10 fev. 2017.