2012-12-27 9 views
24

Trong khi cố gắng chạy bó cho một dự án mới, tôi đang gặp phải các lỗi sau:Lỗi khi cài đặt chương trình gỡ rối: Không thể xây dựng ngọc mở rộng bản địa với ruby-1.9.3-p362

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. 

Chạy gem install debugger -v '1.2.2' sản xuất cùng các kết quả.

Tôi đã kiểm tra nội dung của tệp mkmf.log và gem_make.out và chúng có ý nghĩa rất ít, nhưng nếu được yêu cầu, tôi sẽ đăng chúng.

Tại sao tính năng này không hoạt động?

+4

Nếu 'ruby –' cung cấp cho bạn' 2.x', hãy cân nhắc sử dụng [byebug] (https://github.com/deivid-rodriguez/byebug) để thay thế (như [đã nêu trong tài liệu chính thức] (https://github.com/cldwalker/debugger#known-issues) * chỉ hỗ trợ 1.9.2 và 1.9.3 *). – Lucio

+1

@Lucio, byebug "yêu cầu phiên bản 2.2.x" trở lên. Rõ ràng, ruby ​​2.0 người dùng được bỏ ra trong cái lạnh hoàn toàn cho một trình gỡ lỗi hữu ích (mà pry chắc chắn là không). – Otheus

Trả lời

41

Tôi chạy vào cùng một vấn đề. Tôi cố gắng:

bundle update debugger

My Gemfile thăm này:

gem 'debugger'

Và nó làm việc, tôi không cần phải thay đổi Gemfile. Sản lượng bó cho thấy một cái gì đó như thế này

...

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

...

+0

Tôi sẽ thử lần sau khi gặp lỗi tương tự. Có vẻ như tôi đã đi một chặng đường dài để đến đó ...;) – erroric

+0

Cái gì! @ # $%^... Nó hoạt động như thế nào? ;) Có sử dụng phiên bản mới của đá quý không? –

+1

Tại sao tôi nhận được trình gỡ lỗi cập nhật bó của Apple $ Không thể tìm thấy lỗi 'debugger'.' của đá quý? – Gank

15

Giải pháp cho vấn đề là chỉ cần cài đặt đá quý trình gỡ lỗi-ruby_core_source - forked version of debugger-ruby_core_source by eiel on github.

Sau nhiều thử và sai (trên một phần của tôi), tôi chỉ đơn giản

gem install debugger-ruby_core_source -v '1.1.6' 

mà buộc sự bao gồm các tiêu đề p362. Sau đó, khi tôi chạy bundle, trình gỡ lỗi được xây dựng thành công với tiện ích mở rộng gốc và bundler tiếp tục theo cách vui vẻ và như vậy là I.

Chỉ cần một lưu ý, trong khi tôi đã sử dụng nhiều lần, tôi đã thử một vài điều và dành vài giờ để làm việc này trước khi tôi thực sự đến giải pháp đơn giản.

+0

Bravo! 'gem install debugger-ruby_core_source' cho phép tôi tiếp tục theo cách' bundle'ing của tôi. :-) – chadoh

10

Có thể sử dụng tốt hơn gói cập nhật, hoạt động tốt ở đây.

$ bundle update debugger-ruby_core_source

Cân nhắc sử dụng cập nhật cho tất cả các đá quý debugger:

$ bundle update debugger

0

mà làm việc cho tôi:

$ rvm use 2.0 

hoặc để làm cho nó mặc định:

$ rvm use --default 2.0 
4

Chỉ cần chạy vào này với Ruby 2.0.0 được cài đặt thông qua RVM. Không có giải pháp nào khác phù hợp với tôi.

RVM sẽ chỉ cần cài đặt với những chương trình nếu họ có sẵn, mà là nhanh hơn, nhưng debugger cần nguồn quá

rvm reinstall 2.0.0 --disable-binary 
+0

cảm ơn người đàn ông ... như bạn nói" Không có giải pháp nào khác phù hợp với tôi " –

+0

Hmm. Đã không làm việc ở đây. – cevaris

1

nếu bạn sẽ sử dụng RVM, chắc chắn rằng bạn có phiên bản tiểu ngay để phù hợp với nhục -ruby_core_source ordebugger-ruby_core_source.

tức là trong debase-ruby_core_source cho ruby ​​2.0.0 chỉ hỗ trợ p195, p247, p353, p451, p481, p576. ở trên không được hỗ trợ!

nếu phiên bản ruby ​​của bạn không khớp với nguồn được cung cấp. bạn sẽ không thể vượt qua được. (mà nguyên nhân "không thể tìm ra lỗi nguồn!")

------------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 
5

Sau khi thử một lúc, cuối cùng tôi đã từ bỏ và thay thế debugger bằng byebug.

Để sử dụng với người tò mò:

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

Sau đó bạn có thể thả một tuyên bố binding.pry bất cứ nơi nào bạn muốn bắt đầu các chương trình gỡ rối.