Vì có thể có rất nhiều Phương pháp ma bên trong đá quý ruby, tôi không nghĩ rằng nên nghiên cứu cơ chế bên trong của đá quý ruby chỉ bằng đọc mã nguồn của nó tĩnh. Có cách nào để đính kèm các tập tin mã nguồn của một phần đá quý thứ ba để một quá trình ruby đang chạy để gỡ lỗi để tôi có thể thiết lập điểm break và xem cách mọi thứ hoạt động tự động?
BTW, tôi đã cố gắng điều hướng đến tệp nguồn của gem thứ ba trong RubyMine bằng cách nhấp vào menu ngữ cảnh "Go To-> Implementations" của câu lệnh 'require' hoặc biểu tượng khác của gem phần ba (Ví dụ: require 'watir'
), không thành công. Nó là bình thường đối với một IDE của một ngôn ngữ đánh máy năng động như Ruby để không điều hướng biểu tượng?Cách tốt nhất để gỡ lỗi đá quý của bên thứ ba trong ruby
Trả lời
Tôi rất thích biết nếu có một cách tốt hơn để làm điều này, nhưng làm thế nào tôi thường làm điều đó là:
- Thêm đá quý ruby-debug để Gemfile của bạn (hoặc ruby-debug19 nếu bạn trên Ruby 1.9.2)
- Tìm Đá quý bằng cách thực hiện
bundle show gemname
. Tôi đang trên một máy Mac vì vậy tôi thường ống này để pbcopy vì vậy nó được sao chép vào clipboard của tôi.bundle show rails | pbcopy
- Mở thư mục đá quý trong trình chỉnh sửa yêu thích của bạn.
mvim /path/to/gem/directory
- Điều hướng đến tệp và dòng nơi bạn muốn đặt điểm ngắt * và chèn
debugger
phía trên dòng đang đề cập. - Nạp lại trang, chạy thử nghiệm, hoặc làm bất cứ điều bạn sẽ để tải tệp Gem để thực hiện
- Khi thực hiện dừng lại ở debugger, bạn có thể kiểm tra các biến (
p variable_name
), và đường di chuyển bằng phù hợp với ruby debugger commands.
* Biết được nơi để đặt breakpoint thể mất một số hiểu biết về mã, nhưng bạn nên bắt đầu trong lib/gemname.rb
Trong ngôn ngữ mà thay đổi mã trong thời gian chạy, như Ruby, khó có thể dự đoán chính xác 100% nguồn gốc của biểu tượng, biện pháp, vv
tôi đối phó với rất nhiều đá quý bên thứ ba mà cần phân tích mã nguồn và Tôi thấy rằng công cụ tốt nhất cho công việc này là Netbeas + đó là các plugin Ruby và Rails.
- cho phép chuyển hướng tốt trong mã đá quý phụ thuộc nguồn (không giống như lựa chọn thay thế khác)
- breakpoint thị giác và gỡ lỗi mà thực sự làm việc (với dấu vết và tất cả) **
** nó có một số trục trặc với các cuộc gọi phương thức trong các khối mã được tạo ra (như mỗi {}) nhưng tôi đã học cách xử lý các số
Những gì tôi thường làm là đặt điểm ngắt và phân tích mã khi chạy.
tôi sẽ tránh chỉnh sửa các tập tin Gem như đề xuất trong câu trả lời chấp nhận hiện nay. Thay vào đó, hãy đặt lệnh debugger
vào một trong các tệp ứng dụng của bạn và sử dụng lệnh break
để đặt điểm ngắt trong đá quý. Tôi đang sử dụng rvm
với một gemset
vì vậy đây là cách tôi làm điều đó:
break /Users/chris/.rvm/gems/[email protected]<gemset>/gems/<gem_name>-<gem-version>/<path_to_file>:<line_number>
Câu trả lời được chấp nhận có ảnh hưởng đến các ứng dụng khác trên cùng một máy nếu chúng đang sử dụng cùng một Gem không? Nếu vậy, có vẻ như giải pháp này sẽ tránh được vấn đề đó. – flyingL123
Có. Đó là toàn bộ vấn đề. Trừ khi bạn ra khỏi các tùy chọn, tôi sẽ tránh chỉnh sửa các tệp Gem bằng mọi giá trừ khi bạn sẵn sàng chia chúng –
- 1. Đá quý YouTube tốt nhất cho Ruby?
- 2. Gỡ lỗi DLL của bên thứ ba trong Visual Studio?
- 3. Nguồn đá quý ruby tốt?
- 4. của Ruby cài đặt đá quý lỗi
- 5. Ruby on Rails: Cách tốt nhất để kiểm tra cuộc gọi không thành công tới API của bên thứ ba
- 6. Cách tốt nhất để tích hợp thư viện của bên thứ ba trong Android studio
- 7. Resharper gỡ lỗi một bên thứ ba decompiled dll
- 8. Đá quý ruby của tôi ở đâu?
- 9. Cách tiếp cận tốt nhất Để bao gồm các tệp của bên thứ ba với Symfony2
- 10. Yêu cầu một viên đá quý bên trong nhiệm vụ cào của đá quý
- 11. đá quý amazon tốt nhất s3 với đường ray 3.1.3
- 12. gỡ cài đặt đá quý sass
- 13. RVM: Gỡ cài đặt tất cả đá quý của một viên đá quý
- 14. Cách tốt nhất để giả lập đối tượng bên thứ 3 bằng ruby là gì?
- 15. Nơi tốt nhất để đặt các tệp DLL của bên thứ ba để tham chiếu
- 16. Đá quý toán học Ruby
- 17. Đá quý Ruby trong các tập lệnh ruby độc lập
- 18. Đá quý tốt nhất để làm việc với ncurses và ruby
- 19. Ruby, Qt và các vật dụng của bên thứ ba
- 20. Lỗi quyền đối với đá quý RVM
- 21. Xác minh phiên bản của một viên đá quý có gói từ bên trong Ruby
- 22. Đá quý thống kê Ruby
- 23. Làm cách nào để gỡ cài đặt ruby và đá quý bằng RVM?
- 24. Ruby "Mail" tài liệu đá quý
- 25. Rails 3.1- lỗi đá quý therubyracer
- 26. Lỗi đá quý Ruby khi cài đặt tài liệu ri
- 27. RVM xem đá quý trong đá quý
- 28. Lỗi lạ khi cài đặt viên đá quý của tôi
- 29. Xóa/Gỡ cài đặt phiên bản cũ của đá quý ruby
- 30. đá quý tốt nhất cho hệ thống đăng nhập
Cảm ơn. Điều này làm việc tuyệt vời. FWIW, tôi đã sử dụng các hướng dẫn này với [Pry] (https: // rubygems.org/gems/pry) thay vì ruby-debug và nó cũng hoạt động. –
Điều này có làm gián đoạn các ứng dụng khác trên cùng một máy nếu chúng đang sử dụng cùng một Gem không? – flyingL123
@ flyingL123, tôi cho rằng nó sẽ làm gián đoạn những người khác, nếu họ chạy trong chế độ gỡ lỗi như ứng dụng của bạn. – parzival