2011-08-02 10 views
12

मेरे पास है मेरे समाधान में निम्नलिखित तीन परियोजनाओं: 1. सी # पुस्तकालय 2. C++/CLI प्रबंधित कोड 3. सी ++ अप्रबंधित कोडकैसे मेरी सी से अप्रबंधित सी ++ पुस्तकालय में कदम रखने ++/CLI कोड

मैं मेरे सी # प्रोजेक्ट में "अप्रबंधित कोड डिबगिंग सक्षम करें" की जांच की, और डीबग/विन 32 में सी ++ परियोजनाओं दोनों का निर्माण किया। हालांकि, मैं अप्रबंधित कोड में कदम नहीं उठा सकता - जब मैं किसी भी अप्रबंधित विधि के कॉल पर F11 करता हूं, तो यह मुझे कुछ यादृच्छिक/गलत कोड दिखाता है।

क्योंकि मेरे यूनिट परीक्षण पास होते हैं, मुझे पता है कि मेरा अप्रबंधित कोड निष्पादित करता है।

मुझे क्या याद आ रही है?

+1

क्या आपके पास उस अप्रबंधित कोड के लिए .pdb फ़ाइलें हैं जिन्हें आप चरणबद्ध करने का प्रयास कर रहे हैं? –

+0

आप प्रबंधित प्रक्रिया शुरू करने का प्रयास कर सकते हैं और इसे रोक सकते हैं (किसी भी तरह से), अपने अप्रबंधित प्रोजेक्ट में ब्रेकपॉइंट रखें और "डीबग -> अटैच प्रक्रिया" का चयन करें, प्रबंधित प्रक्रिया का चयन करें और प्रबंधित प्रक्रिया जारी रखें। – Philipp

+0

@Steven: हाँ मुझे लगता है vc90.pdb –

उत्तर

10

जब मैं इस समस्या यह इन बातों में से एक से आ गया है लिया है:

1) सक्षम अप्रबंधित कोड डिबगिंग की जाँच नहीं की। आप इसे पहले ही तय कर चुके हैं।

2) EXE को x64 या कोई भी CPU के रूप में निर्मित किया गया (वे कहते हैं कि x64 काम करता है, लेकिन यह नहीं करता है)। मुझे लगता है कि आप इसे पहले ही तय कर चुके हैं।

3) "बस मेरे कोड" कभी कभी अप्रबंधित कोड डिबगिंग (उपकरण, विकल्प, डिबगर, बस मेरे कोड)

4) गलत डिबग विकल्पों सी में साथ परेशानी का कारण बनता है पर दिया जा रहा है ++ परियोजना सेटिंग्स

5) पीडीबी फाइलों को गुम, दूषित या बेमेल। डीबगर में चलते समय आप अपने सी ++ कोड में ब्रेकपॉइंट सेट करने का प्रयास करके इसकी जांच कर सकते हैं। यदि ब्रेकपॉइंट खोखले सर्कल में बदल जाता है, तो आपकी डीबग जानकारी में कुछ गड़बड़ है। डीबग मोड में चलाए जाने पर भी अपनी आउटपुट विंडो जांचें - यह आपको बताएगा कि किसके प्रतीक लोड हो गए हैं।

+0

मेरे लिए काम किया, धन्यवाद! –

+2

@Arne, 5 में से किस ने काम किया? –

+0

मेरे लिए, मुझे लगता है कि "बस मेरा कोड" समस्या का हिस्सा हो सकता है। –

3

मैंने इस मुद्दे को समय-समय पर "अन्य" तरीके से देखा है (यानी, देशी सी ++ से सी ++/सीएलआई तक) और आमतौर पर यह डीबगर के कारण होता है जो वास्तव में नहीं उठाता है कि यह देशी और दोनों को डीबग करना है। प्रबंधित कोड

आमतौर पर मेरे लिए, कॉन्फ़िगरेशन गुणों में डीबगर प्रकार सेट करना -> 'स्टार्टअप प्रोजेक्ट' में 'ऑटो' से 'मिश्रित' में डिबगिंग समस्या हल करती है।

+0

मैंने 'ऑटो' से 'मिश्रित' पर स्विच किया, जिसने मेरी मदद नहीं की। –

+0

मुझे न तो। मेरा ब्रेकपॉइंट हिट हो जाता है, लेकिन मुझे स्थानीय या वॉच विंडो आदि में किसी भी चर के बारे में कोई जानकारी नहीं है। –

+0

मैंने इसे भी देखा। अगर मैं केवल F5 डीबग करता हूं या सी # EXE से संलग्न करता हूं, तो वीएस मिश्रित डीबगर लोड नहीं करना चाहता था। हर बार जब मैंने डीबग किया तो मुझे यह निर्दिष्ट करने की आवश्यकता थी कि मैं देशी और .NET डिबगर्स दोनों चाहता हूं। –

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