8

これらの手順に従って、IL オフセットを Silverlight スタック トレースに追加しました。これは、DEBUG モードでビルドする場合にうまく機能しますが、本番/qa ビルド プロセスでは、IL オフセット情報が失われているように見える RELEASE モードを使用してすべてをコンパイルします。リリース モードでは、すべての IL オフセットが「0xffffffff」になります。リフレクターを使用してデバッグ/リリース アセンブリを比較すると、DebuggableAttributeの使用方法が異なることに気付きました。

デバッグ ビルド:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]
[assembly: AssemblyConfiguration("Debug")]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)]
[assembly: Extension]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework("Silverlight,Version=v5.0", FrameworkDisplayName="Silverlight 4")]
[assembly: AssemblyCopyright("Copyright @ Foo Company 2010-2012")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("Foo.Ria.Bar")]
[assembly: AssemblyCompany("Foo Company")]
[assembly: AssemblyProduct("Foo Product")]

対 RELEASE ビルド:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyTitle("Foo.Ria.Bar")]
[assembly: AssemblyTrademark("")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework("Silverlight,Version=v5.0", FrameworkDisplayName="Silverlight 4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyCompany("Foo Company")]
[assembly: AssemblyProduct("Foo Product")

MSDNによると

DebuggableAttributeクラスは、ランタイムがモジュール内のコードを処理する方法を制御しますランタイムは、生成されたコードに関する追加情報を追跡する場合があり、この属性に含まれる値に基づいて特定の最適化を無効にする場合があります。

DebuggableAttribute設定を微調整した経験のある人はいますか? 最適化を完全に無効にする必要のない回避策はありますか ( DebuggingModes.DisableOptimizations )?

4

1 に答える 1