How to make VS Code not open a terminal when debugging? - c++

I've installed VS Code on Ubuntu 17.04.
When I debug my C++ application, the output is displayed in a dedicated terminal and not within VS Code itself (like Eclipse does).
How do I make VS Code display output within the editor itself, i.e., not open another terminal?
My launch configuration is as follows:
{
"version": "0.2.0",
"configurations": [
{
"name": "gdb",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/a.out",
"args": ["foo", "bar", "baz"],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++"
}
]
}
I'd hoped that setting externalConsole to false would solve the problem. However, it didn't change anything.

For a C++ project, use "externalConsole": false, as follows:
This will open integrated terminal instead of external terminal. You can use "internalConsoleOptions": "openOnSessionStart" if you want to open the debug console instead of the integrated/external console:
For a Java project, use , "console": "integratedTerminal" in the configurations file:
Use "console": "internalConsole" if you do not want to see any debug console.

Set "console":"none" like such:
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}"
"cwd": "${workspaceFolder}"
"console": "none"

Related

Set C/C++ Runner to use integrated terminal by default

The C/C++ Runnner extension (link here) automatically creates debug configurations for C/C++ projects, and for example generates a .json file like this:
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "c:/Users/Otávio Augusto Silva/Documents/Code/C++/dynamic_array",
"program": "c:/Users/Otávio Augusto Silva/Documents/Code/C++/dynamic_array/build/Debug/outDebug",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
My question is, how do I make the extension set the externalConsole option to false by default? It always creates the config file to use an external console.
Go to Extensions search for Code Runner and then select Manage it's the settings icon directly to the right of Disable, Uninstall and select Extension Settings.
Search for code-runner.runInTerminal and set it true.

trying to use lldb to debug c++ on vsCode on macbook

I am using the Microsoft's C/C++ extension in VS Code and I created a launch.json for debugging.
{
"version": "0.2.0",
"configurations": [
{
"name": "c++ Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/main",
"args": ["world/moveleft.w"],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
}
]
}
It does run successfully, but it doesn't stop on my breakpoints.
I am using a macbook, I tried using gdb instead of lldb and it didn't work.

Unable to start debugging. Unexpected GDB output from the command -environment-cd "Path" . No such file or directory

I've just started to use VSCode, I meet this error and try some ways to fix but it doesn't work.
This is my launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "C/C++: Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\TDM-GCC-64\\gdb64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
]
}
Problem fixed by doing these steps below.
Go to Windows Control Panel (You can do this by opening File Explorer and in the path type 'Control Panel' (without quotes) and hit Enter);
From the Control Panel, click on 'Clock and Region'.
Click Region. A new screen will open.
In the screen that opened, click on Administrative and search for the button "Change system location".
Check the option: "Beta: Use Unicode UTF-8 for world language support"
Restart the computer.
Posted on behalf of the question asker
the problem was with Launch.json
the path files should not have any spaces like in my case "prog files" was error and i replaced and rename folder with "progfiles"
"program": "D:\\Progfiles\\vscode\\hello.exe",
"args": [],
"stopAtEntry": false,
"cwd": "D:\\Progfiles\\vscode",
"environment": [],

VS Code does not show output from a program

I've created a c++ project on ubuntu in visual studio code.
It launches the program using gdb mode, but does not show anything in Output. When I launch program from console, the output is present. I tried inserting "console" property, but vscode tells me, that it is forbidden (from similar issue with node https://github.com/Microsoft/vscode/issues/30842).
How can I enable vscode to show the output from my program?
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
You config is correct. The program output should be in the DEBUG CONSOLE.
Menu | Debug Console or Ctrl+Shift+Y.
The program was launched in external terminal and due to the configuration of my screen I didn't see it. Everything works fine.
Add this line in setting.json in code-runner.executorMap
"cpp": "g++ -o $fileNameWithoutExt $fileNameWithoutExt.cpp && ./$fileNameWithoutExt"

Visual Studio Code use input text file on debug

I am trying to follow the direction from this post
Visual Studio Code redirect input on debug
but when I add the console config to the launch.json file
"console": "integratedTerminal"
it throws a "Property console is not allowed". and when I debug the program it still waits on input and never reach break point like I would if I start in shell like
"./a.out 1 test1.txt"
"./a.out 1 <test1.txt"
Full config
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
//"program": "${workspaceRoot}/a.out.dSYM/Contents/Resources/DWARF/a.out",
"program": "${workspaceRoot}/a.out",
"args": ["1", "<","test1.txt"],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/",
"environment": [],
"externalConsole": true,
"MIMode": "lldb",
//"miDebuggerPath": "C:\\mingw\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"console": "integratedTerminal"
//"preLaunchTask": //"build test1"
}
]
}
I use GDB instead of lldb but still encountered the same issue. It waited for an input when I typed arguments in the "launch.json" file this way:
"args": ["<", "test1.txt"],
But it started working properly when I had rewritten it in the following manner:
"args": ["<", "${workspaceFolder}/test1.txt"],
I think that one should add a parent folder even though the input file is in the workspace folder or simply use the full path.
If you use the integrated console, the < doesn't get interpreted by a shell. Usually, using externalConsole: true fixes the problem since this uses a shell. But if the external console doesn't work on your system for whatever reason and you're forced to use externalConsole: false, the workaround is to let GDB create the shell: miDebuggerArgs: "'-ex' 'run < /path/to/test1.txt'"