मेरे पास एक .NET अनुप्रयोग से एक मिनीडम्प क्रैश हो गया है। क्या विंडबग या किसी अन्य उपकरण का उपयोग कर गलती मशीन (जो क्रैश डंप उत्पन्न करता है) के सीएलआर संस्करण (उदाहरण के लिए mscorwks.dll का संस्करण) जानने का कोई तरीका है?मैं क्रैश डंप के सीएलआर संस्करण को कैसे जान सकता हूं?
उत्तर
WinDbg में: सबसे आसान तरीका है !eeversion
आदेश का उपयोग करने के लिए है, लेकिन अगर आप अतिरिक्त जानकारी चाहते हैं आप क्रम मॉड्यूल mscorwks
के लिए v
वर्बोज़ विकल्प के साथ lm
आदेश का उपयोग कर सकते हैं। यदि आप .NET 4 पर हैं तो रनटाइम को clr
कहा जाता है, इसलिए उस स्थिति में आपको तदनुसार कमांड को बदलने की आवश्यकता है।
0:026> lm vm mscorwks
start end module name
79e70000 7a3ff000 mscorwks T (no symbols)
Loaded symbol image file: mscorwks.dll
Image path: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Image name: mscorwks.dll
Timestamp: Wed Oct 24 09:41:29 2007 (471EF729)
CheckSum: 00597AA8
ImageSize: 0058F000
File version: 2.0.50727.1433
Product version: 2.0.50727.1433
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
जाओ WinDbg में वर्बोस:
>lm v
............. (lots of modules).......
687d0000 68d06000 System_Xml_ni (deferred)
Image path: C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Xml\38b9d09539b67b08ee996db6c71f8a9b\System.Xml.ni.dll
Image name: System.Xml.ni.dll
Has CLR image header, track-debug-data flag not set
Timestamp: Mon Oct 06 20:43:49 2008 (48EADAF5)
CheckSum: 00000000
ImageSize: 00536000
File version: 2.0.50727.3074
Product version: 2.0.50727.3074
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® .NET Framework
InternalName: System.Xml.dll
OriginalFilename: System.Xml.dll
ProductVersion: 2.0.50727.3074
FileVersion: 2.0.50727.3074 (QFE.050727-3000)
FileDescription: .NET Framework
LegalCopyright: © Microsoft Corporation. All rights reserved.
Comments: Flavor=Retail
वैकल्पिक रूप से, दृश्य स्टूडियो में डंप लोड और डीबग का उपयोग | विंडोज़ | इस जानकारी में से कुछ को प्रदर्शित करने के लिए मॉड्यूल टूलविंडो।
दो अलग नेट संस्करणों के लिए उदाहरण हैं, clr.dll के संस्करण की जानकारी का उपयोग:
नेट 4.0 (.x?)
Image name: clr.dll
Timestamp: Thu Mar 18 21:39:07 2010 (4BA21EEB)
...
File version: 4.0.30319.1
Product version: 4.0.30319.1
नेट 4.5.2
Image name: clr.dll
Timestamp: Fri Nov 07 20:09:21 2014 (545CA861)
...
File version: 4.5.27.0
Product version: 4.0.30319.0
+1 क्योंकि यह विशिष्ट लोड किए बिना काम करता है (और इसलिए उस मशीन पर संभावित रूप से अनुपलब्ध) mscordacwks.dll/sos.dll आदि। मैंने संदर्भ के लिए दो और .NET संस्करणों के लिए उदाहरण भी जोड़े। –
! ईईवीर्सन को सीएलआर संस्करण देना चाहिए।
हाय ब्रायन, मुझे लगता है कि यह आदेश केवल डीबग मशीन पर जांचता है जो सीएलआर संस्करण का उपयोग किया जाता है, गलती मशीन के सीआरएल संस्करण की जांच नहीं करता है। कोई टिप्पणी? एक और मुद्दा यह है कि संस्करण अधूरा है, यह केवल 50727 नहीं होना चाहिए, लेकिन 50727.xxxx, 50727.3053 की तरह होना चाहिए। – George2
@ जॉर्ज 2: एलएम मॉड्यूल दिखाता है जो लोड हो जाता है यदि आप डंप फ़ाइल का निरीक्षण कर रहे हैं क्योंकि यह डंप किए गए मेमोरी का हिस्सा है। संस्करण संख्या के लिए, मुझे लगता है कि इसे फ़ाइल और/या उत्पाद संस्करण से पढ़ा जा सकता है। –