2012-03-15 5 views
1

현재 디버깅중인 프로그램에서 경과 된 시간을 변수로 사용하고 있습니다. 내가 이것을 디버깅 할 때, 경과 된 변수는 여전히 증가하고 있으며, 변수를 검사하여 원하지 않는 결과를 얻고 디버깅을 비효율적으로 만든다. 시간을 고정 시키거나 변수가 변하지 않게하는 방법이 있습니까? (나는 시간을 계산하기 위해 System.currentTimeMillis()를 사용하고있다).디버깅 시간이 오래 걸립니까?

편집 : 얼마나 많은 시간이 경과했는지 계산하기 위해 System.currentTimeMillis()을 사용하기 때문에 시간이 길어질수록 공간이 움직이는 공간에 개체가 있습니다. 디버깅에서는 작동하지 않습니다. 이 문제를 해결할 수있는 방법이 있는지 알고 싶습니다. 감사합니다.

+2

질문이 명확하지 않습니다. 사물을 분명하게 보이려면 일부 스크린 샷이나 코드 스 니펫을 붙여주세요. – Drona

+0

경과 시간을 계산하고 다른 변수에 저장 ?? 당신은 System.currentTimeMillis()를 중단하고 싶지 않을 것입니다. –

답변

2

이러한 종류의 문제에 대한 한 가지 일반적인 접근 방식은 종속성 삽입을 사용하는 것입니다. 시간 소스로 초기화 (주입)되는 Clock 클래스를 생성하십시오 (예 :). 프로덕션 코드에서이 소스는 System.nanotime() 또는 System.currentTimeMillis() 일 수 있습니다. 디버깅에서는 제어 가능한 클럭을 사용합니다. Clock 클래스의 디버깅 구현에는 시뮬레이트 된 시간을 사용할 수있는 추가 메서드 (예 : suspend(), resume(), setClockTo())가 있습니다.

2

System.currentTimeMillis() 수행해야 할 작업 : 지시가 실행되는 시점의 시간을 알려주십시오. "변수 검사 중"일 때 프로그램 스레드가 일시 중단되었지만 시간이 계속 이동 중입니다 ... 따라서 시간이 증가합니다.

+0

네, 저도 알고 있습니다 만, 그 문제를 해결하는 방법을 알고 싶습니다. – John

+0

측정 한 경과 시간에 따라 프로그램의 정확성이 좌우됩니까? 그렇다면 아마도 잘못된 것이있을 것입니다 (귀하의 질문에 어떻게 설명하십시오). 만약 그렇다면 왜 귀찮게 – UmNyobe

+0

네, 그렇습니다. – John

0

대신 System.currentTimeMillis()를 사용하지 마십시오. 이것은 디버깅 할 때 코드가 실행될 때 앞으로 나아갈 시간을 원하기 때문에 다소 복잡합니다.

최상의 해결 방법은이 요구 사항을 변경하여 문제가되지 않도록하는 것입니다.

시간 제한이 짧다고 말하면 디버거에서 실행 중일 때 제한 시간을 늘릴 수 있습니다.

관련 문제