0
我在一個相當大的項目上使用eclipse 3.6.2和erlang 5.8.1.1,我們還沒有準備好移植到更現代化的語言版本,所以我堅持使用eprof中的錯誤:爲什麼沒有將erlang庫變更合併到我的項目中?
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正在合併或緩存在某處,我將不得不重建或重建?