.erlang 用來在erlang shell啟動時候預加載模塊
user_default 可以用來加載record模塊的定義
問題:最近項目中添加 .erlang 和 user_default 后首启,發(fā)現部署到線上環(huán)境時候史煎,user_default 沒有生效。
原因:翻開shell源碼搬卒,可以看到,shell是通過一個ets來存儲record信息的缸兔,如何獲得record信息呢鲸匿,要么是讀取beam(debug_info)中的源碼,要么是通過源文件獲得剧辐。
解決辦法:線上的代碼都是沒有加debug_info編譯選項的寒亥,所以就沒有生效。
1. 嘗試通過在user_default模塊中添加 -compile(debug_info)來生成編譯這單個模塊荧关,結果發(fā)現沒起作用溉奕,應該是erlang的bug。
2. 最后通過只能在Make中添加新的rule來解決問題忍啤。類似于
erlc +debug_info user_default.erl
Shell源碼片段