VS Code 在集成终端而不是调试控制台中开始调试

Posted

技术标签:

【中文标题】VS Code 在集成终端而不是调试控制台中开始调试【英文标题】:VS Code starts debugging in integrated terminal instead of debug console 【发布时间】:2018-09-09 09:22:44 【问题描述】:

我使用 VS Code 已经有一段时间了,就在今天我开始遇到这个奇怪的问题。以前,如果我开始调试程序 (F5),它将开始调试并在“调试控制台”中显示输出:

但现在它在“终端”中启动调试器 并输出到“调试控制台”。

这是我的 launch.json


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

我希望在“调试控制台”中输出 only(以前的默认行为)。请帮我把它恢复到原来的样子。

【问题讨论】:

【参考方案1】:

编辑 3

与 python 扩展的release 2019.4.0 一样,现在可以将console 选项设置为internalConsole (#4321)。

.vscode/launch.json:

"console": "internalConsole"

编辑 2

按照omartin2010's answer 的建议,您可以另外设置选项

"internalConsoleOptions": "openOnSessionStart"

开始调试时自动打开调试控制台。

编辑 1

将 "console" 选项显式设置为 "none" 最初是可行的方法(请参阅答案),但现在“无”不再有效(请参阅上面的编辑 3)

"console": "none"

原答案

要确保将输出写入调试控制台,您可以设置debugOptions。 在 yourlaunch.json 中将以下条目添加到您的配置中应该可以修复它:

"debugOptions": [
    "RedirectOutput"
]

【讨论】:

它已经做到了。但它会打印到两个终端,当我开始调试时它会转到终端而不是调试控制台 那么可能明确设置console 选项会有所帮助。尝试设置"console": "integratedTerminal": 如果你最终需要终端,问题会更大。使用 none 代替添加新配置会更容易【参考方案2】:

最初下面的配置有效,但它似乎已被弃用,现在抛出错误:

    "console": "none" 

新的用法是:

    "console": "internalConsole"

GitHub 中记录了一个错误以更新文档here。

【讨论】:

【参考方案3】:

我遇到了同样的问题,但我通过在顶部添加一个看起来像这样的新配置来解决它:


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

我发现这是一个更好的解决方案,因为我不必更改我的其他调试功能之一。在您的情况下,“Python:终端(集成)”调试选项。我需要调试控制台功能。我使用这两个函数,它们会在我希望显示输出的位置显示输出。

【讨论】:

现在我只能根据需要在调试控制台中获得输出,但是,如何让调试控制台在我开始调试时自动启动?【参考方案4】:

我猜不久前也有可能添加此选项...之前不确定是否可行:


...
            "internalConsoleOptions": "openOnSessionStart",
...

希望对你有帮助

【讨论】:

【参考方案5】:

    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "$file",
    "stopOnEntry": false,
    "console": "none"
,

这些是我的 launch.json 设置,它正在使用它。

【讨论】:

基本上,除了“stopOnEntry”属性外,答案与@SnitchingAuggie 相同。请解释为什么这很重要。【参考方案6】:

接受的答案对我不起作用,因为它似乎不是我的 VSCode Version 1.30.2 (1.30.2) 版本的选项:

Unknown console type 'none'.

我的解决方案是改用internalConsole 选项。我想它必须默认为我的版本上的integratedTerminal 选项。

这是一个例子:

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"
,
...

【讨论】:

OP的问题是指python调试不是nodejs 在这种情况下,项目类型实际上是无关紧要的。这通常是 IDE 设置的一个问题,适用于任何项目类型的打印输出到调试控制台。我知道如果您复制并粘贴我的完整配置可能会造成混淆,因此我会更新我的答案。【参考方案7】:

如果您像我一样并且实际上想要做相反的事情(即阻止 VSCode 自动切换到“调试控制台”选项卡,而不是仅仅停留在“终端选项卡”上),那么我发现解决方案是将此设置添加到您的 launch.json 文件中:

"avoidWindowsConsoleRedirection": true

【讨论】:

以上是关于VS Code 在集成终端而不是调试控制台中开始调试的主要内容,如果未能解决你的问题,请参考以下文章

VS Code - Cygwin作为集成终端

启用或禁用 VS Code 集成终端选项卡?

每次构建/运行时,VS Code 都会打开一个新的调试控制台

如何为 VS Code 的集成终端设置节点版本?

【转】win10中vscode集成的终端光标位置错误

VS Code 在集成控制台中执行当前行或选择