launch.vs.json
odwołanie do schematu (C++)
W programie Visual Studio 2017 i nowszych wersjach można otwierać i kompilować kod z niemal dowolnego projektu opartego na katalogu bez konieczności używania rozwiązania lub pliku projektu. Jeśli nie ma pliku projektu lub rozwiązania, możesz określić niestandardowe zadania kompilacji i uruchomić parametry za pomocą plików konfiguracji JSON. W tym artykule opisano launch.vs.json
plik, który określa parametry debugowania. Aby uzyskać więcej informacji na temat funkcji "Otwórz folder", zobacz Tworzenie kodu w programie Visual Studio bez projektów lub rozwiązań.
Aby utworzyć plik, kliknij prawym przyciskiem myszy plik wykonywalny w Eksplorator rozwiązań i wybierz polecenie Debuguj i uruchom ustawienia. Wybierz opcję, która najlepiej pasuje do projektu, a następnie użyj następujących właściwości, aby zmodyfikować konfigurację zgodnie z potrzebami. Aby uzyskać więcej informacji na temat debugowania projektów CMake, zobacz Konfigurowanie sesji debugowania narzędzia CMake.
Właściwości domyślne
Właściwość | Type | Opis |
---|---|---|
args |
tablica | Określa argumenty wiersza polecenia przekazane do uruchomionego programu. |
buildConfigurations |
tablica | Para klucz-wartość określająca nazwę trybu kompilacji, aby zastosować konfiguracje. Na przykład lub Release konfiguracje, Debug które mają być używane zgodnie z wybranym trybem kompilacji. |
currentDir |
string | Określa pełną ścieżkę katalogu do elementu docelowego kompilacji. Katalog jest wykrywany automatycznie, chyba że ten parametr jest ustawiony. |
cwd |
string | Pełna ścieżka do katalogu w systemie zdalnym, w którym zostanie uruchomiony program. Wartości domyślne "${debugInfo.defaultWorkingDirectory}" |
debugType |
string | Określa tryb debugowania zgodnie z typem kodu (natywnym, zarządzanym lub mieszanym). Tryb jest wykrywany automatycznie, chyba że ten parametr jest ustawiony. Dozwolone wartości: "native" , "managed" , "mixed" . |
env |
tablica | Określa listę klucz-wartość niestandardowych zmiennych środowiskowych. Na przykład: env:{"myEnv":"myVal"} . |
inheritEnvironments |
tablica | Określa zestaw zmiennych środowiskowych dziedziczony z wielu źródeł. Niektóre zmienne można zdefiniować w plikach takich jak CMakeSettings.json lub CppProperties.json i udostępnić je do debugowania kontekstu. Visual Studio 16.4: określ zmienne środowiskowe dla poszczególnych elementów docelowych przy użyciu env.VARIABLE_NAME składni . Aby usunąć ustawienie zmiennej, ustaw ją na "null" . |
name |
string | Określa nazwę wpisu na liście rozwijanej Element startowy. |
noDebug |
boolean | Określa, czy należy debugować uruchomiony program. Wartość domyślna dla tego parametru jest false , jeśli nie zostanie określona. |
portName |
string | Określa nazwę portu podczas dołączania do uruchomionego procesu. |
program |
string | Polecenie debugowania do wykonania. Wartość domyślna to "${debugInfo.fullTargetPath}" . |
project |
string | Określa ścieżkę względną do pliku projektu. Zwykle nie trzeba zmieniać tej wartości podczas debugowania projektu CMake. |
projectTarget |
string | Określa opcjonalny element docelowy wywoływany podczas kompilowania project . Element docelowy musi być zgodny z nazwą na liście rozwijanej Element startowy. |
stopOnEntry |
boolean | Określa, czy należy przerwać proces zaraz po uruchomieniu procesu, a debuger dołącza. Wartość domyślna tego parametru to false . |
remoteMachine |
string | Określa nazwę maszyny zdalnej, na której jest uruchamiany program. |
type |
string | Określa, czy projekt ma wartość domyślną dll , czy exe .exe |
Właściwości języka C++ dla systemu Linux
Właściwość | Type | opis |
---|---|---|
program |
string | Pełna ścieżka do pliku wykonywalnego programu na maszynie zdalnej. W przypadku korzystania z narzędzia CMake makro ${debugInfo.fullTargetPath} może służyć jako wartość tego pola. |
processId |
integer | Opcjonalny identyfikator procesu w celu dołączenia debugera do. |
sourceFileMap |
obiekt | Opcjonalne mapowania plików źródłowych przekazane do aparatu debugowania. Format: { "\<Compiler source location>": "\<Editor source location>" } lub { "\<Compiler source location>": { "editorPath": "\<Editor source location>", "useForBreakpoints": true } } . Przykład: { "/home/user/foo": "C:\\foo" } lub { "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } } . Aby uzyskać więcej informacji, zobacz Opcje mapy plików źródłowych. |
additionalProperties |
string | Jeden z elementów źródłowychFileMapOptions. (Zobacz poniżej). |
MIMode |
string | Wskazuje typ debugera konsoli z włączoną obsługą mi, z którą zostanie nawiązane połączenie MIDebugEngine. Dozwolone wartości to "gdb" , "lldb" . |
args |
tablica | Argumenty wiersza polecenia przekazane do programu. |
environment |
tablica | Zmienne środowiskowe, które mają zostać dodane do środowiska programu. Przykład: [ { "name": "squid", "value": "clam" } ] . |
targetArchitecture |
string | Architektura debuggee. Architektura jest wykrywana automatycznie, chyba że ten parametr jest ustawiony. Dozwolone wartości to x86 , , arm , mips arm64 x64 , , , . x86_64 amd64 |
visualizerFile |
string | Plik natvis, który ma być używany podczas debugowania tego procesu. Ta opcja nie jest zgodna z dość drukowaniem GDB. Sprawdź "showDisplayString" , czy używasz tego ustawienia. |
showDisplayString |
boolean | Po określeniu showDisplayString elementu visualizerFile włączy ciąg wyświetlania. Włączenie tej opcji może spowolnić wydajność podczas debugowania. |
remoteMachineName |
string | Zdalna maszyna z systemem Linux, która hostuje bazę danych gdb i program do debugowania. Użyj Menedżer połączeń do dodawania nowych maszyn z systemem Linux. W przypadku korzystania z narzędzia CMake makro ${debugInfo.remoteMachineName} może służyć jako wartość tego pola. |
miDebuggerPath |
string | Ścieżka do debugera z włączoną obsługą mi (na przykład gdb). Gdy nie zostanie określony, najpierw wyszuka ścieżkę dla debugera. |
miDebuggerServerAddress |
string | Adres sieciowy serwera debugera z obsługą protokołu MI do nawiązania połączenia. Przykład: "localhost:1234" . |
setupCommands |
tablica | Co najmniej jedno polecenie GDB/LLDB do wykonania w celu skonfigurowania bazowego debugera. Przykład: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }] . Aby uzyskać więcej informacji, zobacz Uruchamianie poleceń konfiguracji. |
customLaunchSetupCommands |
tablica | Jeśli zostanie podana, ta wartość zastępuje domyślne polecenia używane do uruchamiania obiektu docelowego za pomocą innych poleceń. Na przykład użyj polecenia "-target-attach", aby dołączyć do procesu docelowego. Pusta lista poleceń zastępuje polecenia uruchamiania niczym, co może być przydatne, jeśli debuger jest dostarczany opcje uruchamiania jako opcje wiersza polecenia. Przykład: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }] . |
launchCompleteCommand |
string | Polecenie do wykonania po pełnym skonfigurowaniu debugera, aby spowodować uruchomienie procesu docelowego. Dozwolone wartości to "exec-run", "exec-continue", "None". Wartość domyślna to "exec-run". |
debugServerPath |
string | Opcjonalna pełna ścieżka do serwera debugowania do uruchomienia. Wartość domyślna to null. |
debugServerArgs |
string | Opcjonalne args serwera debugowania. Wartość domyślna to null. |
filterStderr |
boolean | Wyszukaj strumień stderr dla wzorca uruchomionego przez serwer i narzędzia stderr dziennika w celu debugowania danych wyjściowych. Wartość domyślna to false . |
coreDumpPath |
string | Opcjonalna pełna ścieżka do podstawowego pliku zrzutu dla określonego programu. Wartość domyślna to null. |
externalConsole | boolean | Jeśli wartość true, zostanie uruchomiona konsola debugowania. Jeśli false program nie zostanie uruchomiony, żadna konsola nie zostanie uruchomiona. Ustawieniem domyślnym dla tego ustawienia jest false . Ta opcja jest ignorowana w niektórych przypadkach ze względów technicznych. |
pipeTransport |
string | Gdy ta wartość jest obecna, ta wartość informuje debugera o nawiązaniu połączenia z komputerem zdalnym przy użyciu innego pliku wykonywalnego jako potoku, który przekaże standardowe dane wejściowe/wyjściowe między programem Visual Studio i debugerem obsługującym protokół MI (np. gdb). Dozwolone wartości: co najmniej jedna opcja transportu potoku. |
makra debugInfo
Poniższe makra zawierają informacje o środowisku debugowania. Są one przydatne do dostosowywania uruchamiania aplikacji do debugowania.
Makro | opis | Przykład |
---|---|---|
addressSanitizerRuntimeFlags |
Flagi środowiska uruchomieniowego używane do dostosowywania zachowania narzędzia do oczyszczania adresów. Służy do ustawiania zmiennej środowiskowej "ASAN_OPTIONS" . |
"env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true" } |
defaultWorkingDirectory |
Ustaw element na część katalogu ."fullTargetPath" Jeśli zmienna VS_DEBUGGER_WORKING_DIRECTORY CMake jest zdefiniowana, defaultWorkingDirectory zostanie ustawiona na wartość , zamiast tego. |
"cwd":"${debugInfo.defaultWorkingDirectory}" |
fullTargetPath |
Pełna ścieżka do debugowanego pliku binarnego. | "program": "${debugInfo.fullTargetPath}" |
linuxNatvisPath |
Pełna ścieżka systemu Windows do pliku vs linux .natvis . Zazwyczaj jest wyświetlana jako wartość "visualizerFile" . |
|
parentProcessId |
Identyfikator procesu dla bieżącego wystąpienia programu Visual Studio. Używany jako parametr do powłokiexec. | Zobacz przykład pipeTransport poniżej. |
remoteMachineId |
Unikatowy, numeryczny identyfikator połączenia z maszyną zdalną. Używany jako parametr do powłokiexec. | Zobacz przykład pipeTransport poniżej. |
remoteWorkspaceRoot |
Ścieżka systemu Linux do zdalnej kopii obszaru roboczego. | Określ lokalizacje plików na maszynie zdalnej. Na przykład: "args": ["${debugInfo.remoteWorkspaceRoot}/Data/MyInputFile.dat"] . |
resolvedRemoteMachineName |
Nazwa docelowej maszyny zdalnej. | "targetMachine" wartość w dyrektywie wdrażania |
shellexecPath |
Ścieżka do programu shellexec używanego przez program Visual Studio do zarządzania połączeniem maszyny zdalnej. | Zobacz przykład pipeTransport poniżej |
tty |
Usługa gdb przekierowuje dane wejściowe i wyjściowe do tego urządzenia dla debugowanego programu. Używany jako parametr do gdb (-tty). | Zobacz przykład pipeTransport poniżej. |
windowsSubsystemPath |
Pełna ścieżka do wystąpienia Podsystem Windows dla systemu Linux. |
Poniższy przykład pipeTransport pokazuje, jak używać niektórych debugInfo
makr zdefiniowanych powyżej:
"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}"
]
}
Właściwości zdalnego debugowania i wdrażania systemu Windows w języku C++
Używany podczas debugowania i wdrażania aplikacji na maszynie zdalnej.
Właściwość | Type | opis |
---|---|---|
cwd |
string | Katalog roboczy obiektu docelowego na maszynie zdalnej. W przypadku korzystania z narzędzia CMake makro ${debugInfo.defaultWorkingDirectory} może służyć jako wartość tego pola. Wartość domyślna to katalog programu debugowania/polecenia. |
deploy |
string | Określa dodatkowe pliki lub katalogi do wdrożenia. Na przykład:"deploy": {"sourcePath":"<Full path to source file/directory on host machine>", "targetPath":"<Full destination path to file/directory on target machine>"} |
deployDirectory |
string | Lokalizacja na maszynie zdalnej, w której są automatycznie wdrażane dane wyjściowe projektu. Wartości domyślne to "C:\Windows Default Deploy Directory\<name of app> |
deployDebugRuntimeLibraries |
string | Określa, czy należy wdrożyć biblioteki środowiska uruchomieniowego debugowania dla aktywnej platformy. Wartość domyślna, "true" jeśli parametr active configurationType ma wartość "Debug" |
deployRuntimeLibraries |
string | Określa, czy należy wdrożyć biblioteki środowiska uruchomieniowego dla aktywnej platformy. Wartość domyślna to "true" , jeśli active configurationType to "MinSizeRel" , "RelWithDebInfo" lub "Release" . |
disableDeploy |
boolean | Określa, czy pliki mają być wdrażane. |
remoteMachineName |
string | Określa nazwę zdalnej maszyny z systemem Windows ARM64, na której jest uruchamiany program. Może to być nazwa serwera lub adres IP maszyny zdalnej. |
authenticationType |
string | Określa typ połączenia zdalnego. Możliwe wartości to "windows" i "none" . Wartość domyślna to "windows" . Ta wartość powinna być zgodna z ustawieniem uwierzytelniania określonym na zdalnym debugerze uruchomionym na maszynie zdalnej. |
Uruchamianie poleceń konfiguracji
Używany z właściwością setupCommands
:
Właściwość | Type | opis |
---|---|---|
text |
string | Polecenie debugera do wykonania. |
description |
string | Opcjonalny opis polecenia. |
ignoreFailures |
boolean | Jeśli to prawda, błędy z polecenia powinny być ignorowane. Wartość domyślna to false . |
Opcje transportu rur
Używany z właściwością pipeTransport
:
Właściwość | Type | opis |
---|---|---|
pipeCwd |
string | W pełni kwalifikowana ścieżka do katalogu roboczego programu potokowego. |
pipeProgram |
string | W pełni kwalifikowane polecenie potoku do wykonania. |
pipeArgs |
tablica | Argumenty wiersza polecenia przekazane do programu potokowego w celu skonfigurowania połączenia. |
debuggerPath |
string | Pełna ścieżka do debugera na maszynie docelowej, na przykład /usr/bin/gdb. |
pipeEnv |
obiekt | Zmienne środowiskowe przekazywane do programu potokowego. |
quoteArgs |
boolean | Jeśli poszczególne argumenty zawierają znaki (takie jak spacje lub karty), czy powinny być cytowane? Jeśli false polecenie debugera nie będzie już automatycznie cytowane. Wartość domyślna to true . |
Opcje mapy plików źródłowych
Użyj z właściwością sourceFileMap
:
Właściwość | Type | opis |
---|---|---|
editorPath |
string | Lokalizacja kodu źródłowego edytora do zlokalizowania. |
useForBreakpoints |
boolean | Podczas ustawiania punktów przerwania należy użyć tego mapowania źródła. Jeśli false parametr używa tylko nazwy pliku i numeru wiersza do ustawiania punktów przerwania. Jeśli true punkty przerwania zostaną ustawione z pełną ścieżką do pliku i numeru wiersza tylko wtedy, gdy jest używane to mapowanie źródła. W przeciwnym razie podczas ustawiania punktów przerwania będzie używana tylko nazwa pliku i numer wiersza. Wartość domyślna to true . |