it-source

gradle로 스프링 응용 프로그램 디버그하는 방법

criticalcode 2023. 10. 18. 22:13
반응형

gradle로 스프링 응용 프로그램 디버그하는 방법

스프링 앱 작업 중인데 컨트롤러 방식으로 작업해야 작동하는지 확인할 수 있습니다.저는 이클립스에서 일하며 앱을 만들고 있습니다.gradle bootRun지휘.

디버그 모드로 실행하는 방법?

나는 노력했다.gradle bootRun --debug디버그 모드가 아닌 디버그 로그일 뿐입니다.

나는 노력했다.gradle help --task bootRun-- 이것은 내가 그곳에서 본 작업에 대한 정보를 줍니다.--debug-jvm옵션 그러나 실행할 때gradle bootRun --debug-jvm응용프로그램이 시작되지 않음

뛰고난후에gradle bootRun --debug-jvm디버거를 수신 중인 포트(포트 5005)에 연결할 때까지 응용프로그램이 일시 중단됩니다.

위의 dankdirkd의 답변에 대한 답변으로서: (비교)

gradle bootRun --debug-jvm

그래들 빌드를 디버그 모드로 실행합니다.그것은 아마도 당신이 원하는 것이 아닐 것입니다.springBoot 태스크는 응용 프로그램을 디버그 모드로 시작하는 것입니다.

스프링 부팅 태스크는 그라들 Java Exec 태스크를 확장합니다.bootRun 태스크를 build.gradle 파일에 구성하여 다음과 같은 디버그 구성을 추가할 수 있습니다.

bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=32323"]
}

build.gradle.kts의 경우 다음과 같이 나타납니다(일시 중단 모드가 비활성화됨).

tasks {
    val bootRun by getting(BootRun::class) {
        jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=32323")
    }
}

서버가 클라우드 내에 있고 로컬 컴퓨터에서 디버깅하려는 경우 외부에서 연결을 허용하는지 확인해야 합니다.이 경우 아래 구성을 사용합니다.

tasks {
val bootRun by getting(BootRun::class) {
    jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
    }
}

주소는 지금입니다.0.0.0.0:port만이 아니라port

Google을 통해 이것을 입력하고 Spring의 디버그 모드를 활성화하는 방법을 궁금해하는 사람들을 위해 (일반적으로 다음과 같이)java -jar app.jar --debug그래들을 이용해서 방법은 이렇습니다.합격입니다.--debug기본 클래스로 이동합니다. 이것은 다른 것들 중에서 자동 구성 클래스를 기록하는 Spring Boot의 디버그 모드를 켜는 방법입니다.

./gradlew bootRun --args='--debug'

위해서build.gradle.kts파일은 아래와 같이 간단히 사용할 수 있습니다.

tasks.withType<BootRun> {
    jvmArgs = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
}

저는 개인적으로 아래로 가는 것을 더 좋아합니다.Gradle tasks그리고.right-clicking on the bootRun. 이것은 단말기에 비해 IDE에서 유용합니다.

gradle bootRun 태스크를 사용하여 IntelliJ 예제를 찾는 사람의 경우:

  1. build.gradle 파일에 다음 bootRun 태스크 정의 추가
 bootRun {
   jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
 }
  1. 실행boot실행 태스크
  2. 콘솔/터미널에서 "주소: 5005에서 transport dt_socket 수신 중"이라고 표시되는 지점에 도달하면 "Run --> Attach to Process.."로 이동합니다.." 앱을 선택합니다.
  3. 원하는 장소에 중단점 추가

하위 프로세스에서 Java 응용프로그램을 실행하도록 정의합니다.

task executeApp() {
    doFirst {
       println "Executing java app from Gradle..."
       javaexec {
           main = "com.mymain"
           jvmArgs = ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=30000"]
       }
    }
}

자바 코드에 중단점을 설정합니다.그래들 태스크를 실행한 후.예를 들어 Windows의 경우:

  .\gradlew.bat executeApp

이 작업은 디버거를 연결할 때까지 기다립니다.예를 들어 Netbeans에서 Debug->Attach debugger로 이동하고 포트 필드에 30000을 설정합니다.

언급URL : https://stackoverflow.com/questions/39490624/how-to-debug-spring-application-with-gradle

반응형