Compartilhar via


Tutorial: Saiba como depurar o código do Visual Basic usando o Visual Studio

Este artigo apresenta os recursos do depurador do Visual Studio em um passo a passo. Se você quiser uma exibição de nível superior dos recursos do depurador, consulte Primeiro examinar o depurador. Quando você depura seu aplicativo, isso geralmente significa que você está executando seu aplicativo com o depurador anexado. Quando você faz essa tarefa, o depurador fornece várias maneiras de ver o que seu código está fazendo enquanto ele é executado. Você pode percorrer seu código e examinar os valores armazenados em variáveis, definir relógios em variáveis para ver quando os valores são alterados, examinar o caminho de execução do código, ver se um branch de código está em execução e assim por diante. Se este exercício for a primeira vez que você está tentando depurar código, você pode querer ler depuração para iniciantes absolutos antes de passar por este artigo.

Embora o aplicativo de demonstração seja o Visual Basic, a maioria dos recursos é aplicável a C#, C++, F#, Python, JavaScript e outros idiomas compatíveis com o Visual Studio (F# não dá suporte a Editar e continuar. F# e JavaScript não dão suporte à janela de Autos ). As capturas de tela estão no Visual Basic.

Neste tutorial, você irá:

  • Inicie o depurador e atinja pontos de interrupção.
  • Aprender os comandos para percorrer o código no depurador
  • Inspecionar variáveis em dicas de dados e janelas do depurador
  • Examinar a pilha de chamadas

Pré-requisitos

Você deve ter o Visual Studio 2019 instalado e a carga de trabalho de desenvolvimento multiplataforma do .NET Core .

Se você ainda não instalou o Visual Studio, acesse a página downloads do Visual Studio para instalá-lo gratuitamente.

Se você precisar instalar a carga de trabalho, mas já tiver o Visual Studio, vá para Ferramentas>Obter Ferramentas e Recursos..., que abre o Instalador do Visual Studio. O Visual Studio Installer é iniciado. Escolha a carga de trabalho Desenvolvimento de área de trabalho do .NET e, em seguida, selecione Modificar.

Criar um projeto

Primeiro, você cria um projeto de aplicativo de console do .NET Core. O tipo de projeto vem com todos os arquivos de modelo necessários, antes mesmo de adicionar qualquer coisa!

  1. Abra o Visual Studio. Se a janela inicial não estiver aberta, selecioneJanela Iniciar>.

  2. Na janela inicial, selecione Criar um novo projeto.

  1. Na janela Criar um novo projeto , insira o console na caixa de pesquisa. Em seguida, escolha Visual Basic na lista De idiomas e escolha o Windows na lista plataforma.

    Depois de aplicar os filtros de linguagem e plataforma, escolha o modelo de Aplicativo de Console para .NET Core e selecione Avançar.

    Captura de tela mostrando a janela Criar um novo projeto com 'console' na caixa de pesquisa e 'Visual Basic' e 'Windows' selecionados para os filtros de Linguagem e Plataforma. O modelo de projeto do Aplicativo de Console está selecionado.

    Observação

    Se você não vir o modelo de Aplicativo de Console , poderá instalá-lo na janela Criar um novo projeto . Na mensagem Não encontrar o que você está procurando? Escolha o link Instalar mais ferramentas e recursos . Em seguida, no Instalador do Visual Studio, escolha a carga de trabalho de desenvolvimento da área de trabalho do .NET .

  2. Na janela Configurar seu novo projeto, insira get-started-debugging na caixa Nome do projeto. Em seguida, selecione Avançar.

  3. Na janela Informações adicionais , verifique se o .NET 8.0 está selecionado no menu suspenso da Estrutura e selecione Criar.

O Visual Studio abre seu novo projeto.

Criar o aplicativo

Em Program.vb, substitua todo o código padrão pelo seguinte código:

Imports System

