2008-10-02 8 views
42

जब मैं एक सी # कार्यक्रम डिबग और मैं एक अपवाद throwed (या तो कोड द्वारा फेंका या ढांचा द्वारा फेंका), आईडीई बंद हो जाता है मिलता है और मुझे मेरे कोड में इसी लाइन के लिए मिलता है ।एक अपवाद के बाद विजुअल स्टूडियो डीबगर में जारी होता है

सब कुछ ठीक है।

मैं जारी रखने के लिए "F5" दबाता हूं। इस पल से, यह एक अनंत लूप में है जैसे यह seams। आईडीई हमेशा मुझे अपवाद रेखा पर वापस ले जाता है। मैं शिफ्ट + F5 (बंद डिबगिंग/कार्यक्रम समाप्त) करने के लिए है अपने से बाहर निकलना।

मैंने यहां कुछ सहकर्मियों से बात की और उन्होंने मुझे बताया कि यह उनके लिए कभी-कभी होता है।

क्या हो रहा है?

+0

डीबगर व्यवहार आपके द्वारा डिबगिंग किए जा रहे कोड पर निर्भर करेगा। क्या आप कोड प्रश्न नमूना शामिल करने के लिए अपना प्रश्न संपादित कर सकते हैं, और यह इंगित कर सकते हैं कि कौन सी पंक्ति वर्णित व्यवहार का कारण बनती है? –

उत्तर

16

इसका कारण यह है अपवाद अन-संभाला और दृश्य स्टूडियो के बिना यह किसी तरह से संभाला जा रहा है कि रेखा अतीत नहीं ले जा सकते है। सीधे शब्दों में कहें, यह डिजाइन द्वारा है।

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

हालांकि यह निष्पादन को रोकने के लिए और समस्या यह है कि अपवाद उत्पन्न कर रहा है ठीक है या ठीक से अपवाद संभाल अगर फेंक वांछित नहीं है एक बेहतर विचार है।

इस के बाद से आप अनिवार्य रूप से कुछ कोड को फिर से क्रियान्वित कर रहे हैं (निष्पादन रीवाइंड नहीं) अनपेक्षित परिणाम हो सकते हैं।

+3

मुझे पीली रेखा नहीं मिलती है, इसके बजाय यह एक हरे तीर के साथ हरी रेखा दिखाती है जहां अपवाद होता है, और मैं हरे तीर को कहीं भी नहीं ले जा सकता। मैं उस मामले में क्या करूँ? –

+0

@ अनिरुध गोयल, यहां एक ही समस्या है। – Pedro77

+1

यह अजीब लगता है ... कभी-कभी हम देखना चाहते हैं कि क्या होता है जब एक गैर-प्रबंधित अपवाद मारा जाता है – mmcrae

3

एक बार जब आप एक अपवाद दृश्य स्टूडियो (या जो भी आईडीई आप उपयोग कर रहे हैं) नहीं दूँगा आप किसी भी आगे जाना है जब तक अपवाद अपने कोड में नियंत्रित किया जाता है मिलता है।

यह व्यवहार डिज़ाइन द्वारा है।

2

न आया हुआ अपवाद अपने अनुप्रयोग नीचे लाएगा। इसके बजाए, वीएस आपको अनचाहे अपवाद पर रखेगा, आपको अपने ऐप को समाप्त या बैकविंड करना होगा।

4

जब आईडीई कोड की अपमानजनक रेखा पर टूट जाता है, तो यह अपवाद उत्पन्न करने वाली रेखा को निष्पादित करने से ठीक पहले बंद हो जाता है। यदि आप जारी रखते हैं, तो यह उस पंक्ति को फिर से निष्पादित करेगा, और फिर अपवाद प्राप्त करेगा।

यदि आप यह देखने के लिए त्रुटि को पीछे हटाना चाहते हैं कि क्या हुआ होगा, तो त्रुटि नहीं हुई थी, आप पीले-हाइलाइट लाइन (जिस पंक्ति को आगे निष्पादित करेंगे) खींच सकते हैं, उसके बाद कोड की अगली पंक्ति में एक अपमानजनक बेशक, आपत्तिजनक रेखा क्या करने में असफल रही, इस पर निर्भर करता है कि आपका प्रोग्राम अब ऐसी स्थिति में हो सकता है जो अन्य त्रुटियों का कारण बनता है, जिस स्थिति में आपने वास्तव में बहुत मदद नहीं की है, और शायद आपके कोड को ठीक करना चाहिए ताकि अपवाद या तो ऐसा नहीं होता है, या ठीक से संभाला जाता है।

43

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

यदि आप विकल्प को अनचेक करते हैं तो विजुअल स्टूडियो अपवाद पर टूट जाएगा, लेकिन F5 उस पंक्ति से आगे बढ़ेगा।

यह विकल्प उपकरणविकल्पडिबगिंगजनरल मेनू के तहत है।

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