.erlang 配置user_default没有生效

.erlang 用来在erlang shell启动时候预加载模块

user_default 可以用来加载record模块的定义

问题:最近项目中添加 .erlang 和 user_default 后,发现部署到线上环境时候,user_default 没有生效。

原因:翻开shell源码,可以看到,shell是通过一个ets来存储record信息的,如何获得record信息呢,要么是读取beam(debug_info)中的源码,要么是通过源文件获得。

解决办法:线上的代码都是没有加debug_info编译选项的,所以就没有生效。

1. 尝试通过在user_default模块中添加 -compile(debug_info)来生成编译这单个模块,结果发现没起作用,应该是erlang的bug。

2. 最后通过只能在Make中添加新的rule来解决问题。类似于

erlc +debug_info user_default.erl

Shell源码片段

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容