C++ 使用QTCreator的调试模式禁用优化

C++ 使用QTCreator的调试模式禁用优化,c++,qt,qt5,qt-creator,compiler-optimization,C++,Qt,Qt5,Qt Creator,Compiler Optimization,我正在尝试禁用QTCreator中的优化,以防止在调试模式下使用值 我在.pro文件中添加了以下内容: 编译正在使用-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.

我正在尝试禁用QTCreator中的优化,以防止在调试模式下使用值 我在.pro文件中添加了以下内容:

编译正在使用-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 
但当我在调试模式下运行程序时,我仍然可以看到值和设置跳转

如何在QTCreator的调试模式下正确禁用优化,并解决和跳跃问题


谢谢

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

我认为您没有使用正确的方法从QMAKE_cxflags中删除任何预先存在的-O标志,因为各种构建配置/目标系统/构建系统/主机系统/编译器/cpu/位数/月亮相位选项的QMAKE mkspecs文件都可以也要改变这些事情。我自己所看到和做的是:

CONFIG ~= s/-O[0123s]//g
CONFIG += -O0
第一行使用类似“sed”的编辑在处理过程中的某个点更改变量,我认为这是由~=运算符触发的;在这种用法中,它意味着搜索{leading s}第一个和第二个/i.e.{-O0或-O1或-O2或-O3或-Os}之间的任何正则表达式,这些正则表达式被第二个和第三个/i.e.{nothing}之间的正则表达式替换,并且全局地执行该操作{根据尾随的g,可能也有正的次数}


有些人可能会认为,如果您是项目创建者/维护者,那么修改CFLAG/cxflag使用的内容是不允许的,应该让最终用户自己作为最终用户来调整这些内容。然而,那是一个完全不同的环节动物金属密封容器

您是在谈论自己的代码还是其他库代码?你确定itpp config-cflags没有返回-O2或类似的值吗?@peppe:我说的是我自己的代码,它正在使用it++库;对你说得对!!谢谢itpp config-cflags返回-I/usr/local/include-O3-DNDEBUG;非常感谢你;如果你给我一个答案,我会接受的
CONFIG ~= s/-O[0123s]//g
CONFIG += -O0
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