0

我想测试我的 rails-project 的一个重要库类的配置文件使用情况。它使用 ActiveRecord,所以我需要所有 rails 依赖项来分析它。

据我所知,我需要一个修补过的 ruby​​ (rubygc),以便脚本/配置文件和脚本/基准可以跟踪内存使用情况。我尝试按照这个官方指南来修补 ruby​​ 1.8.6 (p399) 和 1.8.7 (p248) 的源代码,但都失败并显示以下消息:

patching file gc.c
Hunk #2 succeeded at 50 with fuzz 2 (offset 2 lines).
Hunk #3 succeeded at 87 with fuzz 2 (offset 6 lines).
Hunk #4 succeeded at 153 with fuzz 1 (offset 45 lines).
Hunk #5 succeeded at 409 with fuzz 2 (offset 274 lines).
Hunk #6 FAILED at 462.
Hunk #7 FAILED at 506.
Hunk #8 FAILED at 520.
Hunk #9 FAILED at 745.
Hunk #10 FAILED at 754.
Hunk #11 FAILED at 923.
Hunk #12 succeeded at 711 (offset 46 lines).
Hunk #13 succeeded at 730 (offset 46 lines).
Hunk #14 succeeded at 766 (offset 55 lines).
Hunk #15 succeeded at 1428 (offset 87 lines).
Hunk #16 succeeded at 1492 (offset 89 lines).
Hunk #17 FAILED at 1541.
Hunk #18 FAILED at 1551.
Hunk #19 succeeded at 1571 (offset 91 lines).
Hunk #20 succeeded at 1592 (offset 91 lines).
Hunk #21 succeeded at 1601 (offset 91 lines).
Hunk #22 succeeded at 1826 (offset 108 lines).
Hunk #23 succeeded at 1843 (offset 108 lines).
Hunk #24 succeeded at 1926 (offset 108 lines).
Hunk #25 succeeded at 2118 (offset 108 lines).
Hunk #26 succeeded at 2563 (offset 100 lines).
Hunk #27 succeeded at 2611 with fuzz 1 (offset 102 lines).
Hunk #28 succeeded at 2628 (offset 102 lines).
8 out of 28 hunks FAILED -- saving rejects to file gc.c.rej
patching file intern.h
Hunk #1 succeeded at 268 (offset 15 lines).

我也尝试使用 ruby​​-prof,但我总是收到错误“未初始化的常量 RubyProf::Test”。我不知道如何使用 gem "memory" 并且 "memprof" 和 "bleak_house" 都无法成功安装。

如果我得到一个修补的红宝石运行,我应该没问题。但是任何其他分析库类内存的可能性都是受欢迎的。感谢您的帮助!

4

2 回答 2

3

我也总是遇到 ruby​​-prof 的错误。profile_test_helper.rb 中有一个错误。如果您将第 17 行更改为“require 'ruby-prof/test'”,它应该可以工作。

http://github.com/jeremy/ruby-prof/issues#issue/5

于 2010-04-24T17:30:54.457 回答
0

如果您在 Windows 上,您可以尝试Ruby Memory Validator

您还可以尝试原始的Ruby 内存跟踪 API,其他一些 API 是从该 API 派生的。这适用于任何平台——但您必须自己构建 Ruby(并自己从 C/C++ 调用 API)。

于 2010-04-15T10:16:47.770 回答