2011-03-28 10 views
6

** पोस्ट में कार्रवाई करने के लिए संपादित किया गया था,.net 4.0

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

An attempt to set a processes DebugPort or ExceptionPort was made, 
but a port already exists in the process. 

मैं गूगल पर कुछ जवाब मिल गया है और मैं आम तौर पर समझते हैं कि क्या त्रुटि कहते हैं, लेकिन मैं सिर्फ एक अजीब तथ्य समझ में नहीं आता: जब मैं संकलन मेरा सरल ऐप < .NET 4.0, मैं मूवी शो के रूप में संलग्न कर सकता हूं, लक्ष्यीकरण संकलित करने के बाद ऐसा करने की कोशिश कर रहा हूं .NET 4.0 मुझे संलग्न करने से अक्षम करता है।

Google के उत्तरों में से एक कहते हैं, "noninvasive मोड का उपयोग करके विंडबग से अटैच करने का प्रयास करें" लेकिन .. ब्रायन ऐसे किसी भी चेकबॉक्स का उपयोग नहीं करते हैं। यह सिर्फ अपने वीडियो पर काम करता है।

क्या अंतर है? पकड़ कहाँ है? क्या यह विंडोज 7 बनाम विस्टा है? शायद कुछ अलग संकलन सेटिंग्स मायने रखती हैं?

मैं एमएस एसडीके के साथ एमएस एसडीके के साथ एमएसडीएन से डाउनलोड विंडबग x86 के साथ एमएस वीएस 2k10 का उपयोग कर रहा हूं और प्रतीकों को सही ढंग से http सर्वर पर कॉन्फ़िगर किया गया है। सिस्टम एमएस विस्टा x86 है।

संसाधन (सही समय> = 8:15): http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

संपादित करें: त्रुटि से पता चलता है जब प्रक्रिया के लिए संलग्न है कि बनाम से चलाई गई थी वीएस के बाहर/बाहर की प्रक्रिया में संलग्न करने की कोशिश कर रहा है, विंडबग कोई सामग्री नहीं दिखाता है।

EDIT2: Windbg अपने सिस्टम में कुछ ताज़ा समस्या थी। कुछ बार "विंडोज \ [अंडॉक | डॉक सब]" मेनू विकल्प का उपयोग करके मैं संलग्न प्रक्रिया की सामग्री को देखने में सक्षम था, जो गायब था।

तो अब केवल सवाल यह है: क्या अंतर जब वी.एस. से शुरू की प्रक्रिया के लिए संलग्न है, जब यह एक बार लक्ष्य < 4.0 का उपयोग कर में संकलित है और फिर 4.0 =? क्यों 4.0 विंडबग को लक्षित करना प्रक्रिया में "noninvasive" मोड में संलग्न नहीं हो सकता है। वीएस 2k10 में क्या बदल गया है?

+0

मैं इसे कैसे ऊपर नहीं उठा सकता :) दयालु शब्दों के लिए धन्यवाद। –

+0

गुगलिंग के एक घंटे बाद, मुझे स्टैक ओवरफ्लो पर समान समस्याओं में से एक मिला है। मैं आपको आश्चर्यचकित कैसे कर रहा था, एक उत्तर देने वाले के रूप में, और यह जांच कर रहा था कि आप 15 मिनट पहले ऑनलाइन थे। मुझे लगभग यकीन था, आप इस सवाल का जवाब देंगे;) क्या मैंने उल्लेख किया, वीडियो बहुत अच्छे हैं और बहुत उपयोगी हैं? महान काम ब्रायन कर रहे हैं। अपनी जानकारी साझा करने के लिए धन्यवाद। – qlf00n

उत्तर

8

मुझे लगता है कि आप विजुअल स्टूडियो (एफ 5) से डिबगिंग कर रहे हैं और फिर संलग्न करने की कोशिश कर रहे हैं। आप एक समय में केवल एक सक्रिय डीबगर हो सकते हैं, इसलिए आपको यह त्रुटि मिलती है। यदि आप वीएस से प्रक्रिया लॉन्च करना चाहते हैं, तो इसे डिबगिंग (Ctrl-F5) के बिना चलाएं। यदि आप ऐसा करते हैं, तो आप WinDbg से संलग्न करने में सक्षम होना चाहिए।

EDIT: मुझे खेद है, मैं इस संबंध में अलग-अलग व्यवहार करने वाले .NET के विभिन्न संस्करणों के बारे में बिंदु चूक गया, इसलिए मुझे अपने प्रश्नों को फिर से हल करने का प्रयास करें। वीडियो में यह "बस काम करता है" का कारण यह है कि जब भी मैं वीएस से लॉन्च करता हूं, मैं डीबगिंग के बिना रन का उपयोग करता हूं। इसलिए यदि आप बस वीडियो में उदाहरणों का पालन करना चाहते हैं, तो आपको केवल डीबगिंग के बिना चलाने की ज़रूरत है।

मैंने सीएलआर 2 और x86 पर WinDbg/SOS का उपयोग शुरू किया। वीएस से वापस x86 .NET प्रक्रिया लॉन्च करने से त्रुटि उत्पन्न हो जाएगी, इसलिए मैंने डिबगिंग के बिना लॉन्च करने की आदत बनाई।

हालांकि, जैसा कि आपने पाया है कि ऐसे परिदृश्य हैं जहां आप वास्तव में ऐसी प्रक्रिया से संलग्न हो सकते हैं जिसे वीएस द्वारा डीबग किया जा रहा है। मैं आपके द्वारा वर्णित परिदृश्यों को पुन: पेश कर सकता हूं, लेकिन मैं एक x64 से भी संलग्न कर सकता हूं, .NET 2 प्रक्रिया VS2008 से डीबगिंग के साथ शुरू हुई है, लेकिन प्लेटफॉर्म x86 पर सेट होने पर मैं उसी प्रक्रिया से संलग्न नहीं हो सकता।

स्पष्ट रूप से सूक्ष्म मतभेद हैं जिनके बारे में मुझे पता नहीं है, और ऐसा लगता है कि यह विशेष रूप से .NET संस्करण से संबंधित नहीं है, क्योंकि मैं x64 .NET2 प्रक्रिया से जुड़ा हुआ हूं, भले ही यह वीएस डीबगर का नियंत्रण।

यदि मुझे अतिरिक्त विवरण मिलते हैं तो मैं अपना उत्तर अपडेट करूंगा।

+0

मैं समझने की कोशिश करता हूं, मैं प्रक्रिया के साथ क्यों संलग्न कर सकता हूं, जिसे VS से शुरू किया गया था (डीबगर के साथ, ctrl-F5 का उपयोग नहीं कर रहा था) जब लक्षित .NET <4.0 है? जब मैं संलग्न करने का प्रयास करता हूं तो लक्ष्य संकलन को 4.0 में बदलना त्रुटि उत्पन्न करता है। यहां केवल अंतर ही लक्षित है .NET मंच। – qlf00n

+0

इसे अपने x64 प्लेटफ़ॉर्म पर जांचने के लिए धन्यवाद। मुझे यकीन नहीं था कि यह केवल मेरी कॉन्फ़िगरेशन पर होता है। – qlf00n