Funky Debugging,这里发生了什么?

时间:2014-09-16 08:24:50

标签: c++ compilation visual-studio-2013

通过这个项目,我遇到了一些我根本无法崩溃的事情。这些项目正在编译,似乎工作得很完美。

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

在第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 :: string和枚举器的简单结构;

cLogger是一个单例的下降,它是一个Ogre :: Singleton,但是(现在)放在我自己的lib(realm.shared.lib)中。

输出日志:

1>------Rebuild All started : Project : realm.shared, Configuration : Debug Win32------
1>  Singleton.cpp
1>  realm.shared.vcxproj->D:\Development\Projects\Realm\bin\Debug\realm.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:\Development\Projects\Realm\bin\Release\Realm.Server.Application.exe
== == == == == Rebuild All : 2 succeeded, 0 failed, 0 skipped == == == == ==

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

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

1 个答案:

答案 0 :(得分:5)

这是因为您在 Release 配置中构建了项目Realm.Server.Application,因此cLogger.cpp,这可能会重新排序优化说明。

请将其更改为调试配置。