2014-02-27 14 views
0

我对使用ruby-prof感兴趣,并特别感兴趣的是它的内存分析方面。我正在尝试专门用于ruby 1.9.3-p484。我知道它需要一个补丁,并基本上应用this虽然修改为p484。如何让ruby mkmf识别补丁函数?

的Ruby编译/构建罚款和我对红宝石环境IRB对GC定义的那些功能

irb(main):001:0> GC.malloc_allocations 
=> 56769 
irb(main):002:0> GC.malloc_allocated_size 
=> 11939060 

然后我尝试宝石安装红宝石教授(使用我的自定义红宝石宝石二进制),它安装很好。但是,它运行的mkmf extconf拒绝识别修补的函数。 Irb证实了这一点。

irb(main):004:0> have_func("rb_gc_malloc_allocations") 
checking for rb_gc_malloc_allocations()... no 
=> false 
irb(main):005:0> have_func("rb_gc_malloc_allocated_size") 
checking for rb_gc_malloc_allocated_size()... no 
=> false 

我知道documentation for have_func说,它会检查“共同”(不知道这是什么意思)头第一文件或任何其他头文件你告诉它来检查。默认情况下ruby-prof只检查公共头文件(在他们的extconf.rb中)。

不幸的是,我对C不太热。我是否错过了补丁?我是否也需要在Ruby标题中添加一些内容?我需要将一些标志传递给gem install命令,以便ruby-prof的extconf.rb找到正确的函数?有什么建议么?

回答

1

所以,我终于明白了这一点(当然有同事的帮助)。事实证明,该功能确实需要暴露在红宝石头文件中。我在这个问题中发布的补丁需要进行一些调整,以匹配ruby-prof期望的内容(并且公开头文件中的函数)。

我已经把它放在here的希望,它会帮助一些未来的知识寻求者。