【问题标题】:How to detach Python debugger in VS Code and let the code finish running?如何在 VS Code 中分离 Python 调试器并让代码完成运行?
【发布时间】:2020-03-14 15:51:44
【问题描述】:

我喜欢在 VS Code 调试器中运行几乎所有 Python,因为它为我提供了一种完美的检查方式 遇到意外异常时的变量。

但是,一旦我决定要继续在后台运行代码,我认为在 VS Code 中无法实现。我只能完全停止代码并重新运行,这往往不是我想要的。特别是,我想在使用 VS Code Remote SSH 时从代码中分离出来,例如,重新启动运行 GUI 的计算机,同时让后台服务器完成一些计算。

那么,如何在不停止代码的情况下将调试器与使用ptvsd 在 VS Code 中启动的代码分离?

【问题讨论】:

    标签: python visual-studio-code vscode-debugger detach vscode-remote


    【解决方案1】:

    在 VSCode 1.56(2021 年 4 月)中,断开连接选项(用于调试会话,而不是 SSH)将更加明显strong text

    issue 116731:

    (在最后一部分我按住 alt 键)。

    • 对于“启动”请求,默认情况下我会看到停止,如果我按住 ALT,则会更改为断开连接。
    • 如果我点击停止,我会得到{"seq":3,"type":"request","command":"disconnect","arguments":{"terminateDebuggee":true}}
    • 如果我单击断开连接,我会收到{"seq":10,"type":"request","command":"disconnect","arguments":{}}
    • 使用“附加”时,行为是相反的。

    正如the comments 中的OP bers 所述:

    在此版本中,现在可以通过按下 Alt 修饰符同时触发“调试”工具栏上的命令来翻转此行为。
    改变行为可以让被调试者在启动类型调试会话中保持运行,并在附加类型调试会话中终止被调试对象。 除了将 Alt 与默认命令一起使用外,还可以从命令面板访问 Debug: StopDebug: Disconnect 命令以启动和附加调试会话。

    替代行为仅适用于已选择启用此功能的调试扩展程序。

    【讨论】:

    • 这完全适用于 Python 吗?
    • @bers 它适用于任何调试会话,包括用于 Python 的调试会话。
    • 好吧,我没有看到 Python 的“调试:断开连接” - 我只看到“调试:停止”。
    • @bers 同意:这是 VSCode 的下一个版本。
    • @bers 感谢您的跟进:我已将您的评论包含在答案中以提高知名度。
    【解决方案2】:

    您可以在调试器工具栏中按下一个断开按钮(看起来像一个插头)。有关屏幕截图和更多详细信息,请参阅remote debugging documentation 中的第 10 步。

    【讨论】:

    • 这是否适用于我以“F5 或调试> 开始调试”开始的代码?也许我应该在问题的最后一句话中更明确地说出来。我正在使用 VS Code 远程 SSH 扩展,所以我通常只是用 F5 开始代码。
    • 应该不会,不过你可以试试看。否则没有任何其他支持从实时进程中分离。
    猜你喜欢
    • 2020-04-30
    • 2022-11-04
    • 2017-03-07
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多