1. ホーム
  2. ios

[解決済み] iOSアプリが起動のたびにクラッシュし、エラーを見つけることができません。

2023-07-11 05:47:44

質問

最初にアプリを起動したときは、すべて正常に動作しているように見えます。停止ボタンを押して、いくつかの作業を行い、再び起動しようとすると、何も読み込むことができないうちにクラッシュしているようです。 停止ボタンを押し、もう一度実行ボタンを押すと、正常に動作します。このプロセスを繰り返すまでは。

これは、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) 

ここまでは、こんな感じです。

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

これらすべてにもかかわらず、アプリはまだ 2 回目/その他の起動ごとにクラッシュします。

最近の Xcode の更新までは、何の問題もありませんでした。 これは Xcode のバグなのでしょうか?

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

どのように解決するのですか。

のようです。 OS X 10.8.4 と LLDB の組み合わせのようです。 . kensterが言うように、GDBに切り替えると問題が解消されます。

編集してください。

デバッグサーバーのレースコンディションが原因だそうです(笑)。

LLDBを使い続けたい場合は、シミュレータでアプリを実行中にRunをクリックする代わりに、Xcodeでアプリを終了させ(⌘-.)、「I love Xcode"」と5回言ってから再度Runしてください(⌘-R)。クラッシュしません、テストしました。


固定 Xcode 4.6.3。