मैं जीआईएमपी में कुछ कोड ढूंढना चाहता हूं और इसलिए डिबग प्रतीकों सक्षम के साथ जीआईएमपी की आवश्यकता है। मुझे याद नहीं है कि मैंने संकलन के दौरान उन्हें सक्षम किया है या नहीं। प्रोग्राम को पुन: सम्मिलित किए बिना इसे कैसे जांचें?यह जांचने के लिए कि प्रोग्राम डीबग प्रतीकों के साथ संकलित किया गया था या नहीं?
उत्तर
आप लिनक्स पर file
और objdump
का उपयोग कर सकते हैं। विशेष रूप से, आप देख सकते हैं कि फ़ाइल "स्ट्रिप" या "स्ट्रिप नहीं" कहती है, और objdump --syms
कुछ भी उपयोगी आउटपुट करता है (मेरे लिए, यह नियमित निर्माण के लिए "कोई प्रतीक नहीं" कहता है)।
जब objdump --syms
आदेश चलाकर, मैं (कम से कम कर्नेल के लिए वस्तुओं) की तुलना में उत्पादन में "कोई प्रतीकों" और अधिक देखते हैं।
यह जांचने के लिए कि कर्नेल ऑब्जेक्ट के अंदर डीबग जानकारी है या नहीं, आप objdump
कमांड के अंत में निम्नलिखित जोड़ सकते हैं: | grep debug
।
यदि यह स्ट्रिंग पाई जाती है, तो आप जानते हैं कि कर्नेल ऑब्जेक्ट में डीबग जानकारी है। यदि नहीं, तो यह एक "साफ" कर्नेल ऑब्जेक्ट है। एक कर्नेल मॉड्यूल के
उदाहरण मैं बिना डिबग जानकारी संकलित किया है:
[email protected]:~/mystuff/kernels/linux-3.12.6$ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91.ko | grep debug
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_str 00000000 .debug_str
00000010 l .debug_frame 00000000 $d
के रूप में:
[email protected]:~/mystuff/kernels/linux-3.12.6$ objdump --syms ./modules/lib/modules/3.12.6/kernel/drivers/i2c/busses/i2c-at91.ko | grep debug
है कि एक ही कर्नेल मॉड्यूल का उदाहरण मैं डिबग जानकारी के साथ संकलित किया है आप देख सकते हैं, पहला आउटपुट कुछ भी नहीं देता है, जबकि दूसरा आउटपुट debug
के साथ लाइनों को वापस करता है।
नोट: मेरे मामले में, file
कमांड ने मुझे डीबग और गैर-डीबग केस में "छीन लिया नहीं" वापस कर दिया। हालांकि, कर्नेल ऑब्जेक्ट के आकार में अंतर उल्लेखनीय था:
- लगभग। डीबग जानकारी के बिना 16k
- लगभग। 137k डीबग जानकारी के साथ
स्पष्ट रूप से, बाद के संस्करण में जानकारी डीबग थी।
मेरा प्रश्न: file
कमांड ऐसे मामलों में विश्वसनीय है? जो मैंने अनुभव किया है, उससे मैं objdump --syms ... | grep debug
कमांड पर भरोसा करता हूं।
मुझे भी 'फाइल' के साथ एक ही समस्या थी। मेरे लिए, 'grep' बिट के बिना' objdump --syms' गैर-डीबग बिल्ड पर भी कई परिणाम उत्पन्न करता है, लेकिन 'grep' विशिष्ट डीबग-केवल प्रतीकों को कॉल करने में मदद करता है, जो मेरे लिए काम करता है। – patrickvacek
+ 'फ़ाइल' आउटपुट में अस्पष्टता को साफ़ करने के लिए एक – ADJ
- 1. यह जांचने के लिए कि वर्चुअलएव '--no-site-packages' के साथ बनाया गया था या नहीं?
- 2. यह जांचने के लिए कि कोई ऑब्जेक्ट प्रारंभ किया गया था या नहीं? ऑब्जेक्टिव-सी
- 3. यह जांचने के लिए कि JCheckBox चेक किया गया है?
- 4. यह जांचने के लिए कि प्रोग्राम कंसोल से चलाया गया है या नहीं?
- 5. अमेज़ॅन SimpleEmail: यह जांचने के लिए कि कोई ईमेल डिलीवर किया गया है या नहीं?
- 6. सी # यह जांचने के लिए संभव है कि एक var परिभाषित किया गया है या नहीं?
- 7. यह जांचने के लिए कि iCloud प्रोग्रामेटिक रूप से कॉन्फ़िगर किया गया है या नहीं,
- 8. अलार्म सेट किया गया है या नहीं, यह जांचने के लिए कि
- 9. पायथन: वैकल्पिक फ़ंक्शन पैरामीटर सेट किया गया है या नहीं, यह जांचने के लिए कि
- 10. 'मेक' के साथ संकलित प्रोग्राम को डीबग कैसे करें?
- 11. यह जांचने के लिए कि बैश स्क्रिप्ट
- 12. यह जांचने के लिए कि सत्र मौजूद है या नहीं?
- 13. यह जांचने के लिए कि फ़ाइल बाइनरी है या नहीं?
- 14. आप कैसे जांच सकते हैं कि किस विकल्प के साथ संकलित किया गया था?
- 15. यह पता लगाने के लिए कि कौन से फ़ंक्शंस को रेखांकित नहीं किया गया था
- 16. यह जांचने के लिए कि कोई प्रोग्राम .NET का उपयोग कर रहा है या नहीं?
- 17. क्या यह बताने का कोई तरीका है कि क्या पाइथन कॉन्फ़िगर किया गया था और "--with-threads --enable-shared" के साथ संकलित किया गया था?
- 18. यह जांचने के लिए कि एक इरादा प्रसारित किया गया है
- 19. यह जांचने के लिए कि क्या PKAddPassesViewController
- 20. यह जांचने के लिए कि वर्डप्रेस
- 21. यह जांचने के लिए कि उपयोगकर्ता Zend Framework के साथ लॉग इन है या नहीं?
- 22. आईओएस के साथ, यह जांचने के लिए कि यूआरएल खाली है या नहीं,
- 23. यह जांचने के लिए कि क्या इटरेटर प्रारंभ किया गया है?
- 24. वेग: यह जांचने का कोई तरीका है कि चर परिभाषित किया गया है या नहीं
- 25. यह जांचने के लिए कि तत्व ने हैंडलर पर क्लिक किया है या नहीं?
- 26. क्या यह पता लगाने का कोई तरीका है कि क्या ऐप बाजार के साथ स्थापित किया गया था या नहीं?
- 27. यह जांचने के लिए कि .NET 4.0
- 28. यह जांचने के लिए कि जावास्क्रिप्ट सरणी
- 29. यह जांचने के लिए कि फ़ाइल
- 30. रेजर सहायक को डीबग नहीं कर सकता - ऐसा लगता है कि आईआईएस डिबगिंग प्रतीकों के साथ संकलित नहीं है?
स्ट्रिप का मतलब कोई प्रतीक नहीं है, है ना? ओएस एक्स के बराबर –
'otool -Iv' है। –
otool -Iv के आउटपुट में क्या देखना है? –