Sdílet prostřednictvím


Nasazení, spuštění a ladění projektu Linux MSBuild

Podpora Linuxu je dostupná v sadě Visual Studio 2017 a novějších verzích. Pokud chcete zobrazit dokumentaci k těmto verzím, nastavte rozevírací seznam Verze nad obsahem na Visual Studio 2017 nebo Visual Studio 2019.

Po vytvoření projektu linuxového C++ založeného na MSBuildu v sadě Visual Studio a připojení k projektu pomocí Správce připojení Linuxu můžete projekt spustit a ladit. Kód zkompilujete, spustíte a ladíte ve vzdáleném cíli.

Visual Studio 2019 verze 16.1 a novější: Pro ladění a sestavování můžete cílit na různé systémy Linux. Při cílení na scénáře IoT můžete například křížově kompilovat na platformě x64 a nasadit je do zařízení ARM. Další informace naleznete v tématu Určení různých počítačů pro sestavování a ladění dále v tomto článku.

Existuje několik způsobů, jak pracovat s linuxovým projektem a ladit ho.

  • Ladění pomocí tradičních funkcí sady Visual Studio, jako jsou zarážky, okna kukátků a najetí myší na proměnnou Pomocí těchto metod můžete ladit obvyklým způsobem pro jiné typy projektů.

  • Zobrazení výstupu z cílového počítače v okně konzoly linuxu Můžete také použít konzolu k odeslání vstupu do cílového počítače.

Ladění projektu Linuxu

  1. Na stránce vlastnosti Ladění vyberte režim ladění.

    GDB se používá k ladění aplikací běžících v Linuxu. Při ladění ve vzdáleném systému (nikoli WSL) GDB lze spustit ve dvou různých režimech, které lze vybrat z možnosti Režim ladění na stránce vlastností Ladění projektu:

    Snímek obrazovky s dialogovým oknem Stránky vlastností aplikace konzoly sady Visual Studio s vybranou možností Ladění vlastností > konfigurace a zvýrazněným režimem ladění s vybranou možností G D B a zvýrazněnou v rozevíracím seznamu

    GDB se používá k ladění aplikací běžících v Linuxu. GDB lze spustit ve dvou různých režimech, které lze vybrat z možnosti Režim ladění na stránce vlastností Ladění projektu:

    Snímek obrazovky s dialogovým oknem Stránky vlastností aplikace konzoly sady Visual Studio 2017 s vybranou možností Ladění vlastností > konfigurace a zvýrazněným režimem ladění s vybranou možností G D B a zvýrazněnou v rozevíracím seznamu

    • V režimu gdbserveru se GDB spouští místně, který se připojuje k gdbserveru ve vzdáleném systému. Chcete-li tuto možnost použít, je nutné zadat místní cestu k GDB pod Cesta ladicího programu v sadě Visual Studio 2022 verze 17.6 a novější, nebo pod Cesta GDB v Visual Studio 2019 verze 16.11 a starší. Další informace o tom, kde zadat cestu k GDB pro projekty CMake, najdete v tématu Další možnosti povolené s konfigurací gdbserveru (16.7 nebo novější).

    • V režimu gdb ladicí program sady Visual Studio řídí GDB ve vzdáleném systému. To je lepší možnost, pokud místní verze GDB není kompatibilní s verzí nainstalovanou na cílovém počítači. Toto je jediný režim, který okno konzoly linuxu podporuje.

      Poznámka:

      Pokud v režimu ladění gdbserveru nemůžete narazit na zarážky, zkuste režim gdb. GDB musí být nejprve nainstalován ve vzdáleném cíli.

  2. Vyberte vzdálený cíl pomocí standardního panelu nástrojů Ladění v sadě Visual Studio.

    Pokud je vzdálený cíl dostupný, zobrazí se v seznamu podle názvu nebo IP adresy:

    Snímek obrazovky znázorňující VZDÁLENOU cílovou IP adresu

    Pokud jste se ještě nepřipojili ke vzdálenému cíli, zobrazí se pokyny k použití Správce připojení k Linuxu pro připojení ke vzdálenému cíli:

    Snímek obrazovky znázorňující vzdálenou architekturu, která je x64

  3. Nastavte zarážku kliknutím do levého hřbetu některého kódu, který víte, že se provede. Na řádku kódu, kde nastavíte zarážku, se zobrazí červená tečka.

  4. Ladění spustíte stisknutím klávesy F5 (nebo >).

    Když spustíte ladění, aplikace se před spuštěním zkompiluje do vzdáleného cíle. Všechny chyby kompilace se zobrazí v okně seznamu chyb .

    Pokud nedojde k žádným chybám, aplikace se spustí a ladicí program se pozastaví na bodu přerušení.

    Snímek obrazovky znázorňující, že se aplikace dostala na zarážku

    Teď můžete s aplikací pracovat v aktuálním stavu, zobrazit proměnné a procházet kód stisknutím kláves command key, jako je F10 nebo F11.

  5. Pokud chcete k interakci s aplikací použít konzolu Pro Linux, vyberte Ladit > konzolu Linuxu.

    Snímek obrazovky s položkou nabídky Konzola pro Linux

    Tato konzola zobrazí výstup konzoly z cílového počítače a přijme vstup a odešle ho do cílového počítače.

    Snímek obrazovky s oknem konzoly Linuxu

