Share via


Cómo: Utilizar la ventana Subprocesos

Actualización: noviembre 2007

Este tema se aplica a:

Edición

Visual Basic

C#

C++

Web Developer

Express

Standard

Pro y Team

Leyenda de la tabla:

Se aplica

No procede

Comando o comandos ocultos de forma predeterminada.

Desde la ventana Subprocesos, puede examinar y manipular los subprocesos del programa que esté depurando.

La ventana Subprocesos contiene una lista de todos los subprocesos que existen actualmente en el programa. La lista ofrece cierta información útil de cada proceso:

  • Las columnas Nombre e Id. muestran el nombre y el número de id. del subproceso, lo que le ayuda a identificar los subprocesos.

  • La columna Prioridad muestra la prioridad que el sistema ha asignado a cada subproceso.

  • La columna Suspender muestra el recuento de suspensión, que determina si un subproceso se puede ejecutar en ese momento. Para obtener una explicación sobre el recuento de suspensión, vea la sección Inmovilizar y reanudar subprocesos en este tema.

  • La columna Categoría clasifica los subprocesos como subprocesos de interfaz de usuario, controladores de llamadas a procedimientos remotos o subprocesos de trabajo. Esta columna también identifica el subproceso principal.

  • La columna Ubicación muestra la ubicación de origen en la que se crea un subproceso.

  • La columna de marcador no tiene etiqueta y está situada en el extremo izquierdo. Cuando se marca un subproceso que se desea estudiar, aparece un icono de marcador en esta columna. Para obtener instrucciones sobre cómo marcar subprocesos, vea Cómo: Marcar y quitar marcadores de subprocesos.

  • Finalmente, hay otra columna sin etiqueta, que es la segunda empezando por la izquierda. Esta es la columna de subproceso activo. Una flecha amarilla en esta columna indica un subproceso activo.

Para mostrar la ventana Subprocesos en modo de interrupción o modo de ejecución

  • En el menú Depurar, elija Ventanas y, a continuación, haga clic en Subprocesos.

Para ordenar la lista de subprocesos

  1. En la ventana Subprocesos, haga clic en el botón situado en la parte superior de cualquier columna.

    • Para ordenar los subprocesos marcados en la parte superior de la lista, haga clic en el botón del extremo izquierdo.

    • Para ordenar los subprocesos activos en la parte superior de la lista, haga clic en el segundo botón empezando por la izquierda.

    • Para ordenar los subprocesos con los números de id. más bajos en la parte superior, haga clic en el botón Id..

    • Para ordenar los subprocesos por categoría, haga clic en el botón Categoría. Así se clasifican los subprocesos en categorías funcionales ordenadas alfabéticamente.

    • Para ordenar los subprocesos por nombre, haga clic en el botón Nombre.

    • Para ordenar los subprocesos por ubicaciones de origen, haga clic en el botón Ubicación.

    • Para ordenar los subprocesos con la máxima prioridad en la parte superior, haga clic en el botón Prioridad.

    • Para ordenar los subprocesos con los recuentos de suspensión más bajos en la parte superior, haga clic en el botón Suspender.

  2. Si desea invertir el criterio de ordenación, haga clic de nuevo en el mismo botón. Si ordena por número de id. de subproceso, por ejemplo, los subprocesos con números de id. más bajos aparecen ordenados en la parte superior. Si vuelve a hacer clic en el botón Id., los subprocesos con números de id. más altos quedan ordenados en la parte superior.

Para modificar el contexto de depuración a otro subproceso

  • En la ventana Subprocesos, haga clic con el botón secundario en un subproceso y, a continuación, elija Cambiar a subproceso en el menú de acceso directo.

    O bien

  • Haga doble clic en un subproceso cualquiera.

    El subproceso activo se indica con una flecha amarilla.

Inmovilizar y reanudar subprocesos

Los subprocesos se pueden inmovilizar o reanudar. Cuando se inmoviliza un subproceso, el sistema no iniciará su ejecución aunque haya recursos disponibles.

En código nativo, los subprocesos se pueden suspender o reanudar llamando a las funciones de Windows SuspendThread y ResumeThread o a las funciones de MFC CWinThread::SuspendThread y CWinThread::ResumeThread. Cuando se llama a SuspendThread o ResumeThread se cambia el recuento de suspensión, que aparece en la ventana Subprocesos. Sin embargo, la inmovilización o la reanudación de un subproceso nativo no cambia el recuento de suspensión. En código nativo, un subproceso no se puede ejecutar a menos que se reanude y tenga un recuento de suspensión de cero.

En código administrado, la inmovilización o la reanudación de un subproceso cambia el recuento de suspensión. En código administrado, un subproceso inmovilizado tiene un recuento de suspensión de 1. En código nativo, un subproceso inmovilizado tiene un recuento de suspensión de 0, a menos que el subproceso se haya suspendido con una llamada a SuspendThread.

Nota:

Cuando se depura una llamada de código nativo a código administrado, el código administrado se ejecuta en el mismo subproceso físico que el código nativo que lo llama. La suspensión o la inmovilización del subproceso nativo inmoviliza también el código administrado.

Para inmovilizar la ejecución de un subproceso

  • En la ventana Subprocesos, haga clic con el botón secundario del mouse en un subproceso y elija Inmovilizar en el menú de acceso directo.

Para reanudar la ejecución de un subproceso

  • En la ventana Subprocesos, haga clic con el botón secundario del mouse en un subproceso inmovilizado y elija Descongelar en el menú de acceso directo.

Mostrar pilas de llamadas de subprocesos y cambiar entre marcos

En un programa multiproceso, cada subproceso tiene su propia pila de llamadas. La ventana Subprocesos proporciona un medio cómodo para ver las pilas de llamadas de subprocesos.

Para ver la pila de llamadas de un subproceso

  • En la ventana Subprocesos, coloque el puntero del mouse sobre la línea correspondiente al subproceso que desea estudiar en la columna de subprocesos activos.

    Después de un retraso momentáneo, aparece una información sobre datos. Esta información sobre datos muestra la pila de llamadas del subproceso.

Vea también

Tareas

Tutorial: Depurar una aplicación multiproceso

Otros recursos

Depurar aplicaciones multiproceso