2009-02-27 21 views
6

में एक डीएलएल फ़ाइल डीबग कैसे करें मैं विजुअल सी ++ पर काम कर रहा एक डेवलपर हूं, लेकिन मेरे प्रोजेक्ट में कुछ Delphi घटक हैं। मुझे कुछ मुद्दों को ठीक करने के लिए डेल्फी घटकों को डीबग करने की आवश्यकता है।डेल्फी

डीबग में एक डीएलएल फ़ाइल जेनरेट करने के लिए जरूरी चीजें क्या हैं और फिर डेल्फी में डिबगिंग शुरू करें?

उत्तर

20

डेल्फी 7 में आप यह करेंगे:

परियोजना | विकल्प | कंपाइलर | डिबगिंग | डीबग जानकारी (चेक)

फिर रन पर जाएं | पैरामीटर | मेजबान आवेदन करें और अपने exe का नाम दर्ज करें।

अपने डीएलएल कोड में कुछ ब्रेकपॉइंट जोड़ें और फिर चलाएं क्लिक करें। आपका एक्सई लोड हो जाएगा और आप डेल्फी आईडीई में डीएलएल भागों को डीबग कर सकते हैं।

यदि आपका exe पहले से चल रहा है, तो रन पर क्लिक करें।

कार्रवाई करने के लिए देते हैं - मैं इस परीक्षण किया और पाया मैं भी डेल्फी 7 में परियोजना विकल्पों में से लिंकर पृष्ठ पर "रिमोट डिबग प्रतीक शामिल"

मैं एक प्राप्त करने में सक्षम था की जाँच करने के लिए आवश्यक है कि गया है रन का उपयोग कर हिट करने के लिए ब्रेकपॉइंट | पैरामीटर के साथ ही रन | प्रक्रियाओं को संसाधित करने के लिए संलग्न करें। परीक्षण डीएलएल मैंने बनाया था एक एकल stdcall समारोह था और एक दृश्य सी ++ कंसोल अनुप्रयोग द्वारा गतिशील रूप से लोड किया गया था।

+0

@ चैपल। क्या आप निश्चित रूप से प्रक्रिया को संलग्न करने के लिए डीएलएल डीबग करने के लिए उपयोग किया जा सकता है? –

+0

मैंने वही काम किया है लेकिन ब्रेक पॉइंट मार नहीं रहा है। मुझे लगता है कि कोड और डीबगर के बीच का मिलान स्थापित नहीं हो रहा है। वहां पीडीबी की अवधारणा नहीं होगी (वीसी 6 में मौजूद) वहां होगी। – coolcake

+1

रिमोट डीबग प्रतीकों को आवश्यक नहीं होना चाहिए – dummzeuch

4

हम इसे अक्सर उपयोग करते हैं (डेल्फी का उपयोग करके)।

सुनिश्चित करें कि करने के लिए:

  1. (DLL फ़ाइल (रों)) सभी परियोजनाओं पर सभी डिबग विकल्प सक्षम करें। और अनुकूलन अक्षम करें।
  2. होस्ट एप्लिकेशन को सही EXE फ़ाइल में सेट करना सुनिश्चित करें।
  3. डीएलएल फ़ाइल बनाएं।

अब आप दोनों डीएल और एक्सई में ब्रेकपॉइंट डाल सकते हैं। और आईडीई से डीएलएल फ़ाइल चलाएं। यह EXE फ़ाइल शुरू करता है और अनुरोधित ब्रेकपॉइंट्स पर रुक जाता है।

यह तब भी काम करता है जब DLL फ़ाइलों को गतिशील रूप से लिंक किया जाता है (यदि वे नीले बिंदुओं को अपरिवर्तित कर रहे हैं)।

0

विधि गेमकैट का सुझाव दिया गया है जो मैंने पहले उपयोग किया है।

एक और तरीका यह है: मेरे पास डीएलएल परियोजना है, लेकिन मैं "टेस्ट बेंच" प्रोजेक्ट भी बनाती हूं। "टेस्ट बेंच" प्रोजेक्ट में एक ऐसा फॉर्म होता है जो सीधे उस कोड का उपयोग कर सकता है जो आमतौर पर डीएलएल में उपयोग किया जाता है।