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 | Typ | 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 | Hierbei handelt es sich um den vollständigen Pfad auf dem Remotesystem, auf 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 an. Verwenden Sie dazu die env.VARIABLE_NAME -Syntax. 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 project aufgerufen 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 | Typ | 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 Startsetupbefehle. |
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++-Remotedebugging und -Bereitstellungseigenschaften für Windows
Diese Eigenschaften werden beim Debuggen und Bereitstellen einer App auf einem Remotecomputer verwendet.
Eigenschaft | Typ | 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. Zum 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. |
Startsetupbefehle
Folgende Optionen können mit der Eigenschaft setupCommands
verwendet werden:
Eigenschaft | Typ | 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 | Typ | 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 . |
Quelldateizuordnungsoptionen
Folgende Optionen können mit der Eigenschaft sourceFileMap
verwendet werden:
Eigenschaft | Typ | 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 . |