launch.vs.json Riferimento allo schema (C++)

In Visual Studio 2017 e versioni successive è possibile aprire e compilare codice da quasi qualsiasi progetto basato su directory senza richiedere una soluzione o un file di progetto. Quando non è presente alcun file di progetto o di soluzione, è possibile specificare attività di compilazione personalizzate e avviare parametri tramite file di configurazione JSON. Questo articolo descrive il launch.vs.json file , che specifica i parametri di debug. Per altre informazioni sulla funzionalità "Apri cartella", vedere Sviluppare codice in Visual Studio senza progetti o soluzioni.

Per creare il file, fare clic con il pulsante destro del mouse su un file eseguibile in Esplora soluzioni e scegliere Impostazioni debug e avvio. Scegliere l'opzione più adatta al progetto e quindi usare le proprietà seguenti per modificare la configurazione in base alle esigenze. Per altre informazioni sul debug di progetti CMake, vedere Configurare le sessioni di debug di CMake.

Proprietà predefinite

Proprietà Type Descrizione
args array Specifica gli argomenti della riga di comando passati al programma avviato.
buildConfigurations array Coppia chiave-valore che specifica il nome della modalità di compilazione per applicare le configurazioni. Ad esempio, Debug o Release e le configurazioni da usare in base alla modalità di compilazione selezionata.
currentDir string Specifica il percorso completo della directory alla destinazione di compilazione. La directory viene rilevata automaticamente a meno che questo parametro non sia impostato.
cwd string Percorso completo della directory nel sistema remoto in cui verrà eseguito il programma. L'impostazione predefinita è "${debugInfo.defaultWorkingDirectory}"
debugType string Specifica la modalità di debug in base al tipo di codice (nativo, gestito o misto). La modalità viene rilevata automaticamente a meno che questo parametro non sia impostato. Valori consentiti: "native", "managed", "mixed".
env array Specifica un elenco chiave-valore delle variabili di ambiente personalizzate. Ad esempio: env:{"myEnv":"myVal"}.
inheritEnvironments array Specifica un set di variabili di ambiente ereditate da più origini. È possibile definire alcune variabili in file come CMakeSettings.json o CppProperties.json e renderle disponibili per il contesto di debug. Visual Studio 16.4: specificare le variabili di ambiente per ogni destinazione usando la env.VARIABLE_NAME sintassi . Per annullare l'impostazione di una variabile su "null".
name string Specifica il nome della voce nell'elenco a discesa Elemento di avvio.
noDebug boolean Specifica se eseguire il debug del programma avviato. Il valore predefinito per questo parametro è false se non specificato.
portName string Specifica il nome della porta durante il collegamento a un processo in esecuzione.
program string Comando di debug da eseguire. Il valore predefinito è "${debugInfo.fullTargetPath}".
project string Specifica il percorso relativo del file di progetto. In genere, non è necessario modificare questo valore durante il debug di un progetto CMake.
projectTarget string Specifica la destinazione facoltativa richiamata durante la compilazione projectdi . La destinazione deve corrispondere al nome nell'elenco a discesa Elemento di avvio.
stopOnEntry boolean Specifica se interrompere un'interruzione non appena viene avviato il processo e il debugger viene collegato. Il valore predefinito per questo parametro è false.
remoteMachine string Specifica il nome del computer remoto in cui viene avviato il programma.
type string Specifica se il progetto è un dll oggetto o exe l'impostazione predefinita per .exe

Proprietà linux C++

