Anexar a processos em execução com o depurador do Visual StudioAttach to running processes with the Visual Studio debugger

Você pode anexar o depurador do Visual Studio para um processo em execução em um computador local ou remoto.You can attach the Visual Studio debugger to a running process on a local or remote computer. Depois que o processo está em execução, selecione Debug > anexar ao processo ou pressione Ctrl+Alt + P no Visual Studio e usar o anexar ao processo caixa de diálogo para anexar o depurador ao processo.After the process is running, select Debug > Attach to Process or press Ctrl+Alt+P in Visual Studio, and use the Attach to Process dialog to attach the debugger to the process.

Você pode usar anexar ao processo para depurar aplicativos em execução em computadores locais ou remotos, depurar vários processos simultaneamente, depurar os aplicativos que não foram criados no Visual Studio ou depurar qualquer aplicativo que não tenha iniciado a partir do Visual Studio com o depurador anexado.You can use Attach to Process to debug running apps on local or remote computers, debug multiple processes simultaneously, debug apps that weren't created in Visual Studio, or debug any app you didn't start from Visual Studio with the debugger attached. Por exemplo, se você estiver executando um aplicativo sem o depurador e atingir uma exceção, você pode, em seguida, anexar o depurador ao processo executando o aplicativo e iniciar a depuração.For example, if you're running an app without the debugger and hit an exception, you can then attach the debugger to the process running the app and begin debugging.

Tip

Não tenho certeza se deve ser usado anexar ao processo para seu cenário de depuração?Not sure whether to use Attach to Process for your debugging scenario? Ver comum de cenários de depuração.See Common debugging scenarios.

Anexar a um processo em execução no computador localAttach to a running process on your local machine

Para reanexar rapidamente a um processo anexado ao anteriormente, consulte anexar novamente a um processo.To quickly reattach to a process you attached to previously, see Reattach to a process.

Para depurar um processo em um computador remoto, consulte anexar a um processo em um computador remoto.To debug a process on a remote computer, see Attach to a process on a remote computer.

Para anexar a um processo no computador local:To attach to a process on your local computer:

  1. No Visual Studio, selecione Debug > anexar ao processo (ou pressione Ctrl+Alt + P) para abrir o anexar ao processo caixa de diálogo.In Visual Studio, select Debug > Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.

    Tipo de Conexão deve ser definido como padrão.Connection type should be set to Default. Destino de Conexão deve ser o nome do computador local.Connection target should be your local machine name.

    DBG_Basics_Attach_To_ProcessDBG_Basics_Attach_To_Process

  2. No processos disponíveis lista, localize e selecione o processo ou processos que você deseja anexar.In the Available processes list, find and select the process or processes you want to attach to.

    • Para selecionar rapidamente um processo, digite seu nome ou a primeira letra na processos de filtro caixa.To quickly select a process, type its name or first letter in the Filter processes box.

    • Se você não souber o nome do processo, percorra a lista, ou consulte comum de cenários de depuração para alguns nomes comuns do processo.If you don't know the process name, browse through the list, or see Common debugging scenarios for some common process names.

    Tip

    Processos podem iniciar e parar em segundo plano enquanto o anexar ao processo caixa de diálogo é aberta, portanto, a lista de processos em execução pode não estar atualizada.Processes can start and stop in the background while the Attach to Process dialog box is open, so the list of running processes may not always be current. Você pode selecionar Refresh a qualquer momento para ver a lista atual.You can select Refresh at any time to see the current list.

  3. No anexar a campo, verifique se o tipo de código que você pretende depurar está listado.In the Attach to field, make sure the type of code you plan to debug is listed. O padrão automática definindo funciona para a maioria dos tipos de aplicativo.The default Automatic setting works for most app types.

    Para selecionar manualmente os tipos de código:To select code types manually:

    1. Clique em Selecionar.Click Select.
    2. No Selecionar tipo de código caixa de diálogo, selecione depurar esses tipos de código.In the Select Code Type dialog box, select Debug these code types.
    3. Selecione os tipos de código que você deseja depurar.Select the code types you want to debug.
    4. Selecione OK.Select OK.
  4. Selecione anexar.Select Attach.

