मैं सी में लिखे गए डीएलएल में एक समस्या को डीबग करने की कोशिश कर रहा हूं जो पहुंच उल्लंघन का कारण बनता है। मैं विजुअल सी ++ 2008 का उपयोग कर रहा हूं, लेकिन कोड सीधे सीमैं अपवादों पर वीसी ++ के डीबगर ब्रेक कैसे बना सकता हूं?
मुझे डेल्फी के लिए उपयोग किया जाता है, जहां डीबगर के तहत चलते समय कोई अपवाद होता है, तो प्रोग्राम तुरंत डीबगर को तोड़ देगा और यह आपको देगा कार्यक्रम राज्य की जांच करने का मौका।
First-chance exception at blah blah blah: Access violation reading location 0x04410000.
नहीं टूटता है, कुछ भी नहीं: विजुअल C++ में, हालांकि, सभी मैं आउटपुट टैब में एक संदेश है। जब तक यह मेरे डेल्फी EXE में वापस नहीं आ जाता है, तब तक यह स्टैक चला जाता है और अनदेखा करता है, जो मुझे कुछ गलत पहचानता है और मुझे वहां अलर्ट करता है, लेकिन उस बिंदु तक मैंने कॉल स्टैक की कई परतें खो दी हैं और मुझे नहीं पता कि क्या हो रहा है।
मैंने अन्य डीबगिंग तकनीकों का प्रयास किया है, लेकिन जो भी हो रहा है वह एक सी मैक्रो के अंदर घोंसला वाले लूप के भीतर गहराई से हो रहा है जिसे 500 से अधिक बार बुलाया जा रहा है, और यह मेरे कौशल (या मेरे धैर्य) से थोड़ा सा है के माध्यम से पता लगाने।
मैं समझ वहाँ किसी तरह "पहले मौका" अपवाद प्राप्त करने के लिए वास्तव में मुझे एक "मौका" इसे संभाल करने के लिए देने के लिए हो गया है। शायद कुछ "पहले मौके अपवादों पर तत्काल तोड़ें" कॉन्फ़िगरेशन सेटिंग जो मुझे नहीं पता है, लेकिन ऐसा लगता है कि यह सब खोजने योग्य नहीं है।
क्या किसी को पता है कि यह कहां है और इसे कैसे सक्षम किया जाए?
धन्यवाद। वह काम किया। मुझे आश्चर्य है कि प्रवेश उल्लंघन क्यों डिफ़ॉल्ट रूप से चेक नहीं किया जाता है ... –
@Mason: कोई समस्या नहीं। मुझे नहीं लगता कि उनमें से कोई भी डिफ़ॉल्ट रूप से चेक किया गया है। मेरा अनुमान है कि "अपवाद तोड़ना" सक्षम होने पर काफी महत्वपूर्ण प्रदर्शन दंड होता है (हालांकि मुझे वास्तव में पता नहीं है)। –
मुझे ऐसा नहीं लगता। मैं सी ++ को अच्छी तरह से नहीं जानता, लेकिन डेल्फी में, प्रदर्शन जुर्माना तब तक शून्य होता है जब तक यह वास्तव में एक पर टूट जाता है, और जब (अगर) ऐसा होता है, तो आमतौर पर इसका मतलब है कि कुछ गलत हो गया है और डीबगर बिल्कुल वही है जहां आप चाहते हैं हो। –