Proprietà Type Descrzione
program stringa Percorso completo del programma eseguibile nel computer remoto. Quando si usa CMake, la macro ${debugInfo.fullTargetPath} può essere usata come valore di questo campo.
processId integer ID processo facoltativo a cui collegare il debugger.
sourceFileMap oggetto Mapping facoltativi dei file di origine passati al motore di debug. Formato: { "\<Compiler source location>": "\<Editor source location>" } o { "\<Compiler source location>": { "editorPath": "\<Editor source location>", "useForBreakpoints": true } }. Esempio: { "/home/user/foo": "C:\\foo" } o { "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } }. Per altre informazioni, vedere Opzioni mappa file di origine.
additionalProperties string Uno degli elementi sourceFileMapOptions. come illustrato più avanti.
MIMode string Indica il tipo di debugger della console abilitato per MI a cui si connetterà MIDebugEngine. I valori consentiti sono "gdb", "lldb".
args array Argomenti della riga di comando passati al programma.
environment array Variabili di ambiente da aggiungere all'ambiente per il programma. Esempio: [ { "name": "squid", "value": "clam" } ].
targetArchitecture string Architettura dell'oggetto di debug. L'architettura viene rilevata automaticamente a meno che questo parametro non sia impostato. I valori consentiti sono x86, arm, mipsarm64, x64, , amd64, . x86_64
visualizerFile string File natvis da utilizzare durante il debug di questo processo. Questa opzione non è compatibile con la stampa di GDB. Verificare "showDisplayString" se si usa questa impostazione.
showDisplayString boolean Quando si specifica un visualizerFile, showDisplayString abiliterà la stringa di visualizzazione. L'attivazione di questa opzione può rallentare le prestazioni durante il debug.
remoteMachineName string Computer Linux remoto che ospita gdb e il programma di cui eseguire il debug. Usare Gestione connessioni per aggiungere nuovi computer Linux. Quando si usa CMake, la macro ${debugInfo.remoteMachineName} può essere usata come valore di questo campo.
miDebuggerPath string Percorso del debugger abilitato per l'istanza gestita dell'istanza gestita, ad esempio gdb. Se non specificato, eseguirà prima la ricerca di PATH per il debugger.
miDebuggerServerAddress string Indirizzo di rete del server debugger abilitato per l'istanza gestita a cui connettersi. Esempio: "localhost:1234".
setupCommands array Uno o più comandi GDB/LLDB da eseguire per configurare il debugger sottostante. Esempio: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }]. Per altre informazioni, vedere Avviare i comandi di installazione.
customLaunchSetupCommands array Se specificato, questo valore sostituisce i comandi predefiniti usati per avviare una destinazione con altri comandi. Ad esempio, usare "-target-attach" per collegarsi a un processo di destinazione. Un elenco di comandi vuoto sostituisce i comandi di avvio senza nulla, che può essere utile se il debugger viene fornito opzioni di avvio come opzioni della riga di comando. Esempio: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }].
launchCompleteCommand string Il comando da eseguire dopo la configurazione completa del debugger, in modo che il processo di destinazione venga eseguito. I valori consentiti sono "exec-run", "exec-continue", "None". Il valore predefinito è "exec-run".
debugServerPath string Percorso completo facoltativo del server di debug da avviare. L'impostazione predefinita è null.
debugServerArgs string Argomenti del server di debug facoltativi. L'impostazione predefinita è null.
filterStderr boolean Cercare stderr stream per il modello avviato dal server e log stderr per eseguire il debug dell'output. Il valore predefinito è false.
coreDumpPath string Percorso completo facoltativo di un file di dump principale per il programma specificato. L'impostazione predefinita è null.
externalConsole boolean Se true, viene avviata una console per il debug. Se false, non viene avviata alcuna console. Il valore predefinito per questa impostazione è false. Questa opzione viene ignorata in alcuni casi per motivi tecnici.
pipeTransport string Quando presente, questo valore indica al debugger di connettersi a un computer remoto usando un altro eseguibile come pipe che invierà input/output standard tra Visual Studio e il debugger abilitato per mi, ad esempio gdb. Valori consentiti: una o più opzioni di trasporto pipe.

macro debugInfo

Le macro seguenti forniscono informazioni sull'ambiente di debug. Sono utili per personalizzare l'avvio dell'app per il debug.

Macro Descrizione Esempio
addressSanitizerRuntimeFlags Flag di runtime usati per personalizzare il comportamento del servizio di purificazione degli indirizzi. Usato per impostare la variabile "ASAN_OPTIONS"di ambiente . "env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true"}
defaultWorkingDirectory Impostare sulla parte della directory di "fullTargetPath". Se la variabile VS_DEBUGGER_WORKING_DIRECTORY CMake è definita, defaultWorkingDirectory viene invece impostata su tale valore. "cwd":"${debugInfo.defaultWorkingDirectory}"
fullTargetPath Percorso completo del file binario di cui viene eseguito il debug. "program": "${debugInfo.fullTargetPath}"
linuxNatvisPath Percorso completo delle finestre del file vs linux .natvis . In genere viene visualizzato come valore "visualizerFile".
parentProcessId ID del processo per l'istanza corrente di Visual Studio. Usato come parametro per shellexec. Vedere l'esempio pipeTransport seguente.
remoteMachineId Identificatore numerico univoco per la connessione al computer remoto. Usato come parametro per shellexec. Vedere l'esempio pipeTransport seguente.
remoteWorkspaceRoot Percorso Linux della copia remota dell'area di lavoro. Specificare i percorsi dei file nel computer remoto. Ad esempio: "args": ["${debugInfo.remoteWorkspaceRoot}/Data/MyInputFile.dat"]
resolvedRemoteMachineName Nome del computer remoto di destinazione. "targetMachine" valore in una direttiva di distribuzione
shellexecPath Percorso del programma shellexec usato da Visual Studio per gestire la connessione al computer remoto. Vedere l'esempio pipeTransport seguente
tty gdb reindirizzerà l'input e l'output a questo dispositivo per il programma sottoposto a debug. Usato come parametro per gdb (-tty). Vedere l'esempio pipeTransport seguente.
windowsSubsystemPath Percorso completo dell'istanza di sottosistema Windows per Linux.

