Anexar aos processos em execução com o Depurador do Visual Studio

Este tópico mostra como anexar a um processo em execução, anexar a um processo em um computador remoto e solucionar problemas de erros de anexo.

Por que depurar processos anexados?

O depurador do Visual Studio tem a capacidade de anexar a um processo que está em execução fora do Visual Studio.Você pode essa função de anexação para fazer o seguinte:

  • Depurar um aplicativo que não foi criado no Visual Studio.

  • Depurar vários processos simultaneamente.Você também pode depurar vários processos iniciando vários projetos em uma única solução.

  • Depurar um processo que é executado em um computador remoto.

  • Depurar uma DLL executada em um processo separado que não pode ser facilmente iniciado do Visual Studio, por exemplo, um serviço ou uma de DLL ISAPI executando com o Serviços de Informações da Internet.

  • Iniciar o depurador automaticamente quando um processo falha ao executar fora do Visual Studio.Isso é a depuração Just-In-Time.

Após ter anexado a um programa, você poderá usar comandos de execução do depurador, inspecionar o estado do programa etc.Para obter mais informações, consulte Deputar um ou mais processos no Visual Studio, Iniciar, interromper, avançar, executar código e parar depuração no Visual Studio e Exibindo dados no depurador.A capacidade de inspecionar o programa pode ser limitada se o programa foi compilado com informações de depuração, se você tem acesso ao código-fonte do programa e se o compilador just-in-time (JIT) do Common Language Runtime está controlando as informações de depuração.

Anotação de C++Anotação de C++

Para que o depurador se anexe ao código escrito em C++, o código precisa emitir DebuggableAttribute.Você pode adicionar isso ao seu código automaticamente vinculando à opção do vinculador /ASSEMBLYDEBUG.

Observação de cuidadoCuidado

Para anexar a um aplicativo da Windows Store escrito em JavaScript, você deve primeiro habilitar a depuração para o aplicativo.Consulte Anexar o depurador no Centro de Desenvolvimento do Windows.

Anexar a um processo em execução

  1. No menu Depurar, selecione Anexar ao Processo.

  2. Na caixa de diálogo Anexar ao Processo, localize o programa ao qual você deseja anexar na lista Processos Disponíveis.

    1. Se o programa que você deseja depurar estiver sendo executado em outro computador, use a caixa de listagem Qualificador para selecionar ou especificar o computador remoto.Para obter mais informações, consulte Depuração e diagnóstico remotos.

    2. Se o processo estiver sendo executado em uma conta de usuário diferente, marque a caixa de seleção Mostrar processos de todos os usuários.

    3. Se você estiver conectado por meio da Conexão de Área de Trabalho Remota, marque a caixa de seleção Exibir os Processos em Todas as Sessões.

  3. No anexar a caixa, certifique-se de que o tipo de código que você irá depurar está listado.A configuração padrão Automático tenta determinar que tipo de código você deseja depurar.Se a configuração automática não for apropriada:

    1. Clique em Selecionar.

    2. Na caixa de diálogo Selecionar Tipo de Código, clique em Depurar estes tipos de código e selecione os tipos para depurar.

    3. Clique em OK.

  4. Clique em Anexar.

    A lista Processos Disponíveis é exibida automaticamente quando você abre a caixa de diálogo Processos.Os processos podem iniciar e parar em segundo plano quando a caixa de diálogo está aberta.No entanto, o conteúdo nem sempre será atual.Você pode atualizar a lista a qualquer momento para ver a lista atual de processos clicando em Atualizar.

    Você pode estar associado a vários programas enquanto depura, mas somente um programa está ativo no depurador em um determinado momento.É possível definir o programa ativo na barra de ferramentas Local de Depuração ou na janela Processos.

    ObservaçãoObservação

    Para que o depurador se anexe ao código gerenciado escrito em C++/CLI, o código deve emitir DebuggableAttribute.Você pode adicionar isso ao seu código automaticamente vinculando à opção do vinculador /ASSEMBLYDEBUG.

    Se você tentar anexar a um processo de propriedade de uma conta de usuário não confiável, aparecerá uma confirmação da caixa de diálogo de aviso de segurança.Para obter mais informações, consulte Aviso de segurança: anexar a um processo de propriedade de um usuário não confiável pode ser perigoso. Caso as informações a seguir pareçam suspeitas ou você não tenha certeza, não anexe a esse processo.

    Em alguns casos, quando você depura em uma sessão da Área de Trabalho Remota (Serviços de Terminal), a lista Processos Disponíveis não exibirá todos os processos disponíveis.Em Windows Server 2003 ou versões posteriores, se você estiver executando o Visual Studio como um usuário que tenha uma conta de usuário limitado, o processos disponíveis lista não mostrará processos em execução na sessão 0, que é usada para serviços e outros processos do servidor, incluindo w3wp.exe.Você pode resolver o problema executando o Visual Studio em uma conta de administrador ou executando o Visual Studio no console do servidor, em vez de uma sessão de serviços de Terminal.Se nenhuma dessas soluções alternativas for possível, uma terceira opção é anexar ao processo executando vsjitdebugger.exe -p ProcessId na linha de comando do Windows.Você pode determinar a ID do processo usando tlist.exe.Para obter tlist.exe, baixe e instale as Ferramentas de Depuração para Windows, disponíveis em https://go.microsoft.com/fwlink/?LinkId=168279.

