VS2010では、linkerの下にあるexe/dllのデバッグ情報を生成するオプションがありますが、librarianの下にあるライブラリにはそのようなオプションはありません。デバッグ情報は静的ライブラリに埋め込まれていますか?
C/C++プログラムデータベースファイル名のプロパティには、libs、exe、およびdllのオプションがあります。デフォルトでは、中間ディレクトリに移動し、libsのプロジェクト名が付けられますが、exes/dllの場合はvc $(PlatformToolsetVersion).pdbという名前になります。このオプションのpdbとは何ですか?リンカーオプションのpdbとはどう違うのですか?
ライブラリにライブラリとヘッダーを提供する場合、ライブラリのユーザーにデバッグシンボルを提供するにはどうすればよいですか?
_/ZI
_または_/Zi
_(_C/C++
_-> General
-> _Debug Information Format
_)を使用すると、vc$(PlatformToolsetVersion).pdb
が作成されます。作成されたすべての_.obj
_ファイルのデバッグ情報が含まれます。代わりに_/Z7
_を使用する場合、デバッグ情報は_.obj
_ファイルに埋め込まれ、その後_.lib
_に埋め込まれます。これは、おそらく静的ライブラリのデバッグ情報を配布する最も簡単な方法です。
ただし、静的ライブラリは一般にコンパイラの特定のバージョンに関連付けられているため、静的ライブラリを配布することはお勧めしません。
完全なハウツーが必要な人向けに、以前の回答を拡張します(VS 2013)。
これは、VS2013の問題に関するコメント^^に対処する必要があることに注意してください。
方法1:プログラムデータベース(.pdb)の方法(/ Ziまたは/ ZI)
静的ライブラリプロジェクト:静的ライブラリと同じ名前のpdbを生成します:
View
メニューから_Solution Explorer
_を開きます。Properties
を選択しますConfiguration Properties
_-> _C/C++
_-> General
-> _Debug Information
_を_/Zi
_または_/ZI
_ に編集します/ZI
_は、デバッグ中に「編集して続行」編集を許可することに注意してください。Configuration Properties
_-> _C/C++
_-> _Output Files
_-> _Program Database File Name
_を$(OutDir)$(TargetName).pdb
に編集しますアプリケーションプロジェクト:実行可能ファイルを静的ライブラリと新しいPDBファイルにリンクします:
Debug Information
_プロパティを編集します。Configuration Properties
_-> Linker
-> General
-> _Additional Library Directories
_を編集し、独自の「libs」ディレクトリ、またはYourLibを保持/コピーする予定のディレクトリを追加します。 libおよびYourLib.pdbファイル。Configuration Properties
_-> Linker
-> Input
-> _Additional Dependencies
_を編集し、_YourLib.lib
_(前にパスなし)を追加します方法2:埋め込みシンボル(.pdbなし)方法(/ Z7)
静的ライブラリプロジェクト:デバッグシンボルが埋め込まれた静的ライブラリを生成します
Debug Information
_を変更しますただし今回はto _/Z7
_アプリケーションプロジェクト:静的ライブラリと実行可能ファイルをリンクします
Debug Information
_プロパティを変更しますAdditional Library Directories
_を編集しますAdditional Dependencies
_を編集しますAdditional Library Directories
_で指定されたディレクトリにコピーしますディスカッション:
Debug Information
_設定を指定しないのはなぜですか?この投稿は、静的ライブラリコードでデバッグを動作させる方法に関するものです。同じ「方法1対方法2」の選択は、アプリケーションプロジェクトにも適用されます。VS2013では、C/C++出力ファイルタブでプログラムデータベースファイル名を設定できることに気付きました。デフォルトから$(OutDir)$(TargetName).pdbなどに変更すると、問題が解決します
静的ライブラリは、それらを使用するプログラムに実装されます。
それらを使用するプログラムがデバッグシンボルを使用している場合、そのプログラムのコンパイル済みライブラリコードにもシンボルが含まれます。
ウィキペディアからのPDB情報:
デバッグシンボルがバイナリ自体に埋め込まれている場合、ファイルは非常に大きくなることがあります(数メガバイト)。この余分なサイズを回避するために、最新のコンパイラと初期のメインフレームデバッグシステムは、シンボリック情報を個別のファイルに出力します。 Microsoftコンパイラの場合、このファイルはPDBファイルと呼ばれます。
VS2012の奇妙な動作。最初から(またはnmakeの/ Aオプションを使用して)ビルドすると、.pdbファイルが生成されます。 .libと.pdbを削除してnmakeを再実行し(もちろん/ Aなしで、リンクのみを実行します)、. pdbファイルは出力されません。