Asociar con procesos en ejecución con el depurador de Visual Studio

Puede asociar el depurador de Visual Studio a un proceso en ejecución en un equipo local o remoto. Una vez que el proceso se esté ejecutando, seleccione Depurar>Asociar al proceso, o presione CTRL+Alt+P en Visual Studio y use el cuadro de diálogo Asociar al proceso para asociar el depurador al proceso.

Puede usar Asociar al proceso para depurar aplicaciones en ejecución en equipos locales o remotos, depurar varios procesos simultáneamente, depurar aplicaciones que no se crearon en Visual Studio o depurar cualquier aplicación que no se haya iniciado desde Visual Studio con el depurador asociado. Por ejemplo, si está ejecutando una aplicación sin el depurador y alcanza una excepción, puede asociar el depurador al proceso que ejecuta la aplicación y comenzar la depuración.

Sugerencia

¿No está seguro de si usar Asociar al proceso para su escenario de depuración? Vea Escenarios comunes de depuración.

Asociación con un proceso en ejecución en el equipo local

Para volver a asociar rápidamente a un proceso que ha asociado previamente, consulte Reasociar a un proceso.

Para asociar a un proceso en el equipo local:

  1. En Visual Studio, seleccione Depurar>Asociar al proceso (o presione Ctrl+Alt+P) para abrir el cuadro de diálogo Asociar al proceso.

  2. Compruebe el tipo de conexión.

    En la mayoría de los escenarios, puede usar el valor predeterminado. Algunos escenarios pueden requerir un tipo de conexión diferente. Para obtener más información, consulte otras secciones de este artículo o escenarios comunes de depuración.

  3. Establezca el destino de la conexión en el nombre de la máquina local.

    Captura de pantalla del cuadro de diálogo Asociar al proceso con el destino de conexión establecido en el nombre de la máquina local.

    Captura de pantalla del cuadro de diálogo Asociar al proceso con el destino de conexión establecido en el nombre de la máquina local.

  4. En la lista Procesos disponibles, busque y seleccione el proceso o los procesos con los que quiere establecer la asociación.

    • Para seleccionar rápidamente un proceso, escriba su nombre o su primera letra en el cuadro Filtrar procesos.

    • Si no conoce el nombre del proceso, desplácese por la lista o consulte Escenarios comunes de depuración para ver algunos nombres de proceso comunes.

    Sugerencia

    Los procesos se pueden iniciar y detener en segundo plano mientras el cuadro de diálogo Asociar al proceso está abierto, por lo que es posible que la lista de procesos en ejecución no esté siempre actualizada. Puede seleccionar Actualizar en cualquier momento para ver la lista actual.

  5. En el campo Asociar a, asegúrese de que aparece el tipo de código que va a depurar. El parámetro Automático predeterminado funciona en la mayoría de los tipos de aplicaciones.

    Si usa el tipo de conexión predeterminado, puede seleccionar manualmente el tipo de código al que desee establecer una asociación. De lo contrario, se puede deshabilitar la opción Seleccionar.

    Para seleccionar tipos de código manualmente:

    1. Haga clic en Seleccionar.
    2. En el cuadro de diálogo Seleccionar tipo de código, seleccione Depurar estos tipos de código. Si se produce un error al intentar establecer una asociación a un proceso de la lista, puede usar el cuadro de diálogo Seleccionar tipo de código para ayudar a solucionar la incidencia.
    3. Seleccione los tipos de código que desea depurar.
    4. Seleccione Aceptar.
  6. Seleccione Adjuntar.

Sugerencia

En el escenario en el que tiene varios procesos idénticos, use la columna Línea de comandos o los detalles del proceso w3wp de la columna Título para identificar el proceso correcto.

Nota

Puede tener asociaciones con varias aplicaciones para la depuración, pero solo una aplicación está activa en el depurador a la vez. Puede establecer la aplicación activa en la barra de herramientas Ubicación de depuración o la ventana Procesos de Visual Studio.

Asociar a un proceso en un equipo remoto

