Partilhar via


Depurar em tempo de conceção no Visual Studio (C#, C++/CLI, Visual Basic, F#)

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

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

Use a janela Imediata

Você pode usar a janela do Visual Studio Immediate para executar uma função ou sub-rotina sem executar seu aplicativo. Se a função ou sub-rotina contiver um ponto de interrupção, o Visual Studio irá parar nesse ponto. Em seguida, você pode usar as janelas do depurador para examinar o estado do programa. Esse recurso é chamado depuração durante o design. Para obter informações detalhadas, veja Utilize a janela Immediate

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

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

    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 End Function.

  3. Abra a janela Immediate selecionando Depurar>Windows>Imediato. Digite ?MyFunction na janela e pressione Enter.

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

  4. Selecione Continuar na barra de ferramentas do Visual Studio. O aplicativo termina e 1 é retornado na janela Immediate . Certifique-se de que ainda está no modo de design.

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

  6. Sem selecionar Continuar, digite ?MySub() na janela Immediate e pressione Enter. O ponto de interrupção é atingido e o valor de MyFunction na janela Locals é 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 novamente e o valor de MyFunction na janela Locals agora é 2. A janela Immediate retorna Expression foi avaliada e não tem valor.

  8. Selecione Continuar novamente. O aplicativo termina e 2 é retornado na janela Immediate . Certifique-se de que ainda está no modo de design.

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

Depurar um controlo XAML personalizado em tempo de conceção ligando 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.

    Para projetos UWP destinados a compilações do Windows 16299 ou superior, esta etapa iniciará o processoUwpSurface.exe. Para projetos WPF destinados ao Windows build 16299 ou superior, esta etapa iniciará o processo WpfSurface.exe. Para versões do WPF ou UWP anteriores à compilação 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 em 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 projeto (consulte as etapas anteriores), selecione o processoUwpSurface.exe, WpfSurface.exeou XDesProc.exe na lista de processos disponíveis.

  7. No campo Anexar a 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 Gerenciado (CoreCLR). Se seu 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 fechada 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.