Kesalahan saat menguji pada simulator iOS: Tidak dapat mendaftar dengan server bootstrap

370

Saya sedang menguji aplikasi saya di simulator ketika jatuh pada mengklik tombol UIAlertView. Saya berhenti debug di sana, membuat beberapa perubahan pada kode dan membangun aplikasi lagi. Sekarang ketika saya menjalankan aplikasi, saya mendapatkan kesalahan ini di konsol

Tidak dapat mendaftarkan com.myApp.debug dengan server bootstrap. Kesalahan: kode kesalahan tidak dikenal. Ini umumnya berarti bahwa instance lain dari proses ini sudah berjalan atau digantung di debugger. Program menerima sinyal: "SIGABRT".

Saya mencoba menghapus aplikasi dari simulator, melakukan build bersih tetapi saya masih mendapatkan kesalahan ini ketika saya mencoba menjalankan aplikasi.

Apa yang harus saya lakukan untuk dapat menjalankan aplikasi pada simulator saya lagi?

hilangInTransit
sumber
2
Ada saran tentang apa yang harus dilakukan ketika ini terjadi saat pengujian pada perangkat? Saya sudah mencoba me-restart perangkat, Xcode.
iPadDeveloper2011
1
Saya juga mencoba menghapus aplikasi pada perangkat, berhenti semua aplikasi yang aktif (klik dua kali rumah, tahan ikon aplikasi, sentuh tanda '-') restart Xcode, logout dan masuk lagi. Sejauh ini tidak ada yang berhasil.
iPadDeveloper2011
Coba "Empty cache" di menu XCode. Itu juga membantu.
LostInTransit
3
Untuk semua orang yang menghadapi masalah ini, kemudian menemukan, ini terjadi sebagian besar karena bug dalam kode. Cari beberapa kode yang membutuhkan banyak waktu eksekusi atau aplikasi dalam satu lingkaran.
lostInTransit
4
Ketika itu terjadi saya baru saja membunuh SimulatorBridge dan keluar dari simulator. ps ax | grep SimulatorBridge
Elland

Jawaban:

162

Coba berhenti dan mulai ulang simulator? Jika "memperburuk menjadi terburuk" Anda selalu dapat mencoba memulai kembali: menurut pengalaman saya ini harus memperbaikinya.

Elliot Kroo
sumber
44
Akhirnya me-restart sistem! Masih tidak tahu apa yang menyebabkan masalah ini!
lostInTransit
6
Seperti komentar di bawah, Anda biasanya dapat melihat proses yang macet di Activity Monitor dan membunuhnya di sana.
mxcl
13
Saya benci memulai kembali :) Berhenti dari proses yang macet bekerja untuk saya: ps ax | grep Simulator akan menampilkan aplikasi Anda yang sedang berjalan, dalam kasus saya itu adalah MyApp.app yang digantung.
BadPirate
12
Restart tidak membantu
Pascal Klein
10
Saya sering mendapatkan ini di XCode 4.3. Memulai ulang aplikasi atau berhenti dari simulator tidak membantu. Saya harus me-restart komputer untuk membuatnya berfungsi.
Øystein
242

status: ini telah terlihat sebagai Mac OS 10.8 dan Xcode 4.4.

tl; dr: Ini dapat terjadi dalam dua konteks: saat berjalan di perangkat dan saat berjalan di simulator. Saat berjalan pada perangkat, melepaskan dan menghubungkan kembali perangkat tampaknya memperbaiki keadaan.

Mike Ash menyarankan

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

Ini tidak berfungsi sepanjang waktu. Sebenarnya, itu tidak pernah berhasil untuk saya tetapi jelas bekerja dalam beberapa kasus. Hanya tidak tahu kasus mana. Jadi patut dicoba.

Jika tidak, satu-satunya cara yang diketahui untuk memperbaikinya adalah memulai kembali launchd pengguna. Reboot akan melakukannya tetapi ada cara yang kurang drastis / lebih cepat. Anda harus membuat pengguna admin lain, tetapi Anda hanya perlu melakukannya sekali. Ketika hal-hal mengganjal, keluarlah seperti dirimu sendiri, masuklah sebagai pengguna itu, dan bunuh launchd milik pengguna utama Anda, misalnya,

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

mengganti nama pengguna utama Anda dengan user_id. Masuk lagi karena pengguna normal Anda mengembalikan Anda ke keadaan waras. Agak menyakitkan, tetapi kurang dari reboot penuh.

detail:

Ini sudah mulai terjadi lebih sering dengan Lion / Xcode 4.2. (Secara pribadi, saya tidak pernah melihatnya sebelum kombinasi itu.)

Bug tersebut tampaknya ada di launchd, yang mewarisi proses aplikasi sebagai anak ketika debugger berhenti men-debug-nya tanpa membunuhnya. Ini biasanya ditandai oleh aplikasi menjadi zombie, memiliki status proses Z dalam ps.

Masalah inti tampaknya berada di server nama bootstrap yang diterapkan di launchd. Ini (sejauh yang saya mengerti) memetakan id aplikasi ke port mach. Ketika bug dipicu, aplikasi mati tetapi tidak dibersihkan dari peta server nama server bootstrap dan sebagai hasilnya, server bootstrap menolak untuk mengizinkan instance aplikasi lain untuk didaftarkan dengan nama yang sama.

Diharapkan (lihat komentar) bahwa memaksa launchd wait()untuk zombie akan memperbaiki keadaan tetapi tidak. Ini bukan status zombie yang merupakan masalah inti (itulah sebabnya beberapa zombie tidak berbahaya) tetapi server nama bootstrap dan tidak ada cara yang dikenal untuk menghapus kekurangan membunuh launchd ini.

Sepertinya bug dipicu oleh sesuatu yang buruk antara Xcode, gdb, dan launchd pengguna. Saya baru saja mengulangi wedge dengan menjalankan aplikasi di iphone simulator, setelah berhenti dalam gdb, dan kemudian melakukan build dan run ke ipad simulator. Tampaknya peka untuk beralih simulator (iOS 4.3 / iOS 5, iPad / iPhone). Itu tidak terjadi sepanjang waktu, tetapi cukup sering ketika saya banyak beralih simulator.

Membunuh launchd saat Anda masuk akan mengacaukan sesi Anda. Keluar dan masuk kembali tidak mematikan peluncuran pengguna; OS X menjaga proses yang ada. Reboot akan memperbaiki keadaan, tapi itu menyakitkan. Instruksi di atas lebih cepat.

Saya telah mengirimkan bug ke Apple, FWIW. rdar: // 10330930

smparkes
sumber
2
Terima kasih atas penjelasan menyeluruh tentang perilaku Lion / XCode4.2 yang baru. Tampaknya terjadi lebih sering ketika men-debug dua aplikasi terpisah.
samkass
2
Bukan hanya Lion. Masih menggunakan Snow Leopard di sini dan melihat kesalahan ini berkali-kali sejak menggunakan XCode 4.2. (Digunakan untuk menggunakan XCode 3.x sampai iOS SDK 5.0 dirilis.)
Jonny
3
Terima kasih atas informasinya ... Ini sering terjadi pada saya baru-baru ini ... Dua kali dalam 10 menit terakhir. Agak sulit untuk mendapatkan alur kerja yang solid ketika saya harus terus me-restart. Ya, matikan untuk me-restart komputer saya lagi.
Brad Goss
1
@smparkes: Ini sepertinya terjadi lebih sering daripada sebelumnya. Saya baru saja mengubah bundleID dan semuanya berfungsi lagi, tetapi itu menjengkelkan ketika bekerja dengan logika CoreData yang Anda coba debug. Meski begitu, tidak terlalu menyebalkan daripada me-reboot, saya akui.
Mike A
2
4.3.1 dan itu baru saja terjadi ... soooo menjengkelkan. Bagi saya, me-restart iPhone itu sendiri biasanya menyelesaikannya, saya tidak perlu me-restart Mac saya. Ini terjadi dengan XCode 4.2 di bawah Snow Leopard, sekitar September 2011 bagi saya.
TheEye
70

Saya menemukan saya sudah mulai mengalami masalah ini dengan Lion + Xcode 4.2. Saya juga mengalami masalah di Xcode 4.3.

Saya telah mencoba semua saran tetapi tidak ada yang bekerja selain reboot penuh.

