【问题标题】:Add prefix to debug command in VSCode在 VSCode 中为调试命令添加前缀
【发布时间】:2019-09-05 01:25:09
【问题描述】:

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

【问题讨论】:

  • 你可以使用启动配置的args 参数吗?要启动的程序是aws-accesspythonscript.py 是参数

标签: visual-studio-code vscode-debugger


【解决方案1】:

它比平时稍微不顺畅,但这里是如何做到的:

您需要安装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 环境变量的同一终端会话。

【讨论】:

    【解决方案2】:

    另一种选择是运行:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多