Depuración de varios procesos ( C#, Visual Basic, C++)

Visual Studio puede depurar una solución que tenga varios procesos. Puede iniciar procesos y cambiar de unos a otros, interrumpirlos, continuar y recorrer el código fuente, detener la depuración y finalizar o desasociar de procesos individuales.

Iniciar la depuración con varios procesos

Cuando hay más de un proyecto en una solución de Visual Studio que se puede ejecutar de forma independiente, puede seleccionar qué proyecto inicia el depurador. El proyecto de inicio actual aparece en negrita en el Explorador de soluciones.

Para cambiar el proyecto de inicio, en el Explorador de soluciones, haga clic con el botón derecho en otro proyecto y seleccione Establecer como proyecto de inicio.

Para iniciar la depuración de un proyecto desde el Explorador de soluciones sin convertirlo en el proyecto de inicio, haga clic con el botón derecho en el proyecto y seleccione Depurar>Iniciar nueva instancia o Ir a nueva instancia.

Para establecer el proyecto de inicio o varios proyectos a partir de las propiedades de la solución:

  1. Seleccione la solución en el Explorador de soluciones y, después, elija el icono Propiedades en la barra de herramientas o haga clic con el botón derecho en la solución y seleccione Propiedades.

  2. En la página Propiedades, seleccione Propiedades comunes>Proyecto de inicio.

    Changing the startup type for a project

  3. Seleccione Selección actual, Proyecto de inicio único y un archivo de proyecto, o Proyectos de inicio múltiples.

    Si selecciona Proyectos de inicio múltiples, puede cambiar el orden de inicio y la acción que se realizará para cada proyecto: Iniciar, Iniciar sin depurar o Ninguno.

  4. Seleccione Aplicar o Aceptar para aplicar y cerrar el cuadro de diálogo.

Asociación a un proceso

El depurador también se puede asociar a las aplicaciones que se ejecutan en procesos fuera de Visual Studio, incluido en dispositivos remotos. Después de asociarse a una aplicación, puede usar el depurador de Visual Studio. Es posible que las características de depuración estén limitadas. Depende de si la aplicación se compiló con información de depuración, si tiene acceso al código fuente de la aplicación y si el compilador JIT está realizando el seguimiento de la información de depuración.

Para más información, vea Asociar a procesos en ejecución.

Para asociar a un proceso en ejecución:

  1. Con la aplicación en ejecución, seleccione Depurar>Asociar al proceso.

    Attach to Process dialog box

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

Nota

El depurador no se asocia automáticamente a un proceso secundario iniciado por un proceso depurado, aunque el proyecto secundario se encuentre en la misma solución. Para depurar un proceso secundario, debe asociar al proceso secundario después de iniciarse, o configurar el editor del Registro de Windows para iniciar el proceso secundario en una nueva instancia del depurador.

Usar el editor del Registro para iniciar automáticamente un proceso en el depurador

En ocasiones, es posible que tenga que depurar código de inicio de una aplicación iniciada por otro proceso. Por ejemplo, servicios y configuraciones personalizadas. Puede iniciar el depurador y asociarlo automáticamente a la aplicación.

  1. Ejecute regedit.exe para iniciar el editor del Registro de Windows.

  2. En el editor del Registro, vaya a HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.

  3. Seleccione la carpeta de la aplicación que desee iniciar en el depurador.

    Si la aplicación no aparece como una carpeta secundaria, haga clic con el botón derecho en Image File Execution Options, seleccione Nuevo>Clave y escriba el nombre de la aplicación. O bien, haga clic con el botón derecho en la nueva clave en el árbol, elija Cambiar nombre y escriba el nombre de la aplicación.

  4. Haga clic con el botón derecho en la nueva clave del árbol y elija Nuevo>Valor de cadena.

  5. Cambie el nombre del nuevo valor de Nuevo valor #1 a debugger.

  6. Haga clic con el botón derecho en el depurador y seleccione Modificar.

    Edit String dialog box

  7. En el cuadro de diálogo Editar cadena, escriba vsjitdebugger.exe en el cuadro Información del valor y, después, seleccione Aceptar.

    Automatic debugger start entry in regedit.exe

Depurar con varios procesos

Al depurar una aplicación con varios procesos, los comandos del depurador de interrupción, ejecución paso a paso y continuación afectan a todos los procesos de forma predeterminada. Por ejemplo, si un proceso se suspende en un punto de interrupción, también se suspenderá la ejecución de todos los demás procesos. Puede cambiar este comportamiento predeterminado para tener un mejor control sobre los destinos de los comandos de ejecución.

Para cambiar si se suspenden todos los procesos cuando se interrumpe un proceso:

  • En Herramientas (o Depurar) >Opciones>Depuración>General, active o desactive la casilla Interrumpir todos los procesos cuando se interrumpa uno.

Comandos de interrupción, paso y continuación

En esta tabla se describen los comportamientos de los comandos de depuración cuando la casilla Interrumpir todos los procesos cuando se interrumpa uno está activada o desactivada:

Comando Seleccionado Selección anulada
Depurar>Interrumpir todo Se interrumpen todos los procesos. Se interrumpen todos los procesos.
Depurar>Continuar Se reanudan todos los procesos. Se reanudan todos los procesos suspendidos.
Depurar>Depurar paso a paso por instrucciones, Depurar paso a paso por procedimientos o Salir de la depuración Se ejecutan todos los procesos mientras que el proceso actual se ejecuta paso a paso.
A continuación, se interrumpen todos los procesos.
El proceso actual se ejecuta paso a paso.
Se reanudan los procesos suspendidos.
Continúan los procesos en ejecución.
Depurar>Ir al proceso actual, Paso a paso por el proceso actual o Paso a paso para salir del procedimiento actual N/D El proceso actual se ejecuta paso a paso.
Otros procesos mantienen su estado existente (suspendido o en ejecución).
Ventana de código fuente Punto de interrupción Se interrumpen todos los procesos. Solo se interrumpe el proceso de la ventana de código fuente.
Ventana de código fuente Ejecutar hasta el cursor
La ventana de código fuente debe estar en el proceso actual.
Se ejecutan todos los procesos mientras se ejecuta el proceso de la ventana de código fuente hasta el cursor para, a continuación, interrumpirse.
A continuación, se interrumpen todos los demás procesos.
El proceso de la ventana de código fuente se ejecuta hasta el cursor.
Otros procesos mantienen su estado existente (suspendido o en ejecución).
Ventana Procesos>Interrumpir proceso N/D Se interrumpe el proceso seleccionado.
Otros procesos mantienen su estado existente (suspendido o en ejecución).
Ventana Procesos>Continuar proceso N/D Se reanuda el proceso seleccionado.
Otros procesos mantienen su estado existente (suspendido o en ejecución).

Buscar archivos de origen y de símbolos (.pdb)

Para navegar por el código fuente de un proceso, el depurador necesita poder acceder a los archivos de código fuente y los archivos de símbolos. Para obtener más información, vea Especificar archivos de código fuente y símbolos (.pdb) en el depurador de Visual Studio (C#, C++, Visual Basic, F#).

Si no puede acceder a los archivos de un proceso, puede navegar a través de la ventana Desensamblado. Para obtener más información, vea Cómo: Uso de la ventana Desensamblado.

Cambiar entre procesos

Puede asociar a varios procesos mientras realiza la depuración, pero solo un proceso estará activo en el depurador al mismo tiempo. Puede establecer el proceso activo o actual en la Barra de herramientas de la ubicación de depuración o en la ventana Procesos. Para cambiar entre procesos, ambos procesos deben encontrarse en el modo de interrupción.

Para establecer el proceso actual desde la barra de herramientas Ubicación de depuración:

  1. Para abrir la barra de herramientas Ubicación de depuración, seleccione Ver>Barras de herramientas>Ubicación de depuración.

  2. Durante la depuración, en la barra de herramientas Ubicación de depuración, seleccione el proceso que quiere establecer como el proceso actual en el menú desplegable Proceso.

    Switch between processes

Para establecer el proceso actual desde la ventana Procesos:

  1. Para abrir la ventana Procesos, durante la depuración, seleccione Depurar>Ventanas>Procesos.

  2. En la ventana Procesos, el proceso actual se marca mediante una flecha amarilla. Haga doble clic en el proceso que quiere establecer como el proceso actual.

    Processes window

Cuando se cambia a un proceso, se establece como el proceso actual para la depuración. Las ventanas del depurador muestran el estado del proceso actual y los comandos de ejecución paso a paso solo afectan al proceso actual.

Detener la depuración con varios procesos

De forma predeterminada, al seleccionar Depurar>Detener depuración, el depurador finaliza o se desasocia de todos los procesos.

  • Si el proceso actual se inició en el depurador, dicho proceso finaliza.

  • Si asoció el depurador al proceso actual, el depurador se desasociará del proceso y dejará el proceso en ejecución.

Si inicia la depuración de un proceso desde una solución de Visual Studio, luego asocia a otro proceso que ya se está ejecutando y, después, elige Detener depuración, finaliza la sesión de depuración. El proceso que se inició en Visual Studio finaliza, mientras que el proceso que asoció se sigue ejecutando.

Para controlar la manera en que Detener depuración afecta a un proceso individual, en la ventana Procesos, haga clic con el botón derecho en un proceso y, después, active o desactive la casilla Desasociar cuando se interrumpa la depuración.

Nota

La opción Interrumpir todos los procesos cuando se interrumpa uno del depurador no afecta a la detención, la finalización o la desasociación de los procesos.

Comandos de detención, finalización y desasociación

En esta tabla se describen los comportamientos de los comandos del depurador para detener, finalizar y desasociar con varios procesos:

Comando Descripción
Depurar>Detener depuración A menos que se cambie el comportamiento en la ventana Procesos, se terminan los procesos iniciados por el depurador y se desasocian los procesos asociados.
Depurar>Finalizar todo Finalizan todos los procesos.
Depurar>Desasociar todo El depurador se desasocia de todos los procesos.
Ventana Procesos>Desasociar proceso El depurador se desasocia del proceso seleccionado.
Otros procesos mantienen su estado existente (suspendido o en ejecución).
Ventana Procesos>Terminar el proceso Termina el proceso seleccionado.
Otros procesos mantienen su estado existente (suspendido o en ejecución).
Ventana Procesos>Detach when debugging stops (Desasociar cuando se interrumpe la depuración) Si está seleccionada esta opción, Depurar>Detener depuración desasocia del proceso seleccionado.
Si no está seleccionada, Depurar>Detener depuración termina el proceso seleccionado.