Вчера сотрудники Microsoft представили поддержку AddressSanitizer (ASan) для C++ в Visual Studio 2019 версии 16.4. ASan — это быстрый детектор ошибок памяти, который может обнаруживать проблемы во время выполнения: обращение к памяти после освобождения (use-after-free), выход за границы выделенного блока (out of bounds).



Для интеграции ASan были внесены следующие изменения:


  • Среда выполнения (runtime) ASan'а была адаптирована для работы с бинарными файлами Windows
  • Компилятор MSVC теперь может инструментировать собираемые модули проверками ASan
  • Сборки средствами MSBuild и CMake обновлены для поддержки ASan



  • Отладчик Visual Studio умеет распознавать и интерпретировать ошибки обнаруживаемые проверками ASan

  • ASan можно установить инсталлятором Visual Studio в рамках C++ Desktop


Технические подробности и особенности можно узнать в оригинальном посте Microsoft.

Комментарии (3)


  1. Kobalt_x
    24.10.2019 09:43

    Означает ли это отказ от win verifier?
    В части проверок памяти


    1. kITerE Автор
      24.10.2019 09:46

      Хороший вопрос. Возможно оставят два механизма проверок.


    1. kITerE Автор
      25.10.2019 11:57

      Мои предположения о двух независимых инструментах косвенно подтвердились:
      https://devblogs.microsoft.com/cppblog/addresssanitizer-asan-for-windows-with-msvc/#comment-590


      ApplicationVerifier and ASan shouldn’t be used at the same time. I don’t know if they are strictly incompatible but it wouldn’t get you anything extra to use both and would probably be kind of slow.