También puede seleccionar un equipo remoto en el cuadro de diálogo Asociar al proceso, consultar una lista con los procesos disponibles que se están ejecutando en dicho equipo y establecer una asociación con uno o varios procesos para llevar a cabo la depuración. El depurador remoto (msvsmon. exe) debe ejecutarse en el equipo remoto. Para obtener más información, vea Depuración remota.

Para obtener instrucciones más completas sobre cómo depurar aplicaciones ASP.NET que se han implementado en IIS, vea Depuración remota de ASP.NET en un equipo remoto de IIS.

Para establecer una asociación con un proceso en ejecución en un equipo remoto:

  1. En Visual Studio, seleccione Depurar>Asociar al proceso (o presione Ctrl+Alt+P) para abrir el cuadro de diálogo Asociar al proceso.

  2. Compruebe el tipo de conexión.

    En la mayoría de los escenarios, puede usar el valor predeterminado. Algunos escenarios, como la depuración de Linux o una aplicación en contenedores, requieren un tipo de conexión diferente. Para obtener más información, consulte otras secciones de este artículo o escenarios comunes de depuración.

  3. En el cuadro Destino de conexión, seleccione el equipo remoto mediante uno de los métodos siguientes:

    • Selecciona la flecha de la lista desplegable que se encuentra junto a Destino de conexión y seleccione el nombre del equipo en la lista desplegable.

    • Escriba el nombre del equipo en el cuadro Destino de conexión y presione Entrar.

      Compruebe que Visual Studio agrega el puerto necesario al nombre del equipo, que aparece en el formato <nombre del equipo remoto>:puerto

      Nota

      Si no puede conectarse con el nombre del equipo remoto, pruebe a usar la dirección IP y el puerto (por ejemplo, 123.45.678.9:4022). 4026 es el puerto predeterminado para el depurador remoto de Visual Studio 2022. Para otras asignaciones de puerto del depurador remoto, vea Asignaciones de puerto del depurador remoto.

      Nota

      Si no puede conectarse con el nombre del equipo remoto, pruebe a usar la dirección IP y el puerto (por ejemplo, 123.45.678.9:4022). 4024 es el puerto predeterminado para el depurador remoto de Visual Studio 2019. Para otras asignaciones de puerto del depurador remoto, vea Asignaciones de puerto del depurador remoto.

    • Seleccione el botón Buscar situado junto al cuadro Destino de conexión para abrir el cuadro de diálogo Conexiones remotas. En el cuadro de diálogo Conexiones remotas se muestran todos los dispositivos que están en la subred local o conectados directamente al equipo. Es posible que necesite abrir el puerto UDP 3702 en el servidor para detectar dispositivos remotos. Seleccione el equipo o el dispositivo que desee y, a continuación, haga clic en Seleccionar.

    Nota

    El parámetro Tipo de conexión se conserva entre las sesiones de depuración. El parámetro Destino de la conexión solo se conserva entre las sesiones de depuración si se produce una conexión de depuración correcta con ese destino.

  4. Haga clic en Actualizar para rellenar la lista Procesos disponibles.

    Sugerencia

    Los procesos se pueden iniciar y detener en segundo plano mientras el cuadro de diálogo Asociar al proceso está abierto, por lo que la lista de procesos en ejecución puede no estar siempre actualizada. Puede seleccionar Actualizar en cualquier momento para ver la lista actual.

  5. En la lista Procesos disponibles, busque y seleccione el proceso o los procesos con los que quiere establecer la asociación.

  6. En el campo Asociar a, asegúrese de que aparece el tipo de código que va a depurar. El parámetro Automático predeterminado funciona en la mayoría de los tipos de aplicaciones.

    Si usa el tipo de conexión predeterminado, puede seleccionar manualmente el tipo de código al que desee establecer una asociación. De lo contrario, se puede deshabilitar la opción Seleccionar.

    Para seleccionar tipos de código manualmente:

    1. Haga clic en Seleccionar.
    2. En el cuadro de diálogo Seleccionar tipo de código, seleccione Depurar estos tipos de código. Si se produce un error al intentar establecer una asociación a un proceso de la lista, puede usar el cuadro de diálogo Seleccionar tipo de código para ayudar a solucionar la incidencia.
    3. Seleccione Aceptar.
  7. Seleccione Adjuntar.

