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.
Ebből a cikkből megtudhatja, hogyan konfigurálhatja a Visual Studio-telepítést a Python-kód távoli Linux rendszerű számítógépeken történő hibakeresésének támogatásához. Ez az útmutató a Visual Studio 2019 16.6-os verzióján alapul.
A Visual Studio helyileg és távolról is elindíthat és hibakeresést végezhet a Python-alkalmazásokban Egy Windows-számítógépen. A Visual Studio a CPythontól eltérő operációs rendszeren, eszközön vagy Python-implementáción is támogatja a távoli hibakeresést a hibakeresési kódtárhasználatával.
A Visual Studio 2019 16.4-es és korábbi verziója a ptvsd-kódtárat használja. A Visual Studio 2019 16.5-ös és újabb verzióiban a hibakeresési kódtár lecseréli a ptvsd-t. Hibakeresés használatakor a hibakeresés alatt álló Python-kód azt a hibakeresési kiszolgálót üzemelteti, amelyhez a Visual Studio csatolhat. Ehhez az üzemeltetéshez a kód egy kis módosítása szükséges a kiszolgáló importálásához és engedélyezéséhez. Előfordulhat, hogy a TCP-kapcsolatok engedélyezéséhez módosítania kell a távoli számítógépen található hálózati vagy tűzfalkonfigurációkat is.
Előfeltételek
A Python-számítási feladatok támogatásával telepített Visual Studio. További információ: Python-támogatás telepítése a Visual Studio.
Egy távoli számítógép, amelyen Python fut egy operációs rendszeren, például macOS vagy Linux rendszeren.
Az 5678-os port (bejövő) nyitva van a távoli számítógép tűzfalán, amely a távoli hibakeresés alapértelmezett beállítása.
Linux rendszerű számítógép beállítása
Könnyedén létrehozhat Linux rendszerű virtuális gépet az Azure-ban, és a Windows Távoli asztal használatával érheti el. A virtuális géphez készült Ubuntu kényelmes, mert a Python alapértelmezés szerint telepítve van. Ha más konfigurációval rendelkezik, tekintse meg Python-értelmezők telepítése más Python-letöltési helyeken.
A tűzfal konfigurálása
A távoli hibakeresés támogatásához a távoli számítógép tűzfalán meg kell nyitni a 5678-as bejövő portot.
Az Azure-beli virtuális gépek tűzfalszabályának létrehozásáról az alábbi cikkekben olvashat bővebben:
- A hálózati forgalom szűrése hálózati biztonsági csoport használatával az Azure portalon
- Hálózati forgalom kezelése útvonaltábla segítségével az Azure portálon
- Azure Firewall üzembe helyezése és konfigurálása az Azure portálon
A szkript előkészítése hibakeresésre
Az alábbi lépéseket követve előkészíthet egy szkriptet a Python-kód linuxos hibakereséséhez.
A távoli számítógépen hozzon létre egy guessing-game.py nevű Python-fájlt a következő kóddal:
import random guesses_made = 0 name = input('Hello! What is your name?\n') number = random.randint(1, 20) print('Well, {0}, I am thinking of a number between 1 and 20.'.format(name)) while guesses_made < 6: guess = int(input('Take a guess: ')) guesses_made += 1 if guess < number: print('Your guess is too low.') if guess > number: print('Your guess is too high.') if guess == number: break if guess == number: print('Good job, {0}! You guessed my number in {1} guesses!'.format(name, guesses_made)) else: print('Nope. The number I was thinking of was {0}'.format(number))Telepítse a
debugpycsomagot a környezetébe apip3 install debugpyparanccsal.Jegyzet
Érdemes rögzíteni a telepített hibakereső verzióját, ha a hibaelhárításhoz szüksége van rá. A hibakeresési lista az elérhető verziókat is megjeleníti.
Engedélyezze a távoli hibakeresést úgy, hogy a következő kódot adja hozzá a guessing-game.py fájl elejéhez a többi kód előtt. (Bár nem szigorú követelmény, a
listenfüggvény meghívása előtt létrejönő háttérszálak hibakeresése lehetetlen.)import debugpy debugpy.listen(('0.0.0.0', 5678))Mentse a fájlt, és futtassa a programot:
python3 guessing-game.pyA
listenfüggvény hívása a háttérben fut, és várja a bejövő kapcsolatokat a program használatakor. Ha szükséges, meghívhatja await_for_clientfüggvényt, miután meghívta alistenfüggvényt, hogy letiltsa a programot, amíg a hibakereső nem csatlakozik.
Borravaló
A listen és wait_for_client függvények mellett a debugpy segédfüggvényt is biztosít breakpoint. Ez a függvény programozott töréspontként szolgál, ha a hibakereső csatlakoztatva van. Egy másik függvény, is_client_connected1, True ad vissza, ha a hibakereső csatlakoztatva van. Nem kell ellenőriznie ezt az eredményt, mielőtt bármilyen más debugpy függvényt hív meg.
Távoli csatolás a Python-eszközökről
Az alábbi lépések bemutatják, hogyan állíthat be töréspontot a távoli folyamat leállításához.
Hozzon létre egy másolatot a távoli fájlról a helyi számítógépen, és nyissa meg a Visual Studióban. Nem számít, hogy hol található a fájl, de a nevének meg kell egyeznie a távoli számítógépen található szkript nevével.
(Nem kötelező) Ha azt szeretné, hogy az IntelliSense hibakeresésre legyen telepítve a helyi számítógépen, telepítse a hibakeresési csomagot a Python-környezetbe.
Válassza Hibakeresés>Csatolás a folyamathozlehetőséget.
A Csatolás a folyamathoz párbeszédpanelen állítsa be a Kapcsolattípus értékét a Távoli Python (debugpy)lehetőségre.
A Kapcsolati cél mezőbe írja be a
tcp://<ip_address>:5678parancsot.-
tcp://a kapcsolattípust átviteli vezérlési protokollként (TCP) adja meg. -
<ip_address>a távoli számítógép IP-címe, amely lehet explicit cím vagy olyan név, mint myvm.cloudapp.net. -
:5678a távoli hibakeresési port száma.
-
Válassza az Enter lehetőséget a számítógépen elérhető hibakeresési folyamatok listájának feltöltéséhez:
Ha a lista feltöltése után egy másik programot indít el a távoli számítógépen, válassza a Frissítés gombot.
Jelölje ki a hibakeresési folyamatot, és válassza a Csatoláslehetőséget, vagy kattintson duplán a folyamatra.
A Visual Studio hibakeresési módba vált, miközben a szkript továbbra is fut a távoli számítógépen, és biztosítja a szokásos hibakeresési képességeket.
Beállíthat egy töréspontot a
if guess < number:sorban, majd váltson át a távoli számítógépre, és adjon meg egy másik becslést. A Visual Studio a helyi számítógépen a töréspontnál áll meg, helyi változókat jelenít meg, és így tovább:Ha leállítja a hibakeresést, a Visual Studio leválasztja magát a programról. A program továbbra is fut a távoli számítógépen. A debugpy továbbra is figyel a hibakeresők csatolására, így bármikor újra csatlakozhat a folyamathoz.
A kapcsolat hibaelhárítása
A kapcsolattal kapcsolatos problémák elhárításához tekintse át az alábbi pontokat.
Győződjön meg arról, hogy a Kapcsolattípusesetén a Távoli Python (debugpy) van kiválasztva.
Győződjön meg arról, hogy a kapcsolati cél pontosan egyezik a távoli kódban szereplő titkos kóddal.
Ellenőrizze, hogy a kapcsolati cél ip-címe megegyezik-e a távoli számítógép ip-címével.
Ellenőrizze, hogy a távoli számítógép távoli hibakeresési portja nyitva van-e, és a kapcsolati cél tartalmazza a port utótagját, például
:5678.Ha másik portot szeretne használni, adja meg a
listenfüggvény hívásának portszámát, ahogyan azdebugpy.listen((host, port)). Ebben az esetben mindenképpen nyissa meg az adott portot a tűzfalon.Ellenőrizze, hogy a távoli számítógépen telepített hibakeresési verzió (a
pip3 listparancs által visszaadott) megegyezik-e a Visual Studio Python Tools (PTVS) verziójával.Az alábbi táblázat az érvényes verziópárokat sorolja fel. Szükség esetén frissítse a debugpy verzióját a távoli számítógépen.
Visual Studio Python-eszközök debugpy 2019 16.6 1.0.0b5 1.0.0b5 2019 16.5 1.0.0b1 1.0.0b1
Jegyzet
A Visual Studio 2019 16.0-16.4-es verziója ptvsd-t használt, nem debugpy-t. Az ebben az útmutatóban szereplő folyamat hasonló, de a függvénynevek eltérőek. A Visual Studio 2019 16.5-ös verziója debugpy-t használ, de a függvények neve megegyezik a ptvsd-ben lévőkkel.
listenhelyett enable_attachhasználna.
wait_for_clienthelyett wait_for_attachhasználna.
breakpointhelyett break_into_debuggerhasználna.
A ptvsd 3.x használata az örökölt hibakereséshez
A Visual Studio 2017 15.7-es és korábbi verziójában a ptvsd 3.x örökölt hibakereső az alapértelmezett hibakereső.
A Visual Studio konfigurációjától függően előfordulhat, hogy a ptvsd 3.x-et kell használnia a távoli hibakereséshez:
- A Visual Studio 2017 15.7-es és korábbi verziója a Python 2.6-os, 3.1-es és 3.4-es verziójával vagy IronPythonnal
- A Visual Studio 2019 16.5-ös és újabb verziója Python 2.6-os, 3.1-es és 3.4-es verzióval vagy IronPythonnal
- Korai 4.x verziók
Ha a konfiguráció egy régebbi verziós forgatókönyvet implementál, a Visual Studio megjeleníti a hibát, Hibakereső nem támogatja ezt a Python-környezetet.
Távoli hibakeresés beállítása
Ha a ptvsd 3.x használatával szeretne felkészülni a távoli hibakeresésre, hajtsa végre a következő lépéseket:
Állítsa be a titkos kódot, amely a futó szkripthez való hozzáférés korlátozására szolgál.
A ptvsd 3.x-ben a
enable_attachfüggvény megköveteli, hogy első argumentumként "titkos" értéket adjon át.- A távoli hibakereső csatolásakor adja meg a titkos kulcsot a
enable_attach(secret="<secret>")paranccsal.
Bár a
enable_attach(secret=None)paranccsal bárki csatlakozhat, ez a beállítás nem ajánlott.- A távoli hibakereső csatolásakor adja meg a titkos kulcsot a
Hozza létre a kapcsolati cél URL-címét a
tcp://<secret>@<ip_address>:5678űrlapon.-
tcp://a kapcsolattípust TCP-ként adja meg. -
<secret>az a sztring, amelyet a Python-kódenable_attachfüggvényével adunk át. -
<ip_address>a távoli számítógép IP-címe, amely lehet explicit cím vagy olyan név, mint myvm.cloudapp.net. -
:5678a távoli hibakeresési port száma.
-
Biztonságos kapcsolat TCPS-protokollal
Alapértelmezés szerint a ptvsd 3.x távoli hibakeresési kiszolgálóhoz való csatlakozást csak a titkos kód védi, és minden adat egyszerű szövegben lesz átadva. A biztonságosabb kapcsolat érdekében a ptvsd 3.x támogatja az SSL-t a TCP protokoll biztonságos formájával, vagy TCPS.
A következő lépésekkel konfigurálhatja a ptvsd 3.x protokollt a TCPS protokoll használatára:
A távoli számítógépen a
opensslparanccsal hozzon létre külön fájlokat a kulcshoz és az önaláírt tanúsítványhoz:openssl req -new -x509 -days 365 -nodes -out cert.cer -keyout cert.key- A
opensslparancssorba írja be a csatlakozáshoz használt állomásnevet vagy IP-címet a Közös névesetében.
További információ: Önaláírt tanúsítványok a Python
sslmodul dokumentációjában. Vegye figyelembe, hogy a Python-dokumentációban leírt parancs csak egyetlen kombinált fájlt hoz létre.- A
A kódban módosítsa a
enable_attachfüggvény hívását úgy, hogycertfileéskeyfileargumentumokat tartalmazzon a fájlnevek értékként való használatával. Ezeknek az argumentumoknak ugyanaz a jelentése, mint a standardssl.wrap_socketPython-függvénynek.ptvsd.enable_attach(secret='my_secret', certfile='cert.cer', keyfile='cert.key')Ugyanezt a módosítást a helyi számítógépen lévő kódfájlban is elvégezheti. Mivel ez a kód valójában nem fut, nem feltétlenül szükséges.
Indítsa újra a Python programot a távoli számítógépen, hogy készen álljon a hibakeresésre.
A csatorna biztonságossá tételéhez vegye fel a tanúsítványt a Megbízható Gyökér Hitelesítésszolgáltatók közé a Windows rendszerű számítógépen a Visual Studióval:
Másolja a tanúsítványfájlt a távoli számítógépről a helyi számítógépre.
Nyissa meg Vezérlőpult, és lépjen Windows-eszközök>Számítógéptanúsítványok kezeléselapra.
A tanúsítvány [Tanúsítványok – helyi számítógép] párbeszédpanelen bontsa ki a Megbízható Gyökérhitelesítésszolgáltatók csomópontot, kattintson a jobb gombbal a Tanúsítványokelemre, és válassza a Minden Feladat>Importáláslehetőséget.
Keresse meg és válassza ki a távoli számítógépről másolt .cer fájlt.
Folytassa a párbeszédpanelen megjelenő utasításokat az importálási folyamat befejezéséhez.
Ismételje meg a csatolási folyamatot a Visual Studióban, ahogy azt a Távoli csatolás a Python-eszközökrőlcímű cikkben leírtuk.
Ebben az esetben határozza meg a
tcps://-t a kapcsolati cél protokolljaként (vagy a minősítő-ként).
Kapcsolati problémák elhárítása
A csatlakozási kísérlet során a Visual Studio problémákat tapasztalhat. Tekintse át a következő forgatókönyveket, és szükség szerint hajtsa végre a megfelelő műveletet.
A Visual Studio figyelmeztet az SSL-en keresztüli csatlakozás lehetséges tanúsítványproblémáira.
művelet: Figyelmen kívül hagyhatja az üzenetet, és folytathatja.
Vigyázat
Ne feledje, hogy bár a csatorna továbbra is titkosítva van a lehallgatás ellen, nyitott lehet a középen belüli támadásokra.
A Visual Studio megjeleníti a figyelmeztetést, hogy a távoli tanúsítvány nem megbízható.
Probléma: A tanúsítvány nincs megfelelően hozzáadva a Megbízható Gyökér CA-hoz.
Művelet: Ellenőrizze újra a lépéseket, adja hozzá a tanúsítványt a Megbízható legfelső szintű hitelesítésszolgáltatóhoz a Windows-számítógépen, majd próbálkozzon újra a kapcsolattal.
A Visual Studio megjeleníti a figyelmeztetést, hogy a távoli tanúsítványnév nem egyezik a gazdagépnévvel.
Probléma: A tanúsítvány közös neve számára nincs megadva a megfelelő állomásnév vagy IP-cím.
Művelet: Ellenőrizze újra a lépéseket a kapcsolat TCPS segítségével történő biztonságos létrehozásához. A tanúsítvány létrehozásakor mindenképpen a megfelelő közönséges név használja, majd próbálja újra a kapcsolatot.