2009-11-12 10 views
5

ASP.NET 2.0 Webサイトでは、未処理の例外の詳細を記録します。私は、ソースファイル名と行番号を記録したいと思いますが、例外が発生したときにスタックトレースにこれを取得しません。これは、web.configのコンパイル設定(本番サイト)にdebug = "false"があるため、PDBファイルがサーバー上に生成されないためです。リリースモードでデバッグシンボルファイルを生成するASP.NETを取得する方法はありますか?私はサイトをプリコンパイルしたくありません。リリースモードのデバッグシンボル

+0

私は100%確実ではありませんが、それは可能です。 –

答えて

5

OK、私は答えを見つけました。 debug = "false"を設定して最適化を取得し、system.codedomコンパイラ設定のcompilerOptions = "/ debug:pdbonly"を設定してシンボルを取得することができます。関連するweb.configの抜粋は次のとおりです。

<system.web> 
    .... 
    <compilation debug="false" defaultLanguage="c#"> 
    ... 
    </compilation> 
</system.web> 
<system.codedom> 
    <compilers> 
    <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" 
     type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     compilerOptions="/debug:pdbonly"> 
     <providerOption name="CompilerVersion" value="v3.5"/> 
     <providerOption name="WarnAsError" value="false"/> 
    </compiler> 
    ... 
    </compilers> 
</system.codedom> 
+0

私のASP.NET 4.0ウェブサイトプロジェクトでは、CompilerInfo配列を(コードを取得するためにCompilerInfo [] allCompilerInfo = CodeDomProvider.GetAllCompilerInfo();を使用して)ポーチした後、バージョン設定は "Version = 4.0.0.0" providerOption name = "CompilerVersion" value = "v4.0" />他のすべては同じです。物語の道徳は、あなたのマイレージが異なる場合があります、あなたのプロジェクトの実際の設定を確認してください。 –

1

Imが何か不足していない限り、デバッグ&リリースビルドの違いは最適化されています。 pdbを使用して通常のデバッグバイナリを作成し、プロジェクト設定ですべての最適化設定を有効にする必要があります。例外がpdbファイルの読み込みなどの例外を除いてAfaikの場合...

+0

これはASP.NET 2.0のWebサイトです。私はバイナリをビルドしません。すべてのコンパイルはASP.NETによってオンザフライで行われ、web.configの設定によって制御されます。私はdebug = "false"(最適化はしていますがシンボルはありません)またはdebug = "true"(シンボルはありませんが最適化はできません)のいずれかの可能性があります。 – noj

関連する問題