Uso de la ventana Tareas paralelas

La ventana Pilas paralelas es útil cuando se depuran aplicaciones multithreading. La Vista de subprocesos muestra información de la pila de llamadas de todos los subprocesos de la aplicación. Permite navegar entre los subprocesos y marcos de pila de esos subprocesos. En código administrado, la Vista de tareas muestra las pilas de llamadas de los objetos System.Threading.Tasks.Task. En código nativo, la Vista de tareas muestra las pilas de llamadas de grupos de tareas, algoritmos paralelos, agentes asincrónicos y tareas ligeras.

Vista de subprocesos

En la siguiente ilustración se muestra un subproceso que fue de Main a A a B y después a código externo. Otros dos subprocesos se iniciaron en código externo y fueron a A, pero uno de los subprocesos continuó a B y después a código externo, y el otro subproceso continuó a C y después a un AnonymousMethod.

Vista de subprocesos de la ventana Pilas paralelas

En la ilustración, la ruta de acceso de la llamada del subproceso actual se resalta en azul y la flecha amarilla representa el marco de pila activo. Puede cambiar el marco de pila seleccionando un método diferente en la ventana Pilas paralelas. Esto también puede producir el cambio del subproceso actual, dependiendo de si el método que seleccionó ya forma parte del subproceso actual o de otro. En la siguiente tabla se describen las características principales de la ventana Pilas paralelas como se muestra en la ilustración.

Letra de la llamada

Nombre del elemento

Descripción

A

Nodo o segmento de pila de llamadas

Contiene una serie de contextos de método para uno o más subprocesos. Si el nodo no tiene ninguna línea de flecha conectada, representa la ruta de acceso completa de la llamada de subprocesos.

B

Resaltado azul

Indica la ruta de acceso de la llamada del subproceso actual.

C

Líneas de flecha

Conecta nodos para recuperar la ruta de acceso completa de la llamada de subprocesos.

D

Información sobre herramientas en los encabezados de nodo

Muestra el identificador y el nombre definido por el usuario de cada subproceso cuya ruta de acceso de llamada comparte este nodo.

E

Contexto del método

Representa uno o más marcos de pila del mismo método.

F

Información sobre herramientas en el contexto del método

Muestra detalles de todos los marcos de pila que representa el contexto del método. Los marcos de pila del subproceso actual se muestran en negrita.

Por otro lado, en la ventana Pilas paralelas, aparece un icono de Vista aérea en el recuadro principal cuando el gráfico es demasiado grande y no se ajusta a la ventana. Puede hacer clic en este icono para ver el gráfico completo en la ventana.

Iconos del contexto del método

En la siguiente tabla se describen los iconos que proporcionan información sobre los marcos de pila activos actuales:

Icono

Descripción

Flecha amarilla de pilas paralelas

Indica que el contexto del método contiene el marco de pila activo del subproceso actual.

Icono de subprocesos de pilas paralelas

Indica que el contexto del método contiene el marco de pila activo de un subproceso que no es el actual.

Flecha verde de pilas paralelas

Indica que el contexto del método contiene el marco de pila actual. Ese nombre de método está negrita en todos los nodos en los que aparece.

Controles de la barra de herramientas

En la siguiente ilustración y tabla se describen los controles que están disponibles en la barra de herramientas Pilas paralelas.

Barra de herramientas de la ventana Pilas paralelas

Letra de la llamada

Control

Descripción

A

Cuadro combinado de 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 subprocesos.

B

Mostrar marcadas únicamente

Solo muestra las pilas de llamadas de los subprocesos (o tareas) que están marcados en la ventana Subprocesos o en la ventana Tareas paralelas.

C

Alternar vista de método

Alterna entre la vista de pila y la vista de método. Para obtener más información, vea Vista de método.

D

Desplazar automáticamente al marco de pila actual

Desplaza automáticamente el diagrama para que el marco de pila actual esté a la vista. Esta característica es útil cuando está cambiando el marco de pila actual de otras ventanas o cuando está alcanzando un nuevo punto de interrupción en diagramas grandes.

E

Alternar control Zoom

Muestra u oculta el control Zoom. También puede hacer zoom presionando CTRL y girando la rueda del mouse, sin tener en cuenta la visibilidad del zoom.

