Vermeiden Sie Debug und Aufrufliste für ein Stück Code in c #
-
12-10-2019 - |
Frage
In Delphi die Compiler-Direktiven {$ d-} und {$ l-} ermöglicht es Ihnen, effektiv zu vermeiden Erzeugung von Debug-und lokalen Variable Informationen für einen bestimmten Abschnitt des Codes.
In der Praxis, die den Effekt zu „verstecken“ dem Code aus der Debug-Ansicht hat, ist es nicht in dem Call-Stack angezeigt werden und Sie nicht Schritt in sie während des Debuggen.
Gibt es eine Möglichkeit das gleiche Ergebnis in C # VS 2008 zu erreichen?
Hinweis: Der Grund ist, dass wir einen stabilen Rahmen, der muss nicht ausgetestet werden, aber mit dem Call-Stack zu vermasseln neigen und mit dem Standard-Debug-Flow.
Lösung
Ich verwende DebuggerNonUserCodeAttribute , so dass Sie standardmäßig nicht in den Code brechen oder Schritt; Allerdings ist die benifit dazu über DebuggerStepThrough, dass Sie die Optionen-> Debugger-> Just My-Code Einstellung gehen und ermöglichen brechen / Debuggen des Codes Sie markiert. Dies trägt wesentlich dazu bei, wenn Sie Fragen haben. Ich es in der Regel auf ganze Klassen verwenden.
BTW, wird der Anruf automatisch Stapel Nicht-Benutzer-Code verbergen, als mit diesem Attribut gekennzeichnet :) Natürlich können Sie einfach mit der rechten Maustaste auf den Call-Stack-Fenster und Toggle „Show externen Code“, um hide / show die fehlenden Stapelinformation.
Andere Tipps
Ich glaube, Sie wollen die DebuggerStepThrough
Attribut:
DebuggerStepThrough
weist den Debugger zu Schritt durch den Code stattdessen in den Code zu treten.
[DebuggerStepThrough]
public void MyMethod()
{
}
Dies ist besonders nützlich für Setter / Getter da diese Debugging in der Regel nur Rauschen hinzufügt (Beispiel aus Msdn):
public int Quantity
{
[DebuggerStepThrough]
get { return ComplexLogicConvertedToMethod(); }
[DebuggerStepThrough]
set { this.quantity = value ; }
}
oder einen bestimmten Abschnitt des Codes überspringen:
... some production code
#if DEBUG
Console.WriteLine("Debug version");
#endif
... some more production code