Virheenkorjaus pdb:llä
Käyttäkää Pythonin sisäänrakennettua virheenkorjainta koodin vaiheittaiseen interaktiiviseen suorittamiseen.
Virheenkorjaus pdb:llä on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mikä pdb on?
pdb on Pythonin sisäänrakennettu interaktiivinen virheenkorjain. Sen avulla voitte keskeyttää suorituksen, tarkastella muuttujia ja edetä koodissa rivi riviltä.
import pdb
def faulty(n):
result = n * 2
pdb.set_trace() # execution pauses here
return result + 1
faulty(5)breakpoint() — Python 3.7+
breakpoint() on sisäänrakennettu lyhyt muoto kutsulle import pdb; pdb.set_trace(). Se noudattaa PYTHONBREAKPOINT-ympäristömuuttujaa.
def process(data):
for item in data:
if item < 0:
breakpoint() # drop into pdb here
print(item)
process([1, -2, 3])pdb:n peruskomennot
Tärkeimmät komennot: n (seuraava rivi), s (astu sisään), c (jatka), q (lopeta), p expr (tulosta) ja l (luettele lähdekoodi).
# Inside pdb prompt:
# (Pdb) n — execute next line
# (Pdb) s — step into function
# (Pdb) c — continue to next breakpoint
# (Pdb) p my_var — print value
# (Pdb) l — show source around current line
# (Pdb) q — quitMuuttujien tarkasteleminen
Käyttäkää p-komentoa lausekkeen tulostamiseen, pp-komentoa tulosteen muotoiluun ja locals()-funktiota kaikkien paikallisten muuttujien tarkastelemiseen.
# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
# 'num': 42}
# (Pdb) p locals()Ehdolliset keskeytyskohdat
Asettakaa ehdollisia keskeytyskohtia, jotta suoritus keskeytyy vain ehdon ollessa tosi ja toistuva askellus vältetään.
import pdb
def process(items):
for i, item in enumerate(items):
if item < 0: # manual condition
pdb.set_trace()
result = item * 2
# Or inside pdb: b filename.py:12, x < 0Jälkikäteinen virheenkorjaus
Voitte tarkastella tilaa heti käsittelemättömän poikkeuksen jälkeen käyttämällä pdb.post_mortem()-funktiota tai suorittamalla komentosarjan komennolla python -m pdb script.py.
import pdb
try:
1 / 0
except ZeroDivisionError:
pdb.post_mortem() # inspect at the crash point
# Or from CLI:
# python -m pdb my_script.pyMuuttujien tarkastelu komennoilla w ja where
w (where) tulostaa nykyisen kutsupinon jäljityksen, joten tiedätte, miten päädyitte nykyiseen kehykseen.
# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()Siirtyminen kehysten välillä
u (up) ja d (down) siirtävät kutsupinon kehyksestä toiseen, joten voitte tarkastella kutsuvien funktioiden muuttujia.
# (Pdb) u — move to calling frame
# (Pdb) d — move back down
# (Pdb) p data — inspect variable in that frameipdb — Tehostettu debuggeri
ipdb laajentaa pdb:tä IPython-ominaisuuksilla, kuten sarkaintäydennyksellä, syntaksin korostuksella ja taikakomennoilla.
# pip install ipdb
import ipdb
def calc(x):
ipdb.set_trace()
return x ** 2
calc(7)pudb — Visuaalinen pääte-debuggeri
pudb tarjoaa päätteen koko näytön TUI-debuggerin, jossa on koodi-, muuttuja- ja pinokehykset.
# pip install pudb
# python -m pudb my_script.py
import pudb
def run():
pudb.set_trace()
data = [1, 2, 3]
return sum(data)Keskeytyspisteiden poistaminen käytöstä CI:ssä
Asettakaa PYTHONBREAKPOINT=0, jotta kaikki breakpoint()-kutsut eivät tee mitään CI:ssä tai tuotannossa.
# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skippedPikatarkistus
Mikä pdb-komento jatkaa suoritusta seuraavaan keskeytyspisteeseen?
Kertaus
Käyttäkää breakpoint()-funktiota suorituksen keskeyttämiseen ja pdb:n käynnistämiseen. Keskeiset komennot ovat n, s, c, p ja q. Jos haluatte monipuolisemman käyttökokemuksen, kokeilkaa ipdb- tai pudb-debuggeria. Poistakaa toiminto käytöstä CI:ssä asettamalla PYTHONBREAKPOINT=0.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Virheenkorjaus pdb:llä” ilmainen?
Kyllä – oppitunnin ”Virheenkorjaus pdb:llä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Virheenkorjaus pdb:llä”?
Käyttäkää Pythonin sisäänrakennettua virheenkorjainta koodin vaiheittaiseen interaktiiviseen suorittamiseen. Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Virheenkorjaus pdb:llä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- logging-moduulin perusteet
- Käsittelijät, muotoilijat ja suodattimet
- Rakenteinen lokitus
- Virheenkorjaus pdb:llä