2011-10-29 8 views
0

Visual Studio 2003のコンパイル済みC++アプリケーションからデバッグシンボルを削除する方法を教えてもらえますか?私はそれを "リリース"としてコンパイルしました。シンボルはすでに削除されていますか、それともそれらはまだ存在していますか?もしそうなら、どうすればそれらを取り除くことができますか?Visual C++ 2003でデバッグシンボルを削除する

ありがとうございました!

答えて

2

はい、リリースモードでコンパイルすると、デバッグシンボルは既に削除されています。

デバッグシンボルをバイナリに追加すると、バイナリのサイズが大きくなります。これは、プログラムの実行に必要な情報以外の追加情報であるためです。デバッグモードでは、プログラムが開発中であり、リリースモードでは、バイナリのサイズはできるだけ小さくする必要があります(開発がすでに完了しているため)。リリースモードを選択すると、これらの追加のデバッグ情報は既に削除されています。

+0

大丈夫、ありがとう! – Omegavirus

2

私の知る限り、すべてのデバッグ情報は.pdbファイルに保存されています。 .exeにはこの.pdbファイルの名前だけがあり、それ以上のものはありません。実験をして自分でそれを見てください。デバッグ情報の有無にかかわらずリリースをビルドし、その差異を比較します(もちろん、他のオプションは変更しないでください)。ファイルはほとんど同じでなければなりません。リリースビルドからデバッグ情報を除外する理由はなく、それを含める理由はたくさんあります。

+0

この実験の目的は、デバッグ情報の有無にかかわらずビルドするときの違いを発見することです。これは主にリリースビルドで重要です。この実験を実行する間、他のすべてのコンパイラオプションは変更しないでください。 – Dialecticus

+0

私はデバッグとビルドのビルドと違いを比較して誤解しました。 –

+0

私は、デバッグビルドの説明を削除して、より明確にしました。デバッグビルドは、このストーリーとは関係がありません。 – Dialecticus

1

デバッグ情報設定を使用して、この情報がオブジェクト(.obj)ファイルまたはプログラムデータベース(PDB)に保存されているかどうかをデバッグシンボルの生成方法と場所を制御します。 MSDNの/Z7, /Zi, /ZI (Debug Information Format)を参照してください。

PDBデータベースでデバッグシンボルを正しく生成しても、プログラムのパフォーマンスに影響はありません。ジョン・ロビンのブログを参照してくださいDo PDB Files Affect Performance?

関連する問題