我正在尝试使用Erlang和dtrace,并且想知道是否可以获取两个Erlang进程之间交换的消息内容。我尤其对message-send
和message-receive
探测感兴趣。
我看着erlang_dtrace.d和messages.d来看看是否可行,但是我没有取得任何进展。
有没有一种方法可以实现这一目标。如果没有,还有其他选择吗?
答案 0 :(得分:1)
在此处的第242行使用了消息接收探针:
(请注意,只有当 探针本身已启用,这由前面的宏确定 227。)
有趣的是,该消息本身并未公开,这就是为什么您无法对其进行跟踪的原因。但是,我认为对VM进行补丁以实现您想要的操作是可行的。您需要将消息作为字符串呈现到缓冲区中,并公开该缓冲区的地址。这个习语的现有示例是