0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】pdbとbreakpoint()でデバッグしてみよう

Posted at

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 xp 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() の使い方について簡単にまとめました。
実際に手を動かして試してみることで、少しずつ理解が深まってきたように思います。
今後も使い方に慣れるように練習していこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?