Class ArrayExample
  Public Shared Sub Main()
    Dim letters As Char() = {"f"c, "r"c, "e"c, "d"c, " "c, "s"c, "m"c, "i"c, "t"c, "h"c}
    Dim name As String = ""
    Dim a As Integer() = New Integer(9) {}

    For i As Integer = 0 To letters.Length - 1
      name += letters(i)
      a(i) = i + 1
      SendMessage(name, a(i))
    Next

    Console.ReadKey()
  End Sub

  Private Shared Sub SendMessage(ByVal name As String, ByVal msg As Integer)
    Console.WriteLine("Hello, " & name & "! Count to " & msg)
  End Sub
End Class

Inicie o depurador!

  1. Pressione F5 (Depurar > Iniciar Depuração) ou selecione o botão iniciar depuração verde na barra de ferramentas de depuração.

    Captura de tela mostrando a Barra de Ferramentas de Depuração com o botão de depuração Iniciar verde realçado.

    F5 inicia o aplicativo com o depurador anexado ao processo, mas no momento não tomamos medidas especiais para examinar o código. Portanto, o aplicativo apenas carrega e você vê a saída do console.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    

    Neste tutorial, você examinará melhor este aplicativo usando o depurador e verá os recursos do depurador.

  2. Interrompa o depurador pressionando (Shift + F5) ou selecione o botão Parar Depuração vermelho na Barra de Ferramentas de Depuração.

    Captura de tela mostrando a Barra de Ferramentas de Depuração com o botão vermelho Parar Depuração realçado.

  3. Na janela do console, pressione uma tecla para fechar a janela do console.

Definir um ponto de interrupção e iniciar o depurador

  1. For No loop da Main função, defina um ponto de interrupção clicando na margem esquerda na seguinte linha de código:

    name += letters(i)

    Um círculo vermelho é exibido onde você define o ponto de interrupção.

    Pontos de interrupção são um dos recursos mais básicos e essenciais de uma depuração confiável. Um ponto de interrupção indica onde o Visual Studio deve suspender o código em execução para que você possa dar uma olhada nos valores das variáveis ou no comportamento da memória ou se um branch de código está sendo executado ou não.

  2. Pressione F5 (Depurar > Iniciar Depuração) ou o botão Iniciar Depuração na Barra de Ferramentas de Depuração, o aplicativo é iniciado e o depurador é executado até a linha de código em que você define o ponto de interrupção.

    Captura de tela mostrando a janela do editor do Visual Studio Code com a execução interrompida em um ponto de interrupção.

    A seta amarela representa a instrução na qual o depurador fez uma pausa, que também suspende a execução do aplicativo no mesmo ponto (essa instrução ainda não foi executada).

    Se o aplicativo ainda não estiver em execução, F5 iniciará o depurador e para no primeiro ponto de interrupção. Caso contrário, F5 continua executando o aplicativo até o próximo ponto de parada.

    Pontos de interrupção são um recurso útil quando você conhece a linha de código ou a seção de código que deseja examinar em detalhes. Para obter informações sobre os diferentes tipos de pontos de interrupção que você pode definir, como pontos de interrupção condicionais, consulte Usando pontos de interrupção.

