Библиотека расширенных функциональных возможностей Visual Studio AddressSanitizer (VCAsan)
Библиотеки реализуют расширенные VCAsan*.lib
возможности интегрированной среды разработки отладчика в Visual Studio. Эти функции позволяют интегрированной среде разработки отображать ошибки AddressSanitizer в динамических сеансах отладки или в автономном режиме, сохраняя файл аварийного дампа с метаданными. Библиотека связана в любой момент, когда Параметр AddressSanitizer включен компилятором MSVC.
Инвентаризация библиотеки VCAsan
Параметр среды выполнения | Библиотека ссылок VCAsan |
---|---|
/MT |
libvcasan.lib |
/MD |
vcasan.lib |
/MTd |
libvcasand.lib |
/MDd |
vcasand.lib |
Функции библиотеки VCAsan
Окно отчета об ошибке Rich AddressSanitizer в интегрированной среде разработки Visual Studio
Библиотека VCAsan регистрирует обратный вызов в среде выполнения AddressSanitizer с помощью функции __asan_set_error_report_callback
интерфейса. Если создается отчет AddressSanitizer, этот обратный вызов используется для создания исключения, поймаемого Visual Studio. Visual Studio использует данные исключения для создания сообщения, отображаемого пользователю в интегрированной среде разработки.
Примечание.
Библиотека VCAsan регистрирует функцию обратного вызова в среде выполнения AddressSanitizer. Если код вызывает эту функцию регистрации во второй раз, она перезаписывает регистрацию обратного вызова библиотеки VCAsan. Это приводит к потере всех интеграции интегрированной среды разработки Visual Studio. Вы вернетесь к пользовательскому интерфейсу интегрированной среды разработки по умолчанию. Кроме того, можно зарегистрировать обратный вызов пользователя. При возникновении любой проблемы отправьте ошибку.
Сохранение ошибок AddressSanitizer в новом типе файла аварийного дампа
При связывании библиотеки VCAsan с исполняемым файлом пользователи могут включить его для создания аварийного дампа во время выполнения. Затем среда выполнения AddressSanitizer создает файл дампа при возникновении диагностики ошибки. Чтобы включить эту функцию, пользователь задает ASAN_SAVE_DUMPS
переменную среды с помощью такой команды:
set ASAN_SAVE_DUMPS=MyFileName.dmp
Файл должен иметь .dmp
расширение для выполнения соглашений интегрированной среды разработки Visual Studio. (До 17.7)
Вот что происходит при указании ASAN_SAVE_DUMPS
файла дампа для: если ошибка перехватывается средой выполнения AddressSanitizer, он сохраняет файл аварийного дампа, имеющий метаданные, связанные с ошибкой. Отладчик в Visual Studio версии 16.9 и более поздних версий может анализировать метаданные, сохраненные в файле дампа. Эти двоичные артефакты можно задать ASAN_SAVE_DUMPS
на основе каждого теста, а затем просмотреть их в интегрированной среде разработки с соответствующим исходным индексированием.
Visual Studio версии 17.7 и более поздних версий поддерживает следующее:
Строки с кавычками теперь обрабатываются правильно. В предыдущих версиях для сред в Visual Studio или при использовании PowerShell переменная среды, содержащая кавычки или пробелы, не сможет создать ожидаемый файл дампа.
.dmp
Если расширение явно указано (например,set ASAN_SAVE_DUMPS=MyDmp.dmp
), VCAsan использует его явным образом и не добавит связанный идентификатор процесса в имя файла дампа..dmp
Если файл уже существует с тем же именем, указанным из переменной среды, VCAsan изменяет имя файла следующим образом:- Добавляет число к имени файла в скобках. Например,
Myfile (1).dmp
. - Если после нескольких попыток добавления числа в скобках не удается создать уникальное имя, файл сохраняется во временный
%APPLOCAL%
путь, который VCAsan будет напечатан. Например,C:\Users\~\AppData\Local\Temp\Dump.dmp
. - Если сохранение на временный путь завершается ошибкой, отображается диагностическая ошибка.
- Добавляет число к имени файла в скобках. Например,
См. также
Обзор AddressSanitizer
Известные проблемы AddressSanitizer
Справочник по сборке и языку AddressSanitizer
Справочник по среде выполнения AddressSanitizer
Теневой байт AddressSanitizer
Облачное или распределенное тестирование AddressSanitizer
Примеры ошибок AddressSanitizer