Do the following:
launch grails with the
-debug
optiongrails -debug run-app
create Remote Java Application debug configuration in Eclipse and set port to
5005
enjoy breakpoints and step-by-step debugging
题
When I run dbm-generate-changelog exception is thrown. I would like to debug this script but I can't figure how to do it. I tried to put breakpoint to the script file _DatabaseMigrationCommon.groovy
and then in eclipse created new "debug configuraion"
command. When I run this none of breakpoints suspend the execution. I also tried with --debug argument.
setup:
Grails: 2.3.3
GGTS: 3.4
Eclipse: 4.3
解决方案
Do the following:
launch grails with the -debug
option
grails -debug run-app
create Remote Java Application debug configuration in Eclipse and set port to 5005
enjoy breakpoints and step-by-step debugging
其他提示
Try to use dbm-generate-changelog -verbose -stacktrace
, it could help you to find cause of fault.
I'm using GGTS tool. Open it.
Go to "Debug As" (bug icon).
Select "grails" in the list and select "new configuration" (blank paper icon).
In the next window, select your grail project in the "project field".
Write "run-app" in the grails commmand field.
click "Apply" and click "Debug".
That is.
In Grails 4, you have to use the debug-jvm
argument, i.e. grails run-app -debug-jvm
Source: https://docs.grails.org/4.0.10/ref/Command%20Line/run-app.html
This doesn't answer your question as to "how to debug it", but the dbmInit target had a bug in it.
The dbmInit target depends on bootsrap and loadApp, then manually calls configureApp. This bootstraps the system twice, and some beans (quartz scheduler and grails_cache) get mad if they get recreated with the same name.
changing the top few lines to
target(dbmInit: 'General initialization, also creates a Liquibase instance') {
// depends(classpath, checkVersion, configureProxy, enableExpandoMetaClass, compile, bootstrap, loadApp)
depends(classpath, checkVersion, configureProxy, enableExpandoMetaClass, compile, bootstrapOnce)
// configureApp()
try {....
basically replacing bootstrap, ladApp, and configureApp() with a call to bootstrapOnce might clean (well, 9 years ago, so have cleaned) things up for you.