Истекшее время увеличивается в отладке? - PullRequest
1 голос
/ 15 марта 2012

Я использую прошедшее время как переменную в программе, которую я сейчас отлаживаю.Поскольку я отлаживаю это, переменная истекшего времени все еще увеличивается, в то время как я исследую переменные, дающие нежелательные результаты и делающие отладку неэффективной.Есть ли способ остановить время или остановить изменение переменной?(Я использую System.currentTimeMillis() для вычисления времени).

Редактировать: у меня есть объект в пространстве, который перемещается с увеличением времени, потому что я использую System.currentTimeMillis(), чтобы вычислить, сколько времени прошло, ононе работает в отладке.Я хотел бы знать, есть ли способ обойти это, спасибо.

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

Одним из распространенных подходов к решению этой проблемы является использование Dependency Injection.Создайте класс Clock (например), который инициализируется (вводится) источником времени.В производственном коде этим источником может быть System.nanotime () или System.currentTimeMillis ().При отладке вы используете контролируемые часы.Реализация отладки класса Clock имеет дополнительные методы (например, suspend (), resume (), setClockTo ()), которые позволяют использовать моделируемое время.

2 голосов
/ 15 марта 2012

System.currentTimeMillis() делает то, что должен: дать вам время в момент выполнения инструкции.Когда вы «исследуете переменные», поток вашей программы приостанавливается, но время все еще движется ... Таким образом, время увеличивается

0 голосов
/ 15 марта 2012

Ваша альтернатива - не использовать System.currentTimeMillis (). Это довольно сложно, потому что, когда вы отлаживаете, вы хотите успеть сделать шаг вперед во время выполнения кода.

Лучшее решение - изменить это требование, чтобы это не было проблемой.

например. скажем, у вас короткий тайм-аут, вы можете увеличить тайм-аут при работе в отладчике.

...