6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonでprintデバッグから卒業する【VSCode・CursorでPythonのデバッグ】

Posted at

はじめに

CやC++においてVSCodeの拡張でデバックを行ったことがあるのですが、Pythonでも簡単に導入できたので記事にしました。

注意
VSCodeと書いていますが、実際にはCursorを使用しています。どちらでもほぼ同じ形で使用できると思います。

VSCodeのデバックを導入することで出来るようになること

  1. 全ての変数の値がわかる
  2. ブレークポイントを設定して、プログラムを途中で止めながら順番に確認する事ができる
  3. print文を書かなくて良くなる

導入

VSCodeの拡張機能をインストールします

image.png

画面左側の「launch.jsonファイルを作成します」をクリックすると、今開いているプロジェクトのルートに.vscodeディレクトリとlaunch.jsonが作成される。

launch.jsonに実行するpythonのパスを追加することが出来る。

"python": "path/to/python",

スクリーンショット 2024-05-29 20.09.39.png

デバックの実行

画面左側のメニューに「実行とデバック」という項目があるので選択する。実行とデバックをクリックするだけで実行は出来る。

スクリーンショット 2024-05-29 19.58.41.png

またはPythonファイルを開いた状態だと、画面右上に「▶」の実行ボタンが表示される。
「▽」をクリックし「Pythonファイルのデバック」をクリックすることでも実行可能
スクリーンショット 2024-05-29 20.03.09.png

または画面左側にこのように表示されている場合は「▶」を押すだけで実行できます。
image.png

ブレークポイント

下図のようにプログラムの行数が表示されている部分の左側をクリックすると「赤い◯」が表示されます。
これがブレークポイントです。この部分まで来たら処理を止めたり、次のブレークポイントまで一気に処理を進めたりすることが出来ます。

ブレークポイントがあるところで処理を止めて、その時の変数の値を確認するのが基本的な使い方です

スクリーンショット 2024-05-29 20.12.19.png

ブレークポイントを設定して実行すると以下のような表示になります。これはブレークポイントでプログラムが止まっていることを示しています。

スクリーンショット 2024-05-29 20.06.28.png

デバックの操作

デバックを実行すると画面上部にバーが表示されます。またカーソルを当てると機能が分かります。

スクリーンショット 2024-05-29 20.04.01.png

左から

  1. 6点マーク
    ここをクリックしてドラッグするとバーの位置を動かせる
  2. ▶:続行
    次のブレークポイントまでプログラムを実行
  3. ↷:ステップオーバー
    1行だけプログラムを実行(関数の場合、関数の中に入らない)
  4. ↓:ステップイン
    1行だけプログラムを実行(関数の場合、関数の中に入る)
  5. ↑:ステップアウト
    関数の中から抜け出す。
  6. ↺:再起動
    プログラムを再実行する
  7. □:停止
    プログラムの実行を停止する

画面の見方

画面左側のメニューで「実行とデバック」を選択すると下記のような表示がされています。

変数

現在定義されている変数の値が確認できます。
スクリーンショット 2024-05-29 20.08.54.png

ウォッチ式

式を自身で定義する。プログラムを順番に実行していく間に変数の値が変わることもあります。その変数が変わったのを監視して、その変数を用いた式を再評価します。

スクリーンショット 2024-05-29 20.08.14.png

コールスタック

関数がネスト、入れ子になっていくとメモリ上に順番が記憶されていきます。(ざっくりした説明です。詳しくはC言語やメモリに関して調べてください)
関数がどの順番で実行されているかが分かります。

スクリーンショット 2024-05-29 20.07.31.png

デバックコンソール

ターミナルを開くと、デバックコンソールという欄があります。
このターミナルに変数を入力するとその変数の値が返ってきます。配列やnumpy、index指定、等式や不等式も入力できます。

私は左側の変数一覧よりも、デバックコンソールで値を確認することが多いです

スクリーンショット 2024-05-29 20.11.01.png

注意点

使用するpythonの指定

プロジェクトのルートに.vscode/launch.jsonを作成し、使用するpythonのパスを指定します。

anacondaなどの仮想環境を用いている場合はwhich pythonとターミナルに入力して、現在使用している環境のpythonのパスを指定しましょう。

"python": "path/to/python",

スクリーンショット 2024-05-29 20.09.39.png

絶対パスで実行される

実行ボタンを押すと絶対パスで実行されるため、相対パスでのimportや、ファイル読み込みなどのパスには注意が必要です。

sys.path.append('..')のような記述がある場合は絶対パスに変更したり、適宜PYTHONPATHを追加するなどの対応を取ってください。

ここではパスに関する説明は省略します。また、実行するディレクトリの指定も可能かもしれませんが調査していません。

最後に

私もデバック機能の全てを使いこなせているわけではないのですが、処理を止めながら途中の変数の値を見られるようになるだけでも大分変わります!

私もついprint()デバックをしてしまうこともありますが、ぜひデバック機能も活用してみてください。

最後まで読んでいただきありがとうございました。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?