みなさんVS code(Visual Studio Code)使ってますか?
僕はSublimeとAtomのいいとこどりをしたようなUXが好きで普段から多用しています.
これまでもやろうやろうと思っていてなかなかできていなかったVS codeでのpythonのデバッグというものをやっていくついでに情報の共有ができればと思います.
(とりあえず公式がpython3に準拠しているっぽいのでまずはpython3でデバッグできるようにしようと思いますが,行く行くはpython2でもデバッグできるようにしようと思っています.)
できるだけプログラミングをやったことがない人でもわかるように書いていこうと思いますので質問や編集リクエストは遠慮なさらずに送ってください.
基本的に公式サイトに則って説明していきます.(適宜説明を追加したり省いたりしています)
準備
VS側の準備
まずはVisual Studio Codeのダウンロード&インストールを済ませておいてください.
VS codeのインストールが済んだらまずはこちらのpython extensionをインストールします.
図の矢印で示した部分をクリックしてもらうと拡張機能の検索ができるので検索ボックスに"python"と入力して一番上にある公式のPython Extensionをインストールしてください.インストールが終わったら再読み込みをしてください.
Pythonの準備
Pythonのインストール
次にpythonのインストールを行ってください.僕はいつもAnacondaをインストールしています.(Warningは出ますがその際にPATHも通しています.)
Anacondaのインストール方法はダウンロードしてインストーラーを実行して"Next"をカチカチしていくだけなのですが,この説明だけじゃわからないというかたはこちらのサイトを参考にされてください.
(Anacondaは入れたくないという方は自力でpythonのインストールをお願いします.)
pythonパスの確認
コマンドプロンプトを実行してpythonコマンドを実行してインタプリタが起動すればpython.exeのパスが通っている証拠です.
通ってないですという方はこちらを参考に以下の手順でPATHを通してください.
"コントロールパネル"=>"システムとセキュリティ"=>"システム"=>"設定の変更"=>"詳細設定"=>"環境変数"
フォルダとソースコードの作成
それではいよいよソースコードを作っていこうと思います.
まずはお好きな場所に"python_sample"というフォルダを作ってください.
そして左上の"ファイル"から"フォルダを開く"を選んでたった今作った"python_sample"フォルダを開いてください.
すると下の図のような状態になると思いますので,赤丸で囲まれた"新しいファイル"を選択してください.
するとファイル名を入力する画面になると思いますので"hello.py"と入力してEnterを押してください.
すると下の図のような状態になると思います.
(ちなみに僕は"VSCode Great Icons"という拡張機能をインストールしているのでファイルの横のアイコンがデフォルトと違っていますがあまり気にしないでください.)
それではhello.py
中に以下のコードを入力してください.
msg = 'Hello World'
print(msg)
入力途中の画面が以下のようになるのですが,print
を入力する途中で下に候補が出てくると思います.これはIntellisenseという機能で図のようにprint
のような構文として登録されているものを入力すると補助してくれるものです.
下の図の状態でTABキーを入力すると補完してくれます.
入力完了後(これまた僕は"blackai-theme"というテーマをインストールしているので文字の色がデフォルトとは違いますがお気になさらずに)
この段階でhello.py
をCtrl+S
で保存します.
実行
それでは先ほど作成したファイルを実行していきましょう.
まずはCtrl+Shift+P
(同時押し)で"コマンドパレット"というものが開くのでpython select interpreter
を検索します.
そしてAnacondaが選ばれていることを確認します.
確認がとれたらhello.py上で右クリックして"ターミナルでPythonファイルを実行"をクリックします.
すると下の図のようにVScode下部にターミナルが開かれてHello World
という記述があると思います.
これにて実行は成功です.
デバッグ
ここからはVS code内でデバッグする方法について説明していこうと思います.
まずprint(msg)
と書かれた行の行番号の左側にマウスポインタを持っていきます.
すると下の図の黄色の矢印で示された部分にあるように薄い赤丸が現れると思いますのでそこをクリックしてください.
これがブレークポイントと呼ばれる上から順に実行していくときにそこで一旦停止するための目印になります.
(print(msg)
の行にカーソルを持ってきてF9
をクリックすることでもブレークポイントを置くことができます.)
次に,上の図の赤枠で示された虫にバツマークがついたようなアイコンをクリックしてください.
すると下の図のような画面になりますので赤枠で示された設定用ボタンをクリックしてください.
すると以下のような画面になるので上の"Python"の方を選択してください.
以下の画面になると思います.このlaunch.json
というのは設定がいろいろ書いてあるファイルだと思ってください.
それではこの上の図で黄色い枠で囲まれた部分に以下の一文を追加します.この時"program": "${file}"
のあとにカンマを入れるのを忘れないようにしてください.
"stopOnEntry": true
書き換えるとこのような感じです.
それではこのlaunch.json
ファイルをCtrl+S
で保存してhello.py
に戻ります.
戻ってからF5
を押します.
すると以下のような画面になります.
上の図で黄色い矢印で示されている行が次に実行する行になります.今,1行目になっていると思いますがこれは先ほどlaunch.json
ファイルに"stopOnEntry": true
を追加したためで,この一文を追加しない,またはtrue
ではなくfalse
を入力した場合にはブレークポイントが設定されている2行目に黄色い矢印が表示されます.
ここでF5
またはF10
をクリックしてください.すると次の行に黄色い矢印が移動すると思います.これで1行目が実行されたことになります.
ちなみにF5
とF10
の違いはF5
が次のブレークポイントもしくは最後まで実行するのに対し,F10
は黄色い矢印を指している行のみを実行します.なので,2行目にブレークポイントを設定せずにF5
を押すと,最後まで実行されて実行が終了します.
ここまでを実行すると以下の図のような状態になると思います.
図の左側の赤枠の部分を見るとmsg:'Hello World'
となっていますね.このことから今,msg
という変数が'Hello World'
という値を持っているということがわかります.
もしここで'Hello World'
が間違っているとしたらコードのほうにバグがあるということになります.コードの中でe
がa
になっていたりしないか確認してください.
それではこの状態でF10
もしくはF5
を押してみましょう.
ここではどちらのファンクションキーを押すかによって動作が変わってきます.先ほども説明した通りF10
は黄色の矢印で示された行だけを実行しますので,2行目を実行した後,実行を終了するところまではいきません.一方F5
を押すと最後まで実行されますので,実行が終了してしまいます.今回の場合ですと2行目が最後の行にあたるのでF10
を2回押すのとF5
を1回押すので同じ動作をします.
以下の図のうち1枚目がF10
を1度押した状態,2枚目がF5
を1度押す,もしくはF10
を2度押した状態になります.
どちらの図においても赤枠で囲まれた部分を見てわかるようにmsg
の中身である'Hello World'
がターミナルに出力されているのがわかります.
これにてこのhello.py
プログラムの実行は終了となります.
以上の操作によってコード中の好きなところにブレークポイントを置いてF5
を押して実行したり,F10
を押していって1行ずつ実行していったり(ステップ実行といいます.)していくことで変数の値を確認しながら実行することができるのでデバッグを行うことができます.
以上でVS codeでpython3のコードを実行する方法と,そのデバッグ方法の簡単な説明を終わりにします.
より詳細なデバッグ方法について公式サイトにも載っていますのでそちらの解説記事も書き上げたら投稿したいと思います.