मैं एसओएस एक्सटेंशन के साथ WinDbg का उपयोग कर उत्पादन सर्वर से आने वाले हैंगडंप को डिबग कर रहा हूं।WinDbg और SoS, मैं एक बड़ी स्ट्रिंग को प्रिंट/डंप कैसे करूं?
स्टैक्स में से एक में एक स्ट्रिंग पैरामीटर है, जिसे मुझे मूल्य जानने की आवश्यकता है। हालांकि, यह एक बड़ी स्ट्रिंग है, और जब मैं DumpObj
का उपयोग कर रहा हूं तो WinDbg इसे प्रिंट नहीं करेगा। यह DumpObj
से उत्पादन होता है:
0:036> !do 00000001b30d8668
Name: System.String
MethodTable: 0000064278436728
EEClass: 000006427803e520
Size: 5125300(0x4e34b4) bytes
(C:\WINDOWS\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
String: <String is invalid or too large to print>
Fields:
MT Field Offset Type VT Attr Value Name
000006427843d998 4000096 8 System.Int32 1 instance 2562638 m_arrayLength
000006427843d998 4000097 c System.Int32 1 instance 2562637 m_stringLength
0000064278438170 4000098 10 System.Char 1 instance 3c m_firstChar
0000064278436728 4000099 20 System.String 0 shared static Empty
>> Domain:Value 0000000000163260:000000007fff0370 00000000001a6760:000000007fff0370 <<
0000064278438020 400009a 28 System.Char[] 0 shared static WhitespaceChars
>> Domain:Value 0000000000163260:000000007fff0b60 00000000001a6760:000000007fff89f0 <<
मैं इस स्ट्रिंग उदाहरण के मान कैसे मिल सकता है? पसंदीदा रूप से एक फ़ाइल में डंप किया गया।
वास्तव में लंबे तारों के मामले में, प्रारंभ पता/अंतिम पता वाक्यविन्यास सीमाओं के कारण काम नहीं करेगा। आपको du
एल का उपयोग करने की आवश्यकता है? <लंबाई बाइट्स>। वास्तव में लंबे तारों के लिए, यह वास्तव में बहुत लंबा लगेगा और WinDbg अब और प्रतिक्रिया नहीं दे रहा है। –मुझे कमांड विंडो में लॉग में एक ही संदेश मिलता है: <स्ट्रिंग अमान्य है या प्रिंट करने के लिए बहुत बड़ा है> –
मुझे समझ में नहीं आता है। आप किस प्रकार का आदेश टाइप करेंगे? –