İOS simülatöründe test yapılırken hata oluştu: Önyükleme sunucusuna kayıt yapılamadı


370

Bir UIAlertView düğmesine tıkladığında simülatörde uygulamamı test ediyordum. Orada hata ayıklamayı bıraktım, kodda bazı değişiklikler yaptım ve uygulamayı tekrar inşa ettim. Şimdi uygulamayı çalıştırdığımda, bu hatayı konsolda alıyorum

Com.myApp.debug önyükleme sunucusuna kaydedilemedi. Hata: bilinmeyen hata kodu. Bu genellikle bu işlemin başka bir örneğinin zaten çalışmakta olduğu veya hata ayıklayıcıda asılı olduğu anlamına gelir.Program sinyali aldı: “SIGABRT”.

Uygulamayı simülatörden kaldırmayı denedim, temiz bir yapı oluşturdum, ancak uygulamayı çalıştırmaya çalıştığımda hala bu hatayı alıyorum.

Uygulamayı simülatörümde tekrar çalıştırabilmek için ne yapmalıyım?


2
Bu, cihazda test edilirken ne yapılacağına dair herhangi bir öneriniz var mı? Cihazı yeniden başlatmayı denedim, Xcode.
iPadDeveloper2011

1
Ayrıca, cihazdaki uygulamayı silmeyi, tüm aktif uygulamalardan çıkmayı denedim (eve çift tıklayın, uygulama simgesine parmağınızı basılı tutun, '-' işaretine dokunun) Xcode'u yeniden başlatın, oturumu kapatın ve tekrar oturum açın. Şimdiye kadar hiçbir şey işe yaramıyor.
iPadDeveloper2011

XCode menüsünde "Önbelleği boşalt" ı deneyin. Bu da yardımcı olur.
lostInTransit

3
Bu sorunla karşı karşıya kalan herkes için, daha sonra anladım, bu çoğu zaman koddaki bir hata nedeniyle olur. Çok fazla yürütme süresi alan veya uygulamayı bir döngüye alan bir kod parçası arayın.
lostInTransit

4
Bu olduğunda sadece SimulatorBridge'i öldürüp simülatörden çıkıyorum. ps ax | grep SimulatorBridge
Elland

Yanıtlar:


162

Simülatörü bırakmayı ve yeniden başlatmayı deneyin? "Daha kötüsü en kötüye gelirse" her zaman yeniden başlatmayı deneyebilirsiniz: benim tecrübelerime göre bu sorunu düzeltmelidir.


44
Sistem yeniden başlatıldı! Yine de soruna neyin neden olduğunu bilmiyorum!
lostInTransit

6
Aşağıdaki yorumun söylediği gibi, genellikle Etkinlik İzleyicisi'nde asılı işlemi görebilir ve orada öldürebilirsiniz.
mxcl

13
Yeniden başlatmaktan nefret ediyorum :) Asılı süreci bırakmak benim için çalıştı: ps balta | grep Simulator çalışan uygulamalarınızı gösterecek, benim durumumda asılı olan MyApp.app oldu.
BadPirate

12
Yeniden başlatma işe yaramadı
Pascal Klein

10
Bunu sıklıkla XCode 4.3'te alıyorum. Uygulamayı yeniden başlatmak veya simülatörden çıkmak yardımcı olmaz. Çalışması için bilgisayarı yeniden başlatmam gerekiyor.
Øystein

242

durumu: Bu, Mac OS 10.8 ve Xcode 4.4 kadar yakın zamanda görülmüştür.

tl; dr: Bu iki bağlamda ortaya çıkabilir: cihazda çalışırken ve simülatörde çalışırken. Cihazda çalışırken, cihazın bağlantısını kesmek ve yeniden bağlamak işleri düzeltiyor gibi görünüyor.

Mike Ash önerdi

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

Bu her zaman işe yaramıyor. Aslında benim için hiç işe yaramadı ama bazı durumlarda açıkça işe yarıyor. Sadece hangi vakaları bilmiyorum. Yani denemeye değer.

Aksi takdirde, bunu düzeltmenin bilinen tek yolu kullanıcı başlatmayı yeniden başlatmaktır. Yeniden başlatma bunu yapacak ancak daha az sert / hızlı bir yol var. Başka bir yönetici kullanıcı oluşturmanız gerekir, ancak bunu yalnızca bir kez yapmanız gerekir. İşler kandığında, kendiniz olarak oturumu kapatın, o kullanıcı olarak oturum açın ve ana kullanıcınıza ait olan fırlatmayı öldürün, ör.

sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`

yerine ana kullanıcı adınızı yazın user_id. Normal kullanıcınız olarak tekrar giriş yapmak sizi aklı başında duruma döndürür. Biraz acı verici, ama tam bir yeniden başlatmadan daha az.

ayrıntıları:

Bu, Lion / Xcode 4.2 ile daha sık olmaya başladı. (Şahsen, bu kombinasyondan önce hiç görmedim.)

Hata, hata ayıklayıcı onu öldürmeden hata ayıklamayı durdurduğunda uygulama sürecini bir çocuk olarak devralır. Bu genellikle uygulama bir zombi haline, ps Z süreç durumuna sahip tarafından bildirilir.

Temel sorun, launchd'de uygulanan önyükleme ad sunucusunda görünmektedir. Bu (anladığım kadarıyla), uygulama kimliklerini mach bağlantı noktalarına eşler. Hata tetiklendiğinde, uygulama ölür, ancak bootstrap sunucusunun ad sunucusu haritasından temizlenmez ve sonuç olarak, bootstrap sunucusu uygulamanın başka bir örneğinin aynı adla kaydedilmesine izin vermez.

wait()Zombi için launchd'i zorlamanın bir şeyleri düzelteceği umuluyordu (yorumlara bakın) . Temel problem olan zombi durumu değil (bu yüzden bazı zombiler iyi huyludur) ama bootstrap isim sunucusu ve bu öldürme başlangıcını kısaltmanın bilinen bir yolu yok.

Hata Xcode, gdb ve kullanıcı lansmanı arasında kötü bir şey tarafından tetiklenmiş gibi görünüyor. Ben sadece iphone simülatöründe bir uygulamayı çalıştırarak, gdb içinde durdurarak ve sonra bir yapı yapıp ipad simülatörüne koşarak kama tekrarladım. Anahtarlama simülatörlerine (iOS 4.3 / iOS 5, iPad / iPhone) duyarlı görünüyor. Simülatörleri çok değiştirdiğimde her zaman değil, oldukça sık.

Giriş yaptıktan sonra başlatmayı öldürmek oturumunuzu zorlaştıracaktır. Oturumu kapatmak ve tekrar oturum açmak kullanıcının başlatmasını öldürmez; OS X varolan süreci korur. Yeniden başlatma işleri düzeltecek, ama bu acı verici. Yukarıdaki talimatlar daha hızlıdır.

Apple'a bir hata gönderdim, FWIW. rdar: // 10330930


2
Yeni Lion / XCode4.2 davranışının ayrıntılı açıklaması için teşekkürler. İki ayrı uygulamada hata ayıklarken daha sık görülür.
samkass

2
Sadece Aslan değil. Hala burada Snow Leopard kullanıyor ve XCode 4.2'den bu yana birçok kez bu hatayı görüyorsunuz. (İOS SDK 5.0 piyasaya sürülene kadar XCode 3.x kullanılır.)
Jonny

3
Bilgi için teşekkürler ... Bu son zamanlarda benim için çok sık oluyor ... Son 10 dakikada iki kez. Sürekli yeniden başlatmam gerektiğinde sağlam bir iş akışı elde etmek biraz zor. Bilgisayarımı yeniden başlatmak için kapalı.
Brad Goss

1
@smparkes: Aslında eskisinden daha sık görülüyor. Sadece bundleID değiştirmek ve her şey tekrar çalışıyor, ancak hata ayıklamak çalıştığınız CoreData mantık ile çalışırken sinir bozucu. Yine de yeniden başlatmaktan daha az can sıkıcı, itiraf edeceğim.
Mike A

2
4.3.1 ve şimdi oldu ... çok sinir bozucu. Benim için, iPhone'un kendisini yeniden başlatmak normalde çözüyor, Mac'imi yeniden başlatmam gerekmiyor. Benim için Eylül 2011 civarında, Snow Leopard altında XCode 4.2 ile gerçekleşti.
TheEye

70

Lion + Xcode 4.2 ile bu sorunu yaşamaya başladığımı fark ettim. Bu sorunu Xcode 4.3'te de yaşadım.

Tüm önerileri denedim ama hiçbiri tam bir yeniden başlatma dışında çalıştı.

Hızlı bir şekilde yeniden başlatmaya gerek olup olmadığını nasıl belirleyeceğiniz aşağıda açıklanmıştır.

Tüm Zombi işlemlerinizi listeleyin:

ps -el | grep 'Z'

Uygulamanızın bir Zombi işlemi olarak listelendiğini görürseniz, makinenizi yeniden başlatmanız gerekir. Hata iletisinde "Bu genellikle bu işlemin başka bir örneğinin zaten çalışmakta olduğu veya hata ayıklayıcıda asılı olduğu anlamına gelir" yazıyor. Xcode öldüremeyeceğiniz bu Zombi sürecini tespit ediyor. Daha sonra düzeltmenin tek yolu sistemi yeniden başlatmaktır. :(

EDIT, 20120823: Zombi süreçleri hakkında biraz daha bilgim var, bu yüzden bu cevabı güncellemek istedim. Bir üst süreç, sonlanan bir alt süreçte wait () (işlemin durumunun değişmesini bekle) çağırmazsa bir Zombi işlemi oluşturulur. 'Zombi' işleminde doğrudan 'kill' çalıştıramazsınız, ancak üst işlemi öldürürseniz, zombi çocuk işlemi 'reaped' olur ve işlem tablosundan kaldırılır.

Uzun zamandır bu sorunu görmedim, bu nedenle bu senaryoda üst sürecin ne olduğunu görmek için denetlemedim. Üst işlemi öldürmenin alternatifi sisteminizi yeniden başlatmanızdır. :)


Teşekkürler, zombiler olarak çalıştığım 3 programın 7 örneğini aldım.
ArtSabintsev

1
Yeniden başlatma yeterlidir, ancak yukarıda belirtildiği gibi gerekli değildir. Ayrıca, bazen soruna neden olmayan zombiler vardır, bu nedenle zombileri bu şekilde aramak gerçekten güvenilir bir önlem değildir. Tek kesin işaret Xcode'daki mesajdır.
smparkes

Bu zombi süreçlerini kök olarak öldürmeyi denedin mi? Bunu yapmayı düşünmeden önce yeniden başlattım.
Ryan H.

1
@smparkes, evet, bu hata mesajını tartışan bu soruya dayanmaktadır.
jyap

1
@HZC, evet, zombi süreçlerini kök olarak bile öldüremezsin.
jyap

20

Sadece başıma bu geldi: Hatayı sadece cihazımda alıyordum ve simülatör iyi çalışıyordu. Cihazımı sıfırlamak zorunda kaldım ve hata gitti.


1
burada aynı şekilde, cihazı yeniden başlattı ve gitti. Simülatör iyi çalıştı
agente_secreto

15

Son zamanlarda bu sorunu çok sık yaşıyorum. Bunun olmasını ne engelleyebilir? Oturumu kapatıp açmak sorunu düzeltir ancak .. sık sık bunu yapmak can sıkıcı bir durumdur.

DÜZENLE:

Az önce sebebini buldum. ApplicationWillTerminate yönteminde bir hata vardı. Bu yüzden Xcode penceresinde durdur düğmesini tıkladığımda, uygulama düzgün bir şekilde sonlanamadı ve asılmaya başladı.

uygulamanızın listede olup olmadığını görmek için Etkinlik Monitörü'nü kontrol edin. mümkünse bırakma.


2
Bu benim için düzeltildi! ps aux | grep Simulator
Jason Prado

Sızıntı Performansı Araçları'nı başlatırken bu hatayı oluşturmamda yardımcı
oluyorsa

14

Sorununuzun zombi süreçlerinden kaynaklandığını tespit ederseniz:

ps -el | grep 'Z'
(önceki yorumda olduğu gibi https://stackoverflow.com/a/8104400/464289 ) ve sorunu hemen düzeltmek istiyorsanız, herhangi bir şeyi yeniden başlatmadan veya öldürmeden yapabilirsiniz. Sadece proje hedefinizi yürütülebilir dosyayı yeniden adlandırın:

  1. Sol bölmedeki projeye tıklayın
  2. Orta bölmede Oluşturma Ayarları'nı seçin
  3. 'Altında Ambalaj ' değişim ' Ürün Adı ' dan $ (TARGET_NAME) $ için (TARGET_NAME) .1

Kolay!


Bu benim için işe yaramadı, ben aldım aynı hatayı aldım: Hazırlık profili 'mataleao2' geçerli 'au.com.mataleao-1' ayarıyla eşleşmeyen 'au.com.mataleao' Uygulama Tanımlayıcısını belirtir
sapatos

Simülatörde veya iPhone'da test mi yapıyorsunuz?
JRG

Ben sadece iphone üzerinde test ediyorum, işlevsellik ben sadece telefonda çalışacağım
sapatos

7

Peki, cevap yok ama yapmak için en az bir test daha. Terminal'i açın ve şu komutu çalıştırın: "ps-Ael | grep Z". Biri "(clang)" diğeri de uygulamanız veya şirket adınız olmak üzere iki giriş alırsanız, ıslatılırsınız - yeniden başlatın.

Bir geliştiriciyseniz, kısa bir hata girin ve Apple'a yeniden başlatmak zorunda kalmanın ne kadar can sıkıcı olduğunu söyleyin ve bu hatayı girmiş olduğum "rdar: // 10401934" e kopyalayabileceklerinden bahsedin.

David


5

İOS Simulator'ın sıfırlanması benim için hatayı düzeltti. Bu, Simulator'daki tüm Uygulamaları kaldıracak olsa da, makineyi yeniden başlatmak zorunda kalmadan sorunu çözer.

Aşağıdakileri yaparak iOS Simülatörünüzü sıfırlayabilirsiniz:

1) Ana ekranınızın en solundaki Apple () logosunun yanındaki "iOS Simulator" menüsüne gidin.
2) "İçeriği ve Ayarları Sıfırla ..." yı seçin.
3) Pop mesajını okuyun ve kabul ederseniz "Sıfırla" ya da "Sıfırlama" yı tıklayın.


3
Bir parça yardımcı olmaz, bunun yerine tüm içerik / uygulama / fotoğraf / kişilerinizi kaybedersiniz
garip

1
@strange simülatörü. her neyse önemli bir bilgi içermiyor. :)
Evgen Bodunov

5
  1. Simülatörü kapat
  2. Uygulamanın xCode'da çalışmasını durdurun.
  3. Açık Etkinlik Monitörü ve arayışı çalışan süreç sizin ile App ADI .
  4. Etkinlik İzleyicisi'nde bu işlemi öldür
  5. Projenizi yeniden oluşturun ve hazır olmalısınız

Süreç, "Force Quit" ile bile Etkinlik Monitörünün Öldürülmesine karşı bağışık gibi görünüyor
Ferruccio

4

@ Zyap zombi süreçleri bahseder sorun vardı. Onları temizlemenin tek yolu yeniden başlatmaktı. Ancak, aynı proje üzerinde çalışan arkadaşlarımın da aynı sorunu yaşayacağını ancak bir zombi süreci oluşturmadan simülatörü öldürebileceğini fark ettim. Xcode'u tamamen kaldırdım ve yeniden yükledim ve hala hatayı alırken, zombi süreçleri oluşturmuyor, bu yüzden yeniden başlatmam gerekmiyor.

Bunu yapmadan önce, bu gerçekten çirkin geçici çözümü kullanıyordum: uygulama kimliğinizi değiştirin ve tekrar çalıştırın. Uygulamanın simülatörde önemsiz kopyaları ile sonuçlanırsınız, ancak bir süreliğine yeniden başlatmayı erteleyebilirsiniz.


4

Bu hata benim için çok şey oluyor, neredeyse Simulator'da uygulamayı her test ettiğimde, beni yeniden başlatmaya zorluyorum.

İşte biraz iş yapmak istiyorsanız bir geçici çözüm:

  • Proje gezgininde projenizi tıklayın
  • Hedefe Git -> Bilgi
  • Uygulama için bir anahtar ekleyin arka planda çalışmaz ve olarak ayarlanır YES.

Bu, simülatördeki ana sayfa düğmesine bastığınızda veya simülatörden çıktığınızda uygulamanın askıda kalmayacağı anlamına gelir.

Dağıtımdan önce bu ayarı değiştirmeyi unutmayın! Sürüm kontrol listenize ekleyin :)


1
Bu tehlikelidir, çünkü geri değiştirmeyi hatırlayana kadar arka plandaki davranışları test etmenizi engeller.
tc.

@tc: Evet, katılıyorum. Ancak, iOS uygulamanızı her çalıştırdığınızda (yeniden sahip olduğum şey) yeniden başlatmak zorunda kalırsanız, bu yine de alternatiften daha iyi olabilir.
Chris Burt-Brown

4

Bu, iPhone'da test ederken gerçekleşir. Sadece telefonu yeniden başlat. Bana söylendiğine göre, telefon veya simülatör hala uygulamanın çalışan bir örneği olduğuna inanıyor, bu yüzden son çalıştırıldığında doğru bir şekilde sonlandırılmamıştı ya kodunuzdaki bir hatayı ya da telefon / simülatör sadece bir inilti.


4

Bir iPhone 4 uygulamamda hata ayıklama sırasında bu hatayı aldım. İPhone'u yeniden başlatmak benim sorunumu çözdü. (İPhone kapatılıyor ...)

Mac'imde zombi işlemi yoktu ve mac'u yeniden başlatmak sorunu çözmedi.

Belki bu hata hem simülatörde hem de gerçek cihazlarda kendini gösterebilir ???


4

Cihazı Yeniden Başlattı, Çalıştı! : D

Büyük öneriler için herkese teşekkürler.


3

Sadece bu hatayı aldım. Simülatörü ve Xcode'u yeniden başlatmayı denedim, ancak projem sadece temiz ve derlemeden sonra tekrar çalışacaktı. Buna neyin sebep olduğu hakkında hiçbir fikrim yok.


3

Yığında patlayan ve uygulamamı iPad'imi önyüklemek zorunda kalacak şekilde öldüren özyinelemeli bir ayarlayıcı vardı. Kodda bir düzeltme ile kanıtlanabilir.


3

Aynı sorunu yaşadım ve aşağıdakileri yaparak çözdüm

  • Uygulamanın cihazdan silinmesi,
  • Cihazın Mac ile olan bağlantısını kesme,
  • Cihazı kapatıp tekrar açmak,
  • Xcode'dan çıkma ve yeniden başlatma,
  • Bırakma Aletleri,
  • Son olarak, tekrar temizleyin ve oluşturun.

Ayrıca bir şey daha yaptım, çünkü Xcode iOS 5.0 kullanacak şekilde yapılandırıldı ve projem iOS 4.3 kullanıyor

  • Tüm çerçeveleri kaldırın ve tekrar ekleyin.

Soru Simülatör için. cihaz için değil.
viral

3

Alternatif geçici çözüm:

  • Uygulamanıza yeni bir tanımlayıcı verin. Buna com.foobar.myapp deniyorsa, com.foobar.myapp01 deyin

İPhone simülatörü ile ilgili olarak çalışan yeni bir uygulama olduğundan uygulamadaki tüm verileri kaybedersiniz. Bu, yeniden başlatmadan daha sinir bozucu olabilir veya olmayabilir - sadece listeye eklemek istedim.


3

Neden

Önceden çalışan uygulama tamamen durmadan önce uygulamanızı Simülatörde çalıştırma.

Çözüm

Tekrar çalıştırmadan önce Durdur düğmesinin tekrar etkinleştiğini görene kadar bekleyin.

(Xcode 4.2.1 kullanıyorum. OS X Lion'a yükselttiğimde bu sorun çok sık oldu).


Yine bu hatayı alıyorum. Her şeyi denedim ve sonunda bir iPad yeniden başlatma sorunu düzeltti.
5bar

2

Uygulamayı sildikten sonra telefonumu yeniden başlattıktan sonra temiz ve tekrar çalıştırarak düzeltildi. Şimdi iyi çalışıyor.

Tuhaf.


2

Sorunum için yeniden oluşturmaya veya yeniden yüklemeye gerek yok ve benim durumumda, uygulamayı iPhone'da çalıştırmaya çalışırken hata ortaya çıktı. Simülatör iyi çalıştı.

Çözüm: Uygulamayı telefondan silin, telefonun yeniden başlatılması ve şimdi her şey yolunda.


2

Lion'da Xcode 4.2.1 ile benim için çok şey oldu. 4.3.2'ye güncellendi ve artık gerçekleşmiyor. Onlar düzeltti sevindim.


2

Mike Ash , yeniden başlatma gerektirmeyen bir çözüm gönderdi (tanrı onu kutsasın!). Sadece koş:

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

Yukarıdaki komut, tüm başlatılan işleri listeler, adında UIKitApplication olan birini arar (bu, uygulamanıza uygun olmayan bir şekilde yapışan iş olacaktır), adı çıkarır ve launchd'a bu işten kurtulmasını söyler.


Bunu test etme şansım oldu (iç çekiş). Bazen işe yarıyor, bazen iPhone'umu ve hatta Mac'imi yeniden başlatmam gerekiyor (yukarıdaki komut "işlem bulunamadı" diyor).
Jano

2

Bunun Xcode'daki durdur düğmesine basmadan önce uygulamanızın iPhone'da zorla bırakılmasından kaynaklandığını düşünüyorum. Bazen Xcode'daki durdur düğmesine bastığınızda, asılıysa uygulamadan çıkmanız fazla zaman alır. Ama sadece sabırlı olun, sonunda çoğu zaman kapanacaktır.


1

İşlev veya sekmede değişken ayırabilirsiniz. İşleviniz veya sekmeniz kapatılırsa dağıtılır. Bu yüzden üye değişkeni veya global değişkeni bildirmeniz gerekir.


1

Çalıştır iletişim kutusundaki "Durdur" düğmesine güvenmeyi bırakana kadar bu hatayı her zaman alıyordum. Artık çalıştırmaya çalışmadan önce araç çubuğunda durma noktasına geldiğime göre, herhangi bir zombi işlemiyle karşılaşmadım.


0

Ah benim - Yukarıda ve diğer yazılarda listelenen HER ŞEY denedim. Xcode'u yeniden yükledim, makinemi yeniden başlattım, tüm eksik dosyaları doğru klasörlere kopyaladım ... Sonunda iphone'umu yedekledim, sildim ve geri yükledim ve işe yaradı!

Ben okuma neden olabilir ve etrafında bu benim iphone beyaz bağlantılarını yakalamak performans araçları ile çalışan sızıntıları yakalamak olduğunu düşünüyorum. Ya da böyle bir şey.

Aaaah, büyük rahatlama.


0

En kötü durumda iOS Simulater'ın içeriğini ve ayarını sıfırlayın ve çoğu zaman benim durumumda, simülatörle birlikte XCode'dan çıkma, XCode4.6 (sıklıkla takılan) ile her zaman çalışır


0

Benim durumumda bu tür bir sorunla karşılaştım işte ne yaptım

  1. Simülatörden uygulamayı silin.
  2. Türetilen veri klasörünü silin.
  3. Ürün menüsünü seçerek projede temiz bir işlem gerçekleştirin - temiz
  4. Simülatörü sıfırlayın.
  5. Xcode'tan çıkın.
  6. 7 numaralı adıma geçerseniz, projeyi şimdi çalıştırmayı deneyin.
  7. 1'den 5'e kadar olan tüm adımları tekrarlayın ve ardından makinenizi yeniden başlatın.

Çoğu durumda i adım 6 aşırı durumlarda çalışan var benim makine yeniden başlatmak zorunda kaldı.


0

Bu hata, iOS Simulator'ın eski sürümlerinde oluşuyordu, çünkü başka bir cihazdaki kapatılan bir işin eski örnekleri yeni örnekle çakışabiliyordu.

iOS 6.0 ve sonraki sürümlerde böyle sorunlar yaşanmamalıdır çünkü iOS 6.0, önyükleme alt kümelerinin kullanımını tanıttı ve iOS 7.0, ana bilgisayarın önyükleme sunucusundan tamamen yalıtılmış özel bir önyükleme sunucusu (launchd_sim) kullanımını tanıttı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.