首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Ruby中获取堆栈跟踪对象?

如何在Ruby中获取堆栈跟踪对象?
EN

Stack Overflow用户
提问于 2010-09-30 17:00:32
回答 4查看 35.7K关注 0票数 63

我需要在Ruby中获取一个堆栈跟踪对象,而不是打印它,只是为了让它做一些记录和转储以便以后分析。这有可能吗?多么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-30 17:16:03

您可以使用Kernel.caller来实现这一点。在为异常生成堆栈跟踪时也使用相同的方法。

从文档中:

代码语言:javascript
复制
def a(skip)
  caller(skip)
end
def b(skip)
  a(skip)
end
def c(skip)
  b(skip)
end
c(0) #=> ["prog:2:in `a'", "prog:5:in `b'", "prog:8:in `c'", "prog:10"]
c(1) #=> ["prog:5:in `b'", "prog:8:in `c'", "prog:11"]
c(2) #=> ["prog:8:in `c'", "prog:12"]
c(3) #=> ["prog:13"]
票数 88
EN

Stack Overflow用户

发布于 2013-07-31 18:48:24

试一试

代码语言:javascript
复制
Thread.current.backtrace.join("\n")
票数 38
EN

Stack Overflow用户

发布于 2010-09-30 17:01:36

试试error.backtrace

代码语言:javascript
复制
# Returns any backtrace associated with the exception.  
# The backtrace is an array of strings, each containing either ``filename:lineNo: in `method’’’ or ``filename:lineNo.’‘

def a
  raise "boom"
end

def b
  a()
end

begin
  b()
rescue => detail
  print detail.backtrace.join("\n")
end

产生:

代码语言:javascript
复制
prog.rb:2:in `a'
prog.rb:6:in `b'
prog.rb:10
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3829157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档