[Python #13] Visual Studio Code のデバッグ機能を使う(初心者向け)
こんにんちは、PythonチームのT.Sです。
皆さんは、Pythonでプログラムを組む際に、予期しない出力結果が得られた時、どのように対処されているでしょうか。
今回は、そういった場面で役立つ、Pythonのデバッグについてお話しようと思います。
デバッグとは
デバッグとは、プログラム上の誤りを見つけそれを排除することです。英語にするとdebugと表記されます。
bugは、日本語に翻訳すると「虫、ばい菌」という意味になり、プログラム中に小さな虫が入り込みそれによって誤動作が生じるというニュアンスからきています。
Pythonにはデフォルトでデバッグツールやパッケージが提供されていますが、私個人としてはVisual Studio Code(以下vscodeとする)で使用できるデバッグ機能の方が扱いやすいので、今回はVisual Studio Code を用いたPythonのデバッグについて紹介していこうと思います。
Visual Studio Code を用いたデバッグ
vscodeを用いたデバッグでは、コードを一行ずつ実行しながら逐一変数の中身を確認できます。また、それ以外にもプログラムがどのIf文やFor文を経由してどのような流れで実行されているかも確認できます。
変数に想定外の値が入っていたり、If文やFor文などでの挙動が原因で予期していた実行結果が得られなかった時などに有効です。
ただ、変数の中身を確認するだけであればJupyter notebook等の対話型開発環境を使っても簡単に確認できるので、自分にあった方法を使うのが良いと思います。ちなみに私は、コーディングはJupyter notebookで行い、プログラム実行後予期しない出力結果が得られた時は、vscodeのデバッグ機能を使用するようにしています。
言葉で説明してもよくわからないと思うので実際に手を動かしてデバッグ機能を試していきます。
Visual Studio Code のデバッグ機能を使ってみる
vscodeの拡張機能「Python」をインストールする
拡張機能「Python」をインストールするとデバッグ機能が扱えるようになります。
![](https://www.f-answer.com/wp-content/uploads/2022/09/image-4-1024x576.png)
ブレークポイントを設定する
ソースコードの行番号隣をクリックするとブレークポイントを設定できます。
ブレイクポイントを設定することでプログラムを止めたい箇所を指定することができ、デバッグを行った際は、ブレークポイントの一行手前までコードが実行されます。
下の画像でいうと、11行目のコードまで実行されることになります。
![](https://www.f-answer.com/wp-content/uploads/2022/10/image-2-1024x544.png)
デバッグを実行
画像左側のアクティビティバーをクリックし、実行とデバッグをクリックします。
![](https://www.f-answer.com/wp-content/uploads/2022/10/image-6-1024x257.png)
クリックすると下の画像のようなデバッグ構成選択画面が出てくるので、現在アクティブなPythonファイルを選択します。
![](https://www.f-answer.com/wp-content/uploads/2022/10/image-7-1024x544.png)
実行結果の見方
実行後、画面左側サイドバーの変数項目から現時点で定義されている変数とその中身を一覧できます。
![](https://www.f-answer.com/wp-content/uploads/2022/10/image-11-1024x354.png)
また、エディタ上部のデバッグツールから各種機能が利用でき、アイコンの左から順番に、続行、ステップオーバー、ステップイン、ステップアウト、再起動、停止となっています。
各種機能は以下のようになっています。
- 続行:次のブレイクポイントまで処理を進めることが可能。※ブレイクポイントは複数設定することができる。
- ステップオーバー:現在の行(黄色のマーカ行)を実行して次の行に移動する。関数の中には入らない。
- ステップイン:関数を実行する際に、関数の中に入ってステップ実行が可能。
- ステップアウト:現在実行中の関数呼び出し元まで処理を進める。
- 再起動:デバッグを再起動する。要するにもう一度最初からデバッグが行われる。
- 停止:デバッグを停止する。
これらの機能を使って一行ずつプログラムを実行していくことで、想定していた処理手順を踏めているかを確認することができます。
最後に
今回は主に、vscodeを用いたデバッグ機能の中でも基本的なものを紹介しました。
恐らくvscodeには今回紹介したもの以外にもデバッグ機能はあると思うので興味がある方は調べてみて下さい。