Capítulo 7. Depurar os programas no KDevelop

Executar um programa no depurador

Assim que tiver um lançamento configurado (veja como Executar os programas), também poderá executá-lo num depurador: Selecione o item do menu ExecutarDepurar o lançamento ou pressione Alt+F9. Se estiver familiarizado com o gdb, o efeito é o mesmo que iniciar o gdb com o nome do executável indicado na configuração do lançamento e depois dizer para Executar. Isto significa que, caso o programa invoque o abort() em algum ponto (por exemplo quando você chegar a uma assertiva mal-sucedida) ou se tiver um erro de segmentação (proteção de memória), então o depurador irá parar. Por outro lado, se o programa chegar ao fim (tendo ou não feito a coisa certa), então o depurador não irá parar por si só antes que o programa termine. No último caso, irá querer definir um ponto de parada sobre todas essas linhas da sua base de código onde deseja que o depurador pare, antes de executar o lançamento de depuração. Você poderá fazer isso com a opção do menu ExecutarComutar o ponto de parada ou se clicar com o botão direito sobre uma linha e selecionar a opção Comutar o ponto de parada do menu de contexto.

A execução de um programa no depurador irá colocar o KDevelop num modo diferente: irá substituir todos os botões de Ferramentas no perímetro da janela principal por outros que sejam apropriados para a edição. Você poderá ver qual dos modos em que se encontra se olhar para o canto superior direito da janela: existem páginas chamadas Revisão, Depuração e Código; se clicar nelas, poderá mudar para qualquer um dos três modos; cada modo tem um conjunto de áreas de ferramentas próprio, o qual poderá configurar da mesma forma que foi feito para as ferramentas de Código na seção Ferramentas e janelas.

Assim que o depurador parar (num ponto de parada ou num ponto em que a função abort() seja chamada), você poderá inspecionar uma grande quantidade de informações sobre o seu programa. Por exemplo, na imagem acima, foi selecionada a Pilha de chamadas no fundo (algo equivalente aos comandos do gdb backtrace e info threads) que mostra as várias tarefas em execução do seu programa à esquerda (aqui num total de 8) e como a execução chegou ao ponto de parada atual à direita (aqui: o main() invocou o executar(); a lista seria maior se tivesse parado numa função chamada pelo próprio executar()). À esquerda, você poderá inspecionar as variáveis locais, incluindo o objeto atual (o objeto referenciado pela variável this).

A partir daqui, existem várias possibilidades disponíveis: você poderá executar a linha atual (F10, equivalente ao comando do gdb next), ir para dentro das funções (F11, correspondendo ao comando do gdb step) ou executar até ao fim da função (F12, equivalente ao comando do gdb finish). Em cada passo, o KDevelop atualiza as variáveis apresentadas à esquerda para os seus valores atuais. Você poderá também passar o mouse sobre um símbolo no seu código, por exemplo uma variável; o KDevelop irá então mostrar o valor atual desse símbolo e oferecer-se-á para parar o programa na próxima vez que o valor desta variável mudar. Se conhecer o gdb, também poderá clicar no botão da ferramenta GDB no fundo e ter a possibilidade de introduzir diretamente comandos do gdb, por exemplo para alterar o valor de uma variável (possibilidade para a qual não existe no momento outra forma alternativa).