如何将 VS Code 的 Python 调试器附加到 运行 进程?

How do I attach VS Code's Python debugger to a running process?

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

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

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

没有 "easy" 方法。按照您提到的有关 "adding extra code and configuring ports and addresses".

的文档进行操作

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

Python 情况并非如此:虽然您同样可以在 C 级别进入进程并使用 C API 从辅助线程操作解释器实例,如果您以某种方式获得它地址,API 中没有提供任何方法使其从传递给它的现有代码中断并开始执行您的指令,同时仍然能够访问现有代码。

pdb 通过 "existing code" 进入调试会话:它的 sets the sys.settrace callback that the interpreter calls at certain moments to be able to bring up its console at breakpoints and/or wraps your program with itself 并捕获异常。

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