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.