Python远程调试器在VS Code中无法调试我的代码

4
我正在Docker容器内的Python 3.6上运行Flask应用程序。 我试图在我的Mac上使用VS Code调试Flask应用程序。
我已经连接了远程调试器,但是我的断点都没有被触发,而且在VS Code中所有断点都显示为“未验证”断点。
当我运行远程调试器时,它会在flask的__init__.py文件的第587行中断,即在Resource.dispatchRequest()中,该方法读取resp = meth(*args, **kwargs)。尝试向前、向内或向外步进都没有任何结果。连续多次单击“继续”(大约20次),将继续进行下一个来自测试脚本的请求。
调试器永远不会停止在我的代码断点上,并且它显示我的断点为未验证的断点。 当调试器卡在flask请求代码中时,调用堆栈显示我的代码中的方法为灰色,并在其旁边标有“未知来源”。 尽管我可以在“变量”窗口中看到局部变量,但我无法在调用堆栈中逐步进行它们。
如何让VS Code调试我的代码?
1个回答

6
launch.json 文件中,Attach 部分默认设置如下:
{
    "name": "Python: Attach",
    "remoteRoot": "${workspaceFolder}",
    ...
}

这个默认设置对于Docker容器来说没有意义,除非你将代码复制到容器中并且路径与主机上的路径完全相同。
我的Dockerfile将代码按如下方式复制到容器中:
COPY . /app/

所以,launch.jsonAttach 部分需要如下设置:
{
    "name": "Python: Attach",
    "remoteRoot": "/app/",
    ...
}

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接