在 VSCode 中,如何在 bash shell 脚本中调试 python 程序

Sta*_*ish 6 visual-studio-code vscode-tasks vscode-debugger

我写了一个shell脚本,它会在启动python程序之前先做一些配置。(例如,下载数据,pip安装一些包,设置环境变量等。然后在python程序内部完成繁重的工作(例如,深度学习训练任务)。现在我想调试python程序,(我'如果我必须同时调试 shell 和 python,我可以接受)。我应该如何修改文件launch.json来完成此操作?我应该添加一些 task.json 项吗?我还不熟悉该任务主题。

目前,我正在以一种丑陋的解决方法来做这件事。我把shell脚本中的语句注释掉python train.py,先运行shell脚本。python train.py然后在调试模式下单独运行 python scipt 。我认为这目前适用于我的简单情况,但如果在 shell 脚本内部,我们正在做一些诸如临时修改环境变量之类的事情,我无法将这两个步骤分开。所以我想知道是否有更直接、更体面的方法。非常感激。

小智 1

根据此处的 VSCode 文档https://code.visualstudio.com/docs/python/debugging

步骤1

将 debugpy 安装到您的环境中,并在入口点 python 脚本中添加“等待客户端”代码。

pip install debugpy

import debugpy
debugpy.listen(5678)  # 5678 is port
print("Waiting for debugger attach")
debugpy.wait_for_client()
debugpy.breakpoint()
print('break on this line')
Run Code Online (Sandbox Code Playgroud)

然后从终端启动 bash sciprt(使用 adim 或 sudo 权限,否则,可能会出现套接字权限错误),并等待显示等待消息。

或者将其添加到您的 python arg 中

python -m debugpy --listen 5678 --wait-for-client XXX.py
Run Code Online (Sandbox Code Playgroud)

第2步

将“Attach to python”配置添加到 VSCode 调试 launch.json 中,如下所示

python -m debugpy --listen 5678 --wait-for-client XXX.py
Run Code Online (Sandbox Code Playgroud)

步骤3

启动并成功! 在此输入图像描述