我正在编写一个程序,为游戏Minecraft加载.jar,执行一些ASM技巧,将其转储到.class文件的文件夹中,然后使用ClassLoader加载该文件夹(然后启动游戏)。我想在其中一个类文件中设置断点,以帮助调试。在MineJ中添加Minecraft .jar作为依赖项会破坏程序(因为它不加载修改后的类)。
如果可能的话,我该怎么做?
答案 0 :(得分:1)
您可以这样做,但不能直接执行此操作。您需要做的是将断点放在您调用(使用)有问题的JAR的代码部分,然后单步执行JAR代码。
答案 1 :(得分:0)
通常,javac
(see options information)添加(或不添加)调试信息因此,如果您没有源代码,或者即使您这样做,但字节码已经编译没有调试信息,就没有办法做到这一点。
答案 2 :(得分:0)
选项一:您可以将JAR添加为依赖项,但将其类型更改为“已提供”。
如果这不起作用:我假设您在项目中配置了许多库。尝试将Minecraft jar的源添加到任何这些库中(项目结构 - >库 - >添加 - >选择带有源文件的jar或目录)。现在,使用Go to class,打开要设置断点的类并设置该断点。如果IntelliJ IDEA不拒绝执行此操作,并且如果ASM操作不会删除调试信息,则在运行时动态加载类时,调试器将在断点处停止。