7
votes

Débogage Ne travaillez pas avec Play Framework Activator, Scala et Eclipse

Il y a beaucoup de messages à ce sujet, les instructions sont directement en avant, mais pour la vie de moi, je ne peux pas obtenir le débogueur pour s'arrêter aux points d'arrêt.

Mon environnement est P>

  • Eclipse 4.4.1 Li>
  • SCALA 2.11 LI>
  • Scala IDE 4.1.0. 14 heures li>
  • Framework de jeu 2.3.3 Li>
  • Prise en charge de Jouer à Scala IDE 0.4.6 LI> ul>

    I Lancez Activator comme suit P>

    import WebKeys._
    
    // TODO Replace with your project's/module's name
    name := """play-angular-require-seed"""
    
    // TODO Set your organization here; ThisBuild means it will apply to all sub-    modules
    organization in ThisBuild := "your.organization"
    
    // TODO Set your version here
    version := "2.3.7-SNAPSHOT"
    
    // Scala Version, Play supports both 2.10 and 2.11
    //scalaVersion := "2.10.4"
    scalaVersion := "2.11.4"
    
    lazy val root = (project in file(".")).enablePlugins(PlayScala)
    
    // Dependencies
    libraryDependencies ++= Seq(
      filters,
      cache,
      // WebJars (i.e. client-side) dependencies
      "org.webjars" % "requirejs" % "2.1.14-1",
      "org.webjars" % "underscorejs" % "1.6.0-3",
      "org.webjars" % "jquery" % "1.11.1",
      "org.webjars" % "bootstrap" % "3.1.1-2" exclude("org.webjars", "jquery"),
      "org.webjars" % "angularjs" % "1.2.18" exclude("org.webjars", "jquery")
    )
    
    // Scala Compiler Options
    scalacOptions in ThisBuild ++= Seq(
      "-target:jvm-1.7",
      "-encoding", "UTF-8",
      "-deprecation", // warning and location for usages of deprecated APIs
      "-feature", // warning and location for usages of features that should be                 imported explicitly
      "-unchecked", // additional warnings where generated code depends on assumptions
      "-Xlint", // recommended additional warnings
      "-Ywarn-adapted-args", // Warn if an argument list is modified to match the receiver
      "-Ywarn-value-discard", // Warn when non-Unit expression results are unused
      "-Ywarn-inaccessible",
      "-Ywarn-dead-code"
    )
    
    //
    // sbt-web configuration
    // https://github.com/sbt/sbt-web
    //
    
    // Configure the steps of the asset pipeline (used in stage and dist tasks)
    // rjs = RequireJS, uglifies, shrinks to one file, replaces WebJars with CDN
    // digest = Adds hash to filename
    // gzip = Zips all assets, Asset controller serves them automatically when client accepts them
    pipelineStages := Seq(rjs, digest, gzip)
    
    // RequireJS with sbt-rjs (https://github.com/sbt/sbt-rjs#sbt-rjs)
    // ~~~
    RjsKeys.paths += ("jsRoutes" -> ("/jsroutes" -> "empty:"))
    
    //RjsKeys.mainModule := "main"
    
    // Asset hashing with sbt-digest (https://github.com/sbt/sbt-digest)
    // ~~~
    // md5 | sha1
    //DigestKeys.algorithms := "md5"
    //includeFilter in digest := "..."
    //excludeFilter in digest := "..."
    
    // HTTP compression with sbt-gzip (https://github.com/sbt/sbt-gzip)
    // ~~~
    // includeFilter in GzipKeys.compress := "*.html" || "*.css" || "*.js"
    // excludeFilter in GzipKeys.compress := "..."
    
    // JavaScript linting with sbt-jshint (https://github.com/sbt/sbt-jshint)
    // ~~~
    // JshintKeys.config := ".jshintrc"
    
    // All work and no play...
    emojiLogs
    
    
    fork in run := true
    


3 commentaires

Pourriez-vous nous montrer votre build.sbt?


Vous pouvez essayer keys.fork in test: = false dans votre build.sbt, à côté de Fork en exécution: = true .


Supprimer 'Fork in Run = TRUE' ou le réglez sur FALSE dans la construction.sbt corrigé le problème!


