2012-01-16 28 views
7

Tôi muốn sử dụng trình gỡ lỗi IDE của Rubymine để gỡ lỗi quy trình ruby ​​đang chạy trong trình bao lệnh, vì nó được sinh ra, ví dụ: bởi "rails console".Làm thế nào để đính kèm trình gỡ lỗi IDE Rubymine vào một quá trình shell?

Tôi đã nhận được số dặm lớn trong trình gỡ lỗi khi chạy máy chủ web (từ bên trong Rubymine) hoặc bộ kiểm tra (cũng chạy từ trong Rubymine).

Tuy nhiên, nếu quá trình này không được bắt đầu bởi Rubymine, tôi không biết cách đính kèm trình gỡ lỗi.

Tôi đang sử dụng phiên bản Rubymine 3.2.4 trên Ubuntu với Sun Java 1.6.0_26, Ruby REE 1.8.7, và đá quý debug mới nhất:

ruby-debug-base (0.10.4) 
ruby-debug-ide (0.4.17.beta8) 

Suy nghĩ?

+1

Tôi nghĩ tiêu đề câu hỏi của bạn thiếu một động từ. –

+0

@DavidGrayson cảm ơn - bạn nói đúng. Đã sửa. –

Trả lời

3

Sử dụng Gỡ lỗi từ xa Ruby loại cấu hình trong RubyMine. Tham khảo chính thức RubyMine documentation để biết chi tiết.

Về cơ bản bạn chạy các kịch bản như:

rdebug-ide --port <port number> -- script.rb 

và sau đó kết nối vào cổng xác định từ debugger RubyMine.

+0

Cảm ơn @CrazyCoder đã hoạt động, sau khi tôi đã sàng lọc thông qua sự nhầm lẫn của mình một chút: 1. Khởi chạy từ dòng lệnh lệnh rdebug-ide, ví dụ: để gỡ lỗi phiên trình bao 'rails console', nó sẽ đọc:' rdebug-ide --port 1234 - ray console'. 2. Trong RubyMine, sử dụng trình soạn thảo cấu hình chạy và tạo cấu hình Ruby Remote Debug mới bằng cách sử dụng cùng một cổng (ở đây 1234) và đường dẫn từ xa được đặt vào thư mục làm việc, sau đó nhấn nút gỡ lỗi và nó sẽ gây ra shell để khởi tạo, trong khi các nguồn có thể được breakpointed trong RubyMine. Nhiều đánh giá cao! –

5

Đây là cách bạn làm điều đó trong Rails:

Trước tiên, hãy chắc chắn rằng bạn có rdebug-ide cài đặt:

gem install ruby-debug-ide --platform=ruby 

Tiếp theo, chạy này trong bảng điều khiển

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console 

hoặc cho đường ray 4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console 

Hoặc, như @ChristopherWill đã đề cập below, bạn có thể chuyển tham số --host nếu bạn muốn gỡ lỗi máy chủ không phải cục bộ. (Đọc bình luận của mình dưới đây để biết trước)

Điều này sẽ chờ cho khách hàng gỡ lỗi từ xa kết nối.

  1. Bấm vào Run> Chỉnh sửa cấu hình trong RubyMine sau đó thêm một "Ruby từ xa Debug" dụ

  2. Sử dụng cổng tương tự như trên 6778 (Nếu bạn thay đổi một ở trên, chắc chắn các cổng phù hợp)

  3. gốc thư mục và thư mục gốc địa phương là như nhau,/dự án/your_rails_project

  4. Bấm Apply và gần gũi.

Tiếp theo, chọn cấu hình này từ danh sách ngay bên cạnh nút chạy và gỡ lỗi, sau đó nhấp vào nút gỡ lỗi. Cung cấp cho nó một vài giây và giao diện điều khiển sẽ chạy "rails console", nơi bạn từng chạy "rdebug-ide"

+0

Cảm ơn, nhưng điều đó thực sự không còn hoạt động trong Rails 3.2, bởi vì 'rails console' bây giờ sinh ra một quá trình riêng biệt, và trình gỡ rối IDE RubyMine không thể xử lý gỡ lỗi nhiều tiến trình, mặc dù chúng được cho là bao gồm trong bản phát hành tiếp theo của RubyMine . –

+0

Tôi đang gỡ lỗi một ứng dụng 3.2.2 đường ray (ruby 1.9.3p194) tại thời điểm này với RubyMine 4.0.3. Khi tôi thử chạy "boot.rb" (với rdebug-ide), quá trình đã bắt đầu và dừng lại ngay lập tức. Nó làm việc cho tôi khi tôi sử dụng lệnh trên. – Abdo

+0

Bạn có thể nhận được quy trình để chạy không có vấn đề, nhưng tôi không nghĩ rằng bạn có thể làm cho nó dừng lại ở điểm ngắt, vì thực thi 'rails' sinh ra một tiến trình nền không được giám sát. Và toàn bộ lý do của tôi để chạy nó trong trình gỡ lỗi ở nơi đầu tiên là thiết lập các điểm ngắt. http://youtrack.jetbrains.com/issue/RUBY-10967 –

2

Tôi thực sự muốn đăng nội dung nào đó ở đây rất khó để tìm câu trả lời hoàn chỉnh và tôi đã một thời gian rất dài để tìm ra.Có những người hỏi làm thế nào để đính kèm gỡ lỗi từ xa để resque công nhân và đây là cách thích hợp mà các công trình cuối cùng cho tôi. Bài viết này là cao trên tìm kiếm google và sẽ dễ dàng tìm thấy.

TỪ SHELL trên máy chủ (đối với tôi là máy tính xách tay của tôi) thực hiện điều này từ gốc trang web của bạn: rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 bin/rake resque: work QUEUE = *

trong RubyMine IDE cấu hình debug từ xa với: máy chủ từ xa: 127.0.0.1 từ xa cổng: 1236 từ xa thư mục gốc: đường dẫn trên máy chủ để gốc trang web Cảng địa phương: 26.166 đường dẫn gốc địa phương: đường dẫn trên của bạn máy trạm vào tập tin gốc của bạn, nơi bạn sẽ thiết lập các điểm ngắt (trong trường hợp của tôi tất cả các địa phương của nó để tất cả 1 con đường của nó và 1 bản sao của các tập tin)

Chạy máy chủ web của bạn như bình thường với: đường ray s

thiết lập điểm ngắt trong nhân viên Resque của bạn và cố gắng thực hiện bất cứ điều gì bạn cần trong trang web để đưa bạn đến điểm dừng đó.

1 lưu ý - có đá quý "lò xo" cho tôi lỗi và tôi phải nhận xét nó/gói.

Các vấn đề liên quan