Depurar aplicaciones multiproceso
Un subproceso es una secuencia de instrucciones a la que el sistema operativo asigna tiempo de procesador. Cada proceso que se ejecuta en el sistema operativo contiene al menos un subproceso. Los procesos que tienen más de un subproceso se denominan multiproceso.
Equipos con varios procesadores, con varios núcleos o con tecnología hyperthreading pueden ejecutar varios subprocesos al mismo tiempo. El procesamiento en paralelo de varios subprocesos puede mejorar notablemente el rendimiento del programa, pero también puede dificultar la depuración porque incluye la necesidad de efectuar el seguimiento de varios subprocesos.
Además, multithreading incluye algunos tipos de errores nuevos. Por ejemplo, a menudo dos o más subprocesos deben tener acceso al mismo recurso, pero únicamente un subproceso puede tener acceso al recurso sin ningún riesgo a la vez. Se necesita algún formulario de exclusión mutua para asegurarse de que únicamente uno subproceso está teniendo acceso al recurso a la vez. Si se realiza la exclusión mutua incorrectamente, puede crear una condición interbloqueo donde ningún subproceso se puede ejecutar. Los interbloqueos pueden ser un problema especialmente grave para realizar la depuración.
Visual Studio 2010 proporciona una ventana Subprocesos mejorada y otras mejoras de la interfaz de usuario que facilitan la depuración multiproceso. La mejor manera de obtener información sobre las nuevas características de la interfaz de subprocesamiento es realizar los pasos del tutorial. Vea Tutorial: Depurar una aplicación multiproceso.
Visual Studio también proporciona puntos de interrupción y puntos de seguimiento eficaces, que pueden ser muy útiles para depurar aplicaciones multiproceso. Puede utilizar filtros de puntos de interrupción para colocar puntos de interrupción en subprocesos individuales. Vea Cómo: Especificar un filtro de punto de interrupción.
Depurar una aplicación multiproceso que tiene una interfaz de usuario puede resultar especialmente difícil. En ese caso, puede que considere ejecutar la aplicación en un segundo equipo y usar la depuración remota. Para obtener más información, vea Instalación de la depuración remota.
En esta sección
Cómo: Utilizar la ventana Subprocesos
Procedimientos útiles para depurar subprocesos con la ventana Subprocesos.Cómo: Cambiar a otro subproceso durante la depuración
Tres maneras de modificar el contexto de depuración a otro subproceso.Cómo: Marcar y quitar marcadores de subprocesos
Marque los subprocesos a los que desea prestar especial atención mientras se realiza la depuración.Cómo: Establecer un nombre de subproceso en código nativo
Asigne al subproceso uno de los nombres que aparecen en la ventana Subprocesos.Cómo: Establecer un nombre de subproceso en código administrado
Asigne al subproceso uno de los nombres que aparecen en la ventana Subprocesos.Tutorial: Depurar una aplicación multiproceso.
Un paseo guiado por las características de depuración de subprocesos, con especial hincapié en los procedimientos de Visual Studio 2008.Cómo: Depurar en un clúster de alto rendimiento
Técnicas para depurar una aplicación que se ejecuta en un clúster de alto rendimiento.Sugerencias para depurar subprocesos en código nativo
Técnicas simples que pueden ser útiles para depurar los subprocesos nativos.Uso de la ventaja Tareas paralelas
Muestra una lista de todos los objetos de tarea administrados o nativos que incluye su estado y otra información útil.Uso de la ventana Tareas paralelas
Muestra pilas de llamadas de varios subprocesos (o tareas) en una vista única y también combina segmentos de pila que son comunes entre los subprocesos (o tareas).Tutorial: Depurar una aplicación paralela
Tutorial que muestra cómo utilizar ventanas de tareas y pilas paralelas.
Secciones relacionadas
Cómo: Especificar un filtro de punto de interrupción
Use filtros de puntos de interrupción donde desea colocar un punto de interrupción en un subproceso individual.Cómo: Especificar una acción de punto de seguimiento/punto de interrupción
Los puntos de seguimiento le habilitan para poder seguir paso a paso ejecución de su programa sin interrupciones. Esto puede ser útil para estudiar problemas como los interbloqueos.Subprocesamiento administrado
Conceptos relacionados con el subprocesamiento en programación de .NET Framework, incluido el código de ejemplo.Subprocesamiento múltiple en componentes
Cómo usar multithreading en componentes de .NET Framework.subprocesamiento múltiple
Conceptos relacionados con el subprocesamiento para programadores de C++ mediante MFC.Cómo: Depurar una aplicación de clúster remoto
Instrucciones sobre cómo configurar la depuración remota para una aplicación que se ejecuta en un clúster de alto rendimiento.