Note

Você também pode ser associada a vários aplicativos para depuração, mas apenas um aplicativo está ativo no depurador em um momento.You can be attached to multiple apps for debugging, but only one app is active in the debugger at a time. Você pode definir o aplicativo ativo no Visual Studio local de depuração barra de ferramentas ou processos janela.You can set the active app in the Visual Studio Debug Location toolbar or Processes window.

Anexar a um processo em um computador remotoAttach to a process on a remote computer

Você também pode selecionar um computador remoto a anexar ao processo caixa de diálogo, exibir uma lista de processos disponíveis em execução nesse computador e anexar a um ou mais processos para depuração.You can also select a remote computer in the Attach to Process dialog box, view a list of available processes running on that computer, and attach to one or more of the processes for debugging. O depurador remoto (msvsmon.exe) deve estar em execução no computador remoto.The remote debugger (msvsmon.exe) must be running on the remote computer. Para obter mais informações, consulte depuração remota.For more information, see Remote debugging.

Para obter instruções mais completas para depuração de aplicativos do ASP.NET que foi implantados no IIS, consulte depuração ASP.NET em um computador remoto de IIS remota.For more complete instructions for debugging ASP.NET applications that have been deployed to IIS, see Remote debugging ASP.NET on a remote IIS computer.

Para anexar a um processo em execução em um computador remoto:To attach to a running process on a remote computer:

  1. No Visual Studio, selecione Debug > anexar ao processo (ou pressione Ctrl+Alt + P) para abrir o anexar ao processo caixa de diálogo.In Visual Studio, select Debug > Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.

  2. Tipo de Conexão deve ser padrão na maioria dos casos.Connection type should be Default for most cases. No destino de Conexão , selecione o computador remoto, usando um dos seguintes métodos:In the Connection target box, select the remote computer, using one of the following methods:

    • Selecione a seta suspensa ao lado destino de Conexãoe selecione o nome do computador na lista suspensa.Select the drop-down arrow next to Connection target, and select the computer name from the drop-down list.

    • Digite o nome do computador na destino de Conexão caixa e pressione Enter.Type the computer name in the Connection target box and press Enter.

      Verifique se que o Visual Studio adiciona as portas necessárias para o nome do computador, que aparece no formato: <nome do computador remoto >: portaVerify that Visual Studio adds the required port to the computer name, which appears in the format: <remote computer name>:port

      Note

      Se você não pode se conectar usando o nome do computador remoto, tente usar o IP e endereço da porta (por exemplo, 123.45.678.9:4022).If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022). 4024 é a porta padrão para o depurador remoto do Visual Studio 2019 x64.4024 is the default port for the Visual Studio 2019 x64 remote debugger. Para outras atribuições de porta do depurador remoto, consulte atribuições de porta do depurador remoto.For other remote debugger port assignments, see Remote debugger port assignments.

      Note

      Se você não pode se conectar usando o nome do computador remoto, tente usar o IP e endereço da porta (por exemplo, 123.45.678.9:4022).If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022). 4022 é a porta padrão para o depurador remoto do Visual Studio 2017 x64.4022 is the default port for the Visual Studio 2017 x64 remote debugger. Para outras atribuições de porta do depurador remoto, consulte atribuições de porta do depurador remoto.For other remote debugger port assignments, see Remote debugger port assignments.

    • Selecione o encontrar lado a destino de Conexão caixa para abrir o conexões remotas caixa de diálogo.Select the Find button next to the Connection target box to open the Remote Connections dialog box. O conexões remotas caixa de diálogo lista todos os dispositivos que estão na sua sub-rede local ou diretamente conectado ao seu computador.The Remote Connections dialog box lists all the devices that are on your local subnet or directly attached to your computer. Talvez você precise abra a porta UDP 3702 no servidor para descobrir dispositivos remotos.You may need to open UDP port 3702 on the server to discover remote devices. Selecione o computador ou dispositivo que você deseja e, em seguida, clique em selecionar.Select the computer or device you want, and then click Select.

    Note

    O tipo de Conexão configuração persiste entre as sessões de depuração.The Connection type setting persists between debugging sessions. O destino de Conexão configuração persiste entre as sessões de depuração somente se uma conexão de depuração bem-sucedida ocorreu com o destino.The Connection target setting persists between debugging sessions only if a successful debugging connection occurred with that target.

  3. Clique em Refresh para popular o processos disponíveis lista.Click Refresh to populate the Available processes list.

    Tip

    Processos podem iniciar e parar em segundo plano enquanto o anexar ao processo caixa de diálogo é aberta, portanto, a lista de processos em execução pode não estar atualizada.Processes can start and stop in the background while the Attach to Process dialog box is open, so the list of running processes may not always be current. Você pode selecionar Refresh a qualquer momento para ver a lista atual.You can select Refresh at any time to see the current list.

  4. No processos disponíveis lista, localize e selecione o processo ou processos que você deseja anexar.In the Available processes list, find and select the process or processes you want to attach to.

  5. No anexar a campo, verifique se o tipo de código que você pretende depurar está listado.In the Attach to field, make sure the type of code you plan to debug is listed. O padrão automática definindo funciona para a maioria dos tipos de aplicativo.The default Automatic setting works for most app types.

    Para selecionar manualmente os tipos de código:To select code types manually:

    1. Clique em Selecionar.Click Select.
    2. No Selecionar tipo de código caixa de diálogo, selecione depurar esses tipos de código.In the Select Code Type dialog box, select Debug these code types.
    3. Selecione os tipos de código que você deseja depurar.Select the code types you want to debug.
    4. Selecione OK.Select OK.
  6. Selecione anexar.Select Attach.

