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

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

Po vytvoření projektu Linux C++ založeného na MSBuild v Visual Studio a připojení k projektu pomocí linuxového Správce připojenímůžete projekt spustit a ladit. Kód ve vzdáleném cíli můžete kompilovat, spouštět a ladit.

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řížovou kompilaci na x64 a nasadit na zařízení ARM. Další informace najdete v části Určení různých počítačů pro sestavení a ladění dále v tomto článku.

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

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

  • Zobrazení výstupu 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 databáze GDB běžet 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 Visual Studio stránky vlastností aplikace konzoly Linuxu s vybranou možností Ladění vlastností konfigurace a zvýrazněnou možností Režim ladění a zvýrazněnou možností GD B z  rozevíracího seznamu

    GDB se používá k ladění aplikací běžících v Linuxu. Databáze 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 Visual Studio 2017 Stránky vlastností linuxové konzolové aplikace s vybranou možností Ladění vlastností konfigurace a zvýrazněnou možností Režim ladění a zvýrazněnou možností GD B z  rozevíracího seznamu

    • V režimu gdbserver se GDB spustí místně, což se připojuje k gdbserver ve vzdáleném systému.

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

    Poznámka

    Pokud nemůžete získat zarážky v režimu ladění gdbserver, zkuste režim gdb. Na vzdáleném cíli musí být nejprve nainstalovaná databáze gdb.

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

    Když je vzdálený cíl k dispozici, zobrazí se v seznamu podle názvu nebo IP adresy.

    Snímek obrazovky znázorňující vzdálený cíl

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

    Snímek obrazovky se vzdálenou architekturou

  3. Zarážku nastavíte kliknutím do levého okapu kódu, o které víte, že se provede.

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

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

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

    Pokud nejsou žádné chyby, 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 krokovat kód stisknutím kláves, jako je F10 nebo F11.

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

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

    Tato konzola zobrazí výstup konzoly z cílového počítače, vezme 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í (MSBuild projekty)

  • 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 pomocí příkazu před spuštěním na stránkách vlastností DISPLAYLadění projektu. DISPLAY 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 SIIGN (neplatná instrukce). K tomu můžete použít příkaz handle přidáním následujícího příkazu do položky Additional Debugger Commands (Další příkazy ladicího programu), jak je znázorněno výše:

    handle SIGILL nostop noprint

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

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

Stránka vlastností Ladění pro Visual Studio projektů a nastavení Launch.vs.json pro projekty CMake mají nastavení, která umožňují připojit se ke spuštěnému procesu. Pokud požadujete další kontrolu nad rámec toho, co je v těchto nastaveních k dispozici, můžete do kořenového adresáře vašeho řešení nebo pracovního prostoru Microsoft.MIEngine.Options.xml umístit soubor s názvem . 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 obsahuje většinu atributů, které můžete potřebovat. Výše uvedený příklad ukazuje, jak zadat umístění pro vyhledání dalších knihoven .so. Podřízený element ServerOptions umožňuje připojení ke vzdálenému procesu pomocí gdbserver. K tomu je potřeba zadat místního klienta gdb (ten dodaný v Visual Studio 2017 je uvedený výše) a místní kopii binárního souboru se symboly. Element SetupCommands umožňuje předávat příkazy přímo do gdb. Všechny možnosti dostupné ve schématu LaunchOptions.xsd najdete na GitHub.

Určení různých počítačů pro sestavování a ladění v MSBuild linuxových projektech

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

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

Snímek obrazovky s vlastností počítače vzdáleného ladění v Linuxu v dialogovém okně Stránky vlastností

Rozevírací nabídka pro vzdálený ladicí počítač se naplní všemi na navázatý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 Správce připojení platformy nebo vyhledejte "Správce připojení" v Snadné spuštění . Můžete také zadat nový adresář vzdáleného nasazení na stránkách vlastností projektu (Vlastnosti konfiguraceObecné Adresářvzdáleného nasazení).

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

Snímek obrazovky zobrazující linuxové nasaditelné soubory zadané v okno Vlastnosti

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í Správce konfigurace 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 vzdálený adresář nasazení pro každý soubor 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 sestavení. Tyto vlastnosti se už nemusí shodovat a hodnota remoteMachineName v souboru launch.vs.json určuje, který vzdálený počítač se používá k nasazení a ladění.

Vzdálený ladicí počítač CMake zadaný v souboru launch.vs.json.

IntelliSense navrhne seznam všech na navázatých vzdálených připojení. Nové vzdálené připojení můžete přidat tak, že přejdete na Nástroje Možnosti pro více platforem Správce připojení nebo vyhledáte "Správce připojení" v 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

  • Pokud chcete ladit zařízení ARM v Linuxu, podívejte se na tento blogový příspěvek: Ladění integrovanéhozařízení ARM v Visual Studio .

Viz také

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