Schemareferenz zu launch.vs.json (C++)

In Visual Studio 2017 und höher können Sie Code ohne Projektmappe oder Projektdatei aus nahezu jedem verzeichnisbasierten Projekt öffnen und kompilieren. Wenn keine Projekt- oder Projektmappendatei vorhanden ist, können Sie benutzerdefinierte Buildtasks und Startparameter über JSON-Konfigurationsdateien angeben. In diesem Artikel wird die Datei launch.vs.json erläutert, die Debugparameter angibt. Weitere Informationen zum Feature „Ordner öffnen“ finden Sie unter Entwickeln von Code in Visual Studio ohne Projekte oder Projektmappen.

Klicken Sie mit der rechten Maustaste auf eine ausführbare Datei im Projektmappen-Explorer, und wählen Sie Debug- und Starteinstellungen aus, um die Datei zu erstellen. Wählen Sie die Option aus, die Ihrem Projekt am ehesten entspricht, und verwenden Sie dann die folgenden Eigenschaften, um die Konfiguration nach Bedarf anzupassen. Weitere Informationen zum Debuggen von CMake-Projekten finden Sie unter Konfigurieren von CMake-Debugsitzungen.

Standardeigenschaften

Eigenschaft Type BESCHREIBUNG
args array Hiermit werden die Befehlszeilenargumente angegeben, die an das gestartete Programm übergeben werden.
buildConfigurations array Hierbei handelt es sich um ein Schlüssel-Wert-Paar, das den Namen des Buildmodus angibt, der die Konfigurationen anwenden soll. Beispiele hierfür sind Debug oder Release sowie die Konfigurationen, die je nach ausgewähltem Buildmodus verwendet werden sollen.
currentDir Zeichenfolge Hiermit wird der vollständige Verzeichnispfad zum Buildziel angegeben. Das Verzeichnis wird automatisch erkannt, sofern dieser Parameter nicht angegeben ist.
cwd Zeichenfolge Vollständiger Pfad zum Verzeichnis im Remotesystem, in dem das Programm ausgeführt wird. Der Standardwert lautet "${debugInfo.defaultWorkingDirectory}".
debugType Zeichenfolge Hiermit wird der Debuggingmodus für die jeweilige Art von Code angegeben (nativ, verwaltet oder gemischt). Der Modus wird automatisch erkannt, sofern dieser Parameter nicht angegeben ist. Zulässige Werte: "native", "managed" und "mixed".
env array Gibt eine Schlüssel-Wert-Liste benutzerdefinierter Umgebungsvariablen an. Beispiel: env:{"myEnv":"myVal"}
inheritEnvironments array Gibt mehrere Umgebungsvariablen an, die aus mehreren Quellen geerbt werden. Sie können einige Variablen in Dateien wie CMakeSettings.json oder CppProperties.json definieren und für den Debugkontext zur Verfügung stellen. Visual Studio 16.4: Geben Sie Umgebungsvariablen pro Ziel mithilfe der env.VARIABLE_NAME Syntax an. Legen Sie "null" für eine Variable fest, um die Festlegung dieser aufzuheben.
name Zeichenfolge Hiermit wird der Name des Eintrags in der Dropdownliste Startelement angegeben.
noDebug boolean Hiermit wird angegeben, ob das gestartete Programm debuggt werden soll. Wenn nichts angegeben wird, lautet der Standardwert für diesen Parameter false.
portName Zeichenfolge Hiermit wird der Name des Ports beim Anfügen an einen Prozess, der ausgeführt wird, angegeben.
program Zeichenfolge Der auszuführende Debugbefehl. Wird standardmäßig auf "${debugInfo.fullTargetPath}" festgelegt.
project Zeichenfolge Hiermit wird der relative Pfad zur Projektdatei angegeben. Normalerweise müssen Sie diesen Wert beim Debuggen eines CMake-Projekts nicht ändern.
projectTarget Zeichenfolge Hiermit wird das optionale Ziel angegeben, das bei der Erstellung von projectaufgerufen wird. Das Ziel muss mit dem Namen in der Dropdownliste Startelement übereinstimmen.
stopOnEntry boolean Hiermit wird angegeben, ob beim Starten des Prozesses eine Unterbrechung erfolgt und der Debugger angefügt wird. Der Standardwert für diesen Parameter ist false.
remoteMachine Zeichenfolge Hiermit wird der Name des Remotecomputers angegeben, auf dem das Programm gestartet wird.
type Zeichenfolge Hiermit wird festgelegt, ob das Projekt eine dll- oder exe-Datei ist. Standardmäßig handelt es sich um eine EXE-Datei.

