我需要在Ruby中获取堆栈跟踪对象;不是为了打印,只是为了让它做一些记录和转储以供以后分析.可能吗?怎样

推荐答案

你可以用Kernel.caller来做这个.为异常生成堆栈跟踪时使用相同的方法.

从文件中:

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"]

Ruby相关问答推荐

如何使用Ruby中的时区函数S标准库?

VS Code Prettier 打破哈希访问

while 语句的主体是块吗?

在 Ruby 中使用委托维护相同的类

Sublime Text 2 中的 RubyTest

在 ruby​​ 中调试第三方 gem 的最佳方法

如何期望 RSpec should_receive 的一些(但不是全部)参数?

Ruby:如何卸载设计(uninstall Devise)?

在 Ruby 早期转义 .each { } 迭代

全新安装 RVM 和 Ruby 2.1.1 - dyld 库/路径错误

如何用 Ruby 覆盖 shell 中的打印行?

我可以在 Ruby 2.x 中要求命名参数吗?

Ruby - 查看端口是否打开

无法正确自动生成 Ruby DevKit 配置文件

. vs ::(点与双冒号)用于调用方法

RSpec:我如何在期望语法中使用数组包含匹配器

Ruby 中的文件打开模式

如何将哈希键转换为方法名称?

如何在 Rails 3 迁移中描述枚举列?

Ruby - 用另一个字符串替换第一次出现的子字符串