IntellijIDEA + Scala로 테스트 원격 디버깅
4062 단어 jdwpIntelliJIdeaScalasbt
개요
Inttelij의 원격 디버거는 간단한 구성이라면 바삭하게 움직이지만,
멀티프로젝트를 사용하거나 테스트 프레임워크가 섞여 있거나 등이 있다고 예상대로 움직이는데 한 번 걸립니다.
run은 문제 없다.
수중에서 동작 확인을 할 때 run하여 상태를 보고 싶을 때는 다음과 같은 명령으로 실행하고 있습니다.
sbt 'project $pjName' -jvm-debug $port -Dconfig.file=$file run
test의 경우
sbt (test|testOnly)
때는 -jvm-debug만으로는 잘 움직이지 않고, 매회 이하의 설정을 test 태스크의 javaOption에 지정해 debug 하거나javaOptions in Test ++= Seq("-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9999")
IntellijIDEA상에서 테스트에 대해 하나하나 debug conf를 만들어, -Dconfig~등의 테스트에 필요한 설정을 주거나 하고 있었습니다.
이것이 귀찮아서 Intellij와는 다른 teminal에서 시작한 sbt shell에서 실행 한 테스트를 디버깅 할 수있게했습니다.
이것이라면 testOption 등으로 지정한 디폴트 옵션도 읽어들여, 범용적으로 사용할 수 있어 행복
jdwp
Java TM Debug Wire Protocol (JDWP) 의 약어로, debugger 와, JVM 와의 사이의 통신에 사용하는 프로토콜입니다. 자세한 것은↓
htps : // / cs. 오라 cぇ. 이 m/쟈ゔぁ세/jp/6/테 ch에서 s/구이로 s/jp다/jdwps ぺc. HTML
이하 2개의 구성을 취할 수 있습니다.
어느 쪽이든 괜찮습니다만, JVM이 서버의 패턴이라면 Debugger 기동 잊어 suspend shift가 일어날 수 있으므로 Debugger측을 서버로 한 순서를 적습니다. (쉽게 바꿀 수 있으므로 취향에 부디)
debug 작업 추가
↓의 Config 만드는 방법을 참고로 우리의 sbt에 remote debugger용 옵션을 짜넣은 Config를 추가했습니다.
htps //w w. s 또는 sbt. rg / 0.13 / cs / s sing g. html # 아치 오나 l + 테 st + 곤푸 쿠라 치온 s + 우우 th + 멋쟁이 d + 그래 r s
최소한이라면 ↓ 같은 느낌
lazy val debugTest = config("debug") extend Test
lazy val root = (project in file("./"))
.configs(debugTest)
.settings(
fork in DebugTest := true,
javaOptions in DebugTest ++= Seq("-agentlib:jdwp=transport=dt_socket,server=n,suspend=n,address=41230"
)
.settings(inConfig(DebugTest)(Defaults.testTasks))
※javaOption in Test에서도 좋지 않다고 생각할지도 모릅니다만, CI때에 debugger가 없으면
JVM이 Client 인 경우 = 이끼 or JVM이 Server 인 경우 = debugger 연결을 기다린 채 멈추기 때문에 별도의 Config를 준비해야했습니다.
도입 절차
Edit Configurations
+
->remote를 클릭OK
🐞
아이콘을 클릭합니다.debug:test
된다 debug:testOnly *Hogehoge
한다.* 한 번 실행 (debug : test 등)이 끝나면 디버거가 중지되므로 다시 실행하려면 4,5 단계를 반복하십시오.
덤: JVM을 서버로 하고 싶을 때의 주의점
Intellij의 debugger는 접속의 타이밍이 시비어인지, debugger가 접속할 때까지 대기한다
suspend=y
를 지정하지 않으면 연결되지 않았으므로 주의Reference
이 문제에 관하여(IntellijIDEA + Scala로 테스트 원격 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ma2k8/items/3f760ced03a7232e2084텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)