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.
En el caso de los subprocesos, las herramientas principales para depurar subprocesos son la ventana Subprocesos, los marcadores de subprocesos en ventanas de código fuente, la ventana Pilas paralelas, la ventana Inspección paralela y la barra de herramientas Ubicación de depuración. Para obtener información sobre la ventana Subprocesos y la barra de herramientas Ubicación de depuración, vea Tutorial: Depuración con la ventana Subprocesos. Para obtener información sobre cómo usar las ventanas Pilas paralelas e Inspección paralela, vea Introducción a la depuración de aplicaciones multiproceso. Ambos temas muestran cómo usar los marcadores de subproceso.
En el caso del código que usa la Biblioteca TPL o el Runtime de simultaneidad, las herramientas principales para depurar son la ventana Pilas paralelas, la ventana Inspección paralela y la ventana Tareas, que también admite JavaScript. Para empezar, vea Tutorial: Depuración de una aplicación paralela y Tutorial: Depurar una aplicación de C++ AMP.
Para depurar subprocesos en la GPU, la herramienta principal es la ventana Subprocesos de GPU. Vea Cómo: usar la ventana Subprocesos de GPU.
En el caso de los procesos, las herramientas principales son el cuadro de diálogo Asociar al proceso, la ventana Procesos y la barra de herramientas Ubicación de depuración.
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
Introducción a la depuración de aplicaciones multiproceso
Un recorrido por las características de depuración de subprocesos en la ventana Pilas paralelas y la ventana Inspección paralela.
Herramientas para depurar subprocesos y procesos
Se enumeran las características de las herramientas para depurar subprocesos y procesos.
-
Explica cómo depurar varios procesos.
Tutorial: Depuración con la ventana Subprocesos.
Tutorial en el que se explica cómo usar la ventana Subprocesos y la barra de herramientas Ubicación de depuración.
Tutorial: Depuración de una aplicación paralela
Tutorial en el que se explica cómo usar las ventanas Pilas paralelas y Tareas.
Cómo: cambiar a otro subproceso durante la depuración
Varias maneras de modificar el contexto de depuración a otro subproceso.
Seguimiento de un único subproceso durante la depuración
Varias maneras de modificar el contexto de depuración a otro subproceso.
Cómo: marcar y desmarcar subprocesos
Marque los subprocesos a los que desea prestar especial atención mientras se realiza la depuración.
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.
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.
Contenido relacionado
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de