Depurando com o Voltron

- por Sergio Prado

Categorias: Ferramentas Tags: ,

Voltron é uma implementação de interface gráfica bastante extensível para depuração de programas com o GDB e outros depuradores como o LLDB e o WinDbg.

O projeto está disponível no GitHub e pode ser clonado e instalado na máquina de desenvolvimento com os comandos abaixo:

$ cd ~/
$ git clone https://github.com/snare/voltron
$ cd voltron
$ ./install.sh

O script de instalação irá identificar automaticamente qual debugger você tem instalado na sua máquina de desenvolvimento e configurá-lo adequadamente. No meu caso, ele identificou o GDB e adicionou uma linha ao arquivo de inicialização do GDB:

$ cat ~/.gdbinit | grep entry.py
source /home/sprado/.local/lib/python2.7/site-packages/voltron/entry.py

Precisei apenas adicionar ao PATH da minha máquina de desenvolvimento o diretório de instalação da ferramenta:

$ echo 'export PATH=$PATH:~/.local/bin/' >> ~/.bashrc
$ source ~/.bashrc

Após a instalação, podemos verificar se o Voltron foi instalado com sucesso executando a ferramenta:

$ voltron --help

Para testar o funcionamento do Voltron, baixei e compilei o netcat na minha máquina de desenvolvimento:

$ cd ~/
$ wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.bz2
$ tar xfv netcat-0.7.1.tar.bz2 && cd netcat-0.7.1/
$ ./configure --enable-debug && make

E iniciei uma seção de depuração com o GDB:

$ gdb ./src/netcat
(gdb) break main
(gdb) run

Agora é só abrir um outro terminal e executar o Voltron:

$ voltron view register

Pronto! O plugin irá se conectar à seção de debugging e exibir as informações requisitadas (registradores da CPU no exemplo acima).

O Voltron possui o conceito de views, onde é possível exibir individualmente (em terminais separados) informações sobre os registradores, stack, disassembler do código, backtrace de chamada de função, memória, etc! Todas as views estão documentadas na wiki do projeto.

Esta é uma seção de depuração que criei utilizando quatro views do Voltron dentro de uma seção do tmux (clique na imagem para ampliá-la):

Bacana, não?

Informações completas sobre a ferramenta estão disponíveis na wiki do projeto no GitHub.

Happy hacking!

Sergio Prado

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.