erlang - 跟踪 Erlang 函数 - 简写形式

标签 erlang debugging trace

您可能知道,现在可以使用以下简写形式来跟踪 Erlang 函数:

dbg:tpl(Module, Function, x).

而不是通常的:
dbg:tpl(Module, Function, dbg:fun2ms(fun(_) -> exception_trace() end)).

我实际上想知道 return_trace() 是否有类似的简短形式。 .就像是:
dbg:tpl(Module, Function, r).

代替:
dbg:tpl(Module, Function, dbg:fun2ms(fun(_) -> return_trace() end)).
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.

但我可能错了。你知道吗?

最佳答案

不是真的,但你可以记住 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

关于erlang - 跟踪 Erlang 函数 - 简写形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2432936/

相关文章:

php - PHP解析/语法错误;以及如何解决它们

java - 为什么 Spring 登录表单不会显示登录失败的任何错误信息?

如果控制台打开,Javascript 运行得更快

asp.net-mvc - ASP.NET 跟踪在 MVC2 View 中工作吗?

java堆栈跟踪的行号与hadoop lib不匹配

c++ - `-g -rdynamic` gcc 标志是否显着减慢应用程序执行(增加性能消耗)?

Erlang - 全局变量..是的,我知道,我知道

haskell - 递归排序非连续列表到连续列表列表

erlang - 为什么这个变量没有被使用?

ssl - 对于 OCSP 请求,erlang elixir nif char* 数据到二进制文件失败