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


127

와:

Object method(){
    ...
    return /* some complex expression */
}

디버깅하는 동안 어떤 값이 반환되는지 확인할 수있는 방법이 있습니까? 어떻게 든 반환 직후에 발생하지만 실행 코드가 호출 코드로 이동하기 전에 중단 점을 설정합니까? 반환 값이 무엇인지 알 수 있고 모든 지역 변수의 값을 확인할 수 있기를 원합니다.

내가 지금하는 방법은 임시 변수를 만드는 것 Object ret = /* something complex */; return ret;입니다. 그러나 그것은 번거롭고 불필요한 불필요한 코드 줄을 추가합니다.

참고 : 이것은 Visual Studio에서 디버깅하는 동안 반환하기 전에 반환 값을 찾을 수 있지만 intellij 와 동일한 질문 입니다.

답변:


31

이 작업을 수행 할 수있는 몇 가지 방법이 있습니다. 첫 번째는 메소드 서명에 중단 점을 설정하는 것입니다.이 경우 Object method () {에 중단 점을 설정합니다. 이를 통해 분석법의 시작 및 종료를 관찰 할 수 있습니다. 위에서 설명한 것처럼 " Watch method return values" 와 함께 이것을 사용해야한다고 생각 하지만 계산하는 데 너무 오래 걸리므로 완전히 테스트 할 수 없었습니다. 이는 디버거의 성능을 크게 저하 시키므로 디버깅하는 데 시간이 더 오래 걸립니다.

또한 다음을 수동으로 수행 할 수 있습니다.

  1. 리턴 라인에 중단 점을 설정하십시오.
  2. 리턴 라인에 도달하면 리턴 라인을 클릭하십시오. 특히보고자하는 조작에 커서를 놓고 Run-> Evaluate Expression (또는 Alt-F8)으로 이동하면 해당 시점에서 표현식을 실행해야합니다. 돌아 오는 것을 돌려줍니다.

참고 : 중단 점을 작성하는 경우 중단 점을 중단 한 경우 표현식을 수행하고 기록하도록 IDEA에 IDEA와 관련하여 할 수있는 작업이 많이 있습니다. 중단 점을 마우스 오른쪽 단추로 클릭하고 특성을 클릭하면 수행 할 수있는 작업을 살펴볼 수 있습니다.

업데이트 : 첫 번째 방법과 함께 시도하십시오. 디버깅 세션을 느리게하거나 정지시키는 것처럼 보이는 "Watch method return values"를 사용하지 마십시오. 대신 다음을 수행하십시오

  1. 보고자하는 리턴 표현식을 마우스 오른쪽 단추로 클릭하고 "시계에 추가"를 클릭하십시오.
  2. 그런 다음 위에서 언급 한대로 메소드 중단 점을 추가하십시오.
  3. 프로그램을 디버깅하면 메소드가 메소드 서명을 위반합니다.
  4. 계속 다시 깨지면에 대한 F9 키를 히트 후에 반환 식을 계산되었으며 수익식이 시계 컬럼에 있어야합니다.

메소드 중단 점은 느리므로 시간이 더 걸릴 수 있음을 기억하십시오. 성능 적중을 너무 많이 인식하는 경우이를 개선하는 까다로운 방법은 메소드 중단 점없이 리턴 문 중단 점을 설정 한 후 메소드 중단 점을 추가하는 것입니다. 후에 return 문 브레이크 포인트 안타 후 계속.

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


1
실제로 (new X ())에 중단 점과 시계를 추가하면 해당 시계에서 Alt + F8을 수행하여 반환 된 객체를 '분석'할 수 있습니다. 이것은 정말 유용합니다.
Kedar Mhaswade

내가 이것을 올바르게 이해하고 있다면, 제안 된 해결책은 표현식에 부작용이없는 경우에만 작동합니다. 나는 일반적으로 변수 / 조사 식 창에 복잡한 표현을 넣지 않는 것이 좋습니다.
Mashmagar

2016.3 이상부터 훨씬 더 좋은 방법이 있습니다. 자세한 내용은 Birchlabs의 답변을 참조하십시오. 이제는 정답입니다.
Mikezx6r

150

IntelliJ IDEA 2016.3 : 디버그 패널의 톱니 바퀴 버튼 안에 숨겨져 있습니다. 확인 Show Method Return Values한다 확인 .

IntelliJ IDEA 2016.3 "방법 반환 값 표시"

반환 값을 보려는 함수 내부를 디버거를 사용하여 중단 하십시오.

기능을 강화하다

기능에서 나가 십시오 (또는 탈출 할 때까지 넘어가십시오 ).

물러나 다

반환 값이 변수에 나타나는지 확인하십시오.

반환 값을 관찰하다


3
@ Stan 나는 예제를 제공하기 위해 답변을 업데이트했습니다.
Birchlabs

40

디버거 패널 에는 Watch 메소드 반환 값 버튼이 있습니다 .

감시 방법 반환 값 :이 버튼을 클릭하면 마지막으로 실행 된 방법의 반환 값을 볼 수 있습니다.

watch 메소드 리턴 값

IDEA 12 구성 :

아이디어 12


2
"변수"또는 "시계"탭에 아무것도 표시되지 않습니다. 중요한 경우 Groovy를 사용하고 있습니다. 또한 이것은 메서드 자체의 컨텍스트가 아닌 호출 코드의 컨텍스트에서 실행 된 마지막 메서드의 반환 값을 표시하는 것처럼 보입니다. 이것의 중요한 차이점은 메소드 자체의 컨텍스트에서 볼 수 있다면 메소드의 로컬 변수 값을 볼 수도 있다는 것입니다. 이를 통해 메소드가 잘못된 값을 리턴하는 경우 무엇이 잘못되었는지 확인할 수 있습니다.
Kyle

3
"변수"창에 반환 값을 표시합니다 (정규화 된 분석법 이름 사용). 이것은 받아 들여진 대답이어야합니다. @CrazyCoder +1 from me :-)
Omri Spector

4
@CrazyCoder :이 기능이 IDEA 13에 여전히 존재합니까? 못 찾겠 어.
kevinarpe

1
나는 Intellij 15를 사용하고 있으며 이것을 보지 못합니다. 스크린 샷을 게시 할 수 있습니까?
Sanjiv Jivan

3
2017 년 1 월 (Idea 2016.3.2) : 설정 아이콘 (두 번째 이미지의 노란색 메뉴 항목 바로 위에있는 기어)을 클릭해야합니다. 메뉴에는 "방법 반환 값 표시"가 포함되어 있습니다. 다시 시작 아무것도 필요가 : 변수가 바로 아래에 볼 수있는 방법에서 다음 복귀 후, 그 ObjectClassName.methodName ()이 나타납니다 .
18446744073709551615

1

이것은 얼마 전에 요청되었지만이 상황을 처리하고 싶을 때 다른 방법을 사용합니다.

디버깅 할 때 표현식 (여기서는 "return"바로 뒤에있는 표현식)을 표시하고 CTRL + ALT + F8 (Quick Evaluate Expression)을 누르십시오. IntelliJ가 반환되는 값을 보여주는 작은 창을 표시합니다.


2
Intel 그래픽 칩을 사용하는 경우이 키보드 단축키 는 보조 모니터를 종료합니다 .
Coli

1
Linux 사용자 : Ctrl + Alt + F8-사용자를 2 차 GUI 터미널로 보냅니다. 우분투에서 Ctrl + Alt + F2를 눌러 되돌아갑니다.
Dmitriy Pavlukhin 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.