python - 回调中的断点在 VS Code 中的 Python 中未命中
问题描述
我是 Python 新手,在 Windows 上使用Python 3.7 + Anaconda + VS Code
. 现在,当我使用这样的调试配置按 F5 来调试我的 Python 程序时:
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode":false,
"env": {
"PYTHONPATH": "PATH\\TO\\PYTHON"}
}
我发现我在回调函数中放置的断点没有被命中,而“正常”断点被命中。肯定会调用回调,因为我可以看到终端的输出。应该注意的是,只有来自外部包的回调不会被断点暂停。我自己创建的回调函数没有这种问题。如果我放置一行,则可以暂停该功能,breakpoint()
但显然它会使调试例程非常笨拙。
我在网上搜索过,但没有太多关于这个问题的参考资料。有谁碰巧见过这个?
更新:
在这里,我附上了一些我在启动和调试时使用的代码和步骤。代码如下所示:
class MyDerivedClass(BaseClassOfExternalPackage):
def __init__(self, settings : ExternalPackageSetting):
if settings:
super(MyDerivedClass, self).__init__(settings)
def onConnect(self, msg):
# breakpoint()
self.write_log("Connect success. " + msg)
并且该函数是在from 外部包onConnect
中定义的回调。BaseClassOfExternalPackage
因此,尽管日志写入成功,但我在该self.write_log
行中放置的断点永远不会被命中。如果我取消注释该breakpoint
行,程序将成功暂停。
我如何调试程序:我单击 VS-code 的侧边栏来选择我为此 conda env 设置的 python 可执行文件。而配置部分"env": {"PYTHONPATH": "PATH\\TO\\PYTHON"}
,PATH\\TO\\PYTHON
不是 conda env 路径,而是我程序的根文件夹(如果我不这样设置它不会导入我写的模块)