从错误回溯$!.backtrace
,您可以提取每个步骤的方法名称。我想进一步提取每个方法调用的接收器。我确信有一种方法可以做到这一点,因为我看到this gem具有此功能。
上面提到的宝石似乎正在使用Kernel.set_trace_func
,并记录binding
信息。但是对所有方法调用执行此操作会显着减慢程序的运行速度。如何有选择地记录与导致错误的调用堆栈相关的binding
信息?
答案 0 :(得分:1)
据我所知,除非通过跟踪执行,否则在引发异常后无法获取binding
信息。
C扩展可能可以访问异常对象中可用的信息(参见https://github.com/ruby/ruby/blob/trunk/error.c#L552)。
你在这里非常幸运......