Clube Delphi Edição 71
Esse artigo faz parte da revista Clube Delphi Edição 71. Clique aqui para ler todos os artigos desta edição

Depuração

Tópicos Avançados

 

Quem nunca utilizou um ShowMessage para mostrar o valor de uma variável em um bloco de código? Ou, ao menos, para sinalizar que determinado trecho foi executado? Em algumas situações complexas, chegamos ao ponto de querer mudar a estrutura de um algoritmo apenas para a visualização de dados relevantes.

Contudo, sabemos que desde sua primeira versão, o Delphi sempre esteve à frente no tocante ao seu ambiente integrado de debug. É muito importante um bom conhecimento desse recurso, pois, quando bem sucedida, uma operação de depuração pode apontar diversos pontos de falha e até gargalos no sistema.

Veremos como utilizar todos os recursos de depuração do ambiente, dos mais básicos aos mais avançados, incluindo as configurações. Assim, o desenvolvedor poderá conhecer a fundo técnicas e funções raramente utilizadas, porém muito úteis e que podem fazer a diferença na hora de se resolver um problema. Vale lembrar que muitos dos recursos aqui apresentados estão disponíveis para Delphi 7 e versões anteriores, as novidades do Delphi 2005/2006 serão indicadas no texto.

 

Configurando e entendendo o ambiente

Ao depurarmos nosso programa, não devemos de forma alguma alterar o código já existente. A menos que seja realmente detectada uma falha. Do contrário, além de estarmos afetando a compreensão do algoritmo, poderemos influenciar o resultado desejado. Se contarmos com um ambiente de depuração, devemos confiar a ele o trabalho de nos mostrar o que acontece nos bastidores. Todavia, existem raras exceções a essa regra. Deixemos isso de lado por um instante.

O estudo das configurações de depuração começa no diálogo Options (Tools>Options) do Delphi 2005 (Figura 1). Na seção Debugger Options, podemos facilmente configurar as principais opções globais do depurador.

 

imagem

Figura 1. O diálogo Options do Delphi

 

O mais importante aqui é saber que é possível ativar/desativar a depuração integrada, fazendo com que o programa seja sempre executado sem o link com o depurador (opção Integrated debugging); durante o processo de debug, transformar os editores em read-only, impedindo a modificação do código (Mark buffers read-only on run); e reorganizar o menu do editor principal, facilitando a localização das debug tools (Rearrange editor local menu on run).

 

Nota: Todas as opções aqui configuradas são independentes do projeto ativo.

 

Uma outra opção interessante é encontrada na seção Language Exceptions e se chama Notify on language exceptions. Até o Delphi 8, essa opção se chamava Stop on Language Exceptions, devido a algumas mudanças no tratamento das exceções disparadas pelo executável que está sendo depurado. Nas versões anteriores, quando uma exceção era disparada, o depurador pausava a execução do programa até que a sua continuação fosse solicitada.

Por essa opção não ser sempre desejada pela maioria dos desenvolvedores, muitos optavam por desativar temporariamente o tratamento de exceções pelo depurador ou, até mesmo, desativar a depuração integrada. Uma solução mais elegante seria utilizar breakpoints para tal fim, o que será visto adiante. Mesmo assim, as novas versões do Delphi optaram por facilitar a vida dos desenvolvedores, adicionando duas novas funcionalidades ao IDE: o Run without debugging e o Debugger Exception Notification.

Diversas vezes queremos testar apenas a execução do programa sem linká-lo ao depurador. Para tanto, podemos utilizar uma função introduzida no Delphi 8, a Run>Run Without Debugging.

A janela Debugger Exception Notification aparece a cada vez que uma exceção é disparada e tratada pelo depurador (Figura 2).

 

imagem

Figura 2. A janela Debugger Exception Notification

 

Nossas opções são:

·         Break: Para pausar a execução e mostrar o código (como anteriormente);

·         Continue: Ignorar a exceção e voltar para o programa em execução;

·         Help: Abre a ajuda normalmente;

·         Ignore this exception type: Ignorar esse tipo de exceção das próximas vezes que for disparada.

...

Quer ler esse conteúdo completo? Tenha acesso completo