Depurador fuera de proceso para C ++ en Visual Studio 2019

Visual Studio 2019 Preview 1 presenta un depurador mejorado para C ++ que utiliza un proceso externo de 64 bits para alojar sus componentes que requieren muchos recursos. Si anteriormente tuvo problemas de memoria al depurar aplicaciones C ++, ahora estos problemas deberían resolverse en gran medida con Visual Studio 2019.

A continuación se muestra un ejemplo práctico de depuración de Gears of War 4.



Antecedentes


Al dar retroalimentación, los desarrolladores de C ++ a menudo hablaban sobre los problemas asociados con el uso elevado de memoria al depurar aplicaciones complejas de C ++. Un gran consumo de memoria está asociado con una gran cantidad de datos de símbolos, que el depurador debe cargar y mostrar en la ventana del depurador. Además, la cantidad de esta información crece constantemente durante el trabajo. En última instancia, el proceso de Visual Studio puede fallar debido a la falta de memoria.

Hemos realizado mejoras significativas en Visual Studio 2017 para mitigar este problema. Por ejemplo, la actualización 15.6 introdujo la optimización de memoria para / Debug: fastlink, lo que condujo a una reducción del 30% en el consumo de memoria por parte del depurador. Como nos esforzamos por evitar este problema en Visual Studio 2019, trasladamos los componentes que requieren mucha memoria a un proceso separado de 64 bits.

Estudio de caso: Depuración de Gears of War 4


Trabajamos en estrecha colaboración con los equipos de socios internos y externos para garantizar que los cambios que realizamos en el depurador se validaron y validaron en grandes aplicaciones del mundo real. A continuación duplicamos el video del cdpv. Muestra una comparación paralela del uso de memoria entre Visual Studio 2017 y Visual Studio 2019 al depurar Gears of War 4 desarrollado por The Coalition. El uso de memoria de Visual Studio 2017 se incrementa a 1.3 GB después de unos minutos de ver el código del juego y verificar las variables. Visual Studio 2019 proporciona un uso de memoria mucho mejor en el mismo escenario: la cantidad de memoria utilizada permanece en alrededor de 285 MB, porque los datos de símbolos se almacenan en un flujo de trabajo de depurador de 64 bits.



Ahora todo funciona mucho mejor en tiempo de ejecución también.

Escenarios no compatibles y algunos problemas conocidos


  • Esta característica no es compatible con Windows de 32 bits.
  • Los símbolos para los módulos C ++ / CLI todavía se están cargando en el proceso
  • Los complementos obsoletos del Evaluador de expresiones de C ++ ( aquí un ejemplo) no son compatibles con este modo.

Si necesita continuar usando el depurador en proceso, puede desactivar la función yendo a la pestaña "Depuración" en "Herramientas" -> "Opciones" y desmarcando "Cargar símbolos de depuración en proceso externo (solo nativo)".



Los chicos de la Comunidad de desarrolladores de Microsoft @msdevru, el canal de la comunidad de desarrolladores de Microsoft para desarrolladores y todos los interesados ​​en las nuevas tecnologías nos ayudaron a preparar este artículo.

Source: https://habr.com/ru/post/es433992/


All Articles