2012-03-15 8 views
1

私は現在、デバッグ中のプログラムで変数として経過時間を使用しています。私はこれをデバッグしているので、経過した変数は依然として増加しますが、望ましくない結果を与える変数を調べてデバッグを無効にしています。とにかく時間を凍結させたり、変数の変更を止めるにはどうしたらいいですか? (私は時間を計算するためにSystem.currentTimeMillis()を使用しています)。デバッグに時間がかかりますか?

編集: 時間が経過した時間を計算するのにSystem.currentTimeMillis()を使用しているため、時間の経過と共に移動するオブジェクトにオブジェクトがありますが、デバッグでは機能しません。これを回避できる方法があるかどうかを知りたいのですが、ありがとうございます。

+2

あなたの質問はあまり明確ではありません。状況を明確にするために、スクリーンショットやコードスニペットを貼り付けてください。 – Drona

+0

経過時間を計算し、別の変数に格納?? System.currentTimeMillis()を停止させたくないと思っています。 –

答えて

2

この種の問題に対する一般的なアプローチの1つは、依存性注入を使用することです。タイムソースで初期化(注入)されるクラス(たとえば)を作成します。実動コードでは、このソースはSystem.nanotime()またはSystem.currentTimeMillis()である可能性があります。デバッグでは、制御可能なクロックを使用します。 Clockクラスのデバッグ実装では、シミュレートされた時間を使用できる追加のメソッド(suspend()、resume()、setClockTo()など)があります。

2

System.currentTimeMillis()実行すること:命令が実行される瞬間をあなたに教えてください。あなたが "変数を調べる"とき、あなたのプログラムスレッドは中断されていますが、時間はまだ動いています...時間の増加

+0

はい、私はそれを認識していますが、私はそれを回避する方法を知りたいと思います。 – John

+0

プログラムの正確さは、測定した経過時間に依存しますか?はいの場合は、おそらく何か間違っている(あなたの質問にどのように説明するか)。いいえの場合は、どうしても気になりません。 – UmNyobe

+0

はい、完了です。 – John

0

代わりに、System.currentTimeMillis()を使用しないでください。これはかなり複雑です。なぜなら、デバッグしているときに、コードが実行されているときに前進する時間が必要だからです。

最高の解決策は、この要件を変更することです。これは問題ではありません。

タイムアウトが短いと言うと、デバッガで実行しているときにタイムアウトを長くすることができます。

関連する問題