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

Dag*_*oms 3 remote-debugging python-3.x docker visual-studio-code

我正在Docker容器内的Python 3.6上运行一个烧瓶应用程序.我正在尝试从Mac上的VS Code调试烧瓶应用程序.

我已经连接了远程调试器,虽然我的断点都没有被击中,并且所有断点都在VS Code中显示为"未验证"断点.

当我运行远程调试器,它打破了在瓶的587线__init__.py,中Resource.dispatchRequest(),其内容如下resp = meth(*args, **kwargs).尝试前进,介入或退出不会产生任何结果.点击继续多次(大约20次)将继续从我的测试脚本发出下一个请求.

调试器永远不会在我的代码中的断点上停止,并且它将断点显示为未验证的断点.当调试器卡在烧瓶请求代码中时,调用堆栈会以灰色显示我的代码中的方法,并在它们旁边显示"未知来源".我无法在调用堆栈中插入它们,尽管我可以在"变量"窗口中看到局部变量.

如何让VS Code调试我的代码?

Dag*_*oms 5

launch.jsonAttach节具有以下默认:

{
    "name": "Python: Attach",
    "remoteRoot": "${workspaceFolder}",
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

COPY . /app/
Run Code Online (Sandbox Code Playgroud)

所以需要的Attach部分launch.json是:

{
    "name": "Python: Attach",
    "remoteRoot": "/app/",
    ...
}
Run Code Online (Sandbox Code Playgroud)

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