Python Academy · Oppitunti

Virheenkorjaus pdb:llä

Käyttäkää Pythonin sisäänrakennettua virheenkorjainta koodin vaiheittaiseen interaktiiviseen suorittamiseen.

Oppitunti 4/413 vaihetta

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          — quit

Muuttujien 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 < 0

Jä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.py

Muuttujien 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 frame

ipdb — 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 skipped

Pikatarkistus

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.

Aloita maksutta

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

  1. logging-moduulin perusteet
  2. Käsittelijät, muotoilijat ja suodattimet
  3. Rakenteinen lokitus
  4. Virheenkorjaus pdb:llä
← Takaisin: Python Academy