在 VSCode 中为调试命令添加前缀



我正在调试一个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.executorMap": {
"python": "aws-access $pythonPath -u $fullFileName"
}

它比平时不太流畅,但这是如何做到的:

您需要安装调试

若要启动调试,需要一个单独的函数或脚本来等待调试器附加。我有一个单独的脚本,如下所示:

import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()

from foo import bar
bar.run()

bar.run()是你尝试调试的内容。

然后,您需要为 VSCode 指定一个launch.json配置 - 您可以在尝试在/.vscode/launch.json下调试的项目目录中自行创建此配置,也可以从 VSCode 中创建一个

launch.json应如下所示:

{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Attach Standard",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
}
}
]
}

一般的调试流程是:

  • 在 VSCode 终端中,使用环境变量或类似aws-vault的内容(反过来,将设置环境变量(设置 AWS 凭证
  • 从同一终端,运行调试函数或脚本,例如python debug_script.py
  • 通过从VSCode UI调试运行函数或脚本(同样,我使用脚本,因为它使这部分更容易,对代码的侵入性更小(

它将响应 VSCode 中设置的 UI 调试点,以及代码中的debugpy.breakpoint()。更重要的是,它将使用您在其中设置 AWS 环境变量的同一终端会话。

另一种选择是运行:

saml2aws exec --exec-profile [your-profile-name] --session-duration=3600 -- $SHELL

在您的 VS 终端中。在后续调试执行时,您将保持身份验证(直到会话持续时间(。

相关内容

  • 没有找到相关文章

最新更新