"Лучше" scala трассировки стека - программирование

"Лучше" scala трассировки стека

Scala трассировки стека, как известно, сложны, особенно из-за того, как анонимные функции переводятся в байт-код. Вот пример:

java.lang.IllegalStateException
    at com.company.IdentityVerifier$$anonfun$go$2$$anonfun$apply$2.apply$mcII$sp(IdentityVerifier.scala:19)
    at com.company.IdentityVerifier$$anonfun$go$2$$anonfun$apply$2.apply(IdentityVerifier.scala:17)
    at com.company.IdentityVerifier$$anonfun$go$2$$anonfun$apply$2.apply(IdentityVerifier.scala:17)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at com.company.IdentityVerifier$$anonfun$go$2.apply(IdentityVerifier.scala:17)
    at com.company.IdentityVerifier$$anonfun$go$2.apply(IdentityVerifier.scala:16)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
    at com.company.IdentityVerifier$.go(IdentityVerifier.scala:16)
    at com.company.UserMap.setLastUserId(UserMap.scala:12)
    at com.company.UserConsumer.setCurrentUser(UserConsumer.java:69)
    at com.company.UserConsumer.consume(UserConsumer.java:64)
    at com.company.UserProducer.execute(UserProducer.java:19)
    at com.company.UserCreator.execute(UserCreator.java:18)
    at com.company.UserCreatorMain$1.run(UserCreatorMain.java:37)
    at com.company.UserCreatorMain.main(UserCreatorMain.java:51)

С тех пор я нашел stackifier (это их пример), но это громоздко, чтобы вставлять трассировки стека на веб-страницу. Есть ли способ распечатать "лучшие" трассировки стека на консоли?

4b9b3361

Ответ 1

Intellij IDEA помогает даже в том случае, если вы не отлаживаете код (а плагин scala должен работать даже с версией сообщества):

http://www.jetbrains.com/idea/webhelp/analyzing-external-stacktraces.html

Вы получаете кликовую трассировку стека, которая прыгает в нужное место.

Я спросил на форумах ScalaIDE, делает ли это также ScalaIDE. Мирко Дотта ниндзя ответил:

Да, но это не самая простая возможность найти в Eclipse. Вам нужно открыть "Консоль Java StackTrace"

Не спрашивали о emacs, кто-то, пожалуйста, чип.

Кроме того, попробуйте подумать, что "загадочные" имена (см. С++ name mangling) - это цена, которую вы платите за дополнительную гибкость.