2009-05-16 13 views
6

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

उत्तर

9

जब भी कुछ परिवर्तनीय परिवर्तन होते हैं तो निष्पादन को रोकने के लिए डेटा ब्रेकपॉइंट सेट करें।

अपने चर के प्रारंभिकरण को तोड़ें, या कहीं भी जहां आपका चर दिखाई दे रहा है - आपको स्मृति में अपना पता प्राप्त करने में सक्षम होना चाहिए। फिर, मेनू से डीबग -> नया ब्रेकपॉइंट -> नया डेटा ब्रेकपॉइंट चुनें। दर्ज करें "&var" (var के साथ अपने चर के नाम से बदल दिया।)

इस कोड है कि आपके चर को संशोधित किया गया है की सटीक लाइन पर डीबगर में टूट जाएगा।

अधिक यहाँ प्रलेखन:

http://msdn.microsoft.com/en-us/library/350dyxd0.aspx

+0

पूर्णता के लिए: अन्य चीजें आपके कोड की तुलना में मूल्य बदल सकती हैं, और उन चीजों को स्मृति ब्रेकपॉइंट द्वारा कैप्चर नहीं किया जाता है: http://stackoverflow.com/questions/2362688/global-variable-is-changed -बट-मेमोरी-ब्रेकपॉइंट-है-हिट – Suma

2

आप उन स्थानों पर सशर्त ब्रेकपोइंट सेट कर सकते हैं जहां चर का उपयोग किया जाता है।

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

n != 5 

गुड लक अपनी हालत टाइप करें।

यहां a link from MSDN है।

0

यह एक काम या अन्य प्रत्यक्ष अद्यतन के माध्यम से संशोधित किया जा रहा है, तो डेटा ब्रेकप्वाइंट काम करेंगे। हालांकि, अगर इसे किसी अन्य माध्यम से संशोधित किया जा रहा है - उदाहरण के लिए एक बफर ओवरराइट - मुझे यकीन नहीं है कि यह आपको बताएगा कि यह कब होता है। सिर्फ मन में रखने वाली कुछ बातें।

+1

जब तक मुझे गंभीरता से गलती नहीं होती है, तब तक डेटा ब्रेकपॉइंट * मेमोरी लोकेशन * पर सेट होता है और पहचानकर्ता नहीं। (यही कारण है कि आपको एक अभिव्यक्ति देना है जो आपके द्वारा सेट किए जाने पर किसी पते पर मूल्यांकन करता है।) तो इसे बफर ओवरफ्लो, स्टैश स्टैक, ढेर भ्रष्टाचार और सभी अच्छी चीजें पकड़नी चाहिए। – Charlie

+0

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

+0

चिंता न करें, यह एक हार्डवेयर सुविधा है, गंभीरता से। –

संबंधित मुद्दे

 संबंधित मुद्दे