在 Ruby 中记录 GC 事件

Uly*_* BN 5 ruby debugging garbage-collection

我正在尝试调试我的 c 扩展(https://github.com/rgeo/rgeo),并且目前正在改进压缩的处理(一个介绍该主题的精彩视频),并且我想了解有关何时GC 正在运行。

到目前为止,我找到了一种解决方案来查看 GC 运行了多少次:

GC::Profiler.enable
at_exit { GC::Profiler.report }
Run Code Online (Sandbox Code Playgroud)

不过,我宁愿在 GC 直接运行时收集信息,而不是等待程序结束。

我发现gc.c有一种gc_report方法可以解决这个问题,但是看起来我必须重新编译 ruby​​ 才能使用该方法。

是否有一种简单的方法来启用 GC 事件报告?请注意,我在 Macos 上使用 rbenv,如果这可能有帮助的话。