2012-12-28 18 views
5

मैंने visual c++ 6.0 dll प्रोजेक्ट बनाया है और इसे मेरे c# कोड से उपयोग किया है। अब मैं dll डीबग करना चाहता हूं लेकिन मैं इसे करने में सक्षम नहीं हूं।सी # परियोजना से सी ++ डीएल डीबग कैसे करें?

मैं यह करने के निम्नलिखित विकल्प चुनें:

  • मेरी visual c++ परियोजना कोड में तोड़ने बिंदु डाल दिया।
  • डीएलएल बनाएं और इसे मेरे c# प्रोजेक्ट की निर्देशिका में कॉपी करें।
  • अब मैं अपना c# प्रोजेक्ट बनाता हूं और डीएलएल ठीक काम करता है (विधि पूरी तरह से कॉल कर रही है)।
  • अब मैं dll डीबग करना चाहता हूं।
  • मैं एक ब्लॉग का अनुसरण करता हूं और c++ प्रोजेक्ट खोलता हूं और से Attach to process चुनता हूं।
  • लेकिन मुझे visual c# प्रोजेक्ट की चल रही प्रक्रिया नहीं मिल रही है, जबकि यह कार्य प्रबंधक प्रक्रिया में उपलब्ध है।

मेरी c# परियोजना समाधान में मैं दो परियोजना यानी

  • वेब सेवा है
  • एक और एक webform application है जो वेब सेवाओं शुरू होता है (मैं एक url से आने के समय में dll विधि कहा जाता है) ।

अब मेरी मदद करें मुझे अपने डीएलएल को कैसे डीबग करना चाहिए। मैंने कई ब्लॉगों का पालन किया है लेकिन वे सभी Attaching process विधि पर ध्यान केंद्रित कर रहे हैं जो मेरी स्थिति में काम नहीं कर रहा है। मुझे क्या करना चाहिए?

उत्तर

9

आपको अप्रबंधित डीबगिंग सक्षम करने की आवश्यकता होगी, यह किसी भी परिदृश्य में डिफ़ॉल्ट रूप से चालू नहीं है क्योंकि आपका मुख्य प्रोग्राम प्रबंधित है।

आप इसे अपने सी # प्रोजेक्ट में प्रोजेक्ट> प्रॉपर्टीज> डीबग टैब के साथ करते हैं> "अप्रबंधित कोड डीबगिंग सक्षम करें" चेकबॉक्स पर टिकटें।

आप इसे चुनें> चयन बटन पर क्लिक करके प्रक्रिया के साथ संलग्न करें। "इन कोड प्रकारों को डीबग करें" रेडियो बटन चुनें और प्रबंधित और मूल दोनों पर टिकटें। यदि आपकी प्रक्रिया 64-बिट है तो आपको केवल मूल निवासी का सहारा लेना पड़ सकता है।

डीएलएल के स्रोत कोड में ब्रेकपॉइंट सेट करें और डीएलएल फ़ंक्शन का उपयोग करने वाले सी # कोड को लिखना सुनिश्चित करें। यदि आपको अभी भी ब्रेकपॉइंट प्राप्त करने में परेशानी है तो डीबग> विंडोज> मॉड्यूल का उपयोग करें और सत्यापित करें कि आप मॉड्यूल सूची में DLL देखते हैं। राइट-क्लिक करके अतिरिक्त समस्या निवारण जानकारी प्राप्त करें, सिंबल लोड जानकारी का चयन करें। जो डीडीगर को पीडीबी फ़ाइल के लिए देखे जाने का एक निशान दिखाता है।

+0

मैंने डीबगिंग को अप्रबंधित करने की कोशिश की लेकिन जैसा कि मैंने कहा कि मेरे पास एक वेब सेवा प्रोजेक्ट है और मेरे समाधान में एक फॉर्मुपप्लिकेशन है। मैंने इसे अपनी दूसरी परियोजना में सक्षम किया लेकिन पहले प्रोजेक्ट –

+0

में ऐसा कोई विकल्प नहीं मिला, कृपया यहां जाएं: https://dl.dropbox.com/u/20476478/Untitled।पीएनजी –

+0

यदि आपको कोई फर्क नहीं पड़ता तो क्या हम 5 मिनट के लिए चैट कर सकते हैं? –

0

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

+0

लेकिन ऐसा करने के लिए मुझे सी # प्रोजेक्ट –

+0

में लिखे गए सभी कोड प्रवाह को बदलना होगा, मुझे यकीन नहीं है कि आपको इसके लिए कोड प्रवाह बदलने की आवश्यकता क्यों है, आपको परियोजना संदर्भ में केवल डीएलएल संदर्भ बदलने की आवश्यकता है। या मुझे कुछ याद आती है? – SergeyS

+0

हां समस्या है क्योंकि मेरे पास दृश्य C++ प्रोजेक्ट से जुड़ा '.lib' है –

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