Ini adalah bagaimana Anda menentukan apakah Anda memerlukan reboot dengan cepat.

Daftar semua proses Zombie Anda:

ps -el | grep 'Z'

Jika Anda melihat aplikasi Anda terdaftar sebagai proses Zombie, Anda perlu me-reboot mesin Anda. Pesan kesalahan menyatakan "Ini umumnya berarti bahwa instance lain dari proses ini sudah berjalan atau digantung di debugger". Nah, Xcode mendeteksi proses Zombie ini yang tidak bisa Anda bunuh. Satu-satunya cara Anda dapat memperbaikinya adalah dengan reboot sistem. :(

EDIT, 20120823: Saya memiliki pengetahuan yang lebih baik tentang proses Zombie jadi saya ingin memperbarui jawaban ini. Proses Zombie dibuat ketika proses induk tidak memanggil wait () (tunggu proses untuk mengubah status) pada proses anak terminating. Anda tidak dapat menjalankan 'bunuh' secara langsung pada proses Zombie tetapi jika Anda membunuh proses induk, proses anak zombie akan 'dituai' dan dihapus dari tabel proses.

Saya sudah lama tidak melihat masalah ini jadi belum memeriksa untuk melihat apa proses induk dalam skenario ini. Alternatif untuk membunuh proses induk adalah me-reboot sistem Anda. :)

jyap
sumber
Terima kasih, saya memiliki 7 contoh dari 3 program yang sedang saya jalankan sebagai zombie.
ArtSabintsev
1
Mem-boot ulang sudah cukup tetapi tidak perlu, seperti yang disebutkan di atas. Juga, terkadang ada zombie di sekitar yang tidak menyebabkan masalah, jadi mencari zombie dengan cara ini sebenarnya bukan ukuran yang dapat diandalkan. Satu-satunya tanda pasti adalah pesan dalam Xcode.
smparkes
Sudahkah Anda mencoba membunuh proses zombie ini sebagai root? Saya reboot sebelum saya berpikir untuk melakukannya.
Ryan H.
1
@smparkes, ya, itu jelas berdasarkan pertanyaan ini yang membahas pesan kesalahan ini.
jyap
1
@HZC, ya, Anda tidak bisa membunuh proses zombie bahkan sebagai root.
jyap
20

Saya baru saja mengalami hal ini pada saya: Saya mendapatkan kesalahan hanya pada perangkat saya dan simulator berfungsi dengan baik. Saya akhirnya harus mengatur ulang perangkat saya dan kesalahan hilang.

n3wscott
sumber
1
sama di sini, menyalakan kembali perangkat dan hilang. Simulator bekerja dengan baik
agente_secreto
15

Saya mengalami masalah ini sangat sering baru-baru ini. Apa yang akan mencegah hal ini terjadi? Logout dan perbaikan masalah tapi .. itu menjengkelkan untuk melakukannya sesering ini.

EDIT:

Saya baru saja menemukan penyebabnya. Saya memiliki bug dalam metode ApplicationWillTerminate. Jadi ketika saya mengklik tombol stop pada jendela Xcode, aplikasi tidak dapat berhenti dan mulai hang.

periksa Activity Monitor untuk melihat apakah aplikasi Anda ada dalam daftar. paksa berhenti jika memungkinkan.

sang
sumber
2
Ini memperbaikinya untukku! ps aux | grep Simulator
Jason Prado
Jika itu membantu saya membuat bug ini saat meluncurkan Alat Kinerja Kebocoran
IssamTP
14

Jika Anda menemukan masalah Anda disebabkan oleh proses zombie:

