Partilhar via


Depurar vários processos (C#, Visual Basic, C++)

Visual Studio pode depurar uma solução que tem vários processos. Você pode iniciar e alternar entre processos, interromper, continuar e percorrer a origem, parar a depuração e terminar ou desanexar de processos individuais.

Comece a depuração com vários processos

Quando mais de um projeto em uma solução do Visual Studio pode ser executado independentemente, você pode selecionar qual projeto o depurador inicia. O projeto de inicialização atual aparece em negrito no Gerenciador de Soluções.

Para alterar o projeto de inicialização, no Gerenciador de Soluções, clique com o botão direito do mouse em um projeto diferente e selecione Definir como Projeto de Inicialização.

Para começar a depurar um projeto a partir do Gerenciador de Soluções sem torná-lo o projeto de inicialização, clique com o botão direito do mouse no projeto e selecione Depurar>Iniciar nova instância ou Entrar em nova instância.

Para definir o projeto de inicialização ou vários projetos a partir das Propriedades da solução:

  1. Selecione a solução no Gerenciador de Soluções e, em seguida, selecione o ícone Propriedades na barra de ferramentas ou clique com o botão direito do mouse na solução e selecione Propriedades.

  2. Na página Propriedades, selecione Propriedades Comuns>Projeto de arranque.

    Alterando o tipo de inicialização de um projeto

  3. Selecione Seleção atual, Projeto de inicialização único e um arquivo de projeto ou Vários projetos de inicialização.

    Se você selecionar Vários projetos de inicialização, poderá alterar a ordem de inicialização e a ação a ser tomada para cada projeto: Iniciar, Iniciar sem depuração ou Nenhum.

  4. Selecione Aplicar ou OK para aplicar e fechar a caixa de diálogo.

Anexar a um processo

O depurador também pode se conectar a aplicativos em execução em processos fora do Visual Studio, inclusive em dispositivos remotos. Depois de anexares a uma aplicação, podes usar o depurador do Visual Studio. Os recursos de depuração podem ser limitados. Depende se o aplicativo foi criado com informações de depuração, se você tem acesso ao código-fonte do aplicativo e se o compilador JIT está rastreando informações de depuração.

Para obter mais informações, consulte Anexar a processos em execução.

Para anexar a um processo em execução:

  1. Com o aplicativo em execução, selecione Depurar>anexar ao processo.

    Caixa de diálogo Anexar ao Processo

  2. Na caixa de diálogo Anexar ao Processo , selecione o processo na lista Processos Disponíveis e selecione Anexar.

Observação

O depurador não se liga automaticamente a um processo secundário que é iniciado por um processo depurado, mesmo que o projeto secundário esteja nessa mesma solução. Para depurar um processo filho, anexe ao processo filho depois de ser iniciado ou configure o Editor de Registo do Windows para iniciar o processo filho numa nova instância de depuração.

Use o Editor do Registro para iniciar automaticamente um processo no depurador

Às vezes, talvez seja necessário depurar o código de inicialização de um aplicativo iniciado por outro processo. Os exemplos incluem serviços e ações de configuração personalizadas. Você pode fazer com que o depurador inicie e se ligue automaticamente ao aplicativo.

  1. Inicie o Editor do Registro do Windows executando regedit.exe.

  2. No Editor do Registro, navegue até HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.

  3. Selecione a pasta do aplicativo que você deseja iniciar no depurador.

    Se o aplicativo não estiver listado como uma pasta filha, clique com o botão direito do mouse em Opções de Execução de Arquivo de Imagem, selecione Nova>Chave e digite o nome do aplicativo. Em alternativa, clique com o botão direito do rato na nova chave na árvore, selecione Mudar o nome e, em seguida, introduza o nome da aplicação.

  4. Clique com o botão direito do mouse na nova chave na árvore e selecione Novo>valor da cadeia de caracteres.

  5. Altere o nome do novo valor de Novo Valor #1 para debugger.

  6. Clique com o botão direito do mouse no depurador e selecione Modificar.

    Caixa de diálogo Editar Cadeia de Caracteres

  7. Na caixa de diálogo Editar Cadeia de Caracteres, digite vsjitdebugger.exe a caixa Dados do valor e selecione OK.

    Entrada de início do depurador automático no regedit.exe

Depurar com vários processos

Ao depurar uma aplicação com vários processos, os comandos de interrupção, passagem e continuação do depurador afetam todos os processos por padrão. Por exemplo, quando um processo é suspenso em um ponto de interrupção, a execução de todos os outros processos também é suspensa. Você pode alterar esse comportamento padrão, para obter mais controle sobre os destinos dos comandos de execução.

Para alterar se todos os processos são suspensos quando um processo é interrompido:

  1. No painel Ferramentas (ou Depuração>) Opções, expanda a seção Todas as Definições>Depuração>Geral.
  1. Na caixa de diálogo Ferramentas (ou Depuração) >Opções, expanda a seção Depuração>Geral.
  1. Marque ou desmarque a caixa de seleção Interromper todos os processos quando um processo falhar.

Comandos Interromper, Avançar, Continuar

A tabela a seguir descreve os comportamentos dos comandos de depuração quando a caixa de seleção Interromper todos os processos quando um processo é interrompido está marcada ou desmarcada:

Comando Selecionados Desmarcado
Depurar>Interromper tudo Todos os processos falham. Todos os processos falham.
Depurar>Continuar Todos os processos são retomados. Todos os processos suspensos são retomados.
Depurar>Entrar, Passar ouSair Todos os processos são executados durante as etapas atuais do processo.
Em seguida, todos os processos são interrompidos.
Etapas atuais do processo.
Os processos suspensos são retomados.
Os processos em execução continuam.
Depurar>Entre no processo atual, passe sobre o processo atual ou saia do processo atual N/A Etapas atuais do processo.
Outros processos mantêm o seu estado existente (suspenso ou em execução).
Ponto de interrupção da janela de origem Todos os processos falham. Apenas o processo da janela de origem é interrompido.
Janela de origem Executar para o cursor
A janela de origem deve estar no processo atual.
Todos os processos são executados enquanto o processo da janela de origem é executado até o cursor e então interrompe.
Em seguida, todos os outros processos são interrompidos.
O processo da janela de origem é executado até o cursor.
Outros processos mantêm o seu estado existente (suspenso ou em execução).
Janela de Processos>Quebrar Processo N/A Rupturas de processo selecionadas.
Outros processos mantêm o seu estado existente (suspenso ou em execução).
Processos>Janela Continuar Processo N/A Retomada dos processos selecionados.
Outros processos mantêm o seu estado existente (suspenso ou em execução).

Localizar os arquivos de origem e símbolo (.pdb)

Para navegar no código-fonte de um processo, o depurador precisa ter acesso aos seus arquivos de origem e arquivos de símbolo. Para obter mais informações, consulte Especificar símbolo (.pdb) e arquivos de origem.

Se não conseguir aceder aos ficheiros de um processo, pode navegar utilizando a janela Desmontagem . Para obter mais informações, consulte Como usar a janela Desmontagem.

Alternar entre processos

Você pode conectar-se a vários processos quando estiver depurando, mas apenas um processo está ativo no depurador num determinado momento. Você pode definir o processo ativo ou atual na barra de ferramentas Local de Depuração ou na janela Processos . Para alternar entre processos, ambos os processos devem estar em modo de interrupção.

Para definir o processo atual a partir da barra de ferramentas de Local de Depuração:

  1. Para abrir a barra de ferramentas Local de Depuração, selecione Ver>Barras de Ferramentas>Local de Depuração.

  2. Durante a depuração, na barra de ferramentas Local de Depuração, selecione o processo que deseja definir como o processo atual no menu suspenso Processo.

    Alternar entre processos

Para definir o processo atual na janela Processos:

  1. Para abrir a janela Processos, durante a depuração, selecione Depurar>Processos do Windows>.

  2. Na janela Processos , o processo atual é marcado por uma seta amarela. Clique duas vezes no processo que você deseja definir como o processo atual.

    Janela de Processos

Trocar para um processo define-o como o processo atual para fins de depuração. As janelas do depurador mostram o estado do processo atual e os comandos de revisão afetam apenas o processo atual.

Pare a depuração com vários processos

Por padrão, quando você seleciona Depurar>Parar Depuração, o depurador termina ou se desanexa de todos os processos.

  • Se o processo atual tiver sido iniciado no depurador, o processo é encerrado.

  • Caso tenha anexado o depurador ao processo atual, o depurador desanexa-se do processo e este continua em execução.

Se você começar a depurar um processo de uma solução do Visual Studio, anexe a outro processo que já esteja em execução e escolha Parar Depuração, a sessão de depuração será encerrada. O processo que foi iniciado no Visual Studio termina, enquanto o processo anexado continua em execução.

Para controlar a maneira como Parar Depuração afeta um processo individual, na janela Processos , clique com o botão direito do mouse em um processo e marque ou desmarque a caixa de seleção Desanexar quando a depuração for interrompida .

Observação

A opção Interromper todos os processos quando um processo quebra o depurador não afeta a parada, o encerramento ou a desvinculação dos processos.

Comandos Parar, encerrar e desanexar

A tabela a seguir descreve os comportamentos dos comandos do depurador stop, terminate e detach com vários processos:

Comando Descrição
Depurar>Parar a depuração A menos que o comportamento seja alterado na janela Processos , os processos iniciados pelo depurador são encerrados e os processos anexados são desanexados.
Depurar>Encerrar tudo Todos os processos são encerrados.
Depurar>Desanexar tudo O depurador se desconecta de todos os processos.
Janela de Processos>Separar Processo O depurador desliga-se do processo selecionado.
Outros processos mantêm o seu estado existente (suspenso ou em execução).
Janela de Processos>Terminar Processo O processo selecionado foi encerrado.
Outros processos mantêm o seu estado existente (suspenso ou em execução).
Janela de Processos>Desligar quando a depuração for interrompida Se selecionado, Debug>Stop Debugging será desanexado do processo selecionado.
Se não estiver selecionado, Debug>Stop Debugging termina o processo selecionado.