ग्रहण में डिबगिंग करते समय पूर्ण तारों को देखना


166

जावा कोड को डिबग करते समय, स्ट्रिंग्स "वेरिएबल्स" और "एक्सप्रेशंस" केवल एक निश्चित लंबाई तक दिखाई देते हैं, जिसके बाद ग्रहण "..." दिखाता है।

क्या पूरे स्ट्रिंग का निरीक्षण करने का कोई तरीका है? (यह हर जगह डिबगिंग के लिए लॉगिंग स्टेटमेंट जोड़ने के दर्द को कम करता है)


आप इस व्यवहार को कहाँ देख रहे हैं? डिबगर का कौन सा हिस्सा है?
स्कैफ़मैन

एक साइड नोट पर, यह एक मिथ्या नाम हो सकता है, क्योंकि यह आपके लिए काम नहीं कर सकता है, लेकिन अगर आप java.util.log या log4j जैसी डिबगिंग लाइब्रेरी का उपयोग करते हैं, तो आप आसानी से अपने डिबग स्टेटमेंट (डिबगिंग के विभिन्न स्तरों के साथ) में बदल सकते हैं प्रिंटआउट या लॉगफाइल्स और यह आपको वह बढ़त दे सकता है जो डिबग विंडो में स्ट्रिंग्स के माध्यम से बहती है। बस एक विचार =)
corsiKa

जवाबों:


225

वेरिएबल्स दृश्य में आप विवरण फलक (वह अनुभाग जहां स्ट्रिंग सामग्री प्रदर्शित होती है) पर राइट क्लिक कर सकते हैं और "अधिकतम लंबाई ..." पॉपअप मेनू का चयन कर सकते हैं। वही लंबाई अभिव्यक्ति निरीक्षक पॉपअप और कुछ अन्य स्थानों पर लागू होती है।

यहां छवि विवरण दर्ज करें


17
चयनित समाधान की तुलना में बेहतर समाधान। धन्यवाद!
कॉलिन

13
यह बताने के लिए अच्छा है कि विवरण फलक वह खंड है जहां स्ट्रिंग सामग्री प्रदर्शित होती है।
Bnrdo

1
ग्रहण कीपलर में यह कैसे करें? Pls मदद
मूर्ख

1
अच्छी खबर यह है कि यह परिवर्तन एक चर पर मँडराते समय प्रदर्शित लंबाई को भी प्रभावित करता है, "निरीक्षण" विंडो या "एक्सप्रेशंस" दृश्य में निरीक्षण करता है और "डिस्प्ले" दृश्य में मान प्रदर्शित करता है।
स्टीव चैम्बर्स

1
मैंने सही समाधान अपडेट किया है (जो पहले स्वीकार किया गया था वह वास्तव में पुराने ग्रहण संस्करणों के लिए एकमात्र समाधान था)।
रागबिस्वास

134

में चर आप देखने चर पर राइट क्लिक करें और चुनें मूल्य बदलें । यदि आपका चर विशाल है, तो आपको कुछ मिनट इंतजार करना होगा (इस मामले में ग्रहण आज्ञाओं का जवाब नहीं देता है) लेकिन अंत में ग्रहण आपके चर को पूरी तरह से दिखाएगा।


2
मैं ही देख सकता हूं "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)"। "अधिकतम लंबाई" विकल्प काम नहीं करता है और "मूल्य बदलें" भी सेट करें।
फाल्को

@ फाल्को "मैक्स लेंथ" ने मेरे लिए काम नहीं किया, "चेंज वैल्यू" ठीक था (कुछ सेकंड के इंतजार के बाद, वैरिएबल की लंबाई पर निर्भर करता है)।
उम्बर्टो

कम से कम मेरे सिस्टम पर, यह "मैक्स लेंथ" (अन्य उत्तर देखें) को बढ़ाने की तुलना में काफी धीमा है।
10

ग्रहण आपके विचार के बारे में काफी खुश नहीं है .. Ive ने यह कोशिश की और मैं 30mins से अब इंतजार करता हूं, ग्रहण की किसी भी प्रतिक्रिया के लिए .. Buuut: यह काम करने लगता है;)
जोशित

22

यदि आपके पास वास्तव में लंबी स्ट्रिंग है, तो मैं एक अलग रणनीति का उपयोग करता हूं: इसे किसी फ़ाइल में डंप करें। मेरे पास प्रदर्शन दृश्य में उपयोग किए जाने वाले कोड का एक स्निपेट है, जो किसी फ़ाइल में डेटा को डंप करने के लिए मूल्यांकन किया जाता है। मैं कॉमन्स IO का उपयोग करता हूं, लेकिन आप इसे केवल JDK तरीकों से कर सकते हैं।

org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("<filename>"), <expression to evaluate>);

स्वाभाविक रूप से, आपको काम करने के लिए अपने वर्गपथ में कॉमन्स IO JAR की आवश्यकता होगी। यदि आप नहीं करते हैं, JDK काम का सहारा लें।


5
शांत वर्कअराउंड। मैं, व्यक्तिगत रूप से, इसे सर्वश्रेष्ठ उत्तर के रूप में स्वीकार करूंगा। कैविएट: <filename> को उस सिस्टम के लिए परिभाषित किया जाना है जहां JVM चल रहा है, जो कि यदि आप दूरस्थ डिबगिंग कर रहे हैं, तो फर्क पड़ता है, जिस स्थिति में फ़ाइल दूरस्थ सिस्टम पर लिखी जाएगी, न कि उस कार्य केंद्र पर जहां ग्रहण चल रहा है। ।
rexford

18

ग्रहण डिबग दृश्य से स्ट्रिंग मान देखने का सबसे अच्छा तरीका नीचे है।

1) ग्रहण में डिबग दृश्य पर स्विच करें

2) चर फलक में वांछित चर का चयन करें।

3) वेरिएबल पेन के डिस्प्ले एरिया पर राइट क्लिक करें जहां वैल्यू दिखाई जाती है और मैक्स लेंथ पर क्लिक करें। कॉन्फ़िगर विवरण फलक में अधिकतम चार मान दर्ज करें।

4) चीयर्स

यहां छवि विवरण दर्ज करें


1
यह आलेखीय व्याख्या वास्तव में सहायक है। +1
भाविन शाह

3

जब डिबगर उस बिंदु पर पहुंचता है जहां आप स्ट्रिंग मूल्य चाहते हैं, तो बस एक sysOut स्टेटमेंट टाइप करें

System.out.println("The value is : \n " + query);

उपरोक्त कथन का चयन करें, ठीक क्लिक करें-> निष्पादित करें

यह कंसोल पर वैल्यू प्रिंट करेगा


0

ग्रहण पर डिबगिंग आधारित डिबगिंग के लिए, "वैल्यू बदलें" विधि और "मैक्स लेंथ" विधि दोनों मेरे लिए विफल रहीं, देखने के लिए आवश्यक वस्तु को जोड़ना ( एक्सप्रेशंस ) और फिर "लोड फुल वैल्यू" चुनने के लिए देखे गए एक्सप्रेशन को राइट क्लिक करना ही एकमात्र उपाय है यह मेरे लिए काम करता है, लेकिन यह भी आउटपुट में अवांछित "\ n" सम्मिलित करता है

नोट - "मैक्स लेंथ" को "लोड फुल वैल्यू" के लिए काम करना चाहिए क्योंकि यह अधिकतम लंबाई तक मूल्यों को लोड करता है (ग्रहण में डिफ़ॉल्ट 10000 है)। अधिकतम लंबाई कैसे सेट करें, यह देखने के लिए उपरोक्त उत्तर देखें।


0

ग्रहण मंगल में कोई "अधिकतम गति" नहीं है। और, "परिवर्तन मूल्य" केवल "चर" के साथ काम करता है, न कि "अभिव्यक्ति", इसलिए मेरे लिए उपरोक्त कार्यों में से कोई भी काम नहीं करता है।

यहां छवि विवरण दर्ज करें

और, अभिव्यक्ति बीच में ही कट जाती है, अंत में नहीं। मुझे लगता है कि उन्होंने डिफ़ॉल्ट व्यवहार को बदल दिया।

मेरे लिए काम करने वाली एकमात्र चीज़, अभिव्यक्ति नाम कॉलम की चौड़ाई का विस्तार करना है, और पूरी लंबाई की सामग्री को देखने के लिए इसे चुनने के लिए अभिव्यक्ति पर क्लिक करें।


0

उपरोक्त में से कुछ भी मेरे लिए काम नहीं करता है, इसके अलावा, मेरे ग्रहण में कुछ उपयोगकर्ता इंटरफ़ेस तत्व वर्णित नहीं किए जा सकते हैं। मैं एसटीएस 4.3.1 का उपयोग कर रहा हूं।

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

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.