Python
IPython
debug
IPythonNotebook
Jupyter

JupyterまたはiPython Notebookでデバッグをする方法

More than 1 year has passed since last update.

某勉強会で少し話題になっていたので、調べてみました。


準備

デバッグしたい行の直前に、以下を追加します。

from IPython.core.debugger import Pdb; Pdb().set_trace()


IPython.core.debuggerTraceを使っても良いですが、現在ではDEPRECATED(廃止)扱いになっています。

参考: IPython issue #9940



実行

JupyterやiPython Notebookで普通に実行すると、前項で追加した行の直後で実行が中断されます。

run1.png

ipdb>の後に現れるテキストフィールドに、コマンドを入力します。hでヘルプが表示されます。qで終了します。


ipdbコマンド一覧

参考: Python Ipdb Cheatsheet


移動系

コマンド
説明

n
次の行に入るまで実行 (next)

c
次のブレークポイントまで実行を継続 (continue)

unt 行番号
指定された行に到達するまで実行 (until)

d
ステップイン (down)

u
ステップアウト (up)

s
次の関数呼び出しまで実行 (step)

r
現在の関数が復帰するまで実行 (return)

q
最後まで実行して終了 (quit)


表示系

コマンド
説明

p 変数名
変数の値を表示 (print)

a
現在の関数の引数を表示 (args)

w
スタックトレースを表示 (where)

h
ヘルプ (help)


ブレークポイント設定系

コマンド
説明

b 行番号または関数名
ブレークポイントを設定 (break)

tbreak 行番号または関数名
一時的なブレークポイントを設定(ブレークポイントに到達したら削除される)

disable 番号
ブレークポイントを無効化

enable 番号
ブレークポイントを有効化

ignore 番号 回数
指定された回数だけブレークポイントを無視

condition 番号 設定する条件
ブレークポイントでの条件の判定値を変更

cl
ブレークポイントを全て削除 (clear)