Neste artigo, usamos os atalhos de teclado, pois é uma boa maneira de obter rapidez na execução do aplicativo no depurador (comandos equivalentes, como comandos de menu, são mostrados entre parênteses).

  1. Enquanto a execução de código é pausada no loop do método For, pressione Main (ou escolha ) duas vezes para avançar até a chamada do método >.

    Depois de pressionar F11 duas vezes, você deve estar nessa linha de código:

    SendMessage(name, a(i))

  2. Pressione F11 mais uma vez para entrar no SendMessage método.

    O ponteiro amarelo avança para o SendMessage método.

    Captura de tela mostrando uma sessão de depuração no editor do Visual Studio Code com a execução pausada após entrar no método 'SendMessage'.

    F11 é o comando Step Into e avança a execução do aplicativo uma instrução de cada vez. F11 é uma boa maneira de examinar o fluxo de execução com mais detalhes. (Para mover-se mais rapidamente por meio do código, mostramos algumas outras opções também.) Por padrão, o depurador ignora o código nonuser (se você quiser mais detalhes, consulte Just My Code).

    Digamos que você terminou de examinar o método SendMessage e deseja sair do método, mas permanecer no depurador. Você pode fazer isso usando o comando Step Out .

  3. Pressione Shift + F11 (ou Depurar > Passo para Fora).

    Esse comando retoma a execução do aplicativo (e avança o depurador) até que o método ou função atual retorne.

    Você deve voltar para o loop For no método Main, pausado na chamada do método SendMessage.

  4. Pressione F11 várias vezes até voltar à chamada de SendMessage método novamente.

  5. Enquanto a execução do código estiver pausada na chamada de método, pressione F10 (ou escolha Depurar > Avançar) apenas uma vez.

    Captura de tela mostrando uma sessão de depuração no editor do Visual Studio Code com a execução pausada depois de passar por cima da chamada do método 'SendMessage'.

    Observe neste momento que o depurador não intervém no método SendMessage. F10 avança o depurador sem entrar em funções ou métodos no código da aplicação (o código ainda é executado). Pressionando F10 na chamada de SendMessage método (em vez de F11), pulamos o código de implementação para SendMessage (no qual talvez não estejamos interessados no momento). Para obter mais informações sobre diferentes maneiras de percorrer seu código, consulte Navegar código no depurador.

  1. Pressione F5 para avançar para o ponto de interrupção novamente.

  2. No editor de código, desça a tela e passe o mouse sobre o método Console.WriteLine dentro do método SendMessage até que o botão verde Executar ao Clicar apareça. A dica de ferramenta do botão mostra "Executar até aqui".

    Captura de tela mostrando o botão Executar ao Clicar com a dica de ferramenta destacada no lado esquerdo da janela do editor de código.

  3. Selecione o botão Executar para Clicar .

    O depurador avança para o Console.WriteLine método.

    Usar esse botão é semelhante à configuração de um ponto de interrupção temporário. Executar para Clicar é útil para se locomover rapidamente em uma região visível do código do aplicativo (você pode selecionar em qualquer arquivo aberto).

Reinicie seu aplicativo rapidamente

Para reiniciar o aplicativo, pressione a combinação de teclas Ctrl + Shift + F5 , ela economiza tempo em vez de parar o aplicativo e reiniciar o depurador. O depurador pausa no primeiro ponto de interrupção alcançado durante a execução do código.

O depurador para novamente no ponto de interrupção que você definiu anteriormente dentro do For loop.

Inspecionar variáveis com dicas de dados

Os recursos que permitem inspecionar variáveis são um dos recursos mais úteis do depurador e há diferentes maneiras de fazer isso. Muitas vezes, ao tentar depurar um problema, você está tentando descobrir se as variáveis estão armazenando os valores que você espera que eles tenham em um determinado momento.

  1. Enquanto a name += letters[i] execução de código é pausada na instrução, passe o mouse sobre a letters variável e você verá seu valor padrão, o valor do primeiro elemento na matriz "f"c.

  2. Em seguida, passe o mouse sobre a name variável e você verá seu valor atual, uma cadeia de caracteres vazia.

  3. Pressione F5 (ou Depurar>Continuar) algumas vezes para iterar várias vezes pelo For loop, pausando novamente no ponto de interrupção e passando o mouse sobre a name variável cada vez para verificar seu valor.

    Captura de tela mostrando a execução de depuração interrompida no editor de código com a variável de nome realçada e uma dica de dados mostrando o valor.

    O valor da variável muda com cada iteração do For loop, mostrando valores de f, em seguida fr, e freassim por diante.

    Muitas vezes, ao depurar, você deseja uma maneira rápida de verificar valores de propriedade em variáveis, para ver se eles estão armazenando os valores que você espera que eles armazenem e as dicas de dados são uma boa maneira de fazer isso.

