【问题标题】:How do I attach VS Code's Python debugger to a running process?如何将 VS Code 的 Python 调试器附加到正在运行的进程?
【发布时间】:2017-09-05 18:52:22
【问题描述】:

我正在使用在 VS Code 上运行的 Jayamanne 的 Python 0.7.0 版。将调试器附加到正在运行的进程的文档需要添加额外的代码并配置端口和地址。我认为必须有一种更简单的方法,只需选择或指定进程名称或 ID。

显然,基于 Node.JS 文档和演示,VS Code 能够做到这一点。 Python 解释器也能做到这一点,因为这是我通常在 Visual Studio 2017 上调试应用程序的方式。

如何配置 VS Code Python 以通过名称或 ID 附加到进程?这可能吗?如果不是,为什么文档没有明确说明?

【问题讨论】:

    标签: python visual-studio visual-studio-code vscode-settings


    【解决方案1】:

    没有“简单”的方法。按照您提到的有关“添加额外代码和配置端口和地址”的文档进行操作。

    您只能将 C 调试器“附加”到任何进程 because Windows Debugging API has this functionality 并提供所有在幕后工作的必要机制,以使这个看似简单的操作成为可能(使用操作系统停止目标进程意味着,在其中创建一个辅助线程,操作其内存(包括用int 3 替换机器代码以设置断点)——而Visual Stidio 使用源代码和PDB 文件将内存数据解析为C 或C++ 级结构)。

    这对 Python 来说不是这样:虽然你同样可以在 C 级别闯入进程并使用 C API 从帮助线程操作解释器实例,如果你以某种方式获得它的地址,那么该 API 中没有提供让它从传递给它的现有代码中中断并开始执行你的指令,同时仍然能够访问现有代码。

    pdb 通过“现有代码”让您进入调试会话:解释器在某些时刻调用它的sets the sys.settrace callback 以便能够在断点处调出其控制台和/或wraps your program with itself 并捕获异常。

    您所描述的调试器的行为相同:只是它不显示控制台提示符,而是充当服务器,通过套接字接受来自连接的 IDE 客户端的命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2018-01-17
      • 2017-12-27
      • 2011-08-31
      相关资源
      最近更新 更多