Condividi tramite


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à TIPO Descrizione
args elenco Specifica gli argomenti di riga di comando che vengono passati al programma avviato.
buildConfigurations elenco 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 corda Specifica il percorso completo della directory alla destinazione di compilazione. La directory viene rilevata automaticamente a meno che questo parametro non sia impostato.
cwd corda Percorso completo della cartella nel sistema remoto in cui verrà eseguito il programma. Il valore predefinito è "${debugInfo.defaultWorkingDirectory}".
debugType corda 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 elenco Specifica un elenco chiave-valore delle variabili di ambiente personalizzate. Ad esempio: env:{"myEnv":"myVal"}.
inheritEnvironments elenco 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 singolo target usando la sintassi env.VARIABLE_NAME. Per annullare una variabile, impostarla su "null".
name corda Specifica il nome della voce nel menu a discesa Startup Item.
noDebug booleano Specifica se eseguire il debug del programma avviato. Il valore predefinito per questo parametro è false se non specificato.
portName corda Specifica il nome della porta durante il collegamento a un processo in esecuzione.
program corda Comando di debug da eseguire. Il valore predefinito è "${debugInfo.fullTargetPath}".
project corda Specifica il percorso relativo del file di progetto. In genere, non è necessario modificare questo valore durante il debug di un progetto CMake.
projectTarget corda Specifica la destinazione facoltativa richiamata durante la compilazione di project. La destinazione deve corrispondere al nome nell'elenco a discesa Elemento di avvio.
stopOnEntry booleano Specifica se interrompere non appena viene avviato il processo e il debugger viene collegato. Il valore predefinito per questo parametro è false.
remoteMachine corda Specifica il nome del computer remoto in cui viene avviato il programma.
type corda Specifica se il progetto è un dll o un exe. Il valore predefinito è "exe".

Proprietà linux C++

Proprietà TIPO Descrizione
program corda 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 numero intero ID del processo facoltativo a cui collegare il debugger.
sourceFileMap oggetto Mappature opzionali dei file sorgente passate 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 ulteriori informazioni, vedere Opzioni mappa file sorgente.
additionalProperties corda Una delle opzioni di sourceFileMapOptions. come illustrato più avanti.
MIMode corda Indica il tipo di debugger della console abilitato per MI a cui si connetterà MIDebugEngine. I valori consentiti sono "gdb", "lldb".
args elenco Argomenti della riga di comando passati al programma.
environment elenco Variabili di ambiente da aggiungere all'ambiente per il programma. Esempio: [ { "name": "squid", "value": "clam" } ].
targetArchitecture corda Architettura del programma in fase di debug. L'architettura viene rilevata automaticamente a meno che questo parametro non sia impostato. I valori consentiti sono x86, arm, arm64mips, x64, , amd64, . x86_64
visualizerFile corda File natvis da utilizzare durante il debug di questo processo. Questa opzione non è compatibile con la stampa di GDB. Consulta "showDisplayString" se utilizzi questa impostazione.
showDisplayString booleano Quando si specifica un visualizerFile, showDisplayString abiliterà la stringa di visualizzazione. L'attivazione di questa opzione può rallentare le prestazioni durante il debug.
remoteMachineName corda 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 corda Il percorso per il debugger abilitato per MI (ad esempio, gdb). Se non specificato, eseguirà prima la ricerca di PATH per il debugger.
miDebuggerServerAddress corda Indirizzo di rete del server debugger abilitato MI a cui connettersi. Esempio: "localhost:1234".
setupCommands elenco 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 elenco 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 target. Un elenco di comandi vuoto sostituisce i comandi di avvio con un elenco vuoto, il che può essere utile se al debugger vengono fornite opzioni di avvio come opzioni della riga di comando. Esempio: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }].
launchCompleteCommand corda 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 corda Percorso completo opzionale per avviare il server di debug. L'impostazione predefinita è null.
debugServerArgs corda Argomenti del server di debug facoltativi. L'impostazione predefinita è null.
filterStderr booleano Cercare nel flusso stderr lo schema di avvio del server e registrare stderr per eseguire il debug dell'output. Il valore predefinito è false.
coreDumpPath corda Percorso completo facoltativo per un file di core dump per il programma specificato. L'impostazione predefinita è null.
externalConsole booleano 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 corda 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.

debugInfo macro

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 Imposta la 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 di Windows al 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 dello spazio 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}"
    ]
}

Proprietà di debug e distribuzione remoti per C++ su Windows

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

Proprietà TIPO Descrizione
cwd corda 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 corda 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 corda Posizione sul computer remoto in cui vengono distribuiti automaticamente gli output del progetto. Il valore predefinito è "C:\Windows Default Deploy Directory\<name of app>".
deployDebugRuntimeLibraries corda Specifica se distribuire le librerie di runtime di debug per la piattaforma attiva. Viene impostato su "true" come predefinito se il configurationType attivo è "Debug".
deployRuntimeLibraries corda Specifica se distribuire le librerie di runtime per la piattaforma attiva. L'impostazione predefinita è "true" se il configurationType attivo è "MinSizeRel", "RelWithDebInfo" o "Release".
disableDeploy booleano Specifica se i file devono essere distribuiti.
remoteMachineName corda 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 corda 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à TIPO Descrizione
text corda Comando del debugger da eseguire.
description corda Descrizione facoltativa per il comando.
ignoreFailures booleano Se vero, gli errori del comando devono essere ignorati. Il valore predefinito è false.

Opzioni di trasporto tubi

Usato con la pipeTransport proprietà :

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

Opzioni per la mappatura del file di origine

Usare con la sourceFileMap proprietà :

Proprietà TIPO Descrizione
editorPath corda Il percorso del codice sorgente da individuare per l'editor.
useForBreakpoints booleano 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 è attivato, i punti di interruzione verranno impostati con il percorso completo del file e del numero di riga solo quando viene usata questa mappatura del sorgente. 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.