company_banner

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

https://blogs.msdn.microsoft.com/vcblog/2018/12/18/out-of-process-debugger-for-c-in-visual-studio-2019/
  • Перевод
В Visual Studio 2019 Preview 1 представлен улучшенный отладчик для C++, который использует внешний 64-разрядный процесс для размещения своих ресурсозатратных компонентов. Если у вас ранее возникали проблемы с памятью при отладке приложений C++, теперь эти проблемы должны быть в значительной степени решены с помощью Visual Studio 2019.

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



Предпосылки


Давая фидбек, 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-разрядном рабочем процессе отладчика.



В 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 для разработчиков и всех, кто интересуется новыми технологиям.
  • +13
  • 6,3k
  • 5
Microsoft
412,00
Microsoft — мировой лидер в области ПО и ИТ-услуг
Поделиться публикацией

Комментарии 5

    +6
    На что только не пойдешь чтобы не делать x64 билд студии.
      +1
      Интересно, а как они сейчас, в уже почти 2019-м году, объясняют отсутствие х64-версии Студии? Официальная отмазка какая?
        +1

        Предположу, что куча COM legacy.

          0

          Я на него даже иногда натыкался в 2017. Сценарий не помню, но окно Solution Explorer исчезало, а в строке состояния было что-то вроде COM component failed with HRESULT_FAIL

          0

          Возможно в будущем они перепишут студию с нуля и представят это как мега релиз супер крутой IDE с x64 и т.д.


          А пока будут менять иконки, цветовые схемы, добавлять интеграцию с соц.сетями и прочие "полезные вещи".
          Поживём увидим.

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

      Самое читаемое