Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Visual Studio中启用优化标志的调试代码_C++_Visual Studio_Debugging_Visual Studio Debugging - Fatal编程技术网

C++ 在Visual Studio中启用优化标志的调试代码

C++ 在Visual Studio中启用优化标志的调试代码,c++,visual-studio,debugging,visual-studio-debugging,C++,Visual Studio,Debugging,Visual Studio Debugging,我有一个多模块的项目。以前,一些核心模块没有启用OPTMISSION标志(最大速度/O2)。现在,在启用它们之后,我的应用程序将编译并运行,但是在运行时,我遇到了其中一个功能的错误。该功能在未启用优化标志的情况下按预期运行 所以,看起来优化正在以一种使应用程序失灵的方式改变代码——但我一直在试图弄清楚这种改变是什么。其他人以前有没有遇到过这个问题?我该如何着手解决这个问题,有什么建议吗 可以对一个应标记为volatile的变量执行此操作,以使编译器知道不要使用它。哪一个和在哪里必须通过调试来确定

我有一个多模块的项目。以前,一些核心模块没有启用OPTMISSION标志(最大速度/O2)。现在,在启用它们之后,我的应用程序将编译并运行,但是在运行时,我遇到了其中一个功能的错误。该功能在未启用优化标志的情况下按预期运行


所以,看起来优化正在以一种使应用程序失灵的方式改变代码——但我一直在试图弄清楚这种改变是什么。其他人以前有没有遇到过这个问题?我该如何着手解决这个问题,有什么建议吗

可以对一个应标记为
volatile
的变量执行此操作,以使编译器知道不要使用它。哪一个和在哪里必须通过调试来确定。一个典型的例子是while循环,其条件由该循环内未更改的值决定。启用符号调试信息(也可以对优化的构建进行此操作)进行构建,然后像往常一样进行调试。如果使用各种STL容器(向量、映射等),则从一个模块(DLL)向它们传递指针对于另一个函数参数或结果,如果这些模块使用不同的优化标志编译,则会导致错误,因为对于不同的优化标志,STL容器的内部实现是不同的。可以对应标记为
volatile
的变量执行此操作,以使编译器知道不要使用它。哪一个和在哪里必须通过调试来确定。一个典型的例子是while循环,其条件由该循环内未更改的值决定。启用符号调试信息(也可以对优化的构建进行此操作)进行构建,然后像往常一样进行调试。如果使用各种STL容器(向量、映射等),则从一个模块(DLL)向它们传递指针另一方面,由于函数参数或结果不同,并且这些模块使用不同的优化标志编译,因此会导致错误,因为不同的优化标志对STL容器的内部实现不同。