anchor.diff:              {"trace topic <Topic> off",          "stop to trace Topic"}]).
   
   trace_on(Who, Name, LogFile) ->
  -    case emqttd_trace:start_trace({Who, bin(Name)}, LogFile) of
  +    case emqttd_trace:start_trace({Who, iolist_to_binary(Name)}, LogFile) of
           ok ->
               ?PRINT("trace ~s ~s successfully.~n", [Who, Name]);
           {error, Error} ->
  
positive.code:                 awaiting_rel,
                  awaiting_ack,
                  awaiting_comp,
                  created_at,
                  subscriptions],
      ?PRINT("Session(~s, clean_sess=~s, max_inflight=~w, inflight_queue=~w, "
             "message_queue=~w, message_dropped=~w, "
             "awaiting_rel=~w, awaiting_ack=~w, awaiting_comp=~w, "
             "created_at=~w, subscriptions=~s)~n",
              [ClientId | [format(Key, proplists:get_value(Key, SessInfo)) || Key <- InfoKeys]]).
  
  print(topic, Topic, Records) ->
      Nodes = [Node || #mqtt_topic{node = Node} <- Records],
      ?PRINT("~s: on ~p~n", [Topic, Nodes]);
  
  print(subscription, ClientId, Subscriptions) ->
      TopicTable = [{Topic, Qos} || #mqtt_subscription{topic = Topic, qos = Qos} <- Subscriptions],
  
negative.code:             end, lists:sort(emqttd_metrics:all()));
  
  broker(["pubsub"]) ->
      Pubsubs = supervisor:which_children(emqttd_pubsub_sup:pubsub_pool()),
      foreach(fun({{_, Id}, Pid, _, _}) ->
                  ProcInfo = erlang:process_info(Pid, ?PROC_INFOKEYS),
                  ?PRINT("pubsub: ~w~n", [Id]),
  