370

UIAlertView のボタンをクリックするとクラッシュしたときに、シミュレーターでアプリをテストしていました。そこでデバッグを停止し、コードにいくつかの変更を加えて、アプリを再度ビルドしました。アプリケーションを実行すると、コンソールにこのエラーが表示されます

com.myApp.debug をブートストラップ サーバーに登録できませんでした。エラー: 不明なエラー コード。これは通常、このプロセスの別のインスタンスが既に実行されているか、デバッガーでハングしていることを意味します。プログラムはシグナル「SIGABRT」を受信しました。

シミュレーターからアプリを削除してクリーン ビルドを試みましたが、アプリを実行しようとするとこのエラーが発生します。

シミュレーターでアプリを再び実行できるようにするにはどうすればよいですか?

4

31 に答える 31

242

ステータス:これは、MacOS10.8およびXcode4.4と同じくらい最近見られました。

tl; dr:これは、デバイスで実行している場合とシミュレーターで実行している場合の2つのコンテキストで発生する可能性があります。デバイスで実行している場合、デバイスを切断して再接続すると問題が解決するようです。

マイクアッシュが提案した

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

これは常に機能するとは限りません。実際、それは私にとってはうまくいきませんでしたが、場合によっては明らかにうまくいきます。どちらの場合かわからない。ですから、試してみる価値はあります。

それ以外の場合、これを修正する唯一の既知の方法は、launchdユーザーを再起動することです。再起動するとそれが可能になりますが、それほど劇的で高速な方法はありません。別の管理者ユーザーを作成する必要がありますが、作成する必要があるのは1回だけです。物事がくさびになったら、自分でログアウトし、そのユーザーとしてログインして、メインユーザーに属するlaunchdを強制終了します。

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

の代わりにメインユーザー名を使用しuser_idます。通常のユーザーが正常な状態に戻ったら、再度ログインします。ちょっと痛いですが、完全に再起動するほどではありません。

詳細:

これは、Lion /Xcode4.2でより頻繁に発生し始めています。(個人的には、その組み合わせの前にそれを見たことがありません。)

バグはlaunchdにあるようです。これは、デバッガーがアプリプロセスを強制終了せずにデバッグを停止すると、子としてアプリプロセスを継承します。これは通常、アプリがゾンビになり、psでプロセスステータスがZになることで通知されます。

コアの問題は、launchdに実装されているブートストラップネームサーバーにあるようです。これは(私が理解している範囲で)アプリIDをマッハポートにマップします。バグがトリガーされると、アプリは停止しますが、ブートストラップサーバーのネームサーバーマップから削除されません。その結果、ブートストラップサーバーは、アプリの別のインスタンスを同じ名前で登録することを許可しません。

ゾンビのために強制的に起動するwait()ことで問題が解決することが期待されていましたが(コメントを参照)、そうではありません。主要な問題であるのはゾンビのステータスではなく(これが一部のゾンビが良性である理由です)、ブートストラップネームサーバーであり、この殺害の不足を解消する既知の方法はありません。

バグは、Xcode、gdb、および起動されたユーザーの間の何か悪いことによって引き起こされているようです。iphoneシミュレーターでアプリを実行し、gdb内で停止させてから、ビルドを実行してipadシミュレーターで実行することにより、ウェッジを繰り返しました。シミュレーターの切り替え(iOS 4.3 / iOS 5、iPad / iPhone)に敏感なようです。それはいつも起こるわけではありませんが、私がシミュレーターを頻繁に切り替えるときはかなり頻繁に起こります。

ログイン中に起動されたkillは、セッションを台無しにします。ログアウトして再度ログインしても、launchdされたユーザーが強制終了されることはありません。OS Xは、既存のプロセスを維持します。再起動すると問題は解決しますが、それは苦痛です。上記の手順の方が高速です。

Apple、FWIWにバグを提出しました。rdar://10330930

于 2011-10-22T16:14:46.327 に答える
162

シミュレータを終了して再起動してみてください。「最悪になる」場合は、いつでも再起動を試すことができます。私の経験では、これで修正されるはずです。

于 2009-04-25T05:21:47.737 に答える
70

Lion + Xcode 4.2 でこの問題が発生し始めました。Xcode 4.3でも問題が発生しました。

すべての提案を試しましたが、完全な再起動以外は機能しませんでした。

