调试时间过去了吗?

时间:2012-03-15 15:11:38

标签: java time systemtime

我正在使用时间作为我正在调试的程序中的变量。在我调试时,经过时间的变量仍在增加,而我正在检查变量会产生不良结果并使调试失效。无论如何要冻结时间或阻止变量改变? (我使用System.currentTimeMillis()来计算时间。)

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

最佳解决方案是更改此要求,以便这不是问题。

e.g。假设您的超时时间很短,您可以在调试器中运行时增加超时。