Hibakeresés Python Like a Hero ezekkel a könyvtárakkal és eszközökkel

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.

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.

  A 7 legjobb nyílt forráskódú felhőplatform vállalati használatra

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.

  Az SSH telepítése Linuxra és hasznos parancsok

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.

  Új funkciók az OS X Yosemite rendszerben

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!