如何在使用 bazel 构建的项目中使用 vscode python 调试器?

How to use the vscode python debugger with a project built with bazel?

我想调试一个 python 文件,它有一些只出现在 bazel 的 runfiles 中的依赖项。如何使用 vscode 调试器调试 bazel 构建?

正如某位名人所说,"Yes, we can"。

您需要使用 "ptvsd" python 包。

一次性设置

  • 在 Bazel 中添加 "ptvsd" 作为 Python 依赖项
  • 在 VS Code 中,在您的 launch.json 文件中,添加以下配置:
{
    "name": "Python: Attach",
    "type": "python",
    "request": "attach",
    "port": 5724,
    "host": "localhost"
},

调试

当您要调试特定文件时:

  • 在要调试的Python文件中,添加以下行:
import ptvsd
ptvsd.enable_attach(address=('localhost', 5724), redirect_output=True)
print('Now is a good time to attach your debugger: Run: Python: Attach')
ptvsd.wait_for_attach()
  • 运行 像往常一样在这个文件上使用 Bazel(例如 bazel run :server
  • 执行将在 "Now is a good time to attach your debugger: Run: Python: Attach"
  • 处停止
  • 在 VS Code 中,单击我们之前设置的 "Python: Attach" 调试选项:

  • 就是这样!

随意更改端口,在此示例中为 5724。

ptvsddeprecated, replaced by debugpy.

用法与已接受的答案相同,只是 Python 文件的代码片段已更改:

import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()  # blocks execution until client is attached