Gỡ lỗi trong ruby ​​1.9


90

Các bạn dùng gì để gỡ lỗi trong ruby ​​1.9? rdebug dường như không tương thích .. có gì ngoài đó không?


10
Bỏ qua câu trả lời đầu tiên; ruby-debug19bây giờ đã lỗi thời.
Rob Howard

Câu trả lời:


50

Lưu ý: câu trả lời này đúng nhưng hiện đã lỗi thời. Xem câu trả lời chính xác dưới đây. TL; DR: sử dụng 'trình gỡ lỗi' ngay bây giờ.

ruby-debug hiện có sẵn với Ruby 1.9.x. Xem http://www.github.com/mark-moseley

Để cài đặt (sử dụng gem trên bản cài đặt Ruby 1.9):

gem install ruby-debug19

(có lẽ với 'sudo' cần thiết ở phía trước nó).


Tôi đã cố gắng lướt qua và nó không hoạt động. Cần thêm thời gian để xem xét điều này.
Mark Moseley

ruby-debug-ide đang làm việc bây giờ - bạn có thể lấy viên ngọc mới tại cloud.github.com/downloads/mark-moseley/ruby-debug/...
Đánh dấu Moseley

Đây là một tin tức tuyệt vời! Cảm ơn bạn!
andi

Làm tốt lắm :) nhưng bạn có thể tạo một fatgem (chứa cả phiên bản gỡ lỗi ruby ​​1,8 và 1,9) để chúng tôi không phải nhớ làm rubydebbug19 không? :)
Horseyguy

4
Có vẻ không công bằng khi từ chối điều này chỉ vì thời gian trôi qua đã khiến nó trở thành câu trả lời sai. SO cần một số cách xử lý các trường hợp sử dụng như vậy, để cho phép câu trả lời đúng mới trở thành câu trả lời đầu tiên được liệt kê, mà không phạt tác giả của các câu trả lời cũ không còn hữu ích cho bất kỳ ai nữa.
iconoclast

167

ruby-debug19không được duy trì nữa. Tất cả các câu trả lời khác đã lỗi thời.

Nhưng có một giải pháp thay thế:

debugger để giải cứu!

Đặt cái này vào Gemfile:

gem 'debugger', group: [:development, :test]

Nó chỉ hoạt động. - Và nó được bao gồm trong Gemfile rails kể từ 3.2. Một cái gì đó để thay thế ruby-debug19. Nó có cùng chức năng và được bảo trì tích cực.


1
Hoạt động tốt. Tốt hơn nhiều so với cài đặt ruby-debug bằng tay. Cảm ơn.
manu_v

5
Điều này thực sự cần được chuyển lên như câu trả lời hàng đầu.
Matt Zukowski

2
Vâng, thực sự câu trả lời này phải là câu trả lời hàng đầu.
Nazar Hussain

Và làm thế nào về nơi điều này thực sự đi trong Gemfile.
Giàn khoan

Không quan trọng. Đặt nó bất cứ nơi nào bạn thích, chỉ không bên trong một khối nhóm (Không phải trong group :development do ... endhoặc tương tự), bởi vì nó đã chứa một nhóm.
iblue

70

CẬP NHẬT CHO RUBY 2.0+ và SAU ĐÂY

byebug là trình gỡ lỗi hiện được khuyến nghị cho Ruby 2.0+

Vấn đề này đã được ghi lại ở đây và cldwalker, tác giả của trình gỡ lỗi, lưu ý rằng trình gỡ lỗi sẽ được áp dụng cho Ruby 1.9.2 và 1.9.3.

CẬP NHẬT 2

Đúng là ruby-debug không được duy trì tích cực ngay cả khi tôi không thể tìm thấy bất kỳ nơi nào không được duy trì nữa.

Bạn có thể sử dụng viên ngọc trình gỡ lỗi mới nếu bạn cần trợ giúp để bắt đầu với viên ngọc mới mà bạn có thể thấy Ryan Bates rails .

Trong Gemfile của bạn đặt:

gem 'debugger', group: [:development, :test]

Sau đó, bạn có thể thêm một điểm ngắt vào bất kỳ đâu trong mã của mình bằng cách sử dụng debuggertừ khóa.

BẠN VẪN CÓ THỂ SỬ DỤNG

linecache19 và ruby-debug-base19 với:

bash <<(curl -L https://raw.github.com/gist/1333785 )

CÂU TRẢ LỜI CŨ

Chỉ là một bổ sung về điều này với rvm, ruby ​​1.9.1-p378. Câu chuyện có thật là ngay cả khi ruby-debug đã sẵn sàng 1.9.x, linecache-0.43 thì không. Giải pháp là cài đặt:

gem install ruby-debug19

Điều này giải quyết vấn đề cho tôi.

CẬP NHẬT CŨ

Nếu bạn đang gặp sự cố với việc đặt gỡ lỗi ruby ​​1.9.2 và Rails 3:

gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"

Trong Gemfile của bạn và thực hiện một

bundle install

Sẽ làm cho bạn một người gỡ lỗi vui vẻ một lần nữa.


1
Cảm ơn, với tôi đó là câu trả lời thích hợp hơn. Nhưng có lẽ điều này là do bạn đã trả lời gần một năm sau đó và mọi thứ đã thay đổi theo chiều hướng tốt.
đánh dấu

3

Một số điều bạn có thể thử

1) chạy nó với trình gỡ lỗi bình thường của ruby ​​-rdebug [1] loại chậm

2) chạy nó với đá quý unroller [hơi hôi, chậm]

3) sử dụng nhiều câu lệnh in nhanh, loại ít nội tâm hơn có thể

4) thả xuống lời nhắc irb và chạy một số mã từ đó.

bạn có thể liệt kê mã bằng cách tạo “lời nhắc thả tới irb” của riêng bạn, trong đó liệt kê mã xung quanh chính nó [sử dụng người gọi để khám phá nơi bạn ở] sau đó thả xuống lời nhắc irb bình thường.

5) có thể jruby ở chế độ 1.9 compat có một trình gỡ lỗi?

[1] http://beaver.net/rdebug/index-0.html


3

Nếu bạn vẫn gặp sự cố sau khi cài đặt ruby-debug19, hãy thử cập nhật ruby-debug-base19. Tôi đã gặp lỗi và không thể chạy WEBrick ở chế độ gỡ lỗi cho đến khi tôi làm điều đó.

gem update ruby-debug-base19

Ồ, và cảm ơn ông Moseley vì tất cả công việc khó khăn của bạn!


2

Xem câu trả lời của tôi tại đây: Ruby-debug không hoạt động - Stack Overflow

Đó là về việc gỡ lỗi Ruby hoạt động với thiết lập sau

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (Bản dựng 3.0.8.201201201658)
  • Sử dụng rvm, trong thư mục làm việc dự án của tôi, tôi có .rvmrc nêu rõ:

    rvm use ruby-1.9.3-p0@mygemset

Tôi hi vọng cái này giúp được!

- Freddy


2

Tôi đã sử dụng theo dõi và nó hoạt động rất tốt cho tôi:

gem 'debugger', group: [: development,: test]

ruby 1.9.3p194 (2012-04-20 bản sửa đổi 35410) [x86_64-linux] rails 3.2.8


0

Netbeans là một IDE tốt cho RoR. Trình gỡ lỗi tốt quá.


1
Hãy sửa tôi nếu tôi sai, nhưng tôi không tin rằng trình gỡ lỗi hoạt động cho Ruby 1.9.1 (triển khai C). Ít nhất, tôi đã không thành công trong việc làm cho nó hoạt động.
JP Richardson

0

Phiên bản ruby ​​1.9.1-p243 đã ra mắt và ruby-debug-ide phù hợp cũng đang hoạt động bình thường. Cài đặt ruby-debug-ide bằng lệnh sau:

cài đặt đá quý ruby-debug-ide

Thao tác này sẽ cài đặt các viên ngọc ruby-debug-base19 và ruby-debug-ide. Nhưng trước khi thực hiện điều này, hãy đảm bảo rằng bạn cài đặt mingw thành công bằng cách làm theo các tài liệu Bộ phát triển có sẵn từ RubyForge .


0

Các tính năng mới nhất có trong đá quý ruby-debug-ide19.


0

Có rất nhiều sự lựa chọn, tùy thuộc vào nhu cầu của bạn.

Tôi sử dụng pry-move vì tôi có thể "nhìn lại" những gì đã xảy ra bên trong lệnh trước đó bằng cách thực hiện lại chúng ở chế độ gỡ lỗi ngay tại chỗ.


-1

không ai sử dụng: ruby ​​-rdebug script.rb

thì bạn có thể sử dụng: b script.rb: ## (trong đó ## là số dòng của một lệnh ruby ​​hợp lệ) nếu không, bạn có thể đang ở giữa các rubyge hoặc một trong các đoạn mã bạn yêu cầu.

Sau đó, bạn chỉ cần đặt điểm ngắt tiếp theo là b: ##

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.