मैं समझने की कोशिश कर रहा हूं कि कोड प्रोफाइलर (इस मामले में Drone Profiler) एक .NET ऐप को सीधे इसे सीधे चलाने से अलग करता है। कारण मुझे यह जानने की आवश्यकता है क्योंकि मेरे पास मेरे देव कंप्यूटर के .NET इंस्टॉल के साथ एक बहुत ही अजीब समस्या/भ्रष्टाचार है जो खुद को प्रोफाइलर के बाहर प्रकट करता है लेकिन बहुत अजीब तरह से अंदर नहीं है और अगर मैं समझ सकता हूं कि मैं शायद अपने कंप्यूटर के मुद्दे को क्यों ठीक कर सकता हूं।एक कोड प्रोफाइलर के अंदर चल रहे सी # एप कैसे एक कोड कोड प्रोफाइलर चलाने से अलग है?
समस्या केवल सिस्टम.Net.NetworkInformation के तरीकों पर कॉल को प्रभावित करती है (और केवल .NET 3.5 से 2.0 के भीतर, अगर मैं 4 के खिलाफ कुछ बनाता हूं तो ठीक है)। मैंने एक छोटा परीक्षण ऐप बनाया जो केवल एक चीज करता है, यह System.Net.NetworkInformation.IsNetworkAvailable() को कॉल करता है। प्रोफाइलर के बाहर मुझे System.dll में "घातक निष्पादन इंजन त्रुटि" मिली, और यह वह सारी जानकारी है जो यह देता है। जो मैं समझता हूं कि त्रुटि आमतौर पर देशी विधि कॉल से होती है, जो संभावित रूप से तब होती है जब System.dll कुछ मूल DLL को IsNetworkAvailable() तर्क निष्पादित करने देता है।
- मैं अंदर और Process Monitor का उपयोग कर प्रोफाइलर अंतर के बाहर यह पता लगाने की कोशिश की, दोनों स्थितियों से घटनाओं की रिकॉर्डिंग और उनकी तुलना। Iphlpapi.dll और winnsi.dll के बाद बस एक पल तक दोनों लॉग समान थे और dnsapi.dll नामक प्रोफाइलर-रन कोड से पहले और गैर-प्रोफाइलर कोड क्रैश रिपोर्टिंग से संबंधित सामग्री लोड करना शुरू कर दिया। उस पल में जब यह गलत लगता था तो प्रोफाइलर रन कोड ने 4-6 नए धागे बनाए और गैर-प्रोफाइलर (क्रैशिंग) कोड केवल 1 या 2 बनाया। मुझे नहीं पता कि इसका मतलब क्या है, अगर कुछ भी हो।
यकीनन अनावश्यक पृष्ठभूमि
मेरे विंडोज 7 नेट स्थापना (2.0 करने के लिए 3.5) शामिल ठीक काम कर रहा था, जब तक मेरी हार्ड ड्राइव कुछ भ्रष्टाचार का सामना करना पड़ा और checkdisk बुरा समूहों की खोज शुरू कर दिया। मैंने ड्राइव को एक नए से इमेज किया और सबकुछ ठीक से काम करता है, इस मुद्दे को .NET के साथ छोड़कर।
मुझे इस समस्या को विंडोज़ को पुनर्स्थापित करने या छवि बैकअप पर वापस लाने की आवश्यकता है।
- मैं फ़ाइलों diffed किये जाने वाले है/निर्देशिका जो सबसे अधिक प्रासंगिक (Windows और प्रोग्राम फ़ाइलें के तहत नेट सामान) पूर्व और पोस्ट डिस्क लग रहा था:
यहाँ से कुछ चीजों के मैं देखा है कर रहे हैं परेशानी और कोई बदलाव नहीं देखा जहां मैंने किसी की उम्मीद नहीं की थी (कोई स्पष्ट फ़ाइल भ्रष्टाचार नहीं)।
- मैंने सॉफ़्टवेयर और सिस्टम रजिस्ट्री हाइव्स को प्री-और पोस्ट-डिस्क परेशानी में अंतर किया है और कोई बदलाव नहीं देखा जो प्रासंगिक लग रहा था।
- मैंने एक नया उपयोगकर्ता खाता बनाया है और पर्यावरण से संबंधित होने पर किसी भी पर्यावरण चर को साफ कर दिया है। कोई परिवर्तन नहीं होता है।
- मैंने "एसएफसी/स्कैनो" किया और इसे कोई अखंडता समस्या नहीं मिली।
- मैंने पूर्व-संकलित कोड को पुन: उत्पन्न करने के लिए "ngen अद्यतन" की कोशिश की, अगर मुझे कुछ ऐसा हो गया जो क्षतिग्रस्त हो और कुछ भी नहीं बदला।
- मैंने अपने वायरस स्कैनर को यह देखने के लिए हटा दिया कि यह हस्तक्षेप कर रहा है, कोई फर्क नहीं पड़ता।
- मैंने सुरक्षित मोड, उसी क्रैश समस्या में परीक्षण कोड चलाने का प्रयास किया।
मुझे लगता है कि मुझे अपनी .NET स्थापना की मरम्मत करने की आवश्यकता है, लेकिन विंडोज 7 में .NET 3.5 - 2.0 शामिल है, इसलिए आप इसे फिर से करने के लिए .NET इंस्टॉलर को फिर से चला नहीं सकते हैं।मेरे पास Windows डिस्क को फिर से इंस्टॉल करने का प्रयास करने के लिए Windows डिस्क तक पहुंच नहीं है (कंप्यूटर में रिकवरी विभाजन है लेकिन यह अनुपयोगी है); ड्राइव भी एक पूर्ण डिस्क एन्क्रिप्शन समाधान का उपयोग करता है और पुनः स्थापित करना मुश्किल होगा।
मैं बिल्कुल यहां स्क्रैच से शुरू नहीं करना चाहता हूं और एक ताजा विंडोज स्थापित करना चाहता हूं, दर्जनों सॉफ़्टवेयर पैकेजों को पुनर्स्थापित करना, विकास-संबंधित अनुकूलन/आदि के दर्जनों को आजमाएं और याद रखें।
यह सब देखते हुए ... क्या किसी के पास कोई सहायक सलाह है? मुझे .NET 3.5 - 2.0 की आवश्यकता है क्योंकि मैं एक डेवलपर हूं और इसके खिलाफ निर्माण और परीक्षण करने की आवश्यकता है।
धन्यवाद!
Quinxy
मैं वास्तव में विचार और टिप्पणी की सराहना करता हूं। यह एक बहुत ही रोचक परिकल्पना है। मेरा मानना है कि आप जो कहते हैं उसका हिस्सा इस मामले में लागू नहीं हो सकता है, यह देखते हुए कि मेरा डेमो प्रोग्राम जो इस मुद्दे को प्रकट करता है वह सचमुच एक पंक्ति (डिफ़ॉल्ट विंडोज फॉर्म प्रोजेक्ट फॉर्म के साथ) पिंग() फ़ंक्शन को कॉल करता है, और सबकुछ ठीक से पहले काम करता है डिस्क मुद्दा मैं था। लेकिन जिस भाग का आप वाद्ययंत्र के बारे में उल्लेख करते हैं वह बहुत महत्वपूर्ण हो सकता है, विशेष रूप से क्योंकि जब मैंने काम करने वाले और गैर-कार्यरत राज्यों के बीच रजिस्ट्री की तुलना की तो मैंने प्रदर्शन मॉनीटर/आदि से संबंधित कुछ बदलावों को देखा। –
तो मुझे लगता है कि मुझे प्रदर्शन काउंटर से संबंधित रजिस्ट्री परिवर्तनों पर एक और नज़र डालना चाहिए और देखें कि क्या उन्हें बदलना कुछ भी है। –