Delen via


/Z7, , /Zi/ZI (Foutopsporingsinformatie-indeling)

De /Z7opties voor , /Zien /ZI compileren geven het type foutopsporingsgegevens op dat voor uw programma is gemaakt en of deze informatie wordt bewaard in objectbestanden of in een PDB-bestand (Program Database).

Syntaxis

/Z7
/Zi
/ZI

Opmerkingen

Wanneer u een foutopsporingsoptie opgeeft, produceert de compiler symboolnamen voor functies en variabelen, typ informatie en regellocaties voor gebruik door het foutopsporingsprogramma. Deze symbolische foutopsporingsgegevens kunnen worden opgenomen in de objectbestanden (.obj bestanden) die door de compiler worden geproduceerd, of in een afzonderlijk PDB-bestand (een .pdb bestand) voor het uitvoerbare bestand. De indelingsopties voor foutopsporing worden beschreven in de volgende secties.

Geen

Als er geen optie voor foutopsporingsinformatie is opgegeven, produceert de compiler standaard geen foutopsporingsgegevens, dus compilatie is sneller.

/Z7

De /Z7 optie produceert objectbestanden die ook volledige symbolische foutopsporingsgegevens bevatten voor gebruik met het foutopsporingsprogramma. Deze objectbestanden en bibliotheken die hierop zijn gebouwd, kunnen aanzienlijk groter zijn dan bestanden zonder foutopsporingsgegevens. De symbolische foutopsporingsinformatie bevat de namen en typen variabelen, functies en regelnummers. Er wordt geen PDB-bestand geproduceerd door de compiler. Een PDB-bestand kan echter nog steeds worden gegenereerd op basis van deze objectbestanden of -bibliotheken als de linker wordt doorgegeven aan de /DEBUG optie.

Voor distributeurs van foutopsporingsversies van bibliotheken van derden is er een voordeel dat u geen PDB-bestand hebt. De objectbestanden voor eventuele vooraf gecompileerde headers zijn echter nodig tijdens de fase van de bibliotheekkoppeling en voor foutopsporing. Als er alleen typegegevens (en geen code) in het .pch objectbestand staan, moet u ook de /Yl optie (PCH Reference for Debug Library injecteren) gebruiken, die standaard is ingeschakeld wanneer u de bibliotheek bouwt.

De afgeschafte /Gm optie (Minimale herbouw inschakelen) is niet beschikbaar wanneer /Z7 deze is opgegeven.

/Zi

De /Zi optie produceert een afzonderlijk PDB-bestand dat alle symbolische foutopsporingsgegevens bevat voor gebruik met het foutopsporingsprogramma. De foutopsporingsgegevens worden niet opgenomen in de objectbestanden of het uitvoerbare bestand, waardoor ze veel kleiner worden.

Het gebruik van /Zi is niet van invloed op optimalisaties. /Zi Impliceert /debugechter wel . Zie (Foutopsporingsgegevens genereren) voor/DEBUG meer informatie.

Wanneer u beide /Zi opgeeft en /clr, wordt het DebuggableAttribute kenmerk niet in de metagegevens van de assembly geplaatst. Als u dit wilt, moet u deze opgeven in de broncode. Dit kenmerk kan van invloed zijn op de runtimeprestaties van de toepassing. Zie Een afbeelding gemakkelijker fouten opsporen voor meer informatie over hoe het Debuggable kenmerk van invloed is op de prestaties en hoe u de invloed van de prestaties kunt wijzigen.

De compiler noemt het PDB-bestand <project>.pdb, waar <project> is de naam van uw project. Als u een bestand buiten een project compileert, maakt de compiler een PDB-bestand met de naam VC<x>.pdb, waarbij <x> een samenvoeging is van het primaire en secundaire versienummer van de compilerversie die wordt gebruikt. De compiler sluit de naam van de PDB in en een geïdentificeerde tijdstempelhandtekening in elk objectbestand dat met deze optie is gemaakt. Deze naam en handtekening wijzen het foutopsporingsprogramma aan op de locatie van symbolische en regelnummergegevens. De naam en handtekening in het PDB-bestand moeten overeenkomen met het uitvoerbare bestand voor symbolen die moeten worden geladen in het foutopsporingsprogramma. Het WinDBG-foutopsporingsprogramma kan niet-overeenkomende symbolen laden met behulp van de .symopt+0x40 opdracht. Visual Studio heeft geen vergelijkbare optie om niet-overeenkomende symbolen te laden.