Para parar a depuração do processo anexado, clique em Depurar / parar a depuração, ou interromper a execução do processo anexado.

Anexar a um processo em um computador remoto

Quando você usa a caixa de diálogo Anexar ao Processo, pode selecionar outro computador que tenha sido configurado para a depuração remota.Para obter mais informações, consulte Configurar as Ferramentas Remotas no dispositivo.Quando você tiver selecionado um computador remoto, poderá exibir uma lista de processos disponíveis que estão em execução no computador e anexá-la a um ou mais processos para depuração.

Para selecionar um computador remoto:

  1. Na caixa de diálogo Anexar ao Processo, selecione o tipo de conexão apropriado da lista Transporte.Padrão é a configuração correta para a maioria dos casos.

  2. Use a caixa de listagem Qualificador para escolher o nome do computador remoto usando um dos seguintes métodos:

    1. Digite o nome na caixa de listagem Qualificador.

    2. Clique na seta suspensa anexada à caixa de listagem Qualificador e selecione o nome do computador da lista suspensa.

    3. Clique o localizar próximo ao qualificador lista para abrir o Selecionar conexão de depurador remoto caixa de diálogo.A caixa de diálogo Selecionar Conexão de Depurador Remoto lista todos os dispositivos que estejam na sua sub-rede local, e qualquer dispositivo que esteja anexado diretamente ao seu computador por um cabo Ethernet.Clique no computador ou no dispositivo desejado e, depois, em Selecionar.

    A configuração Transporte persiste entre as sessões de depuração.A configuração Qualificador persiste entre as sessões de depuração somente se uma conexão de depuração bem-sucedida ocorre com o qualificador.

Solucionar erros de anexo

Quando o depurador é anexado a um processo em execução, o processo pode conter um ou mais tipos de código.Os tipos de código aos quais o depurador pode se anexar são exibidos e selecionados na caixa de diálogo Selecionar Tipo de Código.

ObservaçãoObservação

Para que o depurador se anexe ao código gerenciado escrito em C++, o código deve emitir DebuggableAttribute.Você pode adicionar isso ao seu código automaticamente vinculando à opção do vinculador /ASSEMBLYDEBUG.

Observação de cuidadoCuidado

Para anexar a um aplicativo da Windows Store escrito em JavaScript, você deve primeiro habilitar a depuração para o aplicativo.Consulte Anexar o depurador no Centro de Desenvolvimento do Windows.

Às vezes, o depurador pode ser anexado com êxito a um tipo de código, mas não a outro tipo de código.Isso pode ocorrer se você estiver tentando anexar a um processo que esteja sendo executado em um computador remoto.O computador remoto pode ter componentes de depuração remota instalados para alguns tipos de código mas não para outros.Isso também pode ocorrer se você tentar anexar a dois ou mais processos para depuração direta de banco de dados.A depuração de SQL dá suporte à anexação de apenas um único processo.

Se o depurador puder se conectar a alguns, mas não a todos os tipos de código, você verá uma mensagem identificando quais tipos não conseguiram estabelecer conexão.

Se o depurador for anexado com êxito a pelo menos um tipo de código, você poderá depurar o processo.Você poderá depurar apenas os tipos de código que foram anexados com êxito.A mensagem do exemplo anterior mostra que o tipo de código de script não foi anexado.Portanto, você não pode depurar o código do script dentro do processo.O código de script no processo ainda seria executado, mas você não poderia definir pontos de interrupção, exibir dados ou executar outras operações de depuração no script.

Se você desejar informações mais específicas sobre por que o depurador não foi anexado a um tipo de código, tente reanexar somente àquele tipo de código.

Para obter informações específicas sobre o motivo de um tipo de código ter falhado na anexação

  1. Desanexe do processo.No menu Depurar, clique em Desanexar Tudo.

  2. Anexe o processo novamente, selecionando apenas um único tipo de código.

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

    2. Clique em Selecionar.

    3. Na caixa de diálogo Selecionar Tipo de Código, selecione Depurar estes tipos de código e o tipo de código que não foi anexado.Limpe qualquer outro código.

    4. Clique em OK.A caixa de diálogo Selecionar Tipo de Código fecha.

    5. Na caixa de diálogo Anexar ao Processo, clique em Anexar.

    Desta vez, o anexo falhará completamente e você receberá uma mensagem de erro específica.

Consulte também

Conceitos

Deputar um ou mais processos no Visual Studio

Depuração Just-In-Time no Visual Studio

Outros recursos

Depuração e diagnóstico remotos