L'esempio pipeTransport seguente illustra come usare alcune delle debugInfo macro definite in precedenza:

"pipeTransport": {
    "pipeProgram": "${debugInfo.shellexecPath}",
    "pipeArgs": [
        "/s",
        "${debugInfo.remoteMachineId}",
        "/p",
        "${debugInfo.parentProcessId}",
        "/c",
        "${debuggerCommand}",
        "--tty=${debugInfo.tty}"
    ],
    "pipeCmd": [
        "/s",
        "${debugInfo.remoteMachineId}",
        "/p",
        "${debugInfo.parentProcessId}",
        "/c",
        "${debuggerCommand}"
    ]
    }

Debug remoto di Windows C++ e distribuzione delle proprietà

Usato durante il debug e la distribuzione di un'app in un computer remoto.

Proprietà Type Descrzione
cwd stringa Directory di lavoro della destinazione nel computer remoto. Quando si usa CMake, la macro ${debugInfo.defaultWorkingDirectory} può essere usata come valore di questo campo. Il valore predefinito è la directory del programma/comando di debug.
deploy string Specifica file o directory aggiuntivi da distribuire. Ad esempio:
"deploy": {"sourcePath":"<Full path to source file/directory on host machine>", "targetPath":"<Full destination path to file/directory on target machine>"}
deployDirectory string Percorso nel computer remoto in cui vengono distribuiti automaticamente gli output del progetto. Il valore predefinito è "C:\Windows Default Deploy Directory\<name of app>
deployDebugRuntimeLibraries string Specifica se distribuire le librerie di runtime di debug per la piattaforma attiva. L'impostazione "true" predefinita è se configurationType attivo è "Debug"
deployRuntimeLibraries string Specifica se distribuire le librerie di runtime per la piattaforma attiva. L'impostazione predefinita è "true" se configurationType attivo è "MinSizeRel", "RelWithDebInfo"o "Release".
disableDeploy boolean Specifica se i file devono essere distribuiti.
remoteMachineName string Specifica il nome del computer Windows ARM64 remoto in cui viene avviato il programma. Può essere il nome del server o l'indirizzo IP del computer remoto.
authenticationType string Specifica il tipo di connessione remota. I valori possibili sono "windows" e "none". Il valore predefinito è "windows". Questo valore deve corrispondere all'impostazione di autenticazione specificata nel debugger remoto in esecuzione nel computer remoto.

Avviare i comandi di installazione

Usato con la setupCommands proprietà :

Proprietà Type Descrzione
text stringa Comando del debugger da eseguire.
description string Descrizione facoltativa per il comando.
ignoreFailures boolean Se true, gli errori del comando devono essere ignorati. Il valore predefinito è false.

Opzioni di trasporto pipe

Usato con la pipeTransport proprietà :

Proprietà Type Descrzione
pipeCwd stringa Percorso completo della directory di lavoro per il programma pipe.
pipeProgram string Comando pipe completo da eseguire.
pipeArgs array Argomenti della riga di comando passati al programma pipe per configurare la connessione.
debuggerPath string Percorso completo del debugger nel computer di destinazione, ad esempio /usr/bin/gdb.
pipeEnv oggetto Variabili di ambiente passate al programma pipe.
quoteArgs boolean Se i singoli argomenti contengono caratteri (ad esempio spazi o tabulazioni), deve essere racchiuso tra virgolette? Se false, il comando del debugger non verrà più racchiuso automaticamente tra virgolette. Il valore predefinito è true.

Opzioni mappa file di origine

Usare con la sourceFileMap proprietà :

Proprietà Type Descrzione
editorPath stringa Percorso del codice sorgente per l'editor da individuare.
useForBreakpoints boolean Quando si impostano punti di interruzione, è necessario usare questo mapping di origine. Se false, vengono usati solo il nome file e il numero di riga per l'impostazione dei punti di interruzione. Se true, i punti di interruzione verranno impostati con il percorso completo del file e del numero di riga solo quando viene usato questo mapping di origine. In caso contrario, quando si impostano punti di interruzione, verrà usato solo il nome del file e il numero di riga. Il valore predefinito è true.