VS Code starts debugging in integrated terminal instead of debug console

Question:

I’ve been using VS Code for quite some time and just today I started having this strange issue. Previously if I started debugging an program (F5) it would start debugging and show output in the “Debug Console”:

enter image description here

But now It starts debugger in the “Terminal”
enter image description here
and also outputs to “Debug Console”.

Here is my launch.json:

{
    "version": "0.2.0",
    "configurations": [{
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}"
        }
    ]
}

I want output only in the “Debug Console” (previously default behavior). Please help me with setting it back to the way it was.

Asked By: HaMAD

||

Answers:

Edit 3

As with the release 2019.4.0 of the python extension it is now possible to set the console option to internalConsole (#4321).

In .vscode/launch.json:

"console": "internalConsole"

Edit 2

As suggested in omartin2010’s answer you can additionally set the option

"internalConsoleOptions": "openOnSessionStart"

to automatically open the debug console when starting debugging.

Edit 1

Setting the “console” option explicitly to "none" was originally the way to go (see answers), but now “none” is no longer valid (see Edit 3 above)

"console": "none"

Original answer

To ensure that the output is written to the debug console you can set the debugOptions.
Adding the following entry to your configuration in yourlaunch.json should fix it:

"debugOptions": [
    "RedirectOutput"
]
Answered By: HaaLeo

I had the same problem but I solved it by adding a new configuration at the top that looked like this:

{
    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "internalConsole"
},

I found this a better solution because I didn’t have to change one of my other debug functions. In your case the "Python: Terminal (integrated)" debug option. Which I need as much as I need the debug console function. I use both function and they show the output where I want the output to be shown.

Answered By: SnitchingAuggie
{
    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "stopOnEntry": false,
    "console": "none"
},

these are my launch.json settings and it’s working with this.

Answered By: anils

It’s also possible, as of I guess not too long ago, to add this option… not sure it was possible before:

{
...
            "internalConsoleOptions": "openOnSessionStart",
...
}

hope this helps

Answered By: omartin2010

The accepted answer didn’t work for me as it doesn’t appear to be an option on my version of VSCode Version 1.30.2 (1.30.2):

Unknown console type 'none'.

The solution for me was to use the internalConsole option instead. I suppose it must be defaulting to the integratedTerminal option on my version.

Here is an example:

NOTE: this is an example from my nodejs project but the console portion is still relevant regardless of project type. I have included more to show some context as well as other features such as envFile usage.

...    
{
    "type": "node",
    "request": "launch",
    "name": "Launch Program",
    "envFile": "${workspaceRoot}/.env",
    "program": "${workspaceFolder}/src/index.js",
    "autoAttachChildProcesses": true,
    "console": "internalConsole"
},
...
Answered By: Matthew Sanders

Originally the config below worked, but it seems to have been deprecated and it now throws an error:

    "console": "none" 

The new usage is:

    "console": "internalConsole"

There’s a bug logged in GitHub to update the docs here.

Answered By: Tammy Treit

If you’re like me and you actually wanted to do the opposite (i.e. stop VSCode from automatically switching to the "Debug Console" Tab instead of just staying on the "Terminal Tab") then I found that the solution was to add this setting to your launch.json file:

"avoidWindowsConsoleRedirection": true
Answered By: Nathaniel Ruiz

Use the recommended config as per the VScode docs

But also append
"internalConsoleOptions": "openOnSessionStart"

{
    // 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": "Python: Debug Tests",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "purpose": [
                "debug-test" // this value is mandatory for it to launch the debug console
            ],
            "console": "integratedTerminal",
            "justMyCode": false,
            "internalConsoleOptions": "openOnSessionStart"
        }
    ]
}
Answered By: Mark