【问题标题】:How do I install ruby-debug-base19x on Mountain Lion for IntelliJ?如何在 Mountain Lion 上为 IntelliJ 安装 ruby​​-debug-base19x?
【发布时间】:2012-07-31 03:35:41
【问题描述】:

我刚刚升级到 Mountain Lion,IntelliJ 10 ruby​​-debugger 似乎不再工作。我收到以下错误,但无法真正解释如何解决此问题,知道吗?

/Users/kamilski81/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for rb_method_entry_t.body in method.h... no
checking for vm_core.h... no
/Users/kamilski81/.rvm/gems/ruby-1.9.3-p194@sc/gems/ruby_core_source-0.1.5/lib/ruby_core_source.rb:39: Use RbConfig instead of obsolete and deprecated Config.
checking for rb_method_entry_t.body in method.h... no
checking for vm_core.h... yes
checking for iseq.h... yes
checking for insns.inc... yes
checking for insns_info.inc... yes
checking for eval_intern.h... yes
creating Makefile

make
compiling breakpoint.c
compiling ruby_debug.c
ruby_debug.c:24:19: error: conflicting types for 'rb_iseq_compile_with_option'
RUBY_EXTERN VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE line, VALUE opt); /* from iseq.c */
                  ^
/Users/kamilski81/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby-1.9.3-p194/vm_core.h:505:7: note: previous declaration is here
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
      ^
ruby_debug.c:474:60: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    return rb_funcall2(context, idAtLine, RARRAY_LEN(args) - 1, RARRAY_PTR(args) + 1);
           ~~~~~~~~~~~                    ~~~~~~~~~~~~~~~~~^~~
ruby_debug.c:538:13: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    s_len = RSTRING_LEN(source);
            ^~~~~~~~~~~~~~~~~~~
/Users/kamilski81/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:674:6: note: expanded from macro 'RSTRING_LEN'
     RSTRING_EMBED_LEN(str) : \
     ^
/Users/kamilski81/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:670:6: note: expanded from macro 'RSTRING_EMBED_LEN'
     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ruby_debug.c:538:13: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    s_len = RSTRING_LEN(source);
            ^~~~~~~~~~~~~~~~~~~
/Users/kamilski81/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:675:28: note: expanded from macro 'RSTRING_LEN'
     RSTRING(str)->as.heap.len)
                           ^
ruby_debug.c:539:13: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
    f_len = strlen(file);
          ~ ^~~~~~~~~~~~
ruby_debug.c:684:98: error: too few arguments to function call, expected 5, have 4
        rb_str_new_cstr("begin\nend"), rb_str_new_cstr("(exception catcher)"), INT2FIX(1), Qfalse);
                                                                                                 ^
/Users/kamilski81/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby-1.9.3-p194/vm_core.h:505:1: note: 'rb_iseq_compile_with_option' declared here
VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
^
ruby_debug.c:1695:10: warning: implicit conversion loses integer precision: 'VALUE' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  return level;
  ~~~~~~ ^~~~~
ruby_debug.c:2310:37: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
        int frames = jump_cfp - cfp + 2;
            ~~~~~~   ~~~~~~~~~~~~~~~^~~
ruby_debug.c:2378:53: warning: comparison of integers of different signs: 'long' and 'unsigned long' [-Wsign-compare]
            if ((cfp->pc - cfp->iseq->iseq_encoded) >= (cfp->iseq->iseq_size - 1))
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^   ~~~~~~~~~~~~~~~~~~~~~~~~
ruby_debug.c:2392:27: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
            for (i = 0; i < cfp->iseq->insn_info_size; i++)
                        ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~
8 warnings and 2 errors generated.
make: *** [ruby_debug.o] Error 1

