Ruby 从回溯中切断来自特定库的步骤
有时,我们使用的库调试得非常好,通常不会导致错误。尽管如此,这些库仍可能由于我们误用它们的API而返回错误。在这种情况下,这些库的内部步骤显示在错误的回溯中,从使用库的程序员的角度来看,这些回溯只是垃圾,很难找出错误的原因。甚至核心Ruby中的一些方法也会在回溯中插入一些内部步骤。例如,每当您看到涉及Ruby 从回溯中切断来自特定库的步骤,ruby,backtrace,Ruby,Backtrace,有时,我们使用的库调试得非常好,通常不会导致错误。尽管如此,这些库仍可能由于我们误用它们的API而返回错误。在这种情况下,这些库的内部步骤显示在错误的回溯中,从使用库的程序员的角度来看,这些回溯只是垃圾,很难找出错误的原因。甚至核心Ruby中的一些方法也会在回溯中插入一些内部步骤。例如,每当您看到涉及Enumerable#inject的回溯时,总是会从中调用Enumerable#每个,这会显示在回溯中,令人讨厌 从回溯中删除某些给定库的内部步骤的好方法是什么?我目前正在通过解析回溯并按文件名过滤
Enumerable#inject
的回溯时,总是会从中调用Enumerable#每个
,这会显示在回溯中,令人讨厌
rescue
和raise
,但这似乎并不正确begin
...
rescue Exception
e = $!
e.set_backtrace(caller(nesting_level))
raise e
end
嵌套级别是调用当前方法的库的多少个方法。如果它是直接从用户代码调用的,则放入0。如果它是由在用户代码中调用的一个方法调用的,则放入1,依此类推Enumerable#reject
FTW:)看起来aspects(我更喜欢ruby)就是您所需要的。见e。G(向下滚动两个屏幕。)我无法准确地在2中得到你的建议。你能详细说明一下吗?