» » » Внепроцессный отладчик для C++ в Visual Studio 2019

 

Внепроцессный отладчик для C++ в Visual Studio 2019

Автор: admin от 27-12-2018, 10:05, посмотрело: 52

В Visual Studio 2019 Preview 1 представлен улучшенный отладчик для C++, который использует внешний 64-разрядный процесс для размещения своих ресурсозатратных компонентов. Если у вас ранее возникали проблемы с памятью при отладке приложений C++, теперь эти проблемы должны быть в значительной степени решены с помощью Visual Studio 2019.



Ниже практический пример отладки Gears of War 4.



Внепроцессный отладчик для C++ в Visual Studio 2019



Предпосылки



Давая фидбек, C++ разработчики часто рассказывали о проблемах, связанных с большим использованием памяти во время отладки сложных C++ приложений. Большое потребление памяти связано с огромным количеством symbol data, которую дебаггер должен загружать и показывать в окне отладчика. Причем объем этой информации во время работы все время растет. В конечном итоге процесс Visual Studio может завершиться сбоем из-за нехватки памяти.



Мы внесли значительные улучшения в Visual Studio 2017, чтобы смягчить эту проблему. Например, в обновлении 15.6 введена оптимизация памяти для /Debug:fastlink, что привело к снижению потребления памяти отладчиком на 30%. Поскольку мы стремимся избежать этой проблемы в Visual Studio 2019, мы переместили компоненты с интенсивным использованием памяти в отдельный 64-битный процесс.



Пример из практики: Отладка Gears of War 4



Мы тесно сотрудничали с внутренними и внешними партнерскими командами, чтобы гарантировать, что изменения, которые мы вносили в отладчик, были проверены и обоснованы в больших реальных приложениях. Ниже мы продублировали видео из кдпв. В нем показано параллельное сравнение использования памяти между Visual Studio 2017 и Visual Studio 2019 при отладке Gears of War 4, разработанной The Coalition. Использование памяти Visual Studio 2017 увеличивается до 1,3 ГБ после нескольких минут просмотра кода игры и проверки переменных. Visual Studio 2019 обеспечивает гораздо лучшее использование памяти в том же сценарии: объем используемой памяти остается на уровне около 285 МБ, поскольку symbol data хранится в 64-разрядном рабочем процессе отладчика.



Внепроцессный отладчик для C++ в Visual Studio 2019


В runtime теперь все тоже работает намного лучше.



Неподдерживаемые сценарии и некоторые известные проблемы




  • Эта функция не поддерживается в 32-битных Windows

  • Символы для модулей C++/CLI все еще загружаются in-process

  • Устаревшие надстройки C++ Expression Evaluator (здесь пример) не поддерживаются в этом режиме.



Если вам необходимо продолжить использование отладчика in-process, вы можете отключить фичу, перейдя на вкладку «Debugging» в «Tools» «Options» и сняв флажок «Load debug symbols in external process (native only)».





Подготовить эту статью нам помогли ребята из Microsoft Developer Community @msdevru, канала сообщества Microsoft Developer для разработчиков и всех, кто интересуется новыми технологиям.

Источник: Хабр / Интересные публикации

Категория: Microsoft

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *