首页 > 解决方案 > 回调中的断点在 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 路径,而是我程序的根文件夹(如果我不这样设置它不会导入我写的模块)

标签: pythondebuggingvisual-studio-codecallback

解决方案


推荐阅读