首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中将VSCode调试器附加到子进程

在Python中将VSCode调试器附加到子进程
EN

Stack Overflow用户
提问于 2020-05-09 19:00:57
回答 3查看 2.9K关注 0票数 1

我有一个脚本,它有效地完成了以下工作:

top_script.py:

代码语言:javascript
运行
复制
os.system("bash_script.sh")

bash_script.sh

代码语言:javascript
运行
复制
python3 child_script.py

child_script.py

代码语言:javascript
运行
复制
# Actual work goes here

在VSCode中,我喜欢集成调试器,但是当我从IDE启动时遵循他们的advice1,我会得到"ECONNREFUSED 127.0.0.1:5678“。

当我从VSCode中的集成终端执行以下操作时,它运行时不会出现错误,但是它不会停止在child_script.py中的断点上。

代码语言:javascript
运行
复制
python3 -m debugpy --listen 5678 top_script.py

如何首先(从IDE或命令行)执行顶级脚本,并在child_script.py中将断点呈现在VSCode中?

1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-17 10:57:02

很简单。可以将配置添加到launch.json文件中,如下所示:

代码语言:javascript
运行
复制
{
        "name": "MySubProcess",
        "type": "python",
        "request": "attach",
        "processId": "${command:pickProcess}
}

现在单独启动python进程(通过提示符或无论如何)。这将生成python子进程。您可以在中看到这一点(或者在MacOS活动监视器中,或者在Linux中以类似的方式)。

在VSCode中,单击Debug,(在上面的示例中选择您的子流程配置:"MySubProcess“),然后选择刚刚开始的进程。然后调试器将在子进程代码中的断点处停止。

票数 4
EN

Stack Overflow用户

发布于 2020-05-12 20:59:49

问题是,通过使用os.system(),调试器不知道您启动了您所关心的另一个Python解释器。您需要做的是附加到第二个过程。细节将根据您想要设置的方式而有所不同,但是您可以将https://code.visualstudio.com/docs/python/debugging#_local-script-debugging作为一个起点。

票数 1
EN

Stack Overflow用户

发布于 2022-01-07 02:08:46

我遵循了RexBarker的建议,但是VSC总是给我一个“超时等待调试服务器连接”的错误。为了找出原因,在下面的配置中启用了“日志到文件”,

代码语言:javascript
运行
复制
{
    "name": "MySubProcess",
    "type": "python",
    "request": "attach",
    "processId": "${command:pickProcess}",
    "logToFile": true
}

然后,我可以在位于~/.local/share/code-server/extensions/ms-python.python-2021.5.926500501/debugpy.adapter-{pid}.log的VSC主机上的日志文件中找到详细的错误。

它告诉我“gdb”没找到。在我安装了gdb之后,它按预期的方式工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61702186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档