4

Delphiでは、コンパイラ指令{$d-}および{$l-}を使用すると、コードの定義されたセクションのデバッグおよびローカル変数情報の生成を効果的に回避できます。

デバッグビューからコードを「非表示」にする効果がある実際的な問題では、コードは呼び出しスタックに表示されず、デバッグ中にコードにステップインしません。

VS 2008を使用してC#で同じ結果を達成する方法はありますか?

注:その理由は、デバッグする必要はないが、コールスタックと標準のデバッグフローを台無しにする傾向がある安定したフレームワークがあるためです。

4

3 に答える 3

6

私はDebuggerNonUserCodeAttributeを使用しているので、デフォルトでコードに割り込んだり、ステップインしたりすることはありません。ただし、これがDebuggerStepThroughよりも優れている点は、[オプション]->[デバッガー]->[ジャストマイコード]設定に移動して、マークしたコードの解読/デバッグを許可できることです。これは、問題がある場合に非常に役立ちます。私は通常、クラス全体で使用します。

ところで、コールスタックは、この属性でマークされた非ユーザーコードを自動的に非表示にします:)もちろん、コールスタックウィンドウを右クリックし、[外部コードの表示]を切り替えて、不足しているスタック情報を非表示/表示できます。

于 2011-01-17T16:59:46.813 に答える
3

私はあなたがDebuggerStepThrough属性が欲しいと思います:

DebuggerStepThroughコードにステップインする代わりに、コードをステップスルーするようにデバッガーに指示します。

[DebuggerStepThrough]
public void MyMethod()
{

}

これは、セッター/ゲッターにとって特に便利です。これらにデバッグすると、通常はノイズが追加されるだけだからです(msdnの例)。

public int Quantity
{ 
    [DebuggerStepThrough] 
    get { return ComplexLogicConvertedToMethod(); } 
    [DebuggerStepThrough]      
    set { this.quantity = value ; }
}
于 2011-01-17T16:52:53.287 に答える
0

または、コードの特定のセクションをスキップするには:

... some production code
#if DEBUG
    Console.WriteLine("Debug version");
#endif
... some more production code
于 2011-01-17T17:02:37.157 に答える