Intellij Idea 调试Kotlinjar

vddsk6oq  于 2023-03-22  发布在  Kotlin
关注(0)|答案(1)|浏览(198)

在Kotlin中,有没有一种方法可以进入导入的jar中的函数?
上下文:一个项目使用许多jar文件,当示例化一个导入的对象并调用它的一个方法时,调试器无法执行该方法(该对象是实现一个或多个接口的类的示例)。
在intellij idea(2023,eap)中,Ctrl +左键单击会转到(Kotlin)接口,而不是实现。当单击将类反编译为java时,会生成java代码,但它没有用,因为它不能在运行时被单步执行。
从中构建jar的项目是可用的;然而,生成它的分支/提交不是(存在几个分支和大量废弃代码)。
序列化和反射浮现在脑海中,但是否有更方便的方法?

k4ymrczo

k4ymrczo1#

您的主要问题是Kotlin编译为字节码,通常无法转换回Java或Kotlin。
尽管没有源代码,调试器仍然会单步调试代码,只是你可能没有一个有效的源代码。通常我发现你仍然可以从方法名称(将在堆栈中可用)和可用的参数以及早期/后期的源代码副本推断代码正在做什么,因为代码更改通常很小。
另一个想法:给定
从中构建jar的项目是可用的
解压缩jar文件,你会发现所有的.class文件都有几乎相同的日期时间,从工件制作的时间点开始。你能用 this 在项目源代码控制中找到最近的提交,并将项目的HEAD绕回到可能代表jar文件产生的时间点吗?(这可能会变得棘手,一个特性分支被合并到master中)。

相关问题