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
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:
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:
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.
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:
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:
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.
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í.
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.
Pokud chcete k interakci s aplikací použít konzolu Pro Linux, vyberte Ladit > konzolu 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.
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
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 cestaGDB. 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:
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í:
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í.
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
- Pokud chcete ladit zařízení ARM v Linuxu, přečtěte si tento blogový příspěvek: Ladění vloženého zařízení ARM v sadě Visual Studio.