2012-04-24 14 views
11

में पुन: उत्पन्न करें हमारे पास एक स्थिर लिब के साथ बनाया गया एक ऐप है जिसे हम वितरण के लिए भी बना रहे हैं। ऐप और लिब एक्सकोड डीबगर में ठीक है या जब एक्सकोड डीबगिंग सत्र द्वारा डिवाइस पर लोड किया जाता है। जैसे ही हम डिवाइस पर विज्ञापन हाॉक आर्काइव बनाते हैं, ऐप हमेशा दुर्घटनाग्रस्त हो जाता है। कंसोल लॉग स्टेटमेंट इंगित करता है कि यह लिब कोड में क्रैश हो रहा है, लेकिन क्रैश रिपोर्ट लिब कोड का प्रतीक नहीं है।स्टेटिक लिब के साथ आईओएस ऐप हमेशा विज्ञापन संग्रह पुरालेख के लॉन्च पर दुर्घटनाग्रस्त हो जाता है। एक्सकोड डीबगर

  • एक्सकोड सिम्युलेटर में पुन: पेश नहीं किया जा सकता है।
  • गार्ड मॉलोक, गार्ड एज कुछ भी नहीं दिखाते हैं (लेकिन ये केवल सिम्युलेटर में चलते हैं)।
  • कोई लीक
  • Xcode 4.3.2 का उपयोग
  • अनुप्रयोग 4.3 या बाद निशाना बनाता है।
  • लिब लक्ष्य 3.0 या बाद में।
  • अन्य लिंकर झंडे = -ObjC
  • लिब के रूप में "वैकल्पिक" लक्ष्य में
  • अँगूठा समर्थन बंद (LLVM का उपयोग कर)

सांत्वना हो सकता है कि पर 2 अपवाद देखकर "पुस्तकालय के साथ लिंक बाइनरी" सेट उपयोग की, लेकिन अभी तक यह है कि इस के साथ बहुत मदद करता है नेट पर कुछ भी बदल नहीं:

Application 'x' exited abnormally with signal 12: Bad system call: 12 (mostly) 
Application 'x' exited abnormally with signal 12: Bad system call: 11 (rarely) 

हम टिप्पणी कहीं और देखा कि Recursion के साथ स्थिर libs मुद्दे हैं। लेकिन हमारे पास हमारे लिब में कोई रिकर्सन नहीं है।

स्टंप, अधिक विचारों की आवश्यकता है।

+0

असली डिवाइस पर AdHoc लेकिन डीबग परीक्षण के बारे में क्या नहीं है? क्या यह फिर से पुन: उत्पन्न होता है? मैं सिर्फ लक्ष्य में अंतर बनाने की संभावना से इंकार करने के लिए कहता हूं। –

+0

ने कोशिश नहीं की लेकिन सभी लॉगिंग स्टेटमेंट्स ने सीरियलाइजेशन कोड के एक ब्लॉक को इंगित किया जिसे हमने सोचा था कि एक बफर ओवररन हो सकता है। नहीं। यह बहुत, बहुत है। अजीब। –

उत्तर

14

यह पता चल !! डेस्क पर बैंगिंग के 4 दिनों के बाद। हम नहीं जानते कि यह वास्तव में क्यों काम करता है लेकिन यह करता है। यदि यह दूसरों के लिए उपयोगी है तो यहां सेटिंग्स हैं जो हमारे लिए इसे हल करती हैं। स्टेटिक लाइब्रेरी प्रोजेक्ट के सेटिंग बिल्ड की "तैनाती" खंड में इन सेट करें:

SET "STRIP LINKED PRODUCT" (STRIP_INSTALLED_PRODUCT) = NO 
SET "STRIP STYLE" = DEBUGGING SYMBOLS. 

हम परीक्षण और त्रुटि के द्वारा इस पाया, लेकिन अब ऑनलाइन है कि कुछ विचार विमर्श नोटिस आईओएस स्थिर पुस्तकालयों का उपयोग निर्माण के लिए एक Xcode प्रोजेक्ट की स्थापना फिर से यह सेटिंग क्यों कोई चर्चा नहीं, लेकिन वहां है।

तुम यहाँ उस पर टिप्पणी करने के लिए चाहते हो सकता है किसी को भी क्यों इन lib सेटिंग्स इसे ठीक पर कोई विचार है।

+0

नोट: मैं ऐप्पल डेवलपर फोरम में गया था और विशेष रूप से पूछता हूं कि यह काम क्यों करता है, और हमें ऐसा क्यों करना है। इस प्रकार कोई प्रतिक्रिया नहीं है। एक झपकी नहीं! मैं सट्टेबाजी कहीं कहीं एक बग है। यदि कंपाइलर को लिब के लिए प्रतीकों की आवश्यकता होती है, तो इसे संकलन समय पर कुछ चेतावनी या अपवाद फेंकना चाहिए और न केवल क्रैश! –

+0

डब्ल्यूडब्ल्यूडीसी में मैंने इस बारे में एक लिंकर गुरु से पूछा था। उन्होंने कहा कि यह करने का यह एक तरीका है। लेकिन पुस्तकालय के निर्माण के लिए एक और दृष्टिकोण का सुझाव दिया जहां प्रतीकों को छीन लिया जा सकता है। जब हम पूरी तरह से काम करेंगे तो एक और नोट पोस्ट करेंगे। –

+0

एक समान समस्या थी - मेरे ब्लॉक में से किसी एक को वापस कॉल करते समय libdispatch क्रैश हो रहा था। ब्लॉक एक स्थिर रूप से जुड़े छद्म ढांचे में था। जैसा कि उपर्युक्त वर्णित लिंकर झंडे को बदलना इस समस्या को ठीक करता है (असल में केवल एकमात्र झंडा मैंने बदल दिया था स्ट्राइप स्टाइल एक - दूसरा वाला पहले से ही सेट किया गया था)। –

0

मौका बहुत अधिक हैं कि आपका बिल्ड सेटिंग्स तदर्थ (रिलीज) और डीबग के बीच भिन्न हैं। क्या आपने सभी बिल्ड-सेटिंग्स मानों को दोबारा जांच लिया था? विशेष रूप से एआरसी (स्वचालित संदर्भ गिनती) सेटिंग्स को देखें।

+0

हम उपयोगकर्ता एआरसी नहीं हैं। लेकिन इसके बारे में सोचने के लिए thx। –

+1

मेरे मामले में, दुर्घटना तब हुई जब विज्ञापन रिलीज बिल्ड को एड-होक वितरण के माध्यम से स्थापित किया गया था, लेकिन जब रिलीज को चलाने के दौरान स्थापित नहीं किया गया था और एक्सकोड के माध्यम से लॉन्च किया गया था। ध्यान दें कि दोनों रिलीज बिल्ड थे। एड-हाक बिल्ड को संग्रह प्रक्रिया के हिस्से के रूप में बनाया गया था, इसलिए यह रिलीज बिल्ड के रूप में तकनीकी रूप से एक ही द्विआधारी फ़ाइल नहीं थी, लेकिन यह उसी लक्ष्य सेटिंग्स और समान कोड के साथ बनाया गया था, जो ऐसा लगता है कि यह कुछ है संग्रह/पुन: हस्ताक्षर/विज्ञापन-स्थापना-प्रक्रिया प्रक्रिया में चल रहा है जो अंतर बना रहा है। –

+0

सैम, नहीं। यह समस्या लिंकर के काम से संबंधित है, स्वीकृत उत्तर देखें। –

0

डिबग, Xcode डिबगर के साथ लोड करके, अपने उत्पादन का निर्माण (शायद डीबग आप वर्तमान के साथ परीक्षण कर रहे हैं का निर्माण तुलना में बहुत अलग अनुकूलन और कोड पीढ़ी सेटिंग्स के साथ का निर्माण जारी करने की तैयारी)।

+0

कोशिश की। उसी तरह से चल रहे एक ही स्थान पर दुर्घटनाग्रस्त हो गया और हमें कुछ भी नहीं बताया। –

1

मैं एक ऐसी ही समस्या थी और परियोजना सेटिंग्स निर्माण को बदलने की कोशिश की है, लेकिन यह मेरे लिए काम नहीं किया। आखिरकार रिलीज के लिए कंपाइलर ऑप्टिमाइज़ेशन लेवल सेटिंग बदलकर मेरी समस्या हल हो गई:

बिल्ड सेटिंग्स में, एलएलवीएम कंपाइलर 4.2 - कोड जेनरेशन सेक्शन पर जाएं, ऑप्टिमाइज़ेशन लेवल विकल्प की तलाश करें और रिलीज सेटिंग को सबसे तेज़, सबसे छोटे से बदलें [ -ओएस] कोई नहीं [-O0]।

आशा है कि इससे मदद मिलती है!

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