You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gen_server:start/4中`Func`参数的类型签名是什么?

{install, {Func, FuncState}} 中的 Func 是OTP调试体系规定的自定义调试处理函数,具体约束如下:

  • 元数必须为2,需接收2个入参
  • 第一个入参:当前触发的调试事件,类型为任意Erlang term,常见的事件包括:
    • {in, Msg}:gen_server进程收到外部消息
    • {out, Msg, TargetPid}:gen_server进程向指定进程发送消息
    • {return, Caller, Result}:gen_server处理完同步调用后返回结果
    • 其余还包括进程状态变更、超时触发等各类生命周期事件
  • 第二个入参:初始化时传入的 FuncState,类型可由开发者自定义,用于保存调试过程中的上下文数据
  • 返回值要求:必须返回更新后的 FuncState,该值会作为下一次调试事件触发时传入的第二个参数

以下是简单的使用示例:

%% 自定义调试函数:打印所有收到的消息,累计消息计数
custom_debug({in, Msg}, Count) ->
    io:format("[Debug] 收到消息:~p,当前累计收到消息数:~p~n", [Msg, Count + 1]),
    Count + 1;
%% 其余事件不处理,直接返回当前状态
custom_debug(_Event, Count) ->
    Count.

启动gen_server时传入调试配置即可生效:

gen_server:start_link({local, my_server}, my_mod, [], [{debug, [{install, {fun custom_debug/2, 0}}]}])

内容的提问来源于stack exchange,提问作者Max Heiber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:36:03