.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源码片段

.erlang 配置user_default没有生效_第1张图片

你可能感兴趣的:(.erlang 配置user_default没有生效)