Получение информации о получателе из backtrace - PullRequest
3 голосов
/ 12 ноября 2011

Из сообщения об ошибке $!.backtrace можно извлечь имена методов для каждого шага. Я хочу дополнительно извлечь получателя каждого вызова метода. Я уверен, что есть способ сделать это, потому что я видел этот камень , который имеет эту функцию.

Похоже, что упомянутый выше камень использует Kernel.set_trace_func и записывает информацию binding. Но выполнение этого для всех вызовов методов значительно замедляет работу программы. Как можно выборочно записать binding информацию, относящуюся к стеку вызовов, которая приводит к ошибке?

1 Ответ

1 голос
/ 18 ноября 2011

Насколько я знаю, нет способа получить информацию binding после возникновения исключения, кроме как путем отслеживания выполнения.

Расширение C может иметь доступ к информации, доступной в объекте исключения (см. https://github.com/ruby/ruby/blob/trunk/error.c#L552).

Тебе здесь не повезло ...

...