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ść Pisz 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 lub exe .exe

Właściwości języka C++ dla systemu Linux

Właściwość Pisz 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, mipsarm64x64, , , . x86_64amd64
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żera Połączenie ion 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 falseprogram 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.

Macro 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ść Pisz 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. 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ść Pisz 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ść Pisz 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 falsepolecenie 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ść Pisz 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 falseparametr używa tylko nazwy pliku i numeru wiersza do ustawiania punktów przerwania. Jeśli truepunkty 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.