某勉強会で少し話題になっていたので、調べてみました。
準備
デバッグしたい行の直前に、以下を追加します。
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) |
