GDB调试乱序,出现value optimized out解决方法
gdb调试乱序,value optimized out解决方法
在cmakelist中修改如下:
# Add -O0 to remove optimizations when using gcc
IF(CMAKE_COMPILER_IS_GNUCC)set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
- 1
- 2
- 3
- 4
- 5
关于优化等级的说明:
这个选项控制所有的优化等级。使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候。 -O设置一共有五种:-O0、-O1、-O2、-O3和-Os。你只能在/etc/make.conf里面设置其中的一种。除了-O0以外,每一个-O设置都会多启用几个选项,请查阅gcc手册的优化选项章节,以便了解每个-O等级启用了哪些选项及它们有何作用。
让我们来逐一考察各个优化等级:
-O0:这个等级(字母“O”后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级。这样就不会优化代码,这通常不是我们想要的。
-O1:这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。
-O2:-O1的进阶。这是推荐的优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。
-O3:这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包将产生更大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。在gcc 4.x.中使用-O3是不推荐的。
-Os:这个等级用来优化代码尺寸。其中启用了-O2中不会增加磁盘空间占用的代码生成选项。这对于磁盘空间极其紧张或者CPU缓存较小的机器非常有用。但也可能产生些许问题,因此软件树中的大部分ebuild都过滤掉这个等级的优化。使用-Os是不推荐的。
正如前面所提到的,-O2是推荐的优化等级。如果编译软件出现错误,请先检查是否启用了-O3。再试试把CFLAGS和CXXFLAGS倒回到较低的等级,如-O1甚或-O0 -g2 -ggdb(用来报告错误和检查可能存在的问题),再重新编译。
-O0 不进行优化处理。
-O 或 -O1 优化生成代码。
-O2 进一步优化。
-O3 比 -O2 更进一步优化,包括 inline 函数。
GDB调试乱序,出现value optimized out解决方法相关推荐
- gdb调试 出现value optimized out解决方法
现象: gdb调试 出现value optimized out解决方法 原因: 由于gcc在编译过程中默认使用-O2优化选项,希望进行单步跟踪调试时,应使用-O0选项. 解决办法: 使用-O0选项 附 ...
- Xcode 真机调试 iOS 应用的各种问题和解决方法
process launch failed: Security 解决方法:打开手机设置->通用->设备管理->点击你的开发者账号->信任 ------------------- ...
- vs2015调试时不显示vector内容的解决方法
vs2015调试时不显示vector内容的解决方法 参考文章: (1)vs2015调试时不显示vector内容的解决方法 (2)https://www.cnblogs.com/Joetao/artic ...
- vscode 调试.net core 2.0 输出乱码解决方法
vscode 调试.net core 2.0 输出乱码解决方法 参考文章: (1)vscode 调试.net core 2.0 输出乱码解决方法 (2)https://www.cnblogs.com/ ...
- android程序突然崩溃如何调试,Android应用开发android 调试崩溃Unable to instantiate application的解决方法...
本文将带你了解Android应用开发android 调试崩溃Unable to instantiate application的解决方法,希望本文对大家学Android有所帮助. 更新后Android ...
- Android开发调试无法连接到夜神模拟器的解决方法
Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...
- 关于使用asp.net调试器出现的问题及相关解决方法
下面的文档列举了很多关于使用asp.net调试器出现的问题 消息1:无法在服务器上启动调试(Unable to start debugging on the Web server) 消息2:您没有在服 ...
- php网站调试出现的简单问题,调试php时网站出现502的解决方法
这是第二次遇到该问题了,上次解决后因为没有记录,结果这次遇到后又得重新查找解决方法.记忆力严重减退了啊,还是要保持边学边记录的习惯 网站在正常运行时是没有问题的,但是在使用xdebug进行远程调试时, ...
- VS2010附加进程调试DLL时断点无法断下的解决方法
系统版本:Win10 x64 1809 VS版本:VS2017 企业版 问题一 在动态链接库(DLL)附加到进程调试时,用VS2017附加后单步调试,结果发现总是在调试过程中卡死,VS2017无响应: ...
最新文章
- 昔日的独角兽Docker资金紧张,未来前途未卜
- 【风控流程】大数据风控代码逻辑
- NDK 交叉编译常用变量
- Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
- cent os mysql 内存_Cent OS – MySQL – 主从配置
- (转)Mysql 增删用户
- Java面试:应聘Java开发工程师的基本要求是什么?
- 夏普利值:全排列边际效益的平均
- JAVA解析IP地址
- java 核型技术 卷2 pdf,NGS-analysis/Structural-Variation.md at master · zhuhuo/NGS-analysis · GitHub...
- mapping中insert List语句
- JAVA后台生成海报分享图片(简单配置轻松生成)
- Android系统篇(二)——Android编译核心Build系统
- 开源知识管理系统_半个月收获接近 1k 的点赞!你需要的开源项目都在这里
- Web全栈开发学习笔记—Part2 与服务端通信—d.在服务端将数据Alert出来
- vs2017c语言程序打包,VS2017桌面应用程序打包成.msi或者.exe
- Centos7常用指令
- 不同进制之间的转换的各种方法
- 使用Mars3d创建一个地球
- Windows10更新后打开word是写字板形式解决方法