Python --inspect-brk模拟

问题描述

Node.js中有一个--inspect-brk CLI开关可唤醒,以暂停脚本执行,直到将调试器附加到该进程为止。在附加调试器之前,有没有类似的方法可以告诉Python解释器挂起?

我知道PDB的“导入pdb; pdb.set_trace()”选项。关键是我想以一种非hacky的方式利用VSCode内置的调试器。到目前为止,我已经能够使用“ -m pdb”选项运行Python脚本,并使用VSCode通过PID将其附加到该脚本,并在我向pdb中键入“ next”之前用VSCode调试器暂停脚本执行(以某种方式该序列截取了我进入了。我知道通过配置launch.json文件直接运行VSCode调试器的选项,但是它不适合我将Python脚本作为其他shell的一部分运行的情况脚本。前面提到的Node.js开关在这种情况下真的很有帮助,我想知道我是否可以使用Python做类似的事情。

解决方法

我知道这有点像线程坏死,但是要回答您最初提出的“Python 节点的模拟 --inspect-brk”的问题,答案是否定的。该功能未内置于 python 解释器中。几天前我的谷歌搜索让我找到了你未回答的问题,所以我想我会回来分享我的工作。

我发现的最接近的体验来自 VS Code 文档的 Command Line Debugging 部分。我不会详细介绍您可以使用的各种命令选项,但我会包括我发布的内容,以防将来链接失效。

假设:

  • 您正在使用 python3
  • pip3 install --user debugpy 已在某个时间点运行

VS Code 启动配置

{
  "name": "Attach To DebugPy (9339)","type": "python","request": "attach","connect": {
    "port": 9339
  }
}

工作流程:

  1. python3 -m debugpy --listen 9339 --wait-for-client ./main.py
  2. 单击 VS Code 中的调试器“附加”目标

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...