Надо больше конкретики — какой именно текст в Output вы видите, какая ОС (Windows / WSL / Linux / macOS), какой компилятор (MinGW / MSVC / clang / g++ из MSYS2), как вы запускаете (Run Code / F5 / терминал), есть ли у вас launch.json / tasks.json и какие там строки. Пока этого нет — ниже общий чек‑лист и самые частые причины + готовые решения и рабочие примеры конфигураций. Пройдитесь по ним — очень большая вероятность, что одна из рекомендаций решит проблему. Если не поможет, вставьте точный вывод из Output и ваш launch.json / tasks.json — разберёмся детально.
1) Быстрая проверка среды (выполните в терминале)
- Проверить наличие компилятора:
- Windows: where g++ или where clang или where cl
- Linux/macOS: which g++ or which clang
- Версии:
- g++ --version
- gdb --version (если используете gdb)
- Попробуйте вручную скомпилировать и запустить простой файл:
- g++ hello.cpp -o hello.exe (Windows) или g++ hello.cpp -o hello (Linux/macOS)
- ./hello или .\hello.exe
Если это не работает — проблема в установке компилятора / PATH.
2) Типичные сообщения и их причины (и как исправить)
- "g++ is not recognized" / "command not found": компилятор не в PATH. Решение: добавить папку bin от MinGW/MSYS2/MinGW-w64 в PATH или установить компилятор (MSYS2, MinGW-w64 или Visual Studio Build Tools).
- "The program cannot be started/Файл не найден" (при запуске из VS Code): launch.json указал неправильный путь в поле "program". Проверьте, что путь совпадает с местом, где генерируется .exe (обычно ${fileDirname}\\${fileBasenameNoExtension}.exe).
- "Cannot start debugging. GDB failed to start" / "The debugger process has terminated unexpectedly": gdb не установлен или несовместимая версия (32/64‑бит несоответствие между g++ и gdb). Установите gdb той же архитектуры, что компилятор, и укажите miDebuggerPath в launch.json.
- "Access denied" или antivirus блокирует .exe: попробуйте временно отключить защиту или добавить исключение, проверьте права файла.
- "Permission denied" на Linux/macOS: сделайте chmod +x ./a.out.
- "cl.exe not found" (если вы ожидаете MSVC): нужно установить Visual Studio / Build Tools и использовать Developer Command Prompt либо настроить environment (vcvarsall.bat) перед сборкой.
- Код компилируется, но консоль быстро закрывается: это не ошибка — программа завершилась. Запустите из интегрированного терминала или добавьте std::cin.get(); чтобы увидеть вывод, либо в launch.json установите "externalConsole": true или используйте отладчик (F5), чтобы увидеть вывод.
3) Проверка конфигураций VS Code
- Убедитесь, что установлены расширения:
- C/C++ (Microsoft) — для подсветки и отладки
- (опционально) Code Runner — если вы им пользуетесь для быстрого запуска
- Пример tasks.json (сборка g++):
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"group": { "kind": "build", "isDefault": true }
}
]
}
- Пример launch.json для gdb (Windows, MinGW):
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe" // или путь к вашему gdb
}
]
}
- Пример launch.json для MSVC (Windows):
{
"name": "C++ (Windows)",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"cwd": "${fileDirname}",
"stopAtEntry": false,
"args": []
}
Убедитесь, что "program" действительно существует (после сборки).
4) Если сборка проходит в терминале, но не в VS Code
- Сравните команду сборки, которая выполняется в терминале, и ту, что указана в tasks.json. Может отличаться рабочая директория или имя выходного файла.
- Убедитесь, что preLaunchTask в launch.json ссылается на правильную задачу сборки.
5) Если отладчик падает или не запускается
- Укажите miDebuggerPath к реальному gdb.exe (Windows).
- Проверьте архитектуру (x86 vs x64) — mingw-w64/gdb должны совпадать.
- На macOS: используйте lldb (MIMode: lldb), установите разрешения для lldb (security settings — разрешить lldb в System Preferences / Security & Privacy).
- Убедитесь, что версия расширения C/C++ актуальна.
6) Полезные дополнительные команды и советы
- Проверить PATH (Windows): echo %PATH% или в PowerShell: $env:Path
- Проверить где g++: where g++
- Если используете MSYS2 — предпочтительнее установить g++ через pacman и использовать путь C:\msys64\mingw64\bin
- Если используете WSL — запускайте и отлаживайте внутри WSL или используйте Remote - WSL extension
- Посмотрите Output -> "C/C++" и Debug Console — там часто есть точная причина
7) Частые грабли и быстрые исправления
- Установить MSYS2 + mingw-w64 и положить mingw-w64/bin в PATH (заменяет старые MinGW).
- Для MSVC — установить Visual Studio Build Tools и использовать type "cppvsdbg".
- Если VS Code не видит g++ после установки — перезапустите VS Code (чтобы обновился PATH).
- Если проблема связана с Code Runner — попробуйте запустить через tasks/launch или через терминал напрямую.
Если хотите — пришлите:
- полную ошибку/сообщение из Output,
- ваш ОС,
- вывод where/which g++ и gdb --version,
- содержимое .vscode/launch.json и tasks.json,
- как вы запускаете код (кнопка Run, F5, Code Runner, терминал).
Тогда дам точное решение под вашу ситуацию.