2014-05-21 6 views
6

के लिए पीडीबी फ़ाइल कैसे प्राप्त करें बहुत सारी खोज करने के बाद, मुझे अभी भी प्रश्न का हल नहीं मिल सका।mscorlib.ni.lib (.Net Framework 3.5)

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

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

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

  1. मैं फ़ोल्डर में ngen.exe नहीं मिल सकता है:

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

    यहाँ नतीजा है "C: \ Windows \ Microsoft.NET \ Framework64 \ v3.5"

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

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

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

कोई विचार?

+0

यह सुनिश्चित नहीं है कि यह महत्वपूर्ण है, लेकिन आप नेट 2.0.507 (इस सी: \ विंडोज \ असेंबली \ NativeImages_v2.0.507 के आधार पर) से असेंबली पर ngen ver संस्करण 4.0.30319.18408 चलाते हैं। एक ही संस्करण के ngen का उपयोग करने की कोशिश करें। – Califf

+0

वही संस्करण "ngen" 2.050727 "createpdb" तर्क का समर्थन नहीं करता है। – Buzz

उत्तर

6

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

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

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

1

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

हालांकि, हालांकि ngen कमांड काम करता है ... अंततः उत्पन्न पीडीबी को मेरे परिदृश्य में एक मिलान प्रतीक फ़ाइल के रूप में वीएस 2013 द्वारा स्वीकार नहीं किया गया था।

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