2011-02-14 6 views
1

나는 메일 세트를 분석하기 위해 메일 gem을 사용하고 있습니다. 유감스럽게도 전자 메일 중 하나가 구문 분석을 통해 100 % CPU에 도달하고 절대로 반환하지 않습니다.100 % CPU에 도달하고 결코 끝나지 않는 루비 앱 프로파일 링

저는 Ruby-Prof와 벤치마킹 도구를 사용하여 메일 보석을 일반적으로 살펴 보았습니다.하지만 제 질문은 프로필을 작성하고 스크립트가 돌아 오지 않고 잘못 될 것임을 알 수있는 방법입니다.

불행히도이 오류를 재현하는 방법을 알지 못해서 가지고있는 메시지는 기밀이므로 공유 할 수 없습니다. 내가 볼 수있는 것에서는 그것에 대해 특별한 것은 없지만 30MB의 이메일이 파싱을 잘 할 수있을 때만 크기가 4MB에 불과합니다.

감사합니다.

+2

소스가 있고 디버그 환경에서 실행 중이면 무한 (또는 매우 장기 실행) 루프를 쉽게 찾을 수 있습니다. Ctrl + C 등으로 일시 중지합니다. 문제가 스택 어딘가에 있다는 것을 알고 있습니다. 그런 다음 문제가 발생할 때까지 단일 단계로 시작하십시오. –

답변

1

debbuger를 사용하고 단계별로 디버깅해야하며 중요한 코드 행이 어디에 있는지 확인해야합니다. 예를 들어 php apps의 경우 디버깅을 위해 Zend Studio를 사용합니다. Alban

+2

나는 rdebug에 익숙하지 않지만 ** gdb **를 사용하면 앱이 실행되는 동안'ctrl + c'를 누를 수 있고 디버그 콘솔을 열 수 있습니다. – Augusto

+0

나는 이것을 생각하지 않은 이유를 모른다. 꽤 자주 루비 디버그를 사용합니다. 전화 번호와 문제가 어디에 있었는지 확인하기 위해 프로파일 링해야하는 일반적인 문제로 인해 실제로는 작동 할 수도 있습니다. –

+1

@ 스티브 : [이 기술의] 극단적 인 경우입니다 (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024).). –