2012-03-05 3 views
3

슬링 번들로 빌드하는 애플리케이션을 디버그하는 데 어려움을 겪고 있습니다. 응용 프로그램은 거의 그루비 코드 (Groovy Eclipse 플러그인이 있음)이고 Eclipse (Maven 사용)는 .jar를 빌드하고 슬링에 문제없이 설치합니다.Eclipse에서 원격 Java 애플리케이션 디버깅을 통해 Groovy 코드를 디버깅하는 방법

그러나 디버깅 할 수 없습니다. 내가 슬링 애플리케이션을 디버깅에 필요한 수집 원격 디버깅을 설정하는 지침을 따랐다 - 특히, 나는 다음과 같은 명령을 슬링을 실행 :

java -Xdebug -Xnoagent -Djava.io.tmpdir=/c/Users/nickgolding1/temp -Xmx1024m -Xrunjdwp:transport=dt_socket,address=30303,server=y,suspend=n -jar org.apache.sling.launchpad-6-SNAPSHOT-standalone.jar -p 8080 

이 ... 그리고 이클립스에서 디버그 구성을 설정, 내 프로젝트, 연결 유형 "표준 (소켓 연결)", 호스트 localhost, 포트 30303을 가리키는 "원격 Java 응용 프로그램"유형의.이 구성은 좋아 보이기 시작한 것 같습니다. - 적어도, 나는 그것이 " t -하지만 Groovy 코드에서 설정 한 중단 점은 실제로 슬링 앱에 대한 요청 실행을 중단하지 않습니다.

다양한 포럼에서 Java 코드에 문제가없는 Remote Java App 구성을 통해 Groovy 코드를 디버깅하는 데 문제가 있음을 알리는 몇 개의 게시물을 보았습니다. 불행히도 내 응용 프로그램은 모두 Groovy 및 Java가 아니므로 여기서 확인할 수는 없습니다.

의견을 보내 주시면 감사하겠습니다.

답변

3

먼저 제안 사항. Xrunjdwp : transport 옵션에 suspend=y을 설정하십시오. 이것은 main에서 중지 될 것이고 디버그 옵션이나 Groovy 코드에 문제가 있는지 아닌지에 관해서 더 좋은 아이디어를 줄 것이다.

지금, 더 복잡한 것이 있습니다. 예. 원격 Groovy 코드의 디버깅과 관련하여 몇 가지 문제가 있습니다. 일반적으로 Groovy 코드가 동적으로로드 될 때 문제가 발생합니다. 이 경우 디버그 이름은 종종 소스 이름과 일치하지 않으며 디버거는 동적으로로드 된 클래스 파일을 원본 소스 코드와 일치시키는 방법을 모릅니다.

한 이러한 문제는 여기에 설명되어 있습니다 (그리고 비슷한 일이 일어날 의심의 여지가 다른 곳이없는) : https://jira.springsource.org/browse/SPR-7113

그래서, 내 제안이 가능하면 당신이 당신의 그루비 코드가 사전인지 확인해야한다는 것입니다은 서버에 보내기 전에 컴파일됩니다. (또한 suspend=y으로 설정하십시오.)

+1

감사합니다. 'suspend = y'는 디버그 옵션이 작동한다는 것을 보여주었습니다 (Eclipse가 디버깅을 시작한 다음 성공적으로 시작하기를 기다렸습니다). 그루비가 문제가되는 것처럼 보입니다. 프리 컴파일 제안은 훌륭하지만 Groovy 코드가 미리 컴파일되고 있다는 것을 확신합니다. Maven 빌드 출력은 컴파일하는 것이 좋습니다. –

+0

또한 Groovy 소스가 Eclipse의 원격 실행 구성의 소스 조회 경로에 포함되어 있는지 확인하십시오. –

+0

그들은 좋은 지적이 아니 었습니다. 그러나 지금은 그렇습니다. 깨끗하고 재배포 된 후에도 여전히 디버깅을하지 못합니다. –

관련 문제