2012-02-21 19 views
11

this question का उत्तर देने का प्रयास करते समय मैंने फैसला किया कि मुझे डिबगर दृश्य में हाथ से मार्शलिंग प्रक्रिया के माध्यम से कदम उठाने की आवश्यकता है।विजुअल स्टूडियो में "मूल संक्रमण में प्रबंधित" के माध्यम से कदम?

दुर्भाग्यवश, विजुअल स्टूडियो इस सभी रोचक कोड पर कूदने लगता है। यहाँ पी/आह्वान है GetProfilesDirectory करने के लिए कॉल (एक WinAPI समारोह):

enter image description here

लेकिन यह कॉल (F11), मैं FFF9BFD8 पर अपने आप को नहीं मिलता में कदम के बाद; बल्कि, मैं सही GetProfilesDirectory कोड में देश:

enter image description here

भी ढेर पर [Managed to Native Transition] प्रविष्टि नहीं है, तथ्य यह है कि दृश्य स्टूडियो सिर्फ कोड की एक पूरी गुच्छा लांघ था पर इशारा।

मैं इस संक्रमण के माध्यम से कैसे कदम उठा सकता हूं?

+5

खैर भगवान, मैं इस समस्या पहले से ही पाया: आप एक कोड संपादक में एक चर-चौड़ाई फ़ॉन्ट का उपयोग कर रहे हैं! वह सिर्फ पागलपन है। –

+1

पवित्रता! बेहतर पूछें कि वे किस फ़ॉन्ट का उपयोग करते हैं, यह सुनिश्चित करने के लिए कि मैं अपनी पागलपन से पर्ची नहीं करता हूं! –

उत्तर

3

मुझे आश्चर्य है कि किसी ने भी सुझाव नहीं दिया है कि आप डीबग विंडो में बाहरी कोड दिखाएं। यदि आप [प्रबंधित करने के लिए मूलभूत संक्रमण] लाइन पर राइट क्लिक करें और बाहरी कोड विकल्प दिखाएं, तो आप देखेंगे कि संक्रमण में कौन सी विधियां कह रही हैं। यह आपको एक बेहतर विचार दे सकता है।

Display Native to Managed Transition

इसके बाद आप किसी भी (धूसर) रेखा और Disassembly पृष्ठ कोड का उपयोग खुल जाएगा पर डबल क्लिक करने के लिए सक्षम हो जाएगा: यहाँ एक उदाहरण है। एक और उदाहरण:

enter image description here

1

विजुअल स्टूडियो में, आप ऐसा नहीं कर सकते हैं, यानी प्रबंधित करने के दौरान प्रबंधित होने के दौरान क्या हो रहा है यह देखने के लिए वीएस डीबगर को एक मोड में स्विच करने का कोई तरीका नहीं है।

आप WinDbg + SOS/SOSEX को आजमा सकते हैं क्योंकि WinDBG आपके द्वारा इस प्रकार के विवरण छुपा नहीं जाता है। हालांकि, वह हिस्सा या तो .NET या Windows आंतरिक अमूर्त है, इसलिए यदि आप इसे देख सकें, तो शायद यह देखने के लिए कि आप वास्तव में क्या चल रहे हैं (असेंबली के अलावा), आपको mscorlib के लिए निजी प्रतीकों की आवश्यकता होगी, mscoreei , या क्लियर डीएलएस (पीडीबी फाइलें)।