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