Debugging (Depuração)

Debugging - (Depurar em português) - é o ato de vasculhar o código à procura de bugs. Sua forma mais rústica é através de impressão de mensagens na tela indo até formas mais sofisticadas como ferramentas que geram relatórios e permitem a manipulação do programa em tempo real

C/C++

GDB (linha de comando)

Para se usar o debug do gdb pela linha de comando é necessário que o código fonte em C/C++ seja compilado pelo gcc/g++;.
Ao se compilar com o gcc/g++ deve ser passada a opção -g como argumento para que o compilador gere os símbolos de debug
Sendo gerado os símbolos de debug basta digitar na linha de comando

gdb nome_executavel_com_simbolos_de_debug

o GDB oferece várias opções. Você pode configurar um breakpoint com a seguinte sintaxe:

break nome_arquivo:numero_da_linha

Exemplo:

break personagem.cpp:300

que irá parar quando o executável rodando tiver atingido o código correspondente à linha 300 do arquivo personagem.cpp

Alternativamente se pode configurar um breakpoint com o nome da função em C/C++

break nome_da_função

Exemplos:

break my_c_function()
break my_cpp_class::metodo(int,int)

que irá parar quando o executável rodando tiver atingido estas funções

Para poder executar o executável em debug basta recorrer ao comando run. Os argumentos dados ao comando run serão repassados ao programa em debug

run arg1 arg2

Caso você queira especificar o arquivoi executável com símbolos de debug de dentro do gdb use o comando file

file nome_executavel_com_simbolos_de_debug

Durante o breakpoint há alguns comandos úteis:

s ou step: avança para a próxima instrução do programa
n ou next: avança para a instrução que corresponde à próxima linha do arquivo em que está a instrução parada no momento
c continue: continua a execução do programa normalmente até que o próximo breakpoint ou condição de breakpoint sejam atingidas caso haja alguma delas
print nome_variavel: imprime o conteúdo da variável nome_variável
printf "formato", arg1, arg2, …, argn: equivalente ao comando printf. Possibilita a impressão de conteúdos de variáveis seguindo um formato. Atente para a desnecessidade de parenteses.

Debug do CodeBlocks

Debug do Visual Studio

Java

jdb

Visual - Eclipse

Visual - Netbeans

.Net

Visual - Visual Studio

Python

++pdb

JavaScript

Firefox

Chrome

LInks:

http://www.unknownroad.com/rtfm/gdbtut/gdbbreak.html (Dicas para o GDB - inglês)
http://www.delorie.com/gnu/docs/gdb/gdb_38.html (Mais dicas para o GDB - inglês)

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.