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

时间:2019-09-05 01:25:09

标签: visual-studio-code vscode-debugger

我正在调试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"
}

2 个答案:

答案 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.jsoncreate one from within 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 环境变量的相同终端会话。

答案 1 :(得分:0)

另一种选择是运行:

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

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