我使用C#与XNA库,我得到NaN的在我的Vector3对象此起彼伏。有没有办法打入调试器时有问题发生的计算(如被零除)?目前,该方案只是继续运行。我使用VS2008专业。在例外对话框所有的异常中的“用户未处理的”列被选择。

编辑:为了澄清,我不能工作了哪里不好计算。这就是为什么我要调试器自动断开。设置断点是不是一个解决方案。

有帮助吗?

解决方案

首先将一个双/浮子由零给出取决于双是否是正或负无穷大/ -Infinity。只有零双/浮点被零除给出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)你有兴趣

您可以设置一个条件断点的,只有当中断表达式的除数为0

我知道这是一个老的文章,但.....

从经验的几乎总是Vector3.Normalize,我错误地使用。

当我不知道它是否会是零长度我现在总是这样

浮L = V.Length(); 如果(L!= 0.0)    V / = L;

在正常化被零除应该给一个异常,但它没有。给我带来了很多头部划伤。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top