Eclipse에서 디버깅하는 동안 돌아 오기 전에 반환 값을 찾을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/217116

문제

라인이 실행 된 후 및 명령어 포인터가 호출 함수로 돌아 오기 전에 메소드의 리턴 값을 볼 수 있습니까?

수정할 수없는 코드를 디버깅하고 있습니다 (읽기 : 타사 도서관을 다시 컴파일하고 싶지 않음), 그리고 때로는 소스가없는 코드로 점프하거나 반환 표현식에는 부작용이있어서 표현식을 실행할 수 없습니다. 표시하다 탭.

종종 반환 값은 복합 문서에 사용됩니다. 변수 보기는 나에게 값을 보여주지 않습니다 (따라서 제어가 호출 함수로 돌아 오기 전에 결과를보고 싶다).

업데이트: 진술에 부작용이 있으므로 표현식 뷰어를 사용할 수 없습니다.

도움이 되었습니까?

해결책

이 기능은 Eclipse 버전 4.7 m2에 추가되었습니다. 일식 버그 40912.

그것을 사용하려면 :

  • 단계를 넘어서 return 문장 ( "Step Over"또는 "Step Return"사용)
  • 이제 변수보기의 첫 번째 줄은 [Statement XXX]가 반환됨에 따라 리턴 명령문의 결과를 보여줍니다.

보다 일식 프로젝트 산소 (4.7) M2- 신규 및 주목할만한 자세한 내용은.

다른 팁

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

Ctrl + Shift + D

리턴 명령문의 값이 표시됩니다. 이것은 디버깅 목적으로 만 변경하고 싶지 않거나 원하지 않는 경우에 실제로 도움이됩니다.

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

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

이것은 실제로 이클립스에서 오랫동안 서있는 버그입니다. 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. 기본값부터 시작하여 반환 된 값을 보유하는 로컬 호출 결과가 항상 있습니다.

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

나는이 질문에 대한 답을 배우고 싶다.

과거에는 제 3 자 도서관을 다룰 때, 내가 한 일은 부모 수업에 위임하고 래퍼/어린이 수업에서 디버깅을하는 래퍼 클래스 또는 어린이 수업을 만드는 것입니다. 그래도 추가 작업이 필요합니다.

"이제 메소드에서 돌아올 때 상단 메소드에서 변수보기에서 이전에 완성 된 통화의 반환 값을 보여줍니다[1

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

어려운 것. Eclipse 이외의 내 경험은 반환 값을 볼 필요가 있다면 반환 문이 간단하도록 함수의 로컬 변수에 할당하는 것이 가장 좋습니다. return varname; 그리고 아닙니다 return(some * expression || other);. 그러나 코드를 수정하거나 수정할 수 없거나 원하지 않는다고 말하기 때문에 그것은 당신에게 끔찍하게 도움이되지 않습니다. 따라서, 나는 당신에게 좋은 답변이 없습니다. 아마도 당신은 당신의 요구 사항을 재고해야 할 것입니다.

Return 문에 따라 반환되는 표현식을 강조하고 오른쪽 버튼 클릭 메뉴에서 "표현 평가"와 같은 것이 있어야합니다 (지금은 일식이 없지만 그와 비슷한 것입니다. ). 반품 될 내용을 보여줄 것입니다.

이것은 약간 널리 퍼져 있지만 간단한 방법이없는 것 같습니다.

측면 J를 사용하여 관심있는 메소드의 반환 값을 보유하는 Aspect를 사용하여 항아리를 도구 할 수 있습니다. Eclipse의 문서에 따르면 AnspectJ 프로그램은 다음과 같습니다. 디버깅 다른 프로그램처럼.

라이브러리를 다시 컴파일하지 않고 수업을 짜는 두 가지 옵션이 있습니다.

  • 이진 항아리를 처리 할 수있는 경우 우편 컴파일 직조;

  • 로드 타임 직조. VM에서 직조제를 활성화해야합니다.

Eclipse 문서 (위의 링크) 및 또한 AspectJ 개발 환경 안내서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top