Oui, vous pouvez, sur Scala 2.8. Notez que, pour que cela fonctionne, vous devez inclure l'scala-compiler.jar dans votre classpath. Si vous appelez votre scala programme avec scala
, cela sera fait automatiquement (ou alors, il semble que dans les tests que j'ai fait).
Vous pouvez alors l'utiliser comme ceci:
import scala.tools.nsc.Interpreter._
object TestDebugger {
def main(args: Array[String]) {
0 to 10 foreach { i =>
breakIf(i == 5, DebugParam("i", i))
println(i)
}
}
}
Vous pouvez passer plusieurs DebugParam
arguments. Lors de la RÉPLICATION de revient, la valeur sur le droit d'être lié à un val dont le nom que vous avez fourni sur la gauche. Par exemple, si je change cette ligne comme ceci:
breakIf(i == 5, DebugParam("j", i))
Ensuite, l'exécution va se passer comme ceci:
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
Vous continuez l'exécution en tapant :quit
.
Vous pouvez aussi inconditionnellement tomber dans REPL en invoquant break
, qui reçoit un List
de DebugParam
au lieu d'une vararg. Voici un exemple complet, le code et l'exécution:
import scala.tools.nsc.Interpreter._
object TestDebugger {
def main(args: Array[String]) {
0 to 10 foreach { i =>
breakIf(i == 5, DebugParam("j", i))
println(i)
if (i == 7) break(Nil)
}
}
}
Et puis:
C:\Users\Daniel\Documents\Scala\Programas>scalac TestDebugger.scala
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
scala> :quit
5
6
7
scala> j
<console>:5: error: not found: value j
j
^
scala> :quit
8
9
10
C:\Users\Daniel\Documents\Scala\Programas>