Konfigurace dalších možností ladění (projekty MSBuild)

  • Argumenty příkazového řádku lze předat spustitelnému souboru pomocí položky Argumenty programu na stránce vlastností Ladění projektu.

  • Proměnnou prostředí můžete exportovat DISPLAY pomocí příkazu Před spuštěním na stránkách vlastností Ladění projektu. Příklad: export DISPLAY=:0.0

    Snímek obrazovky s vlastností Argumenty programu v dialogovém okně Stránky vlastností

  • Konkrétní možnosti ladicího programu je možné předat GDB pomocí položky Další příkazy ladicího programu. Můžete například chtít ignorovat signály SIGILL (nelegální instrukce). K dosažení tohoto cíle můžete použít příkaz popisovač přidáním následujícího k položce Další příkazy ladicího programu uvedené výše: handle SIGILL nostop noprint.

  • Na stránce vlastností Ladění projektu zadejte cestu k GDB používané sadou Visual Studio pomocí položky cesta GDB. Tato vlastnost je dostupná v sadě Visual Studio 2019 verze 16.9 a novější.

Ladění s využitím připojení k procesu

Stránka vlastností Ladění pro projekty sady Visual Studio a nastavení Launch.vs.json pro projekty CMake mají nastavení, která umožňují připojit se ke spuštěném procesu. Pokud potřebujete větší kontrolu nad tím, co je v těchto nastaveních k dispozici, můžete soubor s názvem Microsoft.MIEngine.Options.xml umístit do kořenového adresáře vašeho řešení nebo pracovního prostoru. Tady je jednoduchý příklad:

<?xml version="1.0" encoding="utf-8"?>
<SupplementalLaunchOptions>
    <AttachOptions>
      <AttachOptionsForConnection AdditionalSOLibSearchPath="/home/user/solibs">
        <ServerOptions MIDebuggerPath="C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\VC\Linux\bin\gdb\7.9\x86_64-linux-gnu-gdb.exe"
ExePath="C:\temp\ConsoleApplication17\ConsoleApplication17\bin\x64\Debug\ConsoleApplication17.out"/>
        <SetupCommands>
          <Command IgnoreFailures="true">-enable-pretty-printing</Command>
        </SetupCommands>
      </AttachOptionsForConnection>
    </AttachOptions>
</SupplementalLaunchOptions>

AttachOptionsForConnection má většinu atributů, které možná budete potřebovat. Výše uvedený příklad ukazuje, jak zadat umístění pro hledání dalších .so knihoven. Podřízený element ServerOptions umožňuje připojení ke vzdálenému procesu pomocí gdbserveru. K tomu je potřeba zadat místního klienta gdb (ten, který se dodává v sadě Visual Studio 2017 výše) a místní kopii binárního souboru se symboly. Element SetupCommands umožňuje předat příkazy přímo do gdb. Všechny možnosti dostupné ve schématu LaunchOptions.xsd najdete na GitHubu.

Určení různých počítačů pro sestavování a ladění v projektech Linux založených na MSBuildu

Vzdálený počítač sestavení můžete oddělit od vzdáleného ladicího počítače pro linuxové projekty založené na MSBuildu i projekty CMake, které cílí na vzdálený počítač s Linuxem. Při cílení na scénáře IoT teď můžete například křížově kompilovat na platformě x64 a nasadit je do zařízení ARM.

