为什么erlang lib更改没有被合并到我的项目中?

时间:2011-09-27 20:13:07

标签: erlang rebuild binaries erl beam

我在一个相当大的项目上使用eclipse 3.6.2和erlang 5.8.1.1,我们还没准备好转向更现代的语言版本,所以我遇到了eprof中的一个错误:< / p>

string_bp_mfa([{Mfa, {Count, Time}}|Mfas], Tus, {MfaW, CountW, PercW, TimeW, TpCW}, Strings) ->
    Smfa   = s(Mfa),
    Scount = s(Count),
    Stime  = s(Time),
    Sperc  = s("~.2f", [100*(Time/Tus)]),
    Stpc   = s("~.2f", [Time/Count]),

    string_bp_mfa(Mfas, Tus, {
        erlang:max(MfaW,  length(Smfa)),
        erlang:max(CountW,length(Scount)),
        erlang:max(PercW, length(Sperc)),
        erlang:max(TimeW, length(Stime)),
        erlang:max(TpCW,  length(Stpc))
        }, [[Smfa, Scount, Sperc, Stime, Stpc] | Strings]).

对我来说一直在崩溃,因为无论谁写这个都没有防止分频器。我已经入侵了一个变化:

SafeTus = case Tus of 0 -> 1; _ -> Tus end,
SafeCount = case Count of 0 -> 1; _ -> Count end,
Sperc  = s("~.2f", [100*(Time/SafeTus)]),
Stpc   = s("~.2f", [Time/SafeCount]),

...但它永远不会被我的项目执行。我手动重新编译.erl并将.beam放在ebin目录中,但在完全关闭我的项目,关闭eclipse,打开eclipse,刷新,清理和重新启动之后,不会执行新版本的方法。我已经尝试将类似“foo + 1”的表达式粘贴到方法中,看看我是否得到了一个与现在让我失望的badarith不同的异常,但是没有效果。

我只能猜测.beams正在整合或缓存到某个我必须要核实或重建的地方?

1 个答案:

答案 0 :(得分:0)

查看code模块的文档,该文档解释了代码路径搜索。由于eprof位于tools应用程序中,因此应从任何其他库目录中选择它。