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.

È stato utile?

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"> DebuggerStepThrough attributo

DebuggerStepThrough indica al debugger passo attraverso il codice anziché entrando nel codice.

[DebuggerStepThrough]
public void MyMethod()
{

}

Ciò è particolarmente utile per i setter / getter dal debug in quelle di solito solo aggiunge rumore (ad esempio da MSDN):

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top