Guía de código fuente de Erlang
code-structure (4)
Estoy interesado en profundizar en el código fuente de C de Erlang y tratar de entender lo que está pasando debajo del capó. ¿Dónde puedo encontrar información sobre el diseño y la estructura del código?
En primer lugar, es posible que desee echar un vistazo a la tesis de Joe Armstrong , presentando a Erlang a un alto nivel. 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 Erlang ( erts ). El módulo erlang.erl podría ser un buen comienzo. Luego, me concentraría en las aplicaciones que constituyen la llamada versión mínima , kernel y stdlib . Dentro del stdlib, observe cómo se implementan los comportamientos . ¿Puedo sugerir el módulo gen_server.erl como un comienzo?
La impresora bonita de la viga se puede hacer por ''erlc -S'', que es equivalente con hipe: c (M, [pp_beam]) mencionada por Daniel.
También uso erts_debug:df(Module).
para desensamblar el código de haz cargado, que son instrucciones realmente interpretadas por la máquina virtual.
A veces uso un depurador. OTP entrega herramientas de soporte a gdb muy bien. Consulte el uso de ejemplos en http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html
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 comprarle una 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 alguna información útil imprimiendo bastante la representación de la viga. No sé si hay alguna forma de hacerlo suministrada por OTP, pero el proyecto HiPE tiene algunos trucos.
hipe:c(MODULE, [pp_beam]).
Debería empezar.
(Y también recomiendo el libro de Joe).
Una guía a la fuente de Erlang
http://www.trapexit.org/A_Guide_To_The_Erlang_Source