2011-09-27 6 views
0

상당히 큰 프로젝트에서 eclipse 3.6.2를 erlang 5.8.1.1과 함께 사용하고 있습니다. 우리는 더 현대적인 언어 버전으로 이동할 준비가되지 않았기 때문에 eprof의 버그가 붙어 있습니다 :Erlang의 lib 변경 사항이 내 프로젝트에 통합되지 않는 이유는 무엇입니까?

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 디렉토리에 두었습니다. 그러나 프로젝트의 전체 종료, 이클립스 닫기, 이클립스 열기, 새로 고침, 정리 및 재시작 후에 메소드의 새 버전이 실행되지 않습니다. 메소드에 "foo + 1"과 같은 끈적한 표현을 시도해 보았습니다. 이제는 저를 데려가는 badarith와는 다른 예외가 생기지 만 효과가 없습니다.

. 핵이 통합되거나 캐시되어 어딘가에 핵폭탄이나 재건축을해야한다고 추측 할 수 있습니까?

답변

0

코드 경로 검색을 설명하는 code 모듈의 설명서를 살펴보십시오. eproftools 응용 프로그램에 있으므로 추가 라이브러리 디렉토리에서 가져와야합니다.