Configuring launch.json, task.json and settings.json for debugging in VS Code with git bash as default terminal?

Viewed 4261

I am trying to configure the Debugger in VSCode

I looked through official documentation to setup the VSCode debugger for C/C++ but it's not working.

Documentation states the steps for setting up vscode debugger for powershell in windows.

But I am trying to set-up debugger with git bash as my default integrated terminal in windows.

I have added git bash as default terminal but I am not able to setup debugger with git bash as integrated terminal.

Default configuration files :

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,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe build active file"
        }
    ]
}

The property :

"externalConsole": false

is set to false as I want VSCode to use the integrated default bash terminal instead of using external terminal for debugging.

tasks.json :

{
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\MinGW\\bin\\g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ],
    "version": "2.0.0"
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\MinGW\\bin\\gcc.exe",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "clang-x86"
        }
    ],
    "version": 4
}

settings.json

{
    "files.associations": {
        "iostream": "cpp"
    },
    "C_Cpp.errorSquiggles": "Disabled"
}

With the above configuration, when I start the debugging it gives me the following error:

enter image description here

It seems like the command property in tasks.json is incorrect, as bash converts

"C:\MinGW\bin\g++.exe" -> "C:MinGWbing++.exe"

and gives error: "no command found" because back-slash('\') in bash is an escape character.

Now changing above path in tasks.json to bash style :

"command": "C:/MinGW/bin/g++.exe"

resolves the above error, but now it gives same error for variable ${file} as this path-variable gets dynamically set to current open file .cpp.

enter image description here

I have been working on this debugging issue for last few days, but haven't found any workaround yet.

How can I change/update by configuration files to use git bash as default integrated terminal in VSCode for debugging.

1 Answers

It seems like the command property in tasks.json is incorrect, as bash converts

"C:\MinGW\bin\g++.exe" -> "C:MinGWbing++.exe"

Then try a cygwin-like path:

/c/MingW/bin/g++.exe
# or
/C/MingW/bin/g++.exe

Check if it is interpreted correctly by the git bash session then.

Related