Wie kann ich dem Compiler mitteilen, eine Methode in Stack Traces zu ignorieren?

8

Gibt es irgendwelche Attribute, die ich auf Standardmethoden anwenden kann, damit solche Methoden nicht in Stack-Traces erscheinen? Ich habe viele von ihnen und in einigen Fällen sind sie mehrere Ebenen tief. Es ist nur die Dinge überladen.

Beispielcode:

%Vor%

Dies wirft diesen Stack-Trace:

  

bei Spork.Program.ThrowMe () in C: \ Projekte \ XXX \ Testing Sandbox \ ConsoleTesting \ Program.cs: Zeile 58

     

bei Spork.Program.HideMe () in C: \ Projects \ XXX \ Test Sandbox \ ConsoleTesting \ Program.cs: Zeile 64

     

bei Spork.Program.Main (String [] args) in C: \ Projekte \ XXX \ Testing Sandbox \ ConsoleTesting \ Program.cs: Zeile 70

    
Amy 27.01.2011, 16:08
quelle

2 Antworten

7

Setzen Sie Console.WriteLine (e) in den Catch-Block. Wechseln Sie zum Release-Build und drücken Sie Strg + F5. Du wirst folgendes sehen:

%Vor%

Beachten Sie, dass die HideMe () -Methode in der Stack-Ablaufverfolgung nicht sichtbar ist. Mission erfüllt.

Der Methodenaufruf wurde in der Ablaufverfolgung nicht angezeigt, da der JIT-Optimierer die Methode in einführte: Dies ist die einzige Möglichkeit, Methoden im Stack-Trace auszublenden.

Es ist nicht etwas, das Sie gut kontrollieren können, die Methode muss "klein" sein und keine Ausnahme selbst auslösen. Dies wird normalerweise normalerweise als ein Problem betrachtet, nicht als ein Merkmal. Schwer herauszufinden, wie man Code von A nach B bekommt.

    
Hans Passant 27.01.2011, 16:41
quelle
5

Sie können das DebuggerHiddenAttribute

verwenden     
vc 74 27.01.2011 16:12
quelle

Tags und Links