मैंने एक बसपा स्तर के रेंडरर को लिखा है और सभी विशिष्ट - इस लाइन के कारण दुर्घटना - त्रुटियों को दूर कर दिया है। समस्या यह है कि अब, मुझे कुछ गैर-विशिष्ट त्रुटियां मिल रही हैं जैसे:

"Unhandled exception at 0x77318db9 in Lantern.exe: 0xC0000005: Access violation writing location 0x00000014."

यह तब होता है जब मैं अपना प्रोग्राम बंद करता हूं और विजुअल स्टूडियो में, _file.c जैसे विंडोज़ हेडर पॉप अप होंगे लेकिन यह विशिष्ट नहीं है कि त्रुटि क्या हो सकती है। विशिष्ट प्रकार के बीएसपी मानचित्र डेटा के साथ प्रोग्राम लोड करते समय मुझे अन्य स्मृति समस्याएं मिलती हैं। क्या किसी के पास इन सामान्य मुद्दों को डीबग करने के लिए सुझाव हैं? मेरे पास एक त्रुटि लकड़हारा है, इसलिए मैं देख सकता हूं कि परेशानी होने से पहले कौन से कार्य सही ढंग से समाप्त हो गए थे, लेकिन यह हमेशा त्रुटि को इंगित करने में मेरी मदद नहीं करता है।

क्या विजुअल स्टूडियो 2010 का उपयोग करते हुए त्रुटि डिबगिंग के लिए कोई गाइड है। आप उन त्रुटियों को कैसे डिबग करते हैं जिन्हें आप चलाते हैं जब वे मेरे द्वारा वर्णित के समान होते हैं? क्या त्रुटि उत्पन्न करने वाले फ़ंक्शन को खोजने का कोई तरीका है?

धन्यवाद!

0
Satchmo Brown 12 नवम्बर 2011, 13:04

2 जवाब

सबसे बढ़िया उत्तर

मुझे पता चला कि त्रुटि क्या थी। जाहिर है, एसडीएल का उपयोग करते समय, एप्लिकेशन को परेशानी होगी यदि आप SDL.lib और SDLmain.lib को #pragma टिप्पणी के साथ लिंक करते हैं, न कि प्रोजेक्ट सेटिंग्स में लिंकर के माध्यम से।

शायद उनके कोड में एक बग, सुनिश्चित नहीं है।

चीयर्स!

0
Satchmo Brown 13 नवम्बर 2011, 01:36

उस विशेष त्रुटि को देखते हुए मुझे लगता है कि आपके पास कहीं न कहीं एक अशक्त सूचक है, क्योंकि यह काफी संभावना नहीं है कि आप अन्यथा 0x00000014 के आसपास पोक कर रहे होंगे।

प्रोग्राम को डीबगर में चलाएं, और जब यह टूट जाता है तो आपको या तो उस स्थान पर होना चाहिए जहां त्रुटि हुई, या निष्पादन में आगे पीछे जाने के लिए कॉल स्टैक विंडो को देखने में सक्षम होना चाहिए और शायद यह पता लगाना चाहिए कि यह कहां गलत हुआ। यदि आप स्टैक को दूषित कर रहे हैं तो इसे ट्रैक करना अधिक कठिन होगा।

यदि आपको परिणामों की व्याख्या करने में अभी भी कठिनाई हो रही है, तो यह फ़ंक्शन के उन हिस्सों को #if 0 करने में मदद कर सकता है जिनके बारे में आपको संदेह है कि यह संभावनाओं को कम करने के लिए गलत हो रहा है।

3
Retired Ninja 12 नवम्बर 2011, 13:11
शुक्रिया। एक शून्य सूचक समझ में आता है। जब आप कहते हैं कि प्रोग्राम को डीबगर में चलाएं, तो क्या आपका मतलब है, संकलित EXE चलाएं और डीबगर या कुछ और संलग्न करें। साथ ही, मैं कॉल स्टैक में क्या ढूंढ रहा हूं। वहां बहुत सारा सामान।
 – 
Satchmo Brown
12 नवम्बर 2011, 13:18
आपके द्वारा संकलित करने के बाद आप F5 दबा सकते हैं, हरे तीर पर क्लिक कर सकते हैं, या डीबग-> डिबगिंग प्रारंभ करें प्रोग्राम को डीबगर में चलाने के लिए चुनें। यदि आपको एक कार्यशील निर्देशिका या तर्क निर्दिष्ट करने की आवश्यकता है तो आप डीबगिंग के तहत प्रोजेक्ट प्रॉपर्टी शीट में ऐसा कर सकते हैं।
 – 
Retired Ninja
12 नवम्बर 2011, 13:24
आह हाँ। तब मैं डीबगर का उपयोग कर रहा हूं। हालांकि बाहर निकलने पर अभी भी वही विचित्र संदेश मिल रहा है। ओह अच्छा। कॉल स्टैक के बारे में आप मुझे क्या बता सकते हैं?
 – 
Satchmo Brown
12 नवम्बर 2011, 13:25
इस तरह के संदेश विचित्र नहीं हैं... वे केवल विचित्र कोड का परिणाम हैं। क्या ऐसा होता है, जब आपके प्रोग्राम ने आपके 'मुख्य' फ़ंक्शन (या इसके समकक्ष) को छोड़ दिया है? यदि हां, तो आप शायद वैश्विक चर के साथ किसी प्रकार की विमुद्रीकरण समस्या में भाग गए हैं। क्या स्टैक में '_onexit' या समान प्रविष्टि है?
 – 
Paul Michalik
12 नवम्बर 2011, 16:38