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 o poderá executar num depurador: Seleccione o item do menu ExecutarDepurar o Lançamento ou carregue em 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 o executar. Isto significa que, caso o programa invoque o abort() algures (isto é quando você chegar a uma asserção mal-sucedida) ou se tiver um erro de segmentação (protecçã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 paragem 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. Podê-lo-á fazer com a opção do menu ExecutarComutar o ponto de paragem ou se carregar com o botão direito sobre uma linha e seleccionar a opção Comutar o Ponto de Paragem 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. Poderá ver qual dos modos em que se encontra se olhar para o canto superior direito da janela: existem páginas chamadas Rever, Depuração e Código; se carregar 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 secção Ferramentas e janelas.

Assim que o depurador parar (num ponto de paragem ou num ponto em que a função abort() seja chamada), poderá inspeccionar uma grande quantidade de informação acerca do seu programa. Por exemplo, na imagem acima, foi seleccionada 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 é que a execução chegou ao ponto de paragem actual à direita (aqui: o main() invocou o executar(); a lista seria maior se tivesse parado numa função chamada pelo próprio executar()). À esquerda, poderá inspeccionar as variáveis locais, incluindo o objecto actual (o objecto referenciado pela variável this).

A partir daqui, existem várias possibilidades disponíveis para si: poderá executar a linha actual (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 actualiza as variáveis apresentadas à esquerda para os seus valores actuais. Poderá também passar o rato sobre um símbolo no seu código, isto é uma variável; o KDevelop irá então mostrar o valor actual 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á carregar no botão da ferramenta GDB no fundo e ter a possibilidade de introduzir directamente comandos do gdb, por exemplo para alterar o valor de uma variável (possibilidade para a qual não existe de momento outra forma alternativa).