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解决方法相关推荐

  1. gdb调试 出现value optimized out解决方法

    现象: gdb调试 出现value optimized out解决方法 原因: 由于gcc在编译过程中默认使用-O2优化选项,希望进行单步跟踪调试时,应使用-O0选项. 解决办法: 使用-O0选项 附 ...

  2. Xcode 真机调试 iOS 应用的各种问题和解决方法

    process launch failed: Security 解决方法:打开手机设置->通用->设备管理->点击你的开发者账号->信任 ------------------- ...

  3. vs2015调试时不显示vector内容的解决方法

    vs2015调试时不显示vector内容的解决方法 参考文章: (1)vs2015调试时不显示vector内容的解决方法 (2)https://www.cnblogs.com/Joetao/artic ...

  4. vscode 调试.net core 2.0 输出乱码解决方法

    vscode 调试.net core 2.0 输出乱码解决方法 参考文章: (1)vscode 调试.net core 2.0 输出乱码解决方法 (2)https://www.cnblogs.com/ ...

  5. android程序突然崩溃如何调试,Android应用开发android 调试崩溃Unable to instantiate application的解决方法...

    本文将带你了解Android应用开发android 调试崩溃Unable to instantiate application的解决方法,希望本文对大家学Android有所帮助. 更新后Android ...

  6. Android开发调试无法连接到夜神模拟器的解决方法

    Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...

  7. 关于使用asp.net调试器出现的问题及相关解决方法

    下面的文档列举了很多关于使用asp.net调试器出现的问题 消息1:无法在服务器上启动调试(Unable to start debugging on the Web server) 消息2:您没有在服 ...

  8. php网站调试出现的简单问题,调试php时网站出现502的解决方法

    这是第二次遇到该问题了,上次解决后因为没有记录,结果这次遇到后又得重新查找解决方法.记忆力严重减退了啊,还是要保持边学边记录的习惯 网站在正常运行时是没有问题的,但是在使用xdebug进行远程调试时, ...

  9. VS2010附加进程调试DLL时断点无法断下的解决方法

    系统版本:Win10 x64 1809 VS版本:VS2017 企业版 问题一 在动态链接库(DLL)附加到进程调试时,用VS2017附加后单步调试,结果发现总是在调试过程中卡死,VS2017无响应: ...

最新文章

  1. 昔日的独角兽Docker资金紧张,未来前途未卜
  2. 【风控流程】大数据风控代码逻辑
  3. NDK 交叉编译常用变量
  4. Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
  5. cent os mysql 内存_Cent OS – MySQL – 主从配置
  6. (转)Mysql 增删用户
  7. Java面试:应聘Java开发工程师的基本要求是什么?
  8. 夏普利值:全排列边际效益的平均
  9. JAVA解析IP地址
  10. java 核型技术 卷2 pdf,NGS-analysis/Structural-Variation.md at master · zhuhuo/NGS-analysis · GitHub...
  11. mapping中insert List语句
  12. JAVA后台生成海报分享图片(简单配置轻松生成)
  13. Android系统篇(二)——Android编译核心Build系统
  14. 开源知识管理系统_半个月收获接近 1k 的点赞!你需要的开源项目都在这里
  15. Web全栈开发学习笔记—Part2 与服务端通信—d.在服务端将数据Alert出来
  16. vs2017c语言程序打包,VS2017桌面应用程序打包成.msi或者.exe
  17. Centos7常用指令
  18. 不同进制之间的转换的各种方法
  19. 使用Mars3d创建一个地球
  20. Windows10更新后打开word是写字板形式解决方法

热门文章

  1. Spring面试问题与解答
  2. 关于缓存穿透,缓存击穿,缓存雪崩,热点数据失效问题的解决方案(转)
  3. java 自定义编译注解 进行代码检查
  4. Hibernate 中出现 xxx表 is not mapped xxx的问题
  5. 【Python】自动化升级所有pip安装的包
  6. 【C语言】利用二维数组输出成绩
  7. 面向对象设计原则之6-合成复用原则
  8. dockerfile写法和docker-compose和docker-compose.yml
  9. mysql innodb的索引基本入门
  10. python spark安装_windows下安装spark-python