2011-11-12 52 views
5

Đây là một nguồn lâu dài của sự thất vọng, nhưng có lẽ có cái gì đó tôi đang mất tích. Nếu tôi đang ở giữa gỡ lỗi, và tôi muốn thoát khỏi trình gỡ lỗi và quay trở lại IRB hoặc Rails Console, "thoát" sẽ không hoạt động vì nó sẽ thoát IRB. "kết thúc" cũng có vẻ có tác dụng tương tự như tiếp tục. Sử dụng "xóa" để xóa các điểm ngắt và sau đó thử "tiếp tục" hoặc "kết thúc" không hoạt động.Làm cách nào để thoát khỏi trình gỡ rối mà không thoát khỏi phiên IRB của tôi?

Bất kỳ ý tưởng nào?

Trả lời

2

Điều này SO question có một vài gợi ý hay. Nó đề cập cụ thể với việc gỡ lỗi bên trong các vòng lặp. Một giải pháp tuyệt vời là đặt điểm ngắt bên ngoài vòng lặp, sau đó từ irb đặt nó bên trong vòng lặp và xóa nó theo cách thủ công khi bạn muốn.

Về cơ bản, hãy suy nghĩ một chút về nơi bạn đặt điểm ngắt.

Khác với điều đó dường như không có bất kỳ điều gì khác bạn có thể làm.

2

Ít nhất trong byebug, bạn có thể làm điều này:

eval return 

nào có tác dụng ròng của việc đánh giá một tuyên bố trở về từ chức năng hiện hành. Điều đó đôi khi hoạt động, tùy thuộc vào cách gọi ngăn xếp.

Bây giờ trong khi điều này không loại bỏ điểm ngắt hiện tại .... nếu bạn chỉ muốn kiểm soát lại, điều này sẽ làm điều đó trong hầu hết các trường hợp, tùy thuộc vào cách mã của bạn được cấu trúc.

Nó cũng rất hữu ích để làm được điều này khi tạo một mục debug trong mã của bạn:

byebug unless $continue 

Vì vậy, nếu vẫn thất bại trong một phiên gỡ lỗi, bạn luôn có thể chạy

$continue = true 
c 

Bây giờ này mở ra một tập hợp đầy đủ các khả năng.

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