web-dev-qa-db-ja.com

他の起動ごとにクラッシュするiOSアプリ、エラーが見つかりません

アプリを初めて起動すると、すべてが正常に実行されるようです。停止ボタンを押していくつかの作業を行い、再び起動するときに何かをロードする前にクラッシュするようです。停止ボタンを押して、もう一度「実行」をクリックすると、正常に機能します。プロセスを繰り返すまで。

これは、xcodeが「Thread 1:signal 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) 

これまでに私がやったことは次のとおりです。

  • 「クリーン」を実行しました
  • シミュレーターとコンピューターをリセットしました
  • View Controllerのすべてのコードをコメントアウトしましたが、まだクラッシュします
  • アプリデリゲートのすべてのコードをコメントアウトしましたが、まだクラッシュします
  • しかし.... Xcode以外のデバイスでアプリを実行しましたが、完全に正常に動作するようです。
  • (編集)xcode、およびすべてのコンテンツ(シミュレーター、ドキュメント)をさまざまなキャッシュフォルダーから削除/再インストールしました(これにより、xcodeは新しいダウンロード後に古いものを自動的に再インストールしなくなります)。それでも、コマンドラインツールがどこに保存されているかはわかりません。それでもクラッシュします。

これにもかかわらず、アプリは毎秒/その他の起動ごとにクラッシュします。

最新のXcode更新まで問題はなかったということです。 Xcodeのバグでしょうか?

(編集)OSXの最新の開発者リリースも実行しています。それが干渉している可能性がありますか?

81
Beau Nouvelle

OS X 10.8.4とLLDBの組み合わせ のようです。ケンスターが言うように、GDBに切り替えると問題はなくなります。

編集:
これは、デバッグサーバーの競合状態が原因です(聞いている)。

LLDBを使い続ける場合の修正方法は次のとおりです。アプリがシミュレータで既に実行されているときに[実行]をクリックする代わりに、Xcodeでそれを強制終了し(kill-。) R)。クラッシュすることはありません。テストしました。


修正済みin Xcode 4.6.3。

75
nevan king

私もこの問題を抱えていました。この投稿をご覧ください。 Xcode 4.6.2アプリは2回実行するたびにクラッシュします

基本的に、デバッガーをLLDBからGDBに変更します。これはLLDBがバグだからだとは信じられません。

11
kenster

GDBに切り替えるか、デバイス/ホストを再起動しても、私の環境の問題は解決しません。

ただし、関連するXCodeスキームのRunターゲットを変更して、自動的に起動するのではなく、代わりに"HelloWorld。appを起動する")しました。

唯一の欠点は、デバイスでアプリケーションを手動で起動することを意味することです。その後、デバッガーが接続されます。

2
Mekugi