如何 运行 在本地 kotlinc 上进行远程调试
How to run remote debug on local kotlinc
我想使用本地编译器编译一些示例 kotlin 项目。我从 githib 克隆 jetbrains/kotlin 项目并构建它。现在我在 /dist 文件夹中有本地编译器。我需要如何在示例项目中配置 gradle 以在其中使用此本地编译器并具有远程调试的能力?
最简单的方法是构建整个工具链并在您的测试项目中使用它。
为此,运行 Kotlin 项目中的 install
Gradle 任务:
./gradlew install
这会将项目的所有 Maven 模块发布到 Maven 本地存储库(默认为 ~/.m2/repository
),默认快照版本为 1.3-SNAPSHOT
。
然后,在你的测试Gradle项目中:
如果您使用 buildscript
块和 apply
语句应用 Gradle 插件,请将 mavenLocal()
存储库添加到 buildscript { repositories { ... } }
并使用 Gradle 插件的快照版本:
buildscript {
repositories {
mavenLocal()
jcenter()
}
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3-SNAPSHOT")
}
}
如果使用 plugins { ... }
块应用插件,请修改 settings.gradle
脚本 并添加以下内容:
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
}
}
再次使用 Gradle 插件的 1.3-SNAPSHOT
版本:
plugins {
id("org.jetbrains.kotlin.jvm").version("1.3-SNAPSHOT")
}
为了能够调试编译器,您需要运行它的进程与调试代理等待连接。通常,编译器是 运行 在一个更难连接的守护进程中。 Gradle 进程中的 运行 编译器要简单得多。为此,您需要在 Gradle 过程中将系统 属性 kotlin.compiler.execution.strategy
设置为 in-process
(注意:这应该不是 Gradle 项目 属性 但是 Java 系统 属性 可以通过 -Dkey=value
传递或使用 System.setProperty(...)
.
设置
然后 运行 使用命令行 -Dorg.gradle.debug=true
构建 Gradle 使 Gradle 等待远程调试器。我建议 运行 从终端构建测试项目,而不是 IDE。
这看起来像:
./gradlew compileKotlin -Dorg.gradle.debug=true -Dkotlin.compiler.execution.strategy=in-process
Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status for details
> Starting Daemon
(此时,构建似乎挂了,但它只是在等待调试器,所以继续下面)
在您使用 Kotlin 项目的 IDE 中,在编译器代码中放置一些断点,并 attach the remote debugger 到 Gradle 进程。
请注意,在 Gradle 进程中使用 Kotlin 编译器 运行ning,后者可能会 运行 更快地耗尽内存。确保 Gradle 进程获得足够的堆 space.
我想使用本地编译器编译一些示例 kotlin 项目。我从 githib 克隆 jetbrains/kotlin 项目并构建它。现在我在 /dist 文件夹中有本地编译器。我需要如何在示例项目中配置 gradle 以在其中使用此本地编译器并具有远程调试的能力?
最简单的方法是构建整个工具链并在您的测试项目中使用它。
为此,运行 Kotlin 项目中的 install
Gradle 任务:
./gradlew install
这会将项目的所有 Maven 模块发布到 Maven 本地存储库(默认为 ~/.m2/repository
),默认快照版本为 1.3-SNAPSHOT
。
然后,在你的测试Gradle项目中:
如果您使用
buildscript
块和apply
语句应用 Gradle 插件,请将mavenLocal()
存储库添加到buildscript { repositories { ... } }
并使用 Gradle 插件的快照版本:buildscript { repositories { mavenLocal() jcenter() } dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3-SNAPSHOT") } }
如果使用
plugins { ... }
块应用插件,请修改settings.gradle
脚本 并添加以下内容:pluginManagement { repositories { mavenLocal() gradlePluginPortal() } }
再次使用 Gradle 插件的
1.3-SNAPSHOT
版本:plugins { id("org.jetbrains.kotlin.jvm").version("1.3-SNAPSHOT") }
为了能够调试编译器,您需要运行它的进程与调试代理等待连接。通常,编译器是 运行 在一个更难连接的守护进程中。 Gradle 进程中的 运行 编译器要简单得多。为此,您需要在 Gradle 过程中将系统 属性 kotlin.compiler.execution.strategy
设置为 in-process
(注意:这应该不是 Gradle 项目 属性 但是 Java 系统 属性 可以通过 -Dkey=value
传递或使用 System.setProperty(...)
.
然后 运行 使用命令行 -Dorg.gradle.debug=true
构建 Gradle 使 Gradle 等待远程调试器。我建议 运行 从终端构建测试项目,而不是 IDE。
这看起来像:
./gradlew compileKotlin -Dorg.gradle.debug=true -Dkotlin.compiler.execution.strategy=in-process
Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status for details
> Starting Daemon
(此时,构建似乎挂了,但它只是在等待调试器,所以继续下面)
在您使用 Kotlin 项目的 IDE 中,在编译器代码中放置一些断点,并 attach the remote debugger 到 Gradle 进程。
请注意,在 Gradle 进程中使用 Kotlin 编译器 运行ning,后者可能会 运行 更快地耗尽内存。确保 Gradle 进程获得足够的堆 space.