क्या मैं इंटेलीज में डेब्यू करते समय वापसी से पहले रिटर्न वैल्यू का पता लगा सकता हूं?


127

साथ में:

Object method(){
    ...
    return /* some complex expression */
}

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

जिस तरह से मैं इसे अब एक अस्थायी चर बना रहा है Object ret = /* something complex */; return ret;:। लेकिन एक परेशानी है और कोड की एक अतिरिक्त अनावश्यक लाइन भी जोड़ता है।

नोट: यह एक ही सवाल है कि क्या मैं विजुअल स्टूडियो में डीबगिंग के दौरान लौटने से पहले रिटर्न वैल्यू का पता लगा सकता हूं , लेकिन इंटेलीज के लिए।

जवाबों:


31

ऐसा लगता है कि आप कुछ कर सकते हैं। पहले एक में विधि हस्ताक्षर पर ब्रेकपॉइंट स्थापित करना शामिल है, आपके मामले में आप ऑब्जेक्ट विधि () {पर एक ब्रेकप्वाइंट सेट करेंगे। यह आपको विधि के प्रवेश और निकास के लिए देखने की अनुमति देगा। मेरा मानना ​​है कि आपको ऊपर बताए अनुसार " वॉच मेथड रिटर्न वैल्यूज" के साथ इसका इस्तेमाल करना होगा , लेकिन मैं इसे पूरी तरह से परख नहीं पाया हूं क्योंकि गणना करने में बहुत लंबा समय लगता है। खबरदार, यह डिबगर के प्रदर्शन को नाटकीय रूप से कम करता है और इसे डीबग करने में अधिक समय लगेगा।

इसके अलावा, आप निम्न मैन्युअल रूप से कर सकते हैं।

  1. ब्रेकपॉइंट को रिटर्न लाइन पर सेट करें।
  2. जब रिटर्न लाइन हिट होती है, तो रिटर्न लाइन पर क्लिक करें, विशेष रूप से उस ऑपरेशन पर कर्सर रखें जिसे आप देखना चाहते हैं, फिर रन-> इवेशन एक्सप्रेशन (या Alt-F8) पर जाएं और इसे उस बिंदु पर एक्सप्रेशन चलाना चाहिए और जो लौट रहा है, उसे वापस करो।

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

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

  1. आप जो रिटर्न अभिव्यक्ति देखना चाहते हैं उस पर राइट-क्लिक करें और "वॉच में जोड़ें" पर क्लिक करें
  2. इसके बाद ऊपर बताए गए तरीके से एक ब्रेकपॉइंट जोड़ें।
  3. अपने कार्यक्रम को डिबग करें और विधि हस्ताक्षर पर आपका तरीका टूट जाएगा।
  4. जारी रखने के लिए और इसे फिर से तोड़ना चाहिए के लिए F9 कुंजी मारो के बाद वापसी अभिव्यक्ति की गणना की जा चुकी है और अपनी वापसी अभिव्यक्ति घड़ी स्तंभ में होना चाहिए।

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

उम्मीद है की यह मदद करेगा,


1
दरअसल, एक बार जब आप एक ब्रेकपॉइंट और एक घड़ी को (नए X ()) में जोड़ लेते हैं, तो आप बस उस वस्तु पर Alt + F8 कर सकते हैं जो लौटी हुई वस्तु का विश्लेषण कर सकते हैं। यह वास्तव में उपयोगी है।
केदार म्हसवडे

यदि मैं इसे सही ढंग से समझ रहा हूं, तो यहां प्रस्तावित समाधान केवल तभी काम करता है जब अभिव्यक्ति का कोई दुष्प्रभाव न हो। मैं निश्चित रूप से सामान्य रूप से चर / घड़ी की खिड़की में जटिल अभिव्यक्ति डालने की अनुशंसा नहीं करता हूं।
मश्मगर

कम से कम 2016.3 के बाद से, बहुत बेहतर तरीका है। विवरण के लिए बर्चलैब्स से उत्तर देखें। यह अब स्वीकृत उत्तर होना चाहिए।
माइकज़क्स

151

IntelliJ IDEA 2016.3 पर: यह डीबग पैनल के कॉग बटन के अंदर छिपा हुआ है। जांच सुनिश्चित की Show Method Return Valuesजाती है

IntelliJ IDEA 2016.3 "शो मेथड रिटर्न वैल्यूज़"

फ़ंक्शन के अंदर कहीं तोड़ने के लिए डिबगर का उपयोग करें जिसका वापसी मूल्य आप देखना चाहते हैं।

समारोह में कदम

फ़ंक्शन से बाहर कदम (या जब तक आप बच न जाएं):

बाहर कदम

ध्यान दें कि आपके चर में वापसी मूल्य दिखाई देता है:

रिटर्न मान देखें


3
@Stan मैंने काम किया उदाहरण देने के लिए अपना उत्तर अपडेट किया है।
बिर्चलैब्स

40

नहीं है घड़ी विधि वापसी मान बटन में उपलब्ध डिबगर पैनल

वॉच मेथड रिटर्न मान : अंतिम निष्पादित विधि के रिटर्न मान देखने के लिए इस बटन पर क्लिक करें।

घड़ी विधि वापसी मान

IDEA 12 कॉन्फ़िगरेशन:

आईडिया 12


2
"वैरिएबल" या "वॉचेस" टैब में से कुछ भी नहीं दिखता है। मैं Groovy का उपयोग कर रहा हूँ अगर वह मायने रखता है। इसके अलावा, ऐसा लगता है कि यह कॉलिंग कोड के संदर्भ से निष्पादित अंतिम विधि का रिटर्न मूल्य दिखाएगा, बजाय विधि के संदर्भ से। इसका महत्वपूर्ण अंतर यह है कि यदि आप इसे विधि के संदर्भ से देख सकते हैं, तो आप विधि के स्थानीय चर के मूल्यों को भी देख सकते हैं। यह आपको यह देखने की अनुमति दे सकता है कि क्या गलत है अगर विधि एक गलत मान लौटा रही है।
काइल

3
यह "वेरिएबल्स" फलक में रिटर्न वैल्यू दिखाता है (पूरी तरह से योग्य विधि नाम का उपयोग करके)। यह स्वीकृत उत्तर होना चाहिए था। @CrazyCoder +1 मुझ से :-)
ओम्री स्पेक्टर

