我在一个相当大的项目上使用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正在整合或缓存到某个我必须要核实或重建的地方?