5

リンクされたライブラリのリリースバージョンをデバッグする必要があります。この記事に続くリリースビルドですでにデバッグ情報を生成していますが、ライブラリプロジェクトで同じことを行うにはどうすればよいですか?ライブラリプロジェクトには、上記のリンクでデバッグ情報が作成されるプロパティにリンクページがないことに注意してください。VS2010を使用しています。

私が本当に望んでいるのは、ライブラリのデバッグ中にTRACEを機能させることです。ライブラリのデバッグバージョンをリリースexeにリンクしようとしましたが、リンカーエラーが発生します。

4

2 に答える 2

2

私が本当に望んでいるのは、TRACEを機能させることです...

MFC TRACEマクロのことですか?デバッガーのデバッグ/出力ウィンドウにメッセージを書き込むものですか?

残念ながら、ビルド設定を修正して、最終的な実行可能ファイルに静的ライブラリのデバッグ情報が含まれるようにしても、それらのトレースステートメントは返されません。TRACEはマクロであるため、コンパイラーのプリプロセッサーによって処理されます。リリースモードでコンパイルすると、そのマクロはノーオペレーションとして再定義されます。これは、TRACEステートメントがソースコードから削除されたかのようです。

ライブラリと実行可能ファイルにデバッグシンボルを追加する問題を解決したとしても、それらのトレースステートメントは元に戻りません。それらはコンパイル段階で削除されました。

じゃあ何をすればいいの?これらのマクロを十分に深く掘り下げると、最終的にはWin32関数OutputDebugStringを呼び出していることがわかります。この呼び出しは、msライブラリのデバッグバージョンとリリースバージョンの両方で使用できます。したがって、トレースマクロをOutputDebugStringの明示的な呼び出しに置き換えることができます。コーディングするのはそれほど便利ではありませんが、少なくともリリースモードでデバッグ出力を取得できます。

ところで、私はついに何年も前にそれらすべてのマクロをあきらめ、log4cplus呼び出しに完全に置き換えました。トレースマクロが本当に必要なのはデバッグ中ではなく、コードが本番環境にあり、問題をローカルで再現できないためです。顧客が送信できるファイルにログを記録してから、デバッガーでのみ機能するトレースに依存することをお勧めします。とにかく考慮すべきこと...

于 2012-12-21T05:52:41.260 に答える
1

静的ライブラリはリンクされていないため、リンカーオプションが使用できないのは当然です。基本的には、デバッグ情報を生成するようにコンパイラに指示する必要があります。そこから、ライブラリを作成することは、一連のオブジェクトファイルを1つのファイルにまとめるだけです。

したがって、基本的には、デバッグ情報を生成するようにコンパイラーに指示するだけで、ライブラリーにデバッグ情報が含まれます。

于 2012-12-21T05:14:41.837 に答える