【问题标题】:Disabling optimization with QTCreator's debug mode使用 QTCreator 的调试模式禁用优化
【发布时间】:2021-12-23 10:14:45
【问题描述】:

我正在尝试禁用 QTCreator 中的优化以防止 <optimized out> 值处于调试模式
我在我的.pro 文件中添加了这些:

QMAKE_CXXFLAGS += -O0
QMAKE_CXXFLAGS -= -O1
QMAKE_CXXFLAGS -= -O2
QMAKE_CXXFLAGS -= -O3

并且编译正在使用-O0 开关运行:

g++ -c -m64 -pipe -O0 `itpp-config --cflags-opt` -g -std=c++1y -Wall -W -D_REENTRANT -fPIC -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -I../ver.1-1.ryn -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtXml -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o main.o ../ver.1-1.ryn/main.cpp 

但是当我在调试模式下运行程序时,我仍然看到<optimized out> 值和设置跳过行!

如何在 QTCreator 的调试模式下正确禁用优化并解决<optimized out> 和跳转问题?

谢谢

【问题讨论】:

  • 你说的是自己的代码还是其他库代码?你确定itpp-config --cflags 没有返回 -O2 或类似的吗?
  • @peppe:我说的是我自己的代码(正在使用 it++ 库);是的!!你说得对!!谢谢!! itpp-config --cflags 正在返回 -I/usr/local/include -O3 -DNDEBUG ;非常感谢您;如果您创建一个答案,我会接受它

标签: c++ qt qt5 qt-creator compiler-optimization


【解决方案1】:

仔细检查 itpp-config --cflags 返回的内容。可能它还需要一个--debug 选项来避免返回优化标志。

【讨论】:

    【解决方案2】:

    我认为您没有使用正确的方法从QMAKE_CXXFLAGS 中删除任何预先存在的-O 标志作为各种构建配置/目标系统/构建系统/主机系统/ 的qmake mkspecs 文件编译器/cpu/位数/月相选项也可以改变这些东西。我自己所见所闻是:

    CONFIG ~= s/-O[0123s]//g
    CONFIG += -O0
    

    第一行使用类似“sed”的编辑来更改处理过程中的变量,我认为是由~= 运算符触发的;在这种用法中,它意味着搜索 {leading s} 以查找第一个和第二个 / 之间的任何正则表达式,即 {-O0-O1-O2-O3-Os}被第二个和第三个 / 之间的内容替换,即 {nothing} 并在全局范围内执行此操作{根据尾随 g,也可能出现正数}...

    有些人可能会争辩说,如果您是项目创建者/维护者,那么修改用于 CFLAG / CXXFLAG 的内容是不可以的,应该让最终用户自己调整这样的事情 作为最终用户。然而,那是一个完全不同的环节动物的金属密封容器

    【讨论】:

      【解决方案3】:
      QMAKE_CXXFLAGS_RELEASE -= -O1
      QMAKE_CXXFLAGS_RELEASE -= -O2
      QMAKE_CXXFLAGS_RELEASE -= -O3
      QMAKE_CXXFLAGS_RELEASE += -O0
      
      QMAKE_CFLAGS_RELEASE -= -O1
      QMAKE_CFLAGS_RELEASE -= -O2
      QMAKE_CFLAGS_RELEASE -= -O3
      QMAKE_CFLAGS_RELEASE += -O0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-24
        • 2021-09-28
        • 2018-05-18
        • 2015-12-18
        • 1970-01-01
        相关资源
        最近更新 更多