Disabling optimization with QTCreator's debug mode

时间:2016-11-09 08:26:17

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

I'm trying to disable optimization in QTCreator to prevent <optimized out> values in debug mode
I added these in my .pro file:

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

and the compile is running with -O0 switch:

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 

But when i run program in debug mode I still see <optimized out> values and setping jumps over the lines!!

How can i correctly disable optimization in debug mode of QTCreator and solve the <optimized out> and jumping problem?

Thanks

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我认为您没有使用正确的方法从-O删除任何预先存在的QMAKE_CXXFLAGS标记作为各种构建配置/目标系统的qmake mkspecs文件/构建系统/主机系统/编译器/ cpu /位数/月相选项的阶段也可以改变这些事情。我自己看到和完成的是:

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

第一行使用的是&#39; sed&#39;比如编辑在处理中改变那个我认为~=运算符触发的变量;在此用法中,它表示对第一个和第二个s之间的任何正则表达式进行搜索{/},即{-O0-O1-O2-O3-Os}替换为第二个和第三个/之间的内容,即{nothing},并在全局范围内执行此操作{根据尾随g,也可能是正的次数} ...

有些人可能会争辩说,如果你是一个项目创建者/维护者,修改用于CFLAG / CXXFLAG的内容是禁止的,应该让最终用户为自己调整这样的事情 as 最终用户。然而,这是一个整个不同金属密封容器的Annelids

答案 2 :(得分:0)

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