visual-studio-debugger

Fazendo debug pelo Visual Studio Code

Você vai aprender

  • Como fazer depuração pelo VSCode

Pré-Requisitos

  • Noções básicas de Java

  • Ter o Visual Studio Code instalado na sua máquina

  • Noções básicas do Visual Studio Code

Depuração de código

Muitas vezes o programador não terá uma IDE (Integrated Development Environment) para fazer depuração de código. Entretanto, quando temos acesso a tais ferramentas, como a disponibilizada pelo Visual Studio Code, não devemos menosprezar sua capacidade de ajudar a entender mais rápido e mais fácil os problemas que estão acontecendo com o código. Por conta disso, nesta aula irei explicar o básico para você entender como usar a ferramenta de depuração do VSCode.

Para iniciarmos a depuração, antes de termos um código, precisamos da extensão Extension Pack for Java da Microsoft, para permitir que o processo de debug possa acontecer.

Segundo precisaremos de um código para que seja possível fazer testes, e para isso iremos começar com uma versão um pouco modificada do código visto na aula de JDB.

public class Main {

    public static int somar(int a, int b) {
      return a + b;
    }

    public static void main(String[] args) {
        int a = 5;
        int b = 3;

        int c = somar(a,b);

        System.out.println("a + b = " + c);
    }
}

Ele é simples, mas será o bastante para começarmos a usar a ferramenta. Com agora a sua IDE aberta, você terá uma area de trabalho parecida com isso.

Perceba que a cima da função Main tem um marcador dizendo Debug que é onde podemos iniciar o processo de depuração (Obs.: você também pode iniciar a depuração clicando no botão ao lado do "play" e clicar em Debug Java).

Entretanto, se você clicar nele, o programa irá rodar e finalizar normalmente. Isso acontece pois para o processo de debug ser realmente efetivo, precisamos colocar um breakpoint ou um ponto de parada no código.

Para colocar um breakpoint, apenas clique na bolinha vermelha ao lado de cada número.

Se clicarmos para rodar o Debug novamente, perceba que agora o nosso código está parado na linha em que colocamos o breakpoint (a linha marcada em amarelo) e podemos inspecionar o nosso código durante execução.

Perceba que além de termos o nosso código, temos também outras áreas de trabalho que foram abertas pelo depurador, que permitem inspecionar elementos mais específicos do nosso código, vamos dar uma breve pincelada em cada um desses componentes.

Call Stack

CallStack

Primeiramente temos a Pilha de Chamadas ou Call Stack, onde temos todas as Threads sendo executas, além da pilha de funções que foram chamadas nessas Threads. Como temos apenas a função "Main" no nosso código, então só temos ela na pilha, porém se tivessemos colocado o breakpoint em uma função que é chamada por outras, isso seria visível pela Call Stack.

Breakpoints

image

Nessa aba conseguimos verificar todos os breakpoints presente no nosso código, além de que podemos ativar/desativar breakpoints pertence no nosso código, se julgarmos eles necessários ou desnecessários

Variables

image

Como o nome da aba sugere, podemos enxergar todas as variáveis presentes no escopo de uma função, ou seja, todas as variáveis que estejam visíveis dentro de uma função. Toda vez que mudamos de escopo (exemplo.: entramos dentro de uma função, ou de uma função de uma classe), as variáveis que aparecem nessa aba mudam.

Uma coisa que podemos fazer é clicar com o botão direito nessas variáveis e teremos um menu aberto com novas opções, uma delas é adicionar a variável para aba "Watch".

Watch

image

Quando adicionamos uma variável para a aba "Watch" quer dizer que estamos pedindo para o depurador "ficar de olho" em uma variável, e para que toda vez que uma variável for modificada, o código irá parar no ponto em que ela foi modificada e nos mostrar o resultado. Esse comportamento é bem parecido com o breakpoint, só que é como se tivessemos colocado uma condicional para ativar o breakpoint.

Ferramentas para passar pelo código

Agora que estamos familiriazados com todas as abas do depurador, podemos agora realmente começar o processo de depuração. Para prosseguirmos com a depuração, iremos utilizar os botões de ferramentas que podem ser encontrados na parte superior da IDE. Confira as possíveis ferramentas que podem ser utilizadas.

i

Continuar (Continue)

continue

Esse botão irar permitir que o código pule para o próximo breakpoint possível. Como não temos mais nenhum breakpoint nesse código, clicar nesse botão apenas resultará no processo de depuração finalizar.

Passar por cima (Step Over)

step-over

Esse botão irá para a próxima linha, pulando qualquer chamada de função que existir, na nossa situação atual, pular a linha atual significa passar por toda a execução da função somar e pular para a linha de print.

Antes

image

Depois

image

Entrar em (Step Into)

step-into

Esse botão, terá um comportamento bem parecido com o anterior, ele irá para a próxima linha, porém, se a linha atual for a chamada de uma função, o código irá entrar dentro da chamada dessa função. Neste caso então, a depuração irá entrar na função somar, mostrando o passo-a-passo de sua execução.

Antes

image

Depois

image

Sair (Step Out)

step-out

Vamos supor o seguinte cenário, você entra dentro de uma função, você verifica o que você queria verificar nela e agora quer sair dela e continuar a execução fora da função. Para isso que serve o botão Step Out ele termina a execução da função e retorna para a linha onde essa função foi chamada.

Recarregar (Reload)

reload

Como o nome sugere, ele irá recarregar o processo de depuração, retornando para o primeiro breakpoint.

Parar (Stop)

stop

Como o nome sugere, o processo de depuração será encerrado de forma prematura.

Obs.: Você também pode interromper o processo de depuração, se você apertar Ctrl + C no terminal onde a depuração foi iniciada.

Hot replace

Essa função especial do VSCode permite o programador trocar o valor de variáveis em tempo de execução. Basta o programador escolher a variável e então clicar no botão "Hot replace" o depurador irá voltar para o momento da instância da variável e, então, continuar a depuração com o novo valor.

Conclusão

Isso conclui todos os conceitos básicos para a depuração de código dentro do Visual Studio Code, dessa forma vai ficar muito fácil visualizar os seus códigos assim como também encontrar qualquer erro que possa estar acontecendo que gere exceções ou problemas na lógica do código. Sugiro que para mais informações consulte a página oficial da extensão no site do Visual Studio Code.

Documentação oficial

Last updated