0

我想对我的 rubinius 应用程序进行线程转储,以帮助调查明显的死锁问题。我的应用程序使用的是 rbx-3.21,如果可能的话,我不希望更改它。

我试过像这里描述的那样做一个纯 ruby​​ 解决方案,但是线程回溯不能正常工作 - 它们看起来都与执行堆栈转储的线程相同。结果如下所示:

Thread-1uvk
common/service.rb:192:in `dump_threads'
  common/service.rb:190:in `dump_threads'
  common/service.rb:90:in `prepare_status'

Thread-1uvs
common/service.rb:192:in `dump_threads'
  common/service.rb:190:in `dump_threads'
  common/service.rb:90:in `prepare_status'

....etc
4

1 回答 1

0

您应该看一下 Rubinius Book,其中记录了一些新工具。具体来说,看看这个: https ://book.rubinius.com/manuscript/inspectability.html

我通常使用该页面底部给出的示例运行我的代码:

rbx -Xsystem.diagnostics.target='./diagnostics-$PID.json' -Xsystem.profiler.target=diagnostics some_script.rb

这会将统计信息(包括线程配置文件)写入 json 文件。

如果这些信息还不够,请到 Gitter房间停下来,那里有许多 Rubinius 用户闲逛并寻求帮助。

于 2016-09-19T17:24:33.583 回答