使用 QTCreator 的调试模式禁用优化
Disabling optimization with QTCreator's debug mode
我正在尝试禁用 QTCreator 中的优化以防止在调试模式下出现 <optimized out>
值
我在 .pro
文件中添加了这些:
QMAKE_CXXFLAGS += -O0
QMAKE_CXXFLAGS -= -O1
QMAKE_CXXFLAGS -= -O2
QMAKE_CXXFLAGS -= -O3
编译为运行 -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
但是当我 运行 在调试模式下编程时,我仍然看到 <optimized out>
值并且设置会跳过这些行!!
如何在QTCreator调试模式下正确禁用优化并解决<optimized out>
和跳转问题?
谢谢
仔细检查 itpp-config --cflags
返回的内容。可能它还需要一个 --debug
选项来避免返回优化标志。
我认为您没有使用正确的方法从 QMAKE_CXXFLAGS
中删除任何预先存在的 -O
标志作为各种构建 [=37] 的 qmake mkspecs
文件=] system/build system/host system/compiler/cpu/number of bits/phase of moon 选项也可以改变这些东西。我自己所见所闻是:
CONFIG ~= s/-O[0123s]//g
CONFIG += -O0
第一行使用类似 'sed' 的编辑来更改处理过程中那个点的变量,我认为 是由 ~=
运算符触发的;在这种用法中,它意味着在第一个和第二个 /
之间搜索 {leading s
} 任何正则表达式,即 {-O0
或 -O1
或 -O2
或 -O3
或 -Os
} 替换为第二个和第三个 /
之间的内容,即 {nothing} 并在全球范围内执行此操作{根据尾随 g
,a正数也是可能的}...
有些人可能会争辩说,如果你是一个项目 creator/maintainer,修改用于 CFLAG / CXXFLAG 的内容是不允许的,应该留给最终用户来调整这样的事情他们自己 作为 最终用户。然而,那是一个 完全不同的环节动物金属密封容器 !
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
我正在尝试禁用 QTCreator 中的优化以防止在调试模式下出现 <optimized out>
值
我在 .pro
文件中添加了这些:
QMAKE_CXXFLAGS += -O0
QMAKE_CXXFLAGS -= -O1
QMAKE_CXXFLAGS -= -O2
QMAKE_CXXFLAGS -= -O3
编译为运行 -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
但是当我 运行 在调试模式下编程时,我仍然看到 <optimized out>
值并且设置会跳过这些行!!
如何在QTCreator调试模式下正确禁用优化并解决<optimized out>
和跳转问题?
谢谢
仔细检查 itpp-config --cflags
返回的内容。可能它还需要一个 --debug
选项来避免返回优化标志。
我认为您没有使用正确的方法从 QMAKE_CXXFLAGS
中删除任何预先存在的 -O
标志作为各种构建 [=37] 的 qmake mkspecs
文件=] system/build system/host system/compiler/cpu/number of bits/phase of moon 选项也可以改变这些东西。我自己所见所闻是:
CONFIG ~= s/-O[0123s]//g
CONFIG += -O0
第一行使用类似 'sed' 的编辑来更改处理过程中那个点的变量,我认为 是由 ~=
运算符触发的;在这种用法中,它意味着在第一个和第二个 /
之间搜索 {leading s
} 任何正则表达式,即 {-O0
或 -O1
或 -O2
或 -O3
或 -Os
} 替换为第二个和第三个 /
之间的内容,即 {nothing} 并在全球范围内执行此操作{根据尾随 g
,a正数也是可能的}...
有些人可能会争辩说,如果你是一个项目 creator/maintainer,修改用于 CFLAG / CXXFLAG 的内容是不允许的,应该留给最终用户来调整这样的事情他们自己 作为 最终用户。然而,那是一个 完全不同的环节动物金属密封容器 !
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