2013-10-27 9 views
5

मैंने QtCreator IDE का उपयोग करके मिंगव के साथ संकलित गैर-क्यूटी सी डीएलएल लिखा है।QtCreator का उपयोग कर डीएलएल प्रोजेक्ट को डीबग कैसे करें?

जब मैं एक प्रक्रिया में डीएलएल इंजेक्ट करता हूं, तो डीएलएल उस प्रक्रिया को कोड की एक निश्चित पंक्ति पर दुर्घटनाग्रस्त कर देता है। मैंने OutputDebugString के उपयोग के माध्यम से यह लाइन अपराधी होने के लिए पाया। मुझे पता है कि लाइन को कैसे ठीक किया जाए और डीएलएल काम करता है जब उस पंक्ति को संशोधित किया जाता है। हालांकि, डीबगर का उपयोग करने के तरीके के बारे में सीखने के उद्देश्य से, मैंने लाइन टूटा और असम्बद्ध किया है।

मैं क्यूटी क्रिएटर डीबगर का उपयोग कैसे करूं ताकि यह पता चल सके कि वही सटीक रेखा समस्या पैदा कर रही है?

enter image description here

+1

लाइब्रेरी के खिलाफ लिंक करने वाला एक छोटा प्रोग्राम लिखें जो समस्या को पुन: उत्पन्न करता है और इसे डीबगर में चलाता है। या आप वास्तव में "इंजेक्ट" के साथ क्या मतलब है? –

+0

@ फ्रैंकऑस्टरफेल्ड: http://en.wikipedia.org/wiki/DLL_injection यह एक निम्न-स्तर वाली डीएलएल फ़ाइल है जो पीड़ित प्रोसेस की स्मृति को संपादित करती है। मैं पुस्तकालय के खिलाफ लिंक नहीं कर सकता क्योंकि डीएलएल इंजेक्शन कैसे काम करता है। मैं एक और प्रक्रिया की स्मृति क्यों संपादित कर रहा हूं? मैं आक्रमण क्यूब नामक ओपन-सोर्स प्रोजेक्ट की स्मृति संपादित कर रहा हूं। इसका उद्देश्य एएसएम में सी कोड का अनुवाद कैसे किया जाता है और कंप्यूटर निम्न स्तर पर कैसे काम करता है, इस बारे में और जानने के लिए है। – user2924308

+1

ठीक है, आप केवल निष्पादन योग्य नाम टाइप कर सकते हैं, जो उपरोक्त विंडो में आपके डीएल और तर्कों का उपयोग करता है और QtCreator आपके लिए बाकी करेगा। – Lol4t0

उत्तर

3

समाधान DLL इंजेक्शन लगाने से पहले डिबगर निष्पादन से जुड़ी चलाने के लिए है: QtCreator डिबग मोड में संकलित करने के लिए, निम्न संवाद में F5 परिणाम दबाने कोई EXE क्योंकि वहाँ सेट किया जाता है। डीएलएल डीबग कॉन्फ़िगरेशन में बनाया जाना चाहिए और इसकी परियोजना को खोलने की जरूरत है। निर्देश here का उपयोग करके डीबगर संलग्न करें और डीएलएल इंजेक्ट करें। यदि निष्पादन योग्य क्रैश आपको चयनित स्टैक फ्रेम पर क्लिक करते समय स्टैक ट्रेस और अपना डीएलएल कोड देखना चाहिए। लेकिन सावधान रहें: यदि आपने प्रक्रिया की स्मृति को दूषित कर दिया है तो स्टैक ट्रेस अधूरा या गलत हो सकता है।

+0

बहुत बढ़िया! मैं लगभग निश्चित था कि यह संभव नहीं था। – user2924308

+0

@ user2924308 यदि आपको मेरा उत्तर उपयोगी लगता है, तो कृपया इसे स्वीकार करें। – Nazar554

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