Ruby 如何在gdb中获取rb_backtrace()的输出,以用于乘客进程
我试图在gdb中转储乘客进程的回溯。我知道我应该执行死刑Ruby 如何在gdb中获取rb_backtrace()的输出,以用于乘客进程,ruby,gdb,Ruby,Gdb,我试图在gdb中转储乘客进程的回溯。我知道我应该执行死刑 attach <PID> call rb_backtrace() 附加 调用rb_backtrace() 在启动gdb之后,但我不知道输出的去向,我查看了rails生产日志(设置为info),nginx日志位于/var/logs/nginx,但我找不到输出。有什么想法吗?我不知道ruby端的答案——我猜它将进入ruby进程的stdout或stderr——但gdb最近获得了一个新功能,旨在帮助解决这个问题 新特性称为“帧过滤
attach <PID>
call rb_backtrace()
附加
调用rb_backtrace()
在启动gdb之后,但我不知道输出的去向,我查看了rails生产日志(设置为info),nginx日志位于/var/logs/nginx,但我找不到输出。有什么想法吗?我不知道ruby端的答案——我猜它将进入ruby进程的stdout或stderr——但gdb最近获得了一个新功能,旨在帮助解决这个问题 新特性称为“帧过滤器”,它允许您通过编写检查进程状态的简单Python脚本来更改堆栈跟踪的显示方式。例如,您可以编写这样一个理解Ruby解释器的脚本,然后让gdb的“bt”自动将解释(Ruby)帧与C帧交错 有关更多信息,请从这里开始阅读下面几个节点: 我希望看到这个特性被各种解释器项目采用。人们已经很好地采用了pretty printing,我认为这是合乎逻辑的下一步