Note

Você também pode ser associada a vários aplicativos para depuração, mas apenas um aplicativo está ativo no depurador em um momento.You can be attached to multiple apps for debugging, but only one app is active in the debugger at a time. Você pode definir o aplicativo ativo no Visual Studio local de depuração barra de ferramentas ou processos janela.You can set the active app in the Visual Studio Debug Location toolbar or Processes window.

Em alguns casos, quando você depura em uma sessão de área de trabalho remota (serviços de Terminal), o processos disponíveis lista não exibirá todos os processos disponíveis.In some cases, when you debug in a Remote Desktop (Terminal Services) session, the Available processes list won't display all available processes. 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á os processos em execução na sessão 0.If you are running Visual Studio as a user who has a limited user account, the Available processes list won't show processes that are running in Session 0. A sessão 0 é usada para serviços e outros processos do servidor, incluindo w3wp.exe.Session 0 is used for services and other server processes, including w3wp.exe. Você pode resolver o problema executando o Visual StudioVisual Studio em uma conta de administrador ou executando o Visual StudioVisual Studio no console do servidor em vez de uma sessão de Serviços de Terminal.You can solve the problem by running Visual StudioVisual Studio under an administrator account or by running Visual StudioVisual Studio from the server console instead of a Terminal Services session.

Se nenhuma dessas soluções alternativas é possível, uma terceira opção é anexar ao processo executando vsjitdebugger.exe -p <ProcessId> na linha de comando do Windows.If neither of those workarounds is possible, a third option is to attach to the process by running vsjitdebugger.exe -p <ProcessId> from the Windows command line. Você pode determinar a ID de processo usando tlist.exe.You can determine the process ID using tlist.exe. Para obter tlist.exe, baixe e instale a depuração de ferramentas para Windows, disponível em downloads do WDK e WinDbg.To obtain tlist.exe, download and install Debugging Tools for Windows, available at WDK and WinDbg downloads.

Reconecte-se a um processoReattach to a process

