DebuggerStepThrough wird ignoriert

8

Ich habe in letzter Zeit bemerkt, dass der Debugger von Visual Studio 2010 immer wieder in diese Methode springt, die mit dem Attribut [DebuggerStepThrough] gekennzeichnet ist.

Der Callstack sieht ungefähr so ​​aus:

  1. Page.OnLoad ruft eine Methode IsSubclassOfGeneric in einer Klasse auf, die als [DebuggerStepThrough] .
  2. markiert ist
  3. IsSubclassOfGeneric ruft GetHierarchy wie gezeigt auf und übergibt einen Lambda-Ausdruck an die System.Linq.Enumerable.Any -Erweiterung.
  4. Visual Studio tritt wie oben gezeigt in die Methode ein.

Ich habe gerade den Linq-Aufruf mit einer foreach-Schleife wie folgt ersetzt, ohne Erfolg:

Das ist ein bisschen ärgerlich, da diese Methode ziemlich häufig aufgerufen wird, und ich verstehe nicht, warum das Attribut ignoriert wird.

    
Quick Joe Smith 30.12.2010, 00:19
quelle

2 Antworten

3

Probieren Sie diese einfache Konsolenanwendung aus, setzen Sie Breakpoints auf die angegebenen Zeilen, führen Sie den Debugger aus und drücken Sie im ersten Breakpoint die Taste (F11). Es sollte den zweiten Breakpoint verpassen. Otherwatsie, wenn eine visuelle Studioeinstellung / Erweiterung Dinge vermasseln könnte.

%Vor%

BEARBEITEN

Eigentlich glaube ich, dass es etwas mit der Yield-Aussage zu tun hat. Wenn ich versuche, eine Liste zu erstellen (GetHierarchy2), habe ich kein Problem mit dem DebuggerStepThrough-Attribut

    
djeeg 13.01.2011, 02:56
quelle
0

Debuggen Sie einen Binärmodus für den Veröffentlichungsmodus? Es könnte für den Compiler zur Kompilierungszeit optimiert und möglicherweise nur deterministisch sein, so dass Sie nicht in der Lage sein werden, einzugreifen. Sehen Sie sich die erzeugte IL an und prüfen Sie, ob dies der Fall ist.

    
Peon the Great 13.01.2011 02:44
quelle

Tags und Links