我想做一个我的rubinius应用程序的线程转储,以帮助调查明显的死锁问题。我的应用程序正在使用rbx-3.21,如果可能的话,我宁愿不改变它。
我尝试过像描述here那样的纯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
答案 0 :(得分: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文件。
如果没有足够的信息,请在许多Rubinius用户闲逛的Gitter房间停留并寻求帮助。