Udostępnij przez


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ść Typ Opis
args macierz Określa argumenty wiersza polecenia przekazane do uruchomionego programu.
buildConfigurations macierz Para klucz-wartość określająca nazwę trybu kompilacji, aby zastosować konfiguracje. Na przykład Debug lub Release oraz konfiguracje, które mają być używane zgodnie z wybranym trybem kompilacji.
currentDir ciąg Określa pełną ścieżkę katalogu do celu kompilacji. Katalog jest wykrywany automatycznie, chyba że ten parametr jest ustawiony.
cwd ciąg Pełna ścieżka do katalogu w systemie zdalnym, w którym zostanie uruchomiony program. Wartość domyślna to "${debugInfo.defaultWorkingDirectory}".
debugType ciąg 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 macierz Określa listę niestandardowych zmiennych środowiskowych w formacie klucz-wartość. Na przykład: env:{"myEnv":"myVal"}.
inheritEnvironments macierz 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 ciąg Określa nazwę wpisu w rozwijanym menu „Element startowy”.
noDebug typ logiczny (boolowski) Określa, czy należy debugować uruchomiony program. Wartość domyślna dla tego parametru jest false , jeśli nie zostanie określona.
portName ciąg Określa nazwę portu podczas dołączania do uruchomionego procesu.
program ciąg Polecenie debugowania do wykonania. Wartość domyślna to "${debugInfo.fullTargetPath}".
project ciąg Określa ścieżkę względną do pliku projektu. Zwykle nie trzeba zmieniać tej wartości podczas debugowania projektu CMake.
projectTarget ciąg Określa opcjonalny element docelowy wywoływany podczas kompilowania project. Element docelowy musi być zgodny z nazwą na liście rozwijanej Element startowy.
stopOnEntry typ logiczny (boolowski) Określa, czy należy przerwać, gdy tylko proces zostanie uruchomiony i debuger dołączy. Wartość domyślna tego parametru to false.
remoteMachine ciąg Określa nazwę maszyny zdalnej, na której jest uruchamiany program.
type ciąg Określa, czy projekt ma wartość dll , czy exe. Wartość domyślna to "exe".

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