ps -el | grep 'Z'
(seperti pada komentar sebelumnya https://stackoverflow.com/a/8104400/464289 ) dan hanya ingin segera memperbaiki masalah, Anda dapat melakukannya tanpa me-reboot atau membunuh apa pun. Cukup ganti nama target proyek Anda yang dapat dieksekusi:

  1. Klik pada proyek di panel sebelah kiri
  2. Pilih Bangun Pengaturan di panel tengah
  3. Di bawah ' Kemasan ', ubah ' Nama Produk ' dari $ (TARGET_NAME) menjadi $ (TARGET_NAME) .1

Mudah!

JRG
sumber
ini tidak berhasil untuk saya, dapatkan kesalahan yang sama dengan yang saya dapatkan: Profil penyediaan 'mataleao2' menentukan Pengenal Aplikasi 'au.com.mataleao' yang tidak cocok dengan pengaturan saat ini 'au.com.mataleao-1'
sapatos
Apakah Anda menguji pada simulator atau pada iPhone?
JRG
Saya hanya menguji pada iPhone, fungsionalitas yang saya uji hanya akan berfungsi pada ponsel
sapatos
7

Yah, tidak ada jawaban tetapi setidaknya satu tes lagi untuk dilakukan. Buka Terminal dan jalankan perintah ini: "ps-Ael | grep Z". Jika Anda mendapatkan dua entri, satu "(dentang)" dan yang lainnya aplikasi atau nama perusahaan Anda, Anda disembunyikan - reboot.

Jika Anda seorang pengembang, masukkan bug pendek dan beri tahu Apple betapa menjengkelkannya harus reboot, dan katakan mereka dapat menduplikasi bug ini ke "rdar: // 10401934" yang baru saja saya masukkan.

David

David H
sumber
5

Mengatur ulang Simulator iOS memperbaiki kesalahan saya. Meskipun ini akan menghapus semua Aplikasi yang Anda miliki di Simulator, itu memperbaiki masalah tanpa harus me-restart mesin.

Anda dapat mengatur ulang Simulator iOS Anda dengan melakukan hal berikut:

1) Buka menu "iOS Simulator", di sebelah logo Apple () di paling kiri layar utama Anda.
2) Pilih "Reset Konten dan Pengaturan ...".
3) Baca pesan pop dan jika Anda setuju klik "Reset" jika tidak, klik "Don't Reset".

domthinks
sumber
3
Tidak membantu sedikit pun, sebaliknya Anda kehilangan semua konten / aplikasi / foto / kontak Anda
aneh
1
@strange itu simulator. toh itu tidak mengandung informasi penting. :)
Evgen Bodunov
5
  1. Tutup simulator
  2. Hentikan aplikasi dari berjalan di xCode.
  3. Buka Monitor Aktivitas dan cari proses yang berjalan dengan NAME Aplikasi Anda .
  4. Matikan proses ini di Monitor Aktivitas
  5. Bangun kembali proyek Anda dan Anda harus siap
negrelja
sumber
Proses tersebut tampaknya kebal dari Dibunuh di Activity Monitor, bahkan dengan "Force Quit"
Ferruccio
4

Saya punya masalah @jyap menyebutkan dengan proses zombie. Satu-satunya cara untuk menghapusnya adalah dengan reboot. Namun, saya perhatikan bahwa teman-teman saya yang bekerja di proyek yang sama akan mendapatkan masalah yang sama tetapi dapat membunuh simulator tanpa membuat proses zombie. Saya benar-benar menghapus Xcode dan menginstal ulang, dan sementara saya masih mendapatkan kesalahan, itu tidak membuat proses zombie, jadi saya tidak perlu reboot.

Sebelum saya melakukan itu, saya menggunakan solusi yang sangat jelek ini: ubah ID aplikasi Anda dan jalankan lagi. Anda berakhir dengan salinan sampah aplikasi di simulator, tetapi Anda dapat menunda reboot untuk sementara waktu.

Christopher Pickslay
sumber
4

Kesalahan ini sering terjadi pada saya, hampir setiap kali saya menguji aplikasi di Simulator, memaksa saya untuk memulai kembali.

Berikut ini solusinya jika Anda ingin menyelesaikan pekerjaan:

  • Klik proyek Anda di navigator Proyek
  • Go Target -> Info
  • Tambahkan kunci agar Aplikasi tidak berjalan di latar belakang dan diatur ke YES.

Ini berarti bahwa ketika Anda menekan tombol beranda di simulator atau keluar dari simulator, aplikasi tidak hang.

Jangan lupa untuk mengubah pengaturan ini sebelum distribusi! Letakkan di daftar periksa rilis Anda :)

