gpt4 book ai didi

c - 如何让 ruby​​ mkmf 识别已修补的函数?

转载 作者:行者123 更新时间:2023-11-30 15:37:46 24 4
gpt4 key购买 nike

我有兴趣使用ruby-prof并且对其内存分析方面特别感兴趣。我正在尝试将它专门用于 ruby​​ 1.9.3-p484。我知道它需要补丁,并且基本上已经应用了this尽管针对 p484 进行了修改。

Ruby 编译/构建良好,并且我的 ruby​​ 环境的 irb 具有在 GC 上定义的这些函数

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

然后我尝试 gem install ruby​​-prof (使用我的自定义 ruby​​ 中的 gem 二进制文件)并且安装得很好。然而,它运行的 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 默认情况下只检查公共(public) header (在其 extconf.rb 中)。

不幸的是,我对 C 不太感兴趣。我的补丁是否遗漏了一些东西?我还需要在 ruby​​ header 中添加一些内容吗?我需要传递一些标志给 gem install 命令,以便 ruby​​-prof 的 extconf.rb 找到正确的函数?有什么建议吗?

最佳答案

所以,我终于解决了这个问题(当然,在同事的帮助下)。事实证明,该函数确实需要在 ruby​​ header 中公开为可用。我在问题中发布的补丁需要进行一些调整,以符合 ruby​​-prof 的期望(并在 header 中公开该函数)。

我已经把它贴出来了here希望它能对 future 的知识探索者有所帮助。

关于c - 如何让 ruby​​ mkmf 识别已修补的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com