我正在调试Python脚本。我的配置如下所示:
{
"name": "debug script.py",
"type": "python",
"request": "launch",
"program": "/path/to/script.py",
"console": "integratedTerminal"
}
运行脚本时,我需要在脚本前加上可执行文件aws-access
才能访问AWS上的某些资源(否则会出现Permission Denied
错误):
aws-access python script.py
如何在调试命令中添加此前缀?
请注意,使用Code Runner插件执行代码时,这很容易做到:
"code-runner.executorMap": {
"python": "aws-access $pythonPath -u $fullFileName"
}
答案 0 :(得分:0)
它比平时稍微不那么流畅,但这里是如何做到的:
您需要安装 debugpy
要启动调试,您需要一个单独的函数或脚本来等待调试器附加。我有一个单独的脚本,看起来像:
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
from foo import bar
bar.run()
其中 bar.run()
是您要调试的内容。
然后您需要为 VSCode 指定 launch.json
配置 - 您可以在您尝试调试的项目目录中自己创建此配置,位于 /.vscode/launch.json
或 create one from within VSCode>
launch.json
应该类似于:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Attach Standard",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
}
}
]
}
一般的调试流程是:
aws-vault
(反过来,将设置环境变量)设置您的 aws 凭据python debug_script.py
它将响应 VSCode 中设置的 UI 调试点,也会响应代码中的 debugpy.breakpoint()
。更重要的是,它将使用您在其中设置 AWS 环境变量的相同终端会话。
答案 1 :(得分:0)
另一种选择是运行:
saml2aws exec --exec-profile [your-profile-name] --session-duration=3600 -- $SHELL
在您的 VS 终端中。在后续调试执行时,您将保持身份验证状态(直至会话持续时间)。