27

在尝试为新项目运行 bundle 时,我遇到以下错误:

Installing debugger (1.2.2) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    C:/Ruby193/bin/ruby.exe extconf.rb
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
Makefile creation failed
**************************************************************************
No source for ruby-1.9.3-p362 provided with debugger-ruby_core_source gem.
**************************************************************************
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby193/bin/ruby
        --with-ruby-dir
        --without-ruby-dir
        --with-ruby-include
        --without-ruby-include=${ruby-dir}/include
        --with-ruby-lib
        --without-ruby-lib=${ruby-dir}/lib


Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.2.2 for inspection.
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.2.2/ext/ruby_debug/gem_make.out
An error occured while installing debugger (1.2.2), and Bundler cannot continue.
Make sure that `gem install debugger -v '1.2.2'` succeeds before bundling.

运行gem install debugger -v '1.2.2'产生相同的结果。

我检查了 mkmf.log 和 gem_make.out 文件的内容,它们没有什么意义,但如果需要,我会发布它们。

为什么这不起作用?

4

8 回答 8

42

我遇到了同样的问题。我试过:

bundle update debugger

我的 Gemfile 有这个:

gem 'debugger'

它奏效了,我不必更改 Gemfile。bundle 的输出显示如下

...

Installing debugger-ruby_core_source (1.1.6)

Installing debugger-linecache (1.1.2) with native extensions

Installing debugger (1.1.4) with native extensions

...

于 2012-12-31T13:10:55.767 回答
16

该问题的解决方案是简单地安装 debugger-ruby_core_source gem - eiel 在 github 上的 debugger-ruby_core_source 的分叉版本

经过多次试验和错误(就我而言),我只是

gem install debugger-ruby_core_source -v '1.1.6'

这会强制包含 p362 标头。然后当我运行时bundle,使用本机扩展成功构建了调试器,并且 bundler 继续它的快乐方式,我也是。

只是一个说明,虽然我已经简单地使用了几次,但在我真正找到简单的解决方案之前,我尝试了几件事并花了几个小时来让它工作。

于 2012-12-27T19:56:30.783 回答
10

也许它更好地使用捆绑更新,在这里工作得很好。

$ 捆绑更新调试器-ruby_core_source

考虑对所有调试器 gem 使用更新:

$ 捆绑更新调试器

于 2012-12-28T05:30:00.753 回答
6

显然,ruby 2.* 不支持调试器,所以请改用 byebug。 http://edgeguides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-byebug-gem

于 2014-12-12T19:13:41.413 回答
6

试了一阵子,终于放弃了,换成debugger.byebug

与撬一起使用:

gem 'pry', group: [:development, :test]
gem 'pry-byebug', group: [:development, :test]

binding.pry然后,您可以在要启动调试器的任何位置删除语句。

于 2015-04-20T14:44:56.420 回答
4

刚刚通过 RVM 安装了 Ruby 2.0.0 就遇到了这个问题。其他解决方案都不适合我。

如果二进制文件可用,RVM 将只安装它们,这样更快,但调试器也需要源代码

rvm reinstall 2.0.0 --disable-binary
于 2014-10-27T18:41:42.347 回答
1

如果您要使用 rvm,请确保您有正确的子版本来匹配 debase-ruby_core_source 或 debugger-ruby_core_source。

即在 ruby​​ 2.0.0 的 debase-ruby_core_source 中仅支持 p195、p247、p353、p451、p481、p576。以上不支持!

如果您的 ruby​​ 版本与提供的源不匹配。你将无法通过。(导致“找不到源错误!”)

------------debase-ruby_core_source 0.6.0 vm_Core support list ----------------
../usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p0/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p195/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p247/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p353/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p451/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p481/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p576/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.0-p0/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.1-p76/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.2-p95/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.3-p242/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.2.0-preview1/vm_core.h
于 2014-11-18T01:47:44.357 回答
0

这对我有用:

$ rvm use 2.0

或使其默认:

$ rvm use --default 2.0
于 2014-08-28T09:06:25.893 回答