gpt4 book ai didi

erlang - Erlang 中的堆栈跟踪中缺少条目

转载 作者:行者123 更新时间:2023-12-04 14:07:03 29 4
gpt4 key购买 nike

当我编译以下模块时:

-module(x).
-export([inp/0]).

f(X) ->
g(X).

g(X) ->
error(X).

inp() ->
f(123).

然后评估 x:inp() 我得到以下输出:

[{x,g,1,[{file,"x.erl"},{line,8}]},
{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,689}]},
{erl_eval,try_clauses,8,[{file,"erl_eval.erl"},{line,919}]},
{shell,exprs,7,[{file,"shell.erl"},{line,686}]},
{shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
{shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]

finp 的调用去了哪里?这种行为使得跟踪我的案例中的错误原因变得更加困难,我如何才能获得完整的堆栈跟踪?


我正在使用 OTP24

最佳答案

这是因为Erlang的编译器优化。编译器推断,在这种特定情况下,函数 f()inp() 仅用于将数字传递给函数 g() 并且它们不能用于任何其他用途,甚至在理论上也不能。所以编译器“将它们优化掉”,实际上只编译函数 g()

关于erlang - Erlang 中的堆栈跟踪中缺少条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67739196/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com