すぐに再起動する必要があるかどうかを判断する方法は次のとおりです。

すべての Zombie プロセスをリストします。

ps -el | grep 'Z'

アプリがゾンビ プロセスとしてリストされている場合は、マシンを再起動する必要があります。エラーメッセージには、「これは通常、このプロセスの別のインスタンスが既に実行されているか、デバッガーでハングしていることを意味します」と記載されています。さて、Xcode は、このゾンビ プロセスを検出していますが、これを強制終了することはできません。それを修正できる唯一の方法は、システムを再起動することです。:(

編集、20120823:私はゾンビプロセスについてより良い知識を持っているので、この回答を更新したいと思いました. 親プロセスが終了中の子プロセスで wait() (プロセスが状態を変更するのを待つ) を呼び出さない場合、ゾンビ プロセスが作成されます。ゾンビ プロセスに対して直接「kill」を実行することはできませんが、親プロセスを強制終了すると、ゾンビの子プロセスが「リープ」され、プロセス テーブルから削除されます。

この問題を長い間見ていないので、このシナリオで親プロセスが何であるかを調べていません。親プロセスを強制終了する代わりに、システムを再起動します。:)

于 2011-11-12T12:19:01.550 に答える
20

私はちょうどこれが私に起こった:私は自分のデバイスでのみエラーを受け取り、シミュレーターは正常に動作していました. 最終的にデバイスをリセットする必要があり、エラーはなくなりました。

于 2010-07-21T00:46:56.040 に答える
15

私は最近この問題を頻繁に抱えています。これを防ぐにはどうすればよいですか?ログアウトしてログインすると問題は解決しますが、頻繁にそうするのは面倒です。

編集:

原因を見つけました。ApplicationWillTerminateメソッドにバグがありました。そのため、Xcodeウィンドウの停止ボタンをクリックすると、アプリが正しく終了できず、ハングし始めました。

アクティビティモニターをチェックして、アプリがリストにあるかどうかを確認します。可能であれば強制終了します。

于 2009-08-07T18:30:48.407 に答える
14

問題の原因がゾンビ プロセスであることがわかった場合:

ps -el | grep 'Z'
(以前のコメントのようにhttps://stackoverflow.com/a/8104400/464289)問題をすぐに修正したい場合は、再起動したり何も殺したりせずに修正できます。プロジェクト ターゲットの実行可能ファイルの名前を変更するだけです。

  1. 左側のペインでプロジェクトをクリックします
  2. 中央のペインでビルド設定を選択します
  3. パッケージ」の下の「製品名」を$(TARGET_NAME) から $(TARGET_NAME) に変更します。1

簡単!

于 2012-03-21T00:42:58.327 に答える
7

答えはありませんが、少なくとももう 1 つのテストを行う必要があります。ターミナルを開き、コマンド「ps-Ael | grep Z」を実行します。1 つは "(clang)" で、もう 1 つはアプリまたは会社の名前の 2 つのエントリを取得した場合は、問題があります。再起動してください。

あなたが開発者である場合は、短いバグを入力して、Apple に再起動がいかに面倒かを伝えてください。また、私が入力した「rdar://10401934」にこのバグを複製できることを伝えてください。

デビッド

于 2011-11-05T14:45:24.113 に答える
5
  1. シミュレーターを閉じる
  2. xCode でのアプリの実行を停止します。
  3. Activity Monitorを開き、App NAMEで実行されているプロセスを検索します。
  4. アクティビティモニターでこのプロセスを強制終了します
  5. プロジェクトを再構築すると、準備が整います
于 2011-11-29T17:57:35.993 に答える
5

iOS シミュレーターをリセットすると、エラーが修正されました。これにより、シミュレーターにあるすべてのアプリが削除されますが、マシンを再起動しなくても問題は解決します。

次の手順を実行して、iOS シミュレーターをリセットできます。

1) メイン画面の左端にある Apple () ロゴの横にある「iOS シミュレーター」メニューに移動します。
2) [コンテンツと設定をリセット...] を選択します。
3) ポップ メッセージを読み、同意する場合は [リセット] をクリックします。同意しない場合は、[リセットしない] をクリックします。

于 2011-04-13T20:31:47.623 に答える
4

