モジュールpdbはPythonプログラム用の対話的ソースコードデバッガを定義します。(条件付き)ブレークポイントの設定やソース行レベルでのシングルステップ実行、スタックフレームのインスペクション、ソースコードリスティングおよびいかなるスタックフレームのコンテキストにおける任意のPythonコードの評価をサポートしています。事後解析デバッギングもサポートし、プログラムの制御下で呼び出すことができます。
デバッガは拡張可能です -- 実際にはクラスPdbとして定義されています。現在これについてのドキュメントはありませんが、ソースを読めば簡単に理解できます。拡張インターフェースはモジュールbdb(ドキュメントなし)とcmdを使っています。
デバッガのプロンプトは"(Pdb) "です。デバッガに制御された状態でプログラムを実行するための典型的な使い方は:
>>> import pdb
>>> import mymodule
>>> pdb.run('mymodule.test()')
> <string>(0)?()
(Pdb) continue
> <string>(1)?()
(Pdb) continue
NameError: 'spam'
> <string>(1)?()
(Pdb)
他のスクリプトをデバッグするために、pdb.pyをスクリプトとして呼び出すこともできますせます。例えば:
python /usr/local/lib/python1.5/pdb.py myscript.py
クラッシュしたプログラムを調べるための典型的な使い方は:
>>> import pdb
>>> import mymodule
>>> mymodule.test()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "./mymodule.py", line 4, in test
test2()
File "./mymodule.py", line 3, in test2
print spam
NameError: spam
>>> pdb.pm()
> ./mymodule.py(3)test2()
-> print spam
(Pdb)
モジュールは以下の関数を定義しています。それぞれが少しづつ違った方法でデバッガに入ります:
| statement[, globals[, locals]]) |
| expression[, globals[, locals]]) |
| function[, argument, ...]) |
| ) |
| traceback) |
| ) |
sys.last_tracebackのトレースバックの事後解析デバッギングに入ります。