Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在gdb中获取rb_backtrace()的输出,以用于乘客进程_Ruby_Gdb - Fatal编程技术网

Ruby 如何在gdb中获取rb_backtrace()的输出,以用于乘客进程

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最近获得了一个新功能,旨在帮助解决这个问题 新特性称为“帧过滤

我试图在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,我认为这是合乎逻辑的下一步