2012-10-15 18 views
9

मेरा आवेदन एक पुस्तकालय के लिए स्रोत कोड देख पा रहा है:कोई प्रतीकों/Xcode में बाहरी पुस्तकालय के लिए स्रोत 4

  • अगर मैं एक पुस्तकालय पद्धति पर "परिभाषा पर जाएं", XCode मुझे ज फाइल करने के लिए ले जाता है लेकिन कहते हैं कि कोई सीपीपी समकक्ष
  • जब डिबगिंग, मुझे कोई स्रोत कोड देख सकते हैं और कॉल-ढेर के सबसे पुस्तकालय के लिए याद आ रही है वहाँ है: enter image description here
  • मैं "जब डिबगिंग दिखाएँ disassembly" यकीन है कि बना दिया है अनियंत्रित
  • है

मैंने लाइब्रेरी को DEBUG के रूप में बनाया और उसके बाद हेडर + .a फ़ाइल को एसडीके डीआईआर में पैक किया। तो मुझे लगता है कि मुझे या तो डीडीग फाइलों को उस एसडीके डायर में कॉपी करने की ज़रूरत है, या मेरे आवेदन को कहां देखना है। मुझे यकीन नहीं है कि कैसे करना है।

स्पष्टीकरण के लिए, मेरा एप्लिकेशन प्रोजेक्ट लाइब्रेरी प्रोजेक्ट का संदर्भ बनाए रखता है, केवल .a फाइलों और हेडर डीआईआर के लिए। ऐसा इसलिए है क्योंकि पुस्तकालय परियोजना सीएमके द्वारा बनाई गई है और मैं इसे संशोधित नहीं करना चाहता हूं।

+0

लाइब्रेरी थी जिस मशीन पर आप डिबगिंग कर रहे हैं उस पर संकलित? क्या स्रोत फाइलें उसी स्थान पर थीं जब पुस्तकालय को डीबग जानकारी के साथ संकलित किया गया था? पुस्तकालय बनाने के दौरान आप संकलक को क्या डीबग झंडे देते थे? –

+0

हां इसे उसी पर संकलित किया गया था मैक लेकिन स्वतंत्र रूप से, मैं बस एप्लिकेशन प्रोजेक्ट को बताएं जहां .a और हेडर हैं। स्रोत .cpp फ़ाइलों को स्थानांतरित नहीं किया गया है, लेकिन मैंने एसडीके बनाने के लिए हेडर और .a फ़ाइल को स्थानांतरित कर दिया है; क्या पूर्ण पथ या कुछ हैं? एक्सकोड स्टोर ऐसी जानकारी कहां और कैसे करता है? –

+0

क्या आपने कभी इसे हल किया है? मेरे यहां एक समान प्रश्न है: http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

उत्तर

8

सबसे पहले, आपको अपनी स्थाई पुस्तकालय के .debug_str अनुभाग को सत्यापित करने के लिए यह सत्यापित करना चाहिए कि इसमें उपयुक्त डीबग जानकारी है।

टर्मिनल पर इस आदेश को चलाने की कोशिश करें:

xcrun dwarfdump /path/to/library.a | grep "\.m" 

आप अपने स्रोत का एक समूह दिखाई देगा (मीटर) फ़ाइल पथ मुद्रित। सैद्धांतिक रूप से, यह वह जगह है जहां आप डीबगर में रुकते समय एक्सकोड देखने जा रहे हैं, इसलिए सुनिश्चित करें कि यहां पथ सही हैं। यदि आपको कोई रास्ता नहीं दिखाई देता है, तो आपको अपनी लाइब्रेरी बनाने के दौरान एक उचित डीबग ध्वज (उदाहरण के लिए -g को कंपाइलर में पास करने की आवश्यकता होगी।

यदि पथ किसी भी तरह गलत हैं, या आप उन्हें किसी अन्य स्थान पर इंगित करना चाहते हैं , आप उन्हें सीएमके में निर्माण प्रक्रिया के हिस्से के रूप में संशोधित करने में सक्षम हो सकते हैं, उदाहरण के लिए उन्हें अपनी प्रोजेक्ट निर्देशिका से संबंधित बनाने के लिए। "Make gcc put relative filenames in debug information" को देखने का प्रयास करें, जो इन डीबग पथों को समायोजित करने के लिए सीएमके का उपयोग करता है।

+0

यह FYI एक सी ++ एप्लिकेशन है लेकिन मुझे लगता है कि मैं सिर्फ .cpp के लिए .mpp को अपना उत्तर बदलता हूं? –

+0

जब मैं इसे "\ .m" या "\ .cpp" के साथ चलाता हूं तो मुझे कोई आउटपुट नहीं मिलता है। क्या आप इसे सही जांच सकते हैं? मेरा डीबग लिब 650 एमबी है जो रिलीज की तुलना में 30 एमबी पर है, इसलिए मुझे यकीन है कि इसे डीबग के रूप में बनाया जा रहा है! –

+0

इस प्रश्न पर कोई प्रगति? मैं यहां एक समान समस्या में भाग रहा हूं: http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

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