Depurar aplicaciones multiproceso en Visual Studio
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 2012 proporciona una ventana Subprocesos mejorada, la nueva ventana Subprocesos de GPU, la nueva ventana Inspección paralela 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 tutoriales. Vea Tutorial: Depurar una aplicación multiproceso y Tutorial: Depurar una aplicación de C++ AMP.
Visual Studio también proporciona eficaces puntos de interrupción y puntos de seguimiento, que pueden resultar muy útiles para depurar aplicaciones multiproceso. Puede utilizar filtros de puntos de interrupción para colocar puntos de interrupción en subprocesos individuales. Vea Puntos de interrupción: Usar números de llamadas, funciones de pila de llamadas y condiciones para realizar interrupciones cuando y donde quiera en el depurador de Visual Studio.
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 Depuración y diagnóstico remotos.
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.Usar la ventana Tareas
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.Cómo: Utilizar la Ventana Inspección paralela
Examinar los valores y las expresiones entre varios subprocesos.Cómo: Utilizar la ventana Subprocesos de GPU
Examinar y trabajar con subprocesos que se ejecutan en la GPU durante la depuración.
Secciones relacionadas
-
Use filtros de puntos de interrupción si desea colocar un punto de interrupción en un subproceso individual.
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.Compatibilidad del código antiguo con multithreading (Visual C++)
Conceptos relacionados con el subprocesamiento para programadores de C++ mediante MFC.