Python 远程调试器不在 VS 代码中调试我的代码

Python Remote Debugger Doesn't Debug My Code in VS Code

我正在 运行 在 Docker 容器内的 Python 3.6 上安装一个烧瓶应用程序。我正在尝试在 Mac.

上通过 VS Code 调试 Flask 应用程序

我已经连接了远程调试器,尽管我的 none 个断点被命中,并且在 VS Code 中都显示为 "unverified" 个断点。

当我 运行 远程调试器时,它在 flask 的 __init__.py 的第 587 行中断,在 Resource.dispatchRequest() 中显示为 resp = meth(*args, **kwargs)。尝试前进、介入或走出不会产生任何结果。多次点击继续(大约 20 次)将继续执行我的测试脚本的下一个请求。

调试器永远不会在我的代码中的断点处停止,它会将我的断点显示为未验证的断点。当调试器卡在 flask 请求代码中时,调用堆栈以灰色显示我的代码中的方法,并在它们旁边显示 "Unknown Source"。我无法在调用堆栈中进入它们,尽管我可以在 "Variables" window.

中看到局部变量

如何获取 VS Code 来调试我的代码?

launch.json 中,Attach 部分具有以下默认值:

{
    "name": "Python: Attach",
    "remoteRoot": "${workspaceFolder}",
    ...
}

此默认值对 Docker 容器没有意义,除非您将代码复制到它与主机上完全相同的路径下。

我的Docker文件将我的代码复制到容器中,如下所示:

COPY . /app/

所以 launch.jsonAttach 部分需要是:

{
    "name": "Python: Attach",
    "remoteRoot": "/app/",
    ...
}

现在我可以调试我的代码了。