Sdílet prostřednictvím


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

Podpora Linuxu je k dispozici 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 umístěný 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 kompilujete, spouštíte a ladíte na vzdáleném cíli.

Visual Studio 2019 verze 16.1 a novější: 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 provést křížovou kompilaci na platformě x64 a nasadit ji do zařízení ARM. Další informace najdete v části 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 s projektem pro Linux pracovat a ladit ho.

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

  • Zobrazte výstup z cílového počítače v okně konzoly Linuxu. Pomocí konzoly můžete také odeslat vstup do cílového počítače.

Ladění linuxového projektu

  1. Na stránce vlastností 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 (ne WSL) může GDB běžet ve dvou různých režimech, které lze vybrat z možnosti Režim ladění na stránce vlastnosti Ladění projektu:

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

    GDB se používá k ladění aplikací běžících v Linuxu. GDB může běžet ve dvou různých režimech, které je možné 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 Linuxu v sadě Visual Studio 2017 s vybranou možností Ladění vlastností > konfigurace a zvýrazněným režimem ladění s vybranou a zvýrazněnou možností G D B v rozevíracím seznamu

    • V režimu gdbserver se GDB spouští místně a připojuje se ke gdbserveru ve vzdáleném systému.

    • V režimu gdb ladicí program sady Visual Studio řídí GDB ve vzdáleném systému. Toto 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ána ve vzdáleném cíli.

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

    Jakmile bude vzdálený cíl dostupný, zobrazí se v seznamu podle názvu nebo IP adresy.

    Snímek obrazovky zobrazující vzdálenou cílovou IP adresu

    Pokud jste se ke vzdálenému cíli ještě nepřipojili, zobrazí se vám pokyn k připojení ke vzdálenému cíli pomocí Linuxu Správce připojení.

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

  3. Nastavte zarážku kliknutím na levý hřbet nějakého kódu, o který víte, že se spustí.

    Na řádku kódu, kde nastavíte zarážku, se zobrazí červená tečka.

  4. Stisknutím klávesy F5 (nebo Spustit ladění>) spusťte ladění.

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

    Pokud nedojde k žádným chybám, aplikace se spustí a ladicí program se pozastaví na zarážce.

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

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

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

    Snímek obrazovky s položkou nabídky konzoly Linuxu

    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 DISPLAY prostředí můžete exportovat 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 do GDB pomocí položky Additional Debugger Commands (Další příkazy ladicího programu ). Můžete například ignorovat signály SIGILL (nelegální instrukce). K dosažení tohoto cíle můžete použít příkaz handle tak, že do položky Additional Debugger Commands (Další příkazy ladicího programu ) přidáte následující příkazy, jak je znázorněno výše:

    handle SIGILL nostop noprint

  • Cestu ke GDB používanou sadou Visual Studio můžete zadat pomocí položky Cesta GDB na stránce vlastností Ladění projektu. Tato vlastnost je dostupná v sadě Visual Studio 2019 verze 16.9 a novější.

Ladění s připojením k procesu

Stránka vlastností Ladění pro projekty sady Visual Studio a nastavení Launch.vs.json pro projekty CMake obsahují nastavení, která umožňují připojení ke spuštěným procesům. Pokud potřebujete větší kontrolu nad rámec toho, co je k dispozici v těchto nastaveních, 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é můžete potřebovat. Výše uvedený příklad ukazuje, jak zadat umístění pro vyhledání více knihoven .so. Podřízený prvek ServerOptions umožňuje připojení ke vzdálenému procesu pomocí gdbserver místo toho. K tomu je potřeba zadat místního klienta GDB (viz výše uvedený obrázek v sadě Visual Studio 2017) a místní kopii binárního souboru se symboly. Element SetupCommands umožňuje předat příkazy přímo do gdb. Všechny dostupné možnosti najdete ve schématu LaunchOptions.xsd na GitHubu .

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

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 provést křížovou kompilaci na platformě x64 a nasadit ji do zařízení ARM.

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

Snímek obrazovky znázorňující vlastnost vzdáleného ladicího počítače s Linuxem v dialogovém okně Stránky vlastností, která zobrazuje uživatelské jméno, typ ověřování a port

Rozevírací nabídka Pro vzdálený ladicí počítač se naplní všemi navázanými vzdálenými připojeními. Pokud chcete přidat nové vzdálené připojení, přejděte na Nástroje>Možnosti>pro různé platformy>Správce připojení nebo na panelu Snadné spuštění vyhledejte "Správce připojení". Nový adresář vzdáleného nasazení můžete zadat také na stránkách vlastností projektu (vlastnosti> konfigurace– obecný>adresář vzdáleného nasazení).

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

Snímek obrazovky zobrazující vlastnosti souboru main.cpp se zvýrazněnou vlastností content = False

Vlastnost Content určuje, jestli se soubor nasadí na vzdálený ladicí počítač. Nasazení můžete úplně zakázat tak, že přejdete na Stránky> vlastností Configuration Manager a zrušíte zaškrtnutí políčka Nasadit, abyste získali 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 vzdálený adresář nasazení pro jednotlivé soubory nebo adresář. V těchto případech připojte následující bloky kódu k souboru .vcxproj 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

Pro projekty CMake, které cílí na vzdálený počítač s Linuxem, můžete zadat nový vzdálený ladicí počítač v souboru launch.vs.json. Ve výchozím nastavení se hodnota remoteMachineName synchronizuje s vlastností remoteMachineName v souboru CMakeSettings.json, která odpovídá vašemu vzdálenému počítači pro sestavení. Tyto vlastnosti se už nemusí shodovat a hodnota remoteMachineName v souboru launch.vs.json určuje, který vzdálený počítač se použije 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 navrhne seznam všech navázaných vzdálených připojení. Nové vzdálené připojení můžete přidat tak, že přejdete naMožnosti>nástrojů>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 nad nasazením úplnou kontrolu, můžete k souboru launch.vs.json 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++)