133 votes

Débogage du code Scala avec simple-build-tool (sbt) et IntelliJ

Quel est le moyen le plus simple de déboguer le code Scala géré par sbt à l'aide du débogueur intégré d'IntelliJ? La documentation disponible à l' adresse http://code.google.com/p/simple-build-tool/wiki/RunningSbt répertorie les commandes permettant d'exécuter la classe principale d'un projet ou des tests, mais il ne semble pas exister de commande de débogage.

Question complémentaire: quel est le moyen le plus simple d’attacher le débogueur d’IntelliJ à Jetty lors de l’utilisation de la commande jetty-run de sbt?

204voto

Roberto Tyley Points 4352

Tout le fonctionnaire SBT paquets basés sur le coup (c'est à dire les systèmes Unix) soutenir une commode -jvm-debug drapeau, que vous pouvez utiliser comme cette option pour spécifier le port de débogage:

sbt -jvm-debug 5005

Sous les couvertures, il commence à la JVM pour SBT avec le typique détaillé de débogage incantation:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

Vous pouvez exécuter votre code comme d'habitude, et de débogage à l'aide de l'Ide.

52voto

Aaron Novstrup Points 10742

Pour l'ordinaire de débogage à l'Ide, vous pouvez utiliser une Application run/debug configuration de la manière habituelle, indépendamment de savoir si vous êtes en utilisant sbt pour compiler votre code.

Pour vous connecter à votre application en cours d'exécution dans la Jetée, vous aurez besoin de créer une Distance configuration de débogage. Lorsque vous procédez ainsi, IntelliJ vous donnera un ensemble d'arguments de ligne de commande pour l'exécution de la distance de la JVM -- quelque chose comme

-Xdebug -Xrunjdwp:transport=dt_socket,serveur=y,suspendre=n,address=5005

Lancement sbt avec ces arguments, et puis l'exécuter jetty-run. Enfin, lancez votre débogage à distance configuration de l'Ide. Ce fil peut être utile.

41voto

Jamie Forrest Points 2145

J'ai eu quelques difficultés avec ce trop, donc, au risque d'être trop détaillé, voici ce que j'ai fait:

Le programme d'INSTALLATION

  1. Créer une configuration d'essai pour sbt jetty-run

    • Aller à Courir > Modifier les Configurations
    • Cliquez sur l'icône [+] et choisissez Scala Compilation du Serveur
    • Entrez le nom que vous souhaitez, et cliquez sur "Exécuter SBT Action" case et sélectionnez le TRIBUNAL d'Action de la jetée de la [...]
  2. Créer une configuration de débogage pour le débogage à distance

    • Aller à Courir > Modifier les Configurations
    • Cliquez sur l'icône [+] et de choisir à Distance
    • Entrez le nom que vous voulez et copier la ligne -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 (assurez-vous de cliquer sur OK pour créer la configuration)
  3. Configurer sbt plugin pour exécuter la machine virtuelle options ci-dessus

    • Allez à Fichier > Paramètres > SBT
    • Coller la ligne -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 dans la zone paramètres de la VM, après ceux qui sont déjà là

DÉBOGAGE

  1. Définissez les points d'arrêt souhaitée
  2. Départ de la jetée de serveur web en choisissant le tribunal de la jetée-exécuter la configuration que vous avez créé au-dessus et en choisissant Exécuter > Exécuter ou en cliquant sur la flèche verte
  3. Démarrer le débogueur distant par le choix de débogage à distance la configuration que vous avez créé au-dessus et en choisissant Exécuter > Debug ou en cliquant sur l'icône de bug

7voto

0__ Points 23597

Je suis ajoutant une autre réponse ici, parce que je trouve cette question lors de la recherche d'un problème connexe: le Débogage des classes de test à l'aide de points d'arrêt.

Je suis à l'aide de ScalaTest, et j'ai généralement exécuter une suite à l'aide de sbt " test uniquement sur commande. Maintenant, quand je veux utiliser le débogueur interactif, je peux faire ce qui suit:

Créer un nouveau Run/Debug Configuration de type "ScalaTest', mettez la main "de la Classe de Test:" nom", et choisissez "Avant de lancer: Lancer SBT Action "test-compile'". Ça y est, vous pouvez placer des points d'arrêt maintenant dans le test de sources, et d'exécuter cette configuration.

3voto

Tulio Domingos Points 41

En utilisant Scala 2.10 et SBT 0.12, je l’ai obtenu comme suit : http://tuliodomingos.blogspot.com.es/2014/01/scala-remote-debugging-in-sbts-jetty.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X