2012-12-20 31 views
7

मेरे पास एक सी ++ समाधान है। स्टार्टअप प्रोजेक्ट एक एक्सई है। समाधान में सी # डीएलएस (लक्ष्यीकरण .NET Framework 2.0) हैं जो COM इंटरऑप के लिए पंजीकृत हैं। जब मैं सी # कोड में ब्रेकपॉइंट डालता हूं तो मुझे "No native symbols in symbol file"सी 0+ समाधान से सी ++ समाधान से डीबग सी # डीएल COM

के साथ खोखला लाल ब्रेकपॉइंट मिलता है। मैंने COM12 कॉल करने वाले स्टार्ट-अप प्रोजेक्ट पर मिश्रित करने के लिए Project Property Pages -> Debugging -> Debugger Type सेट करने का प्रयास किया है।

मैंने Debug -> Windows -> Modules चेक किया है। इसने मेरे डीएलएस लोड किए हैं, और प्रतीक स्थिति "No native symbols in symbol file" है।

यह दुनिया का अंत नहीं है क्योंकि यदि मैं Debug -> Start Without Debugging और फिर Debug -> Attach to Process करता हूं, तो Attach To:Managed (v2.0, v1.1, v1.0) code, Native code बदल रहा है। फिर मैंने सी ++ कोड और सी # कोड दोनों में ब्रेकपॉइंट्स मारा।

तो मेरे पास मेरा कामकाज है लेकिन मुझे लगता है कि अगर मैं प्रक्रिया को जोड़कर ऐसा कर सकता हूं - मुझे बस डिबगिंग करके ऐसा करने में सक्षम होना चाहिए।

मैं अपने सी # ब्रेकपॉइंट्स को Debug -> Start Debugging करके कैसे कर सकता हूं?

+0

संदेह एक व्यवहार्य तरीका है कि वहाँ, मैं एक ही करने की कोशिश की, और ऐसा करने की कोशिश कर रहा घंटे बिताए और अंत में वह प्रक्रिया है जिसके ठीक काम करता है के लिए देते हैं उपयोग करने के साथ अटक गई। – SinisterMJ

+0

पर्याप्त मेला, मुझे इसे संसाधित करने के लिए अनुलग्नक का उपयोग करने में कोई समस्या नहीं है, केवल उन चीजों में से एक है जहां आप इसे छोड़ नहीं सकते हैं क्योंकि आपको लगता है कि "निश्चित रूप से एक रास्ता होना चाहिए" – Liam

+1

मुझे यह समस्या भी है और मुझे लगता है कि मौलिक मुद्दा यह है कि "मिश्रित" मूल + प्रबंधित (v4.0) का चयन करता है, इसलिए स्टार्टअप सेटिंग्स से मूल + प्रबंधित (v2.0) का चयन करने का कोई तरीका नहीं है। –

उत्तर

1

मुझे यकीन है कि इससे मदद मिलेगी, लेकिन हम सी # और सी ++ के साथ बहुत कुछ काम करते हैं। मैंने सी ++ प्रोजेक्ट और सी # प्रोजेक्ट को उसी समाधान में रखकर और सी # प्रोजेक्ट में "मूल डिबगिंग" सक्षम करके यह संभव पाया। तब मैं डिबगिंग के दौरान उनके बीच आगे बढ़ने में सक्षम था। -> डिबगिंग

सी ++ परियोजना के गुण, गोटो विन्यास गुण में:

+0

मेरे पास एक ही समाधान में दोनों परियोजनाएं हैं और वीएस -2010 में मैंने सभी सी # परियोजनाओं पर "अप्रबंधित कोड डिबगिंग सक्षम करें" सेट किया है। यह अब भी काम नहीं करता है। मुझे लगता है कि स्टार्टअप प्रोजेक्ट एक सी ++ exe है कि डीबगर को केवल देशी पर सेट किया गया है जब भी मुझे डी ++ प्रोजेक्ट गुणों में मिश्रित करने के लिए डीबगर प्रकार सेट किया गया हो। – Liam

4

मैं ऐसा करके VS2008 में एक सी ++ परियोजना से मेरी सी # dll डिबग करने के लिए निम्नलिखित में सक्षम था। मिश्रित करने के लिए "डीबगर प्रकार" सेट करें। "अटैच" को

डीबग टैब में, अपने सी # प्रोजेक्ट गुणों में, अपने सी ++ प्रोजेक्ट के निष्पादन योग्य में "प्रारंभ करें बाहरी प्रोग्राम" सेट करें।

+1

मेरे लिए बहुत अच्छा काम करता है! धन्यवाद! –

2

मुझे पता है कि यह थोड़ा पुराना है लेकिन मुझे समस्या का व्यावहारिक समाधान मिला।

मुझे सी ++ एप्लिकेशन का उपयोग करते समय एक ही समस्या थी जो सी # COM-ऑब्जेक्ट का उपयोग करता है। मैंने सी ++ और सी # पक्ष पर विजुअल स्टूडियो के भीतर कई सेटिंग्स की कोशिश की। जब तक मैंने डीबगर को मैन्युअल रूप से लॉन्च करने की कोशिश नहीं की, तब तक कुछ भी मदद नहीं करता है।

आप का उपयोग

Debugger.Launch(); 

मैन्युअल रूप से अपनी सी # DLL पर डीबगर शुरू करने के लिए कर सकते हैं। मुझे पता है कि यह सबसे अच्छा नहीं बल्कि एक व्यावहारिक तरीका है। बाद में उत्पादक वातावरण में आपको डीबगर लॉन्च फ़ंक्शन को हटाना होगा :)।

सादर