Ve výchozím nastavení je vzdálený ladicí počítač stejný jako vzdálený počítač sestavení (Obecné>konfigurace vzdáleného sestavení). Pokud chcete zadat nový vzdálený ladicí počítač, klikněte pravým tlačítkem myši na projekt v Průzkumníku řešení a přejděte na Vlastnosti konfigurace>ladění>vzdáleného ladicího počítače:

Snímek obrazovky znázorňující vlastnost počítače vzdáleného ladění Linuxu v dialogovém okně Stránky vlastností s uživatelským jménem, typem ověřování a portem

Rozevírací nabídka pro vzdálený ladicí počítač se naplní všemi zavedenými vzdálenými připojeními.

Pokud chcete přidat nové vzdálené připojení, přejděte do nabídky Možnosti>pro různé platformy> Správce připojení nebo vyhledejte "Správce připojení" na panelu Snadné spuštění. Můžete také zadat nový adresář vzdáleného nasazení na stránkách vlastností projektu (>>nasazení adresáře).

Ve výchozím nastavení se do vzdáleného ladicího počítače nasadí jenom soubory potřebné k ladění procesu. Pomocí Průzkumníka řešení můžete nakonfigurovat, které zdrojové soubory se nasadí do vzdáleného ladicího počítače. Když kliknete na zdrojový soubor, zobrazí se náhled jeho vlastností souboru přímo pod Průzkumníkem řešení:

Snímek obrazovky znázorňující vlastnosti souboru main.cpp se zvýrazněným obsahem vlastnosti = False

Vlastnost Content určuje, zda se soubor nasadí do vzdáleného ladicího počítače. Nasazení můžete úplně zakázat tak, že přejdete do >vlastností a zrušíte zaškrtnutí políčka Nasadit pro požadovanou konfiguraci.

V některých případech můžete vyžadovat větší kontrolu nad nasazením projektu. Například některé soubory, které chcete nasadit, můžou být mimo vaše řešení nebo chcete přizpůsobit adresář vzdáleného nasazení na soubor nebo adresář. V těchto případech připojte k souboru .vcxproj následující bloky kódu a nahraďte "example.cpp" skutečnými názvy souborů:


<ItemGroup>
   <RemoteDeploy Include="__example.cpp">
<!-- This is the source Linux machine, can be empty if DeploymentType is LocalRemote -->
      <SourceMachine>$(RemoteTarget)</SourceMachine>
      <TargetMachine>$(RemoteDebuggingTarget)</TargetMachine>
      <SourcePath>~/example.cpp</SourcePath>
      <TargetPath>~/example.cpp</TargetPath>
<!-- DeploymentType can be LocalRemote, in which case SourceMachine will be empty and SourcePath is a local file on Windows -->
      <DeploymentType>RemoteRemote</DeploymentType>
<!-- Indicates whether the deployment contains executables -->
      <Executable>true</Executable>
   </RemoteDeploy>
</ItemGroup>

Projekty CMake

U projektů CMake, které cílí na vzdálený počítač s Linuxem, můžete v launch.vs.json zadat nový vzdálený ladicí počítač. Ve výchozím nastavení je hodnota "remoteMachineName" synchronizována s atributem "remoteMachineName" v CMakeSettings.json, která odpovídá vašemu vzdálenému sestavovacímu stroji. Tyto vlastnosti se už nemusí shodovat a hodnota "remoteMachineName" v launch.vs.json diktuje, který vzdálený počítač bude použit k nasazení a ladění.

Vzdálený ladicí počítač CMake zadaný v souboru launch_schema.json. Název vzdáleného počítače je ${debugInfo . remoteMachineName}

IntelliSense navrhuje seznam všech vytvořených vzdálených připojení. Nové vzdálené připojení můžete přidat tak, že přejdete na Možnosti>>pro různé platformy> Správce připojení nebo vyhledáte "Správce připojení" na panelu Snadné spuštění.

Pokud chcete mít úplnou kontrolu nad nasazením, můžete do launch.vs.json souboru připojit následující bloky kódu. Nezapomeňte nahradit zástupné hodnoty skutečnými hodnotami:

"disableDeploy": false,
"deployDirectory": "~\foo",
"deploy" : [
   {
      "sourceMachine": "127.0.0.1 (username=example1, port=22, authentication=Password)",
      "targetMachine": "192.0.0.1 (username=example2, port=22, authentication=Password)",
      "sourcePath": "~/example.cpp",
      "targetPath": "~/example.cpp",
      "executable": "false"
   }
]

Další kroky

Viz také

Vlastnosti ladění C++ (Linux C++)