gpt4 book ai didi

scala - 跟踪 Scala actors 中的 "sender hierarchy"

转载 作者:行者123 更新时间:2023-12-05 01:12:18 25 4
gpt4 key购买 nike

目前我正在维护几个基于 actor 的 Scala 应用程序,我发现自己一直在问的一个问题是谁发送了这条消息?

例如,我找到了一段代码,打印了我在日志中发现的可怕消息:

case ReportFailedUpdates(stuff) =>
log("The horror! The horror! " + stuff)
dieHorribly()

我想找出可能的原因。如果我不使用 Actor ,我可以点击 Ctrl+Alt+H(至少在 Eclipse 中)并找出谁“调用”了这个“方法”(以及谁调用了那个,谁调用了 < em>那个)。对于 Actor ,我发现自己在寻找 ! ReportFailedUpdates( 以查找哪些参与者发送了此消息,然后搜索消息的发送者那个参与者正在响应,等等(通常将结果绘制在纸)。这有两个缺点:

  • 速度较慢,因为 Eclipse 正在对(可能很多)项目进行文本搜索,而我不得不记下内容
  • 它不一定能找到所有的事件,因为这可能是用 !? 发送的,或者有人在 !ReportFailedUpdates 之间放了两个空格,或者,或者,或者....

喜欢的是一些工具支持,它可以让我找出消息的来源——大致相当于非基于参与者的代码的调用层次结构。

有什么工具可以做到吗?这是我还没有发现的 ScalaIDE for Eclipse 的一个特性吗?如果我使用 IntelliJ,我的生活会更好吗?

更新

我的示例可能具有误导性。这不仅仅是在一切都崩溃时弄清楚出了什么问题——当我拿起一个新系统并需要弄清楚它是如何工作时,我也发现自己经常这样做。似乎还没有工具可以做到这一点。我想我必须自己考虑如何开始静态提取(并可能可视化)消息流图...

最佳答案

好吧,这是一个非常强烈的愿望,如果有人写它,我会非常印象深刻,但我还没有看到这样的东西。

跟踪它会非常困难,因为没有“堆栈”可以跟踪。不过,我很好奇你为什么不这样做:

case ReportFailedUpdates(stuff) =>
log("The horror! The horror! %s (sent by %s)".format(stuff, sender))
dieHorribly()

这至少会为您提供链中的当前链接。

另外 - 我是一个 Vim 专家,所以请原谅我的无知 - 你的 IDE 没有更好的搜索机制,比如正则表达式吗?

关于scala - 跟踪 Scala actors 中的 "sender hierarchy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8927631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com