Ale*_*nov 11 erlang gen-server
是否有可能获得gen_server
进程的当前状态(可能是通过发送一些系统消息)?它在调试时很有用.
当然,我可以添加一条消息,将当前状态返回到handle_call
:
get_state(Server) -> gen_server:call(Server, '$get_state').
%% in every gen_server I want to debug
...
handle_call('$get_state', _From, State) ->
{reply, State, State};
...
Run Code Online (Sandbox Code Playgroud)
但是内置了什么(即使它有点hacky)?
gle*_*ber 27
使用sys:get_status/1,2
功能.它的定义是:
get_status(Name,Timeout) ->
{status, Pid, {module, Mod}, [PDict, SysState, Parent, Dbg, Misc]}
Run Code Online (Sandbox Code Playgroud)
SysState
将包含进程的状态.它适用于使用OTP行为和其他流程实现proc_lib
和sys
要求的所有流程.