如何在ruby 1.9.3 / Rails中安装ruby-debug 3.2.1

可能重复:
Rails 3.1和Ruby 1.9.3p125:ruby-debug19仍然崩溃,“找不到符号:_ruby_threadptr_data_type”

我已完成打印到控制台 – 我想升级到20世纪并开始使用调试器! 但是如何安装ruby-debug? 当我尝试安装ruby-debug19 gem时, ruby-debug.c本机编译失败了。 我查看了其他SOpost,还没有找到答案……

  • 我使用的是Ruby 1.9.3-p0
  • 我正在使用Rails 3.2(当然还有Gemfile)
  • 我没有使用RVM – 相反,我有一个完整的沙盒目录,包含所有可执行文件,gem,源代码等。我将它称为$ SANDBOX下面的…

捆绑安装不起作用

如果我将ruby-debug19添加到我的Gemfile并进行bundle install ,那么在构建期间它会conflicting types for 'rb_iseq_compile_with_option'失败:

 # file: Gemfile ... group :development do gem 'ruby-debug19' end ... % bundle install ... Installing ruby-debug-base19 (0.11.25) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/r/Developer/Topaz/usr/bin/ruby extconf.rb ... ruby_debug.c:29: error: conflicting types for 'rb_iseq_compile_with_option' $SANDBOX/usr/include/ruby-1.9.1/ruby-1.9.3-p0/vm_core.h:505: error: previous declaration of 'rb_iseq_compile_with_option' was here ... make: *** [ruby_debug.o] Error 1 

从命令行创建gem install ruby​​-debug不起作用

如果我尝试从命令行构建gem,使用指向当前ruby的include目录的–with-ruby-include参数,我会得到同样的错误:

 % gem install ruby-debug19 -- --with-ruby-include=$SANDBOX/packages/ruby-1.9.3-p0 Building native extensions. This could take a while... ERROR: Error installing ruby-debug19: ERROR: Failed to build gem native extension. $SANDBOX/usr/bin/ruby extconf.rb --with-ruby-include=$SANDBOX/packages/ruby-1.9.3-p0/include 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:29: error: conflicting types for 'rb_iseq_compile_with_option' $SANDBOX/usr/include/ruby-1.9.1/ruby-1.9.3-p0/vm_core.h:505: error: previous declaration of 'rb_iseq_compile_with_option' was here 

我错过了什么?

是–with-ruby-包括期待不同的东西? 当前的ruby-debug19是否已损坏?

感谢@Marc Talbot在OP中的评论,我发现了一个工作方法。

从RubyForge下载linecache19和ruby-debug-base19:

 % curl -OL http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem % curl -OL http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem 

编译两个gem

 % gem install linecache19-0.5.13.gem Building native extensions. This could take a while... Successfully installed linecache19-0.5.13 1 gem installed ... % gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=$SANDBOX/packages/ruby-1.9.3-p0 Building native extensions. This could take a while... Successfully installed ruby-debug-base19-0.11.26 1 gem installed ... 

更新你的Gemfile

 # file: Gemfile ... group :development do gem 'linecache19', '0.5.13' gem 'ruby-debug-base19', '0.11.26' gem 'ruby-debug19', :require => 'ruby-debug' end 

bundle安装并测试调试器

 % bundle install Fetching source index for http://rubygems.org/ ... Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. % irb irb(main):001:0> require 'ruby-debug' => true irb(main):002:0> debugger $SANDBOX/usr/lib/ruby/1.9.1/irb/context.rb:166 @last_value = value (rdb:1) p 'hooray' "hooray" 

希望这会有助于其他人。

(从您的日志中,我假设您在Linux上,特别是Debian发行版)有一个简单的解决方案:在shell中,

 sudo apt-get install ruby-dev1.9.3 

注意:我实际上并不知道是否有一个名为ruby-dev1.9.3的软件包,因为我安装了ruby-dev for 1.9.2,这是ruby-dev1.9 (我想。那是不久前的。如果有人的话知道他们是什么,请评论)。

这个包安装了解释器所需的C扩展所需的头文件( ruby.h )。