Help us understand the problem. What is going on with this article?

【JupyterNotebook/Lab】Jupyter上でデバッグする3つの方法【Pdb】

Jupyter上でデバッグしたい

print文を挟み、何回も繰り返し実行しながらデバッグの根源を突き止めるのはやめたい気持ち.

  • ブレークポイントを指定しデバッグする方法
  • エラー発生時にデバッガを起動する方法
    • 特定のセルのみに適用
    • ノートブック全体に適用

の3つの方法を紹介します。

ブレークポイントを指定するデバッグ

デバッグをしたい行が明確な場合,
以下行をデバッグしたい行に挟みます.

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

実行例

以下はiが10になったらブレークする例です. たしかにi=10が確認できますね.

バグが発生したらデバッグ

バグがどこかで発生した段階でPdbを起動させたい場合。

特定のセルのみに適用させたい場合 は以下行をセルの先頭に挟みます.

%%debug

ノートブック全体に適用させたい場合 は以下行をどこかに挟んでください.

%pdb on
# %pdb off ← デバッグ検知モードをoffにしたい時

実行例

i == 10の時に意図的にエラーを発生させています. ちゃんとデバッガが起動していますね.

よく使うコマンド

Python Ipdb Cheatsheet

ここらへんですかね. 便利なのあったら教えてください

コマンド 説明
w スタックトレースを表示 (where)
n 次の行に入るまで実行 (next)
c 次のブレークポイントまで実行を継続 (continue)
q 最後まで実行して終了 (quit)
d 関数の中に潜る (down)
u 関数の外で出る (up)
s 次の関数呼び出しまで実行 (step)
r 現在の関数が復帰するまで実行 (return)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away