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.
Windbg
xxx
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)
https://x64dbg.com Depurador x32-x64 para Windows OpenSource





