从回溯中获取接收者信息

时间:2011-11-12 09:52:44

标签: ruby methods receiver backtrace

从错误回溯$!.backtrace,您可以提取每个步骤的方法名称。我想进一步提取每个方法调用的接收器。我确信有一种方法可以做到这一点,因为我看到this gem具有此功能。

上面提到的宝石似乎正在使用Kernel.set_trace_func,并记录binding信息。但是对所有方法调用执行此操作会显着减慢程序的运行速度。如何有选择地记录与导致错误的调用堆栈相关的binding信息?

1 个答案:

答案 0 :(得分:1)

据我所知,除非通过跟踪执行,否则在引发异常后无法获取binding信息。

C扩展可能可以访问异常对象中可用的信息(参见https://github.com/ruby/ruby/blob/trunk/error.c#L552)。

你在这里非常幸运......