2012-02-03 11 views
13

मैं हमारी उत्पादन मशीनों में से एक से क्रैश डंप का विश्लेषण करने के लिए WinDBG का उपयोग करने का प्रयास कर रहा हूं। मेरी समस्या की जड़ यह प्रतीत होती है कि मेरे पास उत्पादन मशीन की तुलना में .NET ढांचे का एक अलग निर्माण है, केवल मुझे नहीं पता कि समस्या को कैसे ठीक किया जाए। जब मैं बारी! शोर प्रतीक और फिर चलाने! (SOSEX से) DLK मैं निम्नलिखित त्रुटि मिलती है के रूप में यह mscordacwks dllWinDBG को mscordacwks.dll क्यों नहीं मिल सकता है?

0:000> !dlk 
CLRDLL: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll:2.0.50727.3623 f:0 
doesn't match desired version 2.0.50727.3607 f:0 
SYMSRV: c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found 
SYMSRV: http://msdl.microsoft.com/download/symbols/mscordacwks_x86_x86_2.0.50727.3607.dll/4ADD5446590000/mscordacwks_x86_x86_2.0.50727.3607.dll not found 
SYMSRV: c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found 
SYMSRV: c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found 
SYMSRV: http://msdl.microsoft.com/download/symbols/mscordacwks_x86_x86_2.0.50727.3607.dll/4ADD5446590000/mscordacwks_x86_x86_2.0.50727.3607.dll not found 
SYMSRV: c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found 
CLRDLL: Unable to find mscordacwks_x86_x86_2.0.50727.3607.dll by mscorwks search 
CLRDLL: Unable to find 'mscordacwks_x86_x86_2.0.50727.3607.dll' on the path 
SYMSRV: c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found 
SYMSRV: http://msdl.microsoft.com/download/symbols/mscorwks.dll/4ADD5446590000/mscorwks.dll not found 
SYMSRV: c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found 
DBGHELP: C:\Program Files\Debugging Tools for Windows (x86)\mscorwks.dll - file not found 
SYMSRV: c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found 
SYMSRV: http://msdl.microsoft.com/download/symbols/mscorwks.dll/4ADD5446590000/mscorwks.dll not found 
SYMSRV: c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found 
CLRDLL: Unable to find mscorwks.dll by search 
CLRDLL: ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.3607.dll, Win32 error 0n2 
Unable to initialize .NET data interface. Version 2.0.50727.3607 of mscordacwks.dll is required. 
Locate and load the correct version of mscordacwks.dll. See documentation for the .cordll command. 

मैं से mscorwks.dll, mscordawks.dll और sos.dll ले लिया खोजने की कोशिश करता उत्पादन मशीन और उन्हें सी: \ mysymbols में रखा। ऐसा लगता है कि WinDBG mscorwks dll के अंदर एक डीएल की तलाश में है।

+1

ऐसा लगता है कि आप .NET 2.0 असेंबली का विश्लेषण कर रहे हैं, लेकिन लोड किया गया एसओएस .NET 4.0 को लक्षित कर रहा है। Http://stackoverflow.com/questions/4373683/unable-to-load-sos-in-windbg –

+3

लोड किए गए एक्सटेंशन के क्रम को देखने के लिए ".chain" कमांड का उपयोग करें। कभी-कभी दोनों संस्करण 2.0/4.0 एसओएस डीएल लोड होते हैं जो समस्याएं पैदा कर सकते हैं। – Naveen

उत्तर

3

बाहर लेख यहाँ http://codenasarre.wordpress.com/2011/06/22/sending-an-sos/

और फिर जाँच मूल रूप से है कि चारों ओर मैं कर सकता प्रतीकों चलती के हर अवतार की कोशिश के बाद, मैंने पाया कि एक ही रास्ता है कि मैं इस काम के मिल सकता है, mscorwks.dll कॉपी करने के लिए mscordawks था। डीएल और sos.dll उत्पादन मशीन से सी: \ विन्डोज़ \ माइक्रोसॉफ्ट.NET \ Framework \ v2.0.50727

ऐसा लगता है कि WinDBG उसी DLL के एकाधिक संस्करण के साथ इतना अच्छा नहीं करता है। हो सकता है कि मैंने कुछ गलत किया, लेकिन डीईएल को सीधे .NET Framework निर्देशिका में कॉपी करना कम से कम मुझे चला गया और चल रहा था।

+0

यह WinDbg mscordacwks.dll के कई संस्करणों को संभाल नहीं सकता है, लेकिन यह उनसे पूछने के लिए बाय-डिज़ाइन एल्गोरिदम का उपयोग करता है (क्योंकि इसमें बहुत से पैच किए गए संस्करण हैं), जो शैली आप सक्रिय रूप से अनुकूलित करते हैं। एक बार जब आप इस तथ्य का उपयोग कर लेंगे, तो आपको भविष्य में ज्यादा परेशानी का सामना नहीं करना पड़ेगा। –

11

यह बहुत पूरा explanation by Doug Stewart ने मुझे इस स्थिति में मदद की।

सारांश:

  • मूल प्रणाली से mscordacwks.dll प्राप्त करें।
  • इसे mscordacwks_AAA_AAA_2.0.50727.xxxx.dll (अपने आर्किटेक्चर और विशिष्ट ढांचे संस्करण के आधार पर) पर कुछ नाम दें - उदा। प्रश्न में विशिष्ट मामले के लिए mscordacwks_x86_x86_2.0.50727.3607.dll
  • उस फ़ाइल को windbg.exe की निर्देशिका में कॉपी करें।
+0

एक लंबे लंबे समय के बाद, यह मुझे काम मिल गया! – Rots

+1

@ रोट्स, वापस पाने के लिए धन्यवाद! – CodeFox

+3

धन्यवाद .. यह डीबगडिआग के लिए भी काम करता है ... सी: \ प्रोग्राम फ़ाइलें \ DebugDiag –

0

CodeFox के जवाब देने के लिए इसके अलावा, आप (फ़ाइल के बंद निर्देशिका जहां mscorwks.dll WinDbg में छवि फ़ाइल पथ में (या clr.dll आप नेट उपयोग कर रहे हैं 4) लगाने की जरूरत है मेन्यू)।

8

के बाद यह 2 आदेशों सब कुछ ठीक हो जाते हैं:

0:000> .symfix 
0:000> .reload 
0

मैं यह भी पाया है कि windbg के 64 बिट संस्करण का उपयोग कर और एक "कोई भी सीपीयू" डीबगिंग प्रबंधित कोड परियोजना जहां निर्माण के लिए निर्धारित है "32 को पसंद करते हैं बिट "इस त्रुटि का कारण बन जाएगा।

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