如何在erlang中加载模块时获取事件?在erlang中加载模块的事件
“事件”可以是执行fun/MFA的消息,任意进程的消息等等。如果标准库中没有支持,最好的解决方法是什么?
我能想到的解决方法是:
- 运行代码模块上的痕量的循环
- 扫描加载的模块次
另外一个限制是不应该有在被加载的模块中必须是特殊的钩子,因为这是用于调试应用程序的。标准库模块不需要重新加载,并假定工具应用程序正在运行。
如何在erlang中加载模块时获取事件?在erlang中加载模块的事件
“事件”可以是执行fun/MFA的消息,任意进程的消息等等。如果标准库中没有支持,最好的解决方法是什么?
我能想到的解决方法是:
另外一个限制是不应该有在被加载的模块中必须是特殊的钩子,因为这是用于调试应用程序的。标准库模块不需要重新加载,并假定工具应用程序正在运行。
有-on_load()
模块指令。您可以设置一些函数,以便在使用此伪指令加载模块时运行。在documentation查看更多信息。
重要的是,没有特殊的挂钩在代码被重新加载,这是一个调试工具,因此为可能调试的每个模块编写代码将非常繁琐。 – 2014-10-26 18:06:00
为了进行调试,您应该使用调试工具,即跟踪。 – 2014-10-26 18:06:56
它是一个UI追踪:D https://github.com/andytill/erlyberly(p.s.我知道在观察者中追踪) – 2014-10-26 18:08:18
我到最后跟踪解决方法,虽然我不认为它很干净:https://github.com/andytill/erlyberly/commit/f901a6ca90a15bec37d572250a693a46b54157be – 2014-11-02 20:32:29