Облачное и распределенное тестирование 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 в распределенной системе
- Сборка и после обработки PDB для блоков данных исходного индексирования
- Скопируйте атомарную пару (.exe, PDB) на тестовую машину и выполните тесты.
- Запись атомарных пар (PDB, .dmp) в базу данных отчетов об ошибках
- Visual Studio открывает файл .dmp с парным PDB в том же каталоге.
Примечание.
Компьютер Visual Studio 2019, используемый для анализа, должен иметь доступ к GitHub или внутреннему \\Machine\share
месту хранения индексированного источника.
Просмотр файлов .dmp AddressSanitizer
Убедитесь, что интегрированная среда разработки отладчика может найти PDB и исходные файлы.
Откройте Visual Studio и нажмите кнопку "Продолжить" без кода. Затем выберите "Открыть файл">, чтобы открыть диалоговое окно "Открыть>файл". Убедитесь, что суффикс имени файла .dmp.
На экране, показанном здесь, требуется еще один шаг, чтобы включить доступ интегрированной среды разработки к символам и источнику.
Задайте пути к символам и выберите "Отладка только для машинного кода".
На этом снимке экрана показан окончательный загруженный файл дампа с загруженными источниками и метаданными AddressSanitizer.
Источник и символы
Исходный сервер позволяет клиенту получить точную версию исходных файлов, используемых для создания приложения. Исходный код исполняемого файла или библиотеки DLL может изменяться с течением времени и между версиями. Его можно использовать для просмотра того же исходного кода, который создал определенную версию приложения.
При отладке EXE с помощью PDB-файла отладчик может использовать встроенный блок данных исходного сервера для получения соответствующих файлов из системы управления версиями. Он загружает файлы, которые сопоставляются с полными именами, помещаемыми в PDB автоматически параметром компилятора /Zi
.
Чтобы использовать исходный srcsrv
сервер, приложение должно быть "индексировано источником" с помощью pdbstr.exe
записи блока данных в PDB-файл. Дополнительные сведения см. в разделе "Блок данных" исходного сервера и исходного индексирования. Вы найдете шаги по индексации источников и публикации символов, а также указание символов и исходного кода для отладчика.
Сведения о внешней документации см. в статье:.
- Индексирование источника с помощью Git
- Руководство по упрощению отладки
- Исходный индексирование является недоиспользуемой удивительным
См. также
Обзор AddressSanitizer
Известные проблемы AddressSanitizer
Справочник по сборке и языку AddressSanitizer
Справочник по среде выполнения AddressSanitizer
Теневой байт AddressSanitizer
Интеграция отладчика AddressSanitizer
Примеры ошибок AddressSanitizer