Depuração com XamarinDebugging with Xamarin

O Visual Studio para Mac tem um depurador nativo para dar suporte à depuração de aplicativos Xamarin.iOS, Xamarin.Mac e Xamarin.Android.Visual Studio for Mac has a native debugger allowing debugging support for Xamarin.iOS, Xamarin.Mac, and Xamarin.Android applications.

O Visual Studio para Mac usa o Mono Soft Debugger, que foi implementado no tempo de execução Mono, permitindo que o Visual Studio para Mac depure código gerenciado em todas as plataformas.Visual Studio for Mac uses the Mono Soft Debugger, which is implemented into the Mono runtime, allowing Visual Studio for Mac to debug managed code across all platforms.

O depuradorThe Debugger

O Visual Studio para Mac usa o Mono Soft Debugger para depurar código gerenciado (C# ou F#) em todos os aplicativos Xamarin.Visual Studio for Mac uses the Mono Soft Debugger to debug managed (C# or F#) code in all Xamarin applications. O depurador Mono Soft é diferente de depuradores comuns, pois ele é um depurador cooperativo interno do tempo de execução Mono; o código gerado e o tempo de execução Mono operam junto com o IDE para fornecer uma experiência de depuração.The Mono Soft debugger is different from regular debuggers in that it is a co-operative debugger that is built into the Mono runtime; the generated code and Mono runtime co-operate with the IDE to provide a debugging experience. O tempo de execução 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.The Mono runtime exposes the debugging functionality through a wire protocol, which you can read more about in the Mono documentation.

Depuradores inflexíveis, como o LLDB ou o GDB, controlam um programa sem o conhecimento ou a cooperação do programa depurado, mas ainda podem ser úteis ao depurar aplicativos Xamarin caso você precise depurar código Android ou iOS nativo.Hard debuggers, such as LLDB or GDB, control a program without the knowledge or cooperation from the debugged program, but can still be useful when debugging Xamarin applications in the event that you need to debug native iOS or Android code.

Usando o depuradorUsing the debugger

Para iniciar a depuração de qualquer aplicativo, sempre verifique se a configuração está definida como Depurar.To start debugging any application, always ensure that the configuration is set to Debug. 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:The debug configuration provides a helpful set of tools to support debugging, such as breakpoints, using data visualizers, and viewing the call stack:

Configuração de depuração

Configurando um ponto de interrupçãoSetting a breakpoint

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:To set a breakpoint in your IDE, click on the margin area of your editor, next to the line number of the code where you wish to break:

Configurando o ponto de interrupção na margem

Você pode exibir todos os pontos de interrupção definidos em seu código indo para o painel de Pontos de Interrupção:You can view all the breakpoints that have been set in your code by going to the Breakpoints pad:

Lista de pontos de interrupção

Iniciar a depuraçãoStart debugging

Para iniciar a depuração, selecione o dispositivo de destino ou um dispositivo semelhante/emulador no IDE:To start debugging, select the target device or similar/emulator in your IDE:

Selecione o dispositivo de destino

Em seguida, implante seu aplicativo pressionando o botão Executar ou Cmd + Enter.Then deploy your application by pressing the Play button, or Cmd + return. Quando você atingir um ponto de interrupção, o código será realçado em amarelo:When you hit a breakpoint, the code will be highlighted yellow:

Realce que mostra que o ponto de interrupção foi atingido

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:Debugging tools, such as the one used to inspect the values of objects, can be used at this point to get more information about what is happening in your code:

Visualizações de depuração

Pontos de interrupção condicionaisConditional breakpoints

Você também pode definir as regras que regem as circunstâncias nas quais um ponto de interrupção deverá ocorrer, o que é conhecido como adicionar um ponto de interrupção condicional.You can also set rules dictating the circumstances under which a breakpoint should occur, this is known as adding a conditional breakpoint. 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:To set a conditional breakpoint, access the Breakpoint Properties window, which can be done in two ways:

  • 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:To add a new conditional breakpoint, right-click on the editor margin, to the left of the line number for the code you wish to set a breakpoint on, and select New Breakpoint:

Menu de contexto do ponto de interrupção

  • 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 Painel de pontos de interrupção, selecione o botão Editar ponto de interrupção ilustrado abaixo:To add a condition to an existing breakpoint, right-click on the breakpoint and select Breakpoint Properties, or, in the Breakpoints Pad, select the Edit Breakpoint button illustrated below:

Editar o ponto de interrupção existente no painel de pontos de interrupção

Você poderá então inserir a condição na qual você deseja que o ponto de interrupção ocorra:You can then enter the condition under which you want the breakpoint to occur:

Editar condições de ponto de interrupção

Executando o código em etapasStepping through code

Quando um ponto de interrupção for atingido, as Ferramentas de depuração permitirão assumir o controle da execução do programa.When a breakpoint has been reached, the Debug tools enable you to get control over the program's execution. O Visual Studio para Mac exibirá quatro botões, permitindo que você execute e percorra o código.Visual Studio for Mac will display four buttons, allowing you to run and step through the code. No Visual Studio para Mac, eles terão a seguinte aparência:In Visual Studio for Mac, they will look like the following:

Botões para percorrer o código

Esses são os quatro botões:Here are the four buttons:

  • Executar – Inicia a execução do código até o próximo ponto de interrupção.Play - This will begin executing the code, until the next breakpoint.
  • Sobrepor – Executa a próxima linha de código.Step Over - This will execute the next line of code. 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.If the next line is a function call, Step Over will execute the function, and will stop at the next line of code after the function.
  • Intervir – Também executa a próxima linha de código.Step Into - This will also execute the next line of code. 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.If the next line is a function call, Step Into will stop at the first line of the function, allowing you to continue line-by-line debugging of the function. Se a próxima linha não for uma função, ela se comportará como Passar.If the next line is not a function, it will behave the same as Step Over.
  • Sair – Retorna para a linha na qual a função atual foi chamada.Step Out - This will return to the line where the current function was called.

Depuração de bibliotecas de classes MonoDebugging Mono's class libraries

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.Xamarin products ship with the source code for Mono's class libraries, and you can use this to single step from the debugger to inspect how things are working under the hood.

Como esse recurso consome mais memória durante a depuração, ele fica desligado por padrão.Since this feature consumes more memory during debugging, it is turned off by default.

Para habilitar esse recurso, navegue para Visual Studio para Mac > Preferências > Depurador e verifique se a opção “Depurar somente o código do projeto, não intervir no código da estrutura.To enable this feature, browse to Visual Studio for Mac > Preferences > Debugger and ensure that the "Debug project code only; do not step into framework code." está desmarcada, como ilustrado abaixo:option is unselected, as illustrated below:

Opção Não intervir no código da estrutura

Consulte tambémSee also