21

IDEでファイルをデバッグおよび作成した後、最終的なバイナリ実行可能ファイルまたはDLLを常に確認していました。今、私は Visual C++ 2010 を試しており、ゴミや不要な参照のない最適なリリースを探しています。そこで、実行可能ファイルとその DLL の 2 つのプロジェクトで新しいソリューションを作成しました。VC++ は、コードと最終ファイルの間に多くの中間ファイルを作成しました。.exe と .dll を 16 進エディタで開いたところ、気に入らないものが表示されました。ファイル内のどこかに .PDB ファイルへの絶対パスがあります。

なんで?VC++ から削除するにはどうすればよいですか?

これには、何らかのプリプロセッサ コマンドが必要です。異なるフォルダーを持つコンピューターに配布されるファイルのバイナリ内の"D:\My Projects\Project1\Release\Project1.pdb"のような .PDB ファイルへの絶対パスの使用は何ですか? それに加えて、自分のドライブのパスの 1 つが、他の人と共有したいバイナリ ファイル内に保存されているのを見るのは好きではありません。私は解放モードにいます。その不必要な情報の使用は見られません。どうすれば削除できますか?

4

3 に答える 3

21

/pdbpath:none(または/pdbaltpath:%_PDB% 新しいバージョンのlink.exe) を使用して、PDB ファイルの完全修飾パス名を削除できますが、PDB の名前と拡張子のみを保持します。リリースされたイメージの PDB の名前 (および拡張子) を保持することが、バグのあるイメージをデバッグする唯一の方法です。Windows イメージは、ほとんどの場合、PDB の名前と拡張子を保持しています!

于 2012-06-24T09:00:15.753 に答える
14

MSDNのPDB ファイルのドキュメントを参照してください。

プログラム データベース (PDB) ファイルには、プログラムのデバッグ構成のインクリメンタル リンクを可能にするデバッグ情報とプロジェクト状態情報が保持されます。/ZI または /Zi を使用して C/C++ プログラムをコンパイルするか、/debug を使用して Visual Basic/C#/JScript .NET プログラムをコンパイルすると、PDB ファイルが作成されます。

Visual C++ では、/Fd オプションは、コンパイラによって作成された PDB ファイルに名前を付けます。ウィザードを使用して Visual Studio でプロジェクトを作成すると、project.PDB という名前の PDB を作成するように /Fd オプションが設定されます。

ドキュメントには絶対パスが記載されていることに注意してください。

Visual Studio デバッガーは、リンカーによって作成された project.PDB ファイルを直接使用し、PDB への絶対パスを EXE または DLL ファイルに埋め込みます。

いつでも [プロジェクト プロパティ] > [リンカー] > [デバッグ] > [デバッグ情報の生成] に移動して、[いいえ] に設定できます。

于 2012-06-19T21:00:51.960 に答える