iPhoneでテストしているときにこれが発生した場合。電話を再起動するだけです。私が聞いたところによると、電話またはシミュレーターはまだアプリのインスタンスが実行されていると信じているので、最後に実行されたときに正しく終了していなかったか、コードのエラーまたは電話/シミュレーターがうめき声。

于 2012-02-28T08:43:57.187 に答える
4

iPhone 4でアプリをデバッグしているときにこのエラーが発生しました。iPhoneをハードリブートすると、問題が解決しました。(iPhoneの電源を切るとハングしました...)

Macにゾンビプロセスがなく、Macを再起動しても問題は解決しませんでした。

たぶん、このバグはシミュレータと実際のデバイスの両方で現れる可能性がありますか?

于 2012-03-12T02:24:28.010 に答える
4

このエラーは、シミュレーターでアプリをテストするたびに頻繁に発生し、再起動を余儀なくされます。

いくつかの作業を完了させたい場合の回避策は次のとおりです。

  • プロジェクトナビゲーターでプロジェクトをクリックします
  • ターゲットに移動->情報
  • Application does not run in backgroundのキーを追加し、に設定しYESます。

これは、シミュレーターでホーム ボタンを押すか、シミュレーターを終了しても、アプリがハングしないことを意味します。

配布前にこの設定を元に戻すことを忘れないでください! あなたのリリースチェックリストにそれを入れてください:)

于 2012-01-10T11:16:07.713 に答える
4

@jyapがゾンビプロセスについて言及しているという問題がありました。それらをクリアする唯一の方法は、再起動することでした。しかし、同じプロジェクトに取り組んでいる友人が同じ問題を抱えていても、ゾンビ プロセスを作成せずにシミュレーターを強制終了できることに気付きました。Xcode を完全にアンインストールして再インストールしましたが、それでもエラーが発生しますが、ゾンビ プロセスは作成されないため、再起動する必要はありません。

それを行う前は、この非常に醜い回避策を使用していました。アプリ ID を変更して、もう一度実行してください。シミュレーターにアプリのコピーがジャンクになってしまいますが、再起動をしばらく延期することができます。

于 2011-11-10T00:39:08.060 に答える
4

デバイスを再起動しました。:D

素晴らしい提案をありがとうございました。

于 2012-10-27T19:13:48.947 に答える
3

私は同じ問題を抱えていて、次のようにして解決しました

  • デバイスからアプリを削除すると、
  • デバイスを Mac から切断すると、
  • デバイスの電源をオフにしてからオンにすると、
  • Xcodeを終了して再起動すると、
  • 楽器をやめて、
  • 最後に、Clean and Build を再度実行します。

Xcode は iOS 5.0 を使用するように構成されており、私のプロジェクトは iOS 4.3 を使用しているため、もう 1 つ実行しました。

  • すべてのフレームワークを削除して、再度追加します。
于 2011-10-17T12:06:12.197 に答える
3

再帰的なセッターがスタックを吹き飛ばし、iPad の電源を入れなければならないような方法でアプリを強制終了しました。コードを修正することで証明できました。

于 2011-08-19T22:43:46.890 に答える
3

このエラーが発生しました。シミュレーターと Xcode を再起動しようとしましたが、私のプロジェクトはクリーンとビルドの後にのみ再び機能します。何が原因なのかわかりません。

于 2010-12-17T15:57:56.763 に答える
3

原因

以前に実行していたアプリが完全に停止する前に、シミュレーターでアプリを実行します。

修正

[停止] ボタンが再びアクティブになるまで待ってから、再度実行してください。

(私は Xcode 4.2.1 を使用しています。この問題は、OS X Lion にアップグレードしたときに頻繁に発生しました)。

于 2012-02-03T20:02:41.120 に答える
3

別の回避策:

  • アプリに新しい識別子を付与します。com.foobar.myapp という名前の場合は、com.foobar.myapp01 と呼びます。

iPhone シミュレータに関する限り、実際には新しいアプリが実行されているため、アプリ内のすべてのデータが失われます。これは、再起動よりも煩わしい場合とそうでない場合があります-リストに追加したかっただけです.

于 2012-02-07T15:08:42.180 に答える
2

これは、Xcode で停止ボタンを押す前に、iPhone でアプリを強制終了したことが原因だと思います。Xcode で停止ボタンを押したときに、アプリがハングした場合、アプリを終了するのに余分な時間がかかることがあります。しかし、辛抱強く待ってください。ほとんどの場合、最終的には終了します。

于 2012-06-10T01:35:40.820 に答える
2

私の問題には再構築や再インストールは必要ありません。私の場合、iPhone でアプリを実行しようとするとエラーが表示されました。シミュレーターは問題なく動作しました。

解決策:電話からアプリを削除し、電話をコールドリスタートすると、すべてうまくいきます。

于 2012-01-16T02:05:32.257 に答える
2

Mike Ashは、再起動を必要としない解決策 (彼に神のご加護を!) を投稿しました。とにかく走れ:

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

上記のコマンドは、すべての launchd ジョブを一覧表示し、名前に UIKitApplication を含むものを検索し (これは、不適切に固執しているアプリに対応するジョブになります)、名前を抽出し、そのジョブを削除するように launchd に指示します。

于 2012-05-07T21:19:45.340 に答える
2

アプリを削除した後に携帯電話を再起動し、クリーンに再構築して再度実行することで修正されました。今は正常に動作します。

変。

于 2011-07-06T09:03:46.153 に答える
2

Lion で Xcode 4.2.1 を使用すると、多くのことが起こりました。4.3.2 に更新され、もう発生しません。彼らがそれを修正してくれてうれしい。

于 2012-05-02T23:02:56.750 に答える
1

[実行]ダイアログボックスの[停止]ボタンの信頼を停止するまで、このエラーが常に発生していました。実行を試みる前に常にツールバーで停止を押したので、ゾンビプロセスにまだ遭遇していません。

于 2012-01-29T06:49:00.243 に答える
1

関数またはタブに変数を割り当てることができます。関数またはタブが終了すると、ロックが解除されます。したがって、メンバー変数またはグローバル変数を宣言する必要があります。

于 2011-09-07T02:27:07.703 に答える
0

私の場合、この種の問題に一度直面しました

  1. シミュレーターからアプリを削除します。
  2. 派生データ フォルダーを削除します。
  3. 製品メニュー - クリーンを選択して、プロジェクトでクリーン アクションを実行します。
  4. シミュレーターをリセットします。
  5. Xcode を終了します。
  6. プロジェクトが正常に動作する場合は、今すぐプロジェクトを実行してみてください。それ以外の場合は、手順 7 に進みます。
  7. 1 から 5 までのすべての手順を繰り返してから、マシンを再起動します。

ほとんどの場合、ステップ 6 で実行しました。極端な場合、マシンを再起動する必要がありました。

于 2014-02-21T11:53:56.947 に答える
0

コマンド ラインから( を使用してxcodebuild test) テストを実行している場合は、実行中のシミュレータが、テストを実行する予定のデバイスと一致していることを確認してください。

iPhone 5 を使用するコマンド ライン テストを実行している可能性があります。XCode 広告で iPhone 6 を実行している場合は、コマンド ライン テストを実行すると、iPhone 6 が実行されたままになり、手動で iPhone 5 デバイスを選択して実行する必要があります。再びテスト。

于 2015-02-21T15:14:32.937 に答える
0

このエラーは、古いバージョンの iOS シミュレーターで発生していました。これは、シャットダウンされた別のデバイスのジョブの古いインスタンスが新しいインスタンスと衝突する可能性があるためです。

iOS 6.0 ではブートストラップ サブセットの使用が導入され、iOS 7.0 ではホストのブートストラップ サーバーから完全に分離された専用のブートストラップ サーバー (launchd_sim) の使用が導入されたため、iOS 6.0 以降ではこのような問題は発生しません。

于 2014-12-29T02:35:42.047 に答える
0

ああ、私は上記および他の投稿にリストされているすべてを試しました。Xcodeを再インストールし、マシンを再起動し、不足しているすべてのファイルを適切なフォルダーにコピーしました...最終的にiPhoneをバックアップし、消去して復元したところ、機能しました!

これを読んだことの原因は、リークをキャッチするパフォーマンスツールで実行されていたiPhoneの白を切断したことだったと思います。またはそのようなこと。

ああ、ほっと一息。

于 2011-02-09T18:22:17.650 に答える
0

最も最悪の状態では、iOSシミュレーターのコンテンツと設定をリセットし、ほとんどの場合、シミュレーターと一緒にXCodeを終了すると、XCode4.6で常に機能します(頻繁にハングアップします)

于 2013-02-22T14:55:23.380 に答える