问题描述
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
}
}
工作流程:
python3 -m debugpy --listen 9339 --wait-for-client ./main.py
- 单击 VS Code 中的调试器“附加”目标