繁体   English   中英

调试时间过去了吗?

[英]Time elapsed increases in debugging?

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

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

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

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

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

最好的解决方案是更改此要求,这样就不会出现问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM