某勉強会で少し話題になっていたので、調べてみました。
準備
デバッグしたい行の直前に、以下を追加します。
from IPython.core.debugger import Pdb; Pdb().set_trace()
IPython.core.debugger
のTrace
を使っても良いですが、現在ではDEPRECATED(廃止)扱いになっています。
参考: IPython issue #9940
実行
JupyterやiPython Notebookで普通に実行すると、前項で追加した行の直後で実行が中断されます。
ipdb>
の後に現れるテキストフィールドに、コマンドを入力します。h
でヘルプが表示されます。q
で終了します。
ipdbコマンド一覧
移動系
コマンド | 説明 |
---|---|
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) |