如何打印Ruby 1.9进程的运行时堆栈跟踪?

Wil*_*zer 7 ruby unix ruby-1.9

有没有办法打印Ruby 1.9.x进程的运行时堆栈跟踪?我知道有一个名为pstackRuby 1.8 的实用程序,但该项目似乎在几年前被放弃了:https://github.com/ice799/pstack.Ruby 1.9是否存在类似的内容?非常感谢!

编辑:我有兴趣使用外部工具生成堆栈跟踪(不在与Ruby进程相同的内存空间中运行).

正如@mosch指出的那样,该Kernal#caller方法可以在正在运行的Ruby进程中运行.

您甚至可以构建对Ruby代码的支持,以捕获进程信号并打印堆栈跟踪:

Signal.trap("SIGTERM") { p caller }
Run Code Online (Sandbox Code Playgroud)

参考:http://www.ruby-doc.org/core-1.9.3/Signal.html

我可以在我的代码中构建这个功能,但我更喜欢使用更通用的外部解决方案.谢谢.

mor*_*itz 3

每当您调用内核方法时caller,您都会以数组形式获取当前调用堆栈。