Condividi tramite


Impostazioni del progetto per una configurazione di debug C++

È possibile modificare le impostazioni del progetto per una configurazione di debug C o C++ nella finestra di dialogo pagine delle proprietà , come illustrato in Procedura: Impostare le configurazioni di debug e rilascio. Le tabelle seguenti illustrano dove trovare le impostazioni correlate al debugger nella finestra di dialogo delle pagine delle proprietà .

Nota

Le impostazioni del progetto di debug nella categoria proprietà di configurazione/debug sono diverse per le app UWP e per i componenti scritti in C++. Vedi Avviare una sessione di debug (VB, C#, C++ e XAML).

Ogni impostazione della proprietà di debug viene automaticamente scritta e salvata nel file "per l'utente" (.vcxproj.user) quando si salva la soluzione.

Specificare quale debugger utilizzare nel campo Debugger per avviare la casella di riepilogo, come descritto nella tabella seguente. La scelta influisce sulle proprietà visibili.

Cartella Proprietà di configurazione (categoria Debug)

impostazione Descrizione
Debugger per avviare Specifica il debugger da eseguire, con le opzioni seguenti:

- Debugger Windows Locale
- debugger remoto di Windows
- Debugger del Web Browser
- debugger del servizio Web
comando (debugger Windows locale) Specifica il comando per avviare il programma di cui si sta eseguendo il debug nel computer locale.
remote command (debugger Windows remoto) Percorso del .exe nel computer remoto. Immettere il percorso esattamente come si immette nel computer remoto.
Argomenti di Comando (Debugger Windows Locale)

Argomenti del comando remoto (Debugger Windows remoto)
- Specifica gli argomenti per il programma di cui si sta eseguendo il debug. Per ulteriori informazioni su come impostare i parametri della riga di comando, vedere Inviare parametri della riga di comando a un programma in debug (C++).

In questa casella è possibile usare gli operatori di reindirizzamento seguenti:

< file
Legge stdin dal file.

> file
Scrive stdout nel file.

>> file
Aggiunge stdout al file.

2>file
Scrive stderr nel file.

2>>file
Aggiunge stderr al file.

2> &1
Invia l'output stderr (2) alla stessa posizione di stdout (1).

1> &2
Invia l'output stdout (1) alla stessa posizione di stderr (2).

Nella maggior parte dei casi, questi operatori sono applicabili solo alle applicazioni console.

Se è necessario usare caratteri di escape nel comando, è possibile usare valori ASCII, ad esempio %25 per sostituire %. Se si utilizza il comando Avvia debug, le virgolette doppie evadono i comandi precedenti, come ad esempio "<" per sostituire <.
directory di lavoro Specifica la directory di lavoro del programma di cui viene eseguito il debug, in relazione alla directory del progetto in cui si trova l'EXE. Se si lascia questo campo vuoto, la cartella di lavoro è la cartella del progetto. Per il debug remoto, la directory del progetto si trova nel server remoto.
Collega (debugger Windows locale e debugger Windows remoto) Specifica se avviare o collegare all'applicazione. L'impostazione predefinita è No.
Remote Server Name (Remote Windows Debugger) Specifica il nome di un computer (diverso da quello dell'utente) in cui si desidera eseguire il debug di un'applicazione.

La macro RemoteMachine Build è impostata sul valore di questa proprietà; Per altre informazioni, vedere macro per comandi di compilazione e proprietà.
Connection (Remote Windows Debugger) Consente di passare tra tipi di connessione standard e senza autenticazione per il debug remoto. Specificare il nome del computer remoto nella casella Nome Server Remoto. I tipi di connessione includono quanto segue:

- Accesso remoto con autenticazione Windows
- remoto senza autenticazione

Nota Il remote debugging senza autenticazione può lasciare il computer remoto vulnerabile a violazioni della sicurezza. La modalità di autenticazione di Windows è più sicura.

Per altre informazioni, vedere configurazione del debug remoto.
URL HTTP (debugger del servizio Web e debugger di Web browser) Specifica l'URL in cui si trova il progetto di cui si sta eseguendo il debug.
tipo di debugger Specifica il tipo di debugger da usare: solo nativo, solo gestito, GPU solo, mixed, automatico (impostazione predefinita) o Script.

- Solo codice nativo è per il codice C++ non gestito.
- è destinato esclusivamente al codice gestito che viene eseguito nel Common Language Runtime (codice gestito).
- mixed richiama i debugger sia per il codice gestito che per quello non gestito.
- Auto determina il tipo di debugger in base alle informazioni del compilatore e dell'EXE.
- script richiama un debugger per gli script.
- GPU Solo è per il codice AMP C++ eseguito in un dispositivo GPU o nel rasterizzatore di riferimento DirectX. Vedere Debug del codice GPU.
Ambiente (Debugger locale di Windows e Debugger remoto di Windows) Specifica le variabili di ambiente per il programma di cui si sta eseguendo il debug. Usare la sintassi della variabile di ambiente standard , ad esempio PATH="%SystemRoot%\...". Queste variabili sovrascrivono l'ambiente di sistema o vengono integrate nell'ambiente di sistema, a seconda dell'impostazione Merge Environment. Quando si fa clic nella colonna a destra, viene visualizzata una finestra "Modifica". Selezionare il collegamento per aprire l'Editor proprietà e modificare le variabili di ambiente. Per aggiungere più variabili di ambiente, usare l'editor di proprietà e aggiungere una variabile per riga.
Merge Environment (Debugger Locale di Windows) Determina se le variabili specificate nella casella Ambiente vengono unite all'ambiente definito dal sistema operativo. L'impostazione predefinita è Sì.
Debugging SQL (tutti tranne il debugger del cluster MPI) Abilita il debug delle procedure SQL dall'applicazione Visual C++. L'impostazione predefinita è No.
Tipo di acceleratore di debug (solo debug GPU) Specifica il dispositivo GPU da usare per il debug. L'installazione dei driver di dispositivo per i dispositivi GPU compatibili aggiunge altre opzioni. L'impostazione predefinita è GPU - Emulatore software.
comportamento del punto di interruzione predefinito della GPU (solo debug GPU) Specifica se deve essere generato un evento di punto di interruzione per ogni thread in un warp SIMD. L'impostazione predefinita consiste nel generare l'evento del punto di interruzione una sola volta per ogni warp.
acceleratore predefinito Amp Specifica l'acceleratore AMP predefinito durante il debug del codice GPU. Scegliere acceleratore software WARP per verificare se un problema è causato dall'hardware o da un driver anziché dal codice.
Directory di distribuzione (Debugger remoto di Windows) Specifica il percorso nel computer remoto in cui viene copiato l'output del progetto prima dell'avvio. Il percorso può essere una condivisione di rete nel computer remoto oppure può essere un percorso di una cartella nel computer remoto. L'impostazione predefinita è vuota, ovvero l'output del progetto non viene copiato in una condivisione di rete. Per abilitare la distribuzione dei file, è necessario selezionare anche la casella di controllo Distribuisci nella finestra di dialogo Configuration Manager. Per altre informazioni, vedere Procedura: Creare e modificare le configurazioni.
file aggiuntivi per distribuire (debugger Windows remoto) Se la proprietà Directory di distribuzione è impostata, si tratta di un elenco delimitato da punto e virgola di cartelle o file aggiuntivi da copiare nella directory di distribuzione. L'impostazione predefinita è vuota, il che significa che nella directory di distribuzione non vengono copiati cartelle o file aggiuntivi. Per copiare il contenuto di una cartella nella stessa cartella nella directory di distribuzione, specificare un nome di cartella. Per abilitare la distribuzione dei file, è necessario selezionare anche la casella di controllo Distribuisci nella finestra di dialogo Configuration Manager. Per altre informazioni, vedere Procedura: Creare e modificare le configurazioni.
Distribuire le librerie di runtime per il debug di Visual C++ (Debugger Remoto di Windows) Se la proprietà Directory di distribuzione è impostata, specifica se le librerie di runtime di debug di Visual C++ per la piattaforma corrente devono essere copiate nella condivisione di rete. L'impostazione predefinita è Sì.

Cartella C/C++ (categoria Generale)

Impostazione Descrizione
formato informazioni di debug (/Z7, /Zd, Zi, /ZI) Specifica il tipo di informazioni di debug da creare per il progetto.

L'opzione predefinita (/ZI) crea un database di programma (PDB) in formato compatibile con Modifica e continuazione. Per altre informazioni, vedere /Z7, /Zd, /Zi, /ZI (formato informazioni di debug).

Cartella C/C++ (categoria Ottimizzazione)

Impostazione Descrizione
Ottimizzazione Specifica se il compilatore deve ottimizzare il codice prodotto. L'ottimizzazione modifica il codice eseguito. Il codice ottimizzato non corrisponde più al codice sorgente, che rende il debug più difficile.

L'opzione predefinita (Disabilitata (/0d)) elimina l'ottimizzazione. È possibile sviluppare con l'ottimizzazione eliminata e quindi attivarla quando si crea la versione di produzione del codice.

Cartella del linker (categoria Debug)

Impostazione Descrizione
Generare informazioni di debug (/DEBUG) Indica al linker di includere informazioni di debug, con il formato specificato da /Z7, /Zd, Zi o /ZI.
generare il file del database del programma (/PDB:name) Specificare il nome di un file PDB (Program Database) in questa casella. È necessario selezionare ZI o /Zi per il formato delle informazioni di debug.
Rimuovi Simboli Privati (/PDBSTRIPPED:filename) Specificare il nome di un file PDB in questa casella se non si desidera includere simboli privati nel file PDB. Questa opzione crea un secondo file PDB quando si compila l'immagine del programma con una qualsiasi delle opzioni del compilatore o del linker che generano un file PDB, ad esempio /DEBUG, /Z7, /Zd. O /Zi. Questo secondo file PDB omette i simboli che non si desidera spedire ai clienti. Per ulteriori informazioni, vedere /PDBSTRIPPED (Rimuovi simboli privati).
Generare file di mapping (/MAP) Indica al linker di generare un file di mappa durante il collegamento. L'impostazione predefinita è No. Per altre informazioni, vedere /MAP (Generate Mapfile).
nome file mappa (/MAP: nome) Se si sceglie Genera file mappa, è possibile specificare il file di mappa in questa casella. Per altre informazioni, vedere /MAP (Generate Mapfile).
Esportazioni Mappa (/MAPINFO:EXPORTS) Include le funzioni esportate nel file di mapping. L'impostazione predefinita è No. Per ulteriori informazioni, vedere /MAPINFO (Includi informazioni nel file mappa).
assembly debuggable (/ASSEMBLYDEBUG) Specifica le impostazioni per l'opzione Linker /ASSEMBLYDEBUG. I valori possibili sono:

- Nessun attributo di debug generato.
- Monitoraggio del runtime e disabilitazione delle ottimizzazioni (/ASSEMBLYDEBUG). Questa è l'impostazione predefinita,
- Nessun rilevamento di runtime e nessuna abilitazione delle ottimizzazioni (/ASSEMBLYDEBUG:DISABLE).
- <ereditano dai valori predefiniti del progetto o del genitore>.
- Per altre informazioni, vedere /ASSEMBLYDEBUG (Add DebuggableAttribute).

È possibile modificare queste impostazioni nella cartella Proprietà di configurazione (categoria Debug) a livello di codice usando l'interfaccia Microsoft.VisualStudio.VCProjectEngine.VCDebugSettings. Per altre informazioni, vedere VCDebugSettings.

Altre impostazioni del progetto

Per eseguire il debug dei tipi di progetto, ad esempio librerie statiche e DLL, il progetto di Visual Studio deve essere in grado di trovare i file corretti. Quando il codice sorgente è disponibile, è possibile aggiungere librerie statiche e DLL come progetti separati alla stessa soluzione per semplificare il debug. Per informazioni sulla creazione di questi tipi di progetto, vedere Creazione e uso di un DLL (Dynamic Link Library) e Creazione di un oggetto tramite una libreria statica. Con il codice sorgente disponibile, è anche possibile creare un nuovo progetto di Visual Studio scegliendo File>Nuovo progetto>da codice esistente.

Per eseguire il debug di DLL esterne al progetto, vedere Debug di progetti DLL. Se è necessario eseguire il debug di un progetto DLL personalizzato, ma non si ha accesso al progetto per l'applicazione chiamante, vedere Come eseguire il debug da un progetto DLL.

Vedere anche