Elementos del menú contextual

En la siguiente ilustración y tabla se describen los elementos de menú contextual que están disponibles al hacer clic con el botón secundario en un contexto de método en la vista de subprocesos o de tareas. Los últimos seis elementos se toman prestados directamente en la ventana Pila de llamadas y no presentan nuevo comportamiento.

Menú contextual de pilas paralelas

Menu Item

Descripción

Ir a tarea (Subproceso)

Realiza la misma función que el cuadro combinado de la barra de herramientas, pero mantiene el mismo marco de pila resaltado.

Cambiar a marco

Igual que el comando de menú correspondiente de la ventana Pila de llamadas. Sin embargo, con Pilas paralelas, varios marcos pueden corresponder a un contexto de método. Por consiguiente, el elemento de menú tiene submenús, cada uno de los cuales representa un marco de pila concreto. Si uno de los marcos de pila está en el subproceso actual, el menú que corresponde a ese marco de pila está seleccionado.

Ir al código fuente

Navega hasta la ubicación en el código fuente que corresponde al marco de pila en el que el usuario hizo clic con el botón secundario.

Ir al desensamblado

Se desplaza hasta la ubicación en la ventana del desensamblado que corresponde al marco de pila en el que el usuario hizo clic con el botón secundario.

Mostrar código externo

Muestra u oculta el código externo.

Presentación hexadecimal

Alterna entre la presentación hexadecimal y decimal.

Información de carga de símbolos

Muestra el cuadro de diálogo correspondiente.

Valores de los símbolos

Muestra el cuadro de diálogo correspondiente.

Vista de tareas

Si la aplicación está utilizando objetos System.Threading.Tasks.Task (código administrado) u objetos task_handle (código nativo) para expresar el paralelismo, puede utilizar el cuadro combinado de la barra de herramientas de la ventana Pilas paralelas para pasar a la vista de tareas. La vista de tareas muestra las pilas de llamadas de las tareas en lugar de los subprocesos. La vista de tareas difiere en la vista de subprocesos en lo siguiente:

  • No se muestran las pilas de llamadas de los subprocesos que no están ejecutando tareas.

  • Las pilas de llamadas de los subprocesos que están ejecutando tareas se recortan visualmente en la parte superior y superior para mostrar los marcos más pertinentes que pertenecen a las tareas.

  • Cuando varias tareas están en un subproceso, las pilas de llamadas de esas tareas se dividen en nodos independientes.

En la siguiente ilustración se muestra la vista de tareas de pilas paralelas a la derecha y la vista de subprocesos correspondiente a la izquierda.

Vista de tareas de pilas paralelas

Para ver la pila de llamadas completa, simplemente vuelva a la vista de subprocesos haciendo clic con el botón secundario en un marco de pila y haciendo clic a continuación en Ir a subproceso.

En la ilustración también se muestra que los encabezados de los nodos de la vista de tareas muestra el estado de las tareas que representan. Tal y como se describe en la tabla anterior, desplazando el puntero del mouse sobre un encabezado de nodo o un contexto de método, puede ver información adicional. En la imagen siguiente se muestra la información de la información sobre herramientas para la vista de subprocesos y de tareas.

Información sobre herramientas de pilas paralelas

Vista de método

Desde la vista de subprocesos o la de tareas, puede dinamizar el gráfico del método actual haciendo clic en el icono Vista de método de la barra de herramientas. 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 siguiente ilustración se muestra un vista de subprocesos y también el aspecto que tiene la misma información en la vista de método.

Vista de método de pilas paralelas

Si se pasa a un nuevo marco de pila, ese método se convierte en el método actual y hace que la ventana muestre todos los llamadores y destinatarios del nuevo método. Esto 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 de pilas, haga clic de nuevo en el botón de la barra de herramientas de la vista de método.

Vea también

Tareas

Tutorial: Depurar una aplicación paralela

Uso de la ventaja Tareas paralelas

Tutorial: Depurar una aplicación paralela

Referencia

Task Class

Conceptos

Programación paralela en .NET Framework

Otros recursos

Guía básica del depurador

Depurar código administrado