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

Joh*_*etz 5 visual-studio-code vscode-debugger

我正在调试 Python 脚本。我的配置看起来像这样:

{
  "name": "debug script.py",
  "type": "python",
  "request": "launch",
  "program": "/path/to/script.py",
  "console": "integratedTerminal"
}
Run Code Online (Sandbox Code Playgroud)

运行脚本时,我需要在其前面加上可执行文件前缀,aws-access以便自己能够访问 AWS 上的某些资源(否则会出现Permission Denied错误):

aws-access python script.py
Run Code Online (Sandbox Code Playgroud)

如何将此前缀添加到调试命令中?

请注意,使用Code Runner插件执行我的代码时,这很容易做到:

"code-runner.executorMap": {
  "python": "aws-access $pythonPath -u $fullFileName"
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ias 2

它比平常稍微不太顺利,但具体方法如下:

您需要安装debugpy

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

import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
    
from foo import bar

bar.run()
Run Code Online (Sandbox Code Playgroud)

bar.run()您要调试的内容在哪里。

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

launch.json应该看起来像:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Attach Standard",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 5678
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

一般调试流程是:

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

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