2010-09-20 15 views

Respuesta

15

En primer lugar, es posible que desee echar un vistazo a Joe Armstrong's thesis, la introducción de Erlang en un nivel alto. Será útil tener una idea de cuál fue la idea detrás del lenguaje. Luego, podría centrarse en el sistema de tiempo de ejecución de Erlang (erts). El módulo erlang.erl podría ser un buen comienzo. Luego, me centraría en las aplicaciones que constituyen el llamado versión mínima, kernel y stdlib. Dentro del stdlib, eche un vistazo a cómo se implementan los comportamientos . ¿Puedo sugerir el módulo gen_server.erl como inicio?

+0

Esta tesis es una lectura fascinante. Gracias por esto – GabiMe

2

La respuesta corta es que no hay una buena guía. Y el código no está muy bien documentado.

Recomiendo encontrar a alguien en su vecindario que conozca el código razonablemente bien, y cómpreles la cena a cambio de una pequeña charla.

Si no tiene la posibilidad de hacerlo, le recomiendo comenzar con el cargador.

./erts/emulator/beam/beam_load.c 

También se puede encontrar información útil imprimiendo bastante la representación del rayo. No sé si hay alguna forma de hacerlo provista por OTP, pero el proyecto HiPE tiene algunos trucos.

hipe:c(MODULE, [pp_beam]). 

Debería comenzar.

(Y también recomiendo el libro de Joe.)

2

impresora bonita de la viga puede ser realizado por '-S CELR', lo que equivale a hipe: c (H, [pp_beam]) mencionado por Daniel.

También uso erts_debug:df(Module). para desmontar el código del haz cargado, que en realidad son instrucciones interpretadas por la máquina virtual.

A veces utilizo un depurador. OTP ofrece herramientas que soportan gdb muy bien. Vea el uso del ejemplo en http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html

Cuestiones relacionadas