2016-03-24 35 views

cevap

2

Ne yapmak istediğinize bağlı olarak değişir. scala-trace-debug kütüphanesi ile

, böyle bir şey yazabilirsiniz:

Debug.trace(1 + 2) 

Ve bu olsun:

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

Çok gibi yığın izlemesi satır sayısını özelleştirebilirsiniz:

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

Ve info.collaboration_station.debug._ yaparsanız, bunu yapabilirsiniz:

val three = 3.trace 

... Nihayet

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

, ifadeler için destek var:

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

...

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

diğer kütüphanede farklı olarak, bu daha fazladır hata ayıklamaya doğru. Ne olup bittiğine dair bir tarih vermek istedim ve kullanıcının bir yığın izi görmesini istemedim, bu aracı kullanmazdım.

3

Haoyi Li'nin sourcecode kütüphanesini kontrol edin, aradığınızı size verir. o Python'un __name__, C++ 'ın __LINE__ veya Ruby'nin __FILE__ benzer çalışma zamanında programınıza ortak "kaynak kodu" bağlam sağlar için

Sourcecode küçük Scala kütüphanesidir. Örneğin, , geçerli dosyanın dosya adı ve satır numarasını (0) () sözdizimi yoluyla veya bir örtük yoluyla sorabilirsiniz. örneğin

Bkz https://github.com/lihaoyi/sourcecode#logging

Bunu otomatik olarak satır numarası ve dosya adı

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 
yakalama fonksiyonları log tanımlamak için sourcecode.File ve sourcecode.Line kullanabilirsiniz