2011-11-12 3 views
3

오류 백 트레이스 $!.backtrace에서 각 단계의 메소드 이름을 추출 할 수 있습니다. 각 메소드 호출의 수신자를 더 추출하고 싶습니다. 이 기능이있는 this gem을 보았 기 때문에이 작업을 수행 할 수있는 방법이 있다고 확신합니다.백 트레이스에서 수신자 정보 얻기

위에서 언급 한 보석은 Kernel.set_trace_func을 사용하고 있으며 binding 정보를 기록한 것 같습니다. 그러나 모든 메소드 호출에 대해 이렇게하면 프로그램 실행 속도가 크게 느려집니다. 오류로 연결되는 호출 스택과 관련된 정보 인 binding을 선택적으로 기록하려면 어떻게합니까?

답변

1

내가 아는 한, 실행 추적을 제외하고 예외가 발생한 후에 binding 정보를 얻을 방법이 없습니다.

확장명이 예외 개체에서 사용할 수있는 정보에 액세스 할 수 있습니다 (https://github.com/ruby/ruby/blob/trunk/error.c#L552 참조).

당신은 여기에서 운이 없다 ...

+0

나는 봅니다. 정보 주셔서 감사합니다. – sawa