SIGMA-SE Math & Tech Library

SIGMA-SE Math & Tech Library


数学と情報技術をテーマに、書籍や教材だけではつかみにくい考え方を具体例とともに簡潔にわかりやすく伝える解説サイトです。
技術の歴史や背景、関連知識の整理、学習のための覚書や要約記事も掲載しています。

Python - 標準デバッガー(Pdb):基本操作とステップ実行

概要

Python標準デバッガーであるPdbの使い方を、ブレークポイント、ステップ実行、変数確認を中心に整理する。

Pdbを使うと、print文だけでは追いにくい処理の流れを、停止位置ごとに確認できる。
関数の中へ入るのか、次の行へ進むのか、変数の値をどう見るのかを押さえると、原因調査がしやすくなる。

この記事の構成

対象環境と利用上の注意

  • 本文記載時の環境
    Python 3.7以降のbreakpoint()と標準デバッガーPdbを利用する例。
    Python 3.6以前の代替方法も併記。
  • 確認時期
    2026年8月にPythonの公式資料と照合。
    掲載例のすべての対話出力は現行Pythonで再実行していない。
  • 現在そのまま利用できない箇所
    停止位置のパス、行番号、Pdbの表示形式はPythonのバージョンや対象ファイルで変わる。
    出力を固定値として使わず、操作コマンドと処理の流れを参照する。

作業時の注意点

  • stepとnext
    stepは関数の中へ入り、nextは関数呼び出しを一行として進める。
  • 停止位置
    set_trace()を書いた行そのものではなく、その次の実行行で止まる。
  • 変数のスコープ
    現在停止している位置から見える変数だけを確認できる。
  • 消し忘れ
    breakpoint()やpdb.set_trace()を本番コードへ残さない。

実施内容

Pdbの使用例

  • 説明用のサンプルプログラムを作成
    説明用に下記debug_example.pyを作成。

    def add(a, b, c):
        return a + b + c
    
    
    breakpoint()
    step = 0
    step = add(1, 2, 3)
    step = add(4, 5, 6)
    print(step)
    

    breakpoint()はPython 3.7以降で利用でき、既定ではpdb.set_trace()を呼び出す。
    Python 3.6以前では、import pdb; pdb.set_trace()を同じ位置へ記述。

  • debug_example.pyを実行
    breakpoint()が実行されると、その次に実行するstep = 0の行で止まり、入力待ちを表す(Pdb)が表示される。

    $ python debug_example.py
     > /path/to/debug_example.py(6)<module>()
     -> step = 0
     (Pdb)
    
  • nextstepを使い分けて値を確認
    nは現在の関数内の次の行まで進み、sは呼び出した関数の内部へ入る。
    aで現在の関数の引数を、p <式>で式の評価結果を確認できる。
    以下は操作の流れを抜粋した例となる。

    (Pdb) n       # step = 0を実行し、次の行へ進む
    (Pdb) s       # add(1, 2, 3)の内部へ入る
     --Call--
     > /path/to/debug_example.py(1)add()
     -> def add(a, b, c):
    (Pdb) a       # 現在の関数の引数を表示
    a = 1
    b = 2
    c = 3
    (Pdb) r       # 現在のadd関数がreturnするまで実行
     --Return--
     > /path/to/debug_example.py(2)add()->6
     -> return a + b + c
    (Pdb) n       # 呼び出し元へ戻り、次の行まで進む
    (Pdb) p step
    6
    (Pdb) n       # 2回目のaddは内部へ入らず実行
    (Pdb) p step
    15
    

Pdbの基本操作方法

以下、よく使用するPdbコマンド。

  • [s] or [step]
    現在行を実行し、呼び出した関数の内部を含む、次に停止可能な位置で止まる。

  • [n] or [next]
    現在行を実行し、現在の関数内の次の行、または現在の関数が戻る位置で止まる。
    呼び出した関数の内部では停止しない。

  • [r] or [return]
    現在の関数が戻るまで実行。

  • [c] or [continue]
    次回のブレークポイントまで停止せず実行。

  • [l] or [list]
    現在停止行の前後のソースを表示。

  • [a] or [args]
    現在停止している関数の引数を表示。

  • [p <式>]
    現在のコンテキストで式を評価し、結果を表示。

  • [q] or [quit]
    デバッグ中のプログラムを終了。

まとめ

  • PdbはPython標準のデバッガーで、処理を止めながら変数や流れを確認できる。
  • step、next、return、continueの違いを押さえると、調査しやすくなる。
  • breakpoint()やpdb.set_trace()は便利だが、確認後はコードから外す。

参考文献

この記事を共有
Xで共有 Facebookで共有 LINEで共有



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp