/Z7
, /Zi
, /ZI
(formato informazioni di debug)
Le /Z7
opzioni del compilatore , /Zi
e /ZI
specificano il tipo di informazioni di debug create per il programma e se queste informazioni vengono mantenute nei file oggetto o in un file PDB (Program Database).
Sintassi
/Z7
/Zi
/ZI
Osservazioni:
Quando si specifica un'opzione di debug, il compilatore produce nomi di simboli per funzioni e variabili, informazioni sul tipo e posizioni di riga da usare dal debugger. Queste informazioni di debug simbolico possono essere incluse nei file oggetto (.obj
file) prodotti dal compilatore o in un file PDB separato (un .pdb
file) per l'eseguibile. Le opzioni relative al formato delle informazioni di debug sono descritte nelle sezioni seguenti.
None
Per impostazione predefinita, se non viene specificata alcuna opzione di formato informazioni di debug, il compilatore non produce informazioni di debug, quindi la compilazione è più veloce.
/Z7
L'opzione /Z7
produce file oggetto che contengono anche informazioni di debug simbolico complete da usare con il debugger. Questi file oggetto e tutte le librerie create da essi possono essere sostanzialmente più grandi dei file che non dispongono di informazioni di debug. Le informazioni di debug simbolico includono i nomi e i tipi di variabili, funzioni e numeri di riga. Nessun file PDB viene prodotto dal compilatore. Tuttavia, un file PDB può comunque essere generato da questi file oggetto o librerie se il linker viene passato all'opzione /DEBUG
.
Per i distributori di versioni di debug di librerie di terze parti, esiste un vantaggio per non avere un file PDB. Tuttavia, i file oggetto per tutte le intestazioni precompilate sono necessari durante la fase di collegamento alla libreria e per il debug. Se nel file oggetto sono presenti solo informazioni sul tipo (e nessun codice), .pch
è necessario usare anche l'opzione /Yl
(Inject PCH Reference for Debug Library), abilitata per impostazione predefinita, quando si compila la libreria.
L'opzione deprecata /Gm
(Abilita ricompilazione minima) non è disponibile quando /Z7
viene specificato.
/Zi
L'opzione /Zi
genera un file PDB separato che contiene tutte le informazioni di debug simbolico da usare con il debugger. Le informazioni di debug non sono incluse nei file oggetto o nel file eseguibile, rendendole molto più piccole.
L'uso di /Zi
non influisce sulle ottimizzazioni. Tuttavia, /Zi
implica /debug
. Per altre informazioni, vedere /DEBUG
(Generare informazioni di debug).
Quando si specificano sia /Zi
e /clr
, l'attributo non viene inserito nei metadati dell'assembly DebuggableAttribute . Se lo si desidera, è necessario specificarlo nel codice sorgente. Questo attributo potrà avere effetto sulle prestazioni di runtime dell'applicazione. Per altre informazioni su come l'attributo Debuggable
influisce sulle prestazioni e su come modificare l'impatto sulle prestazioni, vedere Rendere più semplice il debug di un'immagine.
Il compilatore denomina il file <project>.pdb
PDB , dove <project>
è il nome del progetto. Se si compila un file all'esterno di un progetto, il compilatore crea un file PDB denominato VC<x>.pdb
, dove <x>
è una concatenazione del numero di versione principale e secondaria della versione del compilatore in uso. Il compilatore incorpora il nome del PDB e una firma con timestamp identificante in ogni file di oggetto creato usando questa opzione. Questo nome e firma puntano il debugger alla posizione delle informazioni sul numero di riga e simbolico. Il nome e la firma nel file PDB devono corrispondere al file eseguibile per il caricamento dei simboli nel debugger. Il debugger WinDBG può caricare simboli non corrispondenti usando il .symopt+0x40
comando . Visual Studio non dispone di un'opzione simile per caricare simboli non corrispondenti.
Se si crea una libreria da oggetti compilati usando /Zi
, il file PDB associato deve essere disponibile quando la libreria è collegata a un programma. Ciò significa che, se si distribuisce la libreria, è necessario distribuire anche il file PDB. Per creare una libreria contenente informazioni di debug senza usare file PDB, è necessario selezionare l'opzione /Z7
. Se si usano le opzioni delle intestazioni precompilate, le informazioni di debug per l'intestazione precompilata e il resto del codice sorgente vengono inserite nel file PDB.
/ZI
L'opzione /ZI
è simile a /Zi
, ma produce un file PDB in un formato che supporta la funzionalità Modifica e continuazione . Per usare le funzionalità di debug Di modifica e continuazione, è necessario usare questa opzione. La funzionalità Modifica e continuazione è utile per la produttività degli sviluppatori, ma può causare problemi di conformità al codice, alle prestazioni e alla conformità del compilatore. Poiché la maggior parte delle ottimizzazioni non è compatibile con Modifica e continuazione, l'uso /ZI
di disabilita tutte #pragma optimize
le istruzioni nel codice. L'opzione non è compatibile anche con l'uso__LINE__
della macro predefinita. Il /ZI
codice compilato con /ZI
non può essere usato __LINE__
come argomento di modello non di tipo, anche se __LINE__
può essere usato nelle espansioni di macro.
L'opzione /ZI
forza l'uso delle /Gy
opzioni (Abilita collegamento a livello di funzione) e /FC
(Percorso completo del file di codice sorgente nella diagnostica) nella compilazione.
/ZI
non è compatibile con /clr
(compilazione Common Language Runtime).
Nota
L'opzione /ZI
è disponibile solo nei compilatori destinati a processori x86 e x64. Questa opzione del compilatore non è disponibile nei compilatori destinati ai processori ARM.
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà>di configurazione C/C++>Generale.
Modificare la proprietà Debug Information Format . Scegli OK per salvare le modifiche.
Per impostare l'opzione del compilatore a livello di codice
- Vedere DebugInformationFormat.
Vedi anche
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC