iOS ऐप हर दूसरे लॉन्च को क्रैश करता है, इसमें त्रुटि नहीं मिल सकती है


81

पहली बार जब मैंने ऐप लॉन्च किया, तो सब कुछ ठीक चल रहा था। मैं स्टॉप बटन को हिट करूंगा, कुछ काम करूंगा और जब मैं इसे फिर से लॉन्च करने जाऊंगा, तो इससे पहले कि यह कुछ भी लोड कर सकता है क्रैश हो जाए। प्रेस बंद करो, भागो फिर से मारो, और यह ठीक काम करता है। जब तक मैं इस प्रक्रिया को दोहराता हूं।

यह वह जगह है जहाँ Xcode "थ्रेड 1: सिग्नल SIGABRT" के साथ त्रुटि को उजागर कर रहा है। जाहिर है यहां कुछ भी उपयोगी नहीं है।

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class]));
    }
}

डीबग कंसोल (lldb) के अलावा कुछ भी नहीं दिखाता है (इसलिए मुझे लगता है कि इसकी रोक है, इस बिंदु पर दुर्घटनाग्रस्त नहीं है) इसलिए, जब मैं BTयह प्रदर्शन करता हूं तो मुझे यही मिलता है:

(lldb) bt
* thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
    frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101
    frame #2: 0x04a7057b libsystem_sim_c.dylib`abort + 140
    frame #3: 0x01dc0b4e GraphicsServices`GSRegisterPurpleNamedPort + 348
    frame #4: 0x01dc069f GraphicsServices`_GSEventInitialize + 123
    frame #5: 0x01dc0c1f GraphicsServices`GSEventInitialize + 36
    frame #6: 0x000163f9 UIKit`UIApplicationMain + 600
    frame #7: 0x00001d0d Guitar Chord Poker HD`main(argc=1, argv=0xbffff32c) + 141 at main.m:16
    frame #8: 0x00001c35 Guitar Chord Poker HD`start + 53
(lldb) 

यहाँ मैंने अभी तक क्या किया है:

  • एक 'स्वच्छ' प्रदर्शन किया
  • मैंने सिमुलेटर रीसेट कर दिया है और अपना कंप्यूटर रीसेट कर दिया है
  • मैंने सभी कोड को व्यू कंट्रोलर में कमेंट किया है, फिर भी क्रैश हो गया है
  • मैंने एप्लिकेशन प्रतिनिधि के सभी कोड को कमेंट किया है, फिर भी क्रैश हो गया है
  • लेकिन .... मैंने Xcode के बाहर एक डिवाइस पर ऐप चलाया है, और यह पूरी तरह से ठीक काम करता है।
  • (EDIT) मैंने विभिन्न कैश फ़ोल्डर से xcode, और सभी सामग्री (सिमुलेटर, डॉक्स) को हटा दिया है (यह नए डाउनलोड के बाद पुराने को स्वचालित रूप से पुनर्स्थापित करने से xcode रोक देता है)। अभी भी नहीं मिल सकता है, जहां कमांड लाइन उपकरण हालांकि रखे गए हैं। अभी भी दुर्घटनाग्रस्त है।

इस सब के बावजूद, ऐप्स अभी भी हर दूसरे / अन्य लॉन्च को क्रैश करते हैं।

बात यह है कि मैं सबसे हाल ही में Xcode अद्यतन तक कोई समस्या नहीं थी। यह एक Xcode बग हो सकता है?

(EDIT) मैं OSX के नवीनतम डेवलपर रिलीज़ भी चला रहा हूं। क्या वह हस्तक्षेप कर सकता है?


क्या आपने iOS सिमुलेटर पर और कनेक्टेड / डिस्कनेक्ट किए गए डिवाइस पर एक खाली प्रोजेक्ट चलाने की कोशिश की है?
रेक होउ

@ReckHou ठीक है वाह, हाँ एक ही मुद्दे पर एक नया प्रोजेक्ट। क्या कारण हो सकता है? इसके अलावा किसी भी तरह से इसके अलावा xcode पुनर्स्थापित?
ब्यू नौवेल्ले

पहले से ही हमारे पास इस समस्या वाले दो लोग हैं। (अंतिम अपडेट के बाद मुझे इसी तरह की त्रुटि मिलती है) वर्तमान में मैं ऐपकोड का उपयोग करता हूं जब तक कि अगले एक्सकोड अपडेट बग के साथ तय नहीं हो जाता। (मेरा प्रश्न stackoverflow.com/questions/16113036/… )
इल्या इलिन

5
मैंने आज ही OSX 10.8.4 में अपडेट करने के बाद इसे देखना शुरू किया। मुझे OSX 10.4.3 पर Xcode 4.6.2 की कोई समस्या नहीं थी। यदि मैं एलएलडीबी से जीडीबी पर स्विच करता हूं तो समस्याएं दूर होती हैं, इसलिए यह डिबगर (ओएसएक्स 10.8.4 के साथ संयोजन में एक्सकोड 4.6.2 एलएलडीबी) के कारण हो सकता है।
मेटेज बुकोविंस्की

1
मैं 10.8.4 के अपडेट के बाद भी ऐसा ही हूं। हर दूसरे लॉन्च। सिम्युलेटर रीसेट करें, Xcode को पुनरारंभ करें, कोई फर्क नहीं पड़ता। मुख्य में तत्काल दुर्घटना ()। हर दूसरा दौड़ता है। GDB विचार के लिए धन्यवाद - यह यहाँ काम कर रहा है।
ग्राहम पर्क्स

जवाबों:


75

एक प्रतीत हो रहा है ओएस एक्स 10.8.4 और LLDB के संयोजन । जैसा कि केस्टर कहते हैं, GDB पर स्विच करने से समस्या दूर हो जाती है।

संपादित करें:
यह डिबग सर्वर में एक दौड़ की स्थिति के कारण होता है (मैं सुनता हूं)।

यदि आप LLDB का उपयोग करते रहना चाहते हैं तो यहां एक फिक्स है: ऐप को पहले से ही सिम्युलेटर में चलाने के दौरान रन पर क्लिक करने के बजाय, इसे Xcode (X-) में मारें, "I love Xcode" 5 बार कहें और इसे फिर से चलाएँ (want-) आर)। यह दुर्घटना नहीं होगी, मैंने इसका परीक्षण किया।


Xcode 4.6.3 में फिक्स्ड


यह अच्छी तरह से काम नहीं करता है। लॉन्च हर बार बहुत ज्यादा चोक करता है। GDB पर स्विच करना तब तक के लिए अधिक स्थिर समाधान है जब तक कि Apple उनके सामान को ठीक नहीं करता है।
जॉनी

2
आप और पूछने वाले मेरे नए निजी पसंदीदा लोग हैं। यह मुझे पागल कर रहा था, जहां मैं मरम्मत के लिए अपना एमबीपी भेजने वाला था।
काल

10.9 और Xcode 5 के साथ, GDB को हटा दिया गया है और अब यह सभी LLDB है। लेकिन यह सभी के रूप में यह काम करना चाहिए!
ब्यू नोवेल

अर्घ! ब्रांड-न्यू-स्टेट-ऑफ-द-आर्ट कंपाइलर में एक (वास्तव में दर्दनाक) बग को ठीक करने के लिए एक संक्षिप्त संकलक के पास जाना एक बड़ी समस्या है ... लेकिन कोई विकल्प नहीं है, मुझे यह करना होगा।
महाशयदुआर

4.6.3 में अपडेट किया गया - मुझे यह भी नहीं पता था कि संस्करण जारी किया गया था।
डेविड एच

11

मैं इस मुद्दे को भी कर रहा था। इस पोस्ट पर एक नज़र डालें। हर दूसरे रन पर Xcode 4.6.2 ऐप क्रैश हो जाता है

मूल रूप से अपने डीबगर को LLDB से GDB में बदलें। मैं विश्वास नहीं कर सकता कि यह LLDB छोटी गाड़ी होने के कारण था।


ओह माय गॉड .... फिक्स्ड। मुझे इसकी आदत है कि हर बार जब मैं कोई प्रोजेक्ट चलाता हूं तो मैं गुस्से में तैयार हो जाता हूं। लेकिन ऐसा कुछ नहीं होता है। बहुत बहुत धन्यवाद। मेरी बग रिपोर्ट में Apple को बताएंगे।
ब्यू नोवेल

2
जानकारी के लिए धन्यवाद, कल पूरे दिन मुझे पागल कर रहा था। मैं यहाँ प्रतीक्षा करने से पहले हमेशा अपने सारे (शेष) बालों को बाहर निकालने तक प्रतीक्षा क्यों करता हूँ! जबरदस्त हंसी।
बर्टी

3

GDB या रिबूटिंग डिवाइस / होस्ट पर स्विच करने से मेरे वातावरण में समस्या हल नहीं होती है।

हालाँकि, संबंधित XCode योजना में रन लक्ष्य को संशोधित करके अब स्वचालित रूप से लॉन्च नहीं किया जाएगा, बल्कि इसके बजाय के लिए "प्रतीक्षा HelloWorld लांच करने के लिए .app" किया था।

केवल दोष यह है कि यह डिवाइस पर एप्लिकेशन को मैन्युअल रूप से प्रारंभ करने के लिए है। डिबगर तब कनेक्ट हो जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.