Подтвердить что ты не робот

Построить 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

Любые советы?

4b9b3361

Ответ 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 файл, и он работал как прелесть.