2011-08-17 15 views
14

मेरे पास एक ईएलएफ ऑब्जेक्ट फ़ाइल है। मैं जानना चाहता हूं कि इसमें किस प्रकार की डिबगिंग जानकारी है। इसे पीपीसी आर्किटेक्चर के लिए डायब कंपाइलर (सी स्रोत) के साथ संकलित किया गया था। मुझे यकीन है कि यह डिबगिंग प्रतीकों के साथ बनाया गया था।मैं कैसे जान सकता हूं कि ईएलएफ ऑब्जेक्ट फ़ाइल में किस प्रकार की डीबग जानकारी है?

मैंने dwarfdump के साथ डीबगिंग जानकारी निकालने का प्रयास किया है, लेकिन मैं काम नहीं करता इसलिए मुझे लगता है कि डीबगिंग जानकारी DWARF प्रकार नहीं है।

$ dwarfdump file.elf 
No DWARF information present in file.elf 

डीबगिंग जानकारी दिखाने के लिए objdump का उपयोग खाली हो जाता है।

$ objdump -g file.elf 
file.elf:  file format elf32-powerpc 

यह हो सकता है कि इस ELF फ़ाइल जानकारी डिबगिंग भले ही ELF फ़ाइल वर्गों .debug_sfnames, .debug_srcinfo और .debug.srcinfo का आह्वान किया है शामिल नहीं है? या एक प्रारूप में संग्रहीत डीबगिंग जानकारी है जो objdump संभाल नहीं सकती है?

+1

क्या आप कहीं फ़ाइल पोस्ट कर सकते हैं? –

+3

"objdump -W file.elf" के साथ भी प्रयास करें, बस मामले में। मुझे लगता है कि objdump -g तब तक खुश नहीं होगा जब तक कि जानकारी STABS – NullPointer

+1

ठीक है, मैंने इसे समझ लिया। खैर मैं अभी भी वास्तव में नहीं जानता कि ईएलएफ फ़ाइल में किस प्रकार की डिबगिंग जानकारी है, लेकिन मुझे इसे निकालने का आदेश मिला। ddump2 -D elffile चाल करता है। मुझे लगता है कि ddump2 टूलचैन से संबंधित है जो डायब कंपाइलर के साथ आया था। – johnj33

उत्तर

6

आप शायद nm

एनएम उपयोगिता का उपयोग वस्तु फ़ाइल में प्रदर्शित होने के प्रतीकात्मक जानकारी, निष्पादन योग्य फ़ाइल प्रदर्शित करते हैं, या वस्तु फ़ाइल फ़ाइल द्वारा नामित पुस्तकालय जाएगा चाहिए। यदि मान्य इनपुट फ़ाइल के लिए कोई प्रतीकात्मक जानकारी उपलब्ध नहीं है, तो एनएम उपयोगिता उस तथ्य की रिपोर्ट करेगी, लेकिन इसे स्थिति में कोई त्रुटि नहीं मानती।

वैकल्पिक रूप से आप बाइनरी द्वारा पुस्तकालयों की आवश्यकता के अनुसार ldd जैसे टूल का उपयोग कर सकते हैं।

3

ऐसा लगता है कि किसी ने कभी भी आपके वास्तविक प्रश्न का उत्तर नहीं दिया है, जो है: किसी दिए गए ईएलएफ बाइनरी में मौजूद डीबग प्रतीकों का स्वाद प्रोग्रामेटिक रूप से कैसे निर्धारित किया जाए। जैसा कि मैं कह सकता हूं उतना ही अच्छा है, यह ईएलएफ के भीतर स्पष्ट रूप से नहीं दिया गया है; हालांकि, इसे ईएलएफ फ़ाइल के भीतर विशिष्ट अनुभाग नामों की उपस्थिति से अनुमानित किया जा सकता है। उदाहरण के लिए: ".debug_info" नामक एक अनुभाग का अर्थ है DWARF2 या बेहतर, जबकि ".stab" stabs का तात्पर्य है। आपके ".debug_sfnames" का एक त्वरित googling DWARF1 का सुझाव देता है। (मैं क्यों अपने 'dwarfdump' की पहचान नहीं था कि ... शायद आपके dwarfdump नए बौनों के लिए है पता नहीं है, और पश्च संगतता फेंक दिया?)

3

जीएनयू/लिनक्स में:

$ readelf --debug-dump=info /absolute/path/to/file | grep "Version" | uniq 

रिटर्न द्विआधारी में उपयोग किए गए डीडब्ल्यूएआरएफ प्रतीक संस्करण।

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

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