कवरेज और प्रोफाइलिंग टूल ज्यादातर दो तकनीकों को नियोजित करते हैं: विभिन्न थ्रेड या वाद्य यंत्र के लिए जेवीएम समय-समय पर मतदान के लिए जेवीएम जेवीएम प्रासंगिक डेटा का।
जावा भाषा अपने आप में कोई सीधा एपीआई समर्थन नहीं है, लेकिन वहाँ कई उपकरण आप दोहन कर सकते हैं कर रहे हैं:
- आप धागा उदासीनता पकड़ कर सकते हैं, jstack या इसी तरह के उपकरण का उपयोग कर, उन्हें toa फ़ाइल सहेजें, उसके विश्लेषण (या विश्लेषण करने के लिए एक स्क्रिप्ट/प्रोग्राम लिखें), यह मतदान है।
- अपने आवेदन के बाइटकोड को संशोधित करने के लिए एएसएम या बीसीईएल का उपयोग करें, यह धक्का है लेकिन करना बहुत मुश्किल है।
- भार समय बुनाई एजेंट का उपयोग करके AspectJ का उपयोग करें, यह सक्षम करने के लिए यह केवल एक कमांड लाइन पैरामीटर है।
समाधान 3 बहुत आसान, साफ और बहुमुखी है।
रनटाइम पर मुद्रित करने के लिए, जो कुछ भी विधि एक विधि के निष्पादन के परिणाम के रूप में कहा जाता है एक सरल ट्रेसिंग पहलू, करने के लिए कुछ इसी तरह है:
public aspect TraceCalls {
pointcut aCall : call(* *(..));
pointcut inside : cflow(execution(public MyClass.MyMethod(..)));
before() : aCall() && inside() {
System.out.println(thisJoinPoint);
}
}
जाहिर है, आप और अधिक डेटा का उपयोग कर सकते हैं, प्रिंट उन्हें एक फ़ाइल में, और फॉर्मेट आदि ...
(कृपया ध्यान दें कि मैं इस कोड यहाँ लिखा था, तो यह वाक्यविन्यास त्रुटियों से भरा हो सकता है)
स्रोत
2011-08-30 00:28:20