Inspecionar variáveis com as janelas Autos e Locais

  1. Examine a janela Autos na parte inferior do editor de código.

    Se estiver fechado, abra-o enquanto a execução do código é pausada no depurador escolhendo Depurar>Windows>Autos.

    Na janela Autos , você verá variáveis e seu valor atual. A janela Autos mostra todas as variáveis usadas na linha atual ou na linha anterior (verifique a documentação do comportamento específico do idioma).

  2. Em seguida, examine a janela Locais , em uma guia ao lado da janela Autos .

  3. Expanda a letters variável para mostrar os elementos que ela contém.

    Captura de tela mostrando a janela Locals com a variável 'letters' expandida para mostrar o valor e o tipo dos elementos que ele contém.

    A janela Locals mostra as variáveis que estão no escopo atual, ou seja, o contexto de execução atual.

Definir uma inspeção

Você pode especificar uma variável ou expressão que deseja monitorar ao depurar o código, adicionando-a à janela Watch.

  1. Enquanto o depurador está pausado, clique com o botão direito do mouse na variável name e escolha Adicionar Monitoramento.

    A janela Watch é aberta por padrão na parte inferior do editor de código.

  2. Agora que você definiu um relógio na variável, percorra seu name código para ver o valor da alteração da name variável com cada for iteração de loop.

    Ao contrário das outras janelas variáveis, a janela Inspeção sempre mostra as variáveis que você está observando. Variáveis fora do escopo são exibidas como indisponíveis.

Para obter mais informações sobre a janela Observação, consulte Variáveis de observação com janelas de observação.

Examinar a pilha de chamadas

  1. Enquanto a For execução do código está pausada no loop, selecione a janela Pilha de Chamadas, que é aberta por padrão no painel inferior direito.

    Se estiver fechado, abra-o enquanto a execução do código é pausada no depurador escolhendo Depurar> aPilha de Chamadas do>.

  2. No método , selecione SendMessage algumas vezes até ver o depurador pausar. Olhe para a janela pilha de chamadas.

    Captura de tela mostrando a janela Pilha de Chamadas do Visual Studio com uma chamada de método SendMessage realçada na linha superior.

    A janela Pilha de Chamadas mostra a ordem em que os métodos e as funções são chamados. A linha superior mostra a função atual (o SendMessage método neste aplicativo). A segunda linha mostra que SendMessage foi chamado pelo método Main e assim por diante.

    Observação

    A janela Pilha de Chamadas é semelhante à perspectiva de Depuração em alguns IDEs, como o Eclipse.

    A pilha de chamadas é uma boa maneira de examinar e entender o fluxo de execução de um aplicativo.

    Você pode clicar duas vezes em uma linha de código para examinar esse código-fonte e isso também altera o escopo atual em inspeção pelo depurador. Essa ação não avança o depurador.

    Você também pode usar os menus acessados ao clicar com o botão direito do mouse na janela Pilha de Chamadas para fazer outras coisas. Por exemplo, você pode inserir pontos de interrupção em funções especificadas, avançar o depurador usando Executar para Cursor e examinar o código-fonte. Para obter mais informações, consulte Como examinar a pilha de chamadas.

Alterar o fluxo de execução

  1. Pressione F11 duas vezes para executar o Console.WriteLine método.

  2. Com o depurador pausado na chamada do método SendMessage, pegue com o mouse a seta amarela ou o ponteiro de execução (na margem esquerda) e arraste o ponteiro uma linha para cima até a instrução Console.WriteLine.

  3. Pressione F11.

    O depurador executa novamente o Console.WriteLine método (você vê essa ação na saída da janela do console).

    Ao alterar o fluxo de execução, você pode fazer coisas como testar caminhos de execução de código diferentes ou executar código novamente sem reiniciar o depurador.

    Aviso

    Freqüentemente, você precisa ter cuidado com esse recurso e vê um aviso no tooltip. Você também pode ver outros avisos. Mover o ponteiro não pode reverter seu aplicativo para um estado de aplicativo anterior.

  4. Pressione F5 para continuar executando o aplicativo.

    Parabéns por concluir este tutorial!

Próximas etapas

Neste tutorial, você aprendeu a iniciar o depurador, percorrer o código e inspecionar variáveis. Talvez você queira obter uma visão de alto nível dos recursos do depurador, juntamente com links para mais informações.