Sono interessato a scavare in C source code di Erlang e cercare di capire cosa sta succedendo sotto il cofano. Dove posso trovare informazioni sulla struttura e sulla struttura del codice?Guida al codice sorgente di Erlang
risposta
Prima di tutto, si potrebbe desiderare di avere uno sguardo a Joe Armstrong's thesis, l'introduzione di Erlang a un livello elevato. Sarà utile avere un'idea di quale fosse l'idea dietro la lingua. Quindi, è possibile concentrarsi sul sistema Erlang Run Time (erts). Il modulo erlang.erl potrebbe essere un buon inizio. Quindi, vorrei concentrarmi sulle applicazioni che costituiscono il cosiddetto rilascio minimo , kernel e stdlib. All'interno dello stdlib, dare uno sguardo su come sono implementati i comportamenti . Posso suggerire il modulo gen_server.erl come partenza?
Una guida per l'Erlang Fonte
http://www.trapexit.org/A_Guide_To_The_Erlang_Source
Grazie. Buon posto per iniziare. Questa è davvero una guida molto breve ... – GabiMe
La risposta breve è che non esiste una buona guida. E il codice non è molto ben documentato.
Ti consiglio di trovare qualcuno nel tuo vicinato che conosca il codice abbastanza bene e che acquisti la cena in cambio di una piccola chiacchierata.
Se non si ha la possibilità di farlo, quindi consiglio di iniziare con il caricatore.
./erts/emulator/beam/beam_load.c
È anche possibile trovare alcune informazioni utili stampando piuttosto la rappresentazione del raggio. Non so se ci sia un modo per farlo fornito da OTP, ma il progetto HiPE ha alcuni trucchi.
hipe:c(MODULE, [pp_beam]).
Per iniziare.
(E mi raccomando anche il libro di Joe.)
stampante Abbastanza del fascio può essere fatto da '-S erlc', che è equivalente con hipe: c (M, [pp_beam]) citato da Daniel.
Io uso anche erts_debug:df(Module).
per disassemblare il codice del raggio caricato, che sono istruzioni effettivamente interpretate dalla VM.
A volte uso un debugger. OTP offre strumenti che supportano gdb molto bene. Vedere l'esempio di utilizzo al http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html
Questa tesi è una lettura affascinante. Grazie per questo – GabiMe