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


387

निम्नलिखित कार्य करें:

DataTable go() {
    return someTableAdapter.getSomeData();
}

जब मैं इस फ़ंक्शन में एक ब्रेकपॉइंट सेट करता हूं, तो क्या लौटे मूल्य का निरीक्षण करने की संभावना है? go()सीधे एक .aspxपृष्ठ में डेटाटग्रिड पर युग्मित किया जाता है ।

लौटे हुए डिटिटेबल का निरीक्षण करने का एकमात्र तरीका एक अस्थायी चर का उपयोग करना है। हालाँकि, यह थोड़ा असुविधाजनक है। क्या कोई दूसरा रास्ता नहीं है?


1
यदि आप कॉल स्टैक को वापस ले जाते हैं तो आप एक घड़ी जोड़ सकते हैं
क्रिस एस

आप VB6 में ऐसा करने में सक्षम थे, मुझे याद है। लेकिन फिर फ़ंक्शन के लिए वाक्यविन्यास में फ़ंक्शन के मान को रिटर्न वैल्यू सेट करना शामिल है ...
नील बार्नवेल

5
विजुअल C ++ उपयोगकर्ताओं के लिए टिप्पणी: तत्काल विंडो या वॉच विंडो में $ ReturnValue टाइप करें। कम से कम मेरे वीएस 2010 पर इसने काम किया!
सर्गियोल

9
VS2015 के लिए $ ReturnValue1 का उपयोग करें .. यदि आप 20 उत्तर और 100 टिप्पणियों के माध्यम से नीचे पढ़ना नहीं चाहते हैं!
22

3
इस सबका 2019 का जवाब क्या है? ये उत्तर सुपर दिनांकित हैं।
dylanh724

जवाबों:


264

मेरी जानकारी में नहीं। ध्यान दें कि यदि आप ऐसा एक चर जोड़ने के लिए, यह विज्ञप्ति में संकलक द्वारा हटा दिया जाएगा वैसे भी बनाता ...

अद्यतन: यह कार्यक्षमता VS2013 में जोड़ी गई है । आप ऑटो विंडो में रिटर्न मान देख सकते हैं या $ReturnValueवॉच / तत्काल विंडो में उपयोग कर सकते हैं।

मान केवल फ़ंक्शन से लौटने के बाद सीधे देखा जा सकता है, इस प्रकार इसे एक्सेस करने का सबसे आसान तरीका फ़ंक्शन कॉल पर एक ब्रेकपॉइंट लगाकर और कॉल (F10) कॉल पर कदम है।


VS2015 के लिए अपडेट करें: बू! दुर्भाग्य से, यह VS2015 (devenv v14)
VS2017 के लिए अपडेट में प्रकट नहीं होता है : यह वापस आ गया है। (devv v15)


12
टेम्पो को पीछे छोड़ने का कारण पठनीयता और शैली है, दक्षता नहीं, नहीं?
orip

8
यह संभव है कि वी.एस. 2010 के बाद से IntelliTrace: blogs.msdn.com/b/habibh/archive/2009/10/23/…
डैनियल हिल्गारथ

2
Intellitrace अभी VS अल्टीमेट एडिशन में उपलब्ध है।
जेएमजीएच

3
@MarcGravell आपका उत्तर गलत है ! निश्चित रूप से, मुझे आपके उत्तर और एमएस के बीच VS13 में उस सुविधा को जारी करने में छह साल लगे, लेकिन फिर भी। यदि आपने केवल " डिस्क्लेमर के रूप में " के लिए " समय जोड़ा है" ... (नहीं, मैं मंदबुद्धि नहीं हूं। यह निश्चित रूप से एक मजाक है। आप देवतुल्य हैं, दोस्त हैं।)
कोनराड विल्टरस्टन

6
VS2015 के लिए @MarcGravell: $ ReturnValue1 काम करता है! (अंतिम संस्करण में परीक्षण किया गया)
GY

58

