「VSCodeでブレークポイントを設定したのに、デバッグが全然止まらない…」
「ブレークポイントがグレーアウトしてる…」
「デバッグ実行したら、そのまま最後まで走り切ってしまう…」
デバッグは、プログラムの問題を見つけるための重要な機能です。でも、ブレークポイントで止まってくれないと意味がないですよね。
この記事では、VSCodeでデバッグがブレークポイントで止まらない原因と、その解決方法を初心者の方にもわかりやすく解説します。
言語別の対処法も含めて、網羅的に説明していきますね。
デバッグがブレークポイントで止まらない主な原因

まず、なぜブレークポイントで止まらないのか、主な原因を見ていきましょう。
1. ファイルが保存されていない
最も基本的な原因です。
ファイルを編集してから保存していないと、古いコードがデバッグされてしまいます。
確認方法:
タブにファイル名の横に「●」や「✕」マークが付いていたら未保存です。
解決方法:
Ctrl + S(MacはCmd + S)でファイルを保存してから、もう一度デバッグを実行してください。
2. ファイルパスが一致していない
VSCodeは、設定ファイルに記載されたパスと、実際に実行されるコードのパスが一致しないと、ブレークポイントを認識できません。
特に、JavaScriptやTypeScriptなどで、ビルドやトランスパイルを行う場合によく起こります。
3. ソースコードとビルド済みコードが一致していない
コンパイルやビルドが必要な言語(C++、Java、TypeScriptなど)で、ソースコードを変更したのにビルドし直していない場合、古いコードがデバッグされます。
4. デバッグ設定ファイル(launch.json)が不適切
launch.jsonの設定が間違っていたり、必要な設定が抜けていると、デバッグが正しく動作しません。
5. ファイル名やパスに日本語が含まれている
意外と見落としがちですが、ファイル名やディレクトリ名に日本語(全角文字)が含まれていると、デバッガが正しくファイルを認識できないことがあります。
6. コードが最適化されている
最適化されたコードでは、関数がインライン化されたり、コードの順番が変わったりして、ブレークポイントが無視されることがあります。
共通の解決方法
言語に関係なく試せる基本的な解決方法を紹介します。
解決方法1:ファイルを保存してビルドし直す
手順:
- Ctrl + S(MacはCmd + S)でファイルを保存
- コンパイルやビルドが必要な言語の場合は、再ビルドする
- もう一度デバッグを開始
これだけで解決することも多いです。
解決方法2:VSCodeを再起動する
一時的な不具合の場合、VSCodeを再起動すると直ることがあります。
手順:
- VSCodeをすべて閉じる
- もう一度VSCodeを開く
- デバッグを試してみる
単純ですが、効果的な方法です。
解決方法3:ブレークポイントを再設定する
ブレークポイントが正しく認識されていない可能性があります。
手順:
- 既存のブレークポイントをすべて削除(行番号の赤い丸をクリック)
- もう一度、止めたい行にブレークポイントを設定
- デバッグを実行
解決方法4:「すべてのブレークポイントを再適用」を実行
デバッグ中にブレークポイントの認識がずれることがあります。
手順:
- デバッグを開始
- 左側のデバッグパネルにある「ブレークポイント」セクションを右クリック
- 「すべてのブレークポイントを再適用」を選択
これで、ブレークポイントが再認識されます。
解決方法5:ファイル名とディレクトリ名を英数字に変更
日本語のファイル名やディレクトリ名を使っている場合は、すべて英数字に変更しましょう。
ダメな例:
C:\Users\太郎\プログラム\テスト.py
良い例:
C:\Users\taro\program\test.py
ファイル名を変更したら、launch.jsonの設定も忘れずに更新してください。
解決方法6:デバッグ対象のコードに到達しているか確認
ブレークポイントを設定した行が、そもそも実行されていない可能性があります。
確認方法:
ブレークポイントを設定した行の前後に、以下のようなコードを追加してみましょう。
Pythonの場合:
print("ここを通過しました")
JavaScriptの場合:
console.log("ここを通過しました");
もし、このメッセージが出力されない場合は、そのコードに到達していないということです。条件分岐やループの条件を見直してください。
Python特有の解決方法
Pythonでデバッグがうまくいかない場合の対処法です。
問題1:「justMyCode」設定が原因
Pythonのデバッグでは、「justMyCode」という設定がデフォルトで有効になっています。この設定がオンだと、ライブラリ内部のコードではブレークポイントが無視されることがあります。
解決方法:
launch.jsonに以下を追加します。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
}
]
}
「justMyCode: false」を追加することで、ライブラリ内部のコードでも止まるようになります。
問題2:pytest-covが干渉している
pytest-covというテストカバレッジのモジュールを使っている場合、デバッガと干渉してブレークポイントが無視されます。
解決方法:
launch.jsonに以下の設定を追加します。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTEST_ADDOPTS": "--no-cov"
}
}
]
}
または、settings.jsonに以下を追加します。
{
"python.testing.pytestArgs": ["-vv", "-s", "--no-cov"]
}
これで、pytest実行時にカバレッジ測定が無効になり、デバッガが正常に動作します。
問題3:Python仮想環境が正しく認識されていない
仮想環境(venvやconda環境)を使っている場合、VSCodeが正しいインタープリタを認識していないことがあります。
解決方法:
手順1:インタープリタを選択
- Ctrl + Shift + P(MacはCmd + Shift + P)でコマンドパレットを開く
- 「Python: Select Interpreter」と入力して選択
- 使用している仮想環境のPythonインタープリタを選択
手順2:launch.jsonに明示的にパスを指定
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"pythonPath": "${workspaceFolder}/venv/bin/python"
}
]
}
仮想環境のPythonパスに合わせて、「pythonPath」を設定してください。
JavaScript/TypeScript特有の解決方法
JavaScriptやTypeScriptのデバッグで止まらない場合の対処法です。
問題1:webRootの設定が間違っている
Reactなど、フロントエンドのデバッグで、webRootの設定が間違っているとブレークポイントが認識されません。
解決方法:
launch.jsonの「webRoot」を確認します。
一般的な設定:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/src"
}
]
}
プロジェクトのソースコードがどこにあるかによって、「${workspaceFolder}」や「${workspaceFolder}/src」など、適切なパスを設定してください。
問題2:URLが一致していない
ブラウザでアクセスするURLと、launch.jsonに設定したURLが一致していないと、ブレークポイントが無視されます。
例:
launch.jsonに「http://localhost:3000」と書いてあるのに、ブラウザで「http://localhost:3000/index.html」にアクセスしていると、止まりません。
解決方法:
URLにワイルドカードを使います。
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:3000/*",
"webRoot": "${workspaceFolder}"
}
]
}
「*/」をURLの末尾に追加することで、どのページでもブレークポイントが有効になります。
問題3:Chromeのデバッグポートが開いていない
VSCodeとChromeを連携してデバッグする場合、Chromeがデバッグポートで起動されている必要があります。
解決方法:
launch.jsonに「runtimeArgs」を追加して、Chromeをデバッグモードで起動します。
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}",
"runtimeArgs": [
"--remote-debugging-port=9222"
]
}
]
}
これで、VSCodeからChromeへの接続が確立されます。
問題4:ソースマップが生成されていない
TypeScriptやバンドルツール(Webpack、Viteなど)を使っている場合、ソースマップが生成されていないとブレークポイントが認識されません。
解決方法:
ビルド設定でソースマップを有効にします。
TypeScriptの場合(tsconfig.json):
{
"compilerOptions": {
"sourceMap": true
}
}
Webpackの場合(webpack.config.js):
module.exports = {
devtool: 'source-map'
};
設定を変更したら、プロジェクトを再ビルドしてください。
Java特有の解決方法

