1

我正在尝试调试通常可以正常运行并且已经投入生产一段时间的代码,但有一些与特定案例运行相关的错误。

我有一个名为“Guarantee”的类,以及一个属于该类的变量/对象“myDem”。该类有一个名为“NumberOfGuaranteeDays”的关联函数。下面给出的第一张图片显示了一个名为“numRows”的 Long 变量,该变量被分配给“myDem”上的此函数调用。当进行此分配时——因此,“NumberOfGuaranteeDays”函数被调用——我收到一个溢出错误。

更高级别的函数调用导致根溢出错误。 注意

函数调用“NumberOfGuaranteeDays”运行后,这是一个相当复杂的调用,本身包含许多子函数,然后类尝试终止自身,并返回值(天数,这是一个整数......在这种情况下它是 32561)。正是在此终止步骤和将“numRows”分配给值 32561 期间,发生错误。

类呼叫的终止。 返回溢出错误消息之前的最后一步。

在这里,我只是演示了代码中的下一步,如果我单步执行,就是将错误消息返回给我。

错误消息,在终止子例程完成后立即看到

最后,我想提供“证明”,证明分配给“numRows”的值是 32561,整数类型,可以将其分配给 Long。请注意,在窗口监视部分的最右侧,值“res”是从“NumberOfGuaranteeDays”调用返回的值,然后将其分配给变量“numRows”。

在窗口的 watch 部分向右看很远的值

据我所知,为什么会发生崩溃只有两种可能性:

  1. 尝试终止课程时出错。不过,我不明白这如何导致“溢出”错误。
  2. 将“NumberOfGuaranteeDays”计算的值分配给变量“numRows”时出现错误。这种分配可能有溢出,但在这种情况下不会。“NumberOfGuaranteeDays”的返回值是设置为 32561 的“res”整数,它被分配给“numRows”,它是一个 Long。

所以,既然我能想象的这些可能性都没有意义,我想肯定还有另一种我看不到的可能性。提前感谢大家的帮助!

我选择放入剪切和粘贴的图像而不是编写代码,因为对于理解这些步骤至关重要的是看到我在调试阶段所处位置的“证据”。如果实际的代码片段有帮助,请告诉我。

        Thank you!
               Mike
4

0 回答 0