5

C++ では、ほとんどのライブラリがデバッグ/リリース バージョンで提供されます。質問 1. デバッグ バージョンとリリース バージョンの大きな違いは何ですか (たとえば、どちらを使用する場合と比べてどのような利点がありますか)。

質問 2. ライブラリには関数の実装が含まれているだけですが、デバッグ/リリース バージョンを使用している場合、関数の実装はどのように変化しますか?

質問 3. アプリをデバッグ モードでビルドし、リリース バージョンのライブラリを使用することはできますか?

ありがとう。

4

2 に答える 2

3

答え 1

デバッグモード

  • デバッグ用のシンボルが含まれています。つまり、デバッガーはプログラムの現在の場所をソースコード内のその場所にリンクできます
  • #ifdef DEBUGブロック内にあるコードなど、デバッグのみのコードが含まれている可能性があります

リリースモード

  • デバッグ関連のコードが削除されているため、高速です。
  • シンボルがないため、デバッグに制限があります。

答え 2

  • ライブラリの実装方法に依存

答え 3

于 2010-12-26T00:53:22.117 に答える
1

デバッグ バージョンは通常、ほとんど最適化されていない状態でビルドされます。したがって、ソースを使用してデバッガーでステップ実行すると、ソース行とプログラムで行われていることの間に適切なマッピングが存在する可能性が高くなります。高度に最適化されたコードをステップ実行すると、ソースにうまくマッピングされず、デバッグが難しくなります。

また、誰かが#ifdef DEBUGまたは同等のものを使用するときはいつでも、そのコードはリリース バージョンにはありません (もちろん)。これは、追加のエラー チェック、ロギング、アサートなどである可能性があります。

通常、関数のインターフェイスは debug と release で異なるべきではないため、通常は debug と release を問題なくリンクできます。

ただし、一部のライブラリに組み込まれている DLL のロードが原因で、(特に Windows で) 非常に困難になる場合があります。DLL のデバッグ バージョンを読み込もうとする人もいれば、リリースしたい人もいます。これらの両方を同じプロセスにロードすることはできません。

于 2010-12-26T00:53:59.313 に答える