Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Linux-támogatás a Visual Studio 2017-ben és újabb verzióiban érhető el. A verziók dokumentációjának megtekintéséhez állítsa a tartalomjegyzék fölött található Verzió legördülő menüt Visual Studio 2017 vagy Visual Studio 2019.
Miután létrehozott egy MSBuild-alapú Linux C++ projektet a Visual Studióban, és a Linux Connection Managerhasználatával csatlakozott a projekthez, futtathatja és hibakereséssel végezheti el a projektet. Lefordítja, végrehajtja és hibakeresi a kódot a távoli célponton.
Visual Studio 2019 16.1-es és újabb verziójának: Különböző Linux-rendszereket célozhat meg a hibakereséshez és az építéshez. Például keresztfordítást végezhet x64-en és egy ARM-eszközön helyezheti üzembe, amikor IoT-forgatókönyveket céloz meg. További információért lásd a jelen cikk későbbi részében a különböző gépek megadásáról építéshez és hibakereséshez szóló részt.
A Linux-projekttel többféleképpen is kommunikálhat és hibakeresést végezhet.
Hibakeresés hagyományos Visual Studio-funkciókkal, például töréspontok, ablaknézés és rámutatás egy változóra. Ezekkel a módszerekkel ugyanúgy végezhet hibakeresést, mint más projekttípusok esetében.
A célszámítógép kimenetének megtekintése a Linux konzolablakban. A konzol használatával bemenetet is küldhet a célszámítógépre.
Linux-projekt hibakeresése
Válassza a hibakeresési módot a Hibakeresés tulajdonságlapon.
A GDB a Linuxon futó alkalmazások hibakeresésére szolgál. Távoli rendszeren (nem WSL-en) végzett hibakeresés esetén a GDB két különböző módban futtatható, amelyek a projekt hibakeresési tulajdonságlapjának Hibakeresési mód lehetőségéből választhatók ki:
A GDB a Linuxon futó alkalmazások hibakeresésére szolgál. A GDB két különböző módban futtatható, amelyeket a projekt Hibakeresési tulajdonságlapjának Hibakeresési mód beállításából lehet kiválasztani:
gdbserver módban a GDB helyileg fut, amely a távoli rendszeren található gdbserverhez csatlakozik. Ennek használatához meg kell adnia egy helyi Windows-elérési utat a GDB-hez Hibakereső elérési útjánakVisual Studio 2022 17.6-os és újabb verziójában, vagy a GDB Path alatt Visual Studio 2019 16.11-es és korábbi verziójában és korábbi verzióiban. További információért arról, hogy hol adható meg a CMake-projektekhez készült GDB elérési útja, lásd a gdbserver konfigurációval (16.7 vagy újabb) engedélyezett további lehetőségeket.
gdb módban a Visual Studio hibakeresője a GDB-t a távoli rendszeren hajtja. Ez jobb megoldás, ha a GDB helyi verziója nem kompatibilis a célszámítógépen telepített verzióval. Ez az egyetlen mód, amelyet a Linux konzolablak támogat.
Jegyzet
Ha a gdbserver hibakeresési módban nem talál töréspontokat, próbálkozzon gdb módban. A gdb-t először kell telepíteni a távoli eszközre.
Válassza ki a távoli célt a Visual Studio standard Hibakeresési eszköztárával.
Ha a távoli cél elérhető, megjelenik név vagy IP-cím szerint:
Ha még nem csatlakozott a távoli célhoz, útmutatást lát arra, hogy hogyan használja a Linux Connection Managert a távoli célhoz való csatlakozáshoz.
Állítson be egy töréspontot úgy, hogy egy olyan kód bal szélére kattint, amelyről tudja, hogy futni fog. Piros pont jelenik meg azon a kódsoron, ahol a töréspontot állítja be.
Nyomja le F5 (vagy Hibakeresés > Hibakeresés indítása) billentyűkombinációt a hibakeresés megkezdéséhez.
A hibakeresés megkezdésekor az alkalmazást a távoli célon fordítják le, mielőtt elindul. A fordítási hibák megjelennek a Hibalista ablakban.
Ha nincsenek hibák, az alkalmazás elindul, és a hibakereső a töréspontnál szünetel:
Most már használhatja az alkalmazást az aktuális állapotában, megtekintheti a változókat, és lépegethet a kódon olyan parancsbillentyűk lenyomásával, mint F10 vagy F11.
Ha a Linux-konzolt szeretné használni az alkalmazás használatához, válassza Hibakeresés > Linux-konzollehetőséget.
Ez a konzol megjeleníti a konzol kimenetét a célszámítógépről, és felveszi a bemenetet, és elküldi a célszámítógépnek.
Egyéb hibakeresési beállítások konfigurálása (MSBuild-projektek)
A parancssori argumentumok a projekt Hibakeresés tulajdonságlapjának Programargumentumok elemével továbbíthatók a végrehajthatónak.
A
DISPLAYkörnyezeti változót a projekt hibakeresési tulajdonságlapjain található Indítás előtti parancs használatával exportálhatja. Például:export DISPLAY=:0.0
Bizonyos hibakeresői beállítások a További hibakereső parancsok bejegyzés használatával továbbíthatók a GDB-nek. Előfordulhat például, hogy figyelmen kívül szeretné hagyni a SIGILL (illegális utasítás) jeleket. Ehhez használhatja a kezelő parancsot, ha hozzáadja a következőt a További hibakereső parancsok fent látható bejegyzéshez:
handle SIGILL nostop noprint.Adja meg a Visual Studio által használt GDB elérési útját a projekt hibakeresési tulajdonságlapjának GDB-elérési út elemével. Ez a tulajdonság a Visual Studio 2019 16.9-es és újabb verziójában érhető el.
Hibakeresés a folyamathoz csatolással
A Hibakeresés tulajdonságlapja Visual Studio-projektekhez, valamint a CMake-projektek Launch.vs.json beállításai olyan beállításokkal rendelkeznek, amelyek lehetővé teszik a futó folyamathoz való csatolást. Ha a beállításokban megadottakon túl további vezérlésre van szüksége, elhelyezhet egy Microsoft.MIEngine.Options.xml nevű fájlt a megoldás vagy a munkaterület gyökerében. Íme egy egyszerű példa:
<?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>
Az AttachOptionsForConnection rendelkezik a szükséges attribútumok többségét. A fenti példa bemutatja, hogyan adhat meg egy helyet, ahol további .so tárakat kereshet. A ServerOptions gyermekeleme lehetővé teszi a gdbserver használatával történő csatolást a távoli folyamathoz. Ehhez meg kell adnia egy helyi gdb-klienst (amelyet a fenti példában láthat), valamint egy szimbólumokat tartalmazó helyi bináris példányt. A SetupCommands elem lehetővé teszi a parancsok közvetlen átadását a gdb-nek. A GitHubon található LaunchOptions.xsd séma minden lehetőséget megtalál.
Különböző gépek megadása MSBuild-alapú Linux-projektekben való építkezéshez és hibakereséshez
A távoli buildelési gépet elkülönítheti a távoli hibakereső géptől az MSBuild-alapú Linux-projektek és a távoli Linux-gépeket célzó CMake-projektek esetében is. Mostantól például az x64-en keresztkompilálhat, és IoT-forgatókönyvekhez üzembe helyezhet egy ARM-eszközre.
Alapértelmezés szerint a távoli hibakeresési gép megegyezik a távoli buildelési géppel (Konfiguráció tulajdonságai>Általános>Távoli buildelési gép). Új távoli hibakeresési gép megadásához kattintson a jobb gombbal a projektre Megoldáskezelő, és válassza konfigurációs tulajdonságokat>hibakeresési>távoli hibakeresési gép:
A távoli hibakeresési gép legördülő menüje az összes létrehozott távoli kapcsolatot tartalmazza.
Új távoli kapcsolat hozzáadásához lépjen a Eszközök>Beállítások>Platformközi>Kapcsolatkezelő vagy keressen a "Kapcsolatkezelő" kifejezésre a Gyorsindításalatt. Új távoli üzembe helyezési könyvtárat is megadhat a projekt tulajdonságlapjain (Konfiguráció tulajdonságai>Általános>Távoli üzembe helyezési címtár).
Alapértelmezés szerint csak a hibakeresési folyamathoz szükséges fájlok lesznek üzembe helyezve a távoli hibakereső gépen. A Megoldáskezelő használatával konfigurálhatja, hogy mely forrásfájlok legyenek üzembe helyezve a távoli hibakereső gépen. Amikor egy forrásfájlra kattint, a fájltulajdonságok előnézete közvetlenül a Megoldáskezelő alatt jelenik meg:
A Content tulajdonság határozza meg, hogy a fájl üzembe lesz-e helyezve a távoli hibakereső gépen. Az üzembe helyezés teljes letiltásához navigáljon Tulajdonságlapokra>Configuration Manager, és törölje üzembe helyezésének jelölését a kívánt konfigurációhoz.
Bizonyos esetekben előfordulhat, hogy nagyobb ellenőrzést igényel a projekt üzembe helyezése felett. Előfordulhat például, hogy az üzembe helyezni kívánt fájlok némelyike kívül esik a megoldáson, vagy fájlonként vagy könyvtáronként testre szeretné szabni a távoli üzembe helyezési könyvtárat. Ezekben az esetekben fűzze hozzá a következő kódblokkokat a .vcxproj fájlhoz, és cserélje le a "example.cpp" kifejezést a tényleges fájlnevekre:
<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>
CMake-projektek
CMake-projektek esetén, amelyek egy távoli Linux-gépet céloznak meg, megadhat egy új távoli hibakeresési gépet a launch.vs.json-ban. Alapértelmezés szerint a "remoteMachineName" értéke szinkronizálva van a távoli buildelési gépnek megfelelő "remoteMachineName"CMakeSettings.json tulajdonságával. Ezeknek a tulajdonságoknak már nem kell egyezniük, és a "remoteMachineName"launch.vs.json értéke határozza meg, hogy melyik távoli gépet használja a rendszer a telepítéshez és a hibakereséshez.
Az IntelliSense az összes létrehozott távoli kapcsolat listáját javasolja. Új távoli kapcsolatot adhat hozzá úgy, hogy a Eszközök>Beállítások>Platformfüggetlen>Kapcsolatkezelő menübe navigál, vagy a Gyorsindításkeresőbe beírja a "Kapcsolatkezelő" kifejezést.
Ha teljes körű ellenőrzést szeretne végezni az üzembe helyezés felett, a következő kódblokk(ok) hozzáfűzhetők a launch.vs.json fájlhoz. Ne felejtse el a helyőrző értékeket valós értékekre cserélni:
"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"
}
]
Következő lépések
- Az ARM-eszközök Linuxon történő hibakereséséhez tekintse meg ezt a blogbejegyzést: Beágyazott ARM-eszköz hibakeresése a Visual Studio.