Frage

Ich bin mit C # mit XNA-Bibliothek und ich bin immer NaNs in meinen Vector3 Objekten auftaucht. Gibt es eine Möglichkeit in den Debugger zu brechen, wenn die betreffende Berechnung geschieht (beispielsweise eine Division durch Null)? Derzeit nur das Programm läuft weiter. Ich verwende VS2008 Professional. Alle Ausnahmen im Dialog Ausnahme ausgewählt werden in der "user-unhandled" Spalte.

Edit: Um zu klären, ich kann nicht arbeiten, wo die schlechte Berechnung ist. Aus diesem Grunde ist der Debugger soll automatisch brechen. Haltepunkte zu setzen ist keine Lösung.

War es hilfreich?

Lösung

Zum einen durch Null ein Doppel / float Teilung gibt Unendlich / -Infinity abhängig davon, ob die Doppel positiv oder negativ ist. Nur ein Null-Doppel / float geteilt durch Null ergibt NaN. In beiden Fällen wird keine Ausnahme ausgelöst werden.

Es soll möglich sein, bedingte Haltepunkte zu verwenden, um festzustellen, wenn eine bestimmte Variable auf einen dieser Werte eingestellt wird. Seien Sie vorsichtig, wenn Sie NaN Überprüfung obwohl, wie NaN! = NaN.

double a = double.NaN;
Console.Out.WriteLine(a == double.NaN); // false
Console.Out.WriteLine(a == a); // false
Console.Out.WriteLine(double.IsNaN(a)); // true

Andere Tipps

Klingt wie Sie die Ausnahme irgendwie sind Handling (wie ein Fang eine generische Exception) Was Sie tun können, ist drücken Sie Strg + Alt + E, um die Ausnahmen Dialog zu öffnen - stellen Sie sicher, dass Sie das überprüfen „wenn geworfen“ Checkbox die Ausnahme (n) Sie Interesse an

könnten Sie setzen einen bedingten Haltepunkt dass nur bricht, wenn der Divisor eines Ausdrucks 0 .

Ich weiß, das ist eine alte Post, aber .....

aus der Erfahrung seines fast immer Vector3.Normalize, dass ich versehentlich verwenden.

Wenn ich nicht sicher bin, ob es Null lang sein wird ich jetzt immer tun

Schwimmer L = V.Length (); if (L! = 0.0)    V / = L;

Division durch Null in Normalisieren soll eine Ausnahme geben, aber es funktioniert nicht. Verursacht mir viel Kopfzerbrechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top