erlang程序中trace info的结果如何解读?

问题描述 投票:0回答:1

这是程序

-module(fun_param).

-export([start/0, partition_parallel/2]).

partition_parallel(F, Es) ->
    Parent = self(),
    Running = [{spawn_monitor(fun() -> Parent ! {self(), F(E)} end), E, helloworld} || E <- Es].


start()->
   partition_parallel(
       fun (C) ->
           io:format("hello:~p~n", [C])
       end, [1,2,3]).

并使用 recon_trace 跟踪程序

recon_trace:calls({fun_param, '_', fun(_) -> return_trace() end}, 2000, [return_to, {scope, local}]).

有些输出我不明白

4:22:12.026917 <0.161.0> fun_param:'-partition_parallel/2-lc$^0/1-0-'([1,2,3], #Fun<fun_param.0.111727472>, <0.161.0>)

4:22:12.027101 <0.161.0> fun_param:'-partition_parallel/2-lc$^0/1-0-'([2,3], #Fun<fun_param.0.111727472>, <0.161.0>)

4:22:12.027327 <0.161.0> fun_param:'-partition_parallel/2-lc$^0/1-0-'([3], #Fun<fun_param.0.111727472>, <0.161.0>)

4:22:12.027475 <0.161.0> fun_param:'-partition_parallel/2-lc$^0/1-0-'([], #Fun<fun_param.0.111727472>, <0.161.0>)

4:22:12.027581 <0.161.0> fun_param:'-partition_parallel/2-lc$^0/1-0-'/3 --> []

4:22:12.027704 <0.161.0>  '--> fun_param:'-partition_parallel/2-lc$^0/1-0-'/3

  • 这是什么意思

    '-partition_parallel/2-lc$^0/1-0-'
    ,特别是
    lc$^0/1
    ?

  • 这些参数从何而来?

 ([1,2,3], #Fun<fun_param.0.111727472>, <0.161.0>)

function erlang trace
1个回答
0
投票
'-partition_parallel/2-lc$^0/1-0-'

这篇文章描述得很好: 调试时如何在 Erlang 中读取/解码列表理解的临时函数名

争论

([1,2,3], #Fun<fun_param.0.111727472>, <0.161.0>)

分解如下:

  • [1,2,3]
    传递给匿名函数的参数
  • #Fun<fun_param.0.111727472>
    partition_parallel
  • 中定义的已编译匿名函数
  • <0.161.0>
    执行函数的进程的 pid
© www.soinside.com 2019 - 2024. All rights reserved.