C++-Linux-Eigenschaften

Eigenschaft Type Beschreibung
program string Hierbei handelt es sich um den vollständigen Pfad zur ausführbaren Programmdatei auf dem Remotecomputer. Wenn CMake verwendet wird, kann das Makro ${debugInfo.fullTargetPath} als Wert für dieses Feld verwendet werden.
processId integer Hierbei handelt es sich um die optionale Prozess-ID, an die der Debugger angefügt werden soll.
sourceFileMap Objekt Hierbei handelt es sich um optionale Quelldateizuordnungen, die an die Debug-Engine übergeben werden. Das Format lautet { "\<Compiler source location>": "\<Editor source location>" } oder { "\<Compiler source location>": { "editorPath": "\<Editor source location>", "useForBreakpoints": true } }. Beispiele sind { "/home/user/foo": "C:\\foo" } oder { "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } }. Weitere Informationen finden Sie unter Optionen für die Quelldateizuordnung.
additionalProperties Zeichenfolge Hierbei handelt es sich um eine der sourceFileMapOptions. (Siehe unten.)
MIMode Zeichenfolge Hiermit wird der Typ des MI-fähigen Konsolendebuggers angegeben, mit dem MIDebugEngine eine Verbindung herstellt. Zulässige Werte sind: "gdb" und "lldb".
args array Hierbei handelt es sich um Befehlszeilenargumente, die an das Programm übergeben werden.
environment array Hiermit werden Umgebungsvariablen angegeben, die der Umgebung für das Programm hinzugefügt werden sollen. Beispiel: [ { "name": "squid", "value": "clam" } ].
targetArchitecture Zeichenfolge Hiermit wird die Architektur der zu debuggenden Komponente angegeben. Die Architektur wird automatisch erkannt, sofern dieser Parameter nicht angegeben ist. Zulässige Werte sind: x86, arm, arm64, mips, x64, amd64 und x86_64.
visualizerFile Zeichenfolge Mit dieser Eigenschaft wird die NATVIS-Datei angegeben, die beim Debuggen dieses Prozesses verwendet werden soll. Diese Option ist nicht mit der automatischen Strukturierung und Einrückung von GDB kompatibel. Sehen Sie sich die Informationen zur Eigenschaft "showDisplayString" an, wenn Sie diese Einstellung verwenden.
showDisplayString boolean Wenn eine visualizerFile-Eigenschaft angegeben ist, aktiviert showDisplayString die Anzeigezeichenfolge. Das Aktivieren dieser Optionen kann zu langsamer Leistung beim Debuggen führen.
remoteMachineName Zeichenfolge Hiermit wird der Linux-Remotecomputer angegeben, der gdb und das zu debuggende Programm hostet. Verwenden Sie den Verbindungs-Manager zum Hinzufügen neuer Linux-Computer. Wenn CMake verwendet wird, kann das Makro ${debugInfo.remoteMachineName} als Wert für dieses Feld verwendet werden.
miDebuggerPath Zeichenfolge Hiermit wird der Pfad zum MI-fähigen Debugger (z. B. gdb) angegeben. Wenn nichts angegeben ist, wird erst PATH nach dem Debugger durchsucht.
miDebuggerServerAddress Zeichenfolge Hiermit wird die Netzwerkadresse des MI-fähigen Debuggerservers angegeben, mit dem eine Verbindung hergestellt werden soll. Beispiel: "localhost:1234".
setupCommands array Hiermit werden ein oder mehrere GDB- oder LLDB-Befehle angegeben, die ausgeführt werden sollen, um den zugrunde liegenden Debugger einzurichten. Beispiel: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }]. Weitere Informationen finden Sie unter Starten von Setupbefehlen.
customLaunchSetupCommands array Wenn dieser Wert angegeben wird, ersetzt er die Standardbefehle für das Starten eines Ziels durch andere Befehle. Beispielsweise können Sie -target-attach zum Anfügen an einen Zielprozess verwenden. Eine leere Befehlsliste ersetzt die Startbefehle durch nichts. Dies kann nützlich sein, wenn für den Debugger Startoptionen als Befehlszeilenoptionen bereitgestellt werden. Beispiel: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }].
launchCompleteCommand Zeichenfolge Hiermit wird der Befehl angegeben, der ausgeführt werden soll, wenn der Debugger vollständig eingerichtet ist, damit der Zielprozess ausgeführt wird. Zulässige Werte sind „exec-run“, „exec-continue“ und „None“. Der Standardwert ist „exec-run“.
debugServerPath Zeichenfolge Hiermit wird ein optionaler vollständiger Pfad zum zu startenden Debugserver angegeben. Der Standardwert ist „null“.
debugServerArgs Zeichenfolge Hiermit werden optionale Debugserverargumente angegeben. Der Standardwert ist „null“.
filterStderr boolean Hiermit wird ein stderr-Datenstrom für ein vom Server gestartetes Muster gesucht und stderr in der Debugausgabe protokolliert. Wird standardmäßig auf false festgelegt.
coreDumpPath Zeichenfolge Hiermit wird ein optionaler vollständiger Pfad zu einer Kern-Speicherabbilddatei für das angegebene Programm angegeben. Der Standardwert ist „null“.
externalConsole boolean Wenn „true“ festgelegt ist, wird eine Konsole für die zu debuggende Komponente gestartet. Wenn false festgelegt ist, wird keine Konsole gestartet. Der Standardwert dieser Einstellung ist false. Diese Option wird in manchen Fällen aus technischen Gründen ignoriert.
pipeTransport Zeichenfolge Wenn dieser Wert angegeben wird, weist er den Debugger an, eine Verbindung mit einem Remotecomputer mithilfe einer anderen ausführbaren Datei als Pipe herzustellen, die Standardeingaben/-ausgaben zwischen Visual Studio und dem MI-fähigen Debugger (z. B. gdb) weiterleitet. Zulässige Werte sind eine oder mehrere Pipetransportoptionen.

