Microsoft Visual Studio: Depuração de Código

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (5)  (0)

Veja nesse artigo alguns conceitos de depuração de código. Serão apresentados todos os recursos que o Visual Studio Debugger possui para facilitar a vida dos desenvolvedores, entre eles os breakpoints condicionais e os tracepoints.

Fique por dentro
A depuração de código é uma ferramenta essencial em qualquer projeto de software. Com essa técnica, é possível encontrar defeitos no código que podem prejudicar todo o andamento da aplicação, gerando uma saída inesperada. Trata-se de uma tarefa complexa e trabalhosa, mas que, muitas vezes, evita tempo desperdiçado para encontrar erros que não são tão triviais. O depurador de código do Visual Studio é extremamente rico e possui diversos recursos que auxiliam o desenvolvedor na hora de encontrar e corrigir erros nas aplicações.

Quando se projeta uma aplicação qualquer, invariavelmente é necessário pensar em como corrigir erros que, inevitavelmente, aparecerão. Isso, claro, se o aplicativo for minimamente complexo; não é possível (ou pelo menos não é provável) que haja erros em uma aplicação de soma de dois números, por exemplo. Outro ponto importante a ser levado em conta é que, quanto mais complexo o desenvolvimento, mais complicado é de encontrar esses erros. Ou seja, quando o desenvolvedor enxerga que o resultado final não é o esperado, fica muito mais difícil de encontrar onde o erro se encontra. Erro esse que muitas vezes é minúsculo, porém capaz de alterar todo o funcionamento do aplicativo. Para encontrar e corrigir esses erros existe um conceito chamado de depuração de código.

Depuração

A depuração de código, ou debug, foi utilizada pela primeira vez (com esse nome) em 1979, no livro de Glenford Myers, Software Reliability: Principles and Practices. O termo deriva da palavra bug, que é um termo para definir erros genéricos em computação. Com isso, o ato de depurar, ou debugar (em um aportuguesamento bem ruim), o código é responsável por localizar e corrigir erros genéricos.

Por mais simples que seja o conceito, o ato de depurar um código não é tão simples assim. Em geral, isso depende muito da linguagem de programação e também da ferramenta responsável por essa depuração, o depurador. Depuradores são, basicamente, responsáveis por permitir ao programador monitorar a execução de um programa, além de outras tarefas pertinentes. No caso de linguagens de alto nível, a depuração é menos trabalhosa, porque a própria linguagem é capaz de tratar exceções. Ou seja, como em tudo que envolve aplicações computacionais, a depuração de código também é muito mais simples em código bem escrito.

É interessante notar que a depuração não é um processo exclusivamente de software, também é vista em hardware. Basicamente, o processo de encontrar erros em hardware é um tanto mais complexo, uma vez que envolve o uso de instrumentos como osciloscópios e multímetros. As variáveis monitoradas são, portanto, a tensão e a corrente que circulam por determinada parte do circuito em um determinado momento. Porém, isso acaba não sendo muito prático. Para evitar a construção de hardware com erros, foram criadas as linguagens de descrição de hardware, entre as quais as mais utilizadas são VHDL (VHSIC Hardware Description Language), VeriLog e SystemC. Essas linguagens permitem a descrição do hardware e seu comportamento, e com isso, cria-se a possibilidade de emulação do hardware. É possível observar as formas de onda de entrada e saída do circuito, para verificar se o mesmo está com o comportamento esperado. Esse tipo de atitude evita muitos erros na construção de placas de circuito impresso.

O processo de depuração não é muito trivial. No caso de computação paralela, por exemplo, é muito complicado de encontrar erros, e, como tal, as dicas para programadores em ambientes assim é que realizem a depuração de código localmente, para depois paralelizá-lo. Em qualquer depuração, o lema de dividir para conquistar é o padrão. Essa divisão é feita como uma forma de simplificar o problema. Um exemplo clássico é um programa que lê diversos registros e o problema está associado a apenas um deles. Com isso, lendo apenas uma dessas entradas, é possível ver se o erro é realmente esse ou é alguma outra coisa, realmente no código. Após o isolamento do problema, ele precisa ser identificado, e é aí que entram os depuradores.

O depurador nada mais é do que uma aplicação utilizada para testar outras aplicações. Em outras palavras, é um programa utilizado para encontrar erros em outros. Um dos pontos mais comuns a todos os depuradores é a capacidade de criar breakpoints, ou seja, pontos de parada. Com esses pontos, o código para sua execução temporariamente, permitindo que o programador observe o estado da aplicação naquele momento, como variáveis, saída de métodos, etc. A maioria dos depuradores também oferece funcionalidades mais elaboradas, como a execução de código passo a passo, que é muito útil na maioria dos casos em que não se tem a menor ideia de onde encontrar o erro.

Geralmente, todas os IDEs (Integrated Development Environment) possuem depuradores de código. Esses depuradores normalmente possuem recursos muito amplos, e são auxiliares dos bons desenvolvedores em todos os projetos de softwares que eles realizam. Acrescentar um bom depurador ao IDE acaba sendo uma obrigação das empresas, pois, em geral, os desenvolvedores não gostam de trabalhar com depuradores com recursos limitados, ou de tirar o código do IDE para testá-lo. Com isso, o que se observa em casos assim é programadores utilizando a interface de usuário para testar a aplicação e encontrar os erros – o que raramente é uma boa idei" [...]

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?