PDBファイルは、それのパフォーマンスに影響を与えるのだろうか?

「生成されたデバッグ情報と強く反対ビルドリリースモードのバイナリであるため、会社のIの仕事を、そしてこれは私が私の質問をして、ある影響を受けた彼らはデモを心配されているクラスに申し込んだ理由の一つです:誰かが質問をしました。どのようなシンボルを生成するための最良のコマンドラインパラメータであることは、他には何のパフォーマンス上の問題があってはならないことを示すために私を参照することができ、リリースモード?です。」

答えは次のとおりです。パフォーマンスに影響を与えることなくPDBファイルを生成しません。これまで私はあなたの参照を与えることができるように指摘したように、私はので、私は、.NETとネイティブ開発を紹介しましょう回し、オンライン正確な答えの質問上の任意の情報を見つけていません。

エリックリッペルトは、最適化スイッチは何をやっている、素晴らしい記事を書きましたか?彼は行わコンパイラと時間(JIT)コンパイラの最適化を議論しました。(基本的には、すべての実際の作業は、最適化ジッタにあるか、それをまとめることができます。)C#とVB.NETコンパイラの間でいくつかの混乱を切り替えるには、四つの異なる/デバッグスイッチがあるので、/デバッグ/デバッグ+、 / デバッグ:フルおよび/デバッグ:PDB。3他の/ debugスイッチの異なるものとわずか数PDBが、彼らはリリースバージョンを構築するために優れている:私は思うので/デバッグ、この混乱の原因となった理由

すべての4つのスイッチは、彼らがPDBファイルを生成しますので、同じことを行うが、なぜ4つのスイッチがあり、同じことを行いますか?わずかに異なるコマンドラインオプションを解決するために、Microsoftの開発者は本当になどはありますか?本当の理由は次のとおりです。歴史。.NET1.0ではなく、.NET2.0での違いがあります。ルックス.NET4.0は同じパターンに従います。繰り返し行わチェックとデバッグCLRチームの後、違いはありません。

ジッタは、デバッグ/最適化スイッチを実行するために生成されるかどうかをコントロール。使用/最適化建設- DebuggableAttributeは、アセンブリ内の属性を追加し、パラメータDebuggingModeのDisableOptimizationsを設定します。ロードス学者が無効の最適化は、それが何を言っていることによるものである、把握できるようにする必要はありません。

最終的に、あなたは、デバッグのためのソースコードを使用することができますので、ビルドをリリースする/最適化+および任意の/デバッグ・スイッチを使用します。プロジェクトの異なる種類で、これらのスイッチを設定する方法を学習するには、Visual Studioのマニュアルをお読みください。

これらは、簡単に最適なスイッチングを実証しています。私は別の建物にちょうど/最適化+コンパイラで建物をコンパイルしたプログラム例、I /最適化+および/デバッグを使用します。これは/デバッグ+および/同じデバッグで、及び/最適化+ /デバッグを持つ別:同じpdbonly、ショーの違いは、このエラーのわれわれの情報源です。コンパイルした後、私は、次のコマンドラインILDASMを使用して、元のバイナリファイルから情報を入手します

ILDASM /out=Paraffin.IL Paraffin.exe

差分ツールを使用して、次の2つが同じである間、ILを自分自身を構築表示されます。主な違いは、DebuggableAttribute文のアセンブリです。ビルド/最適化+および/デバッグ・スイッチは、DebuggableAttributeにDebuggingMode.IgnoreSequencePointsを送信されると、JITコンパイラが正しくIL JITすることができPDBファイルをロードする必要はありません教えてください。値DebuggingMode。またはデフォルトも値が、この値は無視されます。

.NET、ビルドPDBファイルの最適化とは何の関係と同じように、アプリケーションのパフォーマンスに影響はありません。あなたのマネージャが持つことを言う場合は、「パフォーマンスの恐れが影響を受けるであろう、」わたしは彼らに言いました。(残念ながら、私はこれ以上、私が思ったよりも言っマネージャを、遭遇しました)。

実際には2つだけのスイッチのでNETは、非常に簡単ですので、適切な最適化が切り替わり、多くの要因別のアプリケーションに依存します。私が設定する必要のあるものを正しいディストリビューションスイッチにPDBファイルを生成することであることを伝えることができます。

コンパイラCL.EXEためには、.OBJファイルにデバッグシンボルを作るために/紫を追加する必要があります。リンカのLINK.EXEのために、次の3つのオプションを指定する必要があります。最初は/ DEBUGで、それはPDBファイルを生成するようにリンカーに指示します。ただし、スイッチはまた、デバッグ生成されたリンカーを教えてください。これは、バイナリファイルのパフォーマンスに影響しますので、これは、非常に良いではありません。あなたはそれがもはや単一の参照を見つけるために/デバッグリンカリンクは速くありません使用する場合、基本的に何が起こりますか。あなたがOBJで機能を使用する場合、リンカは今死ん機能の束があり、出力バイナリファイルに全体OBJがスローされます。

第二のスイッチとしてREF:機能だけを参照する必要があるリンカを言うと、あなたは/ OPTを追加する必要があります。ICF、COMDAT折りたたみを有効に:第3のスイッチは/ optです。あなたが毎日聞こえない用語があります。基本的に、バイナリファイルを生成するこの手段は、リンカーは、同じコードルックアップ機能を有しており、唯一の機能が、シンボル点の複数の関数を生成します。

あなたは効果がおよび.NETバイナリ簡単とほぼあるPDBファイルを、生成されたものを見るためにネイティブバイナリファイルの違いに自分自身をテストしたい場合。Visual Studioは素敵な小さなプログラムDUMPBINが付属しています、それはあなたのバイナリファイルを取得するには、それを分解するために、ポータブル実行可能ファイル/ DISASMスイッチ操作の使用に関する詳細な情報を伝えることができます。

おすすめ

転載: www.cnblogs.com/yilang/p/11951025.html