Evitare di debug e stack di chiamate per un pezzo di codice in C #
-
12-10-2019 - |
Domanda
In Delphi le direttive del compilatore {$ d-} e {$ L-} permettono di evitare efficacemente la generazione di debug e informazioni variabili locali di una sezione definita di codice.
In una questione pratica che ha l'effetto di "nascondere" il codice dalla vista di debug, non appare nello stack di chiamate e tu no passo in esso durante il debug.
C'è un modo per ottenere lo stesso risultato in C # utilizzando VS 2008?
Nota: La ragione è che abbiamo un quadro stabile, che non ha bisogno di eseguire il debug, ma tendono a pasticciare con lo stack di chiamata e con il flusso di debug standard.
Soluzione
DebuggerNonUserCodeAttribute in modo che per impostazione predefinita non si rompono o passo nel codice; Tuttavia, il benifit a questo corso DebuggerStepThrough è che si può andare al> Debugger-> impostazione Just My Code Opzioni- e permettere la rottura / debug del codice hai segnato. Questo aiuta in modo significativo, se avete problemi. Io di solito lo uso su intere classi.
A proposito, lo stack di chiamate nasconderà automaticamente il codice non utente come contrassegnato con questo attributo :) Naturalmente si può semplicemente fare clic destro della finestra stack di chiamate e toggle "Mostra codice esterno" per nascondere / mostrare le informazioni di stack mancanti.
Altri suggerimenti
Credo che si desidera che il href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggerstepthroughattribute.aspx" rel="nofollow"> Ciò è particolarmente utile per i setter / getter dal debug in quelle di solito solo aggiunge rumore (ad esempio da MSDN): DebuggerStepThrough
attributo DebuggerStepThrough
indica al debugger passo attraverso il codice anziché entrando nel codice. [DebuggerStepThrough]
public void MyMethod()
{
}
public int Quantity
{
[DebuggerStepThrough]
get { return ComplexLogicConvertedToMethod(); }
[DebuggerStepThrough]
set { this.quantity = value ; }
}
o per saltare una specifica sezione del codice:
... some production code
#if DEBUG
Console.WriteLine("Debug version");
#endif
... some more production code