Você poderá reanexar rapidamente a processos que estavam anteriormente conectados a, escolhendo Debug > reanexar ao processo (Shift + Alt+P).You can quickly reattach to processes that you were previously attached to by choosing Debug > Reattach to Process (Shift+Alt+P). Quando você escolhe este comando, o depurador tentará imediatamente anexar até o último processo anexado ao primeiro tentando corresponder à ID do processo anterior e se isso falhar, correspondendo ao anterior nome do processo.When you choose this command, the debugger will immediately try to attach to the last processes you attached to by first attempting to match the previous process ID and if that fails, by matching to the previous process name. Se nenhuma correspondência for encontrada, ou se vários processos têm o mesmo nome, o anexar ao processo caixa de diálogo será aberta para que você possa selecionar o processo correto.If no matches are found, or if several processes have the same name, the Attach to Process dialog box will open so you can select the correct process.

Note

O reanexar ao processo comando está disponível a partir do Visual Studio 2017.The Reattach to Process command is available starting in Visual Studio 2017.

Cenários comuns de depuraçãoCommon debugging scenarios

Para ajudá-lo a determinar se deve ser usado anexar ao processo e qual processo para anexar a tabela a seguir mostra alguns cenários comuns de depuração, com links para obter mais instruções onde estiver disponível.To help you determine whether to use Attach to Process and what process to attach to, the following table shows a few common debugging scenarios, with links to more instructions where available. (A lista não é exaustiva.)(The list is not exhaustive.)

Para alguns tipos de aplicativo, como os aplicativos do aplicativo Universal do Windows (UWP), não anexe diretamente a um nome de processo, mas usar o depurar pacote do aplicativo instalado a opção de menu no Visual Studio em vez disso (veja a tabela).For some app types, like Universal Windows App (UWP) apps, you don't attach directly to a process name, but use the Debug Installed App Package menu option in Visual Studio instead (see table).

Para que o depurador se anexe ao código escrito em C++, o código precisa emitir DebuggableAttribute.For the debugger to attach to code written in C++, the code needs to emit DebuggableAttribute. Você pode adicionar isso ao seu código automaticamente vinculando à opção do vinculador /ASSEMBLYDEBUG.You can add this to your code automatically by linking with the /ASSEMBLYDEBUG linker option.

Para depuração de script do lado do cliente, a depuração de script deve ser habilitada no navegador.For client-side script debugging, script debugging must be enabled in the browser. Para depurar o script do lado do cliente no Chrome, escolha Web kit como o tipo de código e, dependendo de seu tipo de aplicativo, talvez seja necessário fechar todas as instâncias do Chrome e iniciar o navegador no modo de depuração (tipo chrome.exe --remote-debugging-port=9222 de uma linha de comando).For debugging client-side script on Chrome, choose Web kit as the code type, and depending on your app type, you may need to close all Chrome instances and start the browser in debugging mode (type chrome.exe --remote-debugging-port=9222 from a command line).

Para selecionar rapidamente um processo em execução para anexar a, no Visual Studio, digite Ctrl+Alt+Pe, em seguida, digite a primeira letra das nome do processo.To quickly select a running process to attach to, in Visual Studio, type Ctrl+Alt+P, and then type the first letter of the process name.

