Feilsøk Python som en helt med disse bibliotekene og verktøyene

Vil du være en ekte Python-feilsøkingsekspert? Feilsøk Python-koden din ved å bruke disse fantastiske Python-feilsøkingsverktøyene og bibliotekene vi snart skal dekke!

Python er et generellt, høynivå- og objektorientert programmeringsspråk som brukes til mange utviklingsformål. Dessuten er det et effektivt utviklingsverktøy for forskjellige applikasjoner, fra utvikling av nettapplikasjoner til nettskraping og mer komplekse applikasjoner som maskinlæring og datavitenskap.

Under utvikling er det tilbøyelige til å oppstå feil som kalles bugs i programmering. Utviklere tar flere skritt for å oppdage og eliminere eksisterende og potensielle feil fra koden. Som et resultat forhindrer du at programkoden knuses. Vi kaller denne prosessen debugging.

Denne artikkelen vil se på flere tilgjengelige Python-feilsøkere du kan bruke. Vi vil også se hvor forskjellige disse feilsøkerne er fra hverandre og hva som gjør implementeringen effektiv.

cProfiler feilsøkingsbibliotek

cProfiler, er et populært bibliotek og en C-utvidelse som utfører profilering av langvarig kode. I det lange løp identifiserer den deler av programkoden som tar lang tid å kjøre. Selv om den identifiserer den nøyaktige tiden det tar å kjøre forskjellige deler av koden, identifiserer eller fikser den ikke feil i koden.

Derfor oppstår behovet for å bruke andre debuggere.

Heldigvis kan du bruke anbefalte biblioteker som ipdb, Django-debug-toolbar, pyelftools, viztracer og py-spy som feilsøkingsverktøy for Python-koden din i stedet.

ipdb-feilsøkingsverktøyet

Den IPython-aktiverte Python Debugger i sin helhet er en interaktiv tredjeparts debugger som inneholder pdbsin funksjonalitet. Ipbd kommer også med interaktivt skall IPython-støtte. Slik støtte inkluderer komplettering av faner, fargestøtte og magiske funksjoner, blant andre støttefunksjoner.

Denne debuggeren gir tilgang til IPython-debuggeren ved å eksportere relevante funksjoner. Den tilbyr også et lignende grensesnitt for bedre introspeksjon, akkurat som i pdb-modulen.

  Hvordan lage postetiketter i Word fra en Excel-liste

Feilsøking med Ipdb

Biblioteket krever installasjon ved å bruke pip-kommandoen nedenfor.

pip install ipdb

Et eksempel på bruk av ipdb vil se slik ut:

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

Kjør python-filen ved å bruke kommandoen nedenfor der test.py er filens navn:

python -m ipdb test.py

ipdb-importen og kjøringen av ipdb.set_trace()-funksjonen tillater starten av programmet og kjører feilsøkeren gjennom kjøringen.

Funksjonen ipdb.pm()(post mortem) fungerer på samme måte som %debug magic-funksjonen.

set_trace-argumenter

Send konteksten som et argument til set_trace for å vise flere linjer med kode definert. I tillegg godtar cond, som set_trace også aksepterer som et argument, boolske verdier og starter ipdb-grensesnittet når du setter cond til sann.

Bruker konfigurasjonsfil

Angi kontekst-argumentet med en idpdb-fil eller setup.cfg-filen som er tilgjengelig i henholdsvis hjemmemappen og prosjektmappen. Du er velkommen til å sjekke ipdbs funksjonalitet nærmere.

Django Debug-verktøylinjen

De Django feilsøkingsverktøylinje er et populært feilsøkingsverktøy i Django: et Python-rammeverk.

Dette konfigurerbare settet med paneler viser en gjeldende forespørsel eller svars feilsøkingsinformasjon. Når du klikker på verktøylinjen, vises flere detaljer om panelets innhold.

Dette verktøyet inspiserer Djangos utviklingsmiljø grundig.

Følg installasjonsprosessen og konfigurasjonsinstruksjonene her.

Pyelftools bibliotek

De pyelftools biblioteket er utelukkende bygget på Python. Den analyserer og analyserer ELF-filer og DWARF-feilsøkingsinformasjon, og den krever bare at Python kjører.

Det er enkelt å bruke Pyelftools siden det ikke har eksterne biblioteker. I tillegg er det ganske enkelt å bruke pyelftools uten installasjon siden det ganske enkelt krever justering av PYTHONPATH i miljøvariablene.

Du vil installere den ved å bruke:

pip install pyelftools 

Implementering av pyelftools krever ganske enkelt å importere det og påkalle det i programmet ditt.

