Ngoài những gì đã được đề cập trong các câu trả lời trước - tức là tính năng thả khung của Eclipse trong chế độ gỡ lỗi , khởi động lại gỡ lỗi trước đó trong khung ngăn xếp (nhưng không hoàn nguyên dữ liệu toàn cầu / tĩnh) và trình gỡ lỗi Omniscient , hơi thô và không quá nhiều đang phát triển - có một vài công cụ dựa trên Eclipse có thể được sử dụng để "quay lại" trong thời gian (chạy):
JIVE mở rộng trình gỡ lỗi Java Eclipse với khả năng ghi lại các trạng thái của chương trình. Phối cảnh JIVE cung cấp một số sơ đồ UML hữu ích được cập nhật trong khi chương trình đang chạy. Các sơ đồ này cung cấp một cái nhìn tổng quan về trạng thái của ứng dụng (sơ đồ đối tượng) và dấu vết ngăn xếp (sơ đồ trình tự). Bạn có thể truy vấn dấu vết ghi nhớ và lùi lại và chuyển tiếp theo thời gian và xem các sơ đồ tương ứng.
Diver chỉ ghi lại các cuộc gọi phương thức và không thực sự ghi lại các trạng thái chương trình như JIVE. Mỗi sự kiện gọi phương thức được lưu trữ để phục hồi và phân tích sau này. Nó mở rộng các cấu hình Java Run và Debug chủ yếu để chỉ định các bộ lọc. Dấu vết có thể được tạm dừng / tiếp tục / lọc khi chạy. Sau khi được ghi lại, phối cảnh Diver có thể hiển thị nó trong sơ đồ trình tự tương tác.
JIVE và Diver là các dự án nguồn mở được phát hành từ nghiên cứu học thuật. Tính đến tháng 11 năm 2012 cả hai dự án đang hoạt động.
Chronon là một sản phẩm thương mại, nhưng họ có giấy phép miễn phí cho sinh viên và các dự án nguồn mở. Từ những gì được tuyên bố trên trang web của họ, nó có lẽ là máy ghi âm toàn diện nhất vì nó có thể phát lại lịch sử đã ghi, bước qua lại, cho phép khi họ nói gỡ lỗi thời gian. Ngoài ra Eclipse không cần thiết để ghi.
Tất cả các plugin này đều khá tham lam về tài nguyên, vì vậy tốt nhất là có một máy spec tốt và sử dụng tính năng lọc của chúng. Một yêu cầu nhất định để chạy chúng thành công là mở rộng không gian heap trong eclipse.ini .
Trong trường hợp của tôi, tôi đã cố gắng sử dụng JIVE và Diver để gỡ lỗi chương trình phân tích cú pháp XML nhưng luôn kết thúc nhật thực đóng băng do thiếu tài nguyên. Diver có thể khó chạy trên linux 64 bit , nó hoạt động trên Ubuntu 32 bit và có thể các bản phân phối 32 bit khác sử dụng các mẹo này . Diver hoạt động trên Windows, tốt hơn nữa là trên JVM Windows 64 bit + 64 bit nếu không bạn sẽ bị giới hạn trong không gian heap tối đa 1,3-1,6Gb trên các cửa sổ 32 bit . JIVE hoạt động tốt trên linux 64bit của tôi và dường như hoạt động tốt trên các nền tảng khác.