2018/02/13

2020/04/14

PdbでPythonコードを楽にデバッグする方法

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()を使った時によく使われるコマンドを以下の表に示します。

コマンド意味
nnext。次のステップを実行
ccontinue。次のデバッグポイントまで全コードを実行
llist。現在いるところの前後のソースコードを表示する。
qquit。プログラムを終了する。

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 回)

ライター:

Python

single-banner

COMMENT

コメントを残す

メールアドレスが公開されることはありません。
*は必須項目です。




CAPTCHA