Depurar em tempo de design no Visual Studio (C#, C++/CLI, Visual Basic, F#)

Para depurar o código em tempo de design em vez de enquanto o aplicativo está em execução, você pode usar a janela Imediata.

Para depurar o código XAML por trás de um aplicativo do designer XAML, como cenários de associação de dados declarativos, você pode usar Depuração>Anexar ao Processo.

Usar a janela Imediata

Você pode usar a janela Imediata do Visual Studio para executar uma função ou sub-rotina sem executar seu aplicativo. Se a função ou a sub-rotina contiverem um ponto de interrupção, o Visual Studio interromperá a execução no ponto apropriado. Então, você poderá usar o depurador do Windows para examinar o estado do programa. Esse recurso é chamado de depuração em tempo de design.

O exemplo a seguir está no Visual Basic. Você também pode usar a janela Imediata em tempo de design em C#, F# e aplicativos C++/CLI. Em C++/CLI, faça a compilação sem a opção /clr para usar a janela Imediata.

  1. Cole o seguinte código em um aplicativo em branco do console do Visual Basic:

    Module Module1
    
        Sub Main()
            MySub()
        End Sub
    
        Function MyFunction() As Decimal
            Static i As Integer
            i = i + 1
            Return i
        End Function
    
        Sub MySub()
            MyFunction()
    
        End Sub
    End Module
    
  2. Defina um ponto de interrupção na linha Função End.

  3. Abra a janela Imediata selecionando Depurar>WIndows>Imediata. Digite ?MyFunction na janela e pressione Enter.

    O ponto de interrupção é atingido e o valor de MyFunction na janela Locais é 1. Você pode examinar a pilha de chamadas e outras janelas de depuração enquanto o aplicativo está no modo de interrupção.

  4. Selecione Continuar na barra de ferramentas do Visual Studio. O aplicativo termina e 1 é retornado na janela Imediata. Verifique se você ainda está no modo de design.

  5. Digite ?MyFunction na janela Imediata novamente e pressione Enter. O ponto de interrupção é atingido e o valor de MyFunction na janela Locais é 2.

  6. Sem selecionar Continuar, digite ?MySub() na janela Imediata e pressione Enter. O ponto de interrupção é atingido e o valor de MyFunction na janela Locais é 3. Você pode examinar o estado do aplicativo enquanto o aplicativo está no modo de interrupção.

  7. Selecione Continuar. O ponto de interrupção é atingido e o valor de MyFunction na janela Locais agora é 2. A janela Imediata retorna A expressão foi avaliada e não possui nenhum valor.

  8. Selecione Continuar novamente. O aplicativo termina e 2 é retornado na janela Imediata. Verifique se você ainda está no modo de design.

  9. Para limpar o conteúdo da janela Imediata, clique com o botão direito do mouse na janela e selecione Limpar Tudo.

Depurar um controle XAML personalizado em tempo de design anexando ao designer XAML

  1. Abra sua solução ou projeto no Visual Studio.

  2. Crie a solução/projeto.

  3. Abra a página XAML que contém o controle personalizado que você deseja depurar.

    Nos projetos UWP direcionados á build 16299 do Windows ou superior, essa etapa iniciará o processo UwpSurface.exe. Nos projetos UWP direcionados á build 16299 do Windows ou superior, essa etapa iniciará o processo UwpSurface.exe. Nas versões WPF ou UWP anteriores á build 16299 do Windows, esta etapa iniciará o processo XDesProc.exe.

  4. Abra uma segunda instância do Visual Studio. Não abra uma solução ou projeto na segunda instância.

  5. Na segunda instância do Visual Studio, abra o menu Depurar e escolha Anexar ao Processo....

  6. Dependendo do tipo de seu projeto (consulte as etapas anteriores), selecione o processo UwpSurface.exe, WpfSurface.exeou XDesProc.exe na lista de processos disponíveis.

  7. No campo Anexar ao da caixa de diálogo Anexar ao Processo, escolha o tipo de código correto para o controle personalizado que você deseja depurar.

    Se seu controle personalizado tiver sido escrito em uma linguagem .NET, escolha o tipo de código .NET apropriado, como o Gerenciado (CoreCLR). Se o controle personalizado tiver sido escrito em C++, escolha Nativo.

  8. Anexe a segunda instância do Visual Studio clicando no botão Anexar.

  9. Na segunda instância do Visual Studio, abra os arquivos de código associados ao controle personalizado que você deseja depurar. Certifique-se de apenas abrir os arquivos, não toda a solução ou projeto.

  10. Coloque os pontos de interrupção necessários nos arquivos abertos anteriormente.

  11. Na primeira instância do Visual Studio, feche a página XAML que contém o controle personalizado que você deseja depurar (a mesma página que você abriu nas etapas anteriores).

  12. Na primeira instância do Visual Studio, abra a página XAML que você fechou na etapa anterior. Isso fará com que o depurador pare no primeiro ponto de interrupção definido na segunda instância do Visual Studio.

  13. Depure o código na segunda instância do Visual Studio.