有趣的调试,这里发生了什么
Funky Debugging, what is happening here?
在这个项目中,我遇到了一些根本无法忍受的事情。这些项目正在编制中,似乎运行得很完美。
调试时,执行行会跳过整个范围。
在第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
,这可能会重新排序指令以进行优化。
请将其更改为调试配置。
相关文章:
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 这C++代码中发生了什么C++(指数函数)
- 哪种方式更快?究竟发生了什么,我们没有看到什么?
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- c++问题:给一个变量赋值后,另一个变量发生了变化
- istringstream,num1 和 num2 在这里发生了什么?
- C++ - *(int**) 地址?这里发生了什么?
- 这里的矢量数组发生了什么?
- 这里发生了什么,还有输出是什么?(无线索)
- 如果有人能向我解释这里发生了什么
- 有人可以解释一下这里发生了什么(类和构造函数/析构函数)吗?
- 值未存储在向量中 - 不确定这里发生了什么
- 为什么 x 0 在这里,x=1 语句中发生了什么?
- 这里的计算机内存中发生了什么
- 字符到整数的转换 - 这里发生了什么?
- 有趣的调试,这里发生了什么
- 带有模板的类模板 同学朋友,这里到底发生了什么?
- 我的ArrayStack在这里发生了什么
- 这里到底发生了什么