मेरे पास एक सी साइट है जिसे हमने किसी ग्राहक साइट पर तैनात किया है। यह संकलित और एचपी-यूएक्स पर चलता है। उपयोगकर्ता ने एक दुर्घटना की सूचना दी है और हमने कोर डंप प्राप्त किया है। अब तक, मैं घर में दुर्घटना को डुप्लिकेट करने में असमर्थ रहा हूं।कोई प्रतीक के साथ डीबग कोर फ़ाइल
जैसा कि आपको संदेह होगा, मूल फ़ाइल/तैनात निष्पादन योग्य किसी भी प्रकार के प्रतीकों से पूरी तरह से रहित है। जब मैंने इसे gdb में लोड और एक bt करते हैं, सबसे अच्छा मैं यह है:
(gdb) bt
#0 0xc0199470 in ??()
मैं फ़ाइल पर एक 'तार कोर' कर सकते हैं, लेकिन मेरी समझ है सब मैं वहाँ मिलता है कि सभी निष्पादन योग्य में तार, तो ऐसा लगता है कि वहां कुछ भी ट्रैक करना असंभव लगता है।
मेरे पास निष्पादन योग्य के एक डीबग संस्करण (comp के साथ संकलित) है, दुर्भाग्य से रिलीज़ संस्करण की तुलना में कुछ महीने नए हैं।
warning: exec file is newer than core file.
Core was generated by `program_name'.
Program terminated with signal 11, Segmentation fault.
__dld_list is not valid according to __dld_flags.
#0 0xc0199470 in ??()
(gdb) bt
#0 0xc0199470 in ??()
यह एक डिबग संस्करण संकलन और ग्राहक की साइट पर यह तैनाती और फिर एक और दुर्घटना के लिए प्रतीक्षा करने संभव होगी, यह अपेक्षाकृत मुश्किल होगा: अगर मुझे लगता है कि हब के साथ gdb प्रारंभ करने का प्रयास है, मैं यह देख और कई कारणों से अवांछनीय।
मैं कोड से काफी परिचित हूं और ग्राहक के बग रिपोर्ट के आधार पर कोड में कहां क्रैश हो रहा है, इसके बारे में अपेक्षाकृत अच्छा विचार है।
क्या कोई तरीका है कि मैं इस कोर डंप से कोई और जानकारी प्राप्त कर सकता हूं? तारों या किसी अन्य डीबगर या कुछ के माध्यम से? धन्यवाद।
यह उत्तर मुझे हास्यास्पद रूप से लगता है। मैं निश्चित रूप से संभावित रूप से ओवररन क्षेत्रों के लिए कोड को देखता हूं। – Morinar
यदि "डुप्लिकेट" प्रतिलिपि के साथ डीबगिंग कुछ भी नहीं दिखाती है, तो अब पंजीकरण करने और स्टैक डंप को देखना शुरू करने का समय है कि आप कहीं भी बीच में कैसे पहुंचे। यह एक उड़ा हुआ (या अनियंत्रित) फ़ंक्शन पॉइंटर, आवंटन ओवररन, या शायद एक गलत बफर आकार या बफर उड़ाने वाले "खराब" इनपुट भी हो सकता है (अनियंत्रित इनपुट आदि के साथ sprintf()/sscanf का उपयोग करके)। – jesup
मैंने कभी यहां कुछ भी नहीं देखा है, लेकिन मैं इसे स्वीकार कर रहा हूं क्योंकि यह अभी भी सबसे अधिक संभावना होने जैसा लगता है। – Morinar