Właściwość Typ Opis
program ciąg 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 liczba całkowita Opcjonalny identyfikator procesu, do którego ma zostać dołączony debuger.
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 ciąg Jeden z elementów źródłowychFileMapOptions. (Zobacz poniżej).
MIMode ciąg Wskazuje typ debugera konsoli MI-włączonej, z którą MIDebugEngine nawiąże połączenie. Dozwolone wartości to "gdb", "lldb".
args macierz Parametry wiersza polecenia przekazane do programu.
environment macierz Zmienne środowiskowe, które mają zostać dodane do środowiska programu. Przykład: [ { "name": "squid", "value": "clam" } ].
targetArchitecture ciąg Architektura debuggowanego programu. Architektura jest wykrywana automatycznie, chyba że ten parametr jest ustawiony. Dozwolone wartości to x86, , arm, arm64mipsx64, , , . amd64x86_64
visualizerFile ciąg Plik natvis, który ma być używany podczas debugowania tego procesu. Ta opcja nie jest zgodna z ładnym formatowaniem GDB. Sprawdź "showDisplayString" , czy używasz tego ustawienia.
showDisplayString typ logiczny (boolowski) Po określeniu pliku visualizerFile, showDisplayString umożliwi wyświetlanie ciągu. Włączenie tej opcji może spowolnić wydajność podczas debugowania.
remoteMachineName ciąg 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 ciąg Ścieżka do debugera z obsługą MI (na przykład gdb). Gdy nie zostanie określony, najpierw przeszuka PATH w poszukiwaniu debugera.
miDebuggerServerAddress ciąg Adres sieciowy serwera debugera z obsługą protokołu MI do nawiązania połączenia. Przykład: "localhost:1234".
setupCommands macierz Co najmniej jedno polecenie GDB/LLDB do wykonania w celu przygotowania podstawowego debugera do działania. Przykład: "setupCommands": [ { "text": "-enable-pretty-printing", "description": "Enable GDB pretty printing", "ignoreFailures": true }]. Aby uzyskać więcej informacji, zobacz Polecenia uruchamiania konfiguracji.
customLaunchSetupCommands macierz 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ń usuwa wszelkie polecenia uruchamiania, co może być przydatne, jeśli debuger otrzymuje opcje uruchamiania jako opcje wiersza polecenia. Przykład: "customLaunchSetupCommands": [ { "text": "target-run", "description": "run target", "ignoreFailures": false }].
launchCompleteCommand ciąg 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 ciąg Opcjonalna pełna ścieżka do serwera debugowania do uruchomienia. Wartość domyślna to null.
debugServerArgs ciąg Opcjonalne argumenty serwera debug. Wartość domyślna to „null”.
filterStderr typ logiczny (boolowski) Przeszukaj strumień stderr w poszukiwaniu wzorca uruchomienia serwera i zarejestruj strumień stderr w dzienniku do debugowania danych wyjściowych. Wartość domyślna to false.
coreDumpPath ciąg Opcjonalna pełna ścieżka do podstawowego pliku zrzutu dla określonego programu. Wartość domyślna to null.
externalConsole typ logiczny (boolowski) Jeśli ustawione na wartość true, zostanie uruchomiona konsola dla debuggera. Jeśli false, ż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 ciąg Gdy wartość jest obecna, informuje debugera o ustanowieniu połączenia z komputerem zdalnym, wykorzystując inny plik wykonywalny jako potok do przekazywania standardowych danych wejściowych/wyjściowych między programem Visual Studio a debugerem obsługującym protokół MI (np. gdb). Dozwolone wartości: jedna lub więcej opcji transportu rurociągu.

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 jako 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 shellexec. Zobacz przykład pipeTransport poniżej.
remoteMachineId Unikatowy, numeryczny identyfikator połączenia z maszyną zdalną. Używany jako parametr dla shellexec. 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ść Typ Opis
cwd ciąg 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 ciąg 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 ciąg Miejsce na zdalnej maszynie, gdzie wyniki projektu są automatycznie wdrażane. Wartość domyślna to "C:\Windows Default Deploy Directory\<name of app>".
deployDebugRuntimeLibraries ciąg Określa, czy należy wdrożyć biblioteki debugowania wykonywalnego środowiska uruchomieniowego dla aktywnej platformy. Wartość domyślna to "true" , jeśli parametr active configurationType ma wartość "Debug".
deployRuntimeLibraries ciąg 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 typ logiczny (boolowski) Określa, czy pliki mają być wdrażane.
remoteMachineName ciąg 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 ciąg 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ść Typ Opis
text ciąg Polecenie debugera do wykonania.
description ciąg Opcjonalny opis polecenia.
ignoreFailures typ logiczny (boolowski) 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ść Typ Opis
pipeCwd ciąg W pełni kwalifikowana ścieżka do katalogu roboczego programu potokowego.
pipeProgram ciąg W pełni kwalifikowane polecenie rurociągu do wykonania.
pipeArgs macierz Argumenty wiersza polecenia przekazane do programu potokowego w celu skonfigurowania połączenia.
debuggerPath ciąg Pełna ścieżka do debugera na maszynie docelowej, na przykład /usr/bin/gdb.
pipeEnv obiekt Zmienne środowiskowe przekazywane do programu potokowego.
quoteArgs typ logiczny (boolowski) Jeśli poszczególne argumenty zawierają znaki (takie jak spacje lub karty), czy powinny być cytowane? Jeśli false, to polecenie debugera nie będzie już automatycznie cytowane w przyszłości. Wartość domyślna to true.

Opcje mapy plików źródłowych

Użyj z właściwością sourceFileMap :

Właściwość Typ Opis
editorPath ciąg Lokalizacja kodu źródłowego, aby edytor mógł go znaleźć.
useForBreakpoints typ logiczny (boolowski) Podczas ustawiania punktów przerwania należy użyć tego mapowania źródła. Jeśli false, jedynie nazwa pliku i numer wiersza są używane 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 to mapowanie źródła jest używane. W przeciwnym razie podczas ustawiania punktów przerwania będzie używana tylko nazwa pliku i numer wiersza. Wartość domyślna to true.