【问题标题】:VS Code starts debugging in integrated terminal instead of debug consoleVS Code 在集成终端而不是调试控制台中开始调试
【发布时间】: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(以前的默认行为)。请帮我把它恢复到原来的样子。

【问题讨论】:

    标签: python debugging visual-studio-code


    【解决方案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
        

        【讨论】:

          猜你喜欢
          • 2021-02-18
          • 2018-07-31
          • 1970-01-01
          • 2018-12-18
          • 2023-02-04
          • 2020-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多