Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Visual Studio 2019 версии 16.1 поддержка AddressSanitizer (ASan) интегрирована в проектах Linux. Вы можете включить ASan для проектов Linux на основе MSBuild и проектов CMake. Это средство работает в удаленных системах Linux и подсистеме Windows для Linux (WSL).
Об ASan
ASan — это средство обнаружения ошибок использования памяти в среде выполнения для C/C++, которое перехватывает следующие ошибки:
- Use after free (dangling pointer reference);
- Heap buffer overflow;
- Stack buffer overflow;
- Use after return;
- Use after scope;
- Initialization order bugs.
Когда средство ASan обнаруживает ошибку, оно немедленно останавливает выполнение. При запуске приложения с поддержкой ASan в отладчике появляется сообщение с описанием типа ошибки, адресом памяти и расположением в исходном файле, где произошла ошибка:
Вы также можете просмотреть все выходные данные ASan (включая сведения о расположении выделенной или освобожденной поврежденной памяти) на панели отладки в окне вывода.
Включение ASan для проектов Linux на основе MSBuild
Примечание.
Начиная с версии Visual Studio 2019 16.4 AddressSanitizer для проектов Linux включается в разделе Свойства проекта>Свойства конфигурации>C/C++>Enable Address Sanitizer (Включить AddressSanitizer).
Чтобы включить ASan для проектов Linux на основе MSBuild, щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства. Затем перейдите в меню Свойства конфигурации>C/C++>Санитайзеры. ASan включается с помощью флагов компоновщика и компилятора. При этом проект должен быть перекомпилирован.
Вы можете передать необязательные флаги среды выполнения ASan, выбрав Свойства конфигурации>Отладка>Флаги среды выполнения AddressSanitizer. Щелкните стрелку вниз, чтобы добавить или удалить флаги.
Включение ASan для проектов Visual Studio CMake
Примечание.
Для сборки с использованием предустановок CMake, сначала включите ASan в файле CMakeLists.txt. Дополнительные сведения: Включение AddressSanitizer для Windows и Linux.
Чтобы включить ASan для CMake, щелкните правой кнопкой мыши файл CMakeLists.txt в обозревателе решений и выберите Параметры CMake для проекта.
При этом следует выбрать конфигурацию Linux (например, Linux-Debug) в левой части диалогового окна:
Параметры ASan доступны в разделе Общие. Введите флаги ASan среды выполнения в формате "флаг=значение", разделенные пробелами. Интерфейс пользователя ошибочно предлагает использовать точку с запятой. Используйте пробелы или двоеточия для разделения флагов.
Установка отладочных символов ASan
Чтобы включить диагностику ASan, необходимо установить соответствующие отладочные символы (libasan-dbg) на удаленном компьютере Linux или в установке WSL. Версия libasan-dbg, которую можно загрузить, зависит от версии GCC, установленной на компьютере Linux:
| Версия ASan | Версия GCC |
|---|---|
| libasan0 | gcc-4.8 |
| libasan2 | gcc-5 |
| libasan3 | gcc-6 |
| libasan4 | gcc-7 |
| libasan5 | gcc-8 |
Чтобы узнать существующую версию GCC, выполните следующую команду:
gcc --version
Чтобы узнать требуемую версию libasan-dbg, запустите программу и просмотрите сведения на панели Отладка в окне Вывод. Загруженная версия libasan-dbg которую можно загрузить, соответствует требуемой версии libasan-dbg, установленной на компьютере Linux. Вы можете нажать клавиши CTRL+F, чтобы ввести libasan в окне. Например, если у вас есть libasan4, вы увидите примерно такую строку:
Loaded '/usr/lib/x86_64-linux-gnu/libasan.so.4'. Symbols loaded.
Биты отладки ASan можно установить в дистрибутивах Linux с поддержкой apt, выполнив следующую команду, которая устанавливает версию 4:
sudo apt-get install libasan4-dbg
Полные инструкции по установке пакетов отладочных символов в Ubuntu можно найти в статье Пакеты отладочных символов.
Если средство ASan включено, в Visual Studio в верхней части панели Отладка в окне Вывод отобразится запрос на установку отладочных символов ASan.