2009-02-25 6 views
8

私はPDBがプロジェクトのために生成されていることを知っています。コンパイラに/ debug引数を与えます。 これをVS(2005)GUIで指定する方法はありますか?リリースモードで.Net管理プロジェクトのPDBを生成するには?

私はそれがこれまでにリリースモードでのPDBを生成するために得ることができる唯一の方法は、手動で.csprojファイルを変更し、追加することです:

<DebugSymbols>true</DebugSymbols> 
<DebugType>full</DebugType> 

「リリース」の設定の下で:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

もう一つ:私はDebugTypeタグに使用可能な値であることをMSDN hereから学んだ:

    full
  • pdbonly
  • none

  • はどのようにこれらの値は、コンパイラの動作に影響を与えるのですか?

  • 答えて

    7

    VS2008では、プロジェクトプロパティを使用してプロパティを設定できます。->ビルド->アドバンスト... ->デバッグ情報。 DEBUGで

    +0

    ニース!私はそれがVS 2005でも動作することを確認しました。私は何百万回も「ビルド」設定を見ていましたが、「アドバンスド」ボタンに気付かなかったのです。 ありがとう! –

    +0

    VS 2008(そしておそらく2005年)では、pdb-onlyはリリースビルドのデフォルトです(そして、デバッグには完全です)。 – Richard

    4

    full」と「pdbonly」の違いは何かを明らかにしたthis MONO requestが見つかりました。

    CSCは にできることは有益なスタックトレースを取得するためにこれが重要であるなど ランタイムコードを生成しながら は、PDBSを生成することを「pdbonly」DEBUGTYPE、すなわち最適化され、無 デバッガ属性、

    を持っていますリリース品質のコード

    2つのタグ(DebugSymbolsとDebugType)の存在は冗長です。

    +2

    これは間違っています "便利なスタックトレースを取得します"。メタデータが存在するため、.NETコードでは常に有用なスタックトレースを取得します。リリースフレーバのPDBは、プロダクションコードをシングルステップ実行する上で重要ですが、最適化のためにデバッガにエラーが発生する可能性があります。 –

    +0

    @Daniel Bullington、あなたは行番号とファイル名をpdbファイルなしで取得しないので、スタックトレースは少なくとも「あまり役に立たない」 – tster

    +0

    @tsterはい私は同意するが、PDB(そして行番号/ファイル名)スタックトレースは、それほど有用ではありません:) –

    6

    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    

    RELEASEでは:

    <DebugSymbols>true</DebugSymbols> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    
    関連する問題