4
@CrazyCoder: क्या यह सुविधा अभी भी IDEA 13 के लिए मौजूद है? मुझे यह नहीं मिला।
केविनारपे

1
मैं इंटेलीज 15 पर हूं और यह भी नहीं देखता। क्या आप स्क्रीनशॉट पोस्ट कर सकते हैं?
संजीव जीवन

3
जनवरी 2017 (आइडिया 2016.3.2) में: आपको सेटिंग्स आइकन (दूसरी छवि पर पीले मेनू आइटम के ठीक ऊपर गियर) पर क्लिक करना होगा, एक मेनू दिखाता है जिसमें "शो मेथड रिटर्न वैल्यूज" शामिल है। पुनः आरंभ करने के लिए कुछ भी करने की आवश्यकता नहीं: एक तरीके से दूसरे वापसी के बाद, अपने ObjectClassName.methodName () प्रतीत होता है में चर ठीक नीचे देखने इस
18446744073709551615

1

यह कुछ समय पहले पूछा गया था, लेकिन जब मैं इस स्थिति को संभालना चाहता हूं तो मैं एक अलग विधि का उपयोग करता हूं।

डिबगिंग करते समय, आप अभिव्यक्ति (आपके मामले में, "वापसी" के ठीक बाद अभिव्यक्ति को चिह्नित कर सकते हैं) और CTRL + ALT + F8 (त्वरित मूल्यांकन अभिव्यक्ति) को हिट कर सकते हैं। IntelliJ आपको एक छोटी विंडो पॉप अप करेगी जो आपको वह मूल्य दिखाएगा जो वापस कर दिया जाएगा।


2
यदि आप एक इंटेल ग्राफिक चिप का उपयोग करते हैं तो यह कीबोर्ड शॉर्टकट आपके सेन्चुरी मॉनिटर को बंद कर देगा
कोली

1
लिनक्स उपयोगकर्ता: Ctrl + Alt + F8 - उपयोगकर्ता को 2 जीयूआई टर्मिनल पर भेजेगा। उबंटू में मैंने वापस लौटने के लिए Ctrl + Alt + F2 दबाया।
दिमित्री पावलुकिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.