c# microsoft Mscorlib.ni.lib(.Net Framework 3.5) के लिए पीडीबी फ़ाइल कैसे प्राप्त करें




windows 8.1 image (2)

बहुत सी खोज करने के बाद, मैं अभी भी इस सवाल का समाधान नहीं मिल सका।

मेरे पास एक एमडीपी फाइल है कॉल स्टैक से पता चलता है कि यह mscorlib.ni.dll का उपयोग कर रहा है। फ़ंक्शन की जानकारी प्राप्त करने के लिए, मुझे इसकी पीडीबी फाइल प्राप्त करने की आवश्यकता है।

Mscorlib.ni.dll का संस्करण 2.0.50727.3655 है मेरा मानना ​​है कि यह नेट फ्रेमवर्क 3.5 से आता है।

चूंकि mscorlib.ni.dll मूल अनुकूलित डेल है जो ngen.exe द्वारा उत्पन्न होता है, इसलिए मुझे इस डीएल के लिए पीडीएफ जेनरेट करने के लिए ngen.exe createpdb का उपयोग करना होगा।

ngen.exe createpdb "C:\Windows\assembly\...\mscorlib.ni.dll" "C:\SymbolCache"

यहां परिणाम है:

  1. मैं "सी: \ विंडोज \ Microsoft.NET \ Framework64 \ v3.5" फ़ोल्डर में ngen.exe नहीं ढूँढ सकता
  2. मैं "सी: \ विंडोज \ Microsoft.NET \ Framework64 \ v2" फ़ोल्डर में ngen.exe पा सकता था, लेकिन इसमें createpdb विकल्प नहीं है।
  3. मैं "c: \ Windows \ Microsoft.NET \ framework64 \ v4.0.30319" फ़ोल्डर में ngen.exe पा सकता है और यह createpdb विकल्प का समर्थन करता है, लेकिन यह त्रुटि की रिपोर्ट करता है

माइक्रोसॉफ्ट (आर) सीएलआर मूल छवि जेनरेटर - संस्करण 4.0.30319.18408 कॉपीराइट (सी) माइक्रोसॉफ्ट कॉर्पोरेशन सर्वाधिकार सुरक्षित। मूल छवि 'C: \ Windows \ विधानसभा \ NativeImages_v2.0.507 7_64 \ mscorlib \ 5cd1c2848ff40eb0a8c149706ee394fa \ mscorlib.ni.dll' में पाया गया अमान्य शीर्षलेख। अनिर्दिष्ट त्रुटि (अपवाद HRESULT से: 0x80004005 (E_FAIL))

तो मुझे पता नहीं है कि नेट फ्रेमवर्क 3.5 के इस mscorlib.ni.dll के लिए पीडीबी कैसे प्राप्त करें।

कोई उपाय?


मेरे पास एक ही त्रुटि संदेश था जब तक मुझे एहसास नहीं हुआ कि मैं फ़्रेमवर्क 64 फ़ोल्डर से ngen.exe कहता हूं। जाहिर है, mscorlib.ni.dll 64-बिट नहीं था।

इसलिए मैंने सी -4 C:\Windows\Microsoft.NET\Framework\v4.0.30319 से 32-बिट संस्करण ngen.exe का उपयोग किया और यह सफलतापूर्वक पीडीबी का उत्पादन किया।

हालांकि, आपके mscorlib.ni.dll के पथ में शामिल है ...\NativeImages_v2.0.507 7_64\... , जो इंगित करता है कि यह 64-बिट है, इसलिए यह एक अलग समस्या हो सकती है।


मोंसिग्नोर के उत्तर की तरह, मेरे लिए समाधान बिट-नेस (64-बिट या 32-बिट) से मेल खा रहा था। मेरा मिनीडम्प 64-बिट था इसलिए मुझे फ्रेमवर्क 64 फ़ोल्डर में जाना पड़ा और वहां से एनजेन चलाया गया और यह ठीक था। मुझे मूल रूप से एक ही एनजेन त्रुटि मिलती है जैसा कि यहाँ वर्णित है (मूल चित्र में पाया गया अवैध हेडर ... E_FAIL) क्योंकि मैं फ्रेमवर्क 64 फ़ोल्डर (फेसपैम) के बजाय फ़्रेमवर्क फ़ोल्डर में था।

हालांकि, हालांकि एनजीएन कमांड काम करता था ... पीडीबी जो अंत में उत्पन्न हुआ था, अभी भी वीएस 2013 द्वारा मेरी परिदृश्य में मेल खाने वाले प्रतीक फ़ाइल के रूप में स्वीकार नहीं किया गया था







ngen