但是通过尝试发现还是显示
变量
被
优化
划
掉
,感觉可能是配置的问题,把ReleaseD改成Release以后就好了。随后,调整了项目->右键->属性里面的c/c++
优化
,改为已禁用(/Od)。今天调试代码的时候,发现显示我的
变量
被
优化
掉
,
不可
用的问题。
Visual
Studio
在Release模式下开启debug调试,不然编译器会
优化
变量
,无法在调试时看到
变量
的值。如果没有调整Visual
Studio
的配置,是无法实现release版本的单步调试功能的。
在Visual
Studio
一般默认有四种编译方式:
Debug, MinSizeRel, Release, RelWithDebInfo.
RelWithDebInfo模式在保留Release模式下运行快速的前提下,又可以给特定的工程开启Debug模式,进行针对性的调试。这样比整个项目都采用D
编译器的
优化
,很多我们是可以通过设置来取消,而有些则需要声明一些特殊的条件来解决。如:
变量
在寄存器取值的时候,我们就可以用volatile关键字来解决。
记住:过早
优化
是万恶之源
在使用Debug模式对程序进行调试的时候,发现
变量
的值显示被
优化
掉
了,看不到它的值,如下图所示:
解决办法就是,在vs顶部工具栏上,选择工具->属性,打开属性页,然后依次选择配置属性->C/C++->
优化
,将
优化
栏的值选为已禁用(/Od),然后确定保存设置就可以了。如下图所示:
修改完成后,再次运行程序,就可以正常看到每个
变量
的值了:
一般来说,上述设置的
优化
选项
中
,最大
优化
(优选速度)(/O2)是release版本的设置,它会在执行过程
中
对代码和
变量
进行
优化
,因此,
问题:UE4 debug时查看
变量
,
变量
显示variable is optimized away and not available。
解决方法: 在想要查看
变量
得函数前加#pragma optimize("",off) 和 #pragma optimize("",on)