我正在对正在实现的记录器类使用以下技术。我的记录仪中有一个初始化函数。在调试模式下,当我调用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
}
在调试模式下,我将鼠标悬停在断点上并收到消息:“当前不会命中断点。此文档未加载任何符号”
该消息可能会出现,因为您不是没有符号就进行编译,请在clang或gcc中使用-g
选项。
另外,由于您没有编译.h
文件,因此可能还会发生,请注意,功能/代码应该写在.cpp
中,而.h
应该只有签名。
我弄清楚了为什么我没有达到断点。我没有为Logger创建pdb文件。我进入了Logger项目属性,并更改了调试信息格式。
在Visual Studio 2017中工作:
在解决方案资源管理器中右键单击项目->属性-> C / C ++->常规->调试信息格式
从“无”更改为“程序数据库”