Erlang 如果我擦除gen_服务器模块的进程字典会发生什么?

Erlang 如果我擦除gen_服务器模块的进程字典会发生什么?,erlang,otp,gen-server,process-dictionary,Erlang,Otp,Gen Server,Process Dictionary,我在gen_服务器模块中使用流程字典,调用get()函数,得到了如下结果 {'$ancestors',[main_server,<0.30.0>]}, {'$initial_call',{child_server,init,1}}] {'$祖先',[main_server,]}, {'$initial_call',{child_server,init,1}}] 如果我删除了流程字典,会发生什么问题? 我把它擦掉了,一切都很好,甚至 调用在子服务器中生成异常的函数,主服务器仍然可以

我在gen_服务器模块中使用流程字典,调用get()函数,得到了如下结果

{'$ancestors',[main_server,<0.30.0>]},
{'$initial_call',{child_server,init,1}}]
{'$祖先',[main_server,]},
{'$initial_call',{child_server,init,1}}]
如果我删除了流程字典,会发生什么问题?
我把它擦掉了,一切都很好,甚至
调用在子服务器中生成异常的函数,主服务器仍然可以获得退出信号

我认为一些调试函数可能会使用进程字典,例如erlang:process_info/2

$procedens
仅在初始化阶段使用,以获取父级的PID,该PID用于捕获来自父级的
EXIT
消息,以便执行
terminate
内容。在服务器启动并运行时删除此密钥不会产生任何影响

另一方面,
proc_lib
在崩溃报告中使用
$initial_call
,转储MFA信息

OTP源代码树中的快速
grep
肯定会有所帮助