Depurando seu código no VB.NET


"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 :

  1. O modo [design] - quando você inicia o projeto e esta trabalhando no seu programa você esta no modo [desing]

  2. O modo [run] - quando você executar o seu programa no IDE estará no modo [run]

  3. o modo [break] - quando o seu programa for interrompido durante a execução seu programa estará no modo [break]

Você pode constatar o modo no qual seu programa esta examinando a barra de título da janela no IDE.

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.

O analisador de sintaxe exibindo erros no código

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  - Build Error Task show - com a relação dos erros e sua explicação.

A janela indicando erros durante a compilação

A relação de erros e sua explicação

Se você clicar duas vezes sobre a mensagem de erro será levado a linha de código correspondente ao erro informado.

Nota: A janela - Task List - exibe também o nome do arquivo onde esta o erro e o número da linha de código do mesmo. Para exibir números de linha em seu código no Editor de Textos do Visual Basic .NET no menu Tools selecione Options e abra a pasta Text Editor e clique em Basic e a seguir selecione General , agora marque a opção Line Number na seção Display.

Configurações de depuração

Você pode definir configurações de depuração para seu projeto assim :

  • Clique com o botão direito do mouse sobre o nome do seu projeto na janela - Solution Explorer
  • clique agora na opção Properties
  • Na janela - Property Pages - abra a pasta : Configuration Properties e marque debugging

- Seção Start Action : identifica um item a ser iniciado quando o programa for depurado

  • Start Project - indica que o executável (projetos Windows/console) ou página inicial(projetos web) precisa ser iniciado quando a aplicação for depurada.
  • Start external Program - Especifica um programa externo que deverá ser executado quando o seu programa for depurado.
  • Start URL - Define um endereço na web a ser acessado quando o seu programa for depurado.
  • Wait for an external process to connect - Aplicável a projetos web e web services.

- Seção Start Options : define argumentos de linha de comando a serem utilizados pelo seu programa quando a opção Start Action for definida para iniciar o seu projeto.

  • Working directory - define um diretório de trabalho a partir do qual seu projeto será lançado
  • Always use Internet Explorer when debugging web pages - força a exibição do seu projeto web no IE.

- Seção Debuggers :

  • ASP.NET debugging - permite depurar páginas ASP.NET
  • ASp debugging - permite depurar páginas ASP.
  • Unmanaged code debugging - permite depurar códigos COM não gerenciados
  • SQL Server debugging - permite depurar procedures armazenadas em um SQL Server.

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 Find ( quer um atalho ? tecle CTRL + F)

Agora na caixa - Find What - digite a expressão que esta procurando , mas antes vamos ver as opções para configurar a busca:

Search - define onde a busca será realizada:

Opções de busca :

  • Match Case - realiza a busca considerando a ocorrência idêntica dos caracteres com relação a maiúsculas e minúsculas.
  • Match whole word - faz a busca pela palavra que seja igual a expressão informada , não considerando partes de nomes maiores.
  • Search up - inicia busca a partir do ponto em que o cursor esta em direção ao topo do arquivo.
  • Use - faz a busca com base em padrões coincidentes usando caracteres * e ? . Ex: hor? ou h*
  • 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)

    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 :

    1. Marque um ponto de interrupção no seu código.

    2. Execute sua aplicação

    3. 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

    Nota: Você pode exibir os valores das variáveis em hexadecimal  , ativando a opção na barra de ferramentas do menu ou clicando com o botão direito do mouse sobre a linha da variável e selecionando : Hexadecimal Display.:

    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 opção Windows.

    Nota : Podemos obter o mesmo efeito usando a janela Me no menu Debug - Windows - Me

    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+G.

    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.

    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 .

    Você pode ainda configurar  outras opções para o debugging selecionando no menu Tools|Options|Debbuging , conforme figura abaixo:

    Com estes conceitos creio que agora você já tem condições para depurar o seu código. Aguarde mais artigos sobre depuração em breve.

    Tchau...


    José Carlos Macoratti