Chris Burt-Brown
sumber
1
Ini berbahaya, karena mencegah Anda menguji perilaku latar belakang sampai Anda ingat untuk mengubahnya kembali.
tc.
@ tc: Ya, saya setuju. Namun, jika Anda dipaksa untuk me-restart setiap kali Anda menjalankan aplikasi iOS Anda (yang saya alami) maka ini mungkin masih lebih baik daripada alternatifnya.
Chris Burt-Brown
4

Jika ini terjadi saat pengujian pada iPhone. Nyalakan ulang ponsel. Dari apa yang saya katakan pada ponsel atau simulator masih percaya ada instance dari aplikasi berjalan, jadi ketika itu terakhir dijalankan itu tidak dihentikan dengan benar lakukan untuk kesalahan dalam kode Anda atau ponsel / simulator hanya ingin memiliki mengerang.

Popeye
sumber
4

Saya mendapatkan kesalahan ini saat men-debug aplikasi saya di iPhone 4. Mem-boot ulang iPhone dengan susah payah memecahkan masalah saya. (Mematikan iPhone digantung ...)

Saya tidak memiliki proses zombie di mac saya dan me-reboot mac tidak menyelesaikan masalah.

Mungkin bug ini dapat memanifestasikan dirinya di kedua simulator dan perangkat yang sebenarnya ???

craig
sumber
4

Mulai Ulang Perangkat, Berhasil! : D

Terima kasih semuanya atas saran yang bagus.

Haris Hussain
sumber
3

Saya baru saja mengalami kesalahan ini. Saya mencoba me-restart simulator dan Xcode tetapi proyek saya hanya akan berfungsi lagi setelah bersih dan membangun. Tidak tahu apa yang menyebabkannya.

Daniel Wood
sumber
3

Saya memiliki setter rekursif yang meniup stack dan membunuh aplikasi saya sedemikian rupa sehingga saya harus menyalakan iPad saya. Itu terbukti dengan perbaikan dalam kode.

mobibob
sumber
3

Saya memiliki masalah yang sama dan menyelesaikannya dengan melakukan hal berikut

  • Menghapus aplikasi dari perangkat,
  • Melepaskan koneksi perangkat dari Mac,
  • Mematikan dan menghidupkan kembali perangkat,
  • Berhenti dan meluncurkan kembali Xcode,
  • Instrumen Berhenti,
  • Akhirnya, Bersihkan dan Bangun kembali.

Saya juga melakukan satu hal lagi, karena Xcode dikonfigurasi untuk menggunakan iOS 5.0 dan proyek saya menggunakan iOS 4.3

  • Hapus semua kerangka kerja dan tambahkan lagi.
Joey
sumber
Pertanyaannya adalah untuk Simulator. bukan untuk perangkat.
viral
3

Penanganan alternatif:

  • Berikan pengidentifikasi baru pada aplikasi Anda. Jika itu disebut com.foobar.myapp, sebut saja com.foobar.myapp01

Anda kehilangan semua data dalam aplikasi karena sebenarnya itu adalah aplikasi baru yang berjalan sejauh menyangkut simulator iPhone. Ini mungkin atau mungkin tidak lebih mengganggu daripada me-reboot - hanya ingin menambahkannya ke daftar.

n13
sumber
3

Penyebab

Menjalankan aplikasi Anda di Simulator sebelum aplikasi yang berjalan sebelumnya benar-benar berhenti.

Cara Mengatasinya

Tunggu hingga Anda melihat tombol Stop menjadi aktif lagi sebelum berjalan lagi.

(Saya menggunakan Xcode 4.2.1. Masalah ini sangat sering terjadi ketika saya memutakhirkan ke OS X Lion).

5 bar
sumber
Baru saja mengalami kesalahan ini lagi. Saya mencoba segalanya dan akhirnya iPad restart memperbaikinya.
bar
2

Diperbaiki dengan me-reboot ponsel saya setelah menghapus aplikasi, kemudian membangunnya kembali dan berjalan kembali. Sekarang berfungsi dengan baik.

Aneh.

CommaToast
sumber
2

Tidak perlu membangun kembali atau menginstal ulang untuk masalah saya, dan dalam kasus saya kesalahan muncul ketika mencoba menjalankan aplikasi pada iPhone. Simulator bekerja dengan baik.

Solusi: Hapus aplikasi dari ponsel, lakukan restart ponsel secara dingin dan sekarang semuanya baik-baik saja.

timv
sumber
2

Banyak terjadi bagi saya dengan Xcode 4.2.1 di Lion. Diperbarui ke 4.3.2 dan itu tidak terjadi lagi. Senang mereka memperbaikinya.

tbag
sumber
2

Mike Ash memposting solusi (Tuhan memberkatinya!) Yang tidak memerlukan reboot. Lari saja:

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

Perintah di atas mencantumkan semua pekerjaan launchd, mencari satu dengan UIKitApplication dalam nama (yang akan menjadi pekerjaan yang sesuai dengan aplikasi Anda yang tidak benar menempel), mengekstrak namanya, dan memberitahu launchd untuk menyingkirkan pekerjaan itu.

Jano
sumber
Saya memiliki banyak kesempatan untuk menguji ini (menghela nafas). Kadang-kadang berfungsi, kadang-kadang saya harus reboot iPhone saya, atau bahkan Mac saya (perintah di atas mengatakan "proses tidak ditemukan").
Jano
2

Saya pikir ini disebabkan oleh pemutusan paksa aplikasi Anda di iPhone sebelum menekan tombol stop di Xcode. Terkadang ketika Anda menekan tombol stop di Xcode, maka dibutuhkan waktu ekstra untuk keluar dari aplikasi jika hang. Tapi bersabarlah, itu akhirnya akan berhenti sebagian besar waktu.

CommaToast
sumber
1

Anda dapat mengalokasikan variabel dalam fungsi atau tab. Ini akan membatalkan alokasi jika fungsi atau tab Anda berhenti. Jadi, Anda harus mendeklarasikannya variabel anggota atau variabel global.

bTagTiger
sumber
1

Saya mendapatkan kesalahan ini sepanjang waktu sampai saya berhenti memercayai tombol "Stop" di kotak dialog Run. Sekarang saya selalu menekan berhenti di bilah alat sebelum mencoba menjalankan, saya belum menemukan proses zombie apa pun.

Angela
sumber
0

Ya ampun - Saya sudah mencoba SEMUA yang tercantum di atas dan di pos lainnya. Menginstal ulang Xcode, me-reboot mesin saya, menyalin semua file yang hilang ke folder kanan ... Akhirnya saya mencadangkan iphone saya, menghapusnya dan mengembalikannya, dan berhasil!

Saya pikir apa yang mungkin menjadi penyebab dari membaca di dalam dan sekitar ini adalah memutus iPhone saya putih itu berjalan dengan alat kinerja menangkap kebocoran. Atau semacamnya.

Aaaah, napas lega.

Smikey
sumber
0

Dalam kondisi terburuk Setel ulang konten dan pengaturan iOS Simulater, dan sebagian besar waktu dalam kasus saya, keluar dari XCode bersama dengan simulator, selalu berfungsi untuk saya dengan XCode4.6 (yang sering digantung)

rptwsthi
sumber
0

Saya menghadapi masalah semacam ini sekali dalam kasus saya, inilah yang saya lakukan

  1. Hapus aplikasi dari simulator.
  2. Hapus folder data yang diturunkan.
  3. Lakukan tindakan bersih dalam proyek dengan memilih menu produk - bersih
  4. Setel ulang simulator.
  5. Keluar dari Xcode.
  6. Coba jalankan proyek sekarang jika bekerja dengan baik lanjutkan ke langkah 7
  7. Ulangi semua langkah dari 1 hingga 5 dan kemudian hidupkan ulang mesin Anda.

Dalam sebagian besar kasus saya membuatnya berjalan pada langkah 6 kasus ekstrim saya harus me-restart mesin saya.

pengguna2538944
sumber
0

Kesalahan ini biasa terjadi dalam versi lama dari iOS Simulator karena contoh pekerjaan yang lebih lama di perangkat lain yang dimatikan dapat bertabrakan dengan instance baru.

iOS 6.0 dan yang lebih baru seharusnya tidak mengalami masalah seperti ini karena iOS 6.0 memperkenalkan penggunaan subset bootstrap, dan iOS 7.0 memperkenalkan penggunaan server bootstrap khusus (launchd_sim) yang sepenuhnya terisolasi dari server bootstrap host.

Jeremy Huddleston Sequoia
sumber