2012-06-11 9 views
14

मैं एक मॉड्यूल डिबग कर रहा हूं जिसके लिए मेरे पास केवल .exe और a .pdb निजी प्रतीकों के बिना है।
डीबग सत्र के दौरान मुझे एक आंतरिक संरचना का निरीक्षण करने की आवश्यकता है। स्पष्ट रूप से यह संरचना पीडीबी में दिखाई नहीं दे रही है क्योंकि यह निजी है - लेकिन सौभाग्य से मेरे पास एक .h फ़ाइल है जहां यह संरचना परिभाषित की गई है। इसलिए मैं कुछ डमी मॉड्यूल का निर्माण कर सकता हूं जो इस संरचना का उपयोग करता है और एक पीडीबी फ़ाइल प्राप्त करता है जिसमें यह संरचना होती है।WinDbg को एक अनलोड किए गए मॉड्यूल के प्रतीक लोड करने के लिए मजबूर करना

अब मेरे पास संरचना प्रतीकों के साथ एक अनलोडेड मॉड्यूल है, और मैं उस संरचना को कुछ स्मृति डालने के लिए अपने प्रतीकों को लोड करना चाहता हूं। (बेशक, मूल .exe मैं डिबगिंग रहा हूँ उतारने के बिना)
समस्या: ऐसा लगता है कि WinDbg केवल लोड मॉड्यूल के लिए लोड हो रहा है प्रतीकों की अनुमति देता है ...

मेरा प्रश्न है: वहाँ मैं कर सकता है एक आसान तरीका है अनलोड किए गए मॉड्यूल से मेरे प्रतीकों को लोड करें?

मैंने .reload /i /f MyDll.dll की कोशिश की है लेकिन मुझे हमेशा ...MyDll.dll - unmatched मिलता है।
सहानुभूति स्थापित करने से मदद नहीं मिली।

कोई विचार?

उत्तर

15

आप विंडबग को किसी विशिष्ट पते पर प्रतीकों को लोड करने के लिए मजबूर कर सकते हैं उदा।

0:000> .reload /f /i MyDll.dll=77777777 
    c:\sym\MyDll.pdb - unmatched 
0:000> lm 
start    end     module name 
00000000`55555555 00000000`55555555 notepad (no symbols) 
00000000`77530000 00000000`7762a000 USER32  (deferred) 
00000000`77777777 00000000`77777777 MyDll_77777777 (private pdb symbols) c:\sym\MyDll.pdb 

यहां बेजोड़ चेतावनी है क्योंकि windbg नहीं बता सकता कि प्रतीकों मॉड्यूल का सही संस्करण से मेल खाते हैं, क्योंकि इसमें कोई टाइमस्टैम्प या चेकसम पा सकते हैं।

+0

मुझे डीएलएल लोड करने के लिए पता कहां मिल सकता है .. – 51k

17

एक बेहतर तरीका .reload /unl MyDll.dll

अनलोड मॉड्यूल सूची में शामिल है (छवि/pdb मिलान के लिए) टाइमस्टैम्प और छवि आधार पता है। /unl का उपयोग करके WinDBG को उस जानकारी का उपयोग करने के लिए कहता है।

+1

धन्यवाद: आपका आदेश केवल एक ही बदलाव है जो मेरे लिए काम करता है! – olegvs

+0

यह मेरे लिए भी काम किया .. – 51k