【问题标题】:Erlang source code guideErlang 源代码指南
【发布时间】:2011-04-14 21:44:48
【问题描述】:

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

【问题讨论】:

    标签: c erlang code-structure


    【解决方案1】:

    这里的聚会有点晚了。如果你只是从GitHub 下载源代码,内部文档真的很好。您必须使用make 生成其中的一些。

    获取构建的文档,大部分相关来源都在/erts(Erlang Run Time System)下

    编辑:BEAM Wisdoms 也是一个非常好的指南,但它可能是也可能不是你所追求的。

    【讨论】:

      【解决方案2】:

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

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

      有时我会使用调试器。 OTP 提供了很好地支持 gdb 的工具。查看http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html的示例用法

      【讨论】:

        【解决方案3】:

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

        我建议在你附近找一个相当了解代码的人,然后请他们吃饭以换取闲聊。

        如果您无法做到这一点,那么我建议从加载程序开始。

        ./erts/emulator/beam/beam_load.c
        

        通过漂亮地打印光束表示也可以找到一些有用的信息。不知道OTP有没有办法这样做,但是HiPE项目有一些秘籍。

        hipe:c(MODULE, [pp_beam]).
        

        应该让你开始。

        (我也推荐乔的书。)

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          【解决方案5】:

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-05
          • 1970-01-01
          • 2010-09-08
          • 2013-11-12
          • 2012-03-01
          • 2013-09-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多