3 Réponses :


0
votes
  1. Essayez d'exécuter en mode normal et de copier Coller sur votre éditeur vos 2 premières lignes de journal de console.
  2. Faites la même chose en mode de débogage.
  3. comparer:
    • en première ligne, en mode débogage (pas en normale), vous devriez avoir ceci (avec suspension = y ):
      AgentLib: JDWP = Transport = dt_socket, adresse = 127.0.0.1: xxxxx, suspendre = y , serveur = n
    • en mode de débogage (pas en normale) Cette deuxième ligne doit être présente:
      Connecté à la cible VM, adresse: '127.0.0.1:XXXXXX', Transport: 'Socket'

      suspension = y rend votre serveur en attente d'être attaché. il pourrait être n

      1. Inspectez votre configuration de votre débogueur à distance et inspectez l'hôte (localhost) et le port (9999) utilisé pour l'écoute et d'autres options (transport, etc.). Il devrait correspondre à ceux du lanceur.

3 commentaires

Merci de réponse - Malheureusement, cela n'a pas aidé. Les options JVM sont signalées n'importe où que je pouvais trouver, j'ai donc modifié le script d'activateur et l'option suspendre = n. Je peux le voir avoir effet car le serveur attend alors que le débogueur commence. Mais le débogueur ne s'arrête toujours pas aux points de rupture. Pour la complétude, le script d'activateur semble ajouter ces options -Xdebug -xrunjdwp: transport = dt_socket, serveur = y, suspendre = n, adresse = 1 $.


Essayez de remplacer dans le script: -xdebug -xrunjdwp: tnsport = dt_socket, serveur = y, suspendre = N par: -AGentLib: jdwp = transport = dt_socket, serveur = y, suspendre = y, suspendre =


Malheureusement, cela n'a pas aidé. Le débogueur toujours attaché au processus, mais ne s'est toujours pas arrêté à des points de rupture.



8
votes

Le commentaire Kris a la réponse! Supprimer la fourche à l'exécution de la build.sbt ou définissez-la sur FALSE. Je ne suis pas sûr s'il y a des conséquences en aval.


3 commentaires

Cela devrait entrer dans la documentation - je me battais pendant des heures. Merci!


Cela devrait être la réponse :)


ne fonctionne pas pour moi. Je crée un projet Vanilla Scala Play Ajout de cela sur la configuration redémarré tout et connectés le débogueur ... souffle encore par tout point d'arrêt encore.



1
votes

Les points d'arrêt peuvent également être manqués lorsque votre application Scala ne suit pas toujours la relation unique de Java entre l'emballage et la structure de répertoires.

a été mordu par cela aujourd'hui avec une application de jeu de jeu. Par les contrôleurs de la Convention, les contrôleurs vivent dans le paquet contrôleurs . Comme le projet a grandi, il a été refacturé dans plusieurs sous-projets différents. Donc, contrôleurs est resté mais le package a été modifié par contrôleurs de package.foo , qui fonctionne bien dans Scala.

Comme avec l'OP, malgré la documentation directe, rien n'a fonctionné, le débogueur n'irait jamais un point d'arrêt. Une fois que j'ai déplacé le contrôleur de test dans un répertoire correspondant à la mise en page de l'emballage, voila, point de rupture Hit!

Pour ceux qui n'utilisent pas d'activateur, cela démarrera une session de débogage SBT:

java -debug -agentlib: jdwp = transport = dt_socket, serveur = y, suspendre = n, adresse = 9999 -jar ~ / bin / sbt-launk.jar "$ @"

puis exécutez exécuter dans la console de lecture. Basculez sur Eclipse et sélectionnez:

  • Exécuter> Configurations de débogage

  • Ajouter une nouvelle application Java à distance

  • Choisissez Standard (Socket Fixation) ou Scala Debugger (Socket Fixation)

  • hôte: localhost et port: 9999

  • Cliquez sur Appliquer; Puis cliquez sur débogage

    Si tout se passe bien, lorsque vous visitez un contrôleur avec un point d'arrêt placé quelque part dans sa chaîne de dépendance, le point d'arrêt doit être touché, vous permettant ainsi de passer à travers le code comme prévu.


0 commentaires