C#のコードのデバッグやコールスタックを避けてください
-
12-10-2019 - |
質問
Delphiでは、コンパイラディレクティブ{$ d-}および{$ l-}を使用すると、コードの定義されたセクションのデバッグおよびローカル変数情報の生成を効果的に回避できます。
デバッグビューからコードを「非表示」する効果がある実用的な問題では、コールスタックには表示されず、デバッグ中にステップインしません。
VS 2008を使用してC#で同じ結果を達成する方法はありますか?
注:その理由は、デバッグする必要はないが、コールスタックと標準のデバッグフローを台無しにする傾向がある安定したフレームワークがあるためです。
解決
私が使う Debuggernonusercodeattribute そのため、デフォルトでは、コードに侵入したり、コードに足を踏み入れたりしないようにします。ただし、デバッガーズプスターを介したこれのベニフィットは、オプションに移動できることです。これは、問題がある場合に大幅に役立ちます。私は通常、クラス全体でそれを使用します。
ところで、コールスタックは、この属性でマークされた非ユーザーコードを自動的に非表示にします:)もちろん、コールスタックウィンドウを右クリックして「外部コードを表示」を切り取って、欠落しているスタック情報を非表示/表示できます。
他のヒント
私はあなたが欲しいと思います DebuggerStepThrough
属性:
DebuggerStepThrough
コードに足を踏み入れるのではなく、コードを踏み出すようにデバッガーに指示します。
[DebuggerStepThrough]
public void MyMethod()
{
}
これは、通常はノイズを追加するだけであるため、セッター/ゲッターに特に役立ちます(MSDNの例)。
public int Quantity
{
[DebuggerStepThrough]
get { return ComplexLogicConvertedToMethod(); }
[DebuggerStepThrough]
set { this.quantity = value ; }
}
または、コードの特定のセクションをスキップするには:
... some production code
#if DEBUG
Console.WriteLine("Debug version");
#endif
... some more production code
所属していません StackOverflow