Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La ventana Pilas paralelas es útil cuando se depuran aplicaciones multiproceso. Cuenta con varias vistas:
- Vista de subprocesos: muestra información de la pila de llamadas de todos los subprocesos de la aplicación. Puede desplazarse entre los subprocesos y marcos de pila de esos subprocesos.
-
Vista de tareas: muestra información de la pila de llamadas centrada en la tarea.
- En el caso de las aplicaciones .NET que usan el patrón async/await, la vista Tareas es la más útil para la depuración. Para ver un tutorial paso a paso, consulte Depuración de una aplicación asincrónica.
- Para aplicaciones que usan Biblioteca de procesamiento paralelo basado en tareas (TPL) pero no el patrón async/await, o para aplicaciones C++ que usan Runtime de simultaneidad, la vista Subprocesos en la ventana Pilas paralelas es la herramienta más útil para la depuración.
-
Vista de tareas: muestra información de la pila de llamadas centrada en la tarea.
- En el caso de las aplicaciones .NET que usan el patrón async/await, la vista Tareas es la más útil para la depuración.
- Para aplicaciones que usan Biblioteca de procesamiento paralelo basado en tareas (TPL) pero no el patrón async/await, o para aplicaciones C++ que usan Runtime de simultaneidad, la vista Subprocesos en la ventana Pilas paralelas es la herramienta más útil para la depuración.
- Vista de método centra la pila de llamadas sobre un método seleccionado.
Usar la ventana Tareas paralelas
Para abrir la ventana Pilas paralelas, debe estar en una sesión de depuración. Seleccione Depurar>Windows>Pilas paralelas.
Controles de la barra de herramientas
La ventana Pilas paralelas tiene los siguientes controles de barra de herramientas:
| Iconos | Supervisión | Descripción |
|---|---|---|
|
Cuadro combinado Subprocesos/Tareas | Intercambia la vista entre las pilas de llamadas de subprocesos y las pilas de llamadas de tareas. Para obtener más información, vea Vista de tareas y Vista de subprocesos. |
|
Mostrar marcadas únicamente | Solo muestra las pilas de llamadas de los subprocesos que están marcados en otras ventanas de depuración, por ejemplo, las ventanas Subprocesos de GPU e Inspección paralela. |
|
Alternar vista de método | Cambia entre las vistas de pila de llamadas y la vista de método. Para obtener más información, vea Vista de método. |
|
Desplazar automáticamente al marco de pila actual | Desplaza automáticamente el gráfico para que el marco de pila actual esté a la vista. Esta característica es útil cuando se cambia el marco de pila actual desde otras ventanas o cuando se alcanza un nuevo punto de interrupción en gráficos grandes. |
|
Activar/desactivar control de zoom | Muestra u oculta el control de zoom situado a la izquierda de la ventana. Con independencia de la visibilidad del control de zoom, para hacer zoom también puede presionar Ctrl y girar la rueda del mouse o presionar Ctrl+Mayús ++para acercar y Ctrl+Mayús+- para alejar. |
| Iconos | Supervisión | Descripción |
|---|---|---|
|
Cuadro combinado Subprocesos/Tareas | Intercambia la vista entre las pilas de llamadas de subprocesos y las pilas de llamadas de tareas. Para obtener más información, vea Vista de tareas y Vista de subprocesos. |
Icono de filtro ![]() |
Control de Filtro | Muestra las pilas de llamadas solo para el conjunto específico de subprocesos que le interesan. |
|
Mostrar marcadas únicamente | Solo muestra las pilas de llamadas de los subprocesos que están marcados en otras ventanas de depuración, por ejemplo, las ventanas Subprocesos de GPU e Inspección paralela. |
|
Alternar vista de método | Cambia entre las vistas de pila de llamadas y la vista de método. Para obtener más información, vea Vista de método. |
|
Desplazar automáticamente al marco de pila actual | Desplaza automáticamente el gráfico para que el marco de pila actual esté a la vista. Esta característica es útil cuando se cambia el marco de pila actual desde otras ventanas o cuando se alcanza un nuevo punto de interrupción en gráficos grandes. |
|
Activar/desactivar control de zoom | Muestra u oculta el control de zoom situado a la izquierda de la ventana. Con independencia de la visibilidad del control de zoom, para hacer zoom también puede presionar Ctrl y girar la rueda del mouse o presionar Ctrl+Mayús ++para acercar y Ctrl+Mayús+- para alejar. |
Icono de búsqueda ![]() |
Control de búsqueda | Con esta característica, puede buscar fácilmente a través de marcos de pila y, a continuación, usar flechas para navegar entre esos resultados. |
|
Control Guardar | Permite guardar o exportar el contenido desde la ventana de pila paralela como una imagen. |
Icono ![]() |
Control Mostrar código externo | Usando esta función, puede mostrar u ocultar los conjuntos de código o bibliotecas externas. |
|
Resumir pilas de llamadas | A partir de Visual Studio 2022, versión 17.13 Preview 4, puede elegir Resumir cuando se instala y activa Copilot. Este botón abre la ventana Chat de Copilot, precargada con el contexto de subproceso pertinente, lo que le permite explorar detalles, incluidos los estados de subproceso, las llamadas de función y las correcciones sugeridas. |
Iconos de marco de pila
Los iconos siguientes proporcionan información sobre los marcos de pila activos y actuales en todas las vistas:
| Iconos | Descripción |
|---|---|
|
|
Indica la ubicación actual (marco de pila activo) del hilo actual. |
|
|
Indica la ubicación actual (marco de pila activo) de un subproceso no actual. |
|
|
Indica el marco de pila actual (el contexto del depurador actual). El nombre del método está en negrita dondequiera que aparezca. |
| Iconos | Descripción |
|---|---|
|
|
Indica la ubicación actual (marco de pila activo) del hilo actual. |
|
|
Indica la ubicación actual (marco de pila activo) de un subproceso no actual. |
|
|
Indica el marco de pila actual (el contexto del depurador actual). El nombre del método está en negrita dondequiera que aparezca. |
|
|
(.NET) Indica que el marco de pila actual tiene una advertencia de estado crítico, como Interbloqueo. |
|
|
(.NET) Indica el nodo interbloqueado. |
|
|
(.NET) Indica que el marco de pila actual tiene información adicional, como Waiting on, Waiting on lock, owned by, etc. |
|
|
(.NET) Indica que la tarea actual está en estado bloqueado o en espera, etc. |
|
|
Indica la tarea que se está ejecutando actualmente. |
Elementos del menú contextual
Los siguientes elementos de menú contextual están disponibles cuando se hace clic con el botón secundario en un método en la vista Subprocesos o en la vista Tareas. Los últimos seis elementos son los mismos que en la ventana Pila de llamadas.
| Elemento de menú | Descripción |
|---|---|
| Marcar | Marca el elemento seleccionado. |
| Quitar marcador | Quita la marca del elemento seleccionado. |
| Inmovilizar | Inmoviliza el elemento seleccionado. |
| Reanudar | Reanuda el elemento seleccionado. |
| Cambiar a marco | Igual que el comando de menú correspondiente de la ventana Pila de llamadas. Sin embargo, en la ventana Pilas paralelas, un método podría estar en varios marcos. Puede seleccionar el marco que quiera en el submenú de este elemento. Si uno de los marcos de pila está en el subproceso actual, ese marco se selecciona de forma predeterminada en el submenú. |
| Ir a tarea o Ir a subproceso | Cambia a la vista Tareas o Subprocesos y mantiene el mismo marco de pila resaltado. |
| Ir al código fuente | Va a la ubicación correspondiente en la ventana de código fuente. |
| Ir al desensamblado | Va a la ubicación correspondiente en la ventana Desensamblado. |
| Mostrar código externo | Muestra u oculta el código externo. |
| Presentación hexadecimal | Alterna entre la presentación hexadecimal y decimal. |
| Mostrar subprocesos en código fuente | Marca la ubicación del subproceso en la ventana de código fuente. |
| Información de carga de símbolos | Abre el cuadro de diálogo Información de carga de símbolos. |
| Configuración de símbolos | Abre el cuadro de diálogo Configuración de símbolos. |
| Elemento de menú | Descripción |
|---|---|
| Copiar | Copiar el elemento seleccionado. |
| Seleccionar todos los fotogramas siguientes | Selecciona todos los fotogramas bajo la pila seleccionada. |
| Marcar | Marca el elemento seleccionado. |
| Quitar marcador | Quita la marca del elemento seleccionado. |
| Inmovilizar | Inmoviliza el elemento seleccionado. |
| Reanudar | Reanuda el elemento seleccionado. |
| Cambiar a marco | Igual que el comando de menú correspondiente de la ventana Pila de llamadas. Sin embargo, en la ventana Pilas paralelas, un método podría estar en varios marcos. Puede seleccionar el marco que quiera en el submenú de este elemento. Si uno de los marcos de pila está en el subproceso actual, ese marco se selecciona de forma predeterminada en el submenú. |
| Ir a tarea o Ir a subproceso | Cambia a la vista Tareas o Subprocesos y mantiene el mismo marco de pila resaltado. |
| Ir al código fuente | Va a la ubicación correspondiente en la ventana de código fuente. |
| Ir al desensamblado | Va a la ubicación correspondiente en la ventana Desensamblado. |
| Mostrar código externo | Muestra u oculta el código externo. |
| Presentación hexadecimal | Alterna entre la presentación hexadecimal y decimal. |
| Mostrar subprocesos en código fuente | Marca la ubicación del subproceso en la ventana de código fuente. |
| Información de carga de símbolos | Abre el cuadro de diálogo Información de carga de símbolos. |
| Configuración de símbolos | Abre el cuadro de diálogo Configuración de símbolos. |
Vista de temas
En la vista Subprocesos, el marco de pila y la ruta de acceso de llamada del subproceso actual se resaltan en azul. La ubicación actual del hilo se muestra mediante la flecha amarilla.
Para cambiar el marco de pila actual, haga doble clic en un método diferente. Esta acción también podría cambiar el subproceso actual, dependiendo de si el método que seleccione forma parte del subproceso actual o de otro subproceso.
Cuando el gráfico de vista Subprocesos es tan grande que no cabe en la ventana, en la ventana aparece un control vista de pájaro. Puede desplazar el marco del control para desplazarse por distintas partes del gráfico.
En la ilustración siguiente se muestra el subproceso principal en una transición de código administrado a nativo. Hay cinco subprocesos en el método actual. Cuatro subprocesos siguen ejecutándose en el contexto del método S.C, mientras que un subproceso de trabajo continúa en una transición de código administrado a nativo, estableciendo el nombre en un subproceso de trabajo.
En la tabla siguiente se describen las características principales de la vista Subprocesos:
| Llamada | Nombre del elemento | Descripción |
|---|---|---|
| 1 | Nodo o segmento de pila de llamadas | Contiene una serie de métodos para uno o más subprocesos. Si el marco no tiene ninguna línea de flecha conectada, representa la ruta de acceso completa de la llamada de los subprocesos. |
| 2 | Resaltado azul | Indica la ruta de acceso de la llamada del subproceso actual. |
| 3 | Líneas de flecha | Conecte los nodos para componer toda la ruta de llamada del hilo. |
| 4 | Encabezado de nodo | Muestra el número de procesos o subprocesos, nombre de subproceso e identificador de subproceso para el nodo. |
| 5 | Método | Representa uno o más marcos de pila del mismo método. |
| 6 | Información sobre herramientas en el método | Aparece cuando se mantiene el cursor sobre un método. En la vista Subprocesos, la información sobre herramientas muestra todos los subprocesos de una tabla de modo similar a la ventana de Subprocesos. |
| 7 | Descripción del subproceso | Descripción generada por IA del hilo. A partir de Visual Studio 2022, versión 17.13 Preview 1, esta descripción está presente cuando se instala y activa Copilot. |
Obtención de ayuda para la inteligencia artificial
Si tiene Copilot, puede obtener ayuda de IA en la vista Subprocesos con descripciones de subprocesos generadas por IA y mediante el botón Generar información . Use la captura de pantalla Generar información
botón para interactuar con Copilot sobre los datos del subproceso que está viendo. En este escenario, Copilot ya conoce el contexto de su pregunta, por lo que no es necesario proporcionar contexto en el chat. Para obtener más información, vea Depurar con Copilot.
Para habilitar o deshabilitar descripciones de resumen de subprocesos, abra el panel Herramientas>Opciones y expanda la sección Todos los ajustes>GitHub>Copilot>Depurador y Diagnóstico. Seleccione o desmarque la casilla de verificación Habilitar resumen de IA en la ventana Pilas paralelas.
Para activar o desactivar las descripciones de resumen de subprocesos, abra el cuadro de diálogo Herramientas>Opciones y expanda la sección GitHub>Copilot. En la categoría Depurador y Diagnóstico, active o desactive la casilla Habilitar resumen de IA en la ventana Pilas paralelas.
En la ilustración siguiente se muestra un subproceso que pasa por una transición de código principal, administrado y nativo. Hay seis subprocesos en el método actual. Dos subprocesos continúan con Thread.Sleep y dos continúan con Console.WriteLine y el subproceso actual continúa con SyncTextWriter.WriteLine.
En la tabla siguiente se describen las características principales de la vista Subprocesos:
| Llamada | Nombre del elemento | Descripción |
|---|---|---|
| 1 | Nodo o segmento de pila de llamadas | Contiene una serie de métodos para uno o más subprocesos. Si el marco no tiene ninguna línea de flecha conectada, representa la ruta de acceso completa de la llamada de los subprocesos. |
| 2 | Resaltado azul | Indica la ruta de acceso de la llamada del subproceso actual. |
| 3 | Líneas de flecha | Conecte los nodos para componer toda la ruta de llamada del hilo. |
| 4 | Encabezado de nodo | Muestra el número de procesos y subprocesos del nodo. |
| 5 | Método | Representa uno o más marcos de pila del mismo método. |
| 6 | Información sobre herramientas en el método | Aparece cuando se mantiene el cursor sobre un método. En la vista Subprocesos, la información sobre herramientas muestra todos los subprocesos de una tabla de modo similar a la ventana de Subprocesos. |
Vista de Tareas
En el caso de las aplicaciones .NET que usan el patrón async/await, la vista Tareas es la más útil para la depuración. Para ver un tutorial paso a paso, consulte Depuración de una aplicación asincrónica.
En la vista Tareas , puede:
- Vea las visualizaciones de pila de llamadas para las aplicaciones que usan el patrón async/await.
- Identifique el código asincrónico que está programado para ejecutarse, pero que aún no se está ejecutando.
En la ilustración siguiente se muestra la vista Subprocesos en la parte superior y la vista Tareas correspondiente en la parte inferior.
Mantenga el mouse sobre un método para mostrar información sobre herramientas con información adicional. En la vista Tareas, en la información sobre herramientas, se muestran todas las tareas de una tabla, de forma similar a la ventana Tareas.
En la imagen siguiente se muestra la información sobre herramientas de un método en la vista Subprocesos en la parte superior y de la vista Tareas correspondiente en la parte inferior.
Vista de método
Desde la vista Subprocesos o la vista Tareas, puede dinamizar el gráfico del método actual seleccionando el icono Alternar vista de método. La vista de método muestra de una ojeada todos los métodos de todos los subprocesos que llaman o a los que llama el método actual. En la ilustración siguiente se muestra cómo aparece la misma información en la vista Subprocesos a la izquierda y en la Vista de método a la derecha.
Si cambia a un nuevo marco de pila, lo convierte en el método actual y en Vista de método se muestra todos los llamadores y destinatarios del nuevo método. Este escenario puede hacer que algunos subprocesos aparezcan o desaparezcan de la vista, dependiendo de si ese método aparece en sus pilas de llamadas. Para volver a la vista Pila de llamadas, vuelva a seleccionar el icono Vista de método de la barra de herramientas.
Tutorial de depuración de subprocesos y tareas con pilas paralelas
En estos tutoriales de vídeo se muestra cómo puede usar las vistas Subprocesos y Tareas de la ventana Pilas Paralelas de Visual Studio 2022 para depurar las aplicaciones con múltiples subprocesos.
- Depuración de tareas con la ventana Pilas paralelas
- Depuración de subprocesos con la ventana Pilas paralelas


