Udostępnij za pośrednictwem


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 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 Debug konfiguracje, Release które mają być używane zgodnie z wybranym trybem kompilacji.
currentDir sznurek Określa pełną ścieżkę katalogu do elementu docelowego kompilacji. Katalog jest wykrywany automatycznie, chyba że ten parametr jest ustawiony.
cwd sznurek Pełna ścieżka do katalogu w systemie zdalnym, w którym zostanie uruchomiony program. Wartości domyślne "${debugInfo.defaultWorkingDirectory}"
debugType sznurek 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 sznurek Określa nazwę wpisu na liście rozwijanej 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 sznurek Określa nazwę portu podczas dołączania do uruchomionego procesu.
program sznurek Polecenie debugowania do wykonania. Wartość domyślna to "${debugInfo.fullTargetPath}".
project sznurek Określa ścieżkę względną do pliku projektu. Zwykle nie trzeba zmieniać tej wartości podczas debugowania projektu CMake.
projectTarget sznurek 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ć proces zaraz po uruchomieniu procesu, a debuger dołącza. Wartość domyślna tego parametru to false.
remoteMachine sznurek Określa nazwę maszyny zdalnej, na której jest uruchamiany program.
type sznurek 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ść Typ Opis
program sznurek 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 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 sznurek Jeden z elementów źródłowychFileMapOptions. (Zobacz poniżej).
MIMode sznurek 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 sznurek Architektura debuggee. Architektura jest wykrywana automatycznie, chyba że ten parametr jest ustawiony. Dozwolone wartości to x86, , arm, arm64mipsx64, , , . amd64x86_64
visualizerFile sznurek 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 typ logiczny (boolowski) Po określeniu showDisplayString elementu visualizerFile włączy ciąg wyświetlania. Włączenie tej opcji może spowolnić wydajność podczas debugowania.
remoteMachineName sznurek 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 sznurek Ś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 sznurek 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 sznurek 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 sznurek Opcjonalna pełna ścieżka do serwera debugowania do uruchomienia. Wartość domyślna to null.
debugServerArgs sznurek Opcjonalne args serwera debugowania. Wartość domyślna to null.
filterStderr typ logiczny (boolowski) 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 sznurek Opcjonalna pełna ścieżka do podstawowego pliku zrzutu dla określonego programu. Wartość domyślna to null.
externalConsole typ logiczny (boolowski) 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 sznurek 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ść Typ Opis
cwd sznurek 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 sznurek 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 sznurek 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 sznurek 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 sznurek 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 sznurek 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 sznurek 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 sznurek Polecenie debugera do wykonania.
description sznurek 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 sznurek W pełni kwalifikowana ścieżka do katalogu roboczego programu potokowego.
pipeProgram sznurek W pełni kwalifikowane polecenie potoku do wykonania.
pipeArgs tablica Argumenty wiersza polecenia przekazane do programu potokowego w celu skonfigurowania połączenia.
debuggerPath sznurek 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 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ść Typ Opis
editorPath sznurek Lokalizacja kodu źródłowego edytora do zlokalizowania.
useForBreakpoints typ logiczny (boolowski) 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.