Javaでブレークポイントが止まらない場合の対処法です。
問題1:JDKのパスが正しく設定されていない
JDKが正しくインストールされていないか、環境変数が設定されていないと、デバッグが動作しません。
解決方法:
手順1:JDKがインストールされているか確認
ターミナルで以下のコマンドを実行します。
java -version
javac -version
バージョン情報が表示されればOKです。表示されない場合は、JDKをインストールしてください。
手順2:環境変数を設定
WindowsならJAVA_HOMEを設定し、Pathに追加します。
手順3:VSCodeの設定を確認
settings.jsonに以下を追加します。
{
"java.home": "C:\\Program Files\\Java\\jdk-17"
}
JDKのインストールパスに合わせて変更してください。
問題2:デバッグ設定のクラスパスが間違っている
launch.jsonのクラスパスやメインクラスの指定が間違っていると、正しくデバッグできません。
解決方法:
launch.jsonを見直します。
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch) - Current File",
"request": "launch",
"mainClass": "${file}"
}
]
}
パッケージ構造に合わせて、「mainClass」を適切に設定してください。
C/C++特有の解決方法
C/C++でブレークポイントが止まらない場合の対処法です。
問題:デバッグ情報が含まれていない
コンパイル時にデバッグ情報(-gオプション)を付けていないと、デバッガが機能しません。
解決方法:
tasks.jsonのコンパイルオプションに「-g」を追加します。
{
"version": "2.0.0",
"tasks": [
{
"label": "C++ Build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-O0",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
-g: デバッグ情報を含める
-O0: 最適化を無効にする(これがないとブレークポイントで止まらないことがある)
この設定でビルドし直してから、デバッグを実行してください。
launch.jsonの基本的な作り方
launch.jsonがない、または壊れている場合の作り方を説明します。
launch.jsonの作成手順
手順1:デバッグビューを開く
画面左側の虫アイコン(デバッグアイコン)をクリックします。
手順2:「launch.jsonファイルを作成します」をクリック
デバッグビューの上部に表示されるリンクをクリックします。
手順3:デバッグ環境を選択
使用している言語を選択します(Python、Node.js、Chromeなど)。
手順4:自動生成されたファイルを確認
.vscodeフォルダ内にlaunch.jsonが作成されます。必要に応じて編集してください。
よくある質問
Q1. ブレークポイントが灰色(グレーアウト)になっている
原因:
ブレークポイントが「バインドされていない」状態です。つまり、デバッガがそのコードを認識できていません。
対策:
- ファイルを保存する
- ソースコードとビルド済みコードを一致させる
- launch.jsonのパス設定を見直す
- ファイル名やパスに日本語が含まれていないか確認
Q2. デバッグは開始するが、すぐに終了してしまう
原因:
プログラムが一瞬で実行完了してしまっています。
対策:
プログラムの最後に入力待ちを入れます。
Pythonの例:
input("Press Enter to exit...")
C++の例:
std::cin.get();
これで、プログラムが終了せずに待機してくれます。
Q3. 条件付きブレークポイントを設定したい
特定の条件のときだけ止めたい場合は、条件付きブレークポイントを使います。
設定方法:
- ブレークポイントを設定したい行番号を右クリック
- 「条件付きブレークポイント」を選択
- 条件を入力(例:「i == 5」や「name == “太郎”」)
これで、条件を満たしたときだけ停止します。
Q4. 外部ライブラリの中でもデバッグしたい
Pythonの場合:
launch.jsonに「justMyCode: false」を追加します。
JavaScriptの場合:
launch.jsonに以下を追加します。
{
"skipFiles": []
}
デフォルトでは、node_modules内のコードはスキップされますが、この設定で解除できます。
まとめ:デバッグが止まらないときの確認リスト
最後に、デバッグが止まらないときの確認リストをまとめます。
基本的な確認項目:
□ ファイルを保存したか
□ ビルドやコンパイルが必要な言語で、再ビルドしたか
□ ブレークポイントが実行されるコード行に設定されているか
□ ファイル名やディレクトリ名に日本語が含まれていないか
□ VSCodeを再起動してみたか
設定の確認項目:
□ launch.jsonが存在するか
□ launch.jsonのパス設定が正しいか
□ デバッグに必要な拡張機能がインストールされているか
□ 言語ごとの環境(JDK、Python、Node.jsなど)が正しくインストールされているか
言語別の確認項目:
Python:
□ 「justMyCode」がfalseになっているか
□ pytest-covを使っている場合、「–no-cov」を追加したか
□ 正しいPythonインタープリタが選択されているか
JavaScript/TypeScript:
□ ソースマップが生成されているか
□ webRootの設定が正しいか
□ URLとlaunch.jsonの設定が一致しているか
Java:
□ JDKが正しくインストールされているか
□ 環境変数が設定されているか
C/C++:
□ コンパイル時に「-g」オプションを付けているか
□ 最適化(-O2など)を無効にしているか
デバッグがうまくいかないときは、この記事を参考に、一つずつ確認してみてください。
デバッグ機能を使いこなせば、プログラムの問題を見つける時間が大幅に短縮されます。最初は設定が面倒に感じるかもしれませんが、一度設定してしまえば、その後の開発が驚くほど快適になりますよ!


コメント