【问题标题】:Time elapsed increases in debugging?调试所用时间增加?
【发布时间】:2012-03-15 15:11:37
【问题描述】:

我在当前正在调试的程序中使用经过的时间作为变量。当我正在调试这个时,经过的时间变量仍然会增加,而我正在检查给出不想要的结果的变量并使调试无效。反正有没有冻结时间或阻止变量改变? (我用System.currentTimeMillis()计算时间)。

编辑: 我在空间中有一个随着时间增加而移动的对象,因为我使用System.currentTimeMillis() 来计算已经过去了多少时间,它在调试中不起作用。我想知道是否有办法解决这个问题,谢谢。

【问题讨论】:

  • 你的问题不是很清楚。请贴一些截图或代码 sn-ps 以使事情清楚。
  • 计算经过的时间并将其存储在另一个变量中??你不想(而且我认为你不能)停止 System.currentTimeMillis()。

标签: java time systemtime


【解决方案1】:

解决此类问题的一种常见方法是使用依赖注入。创建一个使用时间源初始化(注入)的时钟类(例如)。在生产代码中,这个源很可能是 System.nanotime() 或 System.currentTimeMillis()。在调试中,您使用可控时钟。 Clock 类的调试实现具有允许使用模拟时间的附加方法(例如,suspend()、resume()、setClockTo())。

【讨论】:

    【解决方案2】:

    System.currentTimeMillis() 做了它应该做的事情:在指令执行的那一刻给你时间。当您“检查变量”时,您的程序线程被暂停,但时间仍在继续......因此时间增加了

    【讨论】:

    • 是的,我知道这一点,但我想知道如何解决它。
    • 您的程序正确性是否取决于您测量的运行时间?如果是,可能有问题(解释你的问题)。如果没有,那为什么要打扰
    【解决方案3】:

    您的替代方法是不使用 System.currentTimeMillis()。这是相当复杂的,因为当您在调试时,您希望在代码运行时有时间向前推进。

    最好的解决办法是改变这个要求,让这不是问题。

    例如假设你有一个很短的超时,你可以让它在你在调试器中运行时增加超时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2011-05-05
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      相关资源
      最近更新 更多