Debugerの使用法

Python Debuggerモジュールを読み込むには, import pdb とする.

import pdb
def f(x):
    print("x=", 100 / (x + 5))

プログラムを停止したい行の前にpdb.set_trace()と書くとデバッガが起動する.

重要なコマンド一覧

  • h (help) でヘルプが出る.(help <コマンド> でコマンドの説明が出る.)
  • q (quit) でデバッガを終了する.(デバッガをちゃんと終了させないとカーネルが暴走するので注意!)
  • p (print) でプリント(コマンドと同じ変数でなければ,それを入れるだけでプリントしてくれる.)
  • n (next) で次の行に進む.
  • c (continue) で次の停止位置(ブレークポイント)まで進む.
  • s (step into) で現在の行を実行(関数呼び出しで止まる)
  • l (list) で現在の近所のプログラムリストを表示する.

以下のプログラムを動かして,コマンドを色々試してみよう.

  • 関数 f(x) 内では,変数 y はどうなっているだろうか?
  • もとのプログラム内では,変数 x はどうなっているだろうか?
for i in range(3):
    # pdb.set_trace()   #止めたいときにはこの行を生かす
    y = i + 2
    f(y)
x= 14.285714285714286
x= 12.5
x= 11.11111111111111

意図的にエラーを起こしてみる.

%debug とうつと,エラー箇所からデバッグを開始できる.

  • 変数xを表示させ,何故エラーが起きたかを考えてみよう.
for i in range(-10, 0):
    y = i + 2
    # f(y)