6

EDIT: Wenn ich diesen Code in Visual Studio 2013 ausführen, wird der Debugger Utc zeigt, nicht Local. Es ist ein Fehler in Visual Studio 2015 Debugger.VS2015 Debugger zeigt falsche Werte an?

EDIT: Habe den Code genommen und in Stand-Alone-Konsole App, kann aber nicht in beiden Versionen von VS reproduzieren. Bummel.

Kann mir jemand erklären, wie das, was Sie in diesem Screenshot zu sehen ist möglich ?!

  1. On line 298, endingTimePeriodStartDate wird als Date Wert neu definiert, sondern auf DateTimeKind.Utc.
  2. On Line 300, wenn endingTimePeriodStartDate nicht wirklich DateTimeKind.Utc ist, wird eine Ausnahme ausgelöst.
  3. Der Haltepunkt-Debugger auf Zeile 305 getroffen wird, auf Linie die Ausnahme bedeutet 302 nicht geworfen wurde, endingTimePeriodStartDate.Kind == DateTimeKind.Utc
  4. Sinn (ich habe auch eine System.Diagnostic.Debug.WriteLine(endingTimePeriodStartDate.Kind) vor Zeile 305 und druckt es „Utc“ im Ausgabefenster).
  5. Wenn ich mich endingTimePeriodStartDate in dem Locals und Debuggerfenstern beobachten, und wenn ich die Maus schwebt über die Variable, die Kind Eigenschaft zeigt DateTimeKind.Local

enter image description here

+4

Können Sie dies in einer kurzen aber vollständigen App reproduzieren, die wir alle für uns selbst ausprobieren könnten? –

+3

Da Sie eine 'Task' zurückgeben, nehme ich an, dass Sie' async' programmieren -> ist es möglich, dass ein anderer Thread 'endingTimePeriodStartDate' in der kleinen Lücke zwischen Ln 300 und 305 ändert? – ChrFin

+0

Können Sie das reproduzieren? Könnte ein böser weicher Fehler sein – Bgl86

Antwort

2

Normalerweise ist der Debugger falsche Zeilennummern zeigen, und geht in alten Code, wenn es eine andere Version der dLL (ehemalige Version) als die ausgeführt wird, den Code angezeigt wird. Dies geschieht

  • , wenn es irgendeine Art von Caching ist
  • , wenn die frühere Lauf Version nicht korrekt geschlossen wurde oder wird noch in einem anderen Prozess ausgeführt wird.
  • , wenn das Visual Studio ist nicht auf den richtigen Code zeigt

Normalerweise ist dies zu beheben, sollten Sie:

(Start nur um eine "saubere" und "Wiederaufbau" versuchen)

  1. Stoppen Sie alle Visual Studio-Projekte laufen oder debuggen.
  2. Schließen Sie alle Visual Studio-Lösungen und Fenster, so dass Visual Studio nicht ausgeführt wird.
  3. (Wenn der nächste Schritt nicht den Trick macht, dann das nächste Mal rund um den Computer neu starten, bevor Sie mit dem nächsten Schritt fortfahren)
  4. Re-Öffnen Sie nur die Lösung, die Sie ausführen müssen. Hit "Lösung reinigen". Dann "Lösung neu erstellen".

Überprüfen Sie, ob das Problem behoben wurde.

  1. manuell die Bin-Ordner löschen: (wenn der Rein/rebuild funktionierte nicht)

5,1 Wenn Ihre Angst, ein Backup Ihrer gesamten Quellverzeichnis. Nachdem alles funktioniert, löschen Sie das Backup ...

5.2 gehen Sie manuell in die abhängigen Projekte (die in Ihrem "falschen Code angezeigt werden" -Projekt) und in jedem von ihnen gehen Sie in den obj und in den Ordner bin und löschen Sie alles, was automatisch von dort erstellt wurde - mit anderen Worten, alles, was Sie nicht manuell dort hingelegt haben. Normalerweise ist das alles. Keine Sorge, Visual Studio erstellt die Debug- und Release-Verzeichnisse neu und füllt sie aus.

Löschen Sie auch das Obj und Bin Ihres Projekts.

Alles neu erstellen.