Run, Debug & get IntelliSense for C C++ in VSCode

JerryGoyal
Apr 24, 2018 · 4 min read

By the end of this short guide you’d be able to run, debug and get intelliSense for C/C++ files in VSCode. Though, this guide is focused for Windows platform but can be extended to Mac and Linux with some minor changes.

Create a sample C/C++ project

  1. Open/Create an empty folder in VSCode.
  2. Create a new.cpp file inside it like below:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
// uncomment below line to stop cmd from exiting immediately in case of "externalConsole": true
//system("pause");
return 0;
}

3. Install recommended C/C++ extension in VSCode and reload.

Official C/C++ Extension for VSCode

Install C/C++ Compiler

C/C++ extension does not include a C++ compiler. So, you will need to install one or use which is already installed on your computer.

Windows: Download MinGW64.zip (latest release) and extract it to the C Drive.

Mac: XCode

Linux: GCC

Also, Make sure to add C++ compiler PATH to environment variable of your platform. For Windows MinGW64 add: C:\MinGW64\bin

Enable IntelliSense

UPDATE: No configuration required in latest release, IntelliSense is enabled by default :)

Run and Debug C/C++ Code

You’ll notice that there is also a .vscode folder in your sample project. To configure ‘debug configuration’ 2 files are required launch.json and tasks.json inside .vscode folder.

VSCode can create and auto-configure these files if we try to debug for the first time. To do that, open C++ file in VSCode and either hit F5 or go to Debug -> Start Debugging and select C++ (GDB/LLDB) then select g++.exe build and debug active file.

Select C++ (GDB/LLDB)
Select g++.exe build and debug active file

This should create 2 files launch.json and tasks.json in .vscode folder which should look like below (update the MinGW64 path if not correct)

Notice that I’ve added one more optional configuration g++ build & run active file in launch.json and g++ build & run in tasks.json file for purpose of also Running C/C++ code without debugging. Now you may choose which configuration to pick when you start debugging. You may remove the configuration whichever you won’t need.

Run & Debug or Only run code

launch.json

{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false, //set to true to see output in cmd instead
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file"
},
{
"name": "g++ build & run active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false, //set to true to see output in cmd instead
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build & run active file"
}
]
}

tasks.json

{
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file",
"command": "C:\\MinGW64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\MinGW64\\bin"
}
},
{
"type": "shell",
"label": "g++ build & run active file",
"command": "C:\\MinGW64\\bin\\g++.exe",
"args": [
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\MinGW64\\bin"
}
}
],
"version": "2.0.0"
}

externalConsole in launch.json can be set to true to see code output in cmd instead.

Restart VSCode to take effects of newly added compiler paths.

Open any C/C++ file, set some breakpoints (or not) and hit the Big Green Play Button.

(Shortcut to debug: F5)

Tip: To hide *.exe files in the side explorer of VSCode, open settings and paste the below config:

"files.exclude": {
"*.exe": true
}

Prefer to work in JAVA?

I’ve also added an answer here on how to run and debug Java code in VSCode.

JerryGoyal

Written by

Technology Enthusiast | www.jerrygoyal.com

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade