/Z7
, , /Zi
/ZI
(формат сведений отладки)
Параметры /Z7
компилятора /Zi
и /ZI
параметров компилятора указывают тип сведений об отладке, созданных для вашей программы, и хранится ли эта информация в файлах объектов или в PDB-файле базы данных программы.
Синтаксис
/Z7
/Zi
/ZI
Замечания
При указании параметра отладки компилятор создает имена символов для функций и переменных, сведений о типах и расположениях строк для использования отладчиком. Эти сведения о символьной отладке можно включить в файлы объектов (.obj
файлы), созданные компилятором, или в отдельный PDB-файл ( .pdb
файл) для исполняемого файла. Параметры формата сведений отладки описаны в следующих разделах.
нет
По умолчанию, если параметр формата отладочной информации не указан, компилятор не создает сведений об отладке, поэтому компиляция выполняется быстрее.
/Z7
Параметр /Z7
создает файлы объектов, которые также содержат полные сведения о символьной отладке для использования с отладчиком. Эти файлы объектов и все библиотеки, созданные из них, могут быть значительно больше, чем файлы, у которых нет сведений об отладке. Сведения о символьной отладке включают имена и типы переменных, функций и номеров строк. Файл PDB не создается компилятором. Однако PDB-файл по-прежнему может быть создан из этих файлов объектов или библиотек, если компоновщик передает /DEBUG
этот параметр.
Для распространителей отладочных версий сторонних библиотек есть преимущество не иметь PDB-файл. Однако файлы объектов для всех предварительно скомпилированных заголовков необходимы на этапе связывания библиотеки и для отладки. Если в .pch
файле объекта есть только сведения о типе (и нет кода), при сборке библиотеки необходимо также использовать /Yl
параметр (Внедрить ссылку PCH для библиотеки отладки), который включен по умолчанию при сборке библиотеки.
Нерекомендуемый /Gm
параметр (включить минимальное перестроение) недоступен при /Z7
указании.
/Zi
Параметр /Zi
создает отдельный PDB-файл, содержащий все сведения о символьной отладке для использования с отладчиком. Сведения об отладке не включаются в файлы объектов или исполняемые файлы, что делает их гораздо меньше.
/Zi
Использование не влияет на оптимизацию. /Zi
Однако это означает/debug
. Дополнительные сведения см. в разделе /DEBUG
(Создание сведений об отладке).
При указании обоих /Zi
и /clr
атрибут DebuggableAttribute не помещается в метаданные сборки. Если вы хотите, необходимо указать его в исходном коде. Этот атрибут может повлиять на производительность приложения во время выполнения. Дополнительные сведения о том, как атрибут влияет на производительность и как Debuggable
можно изменить влияние на производительность, см. в статье "Упрощение отладки образа".
Компилятор называет PDB-файл <project>.pdb
, где <project>
находится имя проекта. При компиляции файла за пределами проекта компилятор создает PDB-файл с именем VC<x>.pdb
, где <x>
выполняется объединение основного и дополнительного номера версии используемой версии компилятора. Компилятор внедряет имя PDB и определяющую метку времени в каждом файле объекта, созданном с помощью этого параметра. Это имя и подпись указывают отладчику расположение символьных и строковых сведений. Имя и подпись в PDB-файле должны соответствовать исполняемому файлу для загрузки символов в отладчике. Отладчик WinDBG может загружать несогласованные символы с помощью .symopt+0x40
команды. Visual Studio не имеет аналогичного варианта загрузки несогласованных символов.
Если вы создаете библиотеку из объектов, скомпилированных с помощью, /Zi
связанный PDB-файл должен быть доступен, когда библиотека связана с программой. Это означает, что при распространении библиотеки необходимо также распространить PDB-файл. Чтобы создать библиотеку, содержащую сведения об отладке без использования PDB-файлов, необходимо выбрать /Z7
этот параметр. Если вы используете параметры предварительно скомпилированных заголовков, отладка сведений как для предварительно скомпилированного заголовка, так и остального исходного кода помещается в PDB-файл.
/ZI
Этот /ZI
параметр аналогичен /Zi
, но он создает PDB-файл в формате, который поддерживает функцию "Изменить и продолжить ". Чтобы использовать функции редактирования и продолжения отладки, необходимо использовать этот параметр. Функция "Изменить и продолжить" полезна для производительности разработчика, но может вызвать проблемы с размером кода, производительностью и соответствием компилятора. Так как большинство оптимизаций несовместимы с изменением и продолжением, использование /ZI
отключает все #pragma optimize
инструкции в коде. Параметр /ZI
также несовместим с использованием предопределенного макроса; код, скомпилированный с /ZI
помощью __LINE__
аргумента шаблона, отличного __LINE__
от типа, хотя __LINE__
может использоваться в расширениях макросов.
Параметр /ZI
позволяет/Gy
использовать параметры (включить связывание на уровне функций) и /FC
(полный путь к файлу исходного кода в диагностике) в компиляции.
/ZI
несовместим с /clr
(компиляция среды CLR).
Примечание.
Этот /ZI
параметр доступен только в компиляторах, предназначенных для процессоров x86 и x64. Этот параметр компилятора недоступен в компиляторах, предназначенных для процессоров ARM.
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Общие.
Измените свойство "Формат сведений отладки". Нажмите ОК, чтобы сохранить внесенные изменения.
Установка данного параметра компилятора программным способом
- См. раздел DebugInformationFormat.
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC