2012-02-12 8 views
16

कभी-कभी जब मैं एक कोड की जांच करता हूं जिसे मैंने नहीं लिखा था, तो मैंने डीबग मोड में ग्रहण लॉन्च किया और प्रोग्राम को समझने के लिए आंकड़ों का उपयोग किया। उदाहरण के लिए, अगर वे डीबी से लिया गया आइटम n रहे हैं, यह पता करने के लिए दिलचस्प वहाँ एक सेवा में n संसाधित वस्तुओं रहे हैं कि हो सकता है, आदिब्रेकपॉइंट हिट्स को डिबगिंग और गिनती

जब छोरों उपयोग किया जाता है, चीजों को अधिक जटिल हो: हम कर रहे हैं "थोड़ी देर" लूप में, निष्पादन की संख्या परिभाषित नहीं की जाती है और यदि विकल्प हैं, तो निष्पादन का प्रवाह बहुत बदल सकता है।

इस उद्देश्य के लिए, मैं कभी-कभी कोड के एक हिस्से में ब्रेकपॉइंट सेट करता हूं और गिनता हूं कि हम कितनी बार इसे प्राप्त करते हैं।

बेशक, यह बहुत सुविधाजनक नहीं है और मुझे आश्चर्य है कि ब्रेकपॉइंट हिट की संख्या को गिनने का कोई तरीका है या नहीं। मुझे पता है कि ग्रहण निश्चित हिट के बाद निष्पादन को निलंबित कर सकता है लेकिन मैं चाहता हूं कि एक्लिप्स उन्हें निष्पादन के सामान्य प्रवाह में गिनें।

मुझे इसके बारे में आपकी राय सुनने में खुशी होगी।

धन्यवाद!

उत्तर

18

आप अपने ब्रेकपॉइंट में एक शर्त जोड़ सकते हैं। सबसे सरल एक कुछ इस तरह दिखाई दे सकता है:

System.err.println("Passing checkpoint"); 
return false; 

आप भी इसे अपने स्वयं के स्थिर वर्ग को फोन करके विस्तार कर सकते हैं: गिनती breakpoints के विकल्प के रूप

org.foo.StaticCounter.COUNTER++; 
System.err.println("Passing checkpoint " + org.foo.StaticCounter.COUNTER); 
return false; 
+0

चालाक। मुझे लगता है कि मैं हमेशा अपने टूलकिट में एक स्टेटिक काउंटर क्लास रखूंगा। गैर-ऑब्जेक्ट प्रक्रियात्मक कोड डीबग करने के लिए सहायक हो सकता है :) धन्यवाद! –

1

, आप एक रूपरेखा उपकरण का उपयोग कर सकता है, इस तरह के एक here के रूप में।

+0

मुझे लगता है कि आपका उत्तर सही है लेकिन मैं ब्रेकपॉइंट हिट गिनता हूं, मैं प्रदर्शन का विश्लेषण करने से प्रसंस्करण को समझने के बारे में अधिक चिंतित हूं। मैं मूल्यांकन के कुछ अंतर्ज्ञानों की पुष्टि करता हूं कि कोड के टुकड़े में हमें कितनी बार जाना चाहिए। हालांकि मैं जटिल गैर-ऑब्जेक्ट प्रक्रियात्मक कोड के लिए इसका उपयोग करता हूं। वैसे भी आपके जवाब के लिए धन्यवाद :) –