[SCALA] 간단한 빌드 도구 (SBT)와 인 IntelliJ와 디버깅 스칼라 코드
SCALA간단한 빌드 도구 (SBT)와 인 IntelliJ와 디버깅 스칼라 코드
IntelliJ에 내장 된 디버거를 사용 SBT에 의해 관리 스칼라 코드를 디버깅하는 가장 쉬운 방법은 무엇입니까? SBT의 구글 코드 사이트에서 "RunningSbt"에서 문서는 프로젝트 나 시험에 대한 기본 클래스를 실행하기위한 명령을 나열하지만, 디버깅에 대한 명령을 할 수없는 것으로 보인다.
후속 질문 : 무엇 부두에 인 IntelliJ의 디버거를 연결하는 가장 쉬운 방법 SBT의 부두 운영하는 명령을 사용할 때?
해결법
-
==============================
1.인 IntelliJ에서 보통 디버깅을 위해 상관없이 당신이 당신의 코드를 컴파일 SBT를 사용하고 있는지 여부, 일반적인 방법으로 응용 프로그램 실행 / 디버그 구성을 사용할 수 있습니다.
인 IntelliJ에서 보통 디버깅을 위해 상관없이 당신이 당신의 코드를 컴파일 SBT를 사용하고 있는지 여부, 일반적인 방법으로 응용 프로그램 실행 / 디버그 구성을 사용할 수 있습니다.
부두에서 실행되는 응용 프로그램에 연결하려면 원격 디버그 구성을 만들어야합니다. 이렇게하면, IntelliJ를 원격 JVM을 실행하는 당신에게 명령 행 인수의 집합을 제공합니다 - 같은 것을
-Xdebug -Xrunjdwp : 트랜스 = dt_socket 서버 = Y = 5005 주소 = N 정지
-
==============================
2.맥, 리눅스 및 Windows 용 공식 SBT 패키지에 매우 편리한 -jvm 디버그 플래그가 있습니다. 당신은 디버그 포트를 지정하는 플래그를 사용할 수 있습니다 :
맥, 리눅스 및 Windows 용 공식 SBT 패키지에 매우 편리한 -jvm 디버그 플래그가 있습니다. 당신은 디버그 포트를 지정하는 플래그를 사용할 수 있습니다 :
sbt -jvm-debug 5005
내부적으로, 이것은 전형적인 자세한 디버깅 주문과 SBT의 JVM을 시작합니다 :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
이제 SBT 실행 명령 예를 들어, 정상으로 코드를 실행할 수 있습니다.
지금 당신은 원격 디버그 구성을 사용하여 실행중인 프로세스에 IntelliJ를 연결합니다. 당신이에서 텍스트를 복사 바로이 형태의 상위 3 개 필드, 무서운 동안, (그들은 -jvm 디버그 이미 당신을 담당 위에서 지정한 자세한 디버깅 주문을주는 것) 대신에보다, 참고 - 변경할 수있는 유일한 구성은 반쯤 열고 설정 섹션에 :
-
==============================
3.나도이 몇 가지 문제가 있었다, 그래서 지나치게 세부적인 존재의 위험, 여기에 내가 무슨 짓을했는지 :
나도이 몇 가지 문제가 있었다, 그래서 지나치게 세부적인 존재의 위험, 여기에 내가 무슨 짓을했는지 :
설정
오류 추적
-
==============================
4.중단 점을 사용하여 테스트 클래스를 디버깅 : 관련 문제를 찾을 때 나는이 질문을 발견하기 때문에, 여기에 다른 대답을 추가하고있다.
중단 점을 사용하여 테스트 클래스를 디버깅 : 관련 문제를 찾을 때 나는이 질문을 발견하기 때문에, 여기에 다른 대답을 추가하고있다.
나는 ScalaTest를 사용하고, 나는 일반적으로 SBT의 '테스트 전용'명령을 사용하여 제품군을 실행합니다. 내가 대화 형 디버거를 사용하려는 자 할 때, 나는 다음을 수행 할 수 있습니다 :
"시작하기 전에 실행 SBT 액션 '테스트 컴파일을'"이름, 선택 형식 'ScalaTest'의 새로운 실행 / 디버그 구성 만들기, 주요 "테스트 클래스"를했습니다. 즉, 테스트 소스를 지금 중단 점을 배치하고이 구성을 실행할 수 있습니다, 그것을이다.
-
==============================
5.이 답변 또는 링크를 제공 아무도 나를 위해 일한, 그래서 나는이 알아 낸 후, 내가 공유 할 거라고 생각 ...
이 답변 또는 링크를 제공 아무도 나를 위해 일한, 그래서 나는이 알아 낸 후, 내가 공유 할 거라고 생각 ...
내가 시작했을 때 내가 가지고 있지 않은 배경의 이해를 포함 ...
이것은 대부분의 지침 여기에 단지 그것을 통해 나를 수행 추가적인 설명과 함께 기반으로합니다.
내 환경 : 스칼라 2.10.2, SBT 0.13, 및 인 IntelliJ 13.1
배경:
디버깅은 무엇인가?
원격 디버깅은 무엇인가?
다음의 설명, 위의 링크를 참조하기 / 수정 유용합니다 :
-
==============================
6.이 사람은 나를 위해 모든 시간을 작동하고, 사용자가 설정해야 할 유일한 것은 인 IntelliJ에서 원격 디버깅이다; 내가 IntelliJ에있는 터미널에서 JVM 매개 변수로 SBT를 시작합니다 :
이 사람은 나를 위해 모든 시간을 작동하고, 사용자가 설정해야 할 유일한 것은 인 IntelliJ에서 원격 디버깅이다; 내가 IntelliJ에있는 터미널에서 JVM 매개 변수로 SBT를 시작합니다 :
sbt -J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
그 후 나는 로컬 호스트에서 원격 디버깅을 시작할 수 : 5005
-
==============================
7.스칼라 2.10 및 SBT 0.12 사용하여, 나는이 같은 일을 가지고 : http://tuliodomingos.blogspot.com.es/2014/01/scala-remote-debugging-in-sbts-jetty.html
스칼라 2.10 및 SBT 0.12 사용하여, 나는이 같은 일을 가지고 : http://tuliodomingos.blogspot.com.es/2014/01/scala-remote-debugging-in-sbts-jetty.html
-
==============================
8.나는 인 IntelliJ를 사용하여, SBT를 통해 구축 된 스프레이 수 / Akka / 스칼라 응용 프로그램과 함께 Windows에서 너무 디버깅 어려움을 겪고 있었어요. 함께 다양한 제안을 잇고, 나를 위해 간단한 방법이었다 :
나는 인 IntelliJ를 사용하여, SBT를 통해 구축 된 스프레이 수 / Akka / 스칼라 응용 프로그램과 함께 Windows에서 너무 디버깅 어려움을 겪고 있었어요. 함께 다양한 제안을 잇고, 나를 위해 간단한 방법이었다 :
특정 용도에서는 = Y 옵션을 일시 중지합니다. 당신이 인 IntelliJ에서 원격 디버거를 연결할 때까지 앱을 길게한다
-
==============================
9.파일 -> 설정 -> 기타 설정 -> SBT VM 매개 변수 -Xmx512M -XX :를 MaxPermSize = 256M -Xdebug -Xrunjdwp : 트랜스 = dt_socket 서버 = Y가 N = 일시 주소 = 5005
파일 -> 설정 -> 기타 설정 -> SBT VM 매개 변수 -Xmx512M -XX :를 MaxPermSize = 256M -Xdebug -Xrunjdwp : 트랜스 = dt_socket 서버 = Y가 N = 일시 주소 = 5005
실행 -> 편집 구성 보도 + 다음 원격 선택 눌러 적용
이제 당신은 볼 것이다 '실행'명령을 실행할 때 (IntelliJ에 의해 내부 시작)을 SBT 콘솔에서 "주소에서 전송 dt_socket 듣기를 : 5005"
이제 실행 -> 디버그를 누릅니다. 활성화 아래에 당신은 디버그 메뉴를 볼 수 있습니다. 그것은 두 개의 탭 디버거 및 콘솔이있다.
옆에 옆에 줄에서 F7을하기 위해 사용
나는 N으로 중단 선택했다. 나는 그것이 부착 된 실행 명령을 실행할 때이 Y 인으로
-
==============================
10.그것은 가치가 윈도우 민속 무엇을, % SBT_HOME % \ 빈 \의 sbt.bat을 편집하고 다음 코드 줄을 찾습니다 경우 :
그것은 가치가 윈도우 민속 무엇을, % SBT_HOME % \ 빈 \의 sbt.bat을 편집하고 다음 코드 줄을 찾습니다 경우 :
:run "%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %* if ERRORLEVEL 1 goto error goto end
다음이 코드로 교체 :
FOR %%a IN (%*) DO ( if "%%a" == "-jvm-debug" ( set JVM_DEBUG=true set /a JVM_DEBUG_PORT=5005 2>nul >nul ) else if "!JVM_DEBUG!" == "true" ( set /a JVM_DEBUG_PORT=%%a 2>nul >nul if not "%%a" == "!JVM_DEBUG_PORT!" ( set SBT_ARGS=!SBT_ARGS! %%a ) ) else ( set SBT_ARGS=!SBT_ARGS! %%a ) ) if defined JVM_DEBUG_PORT ( set _JAVA_OPTS=!_JAVA_OPTS! -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=!JVM_DEBUG_PORT! ) call :run %SBT_ARGS% if ERRORLEVEL 1 goto error goto end :run "%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%sbt-launch.jar" xsbt.boot.Boot %* goto :eof
배쉬 스크립트 실행에서 볼 때 제일 나는 -jvm 디버그에 대한 동일한 동작을 취득 할 수있는
NB. 나는 생각하지 않는다 % SBT_HOME % 실제로 당신이 환경에서 명시 적으로 생성하지만, 어쨌든 당신은 요점을 파악하지 않는 한,이 스크립트 외부에 존재 : D를
-
==============================
11.나는 또한 같은 문제를 가지고, 내가 해결 방법을 공유하는 것을 좋아합니다. 그런데 나는 우분투 14.04 및 인 IntelliJ (15)를 사용하고 있습니다.
나는 또한 같은 문제를 가지고, 내가 해결 방법을 공유하는 것을 좋아합니다. 그런데 나는 우분투 14.04 및 인 IntelliJ (15)를 사용하고 있습니다.
-
==============================
12.
export SBT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5009
이 시도
-
==============================
13.위의 로베르토 Tyley의 대답에 따라,하지만 Windows에서 우리는 또한 SBT를 설치 한 후 다음과 같은 환경 변수를 설정해야합니다 :
위의 로베르토 Tyley의 대답에 따라,하지만 Windows에서 우리는 또한 SBT를 설치 한 후 다음과 같은 환경 변수를 설정해야합니다 :
SBT_HOME C : \의 Program Files (x86) \ SBT \ [또는 SBT가 설치된 곳]
SBT_OPTS -Xdebug -runjdwp : 트랜스 = dt_socket 서버 = Y = 5005 주소 = N 정지
[RT의 인 IntelliJ 예 당]
경로에 추가 : %의 SBT_HOME % \ bin에를; % SBT_OPTS %
그런 다음 프로젝트 폴더에서 명령 줄에서 다음을 실행 "-jvm -debug 5005을 실행 SBT".
이 정상적으로 작동하면, 명령 줄 것 처음 출력 라인 재 "주소로 전송 dt_socket 듣기 : 5005".
인 IntelliJ에 중단 점을 설정합니다.
예를 들어, 디버거 중단 점을 트리거 브라우저에서 웹 사이트 열기 에 "http : // localhost를 : 9000 /".
from https://stackoverflow.com/questions/4150776/debugging-scala-code-with-simple-build-tool-sbt-and-intellij by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크 스칼라에 DataFrame의 열 이름을 이름 바꾸기 (0) | 2019.11.06 |
---|---|
[SCALA] 케이스 클래스는 스칼라에서지도로 (0) | 2019.11.06 |
[SCALA] 어떻게 하드 코딩없이 케이크 패턴 의존성 주입을해야합니까? (0) | 2019.11.05 |
[SCALA] 밀폐 된 특성은 무엇입니까? (0) | 2019.11.05 |
[SCALA] 대규모 데이터 세트에 대한 COGROUP를 사용하는 방법 (0) | 2019.11.05 |