ric*_*bbo 41 java debugging grails intellij-idea
我无法在Intellij IDEA中调试我的代码.当调试模式处于活动状态且正在运行时,但断点没有选中表示有效且可停止的断点的"v".
见图像:http://prntscr.com/1w0owu.
我真的在网上搜索答案.我想做什么?
小智 74
我试过这里提到的都没有成功.唯一有用的信息在这里.
本质上,您应该通过添加以下内容来禁用分叉执行grails-app/conf/BuildConfig.groovy
:
grails.project.fork = [
test: false,
run: false
]
Run Code Online (Sandbox Code Playgroud)
现在调试在IntelliJ IDEA Ultimate Edition v.12.1.6中可用,只需通过普通的Debug而无需远程调试.在Grails 2.3.1,Java 1.7.0_45,Windows 7 64位上测试.
akn*_*akn 18
试试这个:
在想法中,选择"运行"按钮旁边的列表中的编辑配置.然后添加Remote,选择您的名称并保留默认的远程配置设置.(港口5005等)
使用,从控制台运行您的应用程序
grails run-app --debug-fork
Run Code Online (Sandbox Code Playgroud)
在想法中,从列表中选择您的配置,并在控制台显示信息时点击调试按钮:
Listening for transport dt_socket at address: 5005
Run Code Online (Sandbox Code Playgroud)
由于Grails的2.3,叉形执行几个Grails的命令(例如run-app
,test-app
)中的溶液引入.如果您只是从IntelliJ IDEA调试Grails应用程序,GrailsStarter
则将启动该过程并启用调试选项.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'
Run Code Online (Sandbox Code Playgroud)
应用程序本身将在一个名为的单独进程中启动ForkedTomcatServer
.这是代码运行的地方以及调试器实际连接的位置.
为了实现这个目标,设定debug: true
在BuildConfig.groovy
在run
的配置grails.project.fork
.现在只需从IDEA运行Grails(不要调试),当应用程序准备好提供HTTP请求时,您将在控制台中看到以下行:
Listening for transport dt_socket at address: 5005
Run Code Online (Sandbox Code Playgroud)
这是您要将单独的远程运行配置指向的位置.连接远程调试器后,立即发出HTTP请求并进行调试.
您也可以禁用分叉执行的编译/测试/运行/战争/ Grails的控制台通过设置与命令输入相关联的价值完全命令grails.project.fork
到false
.但是,您将失去Grails 2.3中添加的分叉执行的好处.
小智 6
调试grails(2.3+)应用程序可以通过两种方式完成.
1.简单的解决方案:禁用调试
编辑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 ...
Run Code Online (Sandbox Code Playgroud)
至
grails.project.fork = [
war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
run: false,
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
2.涉及的解决方案:调试分叉运行时
这是一个更复杂的解决方案,您可以将调试器附加到正在运行的grails应用程序.在这篇博客文章中有更详细的描述.
在设置之后,您有一个额外的运行配置,允许您以分叉模式启动grails,还有另一个额外的运行配置,允许您调试该分叉模式.问题是您需要启动它们或它不起作用.
优点:
缺点:
注意事项
解决方案2在允许灵活性的意义上大多优越.我个人不经常使用调试,所以只能在正常模式下启动.当我想调试时,我在调试模式下重启.
如果您需要调试并且还需要重新启动,解决方案1绝对更好.例如,当您在BootStrap.groovy中处理域类或数据库设置时.
其他答案都不适用于 2016 年使用 Intellij 15.0.4 的 Grails 3.x。这对我有用:
使用以下命令在 intellij 中启动 grails:
run-app --debug-jvm
Run Code Online (Sandbox Code Playgroud)
控制台应该输出:“正在侦听地址为 5005 的传输 dt_socket,Grails 应用程序在环境:开发中在http://localhost:8080上运行”
现在您可以在 Intellij 中添加类型“Remote”的新配置。然后使用默认值启动它。
新的调试控制台窗口应显示:“已连接到目标虚拟机,地址:'localhost:5005',传输:'socket'”
完毕。
对于那些感兴趣的人,有关启动可调试服务器的 grails 3.x 文档的参考位于第 2.8 节,runningAndDebuggingAnApplication:
http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication
“执行 Application 类的方法有多种,如果您使用 IDE,那么您只需右键单击该类并直接从 IDE 运行它,这将启动您的 Grails 应用程序。这对于调试也很有用,因为您可以调试从命令行使用 run-app --debug-jvm 命令时,可以直接从 IDE 直接连接远程调试器。”
重要的提示。当我尝试“只需右键单击该类并直接从 IDE 运行它”时,应用程序确实启动了。但是,我发送到控制器的所有请求都会导致 500 错误,并显示以下消息:“无法解析名称为“grailsDispatcherServlet”的 servlet 中名称为“/myendpoint”的视图。
所以,我又回到了上面的说明。
归档时间: |
|
查看次数: |
21499 次 |
最近记录: |