有趣的调试,这里发生了什么

Funky Debugging, what is happening here?

本文关键字:这里 发生了 什么 调试      更新时间:2023-10-16

在这个项目中,我遇到了一些根本无法忍受的事情。这些项目正在编制中,似乎运行得很完美。

调试时,执行行会跳过整个范围。

在第3行进入范围后,出现以下顺序-5、8、10、8、10、9、10、11、13

这不可能是正确的,发生了什么?

调试片段:

 1 void
 2 cLogger::Log(std::string text)
 3 {
 4 
 5     if (LogWrite)
 6     {
 7 
 8         LogMessage  msg;
 9         msg.type = Logger::None;
10         msg.message = text;
11         LogWrite(msg);
12 
13     }
14 
15 }

LogWrite是:typedef std::function<void(LogMessage&)>OnLogWrite;

LogMessage是一个简单的结构,带有std::字符串和枚举器;

cLogger是singleton的后裔,它是一个Ogre::singleton,但(目前)放在我自己的lib(realm.shared.lib)中。

输出日志:

1>------Rebuild All started : Project : realm.shared, Configuration : Debug Win32------
1>  Singleton.cpp
1>  realm.shared.vcxproj->D:DevelopmentProjectsRealmbinDebugrealm.shared.lib
2>------Rebuild All started : Project : Realm.Server.Application, Configuration : Release Win32------
2>  cApplication.cpp
2>  cCommand.cpp
2>  cConsole.cpp
2>  main.cpp
2>  cLogger.cpp
2>  cServer.cpp
2>  Generating code
2>  Finished generating code
2>  Realm.Server.Application.vcxproj->D:DevelopmentProjectsRealmbinReleaseRealm.Server.Application.exe
== == == == == Rebuild All : 2 succeeded, 0 failed, 0 skipped == == == == ==

(不确定标签VS2013是否在此处)

(如果需要更多或更少的信息,请告诉:真的不知道这里发生了什么)

这是因为您在Release配置中构建了项目Realm.Server.Application,从而构建了cLogger.cpp,这可能会重新排序指令以进行优化。

请将其更改为调试配置。