首页 > 解决方案 > 如何修改 erts 模块

问题描述

我想修改模块erl_prim_loader,但是发现没有生效。该文件似乎不是从$ERL_ROOT/lib/erts-10.1/ebin/erl_prim_loader.beam

标签: erlangloader

解决方案


这是一个预加载的模块,因此有一个额外的步骤可以使修改生效。从John Högberg 的消息到 2019-04-29 的 erlang-questions

prim_file是一个静态嵌入到模拟器中的预构建模块,如果初始化有任何问题,模拟器会崩溃。在这种情况下,您已向 NIF 添加了一个函数,但尚未重建该模块,因此在尝试注入不存在的my_truncate_nif/1.

要更新这些预建模块,您需要运行:

./otp_build update_preloaded --no-commit

尝试在不更改 NIF(C 代码)的干净构建上执行此操作,然后使用应用的更改重新构建模拟器。请注意,每次更新预加载模块时,您都需要重新构建模拟器以使更改生效。

希望有帮助!


推荐阅读