Visual Studio Code(VS Code)でC/C++をデバッグしようとしたときに、「Configuration “C/C++: gcc.exe build and debug active file” is missing in “launch.json”」と出てF5が失敗する原因の多くは、launch.jsonに“その名前のデバッグ構成が存在しない(または名前が一致していない)ことです。この記事では、Windows環境を中心に、launch.json / tasks.json を正しく作ってエラーを確実に解消する手順をまとめます。
このエラーが意味していること
エラーメッセージをそのまま分解すると、VS Codeは「C/C++: gcc.exe build and debug active file」という名前のデバッグ構成を探しています。しかし、あなたのlaunch.json の configurations の中に、その name が見つからないため、起動できずに止まっています。
| VS Codeがやろうとしていること | 失敗している理由 | 解決の方向性 |
|---|---|---|
| launch.json の configurations から「指定された名前」の構成を選んでデバッグ開始 | launch.json が未作成 / nameが違う / 構成が削除された / フォルダを開いていない | launch.json に name を一致させて作る(必要なら tasks.json も作る) |
つまり、原因は「難しいデバッガーの不具合」ではなく、設定ファイルの“名前の一致”問題であるケースがほとんどです。
最初に確認する前提条件(gcc と gdb が動くか)
launch.json を正しく書いても、そもそも環境に gcc(コンパイラ)とgdb(デバッガ)が無い/PATHが通っていないとデバッグは始まりません。まずはターミナル(PowerShell / コマンドプロンプト)で確認します。
gcc --version
gdb --version
Windowsでよくある構成は次のいずれかです。
| 方式 | 特徴 | チェックのコツ |
|---|---|---|
| MinGW-w64 | シンプルにWindows上でgcc/gdbを使う | where gcc / where gdb で実体パスを確認 |
| MSYS2 | パッケージ管理が楽で更新もしやすい | VS CodeはWindows側なので、gdb.exe のフルパスが重要 |
| WSL(Ubuntuなど) | Linux環境でビルド・デバッグ(パスがLinux形式) | Remote-WSL利用時は /usr/bin/gdb など |
もし 「コマンドが見つかりません」 になるなら、インストールまたはPATHが未設定です。ここを直さない限り、launch.json を整えても先に進めません。
VS Codeに必要な拡張機能(C/C++)
デバッグ構成「C/C++: gcc.exe build and debug active file」は、基本的に Microsoft の C/C++ 拡張機能(通称 cpptools)を前提にしています。
- 拡張機能ビューで 「C/C++(Microsoft)」 をインストール
- 既に入っている場合は、一度 無効化→有効化、または再起動で認識が戻ることがあります
拡張機能が無い/壊れていると、そもそもテンプレート生成やデバッグタイプ(cppdbg)が正しく動きません。
launch.json を正しく作る
もっとも確実なのは、VS Code のUIから生成して、その後に内容を調整する方法です。
- 対象のフォルダー(プロジェクト)を開く(重要:ファイル単体ではなくフォルダー)
- 左の「実行とデバッグ」(虫+再生アイコン)を開く
- 「launch.json ファイルを作成」→「C++ (GDB/LLDB)」を選ぶ
- 候補に「C/C++: gcc.exe build and debug active file」が出たらそれを選ぶ
ただし、環境によっては候補が出なかったり、別名(g++.exe など)で生成されたりします。その場合は、エラーに出ている name と完全一致する構成を手動で用意すればOKです。
コピペで作れる launch.json(Windows / gcc + gdb)
ワークスペース直下に .vscode フォルダーを作り、その中に launch.json を作成して以下を入れます。
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++: gcc.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "C/C++: gcc.exe build active file",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
最重要ポイントは次の2つです。
- name がエラーメッセージの文字列と完全一致していること(1文字でも違うと同じエラーになります)
- miDebuggerPath は自分のPCにある gdb.exe の実パスに直すこと(例のままでは動きません)
gdb.exe の場所が分からない場合は、Windowsなら次で目安を取れます。
where gdb
where gcc
出てきたパスを、launch.json の miDebuggerPath にそのまま入れてください(バックスラッシュは JSON なので \\ にします)。
launch.json の項目をどこまで直せばいいか
よく調整が必要になる項目を表にまとめます。
| 項目 | 役割 | ここを間違えると起きやすい症状 | 調整のコツ |
|---|---|---|---|
name | デバッグ構成の識別名 | 今回の「missing in launch.json」 | エラーに出ている名前と完全一致 |
program | デバッグする実行ファイル | 起動できない / ファイルが見つからない | ビルド成果物の場所に合わせる(buildフォルダ出力ならそこへ) |
miDebuggerPath | gdb.exe の場所 | gdb が起動できない / MIEngineエラー | フルパス指定が確実(PATH依存を減らす) |
preLaunchTask | デバッグ前に実行するビルドタスク | タスクが見つからない / ビルドされない | tasks.json の label と完全一致 |
cwd | 実行時の作業フォルダ | 相対パスで読み込むファイルが見つからない | 基本は ${workspaceFolder} でOK |
tasks.json を用意する(preLaunchTask の受け皿)
launch.json で preLaunchTask を指定した場合、同じ名前のビルドタスクが tasks.json に必要です。これが無いと、F5で「タスクが見つからない」系のエラーに派生します。
UIから作るなら次の手順が確実です。
- VS Code メニュー「ターミナル」→「既定のビルド タスクの構成」
- 候補から「C/C++: gcc.exe build active file」を選ぶ
.vscode/tasks.jsonが生成される
コピペで作れる tasks.json(アクティブファイルをgccでビルド)
自動生成がうまくいかない場合は、.vscode/tasks.json を手で作って以下を入れてください。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Build active file with gcc"
}
]
}
ここでも重要なのは、次の一致です。
- launch.json の
preLaunchTask:C/C++: gcc.exe build active file - tasks.json の
label:C/C++: gcc.exe build active file
スペース、記号、大小文字の違いも含めて完全一致させてください。
C++(.cpp)を扱うなら g++ のタスクが安全
.cpp を gcc でコンパイルすると、標準ライブラリのリンクでハマることがあります(環境次第で通ることもありますが、安定しません)。C++をメインにするなら g++ に切り替えるのが無難です。
その場合は tasks.json をこうします(label を変えるなら、launch.json の preLaunchTask も同名に変更)。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": { "cwd": "${fileDirname}" },
"problemMatcher": ["$gcc"],
"group": { "kind": "build", "isDefault": true }
}
]
}
そして launch.json 側の name も g++ に合わせると、混乱が減ります。ただし今回のエラーを最短で消すなら、まずはエラー文に出ている name を一致させるのが優先です。
F5でデバッグを開始する手順
- デバッグしたい
.c/.cppファイルを開く - 行番号の左をクリックしてブレークポイントを置く
- 「実行とデバッグ」画面上部の構成ドロップダウンで、C/C++: gcc.exe build and debug active file を選ぶ
- F5 を押す(ビルド→起動→停止が流れる)
ここで、起動時にターミナルへコンパイルログが出て、成功後にデバッグが始まればOKです。
まだ直らない場合に見るべきチェックリスト
「手順通りに作ったのにF5が失敗する」場合、原因はだいたい次のどれかに収束します。上から順に潰すと早いです。
name が一致していない
- launch.json の
configurations[].nameが C/C++: gcc.exe build and debug active file になっているか - ダブルクォート内のスペースや記号も含めて一致しているか
この一致が崩れると、まさに今回のエラーが出ます。
preLaunchTask と label が一致していない
タスク名の不一致は非常に多い落とし穴です。次が一致しているか必ず確認してください。
- launch.json の
preLaunchTask - tasks.json の
label
gdb のパスが違う(または起動できない)
デバッグコンソールに次のような雰囲気の文言が出ていたら、gdb の場所・実行権・整合性が怪しいです。
- miDebuggerPath が無効
- gdb を起動できない
- Cannot find … gdb.exe
対策としては、次が効果的です。
where gdbで見つかったパスをmiDebuggerPathに入れる- gcc と gdb を同じツールチェーンで揃える(MinGWのgccなのに別系統のgdb、などを避ける)
- 32bit/64bitが極端に噛み合っていない場合は、ツールチェーンを統一する
program(実行ファイル)が期待する場所に無い
たとえば tasks.json で出力先を変えているのに、launch.json は「ファイルと同じ場所に exe がある前提」になっている、というズレです。
例:ビルド結果を build フォルダに出すなら、launch.json の program も合わせます。
"program": "${workspaceFolder}\\build\\app.exe"
そして tasks.json の -o も同じ場所へ。
"-o",
"${workspaceFolder}\\build\\app.exe"
フォルダーではなく「単体ファイル」を開いている
VS Codeは、ワークスペース(フォルダー)を開いていないと .vscode を正しく扱えず、設定ファイルが意図した場所に作られないことがあります。
- エクスプローラーにプロジェクトのフォルダー構造が表示されているか
.vscode/launch.jsonと.vscode/tasks.jsonがそのフォルダー配下にあるか
「C/C++をビルド」と「C/C++をデバッグ」を混同している
F5はデバッグ起動ですが、その前に preLaunchTask(ビルド)が走ります。ビルドが失敗していれば当然デバッグも開始できません。F5を押した直後にターミナルを見て、コンパイルエラーが出ていないかを確認してください。
複数ファイルのプロジェクトで起きやすい落とし穴
「build active file」は開いている1ファイルだけをビルドする想定です。プロジェクトが複数の .c / .cpp を持つ場合、リンクに必要な他ファイルが含まれず、ビルドが失敗しやすくなります。
複数ファイルなら、tasks.json を「全ファイルをまとめてビルドする」形に変えるのが王道です。例として、src配下の2ファイルをまとめるケースを示します。
{
"version": "2.0.0",
"tasks": [
{
"label": "build: app",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${workspaceFolder}\\src\\main.cpp",
"${workspaceFolder}\\src\\util.cpp",
"-o",
"${workspaceFolder}\\build\\app.exe"
],
"options": { "cwd": "${workspaceFolder}" },
"problemMatcher": ["$gcc"],
"group": { "kind": "build", "isDefault": true }
}
]
}
これに合わせて launch.json は次のようにします。
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug: app",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\build\\app.exe",
"cwd": "${workspaceFolder}",
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "build: app",
"stopAtEntry": false,
"externalConsole": false
}
]
}
「アクティブファイル」方式から一段進めるだけで、プロジェクトとしての安定度が一気に上がります。
WSLやリモート環境での注意点
Remote-WSL などで Linux 側の gcc/gdb を使う場合、パスやコマンドがWindows前提のままだと動きません。典型的には次の差が出ます。
| 項目 | Windows(例) | WSL/Linux(例) |
|---|---|---|
| gdb の場所 | C:\\...\\gdb.exe | /usr/bin/gdb |
| 実行ファイル | app.exe | app(拡張子なしが多い) |
| パス区切り | \\ | / |
WSL向けの最小例(イメージ)は次の通りです。
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug (WSL): active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"cwd": "${workspaceFolder}",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"preLaunchTask": "build (WSL): active file"
}
]
}
Remote-WSL を使う場合は「VS CodeのウィンドウがWSL側に接続されているか」も重要です。Windows側のウィンドウでLinuxパスを指定しても噛み合いません。
デバッグが動いた後に快適にする小技
エラーが消えてデバッグが動き始めたら、次の設定を入れておくと実務で楽になります。
引数を渡す
"args": ["--input", "sample.txt"]
環境変数を設定する
"environment": [
{ "name": "APP_ENV", "value": "dev" }
]
コンソール表示を切り替える
標準入力を使うプログラムなら、統合ターミナルで動かすとトラブルが減ります。
"externalConsole": false
挙動が合わない場合は true にして外部コンソール起動を試すのも手です(環境によっては外部の方が入力しやすい場合があります)。
よくある症状別の早見表
| 症状 | 原因の候補 | 最短の対処 |
|---|---|---|
| Configuration “…” is missing in launch.json | launch.json にその name が無い | name を完全一致で追加する |
| タスクが見つからない | preLaunchTask と tasks.json の label が違う | 文字列を完全一致させる |
| gdb が起動できない | miDebuggerPath が誤り / PATH未設定 | where gdb で実パスを入れる |
| 起動ファイルが見つからない | program が成果物の場所とズレている | ビルド出力先に合わせて program を修正 |
| 複数ファイルでリンクエラー | active file 方式で他ファイルが未リンク | プロジェクト全体をビルドするタスクに変更 |
まとめ:最優先は「名前の一致」と「ビルドとデバッグの接続」
「Configuration “C/C++: gcc.exe build and debug active file” is missing in “launch.json”」は、VS Code が探しているデバッグ構成名がlaunch.jsonに存在しないことを示す、非常にストレートなエラーです。次の3点を押さえるだけで、ほとんどのケースは解消します。
- launch.json の name をエラー文と完全一致させる
- preLaunchTask と tasks.json の label を完全一致させる
- gcc/gdb の導入とパス(特に miDebuggerPath)を現環境に合わせる
一度正しく動けば、以降は program の出力先を整理したり、複数ファイル対応のビルドへ移行したりして、VS Code を快適なC/C++開発環境に育てていけます。

コメント