복붙노트

[SCALA] 간단한 빌드 도구 (SBT)와 인 IntelliJ와 디버깅 스칼라 코드

SCALA

간단한 빌드 도구 (SBT)와 인 IntelliJ와 디버깅 스칼라 코드

IntelliJ에 내장 된 디버거를 사용 SBT에 의해 관리 스칼라 코드를 디버깅하는 가장 쉬운 방법은 무엇입니까? SBT의 구글 코드 사이트에서 "RunningSbt"에서 문서는 프로젝트 나 시험에 대한 기본 클래스를 실행하기위한 명령을 나열하지만, ​​디버깅에 대한 명령을 할 수없는 것으로 보인다.

후속 질문 : 무엇 부두에 인 IntelliJ의 디버거를 연결하는 가장 쉬운 방법 SBT의 부두 운영하는 명령을 사용할 때?

해결법

  1. ==============================

    1.인 IntelliJ에서 보통 디버깅을 위해 상관없이 당신이 당신의 코드를 컴파일 SBT를 사용하고 있는지 여부, 일반적인 방법으로 응용 프로그램 실행 / 디버그 구성을 사용할 수 있습니다.

    인 IntelliJ에서 보통 디버깅을 위해 상관없이 당신이 당신의 코드를 컴파일 SBT를 사용하고 있는지 여부, 일반적인 방법으로 응용 프로그램 실행 / 디버그 구성을 사용할 수 있습니다.

    부두에서 실행되는 응용 프로그램에 연결하려면 원격 디버그 구성을 만들어야합니다. 이렇게하면, IntelliJ를 원격 JVM을 실행하는 당신에게 명령 행 인수의 집합을 제공합니다 - 같은 것을

    -Xdebug -Xrunjdwp : 트랜스 = dt_socket 서버 = Y = 5005 주소 = N 정지

  2. ==============================

    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. ==============================

    3.나도이 몇 가지 문제가 있었다, 그래서 지나치게 세부적인 존재의 위험, 여기에 내가 무슨 짓을했는지 :

    나도이 몇 가지 문제가 있었다, 그래서 지나치게 세부적인 존재의 위험, 여기에 내가 무슨 짓을했는지 :

    설정

    오류 추적

  4. ==============================

    4.중단 점을 사용하여 테스트 클래스를 디버깅 : 관련 문제를 찾을 때 나는이 질문을 발견하기 때문에, 여기에 다른 대답을 추가하고있다.

    중단 점을 사용하여 테스트 클래스를 디버깅 : 관련 문제를 찾을 때 나는이 질문을 발견하기 때문에, 여기에 다른 대답을 추가하고있다.

    나는 ScalaTest를 사용하고, 나는 일반적으로 SBT의 '테스트 전용'명령을 사용하여 제품군을 실행합니다. 내가 대화 형 디버거를 사용하려는 자 할 때, 나는 다음을 수행 할 수 있습니다 :

    "시작하기 전에 실행 SBT 액션 '테스트 컴파일을'"이름, 선택 형식 'ScalaTest'의 새로운 실행 / 디버그 구성 만들기, 주요 "테스트 클래스"를했습니다. 즉, 테스트 소스를 지금 중단 점을 배치하고이 구성을 실행할 수 있습니다, 그것을이다.

  5. ==============================

    5.이 답변 또는 링크를 제공 아무도 나를 위해 일한, 그래서 나는이 알아 낸 후, 내가 공유 할 거라고 생각 ...

    이 답변 또는 링크를 제공 아무도 나를 위해 일한, 그래서 나는이 알아 낸 후, 내가 공유 할 거라고 생각 ...

    내가 시작했을 때 내가 가지고 있지 않은 배경의 이해를 포함 ...

    이것은 대부분의 지침 여기에 단지 그것을 통해 나를 수행 추가적인 설명과 함께 기반으로합니다.

    내 환경 : 스칼라 2.10.2, SBT 0.13, 및 인 IntelliJ 13.1

    배경:

    디버깅은 무엇인가?

    원격 디버깅은 무엇인가?

    다음의 설명, 위의 링크를 참조하기 / 수정 유용합니다 :

  6. ==============================

    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. ==============================

    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. ==============================

    8.나는 인 IntelliJ를 사용하여, SBT를 통해 구축 된 스프레이 수 / Akka / 스칼라 응용 프로그램과 함께 Windows에서 너무 디버깅 어려움을 겪고 있었어요. 함께 다양한 제안을 잇고, 나를 위해 간단한 방법이었다 :

    나는 인 IntelliJ를 사용하여, SBT를 통해 구축 된 스프레이 수 / Akka / 스칼라 응용 프로그램과 함께 Windows에서 너무 디버깅 어려움을 겪고 있었어요. 함께 다양한 제안을 잇고, 나를 위해 간단한 방법이었다 :

    특정 용도에서는 = Y 옵션을 일시 중지합니다. 당신이 인 IntelliJ에서 원격 디버거를 연결할 때까지 앱을 길게한다

  9. ==============================

    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. ==============================

    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. ==============================

    11.나는 또한 같은 문제를 가지고, 내가 해결 방법을 공유하는 것을 좋아합니다. 그런데 나는 우분투 14.04 및 인 IntelliJ (15)를 사용하고 있습니다.

    나는 또한 같은 문제를 가지고, 내가 해결 방법을 공유하는 것을 좋아합니다. 그런데 나는 우분투 14.04 및 인 IntelliJ (15)를 사용하고 있습니다.

  12. ==============================

    12.

    export SBT_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5009
    

    이 시도

  13. ==============================

    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 /".

  14. from https://stackoverflow.com/questions/4150776/debugging-scala-code-with-simple-build-tool-sbt-and-intellij by cc-by-sa and MIT license