VB .NET - Curso Prático ADO .NET - Desenvolvendo uma aplicação : Depurando o código - VII
"Um erro de digitação , um engano ao incluir o código , um erro de estratégia..."
A frase acima contém os elementos potenciais para que um erro ocorra em um programa de computador. Afinal , errar é humano , e , já que os erros são inevitáveis devemos ter condições de encontrá-los e eliminá-los. Encontrar e eliminar possíveis erros tem um nome específico em programação , chama-se depurar. Os erros também são conhecidos como bugs e o processo para encontrá-los debug (será que existe esta palavra no dicionário ??).
O Visual Basic sempre ofereceu um depurador para auxiliar o programador na tarefa de depuração ; neste artigo vou mostrar os conceitos básicos para usar o depurador do VB .NET e assim facilitar a procura e correção de erros em seus aplicativos.
O depurador do VB.NET é um recurso que podemos usar para verificar o código durante sua execução. Enquanto o programa esta rodando podemos usar o depurador para espiar o conteúdo das variáveis , acompanhar passo a passo a execução de cada linha código , parar o processamento em uma determinada linha de código e desviar o processamento de linhas de código. Pode ter certeza , sem o depurador sua vida como programador seria muito mais difícil e sujeita a erros.
Vou mostrar os recursos que o VB.NET nos oferece para evitar erros e realizar a arte de depurar com destreza. É claro que a ferramenta em si não faz todo o trabalho sozinha , sua experiência e bom senso é que fazem a diferença.
A primeira coisa que você deve saber é que um programa VB.NET pode existir em três modos distintos :
O modo [design] - quando você inicia o projeto e esta trabalhando no seu programa você esta no modo [design]
O modo [run] - quando você executar o seu programa no IDE estará no modo [run]
o modo [break] - quando o seu programa for interrompido durante a execução seu programa estará no modo [break]
Verificando a sintaxe
No modo [design] o Editor de Texto do Visual oferece recursos de forma a minimizar os erros cometidos pelo programador durante a codificação. O analisador de sintaxe é um poderoso recurso que lhe permite verificar a sintaxe do código durante a digitação : erros de digitação , a não declaração de variáveis , utilização de métodos e propriedades de forma incorreta , etc..
O analisador de sintaxe irá destacar a palavra ou a linha de código com erro . Ao colocar o mouse sobre a palavra ou linha ele informará o erro que esta ocorrendo. Na figura abaixo temos um trecho de código onde o analisador informa a ocorrência de dois erros: a utilização de um if sem o correspondente End If e a não declaração de uma variável i.
Se você for teimoso e mesmo assim tentar executar o código com os erros o VB.NET irá exibir uma janela de erro durante a compilação informando que há erros no seu código perguntando se deseja continuar a execução. Se você escolher : Não , o VB.NET exibe a janela - Error List - com a relação dos erros e sua explicação, o arquivo onde o erro ocorreu, o número da linha, o número da coluna e o nome do projeto:
Se você clicar duas vezes sobre a mensagem de erro será levado a linha de código correspondente ao erro informado.
Configurações de Depuração
No menu TOOLS opção Options temos a janela Options onde podemos configurar diversos comportamentos do IDE que estamos usando, no meu caso estou usando o Visual Studio 2012 Express for desktop, dentre eles a depuração na opção Debugging:
Em geral a configuração
padrão é suficiente para a grande maioria dos cenários
das aplicações. Mas você pode alterar as opções definidas para Debugging se precisar e se saber o que está fazendo. |
Procurando expressões
Um programa pode ter milhares de linhas . Como você faria para localizar uma determinada expressão em seu código ? Olhar linha a linha ????
Experimente abrir o menu EDIT e no submenu Find and Replace selecionar a opção Quick Find (quer um atalho ? tecle CTRL + F)
Será aberta uma caixa para pesquisa no canto superior direito do descritor de código onde você pode informar a expressão a ser localizada.
Quando você digita imediatamente todas as ocorrências encontradas para a expressão serão destacadas no código.
Além disso você tem as seguintes opções de busca:
Opções de busca :
Você tem ainda a opção de localizar uma expressão em arquivos do projeto:
Usando pontos de interrupção
Você pode parar a execução do seu programa definindo um ponto de interrupção ou BreakPoint em uma linha de seu código. Antes de executar o programa você escolhe a linha onde quer que a execução do programa pare clica com o mouse sobre ela ou posiciona o cursor na linha e tecla F9.
Você verá um ponto do lado da linha indicando que quando atingir esta linha a execução vai parar e o programa vai ficar congelado mantendo todas as condições de execução , variáveis de memória , etc. (O VB.NET também indica a linha do arquivo e a linha correspondente do procedimento onde foi definido o breakpoint.)
Após executar o seu aplicativo quando a linha de interrupção definida for alcançada o programa vai parar e a linha código correspondente será exibida na tela destacada de uma maneira diferente. ( A seta amarela mostra a próxima linha a ser executada)
fig 1.0 - Definição de ponto de interrupção | fig 2.0 - Menu DEBUG |
Se você quiser continuar a execução linha a linha pressione a tecla F11 ou a opção Step Into do menu DEBUG , ou ainda usar o ícone na barra do menu:(fig 2.0) e o programa será executado sequencialmente exibindo cada linha executada.
Se você quiser continuar a execução a partir da linha do breakpoint pressione F5 ou selecione a opção Continue do menu Debug.
Para desativar o breakpoint selecione a opção Toggle Breakpoint no menu Debug ou pressione novamente F9 sobre a linha;
Para remover o breakpoint basta clicar com o botão direito do mouse sobre o breakpoint e selecionar a opção : Delete Breakpoint
Para remover todos os breakpoints selecione a opção Delete All BreakPoints do menu DEBUG.(fig 1.0)
Para saltar uma ou mais linhas de código posicione na linha a partir da qual quer continuar a execução se clique com o botão direito do mouse selecionando - Set Next Statement.
Para executar uma rotina inteira de uma vez selecione a opção Step Over no menu DEBUG.
Nota: Se você não desativar o breakpoint toda vez que executar o código o programa vai parar na linha de interrupção definida.
Examinando variáveis
Durante a depuração você pode inspecionar o conteúdo de uma variável de memória de forma automática , basta posicionar o cursor do mouse sobre a variável para visualizar o seu valor atual.
Você pode visualizar o valor de uma variável e também alterar o seu valor usando a opção QuickWatch do menu DEBUG. Para usar este recurso você deve indicar no seu código o que deseja inspecionar. As etapas são as seguintes :
Marque um ponto de interrupção no seu código.
Execute sua aplicação
Quando a linha de interrupção for atingida marque a variável que deseja visualizar e tecle SHIFT+F9 ou selecione QuickWatch do menu debug.
Se você clicar na opção - Add Watch - a variável selecionada seja exibida na janela Watch. Você pode incluir desta forma mais de uma variável na janela Watch para visualizar seu conteúdo durante a execução do código.
- Name - a variável selecionada - Value - O valor atual da variável - Type - O tipo de dados da variável |
Você pode visualizar mais informações sobre a variável observada:
Para alterar o valor de uma variável basta selecionar a variável ativar o QuickWatch e alterar o seu valor. Lembrando sempre que sua alteração será processada pelo aplicativo e que qualquer modificação só terá efeito se a fizermos antes da execução do código onde a variável é alterada.
A janela Locals
Para ver o conteúdo das suas variáveis locais declaradas na rotina atual basta selecionar a janela Locals no menu DEBUG->Windows->Locals
A janela Immediate
Esta janela permite que você altere o comportamento de seu programa , interagindo diretamente com ele e realizando testes para verificar a execução do código.
Podemos efetuar operações usando as variáveis de memória do nosso código ou executando novos comandos que não existam em nosso código.
Para ativar a janela no menu DEBUG selecione Windows e a opção Immediate ou tecle CTRL+D, I
A janela Call Stack
A janela Call Stack exibe uma lista de procedimentos ativos momento. Para ativá-la selecione a opção no menu DEBUG-> Windows-> Call Stack (Alt+7).
Você pode exibir o código no modo Disassembly , uma ferramenta avançada que mostra a linguagem de máquina criada para o programa.
Nota: a janela Threads ( menu DEBUG->Windows->threads) mostra as linhas de execução ativas em seu programa .
Abordamos assim os principais recursos que você pode usar para depurar o seu código. Explorando a IDE você vai encontrar muito mais recursos avançados.
O objetivo é minimizar os possíveis erros que irão surgir em toda a fase de desenvolvimento.
Na próxima aula iremos iniciar a construção do projeto definindo os formulários da aplicação.
Referências: