मैं ऐसे प्रोग्राम के कोर डंप में संग्रहीत फ्रेम तक पहुंच बनाना चाहता हूं जिसमें डीबग प्रतीक नहीं हैं (मैं इसे सी में करना चाहता हूं)। जब मैं प्रोग्राम खोलता हूं और जीडीबी के अंदर कोर डंप करता हूं तो मुझे कार्यों के नाम सहित एक स्टैक ट्रेस मिलता है। उदाहरण के लिए:कोर डंप (जीडीबी के बिना) से फ्रेम कैसे पढ़ा जाए?
(gdb) bt
#0 0x08048443 in layer3()
#1 0x08048489 in layer2()
#2 0x080484c9 in layer1()
#3 0x0804854e in main()
सभी कार्यों के नाम .strtab खंड में निष्पादन योग्य में संग्रहीत हैं। मैं अलग-अलग फ्रेम के साथ स्टैक ट्रेस कैसे बना सकता हूं? बैच मोड में जीडीबी चलाना एक विकल्प नहीं है। और यह भी "जीडीबी से भागों की प्रतिलिपि की जरूरत है" भी एक बुरा विचार है क्योंकि कोड स्वतंत्र रूप से लिखा नहीं गया है।
तो मेरा प्रश्न अधिक सटीक बनाने के लिए: मुझे कोर डंप के अंदर बिंदु कहां मिल सकता है जहां मैं स्टैक जानकारी पढ़ना शुरू कर सकता हूं? क्या उन जानकारी तक पहुंचने के लिए किसी प्रकार की लाइब्रेरी है? एक संरचना मैं उपयोग कर सकते हैं? या इससे भी बेहतर, एक दस्तावेज कैसे उन सूचनाओं को कोर डंप के अंदर संरचित किया जाता है?
(मैं पहले से ही सवाल "how to generate a stack trace from a core dump file in C, without invoking an external tool such as gdb" देखा है, लेकिन बाद से वहाँ कोई वैध जवाब है, मैंने सोचा था कि मैं इसे फिर से पूछना होगा)
[संपादित करें] मैं लिनक्स 86 के तहत इस कर रहा हूँ
विंडोज, लिनक्स या MacOS? x86, x86_64, पीपीसी, आर्म ....? – Flexo
ओह भगवान, मुझे खेद है, भूल गया! लिनक्स, x86 – Uhlo
http://www.kernel.org/doc/man-pages/online/pages/man5/core.5.html – Flexo