Pythonでプログラムを実行すると、思った通りに動かないことがあります。
そういったときに便利なのが「デバッガ」です。
今回は、Pythonに標準で用意されている pdb
モジュールと breakpoint()
関数について、自分の理解を整理するためにまとめてみました。
pdbとは?
pdb
は Python 標準のデバッガで、プログラムの途中で止めたり、変数の中身を確認したり、1行ずつ実行したりできます。
よく使うpdbのコマンド
コマンド | 意味 |
---|---|
l (list) |
現在の位置周辺のソースコードを表示 |
n (next) |
次の行を実行(関数の中には入らない) |
s (step) |
次の行を実行(関数の中にも入る) |
c (continue) |
ブレークポイントや終了まで実行を続ける |
q (quit) |
デバッガを終了 |
p 変数名 |
指定した変数の値を表示 |
set_trace()で途中停止してみる
pdb.set_trace()
を使うと、その場所で一時停止してデバッグできます。
import pdb
def add(x, y):
pdb.set_trace()
result = x + y
return result
print(add(3, 5))
上のコードを実行すると、pdb.set_trace()
のところで処理が止まります。
ここで p x
や p y
と打てば、値を確認できます。
エラーが出たときにpdb.pm()を使う
pdb.pm()
を使うと、プログラムがエラーで止まったあとに、対話的にデバッグできます。
def divide(x, y):
return x / y
divide(10, 0)
このコードを実行すると ZeroDivisionError
が発生します。
そのあとに以下を入力すると、デバッガが起動します。
import pdb
pdb.pm()
これで、エラーの原因になった場所を調べることができます。
breakpoint()で簡単にデバッグ開始
Python 3.7以降では、breakpoint()
という便利な関数も使えます。
これは pdb.set_trace()
の簡略版で、コード内に書くだけでその場所で止まってデバッグできます。
def subtract(x, y):
breakpoint()
return x - y
print(subtract(10, 4))
実行すると、breakpoint()
のところで止まり、デバッグモードになります。
おわりに
今回は、pdb
の基本的な使い方と、breakpoint()
の使い方について簡単にまとめました。
実際に手を動かして試してみることで、少しずつ理解が深まってきたように思います。
今後も使い方に慣れるように練習していこうと思います。