playframework 2.0 - framework - ¿Cómo depurar la aplicación Play utilizando el activador?
scala play documentation (5)
Con Play framework 2.x:
Dentro del directorio de su proyecto, ejecute el comando activador como
activador -jvm-debug 9999 run
Una vez hecho esto, depure su proyecto como Aplicación Java Remota dentro de su IDE para enlazarlo con el proceso del activador.
Una vez hecho esto, podrá ingresar su código en cualquier lugar. :)
Sé que para el marco de juego clásico es play debug ~run
. Intenté ejecutar el activator debug ~run
pero aparece el siguiente error:
[error] Not a valid command: debug (similar: idea)
[error] Not a valid project ID: debug
[error] Expected '':'' (if selecting a configuration)
[error] Not a valid key: debug (similar: debianSign, node)
[error] debug
[error] ^
¿Qué estoy haciendo mal?
Otra cosa que descubrí:
fork in run := false
fork in Test := false
en "build.sbt".
Esto le permite depurar sus pruebas, no solo la aplicación en sí.
Probé la solución de Readren, pero usé la edición de la comunidad IDEA de IntelliJ (por lo tanto, no hay soporte incorporado de Play) en lugar de Eclipse.
Esta es básicamente la forma en que está documentado para trabajar con el nuevo activador de Typesafe (estoy usando 1.3.2). Para mí, la aplicación se ejecutó y el depurador IntelliJ parecía que se estaba conectando, pero no alcanzaría ningún punto de interrupción (también los puntos de interrupción en IntelliJ no tenían una marca de verificación que indicara que no iban a ser afectados).
Intenté cambiar la configuración de DEBUG_OPTS en el archivo activator.bat para usar la forma -agentlib de los argumentos de la línea de comando jdwp y esto pareció arreglarlo para mí.
rem set DEBUG_OPTS=-Xdebug -Xrunjdwp:tnsport=dt_socket,server=y,suspend=n,address=!JPDA_PORT!
set DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999
Probablemente debería poner esto en un activatorconfig.txt en algún lugar, pero pasé aproximadamente 4 horas tratando de hacer que esto funcione, así que ahora es lo suficientemente bueno para mí ...
Estoy usando la siguiente JVM en caso de que importe:
Versión Java "1.7.0_75" Java (TM) SE Runtime Environment (compilación 1.7.0_75-b13) VM de servidor de 64 bits de Java HotSpot (TM) (compilación 24.75-b04, modo mixto)
Si solo está haciendo activator ~run
, entonces debería poder pasar una opción de puerto de depuración JVM con:
./activator -jvm-debug <port> ~run
Esto puede no hacer lo mismo que play-run, pero aquí están los argumentos que está agregando a la línea de comando:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>
Desde: https://github.com/typesafehub/activator/blob/master/dist/src/templates/activator#L107
He adjuntado con éxito a este proceso en mi IDE.
Si está ejecutando en Windows, la configuración automática es un poco diferente. Con el último activador, puedes hacer lo siguiente:
- Abra
%UserProfile%/.activator/activatorconfig.txt
(ElC:/Users/jsuereth
es diferente según la instalación de Windows. El mío esC:/Documents and Settings/jsuereth
en una instalación yC:/Users/jsuereth
en otra). Más allá de lo siguiente en el archivo:-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<PUT YOUR PORT HERE>
- Puede configurar la propiedad JAVA_OPTS en la línea de comando antes de iniciar el activador, por ejemplo,
set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>"
¡Espero que ayude!
Tengo windows7 y activator 1.2.12, y las respuestas anteriores no funcionaron para mí. En su lugar, utilicé la opción "-jvm-debug" del comando "activator.bat" de la carpeta de inicio del proyecto, y funcionó. Me gusta esto:
C:/Projects/MyProject>activator -jvm-debug Listening for transport dt_socket at address: 9999 [info] Loading global plugins from C:/Users/MyAccount/.sbt/0.13/plugins [info] Loading project definition from C:/Projects/MyProject/project [info] Set current project to MyProject (in build file:/C:/Projects/MyProject/)
Luego, dentro del activador (sbt), usé el comando "ejecutar". Me gusta esto:
[MyProject] $ run --- (Running the application, auto-reloading is enabled) --- [info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 ''force'' enabled (Server started, use Ctrl+D to stop and go back to the console...) Running "watch" task
Para depurar desde eclipse, haga clic derecho en el proyecto y seleccione "Depurar como, Depurar configuraciones". En el cuadro de diálogo Configuraciones de depuración, haga clic con el botón derecho en "Aplicación Java remota" y seleccione "Nuevo". Cambie el puerto a 9999 y haga clic en "Aplicar". A partir de ahora, puede hacer clic en "Depurar" para conectarse a la aplicación en ejecución.