Depurar aplicaciones multiproceso en Visual Studio

Un subproceso es una secuencia de instrucciones a la que el sistema operativo concede 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, procesadores de varios núcleos o procesos hyperthreading pueden ejecutar varios subprocesos simultáneos. El procesamiento en paralelo con muchos subprocesos puede mejorar considerablemente el rendimiento del programa, pero también puede dificultar la depuración porque se realiza el seguimiento de muchos subprocesos.

El multithreading puede introducir nuevos tipos de posibles errores. Por ejemplo, dos o más subprocesos pueden necesitar acceso al mismo recurso, pero únicamente un subproceso a la vez puede acceder al recurso con seguridad. Se necesita algún formulario de exclusión mutua para asegurarse de que únicamente un subproceso está teniendo acceso al recurso en cualquier momento. Si se implementa la exclusión mutua incorrectamente, puede crear una condición interbloqueo donde no se ejecutará ningún subproceso. Los interbloqueos suelen ser un problema difícil de depurar.

Herramientas para depurar aplicaciones multiproceso

Visual Studio proporciona diferentes herramientas para la depuración de aplicaciones multiproceso.

Visual Studio también proporciona eficaces puntos de interrupción y puntos de seguimiento, que pueden resultar útiles para depurar aplicaciones multiproceso. Use condiciones y filtros de puntos de interrupción para colocar puntos de interrupción en subprocesos individuales. Los puntos de seguimiento permiten poder seguir paso a paso la ejecución de su programa sin interrupciones, para estudiar problemas como los interbloqueos. Para más información, vea Acciones de punto de interrupción y puntos de seguimiento.

Depurar una aplicación multiproceso que tiene una interfaz de usuario puede resultar especialmente difícil. Puede que considere ejecutar la aplicación en un segundo equipo y usar la depuración remota. Para más información, vea Depuración remota.

Artículos sobre la depuración de aplicaciones multiproceso