Erlang源代码指南

时间:2010-09-20 21:05:20

标签: c erlang code-structure

我有兴趣深入研究Erlang的C source code并尝试了解幕后发生的事情。我在哪里可以找到有关代码设计和结构的信息?

5 个答案:

答案 0 :(得分:16)

首先,您可能希望了解Joe Armstrong's thesis,从高层次介绍Erlang。了解该语言背后的想法将是有用的。然后,您可以专注于Erlang运行时系统( erts )。 erlang.erl 模块可能是一个好的开始。然后,我将专注于构成所谓的最小版本内核 stdlib 的应用程序。在stdlib中,查看行为的实现方式。我可以建议 gen_server.erl 模块作为开始吗?

答案 1 :(得分:9)

答案 2 :(得分:2)

简短的回答是,没有好的指南。并且代码没有很好的记录。

我建议在附近找一个能够比较熟悉代码的人,然后给他们买晚餐以换取一些聊天。

如果你没有可能这样做,那么我建议从装载机开始。

./erts/emulator/beam/beam_load.c

通过漂亮打印光束表示也可以找到一些有用的信息。我不知道OTP是否有任何方法可以提供,但HiPE项目有一些作弊。

hipe:c(MODULE, [pp_beam]).

应该让你开始。

(我也推荐Joe的书。)

答案 3 :(得分:2)

漂亮的光束打印机可以通过'erlc -S'完成,这相当于丹尼尔提到的hipe:c(M,[pp_beam])。

我还使用erts_debug:df(Module).来反汇编加载的梁代码,这些代码实际上是由VM解释的。

有时我使用调试器。 OTP提供了非常好的支持gdb的工具。请参阅http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html

上的示例用法

答案 4 :(得分:0)

在这里参加聚会有点晚。如果您只是从GitHub下载源代码,则内部文档确实很棒。您必须使用make生成其中的一些。

构建文档,大部分相关资源位于/erts(Erlang运行时系统)下