CenárioScenario Depurar o métodoDebug method Nome do processoProcess name Observações e linksNotes and links
Depuração remota ASP.NET 4 ou 4.5 em um servidor IISRemote debug ASP.NET 4 or 4.5 on an IIS server Usar as ferramentas remotas e anexar ao processoUse remote tools and Attach to Process w3wp.exew3wp.exe Consulte remota de depuração do ASP.NET em um computador remoto do IISSee Remote debugging ASP.NET on a remote IIS computer
Depuração remota do ASP.NET Core em um servidor IISRemote debug ASP.NET Core on an IIS server Usar as ferramentas remotas e anexar ao processoUse remote tools and Attach to Process dotnet.exedotnet.exe Para implantação de aplicativo, consulte publicar no IIS.For app deployment, see Publish to IIS. Para depuração, consulte depuração remota do ASP.NET Core em um computador remoto do IISFor debugging, see Remote debugging ASP.NET Core on a remote IIS computer
Depurar o script do lado do cliente em um servidor IIS local, para tipos de aplicativos com suporteDebug client-side script on a local IIS server, for supported app types Use anexar ao processoUse Attach to Process chrome.exe, MicrosoftEdgeCP.exe ou iexplore.exechrome.exe, MicrosoftEdgeCP.exe, or iexplore.exe Depuração de script deve ser habilitada.Script debugging must be enabled. Para o Chrome, você também deve executar Chrome no modo de depuração e selecione código Webkit na anexar a campo.For Chrome, you must also run Chrome in debug mode and select Webkit code in the Attach to field.
Depurar um aplicativo c#, Visual Basic ou C++ no computador localDebug a C#, Visual Basic, or C++ app on the local machine Usar tanto a depuração padrão (F5) ou anexar ao processoUse either standard debugging (F5) or Attach to Process <nomedoaplicativo>.exe<appname>.exe Na maioria dos cenários, usar a depuração padrão e não anexar ao processo.In most scenarios, use standard debugging and not Attach to Process.
Depuração remota de um aplicativo de desktop do WindowsRemote debug a Windows desktop app Ferramentas remotasRemote tools N/DN/A Ver remoto depurar um aplicativo c# ou Visual Basic ou remoto depurar um aplicativo C++See Remote debug a C# or Visual Basic app or Remote debug a C++ app
Depurar um aplicativo ASP.NET no computador local depois de iniciar o aplicativo sem o depuradorDebug an ASP.NET app on the local machine after you start the app without the debugger Use anexar ao processoUse Attach to Process iiexpress.exeiiexpress.exe Isso pode ser útil para fazer com que seu aplicativo carregar mais rápido, como (por exemplo) ao criar o perfil.This may be helpful to make your app load faster, such as (for example) when profiling.
Depurar outros tipos de aplicativos com suporte em um processo do servidorDebug other supported app types on a server process Se o servidor remoto, use as ferramentas remotas, e anexar ao processoIf server is remote, use remote tools, and Attach to Process Chrome.exe, iexplore.exe, ou outros processoschrome.exe, iexplore.exe, or other processes Se necessário, use o Monitor de recursos para ajudar a identificar o processo.If necessary, use Resource Monitor to help identify the process. Confira Depuração remota.See Remote debugging.
Remoto depurar um aplicativo de IoT, OneCore, HoloLens ou aplicativo Universal do Windows (UWP)Remote debug a Universal Windows App (UWP), OneCore, HoloLens, or IoT app Depurar pacote do aplicativo instaladoDebug installed app package N/DN/A Ver depurar pacote de aplicativo instalado em vez de usar anexar ao processoSee Debug an installed app package instead of using Attach to Process
Depurar um aplicativo de IoT, OneCore, HoloLens ou aplicativo Universal do Windows (UWP) que não tenha iniciado a partir do Visual StudioDebug a Universal Windows App (UWP), OneCore, HoloLens, or IoT app that you didn't start from Visual Studio Depurar pacote do aplicativo instaladoDebug installed app package N/DN/A Ver depurar pacote de aplicativo instalado em vez de usar anexar ao processoSee Debug an installed app package instead of using Attach to Process

Usar recursos do depuradorUse debugger features

Para usar os recursos completos do depurador do Visual Studio (como usar pontos de interrupção) ao anexar a um processo, o aplicativo deve corresponder exatamente ao seu local de origem e símbolos.To use the full features of the Visual Studio debugger (like hitting breakpoints) when attaching to a process, the app must exactly match your local source and symbols. Ou seja, o depurador deve ser capaz de carregar o correto (. PDB) arquivos de símbolo.That is, the debugger must be able to load the correct symbol (.pdb) files. Por padrão, isso requer uma compilação de depuração.By default, this requires a debug build.

