[java] Eclipse에서 디버깅하는 동안 반환하기 전에 반환 값을 찾을 수 있습니까?

행이 실행 된 후 명령 포인터가 호출 함수로 돌아 가기 전에 메서드의 반환 값을 볼 수 있습니까?

수정할 수없는 코드를 디버깅하고 있습니다 (read : do n’t want to re-compile a third party library) , 때로는 소스가없는 코드로 점프하거나 반환 표현식에 나를 방해하는 부작용이 있습니다. 표시 탭 에서 표현식을 실행할 수 있습니다.

종종 반환 값은 복합 명령문에서 사용되므로 변수 보기에는 값이 표시되지 않습니다 (따라서 제어가 호출 함수로 반환되기 전에 결과를보고 싶음).

업데이트 : 문에 부작용이 있기 때문에 식 뷰어를 사용할 수 없습니다.



답변

이 기능은 Eclipse bug 40912 에서 Eclipse 버전 4.7 M2에 추가되었습니다 .

그것을 사용하려면 :

  • return문을 건너 뜁니다 ( “Step Over”또는 “Step Return”사용).
  • 이제 변수보기의 첫 번째 줄에 “[statement xxx] returned :”와 같이 return 문의 결과가 표시됩니다.

자세한 내용은 Eclipse Project Oxygen (4.7) M2-신규 및 주목할만한 항목 을 참조하세요.


답변

이것에 대한 정말 좋은 지름길을 찾았습니다. 값을 반환하는 표현식을 선택하고

Ctrl + Shift + D

이것은 return 문의 값을 표시합니다. 이것은 디버깅 목적으로 변경할 수 없거나 변경하고 싶지 않은 경우에 매우 유용합니다.

도움이 되었기를 바랍니다.

참고 : 타사 라이브러리에서 이것을 테스트하지는 않았지만 내 코드에서 제대로 작동합니다. 웹 개발자 용 Eclipse Java EE IDE에서 이를 테스트했습니다 . 버전 : Juno 서비스 릴리스 1


답변

이것은 실제로 Eclipse의 오랜 버그이며 IDE의 첫 번째 날부터 거슬러 올라갑니다 : https://bugs.eclipse.org/bugs/show_bug.cgi?id=40912


답변

이것이 제가 항상 다음과 같은 방법 패턴을 고수하는 이유입니다.

MyReturnedType foo() {
     MyReturnedType   result = null;

     // do your stuff, modify the result or not

     return result;
}

내 규칙:

  1. 메서드의 끝에 만 반환 문이 하나만 있습니다 (다음에 마지막으로 허용됨).
  2. 항상 기본값부터 시작하여 반환 된 값을 보유하는 로컬 호출 결과가 있습니다.

당연히 가장 사소한 게터는 면제됩니다.


답변

이 질문에 대한 답도 궁금합니다.

과거에는 이와 같은 타사 라이브러리를 다룰 때 부모 클래스에 위임하는 래퍼 클래스 또는 자식 클래스를 만들고 래퍼 / 자식 클래스에서 디버깅을 수행했습니다. 그래도 추가 작업이 필요합니다.


답변

“이제 메소드에서 리턴 할 때 상위 메소드에서 변수보기에 이전에 완료된 호출의 리턴 값이 표시됩니다.”[1]

[1] https://coffeeorientedprogramming.wordpress.com/2016/09/23/eclipse-see-return-value-during-debugging/


답변

어려운 것. 내 경험, 이클립스의 외부, 당신은 반환 값을 참조해야하는 경우가 return 문이 간단하도록 기능에서 지역 변수에 할당하는 것이 좋습니다 것입니다 return varname;하지 return(some * expression || other);. 그러나 코드를 수정할 수 없거나 심지어 재 컴파일 할 수 없다고 말했기 때문에 이는 끔찍하게 도움이되지 않습니다. 그래서 나는 당신에게 좋은 대답을 가지고 있지 않습니다. 아마도 당신은 당신의 요구 사항을 재고해야 할 것입니다.