Построить Qt в режиме "Release with Debug Info"?
Есть ли способ создать Qt в режиме "Release with Debug info"? Мое приложение вылетает только в режиме "выпуска" (отлично работает в режиме отладки), и, похоже, проблема исходит из Qt (может быть, ошибка в Qt). Поэтому я хочу видеть информацию об отладке Qt.
Qt docs имеет "отладочный", "освобождающий", но не "релиз с отлаживанием".
[Upate]
Мое приложение отлично работает с Mingw 32bit Release/Debug и VSС++ Compiler 64bit Debug.
Только сбой при выпуске VSС++ 64Bit
Любые советы?
Ответы
Ответ 1
Мы используем qmake для генерации файлов vcproj для построения Qt. Я написал python script (но sed тоже отлично), чтобы изменить vcproj файлы для сборки с помощью отладочной информации в релизе тоже.
Отладочная информация действительно бесценна для следов стека, которые идут взад и вперед между Qt и нашим приложением.
Вот соответствующий фрагмент:
for root, dirs, files in os.walk( qt_build_dir ):
for f in files:
if not f.endswith('.vcproj'):
continue
output = []
with open(pj(root, f), 'r') as file:
for line in file.readlines():
line = line.strip()
if 'DebugInformationFormat="0"' == line:
output.append('\t\t\t\tDebugInformationFormat="3"')
elif 'GenerateDebugInformation="false"' == line:
output.append('\t\t\t\tGenerateDebugInformation="true"')
else:
output.append(line)
with open(pj(root, f), 'w') as file:
file.write('\n'.join(output))
Ответ 2
Старый вопрос, я знаю. Но в настоящее время вы можете просто использовать
CONFIG += force_debug_info
чтобы получить символы отладки даже в режиме деблокирования. Когда вы используете QMake через командную строку, я обычно делаю это, чтобы получить сборку релизов с информацией об отладке:
qmake CONFIG+=release CONFIG+=force_debug_info path/to/sources
Ответ 3
Я использую это в своих файлах qmake для создания моих версий выпуска с помощью debuginfo:
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
Таким образом, вы можете, по крайней мере, проверить, произошел ли сбой в вашем коде.
Построение Qt с этим режимом не поддерживается, см. Этот bug.
Вы можете сделать это вручную, изменив vcproj файлы или Make файлы, как в ответе Маке.
Ответ 4
В Qt5 при вызове configure
просто добавьте опцию -force-debug-info
Ответ 5
Похоже, вам нужно настроить переменную QMAKE_CFLAGS_RELEASE
. В случае gcc вам просто нужно добавить опцию -g, чтобы добавить информацию об отладке.
Ответ 6
Построение Qt с этим режимом не поддерживается, см. эту ошибку. Вы можете сделать это вручную, изменив vcproj файлы или Make файлы, как в ответе Маке.
Можно добавить, что в Qt 4.8 эта ошибка, по-видимому, исправлена. Я скопировал эти две строки в мой .pro файл, и он работал как прелесть.