ゼロによる除算のためのC#のデバッガへの侵入
-
22-08-2019 - |
質問
私は、XNAライブラリとC#を使用していると私は私のするVector3オブジェクトにアップトリミングNaNを取得しています。問題の計算は、(ゼロによる除算など)が発生したとき、デバッガに侵入する方法はありますか?現在、このプログラムは、単に実行し続けます。私はVS2008 Professionalを使用しています。例外]ダイアログのすべての例外は、「ユーザーが未処理」欄で選択されます。
編集:悪いの計算がどこにあるか明確にするために、私はうまくできません。私は、デバッガは自動的に折り返されたい理由です。ブレークポイントを設定すると、ソリューションではありません。
解決
まずゼロによるダブル/フロート分割する二重が正であるか負であるかに応じて無限/ -Infinityを与えます。ゼロで割っただけゼロダブル/フロートがNaNのを提供します。いずれの場合も、例外はスローされません。
あなたは、特定の変数はこれらのいずれかの値に設定されますときを検出するために条件付きブレークポイントを使用することができるはずです。 NaNのように、しかし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
他のヒント
は、あなたが何ができるか(一般的な例外をキャッチするように)何らかの形で例外を処理しているようにCtrlキーを押しながら+ Altキー+ Eは、例外のダイアログを表示することですね - あなたがのために「スロー」のチェックボックスをチェックしてください例外(s)はあなたが興味を持っている。
あなたはそれだけ休憩する 条件付きブレークポイントを設定することができますます。
私は、これは古い記事です知っているが.....
私が誤って使用した経験のほとんど常にVector3.Normalizeから。
私はそれが私が今いつも長さがゼロになるかどうかはわからない。
フロートL = V.Length()。 (L!= 0.0)の場合 V / = L;
ノーマライズでゼロによる除算は例外を与えるべきであるが、それはありません。傷私の頭の多くを引き起こします。