Intellij IDEA远程调试无效断点

时间:2017-12-28 07:43:34

标签: java tomcat intellij-idea

大家好!

我正在尝试使用Intellij IDEA远程调试来调试在tomcat 7上运行的java8应用程序。 问题是当我在想法中运行调试时,我的断点被设置为无效,并带有消息:

  

pathToClass

类中没有行号信息

以下是来自catalina.bat的我的JAVA_OPTS设置:

set "JAVA_OPTS=%JAVA_OPTS% -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999 %JSSE_OPTS%"

Here is my remote debug settins from IDEA

4 个答案:

答案 0 :(得分:5)

在构建过程中的某个时刻,您的Java代码将使用javac编译器(或类似的东西)编译到类中。编译器有一个选项可以包含您目前尚未启用的调试信息(包括行号)。

对于普通javac添加-g

将ant debug="true"添加到javac任务。

对于Maven,maven-compiler-plugin的默认配置添加了调试信息,因此显式设置不必撤消。

答案 1 :(得分:2)

  

在构建过程中的某个时刻,您的Java代码将被编译到   使用javac编译器的类(或类似的东西)。有一个   编译器包含调试信息的选项(包括行   数字)你显然目前没有启用。怎么样   你编译你的代码? - ThorbjørnRavnAndersen

为javac添加debug="true"选项解决此问题。 谢谢所有帮助过的人。

答案 2 :(得分:0)

这可能是由于缩小引起的。转到您的Gradle并设置:

Enabled=false
buildShrinkResources=false

然后再次同步并调试。

答案 3 :(得分:0)

我有同样的问题。但是被接受的答案并没有为我解决。就我而言,根本原因是三叶草gradle插件引起的干扰。

为调试该问题,我将类A.java的源代码与A.class的反编译代码进行了比较。反编译的版本有三叶草产生的一堆垃圾。我只是从项目中删除了三叶草插件,删除了build文件夹,使缓存无效并重新启动了IDEA。我添加了断点并在调试中运行它。瞧!这次成功了。

在您的情况下可能不是三叶草;可能还有别的东西。但是,很可能,此断点问题是由源代码和编译的类之间的不匹配引起的。验证的最佳方法是将反编译的类与其源进行比较。