Почему изменения библиотеки erlang не включаются в мой проект?

Я использую eclipse 3.6.2 с erlang 5.8.1.1 в довольно большом проекте, который мы не готовы перейти на более современную версию языка, поэтому я застрял с ошибкой в ​​eprof:

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]).

Который у меня все время вылетает, потому что тот, кто написал это, не предохранялся отdividebyzero. Я взломал изменение:

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», чтобы увидеть, получаю ли я исключение, отличное от бадарита, который меня сейчас сбивает, но безрезультатно.

Я могу только догадываться, что .beams консолидируются или кэшируются где-то, что мне придется уничтожить или перестроить?


person Sniggerfardimungus    schedule 27.09.2011    source источник


Ответы (1)


Посмотрите документацию для модуля code, в которой объясняется поиск пути кода. Поскольку eprof находится в приложении tools, его следует брать из любых дополнительных каталогов библиотек.

person Alexey Romanov    schedule 27.09.2011