यह ग्राहक प्रतिक्रिया साइट के अनुसार सीएलआर 4.5.1 के साथ विजुअल स्टूडियो 2013 में किया जा सकता है । यह C # के लिए पिछले संस्करणों में उपलब्ध नहीं था।

(विजुअल स्टूडियो 2008 और इससे पहले VB.NET के लिए इसका समर्थन करता था। यह हमेशा C / C ++ डेवलपर्स के लिए उपलब्ध रहा है।)


1
आप इसे Visual Studio 2010 C ++ में कैसे करते हैं?
यूजर

Microsoft कनेक्ट का कहना है कि प्रबंधित कोड के साथ एक मूलभूत मुद्दा है जो इसे विश्वसनीय तरीके से लागू करने से रोकता है:
Dan Solovay

@DanSolovay उनके द्वारा उपयोग किए जाने वाले शब्द "हम सही काम लगातार नहीं कर सकते" (वीएस 11 के लिए) लेकिन वे "इसे वापस लाना चाहते हैं" और "इस समस्या के लिए कई संभावित समाधान देख रहे हैं"।
एलेक्स एंगस

कनेक्ट एंट्री बासी है। फ़ीचर लगता है ... परित्यक्त: ((
सॉफ्टलाइयन

1
यह IntelliTrace के साथ VS 2010 के बाद से संभव है: blogs.msdn.com/b/habibh/archive/2009/10/23/…
डैनियल हिल्गारथ

25

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

इसके साथ, आप कोड संपादक पर सही तरीके से रिटर्न मान देख सकते हैं, जैसे कि HUD- डिस्प्ले:

कथन दृश्य

अधिक जानकारी के लिए, कृपया इस वीडियो को देखें ।


23

Microsoft के अनुसार, प्रबंधित कोड के साथ इसे मज़बूती से लागू करने का कोई तरीका नहीं है। यह एक ऐसी समस्या है जिसके बारे में वे जानते हैं और इस पर काम कर रहे हैं:

उन लोगों के लिए जिनके पास डीबगिंग मूल C ++ या VB6 कोड का अनुभव है, आपने एक ऐसी सुविधा का उपयोग किया होगा जहां ऑटो रिटर्न विंडो में आपके लिए फ़ंक्शन रिटर्न मान प्रदान किए जाते हैं। दुर्भाग्य से, यह कार्यक्षमता प्रबंधित कोड के लिए मौजूद नहीं है। जब आप स्थानीय वैरिएबल पर रिटर्न मान निर्दिष्ट करके इस मुद्दे पर काम कर सकते हैं, तो यह उतना सुविधाजनक नहीं है क्योंकि इसके लिए आपके कोड को संशोधित करने की आवश्यकता होती है। प्रबंधित कोड में, यह निर्धारित करने के लिए कि आपने जो कदम उठाया है, उसका वापसी मूल्य निर्धारित करने के लिए बहुत मुश्किल है। हमें महसूस हुआ कि हम यहां लगातार सही काम नहीं कर सकते हैं और इसलिए हमने डिबगर में आपको गलत परिणाम देने के बजाय फीचर को हटा दिया है। हालाँकि, हम इसे आपके और हमारी CLR और डीबगर टीमों के लिए इस समस्या के कई संभावित समाधानों के लिए वापस लाना चाहते हैं। दुर्भाग्य से यह विजुअल स्टूडियो 11 का हिस्सा नहीं होगा।

https://connect.microsoft.com/VisualStudio/feedback/details/597933/add-a-return-pseudo-variable-to-the-visual-studio-debugger-for-net-code


1
प्रति @ ऊपर ( stackoverflow.com/a/3714884/402949 ), यह VS2013 के लिए CLR 4.5 के साथ उपलब्ध है
Dan Solovay

21

दृश्य स्टूडियो 2015 के बारे में:

मार्क ग्रेवेल द्वारा वर्तमान में स्वीकृत उत्तर के अनुसार:

इस कार्यक्षमता को Visual Studio 2013 में जोड़ा गया है । आप ऑटो विंडो में रिटर्न मान देख सकते हैं या वॉच / तत्काल विंडो में $ ReturnValue का उपयोग कर सकते हैं

उस उत्तर ने यह भी कहा कि यह कार्यक्षमता Visual Studio 2015 में काम नहीं करती है। यह (पूरी तरह से) सत्य नहीं है। पर विधि कॉल की वापसी मान की जाँच करें वहाँ निम्नलिखित टिप्पणी है:

आपके पास मान्यता प्राप्त करने के लिए $ ReturnValue के लिए विरासत अभिव्यक्ति मूल्यांकनकर्ता चालू होना चाहिए (उपकरण / विकल्प / डिबगिंग / उपयोग विरासत C # और VB अभिव्यक्ति मूल्यांकनकर्ता )। अन्यथा, आप $ ReturnValue1 का उपयोग कर सकते हैं ।

मैंने विजुअल स्टूडियो 2015 एंटरप्राइज में इसका परीक्षण किया:

  • विरासत अभिव्यक्ति मूल्यांकनकर्ताओं के साथ: केवल $ ReturnValue1 काम करता है
  • विरासत अभिव्यक्ति मूल्यांकनकर्ताओं के साथ: $ ReturnValue और $ ReturnValue1 दोनों काम करते हैं

3
यह अब आवश्यक प्रतीत नहीं होता है। वीएस 2015 अपडेट 3 पर, मेरे पास विरासत मूल्यांकनकर्ता अक्षम और $ReturnValueकाम करता है। हालाँकि, यदि आपके पास Use managed compatibility modeडीबगिंग विकल्प सक्षम है , तो रिटर्न मान कहीं भी दिखाई नहीं देता है ।
निक

13

यदि आप मेनू टूल्सविकल्प पर जाते हैं , इंटेलीट्रेस पर जाते हैं, और घटनाओं को इकट्ठा करने और जानकारी को कॉल करने के लिए सेटिंग में बदलाव करते हैं।

आप पिछले कॉल इवेंट ( Ctrl+ Shift+) पर वापस जा सकते हैंF11 ) पर और ऑटो नाम विंडो में विधि नाम के एक बच्चे के रूप में विधि कॉल से लौटा हुआ अस्थायी मान देख सकते हैं।

यह आपको आपके द्वारा बताई गई विधि के लिए रिटर्न वैल्यू नहीं दिखा रहा है। यह आपको मौजूदा पद्धति में अंतिम विधि के रिटर्न मान को दिखाता है।

तो, यह ठीक है

DataTable go(){return someTableAdapter.getSomeData();}

क्योंकि यह आपके लिए रिटर्न वैल्यू दिखाता है someTableAdapter.getSomeData()

लेकिन इसके लिए नहीं:

int go(){return 100 * 99;}

12

पूर्व .NET दिनों से पुरानी चाल: रजिस्टर विंडो खोलें और EAX रजिस्टर के मूल्य को देखें। इसमें अंतिम फ़ंक्शन का रिटर्न वैल्यू कहा जाता है।


1
+1 धातु दृष्टिकोण के करीब पुराने स्कूल के लिए - यह, हालांकि, सभी रिटर्न मानों के लिए काम नहीं करेगा (और यह JIT'er तक है, जाहिर है - कौन जानता है कि जो पागल अनुकूलन यह तय कर सकता है कि वह EAX का उपयोग नहीं करेगा? )। अभिन्न प्रकारों के लिए यह (अधिकतर?) काम करेगा। बड़े मूल्य प्रकार एक अलग मामला है (और जहां तक ​​मैं कुछ ब्लॉग पोस्ट से याद करता हूं, वे VS2013 में भी प्रदर्शित नहीं किए जाएंगे)।
जिम्मी तेघ

10

Shift-F11 का उपयोग करते हुए () विधि से बाहर कदम, और फिर "ऑटो" डिबग विंडो में यह विधि कॉल का रिटर्न मान दिखाएगा जो स्टैक से बस पॉप हुआ (इस मामले में, गो) विधि जो है आपको क्या चाहिए)। यह दृश्य स्टूडियो 2005 में व्यवहार है; मैंने Visual Studio 2008 का उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि क्या यह उस संस्करण में उसी तरह का व्यवहार करता है।


मैंने VS2005 और VS2008 दोनों में यह कोशिश की है, लेकिन मैं वास्तव में इसे नहीं देखता। मेरे पास "ऑटो" विंडो खुली है, लेकिन जब "गो" फ़ंक्शन में होता है, तो ऑटो-विंडो बस खाली होती है। फ़ंक्शन से बाहर निकलते समय (फ़ंक्शन के बंद घुंघराले ब्रेस पीले होते हैं)। क्या आप मुझे एक और संकेत दे सकते हैं?
डॉकमैन

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

@LasterSkinPillBoxHat: यह आपके अतिरिक्त संकेत के साथ भी काम करने के लिए नहीं मिल सकता है। क्या आप इसे Visual Basic में आज़मा रहे हैं? यह वापसी मूल्यों को देखने और बदलने के लिए बेहतर समर्थन करता है ...
रोमन स्टार्कोव

@romkyns - आपके लिए "ऑटो" विंडो में क्या दिखता है? क्या यह इंगित करने वाली एक पंक्ति नहीं दिखाती है कि अंतिम नामक फ़ंक्शन क्या लौटा है?
लीपर्सकिनपिलबॉक्स हत

2
@ LasterSkinPillBoxHat: नहीं, यह C # में ऐसा नहीं करता है। पुनश्च वाह, मुझे इसे देखने के लिए थोड़ा समय लगा।
रोमन स्टार्कोव

7

हां, बहुत अच्छा तरीका है। एक महत्वपूर्ण दोष यह है कि आपको 5, शायद 6 साल तक इंतजार करना होगा। चूंकि मैं देखता हूं कि आपने नवंबर 2008 में पोस्ट किया था, मेरा सुझाव है कि आप वाया ...

... aaaait। और वॉयला! बस आपके लिए, MS ने नवीनतम विज़ुअल स्टूडियो 2013 जारी किया है, जहां यह डिबग मोड (मेनू डीबगविंडोजऑटो ) में चलने के दौरान मेनू से सुलभ एक डिफ़ॉल्ट सुविधा है ।


@Doug क्योंकि सवाल नवंबर 2008 से पूछा गया था और मेरा जवाब सितंबर 2014 में आया था। मूल पोस्टर शायद संतुष्ट है और क्रेडिट को स्थानांतरित नहीं करना चाहता है। लेकिन मैं आपसे सहमत हूँ - मैं अपने उत्तर पर कुछ अधिक विचार नहीं करूँगा। मुझे अप्पीज और रिपीट गेन पसंद है। :)
कोनराड विल्टर्स्टन

आज यह मुद्दा था। 2014 में जवाब देने के लिए धन्यवाद भले ही प्रारंभिक मुद्दा 2008 का हो। आपका जवाब वही है जो मैं खोज रहा था।
एपी

@ कोई समस्या नहीं। इस पोस्ट को देखने के लिए एक टाइम मशीन की तरह महसूस होता है। अतीत से विस्फोट, हेह।
कोनराड विल्टर्स्टन

5

बहुत सारे वर्कअराउंड हैं, लेकिन कोई भी संतोषजनक नहीं लगता है।

नीचे जॉन स्कीट को उद्धृत करने के लिए (अब हटाए गए उत्तर पर टिप्पणी करें):

अभी भी मेरे लिए असुविधाजनक लग रहा है - खासकर अगर आपको पता नहीं है कि डिबगिंग शुरू करने से पहले आपको कौन सा रिटर्न वैल्यू चाहिए। मैं वास्तव में कभी भी कुछ भी वापस करने के लिए हर बार अपने कोड को अव्यवस्थित करने के लिए एक अस्थायी चर नहीं होना चाहता हूं

सिद्धांत रूप में, डीबगर एक- returnपरिवर्तनीय हो सकता है । सब के बाद: यह स्टैक पर सिर्फ एक चर है:

unsafe {
  int * sp = stackalloc int[1];
  try {
    return a+b;
  }
  finally {
    Trace.WriteLine("return is " + *(sp+3));
  }
}

तो इसे Visual Studio के लिए एक सुविधा अनुरोध पर विचार करें।


एक चर (एक अच्छी तरह से परिभाषित स्थानीय) और स्टैक पर एक मूल्य के बीच काफी बड़ा अंतर है। यह स्टैक पर एक मूल्य है, लेकिन यह एक चर (= स्थानीय) नहीं है।
मार्क ग्रेवेल

@ मैर्क: मुझे यकीन नहीं है कि सीएलआर कैसे काम करता है, लेकिन ढेर सारे कंपाइलर स्टैक पॉइंटर के ऊपर स्टैक पॉइंटर (स्प) और लोकल वैरिएबल के नीचे स्टैक पर फंक्शन आर्गुमेंट्स डालते हैं। यह वही है जो मैं दिखाने की कोशिश कर रहा हूं। और ठीक है, जब रिटर्न वैल्यू एक संदर्भ प्रकार है, तो आपको बस कुछ पॉइंटर मूल्य मिलते हैं।
डॉकमैन

1
यह स्टैक पर जरूरी नहीं है। वास्तव में, यदि आप डिबग देखते हैं -> रजिस्टरों आप इसे EAX में देखने के लिए उपयुक्त हैं
मार्क सोउल

5

मैं विजुअल स्टूडियो 2015 में काम करने के लिए पास्कल के उत्तर पर विस्तार करना चाहता था , क्योंकि एक छिपी हुई विशेषता है जो कि विधि कॉल के एक्सामाइन रिटर्न मान में प्रलेखित नहीं है ।

यदि आपके पास फ़ंक्शन फ़ंक्शन नेस्टेड हैं, तो छद्म-चर $ResultValueXस्वचालित रूप से बनाए जाते हैं, जहां एक्स फ़ंक्शन कॉल ऑर्डर को संदर्भित करता है। इसलिए यदि आपके पास एक कॉल है जैसे Multiply(Five(), Six()), निम्नलिखित छद्म चर बनाए जाते हैं:

Five()     | $ResultValue1 = 5
Six()      | $ResultValue2 = 6
Multiply() | $ResultValue3 = 30

2

Microsoft Visual C ++ ऐसा करता था, लेकिन Visual Studio AFAIK नहीं करता: ..(


2

मुझे पता है कि वापसी लाइन पर एक ब्रेकपॉइंट लगाने का एकमात्र तरीका है और फिर क्विक वॉच विंडो को कॉल करें और रिटर्न की गई अभिव्यक्ति दर्ज करें:

someTableAdapter.getSomeData();

लेकिन यह केवल तभी काम करता है जब कॉल किसी वस्तु की स्थिति में परिवर्तन नहीं करता है (क्योंकि जब आप निष्पादन को फिर से शुरू करेंगे तो उसी विधि के लिए दूसरा कॉल होगा)।


5
यह भी केवल तभी काम करता है जब आपकी अभिव्यक्ति में लैम्ब्डा न हो।
रोमन स्टार्कोव

1

आप मध्यवर्ती विंडो में मान का मूल्यांकन करने के लिए भी कह सकते हैं, अगर यह झंडे या अन्य चर सेट नहीं करता है, लेकिन केवल कुछ देता है।


आपको लैम्ब्डा को प्रश्न में शामिल करने की आवश्यकता है, क्योंकि मैं तत्काल विंडो का उपयोग कभी
क्रिस एस।

1

मुझे लगता है कि आप रजिस्टर विंडो (डीबग / विंडोज / रजिस्टर) में RAX रजिस्टर को देखकर इसे निर्धारित कर सकते हैं। फ़ंक्शन के बाहर जाने के बाद (SHIFT + F11), RAX रजिस्टर की जाँच करें। मैं एक तथ्य के लिए नहीं जानता, लेकिन एक बार चंद्रमा पर आप एक रजिस्टर (प्री। नेट दिनों) की जांच कर सकते हैं और वहां वापसी मूल्य देख सकते हैं। यह RAX और RBX इत्यादि का संयोजन भी हो सकता है।


1

डीबग → ऑटोस विंडो को खोलना आपको बंद कर देता है। यह वास्तविक रिटर्न वैल्यू नहीं दिखाएगा, लेकिन यह दिखाएगा कि रिटर्न स्टेटमेंट में क्या मूल्यांकन किया गया था।


2
ऐसा कुछ भी दिखाने के लिए VS2008 ऑटो विंडो नहीं मिल सकी। कृपया क्या आप स्पष्टीकरण दे सकते हैं?
रोमन स्टार्कोव

return x + y; मेरा मतलब था कि यदि आप इस लाइन पर एक ब्रेकपॉइंट सेट करते हैं, तो आपकी डीबग-ऑटो विंडो खिड़की और x के लिए वर्तमान मान प्रदर्शित करेगी। जैसा कि मैंने कहा, यह केवल आपके पास है। बस मददगार बनने की कोशिश कर रहा हूं। मुझे नहीं लगता है कि एक नीच पात्र है।
GeekyMonkey

1

हाँ, VB.NET पर स्विच करके। ; पी (आपने सिर्फ "विज़ुअल स्टूडियो" कहा;)

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

यह रिटर्न स्टेटमेंट के एक्सप्रेशन के लिए भी सेट है। एक स्थानीय चर की तरह, फ़ंक्शन के अंदर निष्पादन के किसी भी बिंदु पर इसके मूल्य का निरीक्षण किया जा सकता है (वापसी विवरण निष्पादित होने के बाद सहित)। C # के पास यह नहीं है और होना चाहिए।

वह थोड़ा VB.NET फीचर (प्लस Exit Functionस्टेटमेंट जो इसे सक्षम करता है - एक और फीचर C # नहीं है और होना चाहिए) रक्षात्मक प्रोग्रामिंग I प्रैक्टिस के रूप में बहुत उपयोगी है, जहां मैं फंक्शन नाम को विफलता / डिफ़ॉल्ट मान के रूप में हमेशा इनिशियलाइज़ करता हूं पहला बयान। फिर, किसी भी विफलता बिंदु पर (जो सामान्य रूप से सफलता के बिंदुओं की तुलना में बहुत अधिक बार होता है), मैं बस Exit Functionबयान को कॉल कर सकता हूं (यानी विफलता / डिफ़ॉल्ट अभिव्यक्ति या यहां तक ​​कि एक स्थिर / चर नाम की नकल के बिना)।


1

स्वीकृत उत्तर विजुअल स्टूडियो 2015 के साथ ठीक से काम नहीं करता है, लेकिन विधि की अंतिम पंक्ति पर एक ब्रेक पॉइंट रखकर और दबाने पर F10, यह स्थानीय विंडो में वापसी मूल्य के सभी भाव डाल देगा।


आप संभवतः अपनी टिप्पणियों को शामिल करने के लिए स्वीकृत उत्तर को भी संपादित कर सकते हैं।
डॉकमैन

0

आप चयन करने की कोशिश कर सकते हैं "someTableAdapter.getSomeData();", उस पर राइट क्लिक करें, और क्विक वॉच के लिए जाएं


-1

वॉच विंडो में रिटर्न एक्सप्रेशन को ड्रैग और ड्रॉप करें।

उदाहरण के लिए, बयान में

return someTableAdapter.getSomeData();

खींचें और छोड़ें

someTableAdapter.getSomeData()

एक घड़ी की खिड़की में, और आप मूल्य देखेंगे।

आप किसी भी अभिव्यक्ति के लिए ऐसा कर सकते हैं।


2
उस के साथ समस्या: दो बार अभिव्यक्ति का मूल्यांकन किया जाता है।
डॉकमैन

6
और घड़ी के भावों में लंबोदर के भाव नहीं हो सकते हैं, जिनका उपयोग मैं थोड़ा सा करता हूं।
स्टीव क्रेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.