Eclipse 디버거에서 역 실행을 수행 할 수 있습니까? 내가 현재 작업중 인 프로젝트는 무엇이든 할 수 있기 전에 파일에서 데이터를 읽고 초기화하는 데 최소 5 초가 필요합니다. 디버거를 넘어 서면 프로그램을 종료하고 다시 시작해야하는데 시간이 약간 걸립니다.
답변
Eclipse의 drop to frame 명령을 사용하여 현재 메소드를 맨 처음부터 다시 입력 할 수 있습니다 . 그러나 발생한 상태 변경 사항을 풀지 않으므로 사용하는 방법의 종류에 따라 작동하지 않을 수 있습니다.
실제로 시간을 거슬러 올라갈 수있는 또 다른 멋진 도구는 Omniscient Debugger 입니다. 클래스 로더에로드 된 클래스를 계측하여 작동하므로 코드가 수행하는 모든 것을 기록 할 수 있습니다. “이 필드에 현재 값이 언제, 어디서, 왜 할당 되었습니까?”라는 대답과 같은 매우 멋진 작업을 수행 할 수 있습니다. UI는 다소 번거롭고 큰 코드 기반을 처리하는 데 어려움을 겪을 수 있지만 경우에 따라 많은 시간을 절약 할 수 있습니다.
업데이트 : Chronon 은 “DVR for Java”라고 설명하는 상용 제품을 제공하며 ODB와 동일한 기능을 수행합니다.
답변
이전 답변에서 언급 된 것 외에도- 디버그 뷰 의 Eclipse 드롭 투 프레임 기능- 스택 프레임에서 초기에 디버깅을 다시 시작하지만 전역 / 정적 데이터를 되 돌리지는 않지만 Omniscient 디버거 는 약간 원시적이지 않습니다. 진화-(실행) 시간에 “돌아가는”데 사용할 수있는 몇 가지 Eclipse 기반 도구가 있습니다.
- JIVE : 자바 인터랙티브 시각화 환경
- Chronon : Java 프로그램을위한 “비행 데이터 레코더”
- 다이버 (단종) : 리버스 엔지니어링을위한 다이내믹 인터랙티브 뷰
- Halik : 현재 IntelliJ에만 해당되지만 로드맵에는 Eclipse 로의 포팅이 언급되어 있습니다.
JIVE는 프로그램 상태를 기록하는 기능으로 Eclipse Java 디버거를 확장합니다. JIVE Perspective는 프로그램이 실행되는 동안 업데이트되는 유용한 UML 다이어그램을 제공합니다. 이 다이어그램은 애플리케이션 상태 (오브젝트 다이어그램) 및 스택 추적 (시퀀스 다이어그램)에 대한 개요를 제공합니다. 기억 된 추적을 조회하고 시간을 앞뒤로 이동하여 해당 다이어그램을 볼 수 있습니다.
다이버는 메소드 호출 만 기록하고 실제로 JIVE와 같은 프로그램 상태는 기록하지 않습니다. 모든 메소드 호출 이벤트는 나중에 검색 및 분석하기 위해 저장됩니다. 주로 필터를 지정하기 위해 Java 실행 및 디버그 구성을 확장합니다. 런타임에 추적을 일시 중지 / 다시 시작 / 필터링 할 수 있습니다. 일단 기록되면 다이버 퍼스펙티브는 대화식 시퀀스 다이어그램으로이를 표시 할 수 있습니다.
JIVE와 다이버는 학술 연구에서 발행 한 오픈 소스 프로젝트입니다. 2012 년 11 월 현재 두 프로젝트가 모두 활성화되었습니다.
Chronon은 상용 제품이지만 학생 및 오픈 소스 프로젝트에 대한 무료 라이센스가 있습니다. 웹 사이트에서 주장하는 것에서 아마도 기록 된 기록을 재생할 수 있기 때문에 아마도 가장 포괄적 인 레코더 일 것입니다. 또한 Eclipse는 레코딩에 필요하지 않습니다.
이러한 플러그인은 모두 리소스가 매우 탐욕 스럽기 때문에 좋은 사양 기계를 사용하고 필터 기능을 사용하는 것이 가장 좋습니다. 그것들을 성공적으로 실행하기 위해서는 eclipse.ini에서 힙 공간 을 확장해야합니다 .
필자의 경우 JIVE와 Diver를 사용하여 XML 파싱 프로그램을 디버깅하려고 시도했지만 항상 리소스 부족으로 인해 일식이 멈추었습니다. 다이버는 리눅스 64 비트 에서 실행하기 까다로울 수 있으며 , 이 팁을 사용하여 우분투 32 비트 및 다른 32 비트 배포판에서 작동합니다 . 다이버는 Windows에서 더 잘 작동하지만 Windows 64 비트 + 64 비트 JVM에서 더 잘 작동합니다. 그렇지 않으면 32 비트 창에서 최대 힙 공간이 1.3-1.6Gb 로 제한됩니다 . JIVE는 Linux 64 비트에서 잘 작동하며 다른 플랫폼에서도 잘 작동하는 것 같습니다.
답변
예 , Eclipse CDT는 히스토리 디버거 기능을 지원합니다.
열기 디버그 구성 -> 디버거 -> 시작시 역 디버깅을 활성화합니다 .
shift+F5
또는 shift+F6
을 눌러 뒤로 F5
또는 뒤로 F6
앞으로 이동할 수 있습니다 .
답변
나는 편견이 있지만 Chronon 은 당신이 찾고있는 것을 정확하게합니다.
메소드가 힙의 항목을 변경 한 경우 되돌릴 수 없으므로 드롭 투 프레임이 정확하게 뒤로 물러나지 않습니다.
답변
이클립스 에서도이 기능을 찾고있었습니다. 비주얼 스튜디오가 그렇게 할 수 있다는 것을 알고 있습니다. 실제로 현재 선 마커를 드래그하여 코드의 아무 곳이나 다시 놓을 수 있습니다. 변수 변경을 취소 할 수 있는지 잘 모르겠습니다. 그러나 여전히 매우 유용하며 많은 시간을 절약합니다. 나는 일식에서 이것을 오랫동안 오랫동안 기다려왔다.
답변
이 질문은 Eclipse 언어를 지정하지 않으며 많은 답변이 Java를 가정합니다.
GDB 디버거와 함께 C ++ 및 GCC를 사용하는 경우 Eclipse는 Run->Move to Line
Visual Studio Set Next Statement 와 같은 작업 및 기능을 수행합니다 . 이 경우 Eclipse는 GDB에있는 기능을 사용합니다.
Java를 사용하는 경우 Eclipse 또는 Netbeans를 사용하는 방법을 알지 못하지만 다른 답변에서는 플러그인을 제안했습니다. Eclipse에는 내 버전 (Juno SR1)에서 Java에 사용할 수있는 “프레임으로 드롭”명령이 있습니다. 디버그 모드에서 함수 내에서 코드를 수정하고 저장하면 실행 줄이 자동으로 현재 함수의 맨 위로 이동하여 계속 진행할 수 있습니다. 줄을 지정하는 것과 같지는 않지만 무언가입니다.