Als u een bibliotheek maakt op basis van objecten die zijn gecompileerd met behulp /Zivan, moet het bijbehorende PDB-bestand beschikbaar zijn wanneer de bibliotheek is gekoppeld aan een programma. Dat betekent dat als u de bibliotheek distribueert, u het PDB-bestand ook moet distribueren. Als u een bibliotheek wilt maken die foutopsporingsgegevens bevat zonder PDB-bestanden te gebruiken, moet u de /Z7 optie selecteren. Als u de opties voor vooraf gecompileerde headers gebruikt, wordt foutopsporingsinformatie voor zowel de vooraf gecompileerde header als de rest van de broncode in het PDB-bestand geplaatst.

/ZI

De /ZI optie is vergelijkbaar met /Zi, maar het produceert een PDB-bestand in een indeling die ondersteuning biedt voor de functie Bewerken en Doorgaan . Als u functies voor bewerken en doorgaan met foutopsporing wilt gebruiken, moet u deze optie gebruiken. De functie Bewerken en Doorgaan is handig voor productiviteit van ontwikkelaars, maar kan problemen veroorzaken in de codegrootte, prestaties en compilerconformiteit. Omdat de meeste optimalisaties niet compatibel zijn met Bewerken en Doorgaan, worden /ZI alle instructies in uw code uitgeschakeld #pragma optimize . De /ZI optie is ook niet compatibel met het gebruik van de __LINE__ vooraf gedefinieerde macro. Code die is gecompileerd met /ZI kan niet worden gebruikt __LINE__ als een niet-type sjabloonargument, hoewel __LINE__ deze kan worden gebruikt in macro-uitbreidingen.

Met de /ZI optie worden zowel de /Gy opties (Enable Function-Level Linking) als /FC (Volledig pad naar broncodebestand in diagnostische gegevens) gedwongen om te worden gebruikt in uw compilatie.

/ZI is niet compatibel met /clr (Common Language Runtime Compilation).

Opmerking

De /ZI optie is alleen beschikbaar in de compilers die gericht zijn op x86- en x64-processors. Deze compileroptie is niet beschikbaar in de compilers die gericht zijn op ARM-processors.

Deze compileroptie instellen in de Ontwikkelomgeving van Visual Studio

  1. Open het dialoogvenster eigenschappenpagina's van het project. Zie C++ compiler en buildeigenschappen instellen in Visual Studio voor meer informatie.

  2. Selecteer de eigenschappenpagina Configuratie-eigenschappen>C/C++>Algemeen .

  3. Wijzig de eigenschap Foutopsporingsgegevensindeling . Kies OK om uw wijzigingen op te slaan.

Deze compileroptie instellen in een projectbestand

Als u de foutopsporingsinformatie-indeling in een .vcxproj projectbestand wilt instellen, gebruikt u de <DebugInformationFormat> eigenschap in een <ClCompile> itemdefinitie. In de volgende tabel ziet u de MSBuild XML-waarden en de bijbehorende compileropties:

MSBuild XML-waarde Compileroptie Beschrijving
None (geen) Geen foutopsporingsinformatie
OldStyle /Z7 Volledige symbolische foutopsporingsgegevens die zijn ingesloten in .obj bestanden, geen PDB
ProgramDatabase /Zi Programmadatabase (PDB)
EditAndContinue /ZI PDB met ondersteuning voor bewerken en doorgaan

Als u bijvoorbeeld de indeling voor foutopsporingsinformatie wilt instellen op de programmadatabase in een releaseconfiguratie:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
  <ClCompile>
    <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
  </ClCompile>
</ItemDefinitionGroup>

Deze compileroptie programmatisch instellen

Zie ook

MSVC-compileropties
Opdrachtregelsyntaxis van MSVC-compiler