Nota

Puede tener asociaciones con varias aplicaciones para la depuración, pero solo una aplicación está activa en el depurador a la vez. Puede establecer la aplicación activa en la barra de herramientas Ubicación de depuración o la ventana Procesos de Visual Studio.

En algunos casos, al depurar en una sesión de Escritorio remoto (Terminal Services), en la lista Procesos disponibles no aparecerán todos los procesos disponibles. Si se ejecuta Visual Studio como usuario que tiene una cuenta de usuario limitada, la lista Procesos disponibles no mostrará los procesos que se estén ejecutando en la sesión 0. La sesión 0 se usa para los servicios y otros procesos de servidor, incluido w3wp.exe. Para resolver el problema, ejecute Visual Studio con una cuenta de administrador o ejecute Visual Studio desde la consola de servidor en vez de una sesión de Terminal Services.

Si ninguna de estas dos soluciones es posible, existe una tercera opción que consiste en asociar al proceso mediante la ejecución de vsjitdebugger.exe -p <ProcessId> en la línea de comandos de Windows. Puede determinar el identificador de proceso mediante tlist.exe. Para obtener el archivo tlist.exe, descargue e instale las Herramientas de depuración para Windows, disponibles en Descargas de WDK y WinDbg.

Asociación a un proceso de .NET Core que se ejecuta en Azure App Service (Windows)

Si va a publicar en Azure App Service (Windows), consulte Depuración remota de aplicaciones ASP.NET Core hospedadas en Azure App Service mediante Visual Studio o Depuración de Azure App Service para obtener instrucciones.

Asociación a un proceso de .NET Core que se ejecuta en Azure App Service (Windows)

Si va a realizar la publicación en Azure App Service (Windows), encontrará la opción Adjuntar depurador en el menú ... en Hospedaje del perfil de publicación. Visual Studio intenta adjuntar el depurador remoto a la instancia de Azure App Service (Windows) en la que se publica el perfil.

Captura de pantalla de la opción Adjuntar depurador desde la página Resumen de publicación.

Asociación a un proceso de .NET Core que se ejecuta en Linux mediante SSH

Para obtener más información, vea Depuración remota de .NET Core en Linux con SSH.

Asociación a procesos que se ejecutan en contenedores de Docker

A partir de Visual Studio 2019, puede asociar el depurador de Visual Studio a un proceso que se ejecuta en un contenedor de Docker. Para contenedores de Docker de .NET Core de Linux, consulte Asociación a procesos que se ejecutan en contenedores de Docker de Linux. Para contenedores de Docker de Windows, consulte Asociación a procesos que se ejecutan en contenedores de Docker de Windows.

Reasociar a un proceso

Puede volver a asociarse rápidamente a los procesos a los que se asoció con anterioridad eligiendo Depurar>Reasociar al proceso (Mayús+Alt+P). Cuando se elige este comando, el depurador intentará asociarse de inmediato a los últimos procesos a los que se haya asociado intentando buscar una coincidencia con el identificador de proceso anterior y, si no obtiene resultados, con el nombre del proceso anterior. Si no se encuentran coincidencias, o si hay varios procesos con el mismo nombre, se abrirá el cuadro de diálogo Asociar al proceso para que pueda seleccionar el proceso correcto.

Nota

El comando Reasociar al proceso está disponible a partir de Visual Studio 2017.

Escenarios comunes de depuración

Para ayudarle a determinar si debe usar Asociar al proceso y a qué proceso se debe asociar, en la tabla siguiente se muestran algunos escenarios comunes de depuración, con vínculos que llevan a más instrucciones si están disponibles. (Esta lista no es exhaustiva).

En el caso de algunos tipos de aplicaciones, como las aplicaciones de la Plataforma universal de Windows (UWP), no se asocia directamente a un nombre de proceso, sino que se usa en su lugar la opción de menú Depurar paquete de aplicaciones instalado de Visual Studio (consulte la tabla).

Para que el depurador se asocie al código escrito en C++, el código debe emitir DebuggableAttribute. Puede agregar este atributo automáticamente al código vinculando con la opción /ASSEMBLYDEBUG del vinculador.

Para la depuración de scripts del lado cliente, la depuración de scripts debe estar habilitada en el explorador. Para depurar el script de cliente en Chrome, elija JavaScript o TypeScript como tipo de código y, en función del tipo de aplicación, es posible que necesite cerrar todas las instancias de Chrome e iniciar el explorador en modo de depuración (escribe chrome.exe --remote-debugging-port=9222 desde una línea de comandos).

Para la depuración de scripts del lado cliente, la depuración de scripts debe estar habilitada en el explorador. Para depurar el script de cliente en Chrome, elija JavaScript (Chrome) o JavaScript (Microsoft Edge - Chromium) como tipo de código y, en función del tipo de aplicación, es posible que necesite cerrar todas las instancias de Chrome e iniciar el explorador en modo de depuración (escriba chrome.exe --remote-debugging-port=9222 desde una línea de comandos). En versiones anteriores de Visual Studio, el depurador de scripts para Chrome era Web kit.

Para seleccionar rápidamente un proceso en ejecución al que asociarse, en Visual Studio, escriba Ctrl+Alt+Py, a continuación, escriba la primera letra del nombre del proceso.

Escenario Método de depuración Nombre del proceso Notas y vínculos
ASP.NET Core: depuración remota en el servidor IIS Uso de herramientas remotas y Asociar al proceso w3wp.exe o dotnet.exe A partir de .NET Core 3, el proceso w3wp.exe se usa para el modelo de hospedaje en la aplicación predeterminado. Para la implementación de aplicaciones, vea Publicación en IIS. Para obtener información más detallada, vea Depuración remota de ASP.NET Core en un equipo remoto de IIS
ASP.NET Core: depuración en la máquina local después de iniciar la aplicación sin el depurador Uso de Asociar al proceso msedge.exe Puede resultar útil para agilizar la carga de la aplicación, como (por ejemplo,) al generar perfiles.
ASP.NET 4 o 4.5: depuración remota en un servidor IIS Uso de herramientas remotas y Asociar al proceso w3wp.exe Vea Depuración remota de ASP.NET en un equipo remoto de IIS.
Script del lado cliente: depuración en un servidor IIS local para tipos de aplicación compatibles Uso de Asociar al proceso chrome.exe o msedge.exe La depuración de scripts debe estar habilitada. Para Chrome, también debe ejecutar Chrome en modo de depuración (escriba chrome.exe --remote-debugging-port=9222 desde una línea de comandos) y seleccionar JavaScript o TypeScript en el campo Asociar a.
Aplicación C#, Visual Basic o C++: depuración en el equipo local Uso de la depuración estándar (F5) o Asociar al proceso <appname>.exe En la mayoría de los escenarios, use la depuración estándar y no Asociar al proceso.
Aplicación de escritorio de Windows: depuración remota Herramientas remotas N/D Consulte Depuración de una aplicación de C# o Visual Basic o Depuración remota de un proyecto C++.
.NET Core en Linux: depuración Uso de Asociar al proceso dotnet.exe o un nombre de proceso único Para usar SSH, consulte Depuración remota de .NET Core en Linux con SSH. Con aplicaciones en contenedor, consulte Asociación a procesos que se ejecutan en contenedores de Docker.
Aplicación en contenedor: depuración Uso de Asociar al proceso dotnet.exe o un nombre de proceso único Consulte Asociación a procesos que se ejecutan en contenedores de Docker
Python en Linux: depuración remota Uso de Asociar al proceso debugpy Consulte Asociar desde Herramientas de Python de forma remota
Otros tipos de aplicaciones compatibles: depuración en un proceso de servidor Si el servidor es remoto, use herramientas remotas y Asociar al proceso. chrome.exe, msedge.exe u otros procesos Si es necesario, utilice Monitor de recursos para identificar mejor el proceso. Vea Depuración remota.
Plataforma universal de Windows (UWP), OneCore, HoloLens o aplicación de IoT: depuración remota Depurar paquete de aplicaciones instalado N/D Consulte Depurar un paquete de aplicación instalado en lugar de usar Asociar al proceso.
Plataforma universal de Windows (UWP), OneCore, HoloLens o IoT: depuración de una aplicación que no se activó desde Visual Studio Depurar paquete de aplicaciones instalado N/D Consulte Depurar un paquete de aplicación instalado en lugar de usar Asociar al proceso.

Uso de las características del depurador

Para usar todas las características del depurador de Visual Studio (como las llegadas a un punto de interrupción) al asociarse a un proceso, la aplicación debe coincidir exactamente con el código fuente y los símbolos locales. Es decir, el depurador debe ser capaz de cargar los archivos de símbolos (.pdb) correctos. De forma predeterminada, esto requiere una compilación de depuración.

En escenarios de depuración remota, debe tener el código fuente (o una copia del código fuente) ya abierto en Visual Studio. Los archivos binarios de la aplicación compilada en el equipo remoto deben provenir de la misma compilación que en el equipo local.

En algunos escenarios de depuración local, puede depurar en Visual Studio sin acceso al origen si los archivos de símbolos correctos están presentes en la aplicación. De forma predeterminada, esto requiere una compilación de depuración. Para obtener más información, vea Especificar archivos de código fuente y símbolos en el depurador de Visual Studio (C#, C++, Visual Basic, F#).

Solucionar problemas de errores de asociación

En algunos escenarios, es posible que el depurador necesite ayuda para identificar correctamente el tipo de código que se va a depurar. Si los valores de conexión se establecen correctamente (puede ver el proceso correcto en la lista Procesos disponibles), pero el depurador no se asocia, intente seleccionar el tipo de conexión más adecuado en la lista Tipo de conexión, que puede requerirse, por ejemplo, si depura una aplicación de Linux o Python. Si usa el tipo de conexión predeterminado, también puede seleccionar el tipo específico de código al que conectarse, como se describe más adelante en esta sección.

Cuando el depurador se asocia a un proceso en ejecución, el proceso puede contener uno o varios tipos de código. Los tipos de código a los que se puede asociar el depurador se muestran y seleccionan en el cuadro de diálogo Seleccionar tipo de código .

A veces, el depurador puede asociarse correctamente a un tipo de código, pero no a otro. Normalmente, esto ocurre cuando:

  • Intenta establecer una asociación a un proceso que se ejecuta en un equipo remoto. Puede que el equipo remoto tenga instalados los componentes de depuración remota para algunos tipos de código, pero no para otros.
  • Intenta establecer una asociación a dos o varios procesos para realizar una depuración directa de la base de datos. La depuración de SQL sólo admite la asociación a un único proceso.

Si el depurador logra asociarse a algunos tipos de código, pero no a todos, aparece un mensaje en el que se identifican los tipos sin asociar.

Si el depurador se asocia correctamente a un tipo de código por lo menos, podrá reanudar la depuración del proceso. Sólo podrá depurar los tipos de código que se hayan asociado correctamente. El código sin asociar del proceso seguirá ejecutándose, pero no se podrán establecer puntos de interrupción, ni se podrán ver los datos, ni se podrá realizar ninguna otra operación de depuración en el código.

Si desea obtener información más detallada sobre el motivo por el que el depurador no se ha asociado correctamente a un tipo de código, intente asociarlo de nuevo con ese tipo de código exclusivamente.

Para obtener información específica sobre la causa por la que no se ha asociado correctamente un tipo de código:

  1. Desasocie el proceso. En el menú Depurar, seleccione Desasociar todo.

  2. Vuelva a asociar el proceso, pero seleccionando solo el tipo de código que no se pudo asociar.

    1. En el cuadro de diálogo Asociar al proceso, seleccione el proceso en la lista Procesos disponibles.

    2. Elija Seleccionar.

    3. En el cuadro de diálogo Seleccionar tipo de código , seleccione Depurar estos tipos de código y el tipo de código que no se haya asociado correctamente. Anule la selección de los otros tipos de código.

    4. Seleccione Aceptar.

    5. En el cuadro de diálogo Asociar al proceso, seleccione Asociar.

    Esta vez se producirá un error en todo el proceso de asociación y aparecerá un mensaje de error específico.