Iskremen 🍦 feilsøkingsverktøy

Dette er et annet effektivt feilsøkingsverktøy for Python-utviklere.

  Slik bruker du skyggelegging på alternative rader i Excel

Ved hjelp av iskremogså ic(), kommer med mange fordeler i forhold til print(), som skissert nedenfor:

  • Å skrive det er relativt raskere, bokstavelig talt.
  • Den skriver ut datastrukturer ganske bra.
  • Skriv ut uttrykk eller variabelnavn og deres verdier med ic().
  • Det fremhever syntaksen til utdataene.
  • Eventuelt inkluderer den programkonteksten, inkludert filnavn, linjenummer og overordnet funksjon.

Før du bruker denne pakken, installer den ved å bruke pip-kommandoen nedenfor:

pip install icecream

Det gode er at du kan bruke ic() i alle filer uten å nødvendigvis importere det i alle filer ved å installere det ved å bruke install(). Dessuten legger install() til ic() til den innebygde modulen. Alle filer tolken importerer vil dele ic().

I din første root-python-fil, som du kan gi navnet x.py, legger du til ic() ved å bruke install().

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

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

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

Resultater:

y
ic| z : 8

Det som gjør ic() mer effektiv er dens evne til å inspisere variabler som sendes til den, inkludert seg selv, og deretter skrive ut argumentene og argumentverdiene som i følgende eksempel.

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

Produksjon:

ic| mult(100): 400

Dessuten kan du sette inn ic() i eksisterende kode siden den returnerer argumentene. Eksemplet nedenfor returnerer ic| x: 12, deretter ic| y: 48.

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

Feilsøking ved hjelp av py-spy-verktøyet

Du kan bruke py-spion å profilere prøver for Python-programmer som et feilsøkingsverktøy. Uten å starte programmet på nytt eller endre koden, visualiserer py-spy Python-programmets utførelse. Videre, fordi den er skrevet i Rust, har den en lav overhead.

I tillegg er det verdt å vurdere at bruk av py-spy mot produksjon av Python-kode er trygt fordi det kjører en annen prosess enn det profilerte Python-programmet.

  Hvordan ta opp en telefonsamtale på iPhone

Som alle andre foregående verktøy vi har sett, kan du bruke py-spy-verktøyet etter å ha installert det.

pip install py-spy 

Til tross for at Python-programmet ditt betjener produksjonstrafikk, kan du fortsatt profilere og feilsøke dette programmet ved å bruke py-spy, noe som gjør det til et kritisk Python-profileringsverktøy.

Viztracer debugger

Alternativt kan du bruke viztracer, et feilsøkingsverktøy, for å spore og visualisere kjøringen av Python-programmet. Det er også et profileringsverktøy med lav-overhead-logging.

Hva gjør viztracer et effektivt feilsøkingsverktøy?

  • Å bruke det er ganske enkelt, og det er ikke avhengig av eksterne pakker for å fungere.
  • Viztracer fungerer på alle operativsystemplattformer: Windows, Linux eller macOS.
  • Den kraftige fronten gjengir jevnt spor på GB-nivå.
  • Den bruker RegEx for å logge vilkårlige funksjoner og ekstra informasjon som variabler og attributter, Opphevede unntak, Søppelsamler-operasjoneretc., uten å endre noen kodedel i kildekoden.
  • Det som gjør viztracer til et lav-overhead-feilsøkingsverktøy er dens evne til å filtrere ut data du ikke trenger i programmet. Den beholder deretter gammel informasjon før den dumper loggen i JSON-format.
  • Du kan bruke den til å sette inn egendefinerte hendelser som øyeblikkelig hendelseden variabel hendelseog Varighet hendelse mens programmet kjører. På denne måten fungerer det som en utskriftsfeilsøking, bortsett fra at viztracer lar deg vite når utskriften skjer mens du sporer data.

Konklusjon

Python-profilering og feilsøking akkurat som programvareprofilering er et nøkkeltrinn i en utvikling som krever oppmerksomhet. Dette trinnet bidrar til å utelukke eventuelle kodeseksjoner med feil, slik at den generelle ytelsen til koden er optimalisert.

Feilsøkingsverktøyene vi har dekket ovenfor er effektive verktøy som gjør arbeidet til en Python-utvikler ganske enkelt.

Når du ser at de andre feilsøkingsverktøyene fungerer mer effektivt enn cProfiler, kan du, som en ekte helt, feilsøke Python-koden din og fikse eventuelle feil ved å bruke disse feilsøkerne for å forhindre at koden din kjører uten å krasje.

Lykke til med feilsøking!