
2025.07.28
初心者にもわかる「VSCode」デバッグの使い方|ブレークポイント・launch.jsonまで解説!
はじめに
プログラミングを学習する際、最も重要なスキルの一つが「デバッグ」です。初心者の方は、コードがうまく動かない時に「どこが間違っているのか」を見つけるのに時間がかかってしまうことがあります。
そこで今回は、VSCode(Visual Studio Code)を使ったPythonデバッグの基本について、初心者の方にもわかりやすく解説します。デバッグ機能を活用することで、効率的にコードの問題を発見し、修正できるようになります。
Visual Studio Codeとは
Visual Studio CodeとはMicrosoft社が提供を行うコードエディターで、通称「VSCode」と呼ばれています。
VSCodeはオープンソースのソフトウェアで、誰でも無料で利用できます。多言語対応、OSを問わず使用可能、多彩な拡張機能といった特徴を持ち、多くの現役エンジニアから支持されています。日本語対応もしているため、初心者でも扱いやすいエディターです。
VSCodeは以下のサイトからダウンロードでき、Mac、Windows、Linuxに対応しています。
Visual Studio Code 公式サイト
https://code.visualstudio.com/download
導入方法や基本操作については、以下の記事で詳しく解説しているので、ぜひ参考にしてください。
初心者にもわかる「VSCode」の導入から基本操作まで解説
https://envader.plus/article/118
デバッグとは何か?
デバッグ(Debug)とは、プログラムの中にある「バグ(不具合)」を発見し、修正する作業のことです。英語の「Debug」は「虫(Bug)を取り除く」という意味で、プログラムの誤動作を虫に例えたことから生まれた言葉です。
Pythonでのデバッグ方法といえば、print()
文を挿入してプログラムの実行状況を確認する方が多いかと思います。しかし、コード量が増えたり、状況を確認後にprint文を消し忘れたりと、デバッグ方法としては非効率的です。そんな時は、VSCodeのデバッグ機能がおすすめです。
VSCodeでできるデバッグとは?
VSCodeのデバッグ機能は、プログラムの実行を制御し、コードの動作を詳細に調べることができる強力なツールです。Python開発においては、拡張機能の導入だけで本格的なデバッグ環境をすぐに構築できます。
VSCodeのデバッグ機能では、次のような操作が可能です。
- 実行の一時停止と再開:特定の場所でプログラムを止めて、状況を確認
- 1行ずつの実行:コードを1行ずつ実行して、動作を詳しく追跡
- 変数の値の確認:実行中の変数の中身をリアルタイムで表示
- 式の評価:任意の式を実行して結果を確認
- 関数の呼び出し履歴:どの関数からどの関数が呼ばれたかを追跡
これらの機能により、従来の「print
文を使ったデバッグ」から大きく進歩した、効率的で直感的なデバッグが可能になります。
VSCodeのデバッグに必要な準備
VSCodeでPythonデバッグを行うには、以下の手順でPython拡張機能のインストールをします。
拡張機能のインストール
-
拡張機能のサイドバーを表示
サイドメニューの拡張機能を開きます。
-
拡張機能を検索
フォームに「Python」と入力し、拡張機能を検索します。
-
拡張機能のインストール
「Install」ボタンをクリックして拡張機能をインストールします。
この拡張機能には、以下の機能が含まれています。
- Pythonコードの実行とデバッグ
- IntelliSense(コード補完)
- リンティング(構文チェック)
- コードフォーマット
- Jupyter Notebookのサポート
拡張機能のインストール方法については、以下の記事でも詳しく解説しています。
初心者にもわかる「VSCode」おすすめ拡張機能で効率UP!
https://envader.plus/article/526
拡張機能のインストール時など、VSCodeではショートカットを使用すると効率UPします。ショートカットの基本は以下の記事で解説していますので、あわせてご覧ください。
初心者にもわかる「VSCode」おすすめショートカットで効率UP!
https://envader.plus/article/527
デバッグ機能画面の各ツールについて
デバッグ機能画面の各ツールは以下の構成です。
- デバッグ実行ボタン:デバッグを開始するためのボタン
- デバッグサイドバー
- 変数:実行中の変数の値を表示
- ウォッチ式:監視したい変数や式を登録
- コールスタック:関数の呼び出し履歴を表示
- ブレークポイント:設定したブレークポイントの一覧
- ツールバー:デバッグの実行や停止、ステップ実行などを操作
- デバッグコンソール:デバッグの実行結果を表示
VSCodeのデバッグ機能の使い方
では実際にVSCodeのデバッグ機能を使ってみましょう。
print文ありでデバッグ
このセクションでは以下の簡単なPythonコードを準備し、デバッグ機能を実行します。
def greet(name):
message = f"こんにちは、{name}さん!"
return message
names = ["アリス", "ボブ", "フレッド", "リサ"]
for n in names:
greeting = greet(n)
print(greeting)
コードファイルが準備できた後、以下の手順でデバッグを実行します。
-
サイドバーの表示
サイドバーの「実行とデバッグ」アイコンをクリックして、サイドバーを表示します。
-
デバッグの実行
実行とデバッグボタンをクリックし、デバッグを実行します。
※デバッグの実行は
F5
キーまたは、上部の「▶実行とデバッグ」ボタンをクリックでも実行可能です。 -
デバッガーの指定
デバッガーの選択肢が表示されるので、一番上の「Python Debugger」を選択します。
-
デバッグ構成を指定
デバッグ構成の選択肢が表示されるので、一番上の「Pythonファイル」を選択します。
-
デバッグ実行結果の表示
ターミナルに指定したPythonファイルのコード実行結果が表示されます。
ここまでがVSCodeでのデバッグの基本の流れです。今回は結果がわかりやすいようにコード内に print
文を挿入しています。次のセクションで紹介する「ログポイント機能」を使えば、print
がない状態でもデバッグは可能です。
補足:launch.json
はいつ使う?
今回のように、Pythonファイルをそのままデバッグするだけなら launch.json
の設定は不要です。複雑な構成で引数を渡したいときや、複数ファイルを切り替えるような本格的な開発では launch.json
ファイルを使うと便利です。
本記事の最後にlaunch.json
ファイルの設定方法も紹介しますので、まずは基本の使い方に慣れてみましょう。
ログポイントでデバッグ:print 文なしで出力確認
ログポイントはブレークポイントの一種で、デバッガーに割り込まずにデバッグコンソールにメッセージを記録します。※ブレークポイントについては後述します。
ログポイント使用すると、ログ出力のためのコード記述をすることなくデバッグが可能になります。
ログポイントで print 文を使わないログ出力
-
print 文の削除
先ほどのコード例から、
print
文を削除します。def greet(name): message = f"こんにちは、{name}さん!" return message names = ["アリス", "ボブ", "フレッド", "リサ"] for n in names: greeting = greet(n) # ← この行にログポイントを設定
この状態でコードを実行しても、コンソール画面には何も表示されません。しかし、ログポイントを設定すれば、処理が止まらずに変数の値をログとして出力できます。
-
ログポイントの追加
greeting = greet(n)
の行番号の左側(ガター)を右クリックして、「ログポイントを追加」を選びます。表示された入力欄に、次のコードを入力して Enter を押します。
メッセージ: {greet(n)}
-
ログポイントの設定確認
以下のように赤いひし形マークが追加されていれば、設定完了です。
-
デバッグの実行
F5
キーを押すか、上部の「▶実行とデバッグ」ボタンをクリックして、デバッグを開始します。 -
デバッグコンソールを確認
デバッグ実行後に、次のようなログ出力が表示されます。
print
文を使わずにログを確認できるのが、ログポイントのメリットです。
ログポイントはプログラムを停止せずにログだけ出力できるため、繰り返し処理やリアルタイム処理でも中断なく値を確認でき、開発効率が大きく上がります。
ブレークポイントとは
ブレークポイントは、プログラムの実行を一時停止させる目印のことです。コードの特定の行で実行を停止し、その時点での出力内容を確認できます。
今回は以下のコード例を使いデバッグを行います。
def greet(name):
if name == "アリス":
message = f"{name}さん、ようこそ!管理者権限でログインしました。"
elif name == "ボブ":
message = f"{name}さん、こんにちは!"
else:
message = f"{name}さん、一般ユーザーとしてログインしました。"
return message
users = ["アリス", "ボブ", "フレッド", "リサ"]
for user in users:
greeting = greet(user)
print(greeting)
ブレークポイントの追加
ブレークポイントの追加は、以下の手順で設定します。
-
ブレークポイントの追加
停止させたい行番号の左側(ガター)をクリックします。たとえば、
greeting = greet(user)
の行をクリックします。※ブレークポイントは設定したい行で
F9
を入力し、追加することも可能です。 -
ブレークポイントの設定完了
赤い丸が表示されればブレークポイントの設定完了です。
※同じ場所をもう一度クリックすると、ブレークポイントを削除できます。
ブレークポイントを追加できたところで、次のセクションでは「ステップ実行・変数機能・条件付きブレークポイント機能」を紹介します。
ステップ実行
ステップ実行(Step Execution) とは、プログラムを1行ずつ順番に実行しながら、処理の流れを追いかける操作のことです。
これにより、「次にどの行が実行されるか」や「変数の中身がどう変化するか」を1行ずつ確認できます。
実行手順
前のセクションで追加したブレークポイントを使用し、以下の手順を実行します。
-
デバッグの実行
F5
キーまたは「▶ 実行とデバッグ」ボタンでデバッグを開始します。 -
プログラムの一時停止を確認
プログラムがブレークポイントで一時停止します。
-
ステップ実行を操作
画面上部のツールバーで、以下のボタンを使用します。
次に、関数の実行時にどこまで中を確認するかに応じて使い分ける3つのステップ実行操作を紹介します
ステップイン
関数の中に「入って」その処理を1行ずつ確認できる操作です。今回の例では、greet()
関数の中に入って、if
や message
の処理をすべて1行ずつ確認できます。
ステップアウト
ステップアウトは、今いる関数の残りの処理をまとめて実行し、関数の外へ戻る操作です。
関数の中にステップインして処理を追っている途中で、「関数の結果のみを確認すればOK」と判断したタイミングで使います。
たとえば、「アリス」の条件で関数の流れを一通り確認できたら、他のユーザーでは関数に入らず、結果だけを確認したいという場面があります。このようなときに、ステップアウトを使えばスムーズに関数の結果のみを確認できます。
ステップオーバー
関数をまとめて1ステップで実行し、関数の中には入らず次の処理に進む操作です。
たとえば、関数の動作はすでに確認済みで、すべての条件の結果だけを追いたいといった場面で使います。
ステップ実行では、コードの流れや変数の状態を詳しく確認することが可能です。初心者の方でも、一行ずつ丁寧に動作を追いながら、安心してデバッグ作業を進められるようになります。
変数の確認(Hover・変数ビュー・ウォッチ機能)
VSCodeのデバッグ中に変数の値を確認する方法として、Hover(ホバー表示)・変数ビュー(Variables)・ウォッチ機能(Watch)の3つがあります。
これらを活用すれば、print
文を使わずにリアルタイムで変数の状態を把握でき、効率的なデバッグが行えます。
1. Hover(ホバー表示)
デバッグ中に、変数にマウスカーソルを当てるだけで現在の値を確認できます。たとえば name
や greeting
にマウスを乗せると、ポップアップで以下のように表示されます。
2. 変数ビュー(Variables)
VSCodeのデバッグ中、デバッグサイドバーの「変数」ビューでは、現在の処理中の関数やスクリプト全体で使われている変数の値を一覧で確認できます。
-
Locals(ローカル)
今まさに実行されている関数や処理の中で使われている変数を一覧表示します。
たとえば
user
、users
、greeting
などが表示され、各変数の現在の値を確認できます。 -
Globals(グローバル)
プログラム全体(関数の外)で定義された変数を表示します。スクリプトの先頭で定義された変数などがここに表示されることがあります。
3. ウォッチ機能(Watch)
ウォッチ機能では、追跡したい変数だけを登録して変化を確認できます。
設定手順
-
式の追加
デバッグサイドバーの「ウォッチ」を開き、「式の追加」を選択します。
-
式の登録
登録フォームに
user
と入力し、 Enter を押します。 -
式の登録を確認
以下のように表示されていれば、式の登録は完了しています。
-
デバッグを実行
ステップオーバーを使って1行ずつコードを実行していくと、ユーザー名(
user
)の値が次々と変化していく様子を確認できます。
「ホバー、変数ビュー、ウォッチ機能」を使うことで、コードに print()
を書かなくても、必要な変数の状態をリアルタイムで確認できます。視覚的に確認しながらデバッグを進められるため、作業の効率と精度がさらに高まります。
条件付きブレークポイント
条件付きブレークポイントとは、特定の条件を満たしたときにだけプログラムを一時停止させる機能です。毎回のループで止まらず、必要なタイミングだけ停止できるため、効率よくデバッグが行えます。
設定手順
-
ブレークポイントの編集を選択
greeting = greet(user)
の行番号部分(ガター)を右クリックし、「ブレークポイントを編集」を選択します。 -
条件式を入力
一時停止させたい条件を入力します。たとえば「
user == "ボブ"
」と入力して Enter を押します。 -
デバッグを実行
デバッグを開始すると、設定した条件(この場合は
user
が"ボブ"
)を満たした時点で、プログラムが一時停止します。※ 条件を設定しない場合は、最初のループ(例:
user == "アリス"
)でブレークが発生します。==
のほか、!=
(等しくない)、in
(含まれる)など、さまざまなPythonの条件式が使えます。
条件付きブレークポイントを活用することで、必要な場面だけで効率よくプログラムの挙動を確認できます。ピンポイントで問題を特定したいときに非常に便利な機能です。
launch.jsonとは?Pythonデバッグ編
launch.json
は、VSCodeでPythonのデバッグ実行を細かく設定できるファイルです。
「どのファイルを実行するか」「引数をどう渡すか」「出力はどこに表示するか」などを事前に定義することで、毎回同じ手順でデバッグを始められるようになります。特にプロジェクトが大きくなるほど、この設定が役立ちます。
launch.jsonの設定方法
VSCodeで launch.json
を作成する手順は以下のとおりです。
-
サイドバーの表示
サイドバーの「実行とデバッグ」アイコンをクリックして、サイドバーを表示します。
-
launch.jsonを作成
表示されたボタンから「launch.jsonファイルを作成」を選択します。
-
デバッグ構成を選択
「Pythonファイル」を選択すると、Python向けの基本設定が自動生成されます。
-
作成内容を確認
.vscode/launch.json
がワークスペース(プロジェクト)内に生成され、プロジェクト固有の設定として保存されます。
launch.jsonの設定内容について
以下は、現在開いている Python ファイルをそのままデバッグ実行する最小構成の例です。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python デバッガー: 現在のファイル",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
それぞれの項目の意味は次のとおりです。
項目 | 説明 |
---|---|
name | 実行メニューに表示される構成名。用途に応じて自由に変更可 |
type | 使用するデバッガーの種類(Pythonではdebugpy ) |
request | 実行方式。launch はプログラムを起動して実行、attach は既存プロセスに接続 |
program | 実行対象の Python ファイル。${file} は「現在エディタで開いているファイル」を指す変数 |
console | 標準入出力の表示場所。integratedTerminal は VSCode 内のターミナル |
引数付きのlaunch.jsonとは
引数付きの launch.json
は、Pythonスクリプトにコマンドライン引数をあらかじめ設定して、デバッグ実行できる構成ファイルです。
ターミナルで毎回引数を手入力する必要がなく、ワンクリックで特定の条件を再現しながらデバッグが行えるため、条件分岐の検証や引数を使ったテストの効率が大きく向上します。
引数付きlaunch.jsonの設定方法
前のセクションで作成した launch.json
を開き、引数対応の構成を追加します。
-
構成の追加を選択
画面右下の「構成の追加」ボタンをクリックします。
-
デバッグ構成を選択
「引数を含む Python ファイル」を選択します。
-
設定の追加を確認
以下のような内容に
launch.json
が変更されます。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python デバッガー: 引数を含む現在のファイル",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": "${command:pickArgs}"
},
{
"name": "Python デバッガー: 現在のファイル",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
上記のうち、次の1行がポイントです。
"args": "${command:pickArgs}"
この設定を使うと、デバッグ実行時に毎回、引数をその場で入力できるようになります。
引数付きlaunch.jsonの活用例
引数付き launch.json
を活用できるのは、コマンドライン引数を受け取るように設計されたPythonスクリプトです。たとえば、以下のようなコードです。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", help="ユーザー名を入力")
args = parser.parse_args()
print(f"こんにちは、{args.name}さん!")
このスクリプトに対し、固定の引数を設定したい場合は、args
部分を配列形式で以下のように記述します。
"args": ["--name", "アリス"]
デバッグサイドバーの「Python デバッガー: 引数を含む現在のファイル」を選択し、デバッグを実行します。
以下のような出力結果が得られます。
こんにちは、アリスさん!
このように、入力内容によって挙動が変わるスクリプトで launch.json
にあらかじめ設定を登録しておくと、手間なくデバッグを始められ、作業効率が大幅にアップします。
この記事で学んだこと
この記事では、Visual Studio Code(VSCode)でPythonコードをデバッグする際に役立つ基本機能や設定ファイルについて解説しました。
ステップ実行や変数の確認、条件付きブレークポイントといった基本機能を使うことで、バグの原因をピンポイントで見つけやすくなります。
さらに、launch.json
を使えば、デバッグ実行時の条件や引数をあらかじめ設定できるため、手間を減らして効率的な開発が可能になります。
VSCodeのデバッグ機能は、初心者でも扱いやすく、使いこなせば作業の正確さとスピードが向上します。今回の内容を活用しながら、少しずつ自分のプロジェクトに取り入れていきましょう。
参考資料
以下のリンクは、この記事で解説した手順や概念に関連する参考資料です。より詳しく学びたい方は、ぜひご覧ください。
-
Visual Studio Code 公式サイト
-
Debug code with Visual Studio Code
-
Python debugging in VS Code
-
Visual Studio Code debug configuration
https://code.visualstudio.com/docs/debugtest/debugging-configuration
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
