Szeretnél igazi Python hibakeresési szakértő lenni? Hibakeresés Python kódjában ezekkel a csodálatos Python hibakereső eszközökkel és könyvtárakkal, amelyekről hamarosan szó lesz!
A Python egy általános célú, magas szintű és objektum-orientált programozási nyelv, amelyet számos fejlesztési célra használnak. Sőt, hatékony fejlesztőeszköz a különböző alkalmazásokhoz, a webalkalmazás-fejlesztéstől a webkaparásig és az összetettebb alkalmazásokig, mint például a gépi tanulás és az adattudomány.
A fejlesztés során hajlamosak a programozási hibáknak nevezett hibák előfordulására. A fejlesztők több lépést is megtesznek a kód meglévő és potenciális hibáinak észlelésére és kiküszöbölésére. Ennek eredményeként megakadályozza, hogy a programkód összetörjön. Ezt a folyamatot hibakeresésnek nevezzük.
Ez a cikk számos használható Python hibakeresőt fog megvizsgálni. Azt is látni fogjuk, hogy ezek a hibakeresők mennyire különböznek egymástól, és mitől hatékony a megvalósításuk.
Tartalomjegyzék
cProfiler hibakereső könyvtár
cProfiler, egy népszerű könyvtár és egy C-bővítmény, amely a régóta futó kód profilozását hajtja végre. Hosszú távon azonosítja a programkód azon szakaszait, amelyek hosszú ideig futnak. Bár pontosan azonosítja a kód különböző szakaszainak futtatásához szükséges időt, nem azonosítja és nem javítja ki teljesen a kód hibáit.
Ezért más hibakeresők használatára van szükség.
Szerencsére ehelyett használhatja az ajánlott könyvtárakat, például az ipdb-t, a Django-debug-toolbart, a pyelftools-t, a viztracert és a py-spy-t a Python-kód hibakereső eszközeként.
Az ipdb hibakereső eszköz
Az IPython-kompatibilis Python Debugger teljes egészében egy interaktív, harmadik féltől származó hibakereső, amely tartalmazza pdbfunkcionalitása. Ipbd valamint interaktív shell IPython támogatással is rendelkezik. Az ilyen támogatás magában foglalja a tabulátorok kitöltését, a színek támogatását és a varázslatos funkciókat, egyéb támogatási funkciók mellett.
Ez a hibakereső lehetővé teszi a hozzáférést az IPython hibakeresőhöz a megfelelő funkciók exportálásával. Hasonló felületet kínál a jobb önvizsgálat érdekében, akárcsak a pdb modulban.
Hibakeresés Ipdb-vel
A könyvtár telepítése szükséges az alábbi pip paranccsal.
pip install ipdb
Egy példa az ipdb használatára így néz ki:
import ipdb alpha_list = ['a', 'b', 'c'] fruit_list = ['orange', 'mango', 'kiwi'] def nested_loop(): for fruit_list: print (fruit) ipdb.set_trace() for x in alpha_list: print(x) if __name__ == '__main__': nested_loop()
Futtassa a python fájlt az alábbi paranccsal, ahol a test.py a fájl neve:
python -m ipdb test.py
Az ipdb importálása és az ipdb.set_trace() függvény futtatása lehetővé teszi a program elindítását, és végigfutja a hibakeresőt.
Az ipdb.pm() függvény (post-mortem) hasonlóan működik, mint a %debug magic függvény.
set_trace argumentumok
Adja át a kontextust argumentumként a set_trace-nek, hogy több definiált kódsort jelenítsen meg. Ezenkívül a cond, amelyet a set_trace is elfogad argumentumként, elfogadja a logikai értékeket, és elindítja az ipdb felületet, amikor a cond értéket igazra állítja.
Konfigurációs fájl használata
Állítsa be a kontextus argumentumot egy idpdb fájllal vagy a setup.cfg fájllal, amely elérhető a home mappában, illetve a projekt mappában. Szívesen megnézheti az ipdb működését.
Django Debug eszköztár
Az Django hibakereső eszköztár a Django népszerű hibakereső eszköze: egy Python keretrendszer.
Ez a konfigurálható panelkészlet megjeleníti az aktuális kérés vagy válasz hibakeresési információit. Ha az eszköztárra kattint, további részletek jelennek meg a panel tartalmáról.
Ez az eszköz alaposan megvizsgálja a Django fejlesztői környezetet.
Kövesse a telepítési folyamatot és a konfigurációs utasításokat itt.
Pyelftools könyvtár
Az pyelftszerszámok könyvtár tisztán Pythonra épül. Elemzi és elemzi az ELF-fájlokat és a DWARF-hibakeresési információkat, és csak a Python futtatásához szükséges.
A Pyelftools használata egyszerű, mivel nem rendelkezik külső könyvtárakkal. Ezenkívül a pyelftools telepítés nélküli használata meglehetősen egyszerű, mivel egyszerűen a PYTHONPATH beállítását igényli a környezeti változókban.
A következő használatával telepítheti:
pip install pyelftools
A pyelftools megvalósításához egyszerűen importálni kell és meghívni a programban.
A fagylalt 🍦 hibakereső eszköz
Ez egy másik hatékony hibakereső eszköz a Python fejlesztők számára.
Használata jégkrémic() is számos előnnyel jár a print()-hez képest, amint azt alább ismertetjük:
- A gépelés viszonylag gyorsabb, szó szerint.
- Elég jól nyomtatja az adatstruktúrákat.
- Kifejezések vagy változónevek és értékeik kinyomtatása az ic() segítségével.
- Kiemeli a kimenet szintaxisát.
- Opcionálisan tartalmazza a programkörnyezetet, beleértve a fájlnevet, a sorszámot és a szülőfüggvényt.
A csomag használata előtt telepítse az alábbi pip paranccsal:
pip install icecream
A jó dolog az, hogy az ic()-t minden fájlban használhatja anélkül, hogy feltétlenül importálná az összes fájlba az install() segítségével. Ezenkívül az install() hozzáadja az ic()-t a beépített modulhoz. Az értelmező által importált összes fájl megosztja az ic()-et.
Az első gyökér python fájlban, amelynek x.py nevet adhat, adja hozzá az ic() parancsot az install() segítségével.
from icecream import install install() from y import mult mult()
Az y.py fájlban az x.py fájl importálása folyamatban van, hívja meg az ic()
def mult(): z=8 ic(z)
Eredmények:
y ic| z : 8
Ami az ic()-et hatékonyabbá teszi, az az a képessége, hogy megvizsgálja a neki átadott változókat, beleértve önmagát is, majd kinyomtatja argumentumait és az argumentumértékeket, mint a következő példában.
from icecream import ic def mult(x): return x * 4 ic(mult(100))
Kimenet:
ic| mult(100): 400
Ezenkívül az ic()-t beillesztheti a már meglévő kódba, mivel az argumentumait adja vissza. Az alábbi példa az ic|-t adja vissza x: 12, majd ic| év: 48.
from icecream import ic x = 12 def mult(x): return x*4 y = mult(ic(x)) ic(y)
Hibakeresés a py-spy eszközzel
Te tudod használni py-spy a Python programok mintáinak profilozására hibakereső eszközként. A program újraindítása vagy kódjának módosítása nélkül a py-spy megjeleníti a Python program végrehajtását. Továbbá, mivel Rust nyelven van írva, alacsony a rezsije.
Ezenkívül érdemes megfontolni, hogy a py-spy használata az éles Python-kóddal szemben biztonságos, mert a profilozott Python-programtól eltérő folyamatot futtat.
Mint minden korábbi eszköz, amelyet láttunk, a py-spy eszközt is használhatja telepítése után.
pip install py-spy
Annak ellenére, hogy Python-programja éles forgalmat szolgál ki, továbbra is profilozhatja és hibakeresheti ezt a programot a py-spy használatával, így kritikus Python-profilozó eszközzé válik.
Viztracer hibakereső
Alternatív megoldásként használhatja a viztracert, egy hibakereső eszközt a Python program végrehajtásának nyomon követésére és megjelenítésére. Ez egy alacsony rezsinaplózású profilkészítő eszköz is.
Mitől viztracer hatékony hibakereső eszköz?
- Használata meglehetősen egyszerű, és nem függ külső csomagoktól.
- A Viztracer az összes operációs rendszer platformon működik: Windows, Linux vagy macOS.
- Erőteljes előlapja zökkenőmentesen jeleníti meg a GB-szintű nyomkövetést.
- A RegEx segítségével tetszőleges függvényeket és extra információkat naplóz, mint pl változók és attribútumok, Felvetett kivételek, Szemétgyűjtő műveletekstb., anélkül, hogy módosítaná a kódrészletet a forráskódon belül.
- Ami a viztracert alacsony költségű hibakereső eszközzé teszi, az az, hogy képes kiszűrni azokat az adatokat, amelyekre nincs szüksége a programban. Ezután megőrzi a régi információkat, mielőtt a naplót JSON formátumban írja ki.
- Használhatja egyéni események beszúrására, például a azonnali eseményaz változó eseményés a Időtartamú esemény ahogy a program fut. Ily módon úgy működik, mint egy nyomtatási hibakeresés, kivéve, hogy a viztracer az adatok nyomon követése során tudatja Önnel, ha a nyomtatás megtörténik.
Következtetés
A Python-profilalkotás és -hibakeresés, akárcsak a szoftverprofilalkotás, kulcsfontosságú lépés egy figyelmet igénylő fejlesztésben. Ez a lépés segít kizárni a hibákat tartalmazó kódrészleteket, így a kód általános teljesítménye optimalizálható.
A fent említett hibakereső eszközök hatékony eszközök, amelyek meglehetősen megkönnyítik a Python-fejlesztők munkáját.
Látva, hogy a többi hibakereső eszköz hatékonyabban működik, mint a cProfiler, igazi hősként hibakeresheti Python-kódját, és ezekkel a hibakeresőkkel kijavíthatja az esetleges hibákat, így megakadályozhatja, hogy a kód összeomlás nélkül fusson.
Boldog hibakeresést!