【Python】脱Printデバッグ! わずか2クリックでデバッグする方法

変数や関数の返り値の状態を調べるためにprint()関数を使う(通称printデバッグ)ことが多いかと思います。しかし、Pythonによる開発ではPrintデバッグよりも簡単なデバッグ方法があります。わずか2クリックでデバッグする方法をご紹介します。

多くの書籍もprint()関数で変数を出力して説明するため、printデバッグが唯一の方法と思っている方もいるかもしれません。ITエンジニアラボのコラムでも print()関数を多用しています。しかし、それらはあくまで説明のためです。出力する必要のないprint()がソースコードに混入していたり、いちいちprint()を書いたり消したり…というのは色々と良くないでしょう。

Pythonのデバッガー pdb

Pythonの標準ライブラリにはpdbという対話型ソースコードデバッガがあります。標準機能なので一応紹介しますが「ちょっと変数の状態を知りたい」というだけならpdbを使うまでもないかと思います。

原因不明なバグが発生したりと、スクリプトを逐一調べる必要がある場合はpdbを使うのも手でしょう。pdbについては下記公式ドキュメントを参照ください。
https://docs.python.jp/3/library/pdb.html

PyCharm のデバッグ機能がとても便利

さて本題、printデバッグよりも簡単かつ高機能なデバッグ方法を紹介します。Python開発者でPyCharmを知らない方はいないと思いますが…もしPyCharmを使ったことがないなら、まずは無料版PyCharmをインストールしましょう。

※PyCharmは有料版もありますが、Djangoによる本格WEB開発をしない場合は無料版で十分です(雑)。

PyCharm公式サイト
https://www.jetbrains.com/pycharm/

デバッグ方法の実例

下のスクリプト9行目 numbers.append(50) を実行する際に変数numbersはどんな状態になっているでしょうか?print()で出力せずに調べてみましょう。

 

1. ブレークポイントを設定

PyCharmで行番号9のすぐ右をクリックすると赤丸がつきます。この赤丸をブレークポイント(ブレイクポイント)と呼びます。なお、行番号9のすぐ右をもう一度クリックすると赤丸を消すことができます(ブレークポイントの削除)。

デバッグを実行すると、このブレークポイントに指定した行で処理が止まって結果が表示されます。

ブレークポイントを設定

 

2. デバッグ実行

PyCharmの画面右上の「虫のアイコン」をクリックするとデバッグが開始されます。
※ Run > Debug… と実行しても同様にデバッグを開始できます。

 

3. デバッグ結果

画面下に結果が表示されます。画像の赤枠で囲んだ箇所のVariablesを見ると、numbersには [0, 1, 2, 3, 4]というリストがセットされていることがわかります。

PyCharm でデバッグ

 

細かいことですが、処理が実行されるのはブレークポイントを設置した直前の行までで、ブレークポイントに指定した行自体(この例だと9行目)は実行されないことに注意しましょう。

※もし9行目が実行されていたらnumbersは[0, 1, 2, 3, 4, 50]となるはずです。

その他 – 下の行を見る

下図の赤枠で囲ったボタンを押すと次の行に移動できます(ステップオーバーと呼びます)。1行ステップオーバーすると、9行目が実行されて numbers は [0, 1, 2, 3 , 4, 50] というリストになっていることがわかります。ポチポチ・クリックするだけです。

PyCharm ステップオーバー・ステップイン

 

いかがでしょう?ソースコードを一切汚すことなく、わずか2クリックで変数の状態を調べることができました。「print()を書いて実行して確認したら消して…」とprintデバッグするより遥かに効率的ではないでしょうか。print()結果の確認をコマンドプロンプト(Win)やターミナル(Mac)で行なっているなら…絶望的に非効率です。

ここでは変数の状態を調べただけですが、PyCharmのデバッグには多くの情報や便利機能があります。IDEの機能を活用して効率的で快適な開発を行いましょう!

コメントを残す

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