2018/02/13
2020/04/14
PdbでPythonコードを楽にデバッグする方法
Pythonの実行でエラーが出た時に、print文などで一々確認するのは疲れますよね。かといって、統合開発環境(IDE)を導入するのも面倒。という人のために、Pythonコード上に簡単な1行を挿入するだけでデバッグする方法をご紹介いたします。
1行挿入するだけで、デバッグポイントを設置
import pdb;pdb.set_trace()
以上の1行をプログラムを止めたい場所に挿入するだけで、デバッグポイントを設置し、少しずつプログラムを実行することが可能になります。例えば次のようにします。
print("Hello") #デバッグポイントを設置 import pdb;pdb.set_trace() print("World")
これを実行すると、”Hello”だけがプリントされ、コンソールは以下のような画面になります。
Hello > -> print("World") (Pdb)
ここで(Pdb) の横にコマンドを入力することで、プログラムを再開したり、終了したりすることができます。続けてプログラムを実行したい場合は、cかnを入力してEnterを押しましょう。すると、”World”もプリントされます。終了はqです。
よく使うコマンド
import pdb;pdb.set_trace()を使った時によく使われるコマンドを以下の表に示します。
コマンド | 意味 |
---|---|
n | next。次のステップを実行 |
c | continue。次のデバッグポイントまで全コードを実行 |
l | list。現在いるところの前後のソースコードを表示する。 |
q | quit。プログラムを終了する。 |
nとcの違いは、nが次の1処理を実行するのに対して、cは次のimport pdb;pdb.set_trace()までの全コードを実行します。
(Pdb)の横にPythonコードも書き込める!
コマンド以外にもPythonコードも書き込めます。こちらは変数の中身を確認したりするのに非常に便利。以下に書き方の一例をしまします。
(Pdb) nameList = ["Taro","Hanako","Satomi"] (Pdb) nameList ['Taro', 'Hanako', 'Satomi'] (Pdb) print(nameList) ['Taro', 'Hanako', 'Satomi'] (Pdb) p nameList ['Taro', 'Hanako', 'Satomi'] (Pdb) import pandas as pd (Pdb) pd.DataFrame(nameList) 0 0 Taro 1 Hanako 2 Satomi
このように、変数の中身の確認、新しい変数の作成、ライブラリのインポートなど、通常のPython上で出来ることが出来ます。
これでコーディング効率が大幅にアップします。非常に便利なので、今まで使ってなかった方は是非試して見てください!
(totalcount 7,082 回, dailycount 8回 , overallcount 16,590,970 回)
Recommended