2

私は mysql cpp ライブラリを使用しています。そこで bzr トランクから最近のコピーをチェックアウトし、cmake を使用してライブラリを生成しました。

最初はリリース モードを使用し、2 回目はデバッグ モードを使用してビルドしました。両方のライブラリには

a mysql_debug.cpp
U mysql_debug

プログラム (C または C++ コード) をチェックインする方法、またはライブラリがリリース ライブラリまたはデバッグ ライブラリである nm を使用する方法はありますか

4

3 に答える 3

1

nmで偽陰性を見たことがあるので、信頼していません。オブジェクト ファイルにデバッグ情報があるかどうかを確認するには、オブジェクト ファイルまたはライブラリに対して objdump -x を実行し、dbg、stabs、または dwarf というヘッダーがあるかどうかを確認します。これは決して最も洗練されたソリューションではありませんが、間違ったことは一度もありません。デバッグ ビルドとリリース ビルドを比較すると、その違いを簡単に確認できます。

于 2011-03-24T08:27:18.953 に答える
0

objdump -x を実行し、出力をファイルに保存して dll を検索します。ライブラリが Windows リリース ライブラリとリンクしている場合は、そのリリース バージョン、またはデバッグ バージョンです。

于 2012-07-13T13:03:03.800 に答える
0

デバッグ ビルドとリリース ビルドの違いは、通常、非互換性ではなく、無効なコードが異なる方法で最適化されているためです。そのため、一方が機能し、もう一方が機能しないのはまったくの運です (逆の場合もあります)。

プログラムを実行して、valgrind不正なアクセスにフラグが立てられるかどうかを確認します。

于 2012-07-13T13:48:31.513 に答える