IntelliJ IDEAdebugging器不能用于Grails项目

我无法在Intellij IDEA中debugging我的代码。 当debugging模式处于活动状态且正在运行时,但断点没有检查到代表有效且可停止的断点的“v”。

看到图片: http : //prntscr.com/1w0owu 。

我真的在网上search一个答案。 我想要做什么?

我已经尝试所有在这里提到没有成功。 唯一有用的信息是在这里 。

实质上,你应该通过向grails-app/conf/BuildConfig.groovy添加以下内容来禁用分叉执行:

 grails.project.fork = [ test: false, run: false ] 

现在可以在IntelliJ IDEA Ultimate Edition v.12.1.6中通过普通的Debug进行debugging,无需远程debugging。 testing了Grails 2.3.1,Java 1.7.0_45,Windows 7 64位。

尝试这个:

在想法中,select“运行”button旁边的编辑configuration 。 然后添加远程 ,select你的名字,并保留默认的远程configuration设置。 (港口5005等)

使用从控制台运行您的应用程序

 grails run-app --debug-fork 

在想法中,从列表中select您的configuration,并在控制台显示信息时点击debuggingbutton:

 Listening for transport dt_socket at address: 5005 

自Grails 2.3以来, 分支执行几个Grails命令(例如run-apptest-app )被引入 。 如果你只是从IntelliJ IDEAdebugging一个Grails应用程序,那么GrailsStarter进程将启动debugging选项。 IDEA控制台上的输出将是:

 /usr/lib/jvm/default-java/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59935,suspend=y,server=n [...] /opt/idea-IU-133.330/lib/idea_rt.jar org.codehaus.groovy.grails.cli.support.GrailsStarter [...] run-app Connected to the target VM, address: '127.0.0.1:59935', transport: 'socket' 

应用程序本身将在名为ForkedTomcatServer的单独进程中ForkedTomcatServer 。 这是你的代码运行的地方,你的debugging器应该实际连接到的地方。

为此,在grails.project.forkrunconfiguration中,在BuildConfig.groovy中设置debug: true 。 只需从IDEA运行Grails(不要debugging),当应用程序准备好提供HTTP请求时,您将在控制台中看到以下行:

 Listening for transport dt_socket at address: 5005 

这是您要指定一个单独的远程运行configuration的位置。 一旦连接了远程debugging器,发出一个HTTP请求,debugging就可以工作。

您还可以通过将与grails.project.fork的命令项关联的值设置为false来完全禁用 compile / test / run / war / console Grails命令的分叉执行 。 但是在Grails 2.3中,你将失去分叉执行的好处。

debugginggrails(2.3+)应用程序可以用两种方法完成。

1.简单的解决scheme:禁用debugging

编辑BuildConfig.groovy:

 grails.project.fork = [ war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ... run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ... 

 grails.project.fork = [ war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ... run: false, 

优点:

  • 很简单(继续你的发展)

缺点:

  • 这消除了执行运行时代码replace的能力。 这意味着如果您更改了代码,将不会再自动提取,您将需要重新启动应用程序才能看到更改。 这可能非常耗时。

2.涉及解决scheme:debugging分叉运行时

这是一个更复杂的解决scheme,将debugging器附加到正在运行的grails应用程序。 这篇博文中有更详细的描述。

安装完成后,您将拥有一个额外的运行configuration,允许您以分叉模式启动grails,而另一个额外的运行configuration允许您debugging分叉模式。 问题在于你需要启动或者不能工作。

优点:

  • 您有debugging和运行时代码replace
  • 这不会干扰在正常模式下启动应用程序。 (即你有额外的select)

缺点:

  • 设置需要一点时间
  • 在debugging模式下启动需要是一个更复杂的两步过程(即需要更长的时间)

注意事项

解决scheme2在允许灵活性的意义上大多优越。 我个人不使用debugging很多,所以只需在正常模式下启动。 当我想debugging时,我在debugging模式下重新启动。

解决scheme1是更好的,如果你需要debugging,也需要重新启动很多。 例如,当您在BootStrap.groovy中处理您的域类或数据库设置时。

你看到这篇文章了吗? 它详细介绍了如何一步一步,让我过去了我的问题。

http://mrhaki.blogspot.com/2013/12/grails-goodness-debugging-app-in-forked.html

在2016年的Grails 3.x上,没有任何其他的答案适用于我/ Intellij 15.0.4。 这对我有用:

用这个命令在intellij中启动grails:

 run-app --debug-jvm 

控制台应输出:“侦听传输dt_socket地址:5005在环境:开发中运行在http:// localhost:8080的 Grails应用程序”

现在,您可以在Intellij中添加一个types为“Remote”的新configuration。 然后启动它的默认值。

新的debugging控制台窗口应该写入:“连接到目标VM,地址:'localhost:5005',transport:'socket'”

完成。

对于那些感兴趣的,引用grails 3.x文档来启动一个可debugging的服务器在2.8节,runningAndDebuggingAnApplication:

http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication

“有几种方法可以执行Application类,如果您使用的是IDE,那么您可以直接右键单击该类并直接从您的IDE运行它,这将启动您的Grails应用程序,这对于debugging也很有用,因为您可以debugging从命令行使用run-app –debug-jvm命令时,无需连接远程debugging器即可。

重要的提示。 当我尝试“只需右键单击该类并直接从您的IDE运行”,该应用程序确实启动。 但是,我发送给我的控制器的所有请求导致了500个错误消息:“无法parsing名称为”grailsDispatcherServlet“的servlet中名称为”/ myendpoint“的视图。

所以,我回到了上面的说明。

对于Grails 3和Idea(2016.1)来说,这是非常简单的事情。 根据其他答案的build议,不需要再编辑任何文件。

出于某种原因,“构思”工具栏中的debugging图标变灰,因此您只需导航到您的应用程序入口点(具有启动应用程序的静态主要方法的类),单击其中一个运行箭头左边的装订线并select“debugging”选项。

从JetBrains文档:

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-grails-3.html

debuggingGrails 3应用程序

IntelliJ IDEA允许您使用Application.groovydebugging您的Grails 3应用程序。

在Project工具窗口中,打开init目录并右键单击Application.groovy从下拉列表中selectDebug Grails:'name'grails3_debug_app您也可以使用编辑器来启动debugging过程。

只有三个猜测:

尝试运行run-app ,而不是run-war ,都应该工作,但可能是run-war只是不工作。

或者:尝试从控制台远程debugging:

grails -debug run-app ,然后在Idea中连接Remote Debug。

或者,最后的手段:将您的项目降级到以前的Grails版本可能会奏效。 是的,这真的很烦人。

希望这可以帮助。

我在Mac Os x Lion上使用最新的Grails 2.3.4对intellij进行了testing。

然后我尝试了Igors的build议,而且没有分叉模式。

 grails.project.fork = [ test: false, run: false ] 

请检查详细的Grails文档

如果你想debugging分叉模式,你应该检查以下博客文章解释很好。

http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

这不应该是默认configuration,只能由个人select。 在intellij中debugging模式下运行这两个configuration是一个令人费解的痛苦。 首先,您必须在run-app之后添加“–debug-fork”来设置或修改正常运行configuration。 其次,你必须configuration远程debugging,同时接受所有的默认值。 然后你必须运行运行configuration,当运行时,运行debuggingconfiguration。 太痛苦了 我更喜欢在开发的时候完全不用分叉选项。 时间就是金钱,我没有时间四处乱逛。 请参阅HAKI先生的解释。 http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/

查看关于debuggingGrails分叉模式的博客。