[実行とデバッグ]ビュー、デバッグ用ツールバー、ステップ実行など、VS CodeでPythonコードをデバッグする上での基本知識を紹介。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
前回は、mymath.pyファイルにフィボナッチ数を求める関数を3つ定義しました。今回は、Visual Studio Code(以下、VS Code)を使って、それらのコードを実行したり、デバッグしたりする手順を見ていきましょう。
まずは前回記述したコードを以下に示しておきます。これはmymath.pyファイルに記述しました。
def fib(n):
if n == 0:
return 0
if n == 1:
return 1
return fib(n - 2) + fib(n - 1)
def fib_l(n):
a = 0
b = 1
if n == 0:
return a
elif n == 1:
return b
for _ in range(n - 1):
a, b = b, a + b
return b
def fib_m(n, memo=None):
if not memo:
memo = {0: 0, 1: 1}
if n not in memo:
memo[n] = fib_m(n - 2, memo) + fib_m(n - 1, memo)
return memo[n]
そして、これら3つの関数を呼び出すのが以下のコードです。これらはmain.pyファイルに記述しましょう。
from mymath import fib, fib_l, fib_m
def main():
print(f'result of {fib.__name__}(10): {fib(10)}')
print(f'result of {fib_l.__name__}(10): {fib_l(10)}')
print(f'result of {fib_m.__name__}(10): {fib_m(10)}')
if __name__ == '__main__':
main()
それほど難しいところはありません。3つの関数をインポートして、main関数の中でそれらを呼び出して、その結果を表示しているだけです。説明が必要なのは、print関数呼び出しの中にある「fib.__name__」などでしょう。関数にはその名前を記した__name__属性があります。つまり、「fib.__name__」などは、その関数の名前を取得することを意味しています。よって、上のprint関数呼び出しでは、「result of 関数名(10): 計算結果」のような表示が行われます。
では、3つの関数が同じ結果を返すのか、コードを実行してみましょう。まずはVS Codeで一番簡単にコードを実行する方法を見てみます。
一番簡単な方法というのは、エディタ領域右上にある[ターミナルでPythonファイルを実行]ボタンをクリックするか、[F1]キーを押してコマンドパレットから[Python: ターミナルでPythonファイルを実行](Python: Run Python File in Terminal)コマンドを実行するかです。どちらの方法でも、VS Codeのパネル領域にターミナルが開いて、そこで「現在エディタ領域でアクティブになっているファイル」がPythonインタプリターを使って実行されます(コマンドパレットには2つの[Python: ターミナルでPythonファイルを実行]コマンドが表示されていますが、ここで選択するのは「python.execInTerminal」とある方です)。
エディタ領域でmain.pyファイルがアクティブな状態にして、これらのコマンドを実行すると、パネル領域にターミナルが開き、全て「55」という計算結果が得られました。
Pythonファイルを実行するだけなら、これで十分ですが、プログラムをデバッグするには別の方法が必要です。次にその方法を見てみましょう。
プログラムをデバッグするには、サイドバーの[実行とデバッグ]ビューを使います。
「実行とデバッグをカスタマイズするには、launch.jsonファイルを作成します」とありますが、標準の構成でデバッグを行うだけであれば、その上にある[実行とデバッグ]ボタンをクリックするだけです(デバッグの構成については次回取り上げる予定です)。というわけで、これをクリックしてみましょう(このとき、エディタ領域ではやはりmain.pyファイルをアクティブにしておきます)。
すると、VS Codeの上部にデバッグ構成を選択するダイアログが表示されるので、ここでは[Python File]を選択してください。
[実行とデバッグ]ビューやステータスバーの表示が一瞬変わって、パネル領域には新しく「Python Debug Console」が開かれて、そこにプログラムを実行した結果が表示されます。
前回の[ターミナルでPythonファイルを実行]したときと同じ結果が出力されました。これだけだと、違いはよく分かりません。そこで今度はブレークポイント(プログラムの実行がそこまで進んだら、実行を中断する箇所)を設定してみましょう。
ここでは、main関数にある最初のprint関数呼び出しにブレークポイントを設定することにします。ブレークポイントを設定するには、エディタで設定したい行の左端をクリックします(行番号が表示されているのなら、その左側)。
キーボードからブレークポイントを設定するなら、設定したい行にカーソルを移動して[F9]キーを押します。なお、これらの操作に対応するコマンドパレットのコマンドは[デバッグ: ブレークポイントの切り替え](Debug: Toggle Breakpoint)です。上の画像にある通り、ブレークポイントを設定した行の左端には赤い丸でそのことが示されます。同時に、[実行とデバッグ]ビューの最下部には[ブレークポイント]セクションに今設定したブレークポイントが表示されるようになります。
その上にあるのは、プログラムのデバッグ実行時に発生した例外を捕捉するかどうかの指定です(ここではそのままにしておきます)。
設定したブレークポイントを解除するには、上と同じ操作(エディタの左端をクリックするか、[F9]キーを押すか、コマンドパレットで[デバッグ: ブレークポイントの切り替え]コマンドを実行するか)をします。また、プログラムに多数のブレークポイントを設定しているときには、[ブレークポイント]セクションで各ブレークポイントにあるチェックボックスを使って有効/無効を切り替えられます。
ブレークポイントが設定できたので、次ページではこのプログラムがどのように動くのかを実際に確認してみましょう。
Copyright© Digital Advantage Corp. All Rights Reserved.