目的
この記事では、Pythonの標準デバッガー(Pdb)の使用例と基本操作方法について説明する。
実施内容
Pdbの使用例
-
説明用のサンプルプログラムを作成
説明用に下記debug_sample.py
を作成する。1 def add(a, b, c): 2 return a + b + c 3 4 step = 0 5 6 step = add(1, 2, 3) 7 step = add(4, 5, 6)
-
4行目に
import pdb; pdb.set_trace()
を挿入
この状態で4行目の直後となる6行目のstep = 0
がブレイクポイントとなる。1 def add(a, b, c): 2 return a + b + c 3 4 import pdb; pdb.set_trace() 5 6 step = 0 7 8 step = add(1, 2, 3) 9 step = add(4, 5, 6)
-
debug_example.py
を実行
6行目のstep = 0
で止まり、入力待ちを表す(Pdb)
が表示される。$ python /var/www/vops/ops/macuos/debug_example.py > /var/www/vops/ops/macuos/debug_example.py(6)() -> step = 0 (Pdb)
-
ステップ実行でそれぞれ変数の値を確認
以下、6行目~9行目までステップ実行し、最後に変数step
の値を確認する。
ステップ実行は、s
、変数の確認は、p <変数名>を入力する。
ステップ実行毎に>
でどの行であるか、->
で実行コードが確認できる。$ python /var/www/vops/ops/macuos/debug_example.py > /var/www/vops/ops/macuos/debug_example.py(6)() -> step = 0 (Pdb) s # ステップ実行のsを入力 > /var/www/vops/ops/macuos/debug_example.py(8)() -> step = add(1, 2, 3) (Pdb) s # ステップ実行のsを入力 --Call-- > /var/www/vops/ops/macuos/debug_example.py(1)add() -> def add(a, b, c): (Pdb) s # ステップ実行のsを入力 > /var/www/vops/ops/macuos/debug_example.py(2)add() -> return a + b + c (Pdb) s # ステップ実行のsを入力 --Return-- > /var/www/vops/ops/macuos/debug_example.py(2)add()->6 -> return a + b + c (Pdb) s # ステップ実行のsを入力 > /var/www/vops/ops/macuos/debug_example.py(9)() -> step = add(4, 5, 6) (Pdb) s # ステップ実行のsを入力 (Pdb) p step # 変数「step」の確認 15
Pdbの基本操作方法
以下、よく使用するPdbコマンド。
-
[
s
] or [step
]
ステップイン : 行単位でステップ実行する。 -
[
n
] or [next
]
ステップオーバー : 行単位で実行する。 ※ 関数の中は停止しない。 -
[
r
] or [return
]
ステップアウト : 関数単位で実行する。 ※ 実行中の関数が返るまで実行する。 -
[
c
] or [continue
]
次回のブレークポイントまで停止せず実行する。 -
[
l
] or [list
]
現在停止行の前後のソースを表示する。 -
[
a
] or [largs
]
現在停止している関数の引数を表示する。 -
[p <変数名>]
変数の値を表示する。 -
[
q
] or [quit
]
Pdbデバッガーを終了する。