【问题讨论】:

    标签: ruby intellij-idea rubymine ruby-debug


    【解决方案1】:

    所以,我发现问题的根源是 linecache19,你需要 -v 0.5.13 才能让它工作。

    gem install ruby-debug-base19x -v 0.11.30.pre10
    gem install ruby-debug-ide -v 0.4.17.beta14
    curl -L "http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem" -o /tmp/linecache19-0.5.13.gem
    gem install /tmp/linecache19-0.5.13.gem 
    

    不过,我的猜测是 linecache19 -v 0.5.13 需要从http://rubyforge.org/frs/?group_id=8883&release_id=46302下载

    祝你好运。

    【讨论】:

    • 完美运行!!我不知道@#$% 你是如何找到版本的确切组合的,但你为我节省了很多时间和头痛。再次感谢。
    • 谢谢老兄,你真棒。我已经发布了一个替换你最后一个命令的答案。
    • 你在开玩笑吗??????我花了 2 个小时在这上面,你想出了神奇的组合?
    • $ curl -L "rubyforge.org/frs/?group_id=8883&release_id=46302" -o /tmp/linecache19-0.5.13.gem curl: (7) 连接到 ruby​​forge.org:80 失败;连接被拒绝 $ curl -L "rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem" -o /tmp/linecache19-0.5.13.gem curl: (7) 连接到 ruby​​forge.org:80 失败;连接被拒绝
    【解决方案2】:

    我使用的是 RubyMine,所以情况可能略有不同,但应该是一样的..

    你需要通过gem install安装两个gem:

    archive-tar-minitar
    ruby_core_source
    

    然后,在 IDE 中运行调试器。它应该自己构建必要的宝石。如果遇到错误,则可能是缺少某些 gem,因此请仔细阅读错误并通过 gem install 安装它们。

    我尝试使用带有 RubyMine 4.5 和我的应用程序的新安装的 Mountain Lion,它可以正常工作。 (我使用的是 Xcode 4.4)

    【讨论】:

    • 我在 RubyMine 中运行它并且它工作,然后在 IntelliJ 10.4 中尝试它并再次开始工作。我认为 RubyMine 可能也做了一些补丁......
    【解决方案3】:

    我使用了@Kamilski81 答案中的命令,但最后一个不起作用。以下是他的命令,最后一个替换为下载和安装命令:

    gem install ruby-debug-base19x -v 0.11.30.pre10
    gem install ruby-debug-ide -v 0.4.17.beta14
    curl -L "http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem" -o /tmp/linecache19-0.5.13.gem
    gem install /tmp/linecache19-0.5.13.gem 
    

    【讨论】:

    • 那个 curl 对我来说失败了“连接被拒绝”
    【解决方案4】:

    Re: linecache19 - 我提交了https://github.com/robmathews/linecache19-0.5.13/issues/1 - 所以你现在可以得到它: $ gem install linecache19-patched Fetching: linecache19-patched-0.5.13.gem (100%) Successfully installed linecache19-patched-0.5.13 Couldn't find file to include 'VERSION' from lib/linecache19.rb Installing ri documentation for linecache19-patched-0.5.13 1 gem installed $

    【讨论】:

      【解决方案5】:

      使用debugger gem。

      fork 的原因,引用debugger readme

      • ruby-debug19 维护者未维护:
        • 尽管有 ruby​​ 内核的补丁,但在 2 年内没有任何 gem 发布! - 2009 年 9 月 1 日。
        • 已忽略发布已知工作 1.9.3 版本的请求。
        • 不响应 ruby​​forge 问题,也没有打开 github 问题。
      • 当前安装很痛苦。需要manually downloading gems from rubyforge 并使用编译器标志安装或recompiling ruby
      • 我们需要一个体面的 ruby​​ 调试器来处理未来的 ruby​​!

      我使用了新的调试器 gem,几乎没有问题。

      【讨论】:

        猜你喜欢
        • 2012-06-19
        • 1970-01-01
        • 2012-07-28
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-13
        • 2012-10-11
        相关资源
        最近更新 更多