How to get a stack trace object in Ruby?

后端 未结 6 1438
感情败类
感情败类 2020-12-13 08:34

I need to get a stack trace object in Ruby; not to print it, just to get it to do some recording and dumping for later analysis. Is that possible? How?

6条回答
  •  萌比男神i
    2020-12-13 08:44

    You can use Kernel.caller for this. The same method is used when generating stack traces for exceptions.

    From the docs:

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

提交回复
热议问题