Tracetool and simulator for Segment Buffers
1) Baixe a versão 3.13 do site do Valgrind (tar.gz) ou use o link direto: ftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz
2) Descompacte o arquivo em uma pasta no seu usuário. Na pasta do código fonte execute:
- mkdir /opt/valgrind/
- ./configure --prefix=/opt/valgrind
- make
- sudo make install
Se, por algum motivo, você precisar compilar o Valgrind novamente (uma nova versão?) execute os comandos abaixo antes de compilar novamente:
- sudo rm -rf /opt/valgrind/
- make distclean
Em uma pasta no seu usuário execute:
- git clone https://github.com/lauripaulo/tracetool
Para instalar o java (openJDK):
- sudo apt-get update
- sudo apt-get install openjdk-8-jdk python3
Para instalar o Eclipse:
A maneira mais simples é utilizar o Eclipse instaler em: http://www.eclipse.org/downloads/eclipse-packages/
Outra maneira é puxar o pacote Eclipse IDE for Java Developers na mesma página. Nesse caso você precisa descompactar o arquivo em uma pasta do seu usuário (~/apps/eclipse) e criar um link no desktop para o arquivo (~/apps/eclipse/eclipse)
No eclipse vá em "File", "Import", "Existing Maven projects...", vá onde está o projeto do github e encontre a pasta "java". Nela você irá encontrar o "pom.xml" do Maven. Crie o projeto.
Com o projeto criado clique com o botão direito no arquivo "pom.xml", escolha "Run as...", "Maven build..." (a opção com os três pontinhos...)
Na janela que abrir coloque em "name" o texto "Tracetool build" e em "goal" cloque "compile test install". Clique em "apply" e depois em "ok".
O Maven vai fazer as coisas do Maven. Quando terminar você deve ver uma mensagem assim no console do Eclipse: "BUILD SUCCESS"
Nesse ponto você tem o jar com o necessário para coletar os logs e executar a simulação no diretório "java/target". O nome do jar é "tracetool-all-0.9.2-jar-with-dependencies.jar". Gaurde esse caminho absoluto, ele será utilizado para alterar alguns shell scripts (TODO: definir a pasta do jar como variável de ambiente).
Vá na pasta "shell" e alterer os arquivos "tracetoolsimulator.sh", "tracetoolskip.sh" e "tracetool.sh" para que a variável JAR_FOLDER aponte para o seu "tracetool-all-0.9.2-jar-with-dependencies.jar".
Ainda em "shell" e altere o arquivo "pmap-observer.sh" para que a linha de comando aponte para o caminho absoluto do arquivo "python/pmap-observer.py".
E, finalmente, execute um "chmod +x install.sh" e execute. Ele irá apenas copiar os .sh para sua pasta de usuário e torna-los executáveis.
Agora o ambiente está configurado e pronto.
Abra um terminal, crie uma pasta de trabalho e execute o tracetool
- cd ~
- mkdir test
- cd test
- ~/tracetool.sh
Abra outro terminal e execute o script python para monitorar o mapa de memória do Valgrind Lackey
- cd ~
- cd test
- ~/pmap-observer.sh lackey pmap.txt
Abra outro terminal (sim você vai ter três terminais abertos) e execute o script com o aplicativo que você deseja coletar os traços utilizando o Valgrind. No exemplo vamos executar o "lsblk".
- cd ~
- cd test
- ~/valgrindexec.sh lsblk
Se o arquivo "pmap-final.txt" estiver vazio encontre o arquivo "pmap-.txt" com o maior número que não esteja vazio e renomeie para "pmap-final.txt"
A pasta "test" deve ter pelo menos um arquivo de traços. No exemplo deve ser apenas o "tracefile-trace-00000.txt.zip"
Em um dos terminais abertos (você pode fechar os outros) execute o simulador na pasta de coleta de traços:
- cd ~
- cd test
- ~/tracetoolsimulator.sh
Quando a simulação terminar você pode ver o resumo dos resultado no arquivo "stats-simulation-results.txt.csv"
Na pasta "doc" tem duas imagens e um video da simulação.
Enjoy!