Ladící program pdb
Chtěli byste mít možnost krokovat řádku po řádce vašeho programu a přímo vidět, co se v na kterém řádku děje? Máte někde v programu chybu a program rychle proběhne a skončí? Chcete mít možnost kdekoliv, včetně vnitřku funkcí nebo metod, program zastavit a zkontrolovat si proměnné? Tak k tomu slouží právě tzv. ladící programy, debuggery. Jeden z nich je zabudovaný přímo v distribuci a jmenuje se pdb.
Podporuje:
- zarážky - v programu si nastavíte místo, kde chcete, aby program pozastavil činnost a přešel do režimu ladění
- zarážky s podmínkou - program se pozastaví na určitém místě, jen když je splněna nějaká podmínka
- krokování řádku po řádce
- průzkům zásobníku
- výpis zdrojového kodu
- výpis proměnných v místě, kde právě stojíte
- posmrtné ladění - program zhavaruje, vy se jednoduše vrátíte na místo, kde havaroval, a můžete výpisy proměnných v okamžiku před havárií, průzkum zásobníku apod.
Help
O tom, že jste v debuggeru vás přesvědčí prompt, který se změní na (Pdb). Potom funguje příkazy jako n (next - krok dopředu), l (list - výpis kodu), b (breakpoint - nastavení zarážky) ... Výpis vše získáte pomocí help, v nápovědě k pdb http://docs.python.org/lib/module-pdb.html
Příklady
Zastavení programu na určitém místě
Umístněte následující dva řádky na místo, kde chcete, aby se provádění programu zastavilo a předalo řízení debuggeru, tedy vám:
import pdb pdb.set_trace()
Spuštění celého scriptu pod pdb
python -m pdb můj script.py
Posmrtné ladění
Program skončí s chybou a vám stačí na zbylém pythonovském promptu napsat
>>> import pdb >>> pdb.pm()
a již si můžete zkoušet.