मेरे पास एक स्थिर लाइब्रेरी है जो मैं डीबग मोड में बना रहा हूं, लेकिन जब मैं इसमें कदम रखता हूं तो मुझे अभी भी डिस्सेप्लर मिलते हैं। मैं जानना चाहता हूं कि एनएम या किसी अन्य उपकरण का उपयोग कैसे किया जाए ताकि यह सुनिश्चित किया जा सके कि डीबग प्रतीकों को छीन लिया नहीं जा रहा है।डीबग प्रतीकों का निर्यात किया जा रहा है या नहीं, यह देखने के लिए मैं एक स्थिर पुस्तकालय का निरीक्षण कैसे कर सकता हूं?
उत्तर
डाउनलोड Dependencywalker अपने OS
के लिए यदि आपका dll डिबग प्रतीकों की पहचान करेगा। यदि आपको "प्रतीक" के अंतर्गत "अमान्य" दिखाई देता है, तो इसका अर्थ है कि डीबग प्रतीकों को हटा दिया गया है। मान्य मान हैं: पीडीबी, सीवी, डीबीजी, आदि
निर्भरतावालक केवल स्थिर पुस्तकालय के लिए नहीं, गतिशील पुस्तकालय का समर्थन करते हैं। इस मामले के लिए –
आप file कमांड का उपयोग कर सकते हैं, जो कई ओएस के लिए उपलब्ध है, जिसमें सिगविन के माध्यम से विंडोज भी शामिल है।
यदि यह कहता है कि 'छीन नहीं हुआ' तो इसका अर्थ है कि इसमें डीबग जानकारी मौजूद है।
एक साइड नोट के रूप में, स्थिर libs के लिए ar.o
फ़ाइलों को निकालने के लिए & सीधे file
का उपयोग करें।
'फ़ाइल' ठीक है, हालांकि यह ध्यान देने योग्य है कि सामान्य स्थिति में, डीबग जानकारी के बिना एक अप्रचलित बाइनरी संभव है। – Nick
आप उपयोग कर सकते हैं nm
के विकल्प --debug-syms
, nm
भी डिबगर प्रतीकों की सूची (यदि हो) वस्तु एक पुस्तकालय में पैक के लिए जाने के लिए।
डीबगर प्रतीकों के लिए दूसरा कॉलम N
इंगित करता है।
उदाहरण (वस्तु example.o मानता पुस्तकालय में होना)
nm --debug-syms libexample.a
आउटपुट (अंश):
example.o:
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 N .debug_abbrev
0000000000000000 N .debug_aranges
0000000000000000 N .debug_info
0000000000000000 N .debug_line
0000000000000000 N .debug_loc
0000000000000000 N .debug_pubnames
0000000000000000 N .debug_str
0000000000000000 r .eh_frame
0000000000000000 n .note.GNU-stack
0000000000000000 r .rodata
0000000000000000 t .text
...
अधिक जानकारी के लिए इस पर कृपया man nm
देखते हैं।
आज के रूप में, 2015-09-24, और मैक पर, 'फ़ाइल' कमांड में --debug-syms नहीं है। मुझे पता है कि यह एक बार पहले था। तो, यह बदल दिया जाना चाहिए। (त्रिकोणीय, यानी एनएम, ओटोल, और फ़ाइलों को समय-समय पर भारी रूप से बदला जा रहा है।) हालांकि, कार्यक्षमता अभी भी वहां है। ('फ़ाइल' संस्करण: 5.04) -D विकल्प: उदा। फ़ाइल-डी myGreadLibrary.a डी डीबगिंग संदेश प्रिंट करें। –
आप अपने स्थिर पुस्तकालय आकार को कम करने के लिए जांच कर सकते हैं कि आप strip -S libXX.a
का उपयोग कर सकते हैं। यदि इसमें डिबगिंग प्रतीकों को शामिल नहीं किया गया है तो स्थिर लाइब्रेरी आकार नहीं बदलेगा।
यह मैक ओएस पर जेकोड द्वारा उत्पन्न स्थिर पुस्तकालय की जांच करने के लिए काम करता है।
- 1. सुविधा लाइब्रेरी से प्रतीकों को निष्पादन योग्य में निर्यात नहीं किया जा रहा है
- 2. मैं यह देखने के लिए कैसे जांच सकता हूं कि एक डोजो संवाद लोड किया गया है या नहीं?
- 3. सशर्त संकलन प्रतीकों को परिभाषित नहीं किया जा रहा है
- 4. यह जांचने के लिए कि प्रोग्राम डीबग प्रतीकों के साथ संकलित किया गया था या नहीं?
- 5. ग्रहण में एक निरीक्षण वस्तु संरचना को मैं कैसे निर्यात या सहेज सकता हूं?
- 6. मैं कैसे जांच सकता हूं कि प्रतिबिंब का उपयोग कर कोई विधि स्थिर है या नहीं?
- 7. यह देखने के लिए नियमित अभिव्यक्ति का परीक्षण किया जा सकता है कि यह कम हो जाता है। *
- 8. मैं कैसे पता लगा सकता हूं कि कोरिया में एंड्रॉइड ऐप का उपयोग किया जा रहा है या नहीं?
- 9. क्या obj .__ dict__ का निरीक्षण किया जा सकता है यदि कक्षा में __dict__ चर है?
- 10. जीसीसी में, मैं सभी प्रतीकों को निर्यात किए बिना साझा लाइब्रेरी के लिए सभी टाइपइन्फो प्रतीकों को कैसे निर्यात कर सकता हूं?
- 11. मैं उन प्लगइन को कैसे डिबग कर सकता हूं जिन्हें चुपचाप अनदेखा किया जा रहा है?
- 12. स्थिर libs/execables की निर्भरताओं का निरीक्षण
- 13. क्या मैं विधि में कोड का निरीक्षण करने के लिए प्रतिबिंब का उपयोग कर सकता हूं?
- 14. क्या एमईएफ सिस्टम प्राप्त करने के लिए उपयोग किया जा सकता है। वर्गों का निर्यात चिह्नित [निर्यात]?
- 15. मैं कैसे निर्धारित कर सकता हूं कि मेरा टेक्स्टब्लॉक टेक्स्ट छंटनी जा रहा है या नहीं?
- 16. स्टेटिक पुस्तकालय डिबग प्रतीकों
- 17. DLLImport Int ** - यह कैसे किया जा सकता है अगर यह किया जा सकता है
- 18. हास्केल: क्या मैं गलत समझ रहा हूं कि तीरों का उपयोग कैसे किया जा सकता है?
- 19. मैं यह देखने के लिए चेक कैसे कोड कर सकता हूं कि कोई तत्व माता-पिता का पहला या अंतिम है या नहीं?
- 20. निर्यात काम नहीं कर रहा
- 21. "गैर स्थैतिक चर यह एक स्थिर संदर्भ से संदर्भित नहीं किया जा सकता है"?
- 22. यह पता लगाने के लिए कि यह किस चर का उपयोग करता है, मैं एक फ्रीमार्कर टेम्पलेट का निरीक्षण कैसे कर सकता हूं?
- 23. मैं एक एमएसबील्ड फ़ाइल कैसे डीबग कर सकता हूं?
- 24. जब मैं देशी Win32 एप्लिकेशन से कॉल किया जा रहा हूं तो मैं एक सी # COM असेंबली कैसे डीबग कर सकता हूं?
- 25. तत्काल खिड़की, "अभिव्यक्ति का मूल्यांकन नहीं किया जा सकता है ...."
- 26. मैं मीडिया फ़ाइल का स्थिर चेकसम कैसे बना सकता हूं?
- 27. क्या यह जानने का कोई तरीका है कि किस कंपाइलर ने स्थिर पुस्तकालय बनाया है?
- 28. वास्तविक MAVEN_OPTIONS का उपयोग कैसे किया जा रहा है?
- 29. ग्रहण 3.6 में "निरीक्षण" विंडो को याद नहीं किया जा रहा है
- 30. क्या Log4JLogger का मूल कारण पाया जा सकता है या उपयोग नहीं किया जा सकता है?
कोई विशेष ओएस? –
'मैन एनएम' एक शुरुआत हो सकती है। –
चूंकि आप सुनिश्चित हैं कि आप डीबग प्रतीकों के साथ अपनी स्थिर lib बना रहे हैं, मेरा मानना है कि आपका प्रोग्राम नवीनतम स्थैतिक lib के साथ जुड़ा हुआ नहीं है। इसे अन्य मशीन पर संकलित/लिंक किया गया है या आपने इस मशीन पर इसे पुनः संयोजित/लिंक नहीं किया है। – ernesto