Облачное и распределенное тестирование AddressSanitizer

Не нужно отлаживать ошибки AddressSanitizer, когда и где они происходят. Настройте среду выполнения, чтобы создать аварийный дамб, который сохраняет весь контекст AddressSanitizer при возникновении ошибки. Затем отправьте этот аварийный дампов на другой компьютер для отладки. Автономная отладка может быть критическим временем при запуске AddressSanitizer в облаке или в распределенном тестировании. Вы можете создать дамп на тестовой или рабочей инфраструктуре, где происходит сбой, и выполнить отладку на компьютере разработчика позже.

Отладчик Visual Studio предоставляет точно диагностированные ошибки AddressSanitizer. Эти ошибки можно просматривать без необходимости повторно выполнять тесты, копировать огромные наборы данных, обнаруживать потерянные данные или находить тестовые компьютеры, которые были отключены. Вам нужно загрузить только аварийный дампа.

Аварийные дампы создаются при сбоях AddressSanitizer, задав следующую переменную среды:

set ASAN_SAVE_DUMPS=MyFileName.dmp

Примечание.

Имя файла должно иметь суффикс .dmp для выполнения соглашений об именовании Visual Studio.

Этот файл дампа можно отобразить с помощью Visual Studio позже на другом компьютере.

Visual Studio может отображать сведения об ошибке в контексте исходного исходного исходного кода. Для этого Visual Studio требует отладки символов и индексированного исходного кода. Для оптимальной отладки необходимо соответствовать EXE, PDB и исходному коду, используемому для создания этих двоичных файлов.

Дополнительные сведения о хранении источников и символов см. в разделе "Источник и символы ". Сведения о реализации и детальном управлении см. в разделе интеграции отладчика.

Пример: сборка, тестирование и анализ

Рассмотрим три компьютера: A, B и C. Сборки выполняются на компьютере B, тесты выполняются на компьютере C, и вы анализируете сбои на компьютере A. Ошибки отображаются в исходном коде и номерах столбцов в исходном коде. Стек вызовов можно увидеть вместе с набором символов в PDB-файле, создаваемом с использованием этой точной версии исходного кода.

Следующие действия предназначены для локальных или распределенных сценариев, которые приводят к созданию DMP-файла, а также для просмотра файла дампа AddressSanitizer в автономном режиме.

Создание DMP локально

  • Сборка
  • Проверка исполняемого файла
  • Копирование созданного DMP-файла в каталог сборки
  • Откройте DMP-файл с парным PDB-файлом в том же каталоге.

Создание DMP в распределенной системе

Примечание.

Компьютер Visual Studio 2019, используемый для анализа, должен иметь доступ к GitHub или внутреннему \\Machine\share месту хранения индексированного источника.

Просмотр DMP-файлов AddressSanitizer

  1. Убедитесь, что интегрированная среда разработки отладчика может найти PDB и исходные файлы.

  2. Откройте Visual Studio и нажмите кнопку "Продолжить" без кода. Затем выберите "Открыть файл">, чтобы открыть диалоговое окно "Открыть>файл". Убедитесь, что суффикс имени файла — DMP.

    Screenshot of the File Open File menu in Visual Studio.

    На экране, показанном здесь, требуется еще один шаг, чтобы включить доступ интегрированной среды разработки к символам и источнику.

  3. Задайте пути к символам и выберите "Отладка только для машинного кода".

    Screenshot of the Minidump Summary display in Visual Studio.

На этом снимке экрана показан окончательный загруженный файл дампа с загруженными источниками и метаданными AddressSanitizer.

Screenshot of the debugger showing source files and AddressSanitizer metadata.

Источник и символы

Исходный сервер позволяет клиенту получить точную версию исходных файлов, используемых для создания приложения. Исходный код исполняемого файла или библиотеки DLL может изменяться с течением времени и между версиями. Его можно использовать для просмотра того же исходного кода, который создал определенную версию приложения.

При отладке EXE с помощью PDB-файла отладчик может использовать встроенный блок данных исходного сервера для получения соответствующих файлов из системы управления версиями. Он загружает файлы, которые сопоставляются с полными именами, помещаемыми в PDB автоматически параметром компилятора /Zi .

Чтобы использовать исходный srcsrv сервер, приложение должно быть "индексировано источником" с помощью pdbstr.exe записи блока данных в PDB-файл. Дополнительные сведения см. в разделе "Блок данных" исходного сервера и исходного индексирования. Вы найдете шаги по индексации источников и публикации символов, а также указание символов и исходного кода для отладчика.

Сведения о внешней документации см. в статье:.

См. также

Обзор AddressSanitizer
Известные проблемы AddressSanitizer
Справочник по сборке и языку AddressSanitizer
Справочник по среде выполнения AddressSanitizer
Теневой байт AddressSanitizer
Интеграция отладчика AddressSanitizer
Примеры ошибок AddressSanitizer