एक sysadmin के रूप में मुझे कभी-कभी स्थितियों का सामना करना पड़ता है, जहां एक कार्यक्रम असामान्य रूप से व्यवहार करता है, जबकि बिल्कुल भी त्रुटियां पैदा नहीं करता है या बकवास त्रुटि-संदेश बनाता है।
अतीत में - जावा आने से पहले - दो प्रति-उपाय थे:
- अगर और कुछ नहीं मदद करता है - RTFM ;;;
- अगर 1. भी मदद नहीं करता है - सिस्टम-कॉल को ट्रेस करें और देखें कि क्या हो रहा है
मैं आमतौर पर strace -f
लिनक्स के साथ इस कार्य के लिए उपयोग करता हूं (अन्य ओएस में समान ट्रेस-टूल हैं)। अब जबकि यह आम तौर पर किसी भी पुराने जमाने के कार्यक्रम के लिए अच्छा काम करता है, एक जावा -प्रोसेस पर ऐसा करने पर ट्रेस बहुत फजी हो जाता है । किसी भी वास्तविक कार्रवाई के लिए अविश्वसनीय रूप से असंबंधित इतने सारे सिस्टम-कॉल हैं, कि इस तरह के डंप के माध्यम से खोज करना भयानक है।
क्या ऐसा करने के बेहतर तरीके हैं (यदि स्रोत-कोड उपलब्ध नहीं है)?