Поделиться через


/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

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Общие.

  3. Измените свойство "Формат сведений отладки". Нажмите ОК, чтобы сохранить внесенные изменения.

Установка данного параметра компилятора программным способом

См. также

Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC