C ++ Singleton没有为此文档加载的符号

问题描述 投票:1回答:2

我正在对正在实现的记录器类使用以下技术。我的记录仪中有一个初始化函数。在调试模式下,当我调用Logger :: getInstance()。init()时,它将直接越过init()调用。当我在init()函数中放置一个断点时,会出现一条消息,指出“当前不会命中该断点。此文档未加载任何符号”。你知道为什么会这样吗?

Logger.h文件:

class Logger
{
private:
    Logger();
    ~Logger();
public:
    Logger(const Logger&) = delete;

    static Logger& getInstance()
    {
        static Logger mInstance;
        return mInstance;
    }

    void init();

}

我打来的电话:

Logger::getInstance().init();

我将断点放在Logger.cpp中:

void Logger::init()
{
    //Do stuff <----Break point here 
}

在调试模式下,我将鼠标悬停在断点上并收到消息:“当前不会命中断点。此文档未加载任何符号”

c++ singleton
2个回答
0
投票

该消息可能会出现,因为您不是没有符号就进行编译,请在clang或gcc中使用-g选项。

另外,由于您没有编译.h文件,因此可能还会发生,请注意,功能/代码应该写在.cpp中,而.h应该只有签名。


0
投票

我弄清楚了为什么我没有达到断点。我没有为Logger创建pdb文件。我进入了Logger项目属性,并更改了调试信息格式。

在Visual Studio 2017中工作:

在解决方案资源管理器中右键单击项目->属性-> C / C ++->常规->调试信息格式

从“无”更改为“程序数据库”

© www.soinside.com 2019 - 2024. All rights reserved.