2009-10-01 8 views
7

Was zum Teufel könnte dies verursachen ....Visual Studio 2008 verrückt Debugger überspringen!

Ich entwickle meine C# 3.5 ASP.NET MVC Web App, genauso wie ich den ganzen Tag jeden Tag. Nichts schlaues tun, nur Standardmethoden für Klassen, die andere Methoden aufrufen ...

Ich baue mein Projekt, starte eine URL in Chrome und bekomme die Antwort, die ich erwarte. Ich schließe den Debugger an w3wp.exe an, setze einen Haltepunkt und f5 in Chrome. Der Debugger stoppt am Haltepunkt, wie ich es erwarten würde ....

Ich drücke f11, um durch den Code zu gehen, und es wird zur nächsten Zeile/Teilzeile gehen, tun Sie es ein paar Mal und es wird zufällig übersprungen zu einer beliebigen Zeile im Ausführungspfad !!!

Die Zeile, die es überspringt, ist eine Zeile, die ausgeführt worden wäre, es geht nicht zu einer alten Zeile, es entscheidet nur, eine ganze Reihe von Zeilen dazwischen zu verpassen ?? !!!

Ich habe das noch nie zuvor gesehen, wie zum Teufel debugge ich was los ist ???

Für eine Weile dachte ich vielleicht, Chrome macht zwei Anfragen, und der Debugger ist nicht wirklich überspringen, es nur zwischen Anfrage Threads swappping es sieht aus wie es springt, aber das ist es nicht! Wenn ich einen Haltepunkt auf jeder einzelnen Zeile kann ich sich teilweise verhindern, aber nehmen Sie die folgenden Schritte aus:

1. public string Method() 
2. { 
3.  string s; 
4.  s = OtherMethod(); 
5.  return s; 
6. 
7. } 

die Art von Verhalten im sehen (mit einem Haltepunkt in jeder Zeile oben) 1,2,3,4 , 5,6,7 (dh es wird nicht in OtherMethod();

Andere Verhalten im sehen ist 1,2,3 und dann das ist es, aus zurück, wo immer Methode() oder noch weiter weg genannt: s

Dank

+0

Debug/Release? ____ – EFraim

+0

Debug-Modus______ –

Antwort

6

Haben Sie versucht, Ihre Lösung zu reinigen?
- (die Ordner bin und obj in Ihrem Projektordner)

Löschen Sie Dateien aus dem temporären ASP.net-Ordner Dateien?

  • (normalerweise C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET-Dateien)
  • Sie müssen wahrscheinlich zuerst „iisreset/stop“ an der Eingabeaufforderung ausführen können, dann mit Iisreset wieder aktivieren/starten
+0

wo befindet sich das? –

+0

tun all dies und Atom's Vorschläge scheint es zu beheben, danke –

+0

als Antwort markieren? – Sameer

0

Klingt, als ob Sie versuchen, durch eine binäre, die optimiert wurde Optimierer kann viele Dinge tun, die es schwer zu debuggen, einschließlich, aber nicht beschränkt auf:

  • Neuordnen Aussagen
  • Inlining Funktionen
2

Nicht sicher, ob dies helfen wird. Ich habe auf Probleme vor, wo der kompilierte Code in einer verwandten Assembly nicht übereinstimmen mit dem, was der Debugger ich habe. Die Art und Weise, wie ich es immer gelöst habe, bestand darin, Shutdown VS zu starten, dann das Projekt neu zu starten und neu zu laden und dann die Lösung komplett neu zu erstellen. Dann ändere den Build-Modus von debug-> release oder release-> debug und führe einen letzten Rebuild durch. Ich habe ehrlich gesagt nie herausgefunden, was das verursacht. Es passiert nur gelegentlich.

+0

all dies tun und Jeffs Vorschläge scheint es behoben zu haben, danke –

0

ich etwas ähnliches in 2.0 gesehen haben, wenn ich nicht tun Stellen Sie sicher, dass der Cache meines Browsers frei ist.

0

Schalten Sie die Zerlegung ein und prüfen Sie, ob Ihre Schritte sinnvoller sind. Wenn Sie sicher sind, dass Sie nicht zwischen Threads springen, hat der Compiler wahrscheinlich entschieden, dass ein Teil Ihres Codes nicht wichtig genug ist, um zu einem Schritt zu gelangen (d. H. Nichts tut).