Depuração com Visual Studio para Mac

Importante

O Visual Studio para Mac está programado para ser desativado em 31 de agosto de 2024, de acordo com a Política de Ciclo de Vida Moderna da Microsoft. Embora você possa continuar a trabalhar com o Visual Studio para Mac, há várias outras opções para desenvolvedores no Mac, como a versão prévia da nova extensão do Kit de Desenvolvimento em C# para VS Code.

Saiba mais sobre cronogramas e alternativas de suporte.

Visual Studio para Mac tem depuradores com suporte para aplicativos .NET Core, .NET Framework, Unity e Xamarin.

O Visual Studio para Mac usa o Mono Soft Debugger, que foi implementado no runtime Mono, permitindo que o Visual Studio para Mac depure código gerenciado em todas as plataformas.

O depurador

O Visual Studio para Mac usa o Mono Soft Debugger para depurar código gerenciado (C# ou F#) em todos os aplicativos Xamarin. O depurador Mono Soft é diferente dos depuradores regulares, pois é um depurador cooperativo integrado ao tempo de execução do Mono; o código gerado e o tempo de execução Mono cooperam com o IDE para fornecer uma experiência de depuração. O runtime Mono expõe a funcionalidade de depuração por meio de um protocolo de transmissão, sobre o qual você pode conhecer mais na documentação do Mono.

Depuradores rígidos, como LLDB ou GDB, controlam um programa sem o conhecimento ou a cooperação do programa depurado. Ele ainda poderá ser útil ao depurar aplicativos Xamarin se você precisar depurar o código nativo do iOS ou do Android.

Para aplicativos .NET Core e ASP.NET Core, Visual Studio para Mac usa o depurador do .NET Core. Esse depurador também é um depurador cooperativo e funciona com o runtime do .NET.

Usando o depurador

Para iniciar a depuração de qualquer aplicativo, sempre verifique se a configuração está definida como Depurar. A configuração de depuração fornece um conjunto de ferramentas útil para dar suporte à depuração, como pontos de interrupção, uso de visualizadores de dados e exibição da pilha de chamadas:

Debug configuration

Definindo um ponto de interrupção

Para definir um ponto de interrupção no IDE, clique na área de margem do editor ao lado do número de linha do código que você deseja interromper:

Setting breakpoint in margin

Você pode exibir todos os pontos de interrupção definidos em seu código indo para a Janela de Pontos de Interrupção:

List of breakpoints

Iniciar a depuração

Para iniciar a depuração, selecione o navegador, dispositivo ou simulador/emulador de destino:

Debug configurationSelect target device

Em seguida, implante seu aplicativo pressionando o botão Executar ou Cmd + Enter. Quando você atingir um ponto de interrupção, o código será realçado em amarelo:

Highlight showing breakpoint has been hit

Ferramentas de depuração, como aquela usada para inspecionar os valores de objetos, podem ser usadas neste ponto para obter mais informações sobre o que está acontecendo em seu código:

Debug visualizations

Pontos de interrupção condicionais

Você também pode definir regras para determinar as circunstâncias sob as quais um ponto de interrupção deve ocorrer. Isso é conhecido como adicionar um ponto de interrupção condicional. Para definir um ponto de interrupção condicional, acesse a janela Propriedades do Ponto de Interrupção, o que pode ser feito de duas maneiras:

  • Para adicionar um novo ponto de interrupção condicional, clique com o botão direito do mouse na margem do editor, à esquerda do número de linha para o código para o qual deseja definir um ponto de interrupção e selecione o novo ponto de interrupção:

Breakpoint context menu

  • Para adicionar uma condição a um ponto de interrupção existente, clique com o botão direito do mouse no ponto de interrupção e selecione Propriedades de ponto de interrupção ou, no Janela de pontos de interrupção, selecione o botão Editar ponto de interrupção ilustrado abaixo:

Edit existing Breakpoint in Breakpoints Window

Você poderá então inserir a condição na qual você deseja que o ponto de interrupção ocorra:

Edit Breakpoint conditions

Executando o código em etapas

Quando um ponto de interrupção for atingido, as Ferramentas de depuração permitirão assumir o controle da execução do programa. O Visual Studio para Mac exibirá quatro botões, permitindo que você execute e percorra o código. Em Visual Studio para Mac, ele terá a seguinte aparência:

Buttons to step through code

Esses são os quatro botões:

  • Executar – Inicia a execução do código até o próximo ponto de interrupção.
  • Sobrepor – Executa a próxima linha de código. Se a próxima linha for uma chamada de função, Sobrepor executará a função e parará na próxima linha de código depois da função.
  • Intervir – Também executa a próxima linha de código. Se a próxima linha é uma chamada de função, Intervir parará na primeira linha da função, permitindo que você continue a depuração da função linha a linha. Se a próxima linha não for uma função, ela se comportará como Passar.
  • Sair – Retorna para a linha na qual a função atual foi chamada.

Alterar qual instrução é executada em seguida

Enquanto o depurador está em pausa, uma seta na margem mostra qual linha de código será executada em seguida. Você pode selecionar e arrastar a seta para outra linha de código para alterar a instrução que será executada. Também é possível fazer isso ao clicar com o botão direito do mouse em uma linha de código e selecionar Definir Próxima Instrução no menu de contexto.

Drag and drop arrow to set next statement

Cuidado

Alterar a linha de execução atual pode causar um comportamento inesperado em um aplicativo. Também há algumas condições em que não é possível alterar a próxima instrução a ser executada. Por exemplo, arrastar a seta de um método para outro não funcionará. Nesses casos sem suporte, Visual Studio para Mac exibirá uma caixa de diálogo para informar que não foi possível alterar a linha de execução atual.

Depuração de bibliotecas de classes Mono

Os produtos Xamarin são fornecidos com o código-fonte para bibliotecas de classes Mono e você pode usar essa etapa única do depurador para inspecionar como tudo está funcionando nos bastidores.

Como esse recurso consome mais memória durante a depuração, ele fica desligado por padrão.

Para habilitar esse recurso, navegue até Visual Studio para Mac > Preferências > Depurador e verifique se a opção "Intervir no código externo" está selecionada, conforme ilustrado abaixo:

Step into external code option

Confira também