重複の可能性:
Rails3.1およびRuby 1.9.3p125:Ruby-debug19は「シンボルが見つかりません:_Ruby_threadptr_data_type」でクラッシュします
コンソールへの印刷は終了です。20世紀に移行してデバッガーを使い始めたいと思います。しかし、Ruby-debugをインストールするにはどうすればよいですか? Ruby-debug19 gemをインストールしようとすると、Ruby-debug.c
のネイティブコンパイルが失敗します。他のSOの投稿を調べましたが、まだ答えが見つかりません...
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
現在のRubyのinclude
ディレクトリを指す--with-Ruby-include引数を使用してコマンドラインからgemをビルドしようとすると、同じエラーが発生します。
% 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-includeは何か違うことを期待していますか?現在のRuby-debug19は壊れていますか?
OPでの@MarcTalbotのコメントのおかげで、実用的なレシピを見つけました。
% 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 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
...
# 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 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ディストリビューションを使用していると思います)これには簡単な解決策があります。シェルでは、
Sudo apt-get install Ruby-dev1.9.3
注:1.9.2用にRuby-dev1.9.3
をインストールしたのでRuby-dev
というパッケージがあるかどうかは実際にはわかりません。これはRuby-dev1.9
でした(私はそう思います。それは少し前のことです。誰かが彼らが何であるかを知っているなら、コメントしてください)。
このパッケージは、インタープリターのC拡張機能に必要なヘッダー(Ruby.h
)をインストールします。