【ノンプログラマー向けPython】PyCharmでデバッグをする基本中の基本


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

ノンプログラマー向けにAnacondaとPyCharmによるPythonの環境構築についてお伝えしています。

前回の記事はこちら。

【ノンプログラマー向けPython】PyCharmのコードを点検&補正する機能がすごい!
ノンプログラマーのWindowsユーザー向け、Python環境つくりについてお伝えしています。今回はいけてないコードを発見して改善してくれるPyCharmのコードチェック&補正機能についてお伝えします。

PyCharmの便利なコードチェック機能についてお伝えしました。

さて、今回はデバッグについてですね。

うまく動作しなかったとき…、PyCharmにはその原因を探るための優秀な機能が搭載されています。

ということで、PyCharmによるデバッグの基本中の基本についてお伝えしていきます。

では、行ってみましょう!

スポンサーリンク

デバッグ方法の確認用コードとそのエラーについて

まず、デバッグの方法を確認するために、エラーが含まれるコードを作成してみましたので、どんなコードか、またどんなエラーが出るのかを紹介します。

距離と時間から速度を求めるスクリプトを考えましょう。

かかった時間(分)をminutes、距離(km)をdistanceとして設定をして、それらをゴニョゴニョして関数get_speedに渡して戻ってきた速度(km/時)を出力するというものです。

minutes = 10
distance = 5
print('平均時速:', get_speed(minutes / 60, distance))

関数get_speedはこちら。

def get_speed(kms, hours):
    return kms / hours

進んだ距離kmsと、それにかかった時間hoursを受け取って、戻り値として時速を返す関数です。

それで、そのまま実行をすると、出力結果は

デバッグ用の論理エラー

平均時速: 0.03333333333333333

…そんなばかな。

10分の時間をかけて、5km進んだわけですから、時速は0.033…kmというのは明らかにおかしい。時速30kmになるはずです。

この手がかりをさがすために、PyCharmのデバッグ機能をつかってみたいと思います。

(勘の良い方は、ソースコードか画面キャプチャ見てわかっちゃっていると思いますが、もうしばらくお付き合いください。)

PyCharmでのデバッグの基本手順

PyCharmのデバッグの基本手順は以下の通りです。

  1. ブレークポイントを設置
  2. デバッグを開始(ブレークポイントで止まる)
  3. ステップ実行で1行ずつ実行
  4. 変数などの値を確認

前述のお題を使いながら、実際にその使い方を見ていきましょう。

ブレークポイントの設置

まず、ブレークポイントを設置します。

行番号の右横あたりのエリアをマウスでクリックすると、赤い丸が表示されるようになりますが、これがブレークポイント。

ひとまず、今回は最初に実行される5行目に付けてみました。

PyCharmでブレークポイントの設置

ちなみに、ブレークポイントというのは、その名の通り「止めるポイント」で、デバッグモードで実行したときに、そこでいったん処理が止まってくれるようになるというものです。

デバッグを開始

その状態でデバッグを開始します。

右上にある「虫」ボタンがデバッグのボタンなので、クリックしましょう。

ちなみに、表示されているとおり、 Shift + F9 でもOKです。

PyCharmでデバッグを開始する

これでデバッグがスタートするのですが、先ほど設置したブレークポイントでいったん実行が止まります。行全体が青くハイライトされたのがその証拠です。

PyCharmでデバッグがブレークしている状態

ステップ実行で1行ずつ確認する

そしたら、ここから1行ずつ動作をさせて確認していきますよ。

ツールウィンドウには「Debugger」というタブが表示されていると思いますが、そこにはいろんな矢印のアイコンが並んでいます。

その中から以下の「Step Into」というボタンを探してクリックします。

表示されている通り、 F7 キーでもOKです。

PyCharmのStep Intoボタン

すると、以下のようにいろいろなことが起きます。

PyCharmのStep Into

まず、5行目が実行されて、次の6行目が青のハイライト、つまり中断している状態になります。

一方で、通過した5行目には

minutes: 10

という表示がされました。代入された値を教えてくれているのです。

また、ツールウィンドウでも

minutes = {int} 10

と表示されていて、minutesに格納された値とそのデータ型を確認できます。

さらにもう一度、「Step Into」ボタンをクリック(または F7 )をすると、さらに1行進みます。

そして、変数distanceの値もエディタとツールウィンドウに表示されるようになります。

PyCharmのStep Into

このように1行ずつ実行するのをステップ実行といいます。

そして、中断したらそれまでに値が代入された変数については、エディタ上とツールウィンドウで確認できるようになります。

これらの値を確認しながら、手がかりを探していくわけですね。

ステップ実行で呼び出した関数に入る

ちなみに、「Step Into」ではなくて、その隣の「Step Over(F8)」を使うと、呼び出した関数の中には入っていかないステップ実行になります。

呼び出した関数にも入っていきたい場合は「Step Into」を使います。

さて、さらにStep Intoによるステップ実行を進めて、呼び出した関数get_speedの中に入っていきます。

PyCharmのStep Intoで呼び出した関数に入る

呼び出した関数に入るとスコープが変わるので、エディタとツールウィンドウに表示される変数が変わるのですが…

kms: 0.16666…
hours: 5

おや?おかしいですよね!?

距離が5で、時間は10/60=1.66666…を引数として渡したはずですが、渡した時点で逆になってしまっています。

関数get_speedの引数の並べ方について、kmsとhoursの順番を間違えていたということですね。

これで、原因を見つけることができました。

まとめ

以上、PyCharmによるデバッグの方法の基本についてお伝えしました。

  1. ブレークポイントを設置して
  2. デバッグ開始
  3. ステップ実行して、各ステップごとの変数の値をエディタまたはツールウィンドウで確認

ですね。

これらの機能を活用して、すばやくバグを見つけちゃいましょう。

次回は、PyCharmでパッケージをインストールする方法をお伝えします。

【ノンプログラマー向けPython】PyCharmでパッケージをインストールする方法
非エンジニア向けにAnacondaとPyCharmでPython環境構築をするシリーズです。今回は、パッケージ管理について。PyCharmで新たにパッケージをインストールする方法についてお伝えします。

どうぞお楽しみに!

連載目次:ノンプロPython~Anaconda&PyCharm環境作り

非エンジニア&Windowsユーザー向けのPython環境つくり。ゆくゆくはワンランク上のことにチャレンジしたい…!という方であれば、早めの段階で環境を作っておいてしまうという手もありますね。このシリーズでは、Anaconda&PyCharmでPythonの環境を作る手順についてシリーズでお伝えします。
  1. 【Python】非エンジニアWindowユーザー向けのAnacondaインストールの手順
  2. 【ノンプログラマー向けPython】Anaconda Promptとは何か、またその超基本の使い方
  3. 【ノンプログラマー向けPython】統合開発環境「PyCharm」のインストールと初期設定
  4. 【ノンプログラマー向けPython】PyCharmではじめてのスクリプトを作成して実行する方法
  5. 【ノンプログラマー向けPython】まず最初に覚えたいPyCharmのショートカットキーまとめ
  6. 【ノンプログラマー向けPython】PyCharmのコードを点検&補正する機能がすごい!
  7. 【ノンプログラマー向けPython】PyCharmでデバッグをする基本中の基本
  8. 【ノンプログラマー向けPython】PyCharmでパッケージをインストールする方法
  9. 【ノンプログラマー向けPython】Anacondaでpyファイルをダブルクリックで実行できるように設定する

タイトルとURLをコピーしました