/Z7
, , /Zi
/ZI
(formát informací ladění)
Možnosti /Z7
, /Zi
a /ZI
kompilátoru určují typ ladicí informace vytvořené pro váš program a zda jsou tyto informace uloženy v souborech objektů nebo v souboru databáze programu (PDB).
Syntaxe
/Z7
/Zi
/ZI
Poznámky
Když zadáte možnost ladění, kompilátor vytvoří názvy symbolů pro funkce a proměnné, informace o typu a umístění řádků pro použití ladicím programem. Tyto symbolické informace o ladění mohou být zahrnuty buď v souborech objektů (.obj
soubory) vytvořené kompilátorem, nebo v samostatném souboru PDB ( .pdb
soubor) spustitelného souboru. Možnosti formátu informací o ladění jsou popsány v následujících částech.
Nic
Pokud není zadána možnost formátu informací o ladění, kompilátor ve výchozím nastavení nevygeneruje žádné informace o ladění, takže kompilace je rychlejší.
/Z7
Tato /Z7
možnost vytvoří soubory objektů, které obsahují také úplné symbolické informace o ladění pro použití s ladicím programem. Tyto soubory objektů a všechny knihovny vytvořené z nich mohou být podstatně větší než soubory, které nemají žádné informace o ladění. Symbolické informace o ladění zahrnují názvy a typy proměnných, funkcí a čísel řádků. Kompilátor nevygeneruje žádný soubor PDB. Soubor PDB je však možné vygenerovat z těchto souborů nebo knihoven objektů, pokud je linker předán možnost /DEBUG
.
Pro distributory ladicí verze knihoven třetích stran existuje výhoda, že soubor PDB nemáte. Soubory objektů pro všechny předkompilované hlavičky jsou však nezbytné během fáze propojení knihovny a pro ladění. Pokud soubor objektu obsahuje pouze informace o typu (a žádný kód .pch
), musíte při sestavování knihovny použít /Yl
také možnost (Vložit odkaz PCH pro knihovnu ladění), která je ve výchozím nastavení povolená.
Zastaralá /Gm
možnost (Povolit minimální opětovné sestavení) není dostupná, pokud /Z7
je zadána.
/Zi
Tato /Zi
možnost vytvoří samostatný soubor PDB, který obsahuje všechny symbolické informace o ladění pro použití s ladicím programem. Informace o ladění nejsou zahrnuty v souborech objektů nebo spustitelném souboru, což z nich dělá mnohem menší.
/Zi
Použití nemá vliv na optimalizace. Nicméně, znamená /debug
to /Zi
, že . Další informace najdete v tématu /DEBUG
(Generování informací o ladění).>
Když zadáte obojí /Zi
a /clr
, DebuggableAttribute atribut není umístěn v metadatech sestavení. Pokud ho chcete, musíte ho zadat ve zdrojovém kódu. Tento atribut může ovlivnit výkon modulu runtime aplikace. Další informace o tom, jak Debuggable
atribut ovlivňuje výkon a jak můžete upravit dopad na výkon, najdete v tématu Usnadnění ladění obrázku.
Kompilátor pojmenuje soubor <project>.pdb
PDB , kde <project>
je název projektu. Pokud zkompilujete soubor mimo projekt, kompilátor vytvoří soubor PDB s názvem VC<x>.pdb
, kde <x>
je zřetězení hlavní verze a podverze používané verze kompilátoru. Kompilátor vloží název souboru PDB a identifikaci časového razítka podpisu do každého souboru objektu vytvořeného pomocí této možnosti. Tento název a podpis odkazují ladicí program na umístění symbolických a čísel řádků. Název a podpis v souboru PDB musí odpovídat spustitelnému souboru pro symboly, které se mají načíst do ladicího programu. Ladicí program WinDBG může pomocí .symopt+0x40
příkazu načíst neshodné symboly. Visual Studio nemá podobnou možnost, jak načíst neodpovídající symboly.
Pokud vytvoříte knihovnu z objektů, které byly zkompilovány pomocí /Zi
, musí být přidružený soubor PDB k dispozici, když je knihovna propojena s programem. To znamená, že pokud knihovnu distribuujete, musíte také distribuovat soubor PDB. Chcete-li vytvořit knihovnu obsahující informace o ladění bez použití souborů PDB, musíte vybrat /Z7
možnost. Pokud použijete možnosti předkompilovaných hlaviček, informace o ladění pro předkompilovanou hlavičku i zbytek zdrojového kódu se umístí do souboru PDB.
/ZI
Tato /ZI
možnost je podobná /Zi
, ale vytvoří soubor PDB ve formátu, který podporuje funkci Upravit a pokračovat . Chcete-li použít funkce ladění Upravit a pokračovat, musíte použít tuto možnost. Funkce Upravit a pokračovat je užitečná pro produktivitu vývojářů, ale může způsobovat problémy s velikostí kódu, výkonem a souladem kompilátoru. Vzhledem k tomu, že většina optimalizací není kompatibilní s funkcemi Upravit a Pokračovat, použití /ZI
zakáže všechny #pragma optimize
příkazy v kódu. Tato /ZI
možnost je také nekompatibilní s použitím __LINE__
předdefinovaného makra. Kód zkompilovaný /ZI
pomocí nelze použít __LINE__
jako argument šablony bez typu, i když __LINE__
se dá použít v rozšířeních maker.
Tato /ZI
možnost vynutí /Gy
, aby se při kompilaci použily možnosti (Povolit propojení na úrovni funkce) i /FC
(úplná cesta k souboru zdrojového kódu v diagnostice ).
/ZI
je nekompatibilní s /clr
kompilací modulu Common Language Runtime.
Poznámka:
Tato /ZI
možnost je dostupná pouze v kompilátorech, které cílí na procesory x86 a x64. Tato možnost kompilátoru není dostupná v kompilátorech, které cílí na procesory ARM.
Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností konfigurace>C/C++>Obecné.
Upravte vlastnost Formát informací o ladění. Kliknutím na OK uložte provedené změny.
Programové nastavení tohoto parametru kompilátoru
- Viz třída DebugInformationFormat.
Viz také
Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC