Debug Python som en helt med disse biblioteker og værktøjer

Vil du være en rigtig Python-fejlfindingsekspert? Debug din Python-kode ved hjælp af disse fantastiske Python-fejlretningsværktøjer og biblioteker, som vi snart skal dække!

Python er et alment formål, højt niveau og objektorienteret programmeringssprog, der bruges til mange udviklingsformål. Desuden er det et effektivt udviklingsværktøj til forskellige applikationer, fra udvikling af webapplikationer til web-skrabning og mere komplekse applikationer som Machine learning og Data Science.

Under udvikling er fejl kaldet fejl i programmering tilbøjelige til at forekomme. Udviklere tager flere skridt for at opdage og eliminere eksisterende og potentielle fejl fra koden. Som et resultat forhindrer du programkoden i at knuse. Vi kalder denne proces debugging.

Denne artikel vil se på flere tilgængelige Python-debuggere, du kan bruge. Vi vil også se, hvor forskellige disse debuggere er fra hinanden, og hvad der gør deres implementering effektiv.

cProfiler fejlfindingsbibliotek

cProfiler, er et populært bibliotek og en C-udvidelse, der udfører profilering af langvarig kode. I det lange løb identificerer den dele af programkoden, der tager lang tid at køre. Selvom den identificerer den præcise tid, det tager at køre forskellige sektioner af koden, identificerer eller retter den ikke helt fejl i koden.

Derfor opstår behovet for at bruge andre debuggere.

Heldigvis kan du bruge anbefalede biblioteker som ipdb, Django-debug-toolbar, pyelftools, viztracer og py-spy som fejlfindingsværktøjer til din Python-kode i stedet.

IPdb-fejlretningsværktøjet

Den IPython-aktiverede Python Debugger i sin helhed er en interaktiv tredjeparts debugger, der indeholder pdb‘s funktionalitet. Ipbd kommer også med interaktiv shell IPython-understøttelse. En sådan support inkluderer fanefuldførelse, farveunderstøttelse og magiske funktioner, blandt andre supportfunktioner.

Denne debugger giver adgang til IPython-debuggeren ved at eksportere relevante funktioner. Det tilbyder også en lignende grænseflade for bedre introspektion, ligesom i pdb-modulet.

  Sådan rydder du Fortsæt med at se i HBO Max

Fejlretning med Ipdb

Biblioteket kræver installation ved hjælp af pip-kommandoen nedenfor.

pip install ipdb

Et eksempel på brug af ipdb ville se sådan ud:

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()

Kør python-filen ved at bruge kommandoen nedenfor, hvor test.py er min fils navn:

python -m ipdb test.py

ipdb-importen og kørsel af funktionen ipdb.set_trace() tillader starten af ​​programmet og kører debuggeren gennem udførelsen.

Funktionen ipdb.pm()(post mortem) virker på samme måde som %debug magic-funktionen.

set_trace argumenter

Send konteksten som et argument til set_trace for at vise flere definerede linjer kode. Derudover accepterer cond, som set_trace også accepterer som et argument, booleske værdier og starter ipdb-grænsefladen, når du indstiller cond til sand.

Brug af konfigurationsfil

Indstil kontekstargumentet med en idpdb-fil eller filen setup.cfg, der er tilgængelig i henholdsvis hjemmemappen og projektmappen. Du er velkommen til at tjekke ipdbs funktionalitet nærmere.

Django Debug værktøjslinje

Det Django debug værktøjslinje er et populært fejlfindingsværktøj i Django: en Python-ramme.

Dette konfigurerbare sæt paneler viser en aktuel anmodning eller svars fejlretningsoplysninger. Når du klikker på værktøjslinjen, vises flere detaljer om panelets indhold.

Dette værktøj inspicerer Django udviklingsmiljøet grundigt.

Følg installationsprocessen og konfigurationsinstruktionerne her.

Pyelftools bibliotek

Det pyelftools biblioteket er udelukkende bygget på Python. Det analyserer og analyserer ELF-filer og DWARF-debugging-oplysninger, og det kræver kun, at Python kører.

Det er nemt at bruge Pyelftools, da det ikke har eksterne biblioteker. Derudover er det ret nemt at bruge pyelftools uden installation, da det blot kræver justering af PYTHONPATH i miljøvariablerne.

Du vil installere det ved hjælp af:

pip install pyelftools 

Implementering af pyelftools kræver simpelthen at importere det og påberåbe det i dit program.

  Sådan administrerer du Zoom-mødeindstillinger

Isen 🍦 fejlfindingsværktøj

Dette er endnu et effektivt fejlfindingsværktøj til Python-udviklere.

Ved brug af isogså ic(), kommer med mange fordele i forhold til print(), som beskrevet nedenfor:

  • At skrive det er relativt hurtigere, bogstaveligt talt.
  • Det udskriver datastrukturer ret godt.
  • Udskriv udtryk eller variabelnavne og deres værdier med ic().
  • Det fremhæver syntaksen for outputtet.
  • Eventuelt inkluderer det programkonteksten, herunder filnavnet, linjenummeret og den overordnede funktion.

Inden du bruger denne pakke, skal du installere den ved at bruge pip-kommandoen nedenfor:

pip install icecream

Det gode er, at du kan bruge ic() i alle filer uden nødvendigvis at importere det i alle filer ved at installere det ved hjælp af install(). Desuden tilføjer install() ic() til det indbyggede modul. Alle filer, som tolken importerer, deler ic().

I din første root python-fil, som du kan navngive x.py, tilføj ic() ved hjælp af install().

from icecream import install
install()
from y import mult
mult()
 

I y.py fil importerer x.py-filen, kald ic()

def mult():
    z=8
    ic(z)

Resultater:

y
ic| z : 8

Det, der gør ic() mere effektiv, er dens evne til at inspicere variabler, der sendes til den, inklusive sig selv, og derefter udskrive dens argumenter og argumentværdierne som i følgende eksempel.

from icecream import ic
def mult(x):
    return x * 4
ic(mult(100))

Produktion:

ic| mult(100): 400

Desuden kan du indsætte ic() i allerede eksisterende kode, da den returnerer sine argumenter. Eksemplet nedenfor returnerer ic| x: 12, derefter ic| y: 48.

from icecream import ic
x = 12
def mult(x):
    return x*4
    y = mult(ic(x))
    ic(y)

Fejlretning ved hjælp af py-spy-værktøjet

Du kan bruge py-spion at profilere eksempler for Python-programmer som et fejlfindingsværktøj. Uden at genstarte programmet eller ændre dets kode, visualiserer py-spy Python-programmets udførelse. Desuden, fordi den er skrevet i Rust, har den en lav overhead.

Derudover er det værd at overveje, at det er sikkert at bruge py-spy mod produktions-Python-kode, fordi det kører en anden proces end det profilerede Python-program.

  Hvad er hardwareacceleration, og bør du bruge det?

Som alle andre foregående værktøj, vi har set, kan du bruge py-spy-værktøjet efter at have installeret det.

pip install py-spy 

På trods af at dit Python-program betjener produktionstrafik, kan du stadig profilere og fejlsøge dette program ved hjælp af py-spy, hvilket gør det til et kritisk Python-profileringsværktøj.

Viztracer debugger

Alternativt kan du bruge viztracer, et fejlfindingsværktøj, til at spore og visualisere dit Python-programs udførelse. Det er også et profileringsværktøj med lav-overhead-logning.

Hvad laver viztracer et effektivt fejlfindingsværktøj?

  • Det er ret nemt at bruge det, og det afhænger ikke af eksterne pakker for at virke.
  • Viztracer fungerer på alle operativsystemplatforme: Windows, Linux eller macOS.
  • Dens kraftfulde front-end gengiver jævnt spor på GB-niveau.
  • Det bruger RegEx til at logge vilkårlige funktioner og ekstra information som variabler og attributter, Hævede undtagelser, Garbage Collector operationerosv., uden at ændre nogen kodesektion i din kildekode.
  • Det, der gør viztracer til et lav-overhead-fejlfindingsværktøj, er dets evne til at filtrere data fra, du ikke har brug for i dit program. Den beholder derefter gamle oplysninger, før den dumper loggen i JSON-format.
  • Du kan bruge den til at indsætte brugerdefinerede begivenheder som f.eks øjeblikkelig begivenheddet variabel hændelseog Varighed begivenhed efterhånden som programmet kører. På denne måde fungerer det som en udskriftsfejlfinding, bortset fra at viztracer lader dig vide, når udskriften sker, mens du sporer data.

Konklusion

Python-profilering og debugging ligesom softwareprofilering er et nøgletrin i en udvikling, der påkalder sig opmærksomhed. Dette trin hjælper med at udelukke eventuelle kodesektioner med fejl, så den overordnede ydeevne af koden er optimeret.

De debugging-værktøjer, vi har dækket ovenfor, er effektive værktøjer, der gør en Python-udviklers arbejde ret nemt.

Når du ser, at de andre fejlfindingsværktøjer fungerer mere effektivt end cProfiler, kan du, som en sand helt, debugge din Python-kode og rette eventuelle fejl ved hjælp af disse debuggere for at forhindre din kode i at køre uden at gå ned.

God fejlfinding!