2016-03-24 11 views

答えて

2

あなたのやりたいことによって異なります。

scala-trace-debugライブラリを使用すると、このような何かを入力することができます

Debug.trace(1 + 2) 

をそしてこれを取得:

"3" in thread main: 
    path.to.file(file.Scala: 22) // click-able stack trace 

あなたがそうのように、スタックトレースの行数をカスタマイズすることができます。

Debug.trace(1 + 2, 3) // 3 lines of stack trace 

info.collaboration_station.debug._を実行すると、次のようにすることもできます。

val three = 3.trace 

...最後に

"3" in thread main: 
    path.to.file(file.Scala: 22) 

は、表現のためのサポートがあります:

Debug.traceExpression{ 
    val myVal = 4 
    1 + 2 + myVal 
} 

...

"{ 
    val myVal = 4; 
    (3).+(myVal) 
} -> 7" in thread main: 
    at main.Main$.main(Main.scala:12) 

他のライブラリとは異なり、これはもっとありますデバッグを目的としています。何が起きているのかの履歴を提供したいと思っていて、ユーザーにスタックトレースを見せたくない場合は、このツールを使用しません。

3

Haoyi Liのsourcecodeライブラリをチェックしてください。あなたの探しているものがあなたに与えられていると思います。

ソースコードはPythonの __name__、C++の__LINE__やRubyの__FILE__に似て実行時に、あなたのプログラムに共通する「ソースコード 」コンテキストを提供するための小さなScalaのライブラリです。たとえば、 には現在のファイルのファイル名と行番号を問い合わせることができます。 から()の構文を使用するか暗黙的に指定します。

あなたは 自動的に行番号をキャプチャ機能とファイル名

def log(foo: String)(implicit line: sourcecode.Line, file: sourcecode.File) = { 
    println(s"${file.value}:${line.value} $foo") 
} 

log("Foooooo") // sourcecode/shared/src/test/scala/sourcecode/Tests.scala:86 Fooooo 
のログを定義するためにsourcecode.Fileとsourcecode.Lineを使用することができます https://github.com/lihaoyi/sourcecode#logging

例えば参照してください。

関連する問題