Rob*_*loi 4 debugging erlang trace
您可能知道,现在可以使用简短形式跟踪Erlang函数:
dbg:tpl(Module, Function, x).
Run Code Online (Sandbox Code Playgroud)
而不是通常的:
dbg:tpl(Module, Function, dbg:fun2ms(fun(_) -> exception_trace() end)).
Run Code Online (Sandbox Code Playgroud)
我其实想知道是否有类似的简短形式return_trace().就像是:
dbg:tpl(Module, Function, r).
Run Code Online (Sandbox Code Playgroud)
代替:
dbg:tpl(Module, Function, dbg:fun2ms(fun(_) -> return_trace() end)).
Run Code Online (Sandbox Code Playgroud)
dbg模块中的源代码似乎不建议:
new_pattern_table() ->
PT = ets:new(dbg_tab, [ordered_set, public]),
ets:insert(PT,
{x,
term_to_binary([{'_',[],[{exception_trace}]}])}),
ets:insert(PT,
{exception_trace,
term_to_binary(x)}),
PT.
Run Code Online (Sandbox Code Playgroud)
但我可能错了.你知道吗?
不是真的,但你可以记住saved结果中的数字dbg:tpl并重复使用它:
1> dbg:tracer().
{ok,<0.33.0>}
2> dbg:p(all,c).
{ok,[{matched,nonode@nohost,25}]}
3> dbg:tpl(lists, sort, dbg:fun2ms(fun(_) -> return_trace() end)).
{ok,[{matched,nonode@nohost,2},{saved,1}]}
4> dbg:tpl(lists, sum, 1).
{ok,[{matched,nonode@nohost,2},{saved,1}]}
5> lists:sum([1,2,3]).
6
6> (<0.31.0>) call lists:sum([1,2,3])
(<0.31.0>) call lists:sum([1,2,3],0)
(<0.31.0>) call lists:sum([2,3],1)
(<0.31.0>) call lists:sum([3],3)
(<0.31.0>) call lists:sum([],6)
(<0.31.0>) returned from lists:sum/2 -> 6
(<0.31.0>) returned from lists:sum/2 -> 6
(<0.31.0>) returned from lists:sum/2 -> 6
(<0.31.0>) returned from lists:sum/2 -> 6
(<0.31.0>) returned from lists:sum/1 -> 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |