如何让ruby输出完整的回溯文件而不是截断文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (38)

当我收到异常时,通常来自调用堆栈的内部。发生这种情况时,往往不会出现实际违规的代码行:

tmp.rb:7:in `t': undefined method `bar' for nil:NilClass (NoMethodError)
        from tmp.rb:10:in `s'
        from tmp.rb:13:in `r'
        from tmp.rb:16:in `q'
        from tmp.rb:19:in `p'
        from tmp.rb:22:in `o'
        from tmp.rb:25:in `n'
        from tmp.rb:28:in `m'
        from tmp.rb:31:in `l'
         ... 8 levels...
        from tmp.rb:58:in `c'
        from tmp.rb:61:in `b'
        from tmp.rb:64:in `a'
        from tmp.rb:67

那“第八行”截断造成了很大的麻烦。我没有太多的成功googling这一个:我如何告诉ruby,我想转储包括完整的堆栈?

提问于
用户回答回答于

Exception#Backtrace包含整个堆栈:

def do_division_by_zero; 5 / 0; end
begin
  do_division_by_zero
rescue => exception
  puts exception.backtrace
  raise # always reraise
end

用户回答回答于

如果想要一个简单的一行程序,也可以这样做:

puts caller

扫码关注云+社区