Intellij에서 Java 디버거를 사용할 때 "드롭 프레임"은 무엇을 의미합니까?


94

Intellij 8 내에서 Java 디버거를 사용하고 있었는데 "drop frame"이라는 버튼이 나타났습니다. 이것이 어떤 용도로 사용되는지 아는 사람이 있습니까? 이것이 어떻게 / 왜 사용 / 유용합니까?

답변:


128

애플리케이션의 호출 스택은 디버거에서 볼 수 있습니다. "드롭 프레임"기능을 사용하면 시간을 거슬러 올라가는 의미에서 이전 스택 프레임으로 "폴백"할 수 있습니다. 다시보고 싶은 중요한 지점을 놓친 경우 기능을 다시 입력하는 데 도움이 될 수 있습니다.

"스택 프레임"이라는 이름에서 알 수 있듯이 이미 전역 상태에 적용된 변경 사항 (예 : 정적 변수, 필드 값 변경 등)은 취소되지 않고 로컬 변수 만 재설정됩니다. 이로 인해 원래 중단 점으로 이어진 실행 경로와 다른 실행 경로가 발생할 수 있습니다. 이 점을 알고 있어야합니다. 응용 프로그램을 다시 시작하지 않고도 다른 실행 경로를 탐색하거나 현재 스택으로 이어지는 특정 긴 프로세스를 탐색하는 데 유용한 기능이라고 생각합니다. 디버거를 통해 사용할 수있는 변수 값의 변경과 결합하여 모든 종류의 흥미로운 작업을 수행 할 수 있습니다.

물론 발생한 부작용 (예 : 네트워크 트래픽, 파일 조작, 콘솔 출력 등)은 되돌릴 수 없습니다.


14

디버거 내에서 프레임 삭제는 현재 스택 프레임을 팝하고 제어를 호출 메서드에 다시 넣어 모든 로컬 변수를 재설정합니다. 이것은 함수를 반복적으로 단계별로 진행하는 데 매우 유용하지만주의해야합니다. 필드 변형 또는 전역 상태 변경은 그대로 유지됩니다.

여기에서 자세한 정보를 참조 하십시오 .


7

디버거를 사용하여 스택에서 프레임을 삭제하면 기본적으로 애플리케이션 실행을 "되감기"하여 이전 상태에 도달 할 수 있습니다. 스택 프레임 외부의 변수는 되 돌리지 않습니다.

참고로이 기능은 Eclipse에서 "Drop to Frame" 이라고 생각 하지만 동일한 용도로 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.