Compartilhar via


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

O Visual Studio pode depurar uma solução que tem vários processos. Você pode iniciar e alternar entre processos, pausar, continuar, executar passo a passo o código fonte, parar a depuração e finalizar ou desvincular processos individuais.

Iniciar a depuração com múltiplos processos

Quando mais de um projeto em uma solução do Visual Studio pode ser executado de forma independente, 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 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 nas Propriedades da Solução:

  1. Selecione a solução no Gerenciador de Soluções e 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 Inicialização.

    Alterando o tipo de inicialização de um projeto

  3. Selecione Seleção atual, projeto de inicialização única 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 serem executadas 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 ser anexado a aplicativos em execução em processos fora do Visual Studio, inclusive em dispositivos remotos. Depois de conectar-se a um aplicativo, você pode 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.

    Anexar à caixa de diálogo 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 é anexado automaticamente a um processo filho iniciado por um processo depurado, mesmo que o projeto filho esteja na mesma solução. Para depurar um processo filho, anexe ao processo filho após o início ou configure o Editor do Registro do Windows para iniciar o processo filho em uma nova instância do depurador.

Usar 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 que é iniciado por outro processo. Exemplos incluem serviços e ações de configuração personalizadas. Você pode fazer com que o depurador inicie e se conecte 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 filho, 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. Ou clique com o botão direito do mouse na nova chave na árvore, selecione Renomear e, em seguida, insira o nome do aplicativo.

  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 nº 1 para debugger.

  6. Clique com o botão direito em 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 na caixa de dados Valor e selecione OK.

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

Depurar com vários processos

Ao depurar um aplicativo com vários processos, os comandos de depurador parar, avançar e continuar 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 Depurar) >Opções, expanda a seção Todas as Configurações>Depuração>Geral.
  1. Na caixa de diálogo Ferramentas (ou Depuração) >Opções, expanda a seção Depuração>Geral.
  1. Selecione ou desmarque a caixa de seleção Interromper todos os processos quando um processo interrompe.

Comandos Break, Step, Continue

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 interrompe está selecionada ou desmarcada.

Command Selecionadas Desmarcada
Depurar>Parar 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 por cima ou sair 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>Entrar no processo atual, percorrer o processo atual ou sair do processo atual N/A Etapas atuais do processo.
Outros processos mantêm o estado existente (suspenso ou em execução).
Ponto de interrupção da janela de origem Todos os processos falham. Somente o processo da janela de origem é interrompido.
Janela de fonte Executar até 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 no cursor e, em seguida, é interrompido.
Em seguida, todos os outros processos são interrompidos.
O processo da janela de origem é executado no cursor.
Outros processos mantêm o estado existente (suspenso ou em execução).
Janela de Processos>Interromper Processo N/A Interrupções de processo selecionadas.
Outros processos mantêm o estado existente (suspenso ou em execução).
Janela de Processos>Continuar Processo N/A O processo selecionado é retomado.
Outros processos mantêm o estado existente (suspenso ou em execução).

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

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

Se você não conseguir acessar os arquivos de um processo, poderá navegar usando a janela Disassembly. Para obter mais informações, consulte Como usar a janela Desmontar.

Alternar entre processos

Você pode anexar a vários processos quando estiver depurando, mas apenas um processo está ativo no depurador a qualquer 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 no modo de interrupção.

Para configurar o processo atual na barra de ferramentas Localização de Depuração:

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

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

    Alternar entre processos

Para definir o processo atual da janela Processos:

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

  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.

    a Janela de Processos

Alternar para um processo o define como o processo atual para fins de depuração. As janelas do depurador mostram o estado do processo atual e os comandos de etapa 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 desanexa de todos os processos.

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

  • Se você anexou o depurador ao processo atual, o depurador se desvincula do processo e deixa o processo continuar em execução.

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

Para controlar a maneira como parar a depuração afeta um processo individual, na janela Processos , clique com o botão direito do mouse em um processo e, em seguida, selecione ou desmarque a caixa de seleção Desanexar ao parar a depuração .

Observação

A opção de depurador Interromper todos os processos quando um processo quebra não afeta a parada, término ou desanexação de processos.

Interromper, encerrar e desanexar comandos

A tabela a seguir descreve os comportamentos dos comandos de parar, encerrar e desanexar do depurador com vários processos:

Command Descrição
Depurar>Parar Depurar A menos que o comportamento seja alterado na janela Processos , os processos iniciados pelo depurador serão encerrados e os processos anexados serão desanexados.
Depurar>Encerrar Tudo Todos os processos são encerrados.
Depurar>Desanexar Tudo O depurador desvincula de todos os processos.
Janela de Processos>Desanexar Processo O depurador desanexa do processo selecionado.
Outros processos mantêm o estado existente (suspenso ou em execução).
Processos janela >Encerrar Processo O processo selecionado foi encerrado.
Outros processos mantêm o estado existente (suspenso ou em execução).
> Desanexar quando a depuração for interrompida Se selecionado, Depurar>Parar Depuração desvincula-se do processo selecionado.
Se não estiver selecionado, Depurar>Parar Depuração encerrará o processo selecionado.