[解決済み] scala のコードを任意の場所に配置した状態でインタプリタにドロップする。
2023-04-30 12:24:41
質問
私はPythonの出身で、コードのどの部分にも
import pdb; pdb.set_trace()
で、実行時にその場所で対話型インタプリタに落とされます。scalaに同等のものはあるのでしょうか、それとも実行時にこれは不可能なのでしょうか?
どのように解決するのですか?
はい、Scala 2.8で可能です。ただし、クラスパスにscala-compiler.jarをインクルードしておく必要があります。もし、あなたのscalaプログラムを
scala
で呼び出すと,自動的に実行されます(私が作ったテストではそう見えました).
すると、このように使うことができます。
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)
}
}
}
複数の
DebugParam
引数を渡すことができます。REPLが立ち上がると、右側の値が左側で指定した名前のvalに束縛されます。例えば、その行をこんな風に変えてみると。
breakIf(i == 5, DebugParam("j", i))
すると、このように実行されます。
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
と入力して実行を継続します。
:quit
.
また、無条件にREPLにドロップすることもできます。
break
を呼び出すことで、無条件に
List
の
DebugParam
のように、vararg の代わりに 以下は完全な例で、コードと実行です。
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)
}
}
}
そして
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>
関連
-
[解決済み】実行中のPythonアプリケーションのスタックトレースを表示させる。
-
[解決済み】エラー時に自動的にpythonデバッガを起動する。
-
[解決済み] IPythonによるステップバイステップのデバッギング
-
[解決済み] エラー時にRスクリプトの行番号を取得するには?
-
[解決済み] gdb: 現在の行を表示したり、現在の行番号を見つけるには?
-
[解決済み] GDBで関数の戻り値を調べるには?
-
[解決済み] Rustのcfgを使用してリリース/デバッグビルドを確認するには?
-
[解決済み] デバッグシンボル付きでコンパイルされたかどうかを確認する方法は?重複
-
[解決済み] スクラムプロセスにバグフィックスを組み込むベストな方法とは?[クローズド]
-
[解決済み] デバッグ中にDataTableを表示する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] デバッガとは何ですか、またデバッガはどのように問題の診断に役立ちますか?
-
[解決済み] エラー時にRスクリプトの行番号を取得するには?
-
[解決済み] gdb: 現在の行を表示したり、現在の行番号を見つけるには?
-
[解決済み] GDBで関数の戻り値を調べるには?
-
[解決済み] Angular JavaScriptコードのデバッグ方法
-
[解決済み] Rustのcfgを使用してリリース/デバッグビルドを確認するには?
-
[解決済み] デバッグシンボル付きでコンパイルされたかどうかを確認する方法は?重複
-
[解決済み] スクラムプロセスにバグフィックスを組み込むベストな方法とは?[クローズド]
-
[解決済み] デバッグ中にDataTableを表示する方法
-
[解決済み] GDBで前の行に移動するには?