debugInfo-Makros

Die folgenden Makros enthalten Informationen zur Debugumgebung. Sie sind nützlich, um den Start Ihrer App für das Debuggen zu anpassen.

Makro Beschreibung Beispiel
addressSanitizerRuntimeFlags Diese Runtimeflags werden verwendet, um das Verhalten des Address Sanitizer anzupassen. Dieser wird verwendet, um die Umgebungsvariable "ASAN_OPTIONS" festzulegen. "env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true"}
defaultWorkingDirectory Dieses Makro ist auf den Verzeichnisteil von "fullTargetPath" festgelegt. Wenn die CMake-Variable VS_DEBUGGER_WORKING_DIRECTORY definiert ist, wird defaultWorkingDirectory stattdessen auf diesen Wert festgelegt. "cwd":"${debugInfo.defaultWorkingDirectory}"
fullTargetPath Dies ist der vollständige Pfad zur Binärdatei, die debuggt wird. "program": "${debugInfo.fullTargetPath}"
linuxNatvisPath Dies ist der vollständige Windows-Pfad zur .natvis-Linux-Datei für VS. Er tritt üblicherweise als Wert "visualizerFile" auf.
parentProcessId Dies ist die Prozess-ID für die aktuelle Visual Studio Instanz. Sie wird als Parameter für shellexec verwendet. Weiter unten finden Sie ein Beispiel für pipeTransport.
remoteMachineId Dies ist ein eindeutiger numerischer Bezeichner für die Verbindung mit dem Remotecomputer. Sie wird als Parameter für shellexec verwendet. Weiter unten finden Sie ein Beispiel für pipeTransport.
remoteWorkspaceRoot Dies ist der Linux-Pfad zur Remotekopie des Arbeitsbereichs. Geben Sie Dateispeicherorte auf dem Remotecomputer an. Beispiel: "args": ["${debugInfo.remoteWorkspaceRoot}/Data/MyInputFile.dat"]
resolvedRemoteMachineName Dies ist der Name des Zielremotecomputers. Wert "targetMachine" in einer Bereitstellungsanweisung
shellexecPath Dies ist der Pfad zum shellexec-Programm, das Visual Studio verwendet, um die Remotecomputerverbindung zu verwalten. Weiter unten finden Sie ein Beispiel für pipeTransport.
tty Die Eingabe und Ausgabe für das debuggte Programm werden von gdb an dieses Gerät weitergeleitet. Das Makro wird als Parameter für gdb (-tty) verwendet. Weiter unten finden Sie ein Beispiel für pipeTransport.
windowsSubsystemPath Dies ist der vollständige Pfad zur Instanz des Windows-Subsystems für Linux.

Im folgenden pipeTransport-Beispiel wird die Verwendung einiger der oben definierten debugInfo-Makros veranschaulicht:

"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}"
    ]
    }

C++ Windows-Remotedebugging- und Bereitstellungseigenschaften

Diese Eigenschaften werden beim Debuggen und Bereitstellen einer App auf einem Remotecomputer verwendet.

