「デバッグ情報付きリリース」モードでQtをビルドする方法はありますか?私のアプリケーションは「リリース」モード(デバッグモードで正常に動作)でのみクラッシュし、問題はQtに起因するようです(Qtのバグである可能性があります)。したがって、Qtのデバッグ情報を確認したいと思います。
Qt docs には「デバッグ」、「リリース」がありますが、「デバッグ付きリリース」モードはありません。
[Upate]
私のアプリケーションは、Mingw32ビットリリース/デバッグおよびVSC++コンパイラ64ビットデバッグで正常に動作します。
VSC++ 64ビットリリースでのみクラッシュします
任意のヒント ?
更新:以下の@milanwの回答を参照してください。これはqmakeで直接サポートされるようになりました
Qtを使用してvcprojファイルを生成し、Qtをビルドします。 pythonスクリプト(ただし、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))
古い質問です。しかし、今日では、あなたは単に使用することができます
CONFIG += force_debug_info
リリースモードでもデバッグシンボルを取得します。コマンドラインからQMake
を使用する場合、私は通常、デバッグ情報を含むリリースビルドを取得するためにこれを行います。
qmake CONFIG+=release CONFIG+=force_debug_info path/to/sources
これにより、以下のQt5/mkspecs/features/
default_post.prf の条件が有効になります。
force_debug_info|debug: CONFIG += debug_info
force_debug_info {
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
}
これはQt 4.x
でも機能しますが、default_post.prf
のQt 4.x
に上記の条件を手動で追加する必要があります。
これをqmakeファイルで使用して、debuginfoを使用してリリースバージョンをビルドします。
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
これにより、コードでクラッシュが発生したかどうかを少なくとも確認できます。このモードでのQtのビルドはサポートされていません。これを参照してください バグ 。 Mackeの答えのようにvcproj-filesまたはMakefilesを変更することによってのみ手動で行うことができます。
Qt5では、configure
を呼び出すときに、オプション-force-debug-info
を追加するだけです。
このモードでのQtのビルドはサポートされていません。このバグを参照してください。 Mackeの答えのようにvcproj-filesまたはMakefilesを変更することによってのみ手動で行うことができます。
これをQt 4.8で追加してもらえれば、このバグは修正されたようです。これらの2行を.proファイルにコピーしたところ、魅力のように機能しました。
調整する必要があるようです QMAKE_CFLAGS_RELEASE
変数。 gccの場合、デバッグ情報を追加するために-gオプションを追加する必要があります。
デバッグビルドやリリースビルドではなく、QtCreatorの[プロジェクト]タブで[プロファイルビルド]を選択するだけです。 qmake呼び出しに多くの引数を追加します。
qmake.exe someproject.pro -spec win32-msvc "CONFIG+=qml_debug"
"CONFIG+=qtquickcompiler" "CONFIG+=force_debug_info" "CONFIG+=separate_debug_info"