Là một sysadmin đôi khi tôi phải đối mặt với các tình huống, trong đó một chương trình hoạt động bất thường, trong khi không tạo ra lỗi nào cả hoặc tạo ra các thông báo lỗi vô nghĩa.
Trong quá khứ - trước khi java xuất hiện - có hai biện pháp đối phó:
- Nếu không có gì khác giúp - RTFM ;-)
- Nếu thậm chí 1. không giúp - theo dõi các cuộc gọi hệ thống và xem điều gì đang xảy ra
Tôi thường sử dụng strace -f
cho nhiệm vụ này với Linux (hệ điều hành khác có các công cụ theo dõi tương tự). Bây giờ trong khi điều này thường hoạt động tốt cho bất kỳ chương trình lỗi thời nào, dấu vết sẽ rất mờ khi thực hiện tương tự trên một quy trình java . Có rất nhiều cuộc gọi hệ thống dường như không liên quan đến bất kỳ hành động thực tế nào, thật tệ khi tìm kiếm thông qua một bãi rác như vậy.
Có cách nào tốt hơn để làm điều đó (nếu mã nguồn không có sẵn)?