2012-07-17 13 views
14

में शामिल नहीं किए जा रहे हैं IOS आईओएस ऐप्स की एक श्रृंखला पर काम कर रहा हूं जो एक सामान्य कोडबेस साझा करेगा। मैंने एक सामान्य लाइब्रेरी के रूप में सामान्य कोडबेस विकसित किया है और चाहते हैं कि यह प्राथमिक ऐप की .dSYM फ़ाइल में शामिल डीबग प्रतीकों को शामिल करे। मेरी समझ यह है कि यह संभव है, लेकिन मुझे अभी तक यह काम नहीं मिला है।आईओएस स्टेटिक लाइब्रेरी डीबग प्रतीक डीएसवाईएम

सामान्य कोडबेस अपने स्वयं के प्रोजेक्ट में एक लक्ष्य के रूप में स्थिर पुस्तकालय है। इस परियोजना को प्राथमिक ऐप की परियोजना में खींचा गया है। प्राथमिक ऐप के लक्ष्य के बिल्ड चरणों में मैंने स्थिर पुस्तकालय को लक्ष्य निर्भरता के रूप में और पुस्तकालयों के साथ लिंक बाइनरी के तहत जोड़ा है। प्रोजेक्ट वांछित के रूप में बनाता है और चलाता है।

अब, अगर मैं मुख्य प्रोजेक्ट से संग्रह उत्पन्न करता हूं, तो मैं खोजक में उस संग्रह को देख सकता हूं, और इसमें एक .dSYM फ़ाइल है जिसका उपयोग क्रैश लॉग का प्रतीक करने के लिए किया जा सकता है। हालांकि, .dSYM में केवल प्राथमिक ऐप के प्रतीक हैं, स्थिर पुस्तकालय के लिए नहीं।

dwarfdump /path/to/app.dSYM

और उत्पादन (अधिकतर) स्थिर पुस्तकालय से किसी भी प्रतीक नहीं था: यह ज्यादा इस बात की पुष्टि करने के लिए, मैं निम्नलिखित भाग गया। मुझे मिला एकमात्र अपवाद यह है कि मेरी प्राथमिक परियोजना का ऐपडिलेगेट स्थिर पुस्तकालय में किसी ऑब्जेक्ट का उप-वर्ग है, और .dSYM में उस सुपर क्लास के लिए प्रविष्टियां हैं। हालांकि, अन्य वर्गों में से कोई भी मौजूद नहीं है।

  • कॉपी के दौरान पट्टी डीबग प्रतीक:: NO
  • पट्टी लिंक्ड उत्पाद: NO
  • उत्पन्न डीबग प्रतीक: हाँ
  • स्थिर लाइब्रेरी की प्रोजेक्ट के लक्ष्य के सेटिंग बिल्ड में, मैं निम्नलिखित की स्थापना की है

  • डिफ़ॉल्ट रूप से छिपे हुए प्रतीक: नहीं

यदि कोई मार्गदर्शन प्रदान कर सकता है, तो मैं बहुत सराहना करता हूं यह।

+0

एक्सकोड का आप किस संस्करण का उपयोग कर रहे हैं? – misnomer

+0

क्या आपने इस समस्या को प्रबंधित किया है? मेरे पास एक ही समस्या है, अभी भी यह पता नहीं लगाया जा रहा है कि क्या हो रहा है। – Vincent

उत्तर

1

सुनिश्चित नहीं है कि आपको अभी तक आपका उत्तर मिला है लेकिन मुझे दो दिन पहले एक ही समस्या थी। मुझे इसे निम्नलिखित करने के लिए काम करने के लिए मिला:

  1. अपनी प्राथमिक परियोजना और सामान्य कोड आधार (स्थैतिक पुस्तकालय) को पकड़ने के लिए कार्यस्थान बनाएं। सुनिश्चित करें कि परियोजनाएं भाई बहन हैं, माता-पिता/बच्चे नहीं।
  2. लक्ष्य निर्भरता जोड़ें और आम codebase
  3. लिंक एक साझा निर्देशिका में सभी परियोजनाओं के निर्माण के लिए
  4. कॉन्फ़िगर कार्यक्षेत्र सेटिंग्स अपने सामान्य codebase में डिबग प्रतीकों शामिल करना सुनिश्चित करें (मेरा मानना ​​है कि यह महत्वपूर्ण है)
  5. यदि आपको हेडर ढूंढने में सक्षम न होने के बारे में शिकायतें मिलती हैं तो आपको बिल्ड सेटिंग्स में अपने उपयोगकर्ता शीर्षलेख खोज पथ को संशोधित करना होगा या स्रोत वृक्ष सुविधा का उपयोग करना होगा।
+2

इसमें वास्तव में एक अच्छा जवाब होने की संभावना है। हालांकि कुछ चीजें गायब हैं। "डीबग प्रतीकों को शामिल करें" से आपका मतलब है कि GCC_GENERATE_DEBUGGING_SYMBOLS (डीबग सिंबल जेनरेट करें) सेटिंग बनाना जो डिफ़ॉल्ट रूप से हां है? साझा निर्देशिका भी स्पष्ट नहीं है। डिफ़ॉल्ट रूप से आपके कार्यक्षेत्र के भीतर प्रत्येक प्रोजेक्ट व्युत्पन्न डेटा में अपनी निर्देशिका में बनाया जाएगा। क्या आपने किसी भी निर्देशिका में प्रत्येक प्रोजेक्ट को बनाने के लिए xcode प्राप्त करने का प्रबंधन किया था? – Onato

3

स्टेटिक lib प्रतीकों किसी ऐप के dSYM फ़ाइल में दिखाने करते हैं, और dwarfdump कि पता चलता है।

dwarfdump -a path/to/app.dSYM >dsymAsText.txt 

जो आपको lib के प्रतीकों को दिखाना चाहिए।

हालांकि यदि आप हैं (जैसा कि मैंने हाल ही में किया है) केवल अपनी स्थिर lib के साथ जाने के लिए उत्पन्न होने वाली प्रतीक तालिका की तलाश में है, तो मैं इस निष्कर्ष पर पहुंचा हूं कि यह काफी बेकार होगा; एक बार यह एक नए ऐप में संकलित हो जाने के बाद उन प्रतीकों और पते सभी बदल जाएंगे और आपके पास सब कुछ के लिए एक पूरी तरह से अलग ऑफसेट होगा (अगर कोई गलत है तो कृपया मुझे सही करें)।

मुझे पूरा यकीन नहीं है कि उस हिस्से के आसपास जाने का एक तरीका है।

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