Eigenschaft Type Beschreibung
cwd string Hiermit wird das Arbeitsverzeichnis des Ziels auf dem Remotecomputer angegeben. Wenn CMake verwendet wird, kann das Makro ${debugInfo.defaultWorkingDirectory} als Wert für dieses Feld verwendet werden. Der Standardwert entspricht dem Verzeichnis des Debugprogramms/-befehls.
deploy Zeichenfolge Hiermit werden zusätzliche bereitzustellende Dateien oder Verzeichnisse angegeben. Beispiel:
"deploy": {"sourcePath":"<Full path to source file/directory on host machine>", "targetPath":"<Full destination path to file/directory on target machine>"}
deployDirectory Zeichenfolge Hiermit wird der Speicherort auf dem Remotecomputer angegeben, an dem Projektausgaben automatisch bereitgestellt werden. Der Standardwert lautet C:\Windows Default Deploy Directory\<name of app>.
deployDebugRuntimeLibraries Zeichenfolge Hiermit wird angegeben, ob die Runtimebibliotheken für das Debugging für die aktive Plattform bereitgestellt werden sollen. Der Standardwert ist "true", wenn die aktive configurationType-Eigenschaft den Wert "Debug" aufweist.
deployRuntimeLibraries Zeichenfolge Hiermit wird angegeben, ob die Runtimebibliotheken für die aktive Plattform bereitgestellt werden sollen. Der Standardwert ist "true", wenn die aktive configurationType-Eigenschaft den Wert "MinSizeRel", "RelWithDebInfo" oder "Release" aufweist.
disableDeploy boolean Hiermit wird angegeben, ob Dateien bereitgestellt werden sollen.
remoteMachineName Zeichenfolge Hiermit wird der Name des ARM64-Windows-Remotecomputers angegeben, auf dem das Programm gestartet wird. Hierbei kann es sich um den Servernamen oder die IP-Adresse des Remotecomputers handeln.
authenticationType Zeichenfolge Hiermit wird die Art von Remoteverbindung angegeben. Mögliche Werte sind "windows" und "none". Der Standardwert ist "windows". Dieser Wert sollte mit der Authentifizierungseinstellung übereinstimmen, die für den Remotedebugger festgelegt ist, der auf dem Remotecomputer ausgeführt wird.

Starten von Setupbefehlen

Folgende Optionen können mit der Eigenschaft setupCommands verwendet werden:

Eigenschaft Type Beschreibung
text string Hiermit wird der auszuführende Debuggerbefehl angegeben.
description Zeichenfolge Hiermit wird eine optionale Beschreibung des Befehls angegeben.
ignoreFailures boolean Wenn „true“ festgelegt ist, sollten durch den Befehl verursachte Fehler ignoriert werden. Wird standardmäßig auf false festgelegt.

Pipetransportoptionen

Folgende Optionen können mit der Eigenschaft pipeTransport verwendet werden:

Eigenschaft Type Beschreibung
pipeCwd string Hiermit wird der vollqualifizierte Pfad zum Arbeitsverzeichnis für das Pipeprogramm angegeben.
pipeProgram Zeichenfolge Hiermit wird der vollqualifizierte auszuführende Pipebefehl angegeben.
pipeArgs array Hiermit werden Befehlszeilenargumente angegeben, die zum Konfigurieren der Verbindung an das Pipeprogramm übergeben werden.
debuggerPath Zeichenfolge Hiermit wird der vollständige Pfad zum Debugger auf dem Zielcomputer angegeben, z. B. „/usr/bin/gdb“.
pipeEnv Objekt Hiermit werden Umgebungsvariablen angegeben, die an das Pipeprogramm übergeben werden.
quoteArgs boolean Wenn einzelne Argumente Zeichen enthalten (z. B. Leerzeichen oder Tabstoppzeichen), sollen diese in Anführungszeichen gesetzt werden? Wenn false festgelegt ist, wird der Debuggerbefehl nicht mehr automatisch in Anführungszeichen eingeschlossen. Der Standardwert ist true.

Optionen für die Quelldateizuordnung

Folgende Optionen können mit der Eigenschaft sourceFileMap verwendet werden:

Eigenschaft Type Beschreibung
editorPath string Hiermit wird der Speicherort des Quellcodes angegeben, den der Editor sucht.
useForBreakpoints boolean Beim Festlegen von Breakpoints sollte diese Quellzuordnung verwendet werden. Wenn false festgelegt ist, werden nur der Dateiname und die Zeilennummer zum Festlegen von Breakpoints verwendet. Wenn true festgelegt ist, werden Breakpoints nur dann mit dem vollständigen Pfad zur Datei und der Zeilennummer festgelegt, wenn diese Quellzuordnung verwendet wird. Andernfalls werden beim Festlegen von Breakpoints nur Dateiname und Zeilennummer verwendet. Der Standardwert ist true.