Para cenários de depuração remota, você deve ter o código-fonte (ou uma cópia do código-fonte) estiver aberto no Visual Studio.For remote debugging scenarios, you must have the source code (or a copy of the source code) already open in Visual Studio. Os binários do aplicativo compilado no computador remoto devem vir da mesma compilação, como no computador local.The compiled app binaries on the remote machine must come from the same build as on the local machine.

Em alguns cenários de depuração locais, você pode depurar no Visual Studio sem acesso à fonte de se os arquivos de símbolos corretos estão presentes com o aplicativo.In some local debugging scenarios, you can debug in Visual Studio with no access to the source if the correct symbol files are present with the app. Por padrão, isso requer uma compilação de depuração.By default, this requires a debug build. Para obter mais informações, consulte especificar arquivos de origem e símbolo.For more information, see Specify symbol and source files.

Solucionar problemas de anexoTroubleshoot attach errors

Quando o depurador se anexa a um processo em execução, o processo pode conter um ou mais tipos de código.When the debugger attaches to a running process, the process can contain one or more types of code. 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.The code types the debugger can attach to are displayed and selected in the Select Code Type dialog box.

Às vezes, o depurador pode ser anexado com êxito a um tipo de código, mas não a outro tipo de código.Sometimes, the debugger can successfully attach to one code type, but not to another code type. Isso pode ocorrer se você estiver tentando anexar a um processo que esteja sendo executado em um computador remoto.This might occur if you are trying to attach to a process that is running on a remote computer. O computador remoto pode ter componentes de depuração remota instalados para alguns tipos de código mas não para outros.The remote computer might have remote debugging components installed for some code types but not for others. Isso também pode ocorrer se você tentar anexar a dois ou mais processos para depuração direta de banco de dados.It can also occur if you try to attach to two or more processes for direct database debugging. A depuração de SQL dá suporte à anexação de apenas um único processo.SQL debugging supports attaching to a single process only.

Se o depurador é consegue se conectar a alguns, mas nem todos os tipos de código, você verá uma mensagem identificando quais tipos de falha ao anexar.If the debugger is able to attach to some, but not all, code types, you see a message identifying which types failed to attach.

Se o depurador for anexado com êxito a pelo menos um tipo de código, você poderá depurar o processo.If the debugger successfully attaches to at least one code type, you can proceed to debug the process. Você poderá depurar apenas os tipos de código que foram anexados com êxito.You will be able to debug only the code types that were successfully attached. O código desanexado no processo ainda será executado, mas você não poderá definir pontos de interrupção, exibir dados ou executar outras operações em que o código de depuração.The unattached code in the process will still run, but you won't be able to set breakpoints, view data, or perform other debugging operations on that code.

Se você quiser obter informações mais específicas sobre por que o depurador não conseguiu anexar a um tipo de código, tente reanexar somente àquele tipo de código.If you want more specific information about why the debugger failed to attach to a code type, try to reattach to only that code type.

Para obter informações específicas sobre o motivo de um tipo de código ter falhado na anexação:To obtain specific information about why a code type failed to attach:

  1. Desanexe do processo.Detach from the process. Sobre o Debug menu, selecione desanexar tudo.On the Debug menu, select Detach All.

  2. Reanexe ao processo, selecionando apenas o tipo de código que não foi anexado.Reattach to the process, selecting only the code type that failed to attach.

    1. Na caixa de diálogo Anexar ao Processo, selecione o processo na lista Processos Disponíveis.In the Attach to Process dialog box, select the process in the Available processes list.

    2. Selecione selecionar.Select Select.

    3. Na caixa de diálogo Tipo de Código Selecionado, selecione Depurar esses tipos de código e o tipo de código que falhou em ser anexado.In the Select Code Type dialog box, select Debug these code types and the code type that failed to attach. Desmarque os outros tipos de código.Deselect the other code types.

    4. Selecione OK.Select OK.

    5. No anexar ao processo caixa de diálogo, selecione Attach.In the Attach to Process dialog box, select Attach.

    Desta vez, o anexo falhará completamente e você receberá uma mensagem de erro específica.This time, the attach will fail completely, and you will get a specific error message.

Consulte tambémSee also