我无法让IntelliJ识别哪些源文件与我要附加调试器的东西相对应。有问题的项目是使用Java 1.7在本地运行的Gradle项目。 (编辑:我实际上也在IntelliJ中运行该项目,这也是正在构建它。这是在项目的build.gradle文件中定义的Gretty任务。我正在传递
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006
打开JVM的调试端口。
由于我收到“已连接到目标VM”消息,因此我可以确定调试器已正确连接到进程。但是断点没有得到选中标记,并且在执行过程中不会被击中。 (编辑:这使我相信没有附加源-调试器正在成功附加到一个进程,而且我有理由相信该进程是自我以来想要的进程正在使用JVM参数打开调试端口,但在我看来,IDE无法识别与运行代码相对应的源文件。)
使用此代码的其他人似乎没有这个问题。他使用的是IntelliJ的旧版本。他的“使用模块类路径”下拉菜单中有一个<whole project>
选项,而我的则没有(尽管确实有<no module>
,这是一样的吗?)。不确定他具体在哪个版本的IJ上;我正在使用Ultimate 2018.3。
我确定我需要提供的信息比这更多,但是由于我不熟悉Gradle作为构建/运行工具以及远程调试的工作原理,所以我不知道我缺少什么信息-当然,只要有人要我,我就会提供它。
BIG EDIT(也许是这里的真实答案):我觉得我更喜欢Gradle本身而不是任务。如果选择运行->附加到进程,对话框将显示“ 45039 org.gradle.launcher.daemon.bootstrap.GradleDaemon(5006)”。