デバッグを行いたい場所に以下のコードを入力します。
from IPython.core.debugger import Pdb; Pdb().set_trace()
このコードを読み込まれた時点で、Python 標準のデバッグツールである pdb が起動します。
pdbの基本的なコマンドは以下のとおりです。
- h [command]:ヘルプを出す
- p [expression]:式を評価して出力する
- n:次の行へ
- c:次のブレークポイントへ
- q:その場で終了する
他にもいろんなコマンドがあるのでpdbコマンド一覧を見てみるといいかもです。
[w:スタックトレースを含んだ現在位置を示す] コマンドなんかはどのような手順で関数が呼び出されたのかを把握できたりするので便利です。
具体例
例えば、以下の例を見てみましょう。
def harmonic(n):
acc = 0
for i in range(n):
from IPython.core.debugger import Pdb; Pdb().set_trace()
acc += 1.0 / i
return acc
print(harmonic(10))
> <ipython-input-8-8f37e64adc73>(5)harmonic()
3 for i in range(n):
4 from IPython.core.debugger import Pdb; Pdb().set_trace()
----> 5 acc += 1.0 / i
6 return acc
7 print(harmonic(10))
ipdb> p acc
0
ipdb> p i
0
ipdb> c
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-8-8f37e64adc73> in <module>()
5 acc += 1.0 / i
6 return acc
----> 7 print(harmonic(10))
<ipython-input-8-8f37e64adc73> in harmonic(n)
3 for i in range(n):
4 from IPython.core.debugger import Pdb; Pdb().set_trace()
----> 5 acc += 1.0 / i
6 return acc
7 print(harmonic(10))
ZeroDivisionError: float division by zero