2009-09-30 13 views
10

विजुअल स्टूडियो 2008 एसपी 1 और वीबी.नेट परियोजना का उपयोग करना; मेरे पास कुछ कोड है जिसमें मैं कदम नहीं उठा सकता। तत्काल विंडो संदेश "प्रतीकों के बिना विधि पर कदम उठाना 'कुछ नामस्थान। यहां'प्रतीकों के बिना विधि पर कदम - कैसे कदम उठाने के लिए?

मैं यह सुनिश्चित कैसे कर सकता हूं कि विधि हमेशा प्रतीकों का प्रतीक हो ?! मुझे कोड की हर पंक्ति में कदम उठाने की जरूरत है। मैं एफ 8 दबा रहा हूं (जो वीएस -2008 में "चरण में" है, स्मृति से मुझे लगता है कि यह वीएस2005 में एफ 11 था)।

यह डीबगर सामग्री हमेशा मुझे उलझन में डालती है: समाधान स्तर पर संपत्ति पृष्ठ पर मैं 4 मानों के साथ एक कॉन्फ़िगरेशन ड्रॉपडाउन देखता हूं: सक्रिय (डीबग), डीबग, रिलीज, सभी कॉन्फ़िगरेशन। - वर्तमान में "सक्रिय (डीबग)" पर सेट करें प्रोजेक्ट स्तर पर, मुझे 2 मानों के साथ कॉन्फ़िगरेशन ड्रॉपडाउन दिखाई देता है: डीबग, रिलीज़। - वर्तमान में "डीबग"

उत्तर

0

यदि प्रश्न में नामस्थान एक तृतीय पक्ष डीएल है जो प्रतीकों (पीडीबी फ़ाइल) के साथ नहीं आया है तो यह घटित होगा। प्रतीक फ़ाइल में "कदम" करने के लिए आवश्यक है।

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

+1

हां, यह मेरा स्वयं का कोड है, और मैंने इसे परियोजना स्तर पर (सक्रिय प्रारंभिक प्रश्न में वर्णित समाधान स्तर) पर "सक्रिय (डीबग)" पर सेट कर दिया है। मैं .pdb फ़ाइलों को देख सकता हूं, वास्तव में मैंने उन्हें मैन्युअल रूप से हटा दिया और फिर से दोबारा तैयार किया ताकि वे फिर से उत्पादित हो जाएं। मैं frm.Show() और frm.Focus() विधि दोनों को frm_Activated ईवेंट में जाने की अपेक्षा करता हूं, क्योंकि मैं F8 दबाता हूं, लेकिन ऐसा नहीं होता है। मुझे इस घटना में मैन्युअल रूप से ब्रेक-पॉइंट रखना होगा। – joedotnot

22

मुझे पता है कि यह एक पुराना सवाल है, लेकिन क्या आप शायद ऐसी विधि में उपज कार्यक्षमता का उपयोग कर रहे हैं जो एक आईनेमरेबल लौटाता है?

उदाहरण (काल्पनिक) के लिए:

public IEnumerable<object> GetObjects(IEnumerable<object> objects) 
{ 
    foreach(var obj in objects) 
     yield return obj; 
} 

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

तो कर निम्नलिखित गणना में परिणाम चाहिए:

GetObjects(new List<object>()).ToList(); 

संक्षेप में, आप एक विधि है कि गणना की आवश्यकता है, लेकिन फिर परिणाम की गणना कभी नहीं बुला रहे हैं, आप उत्पादन में उस त्रुटि मिल जाएगा। यह LINQ कथन के साथ भी हो सकता है, जैसे। चयन करें।

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

4

मैं विजुअल स्टूडियो 2010 में एक ही सटीक समस्या में भाग गया। मैं .NET Framework स्रोत में कदम उठाने का प्रयास करूंगा, विजुअल स्टूडियो इस पर कदम उठाएगा, आउटपुट विंडो कहती है कि यह कदम नहीं उठा सकता क्योंकि प्रतीक फ़ाइल लोड नहीं किया गया था, लेकिन जब मैंने मॉड्यूल विंडो को देखा तो मैं देखता था कि प्रासंगिक प्रतीक फ़ाइल वास्तव में लोड की गई थी।

समस्या यह थी कि .NET प्रतीक फ़ाइल लोड की गई थी लेकिन यह स्रोत जानकारी के साथ .NET प्रतीक फ़ाइल नहीं थी। http://referencesource.microsoft.com/symbols पर माइक्रोसॉफ्ट के सार्वजनिक प्रतीक सर्वर में स्रोत जानकारी शामिल प्रतीक शामिल हैं। माइक्रोसॉफ्ट के सार्वजनिक प्रतीक सर्वर http://msdl.microsoft.com/download/symbols पर स्रोत जानकारी के बिना प्रतीक शामिल हैं।

एक समाधान आपको _NT_SYMBOL_PATH सही ढंग से सेट करना है ताकि यह http://referencesource.microsoft.com/symbols से .NET Framework प्रतीकों को पकड़ ले, यदि वे मौजूद हैं और http://msdl.microsoft.com/download/symbols से अन्यथा हैं।ऐसा कुछ काम करेगा:

_NT_SYMBOL_PATH = SRV * d: \ SymbolsCache * http: //referencesource.microsoft.com/symbols; SRV * d: \ SymbolsCache * http: //msdl.microsoft.com/download/ प्रतीकों

यह _NT_SYMBOL_PATH पहली बार स्रोत जानकारी के साथ प्रतीकों की तलाश करने के लिए डीबगर प्राप्त करेगा और फिर यदि कोई नहीं है तो इसके बिना प्रतीक प्राप्त होंगे। जब विजुअल स्टूडियो में स्रोत जानकारी के साथ एक प्रतीक फ़ाइल होती है तो वह उस कोड में कदम उठाने में सक्षम होती है।