4

iPhone でクラッシュするアプリがありますが、それは Xcode 経由で起動したときだけです。

iPhone のコンソール ログを見ると、アプリがメモリ警告を受け取り、次のような奇妙なイベントが発生していることがわかります。

Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Notice>: (UIKitApplication:com.mycom.myapp[0x3f60]) Bug: launchd_core_logic.c:3270 (24132):0
Sun Jul 11 00:03:43 Matts-iPhone com.apple.debugserver-48[5590] <Warning>: 1 [15d6/1403]: error: ::read ( 6, 0x3809f4, 1024 ) => -1 err = Bad file descriptor (0x00000009)
Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Notice>: (UIKitApplication:com.mycom.myapp[0x3f60]) Bug: launchd_core_logic.c:2688 (24132):10
Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Notice>: (UIKitApplication:com.mycom.myapp[0x3f60]) Working around 5020256. Assuming the job crashed.
Sun Jul 11 00:03:43 Matts-iPhone com.apple.launchd[1] (UIKitApplication:com.mycom.myapp[0x3f60][5591]) <Warning>: (UIKitApplication:com.mycom.myapp[0x3f60]) Job appears to have crashed: Segmentation fault
Sun Jul 11 00:03:43 Matts-iPhone SpringBoard[40] <Warning>: Application 'Phone' exited abnormally with signal 9: Killed
Sun Jul 11 00:03:45 Matts-iPhone SpringBoard[40] <Warning>: Application 'myapp' exited abnormally with signal 11: Segmentation fault

ただし、電話から (Xcode 経由ではなく) アプリを起動すると、期待どおりに動作します。(起動時にメモリ警告が表示されます。タイトに実行されていることはわかっていますが、回復してクラッシュしません)。

これにより、他の問題のデバッグが特に困難になっています。

iOS のバグに出くわしたことがありますか?

何か案は?

4

4 に答える 4

7

私の場合、「NSZombiesEnabled」環境変数が設定されていることを忘れていたことが判明しました。これは、Xcode から起動したときに実際のメモリ使用量を増やしていました (クラッシュの原因)。Springboard から直接起動すると、その環境変数が設定されず、アプリが使用するメモリが大幅に減少しました。

デバッグに非常に便利です...メモリが足りなくなり、そこにあることを忘れるまで:)

于 2010-09-06T10:40:25.823 に答える
2

これは私に起こったことであり、NSZombiesEnabled が設定されていることも原因でした。私の場合、存在を忘れていた ~/.gdbinit ファイルに設定されていました。Xcode では NSZombieEnabled チェックボックスがオフになっていて、スキームの環境変数に何も設定されていなかったため、問題を解明しようとして夢中になりました。この話の教訓は、XCode だけでなく .gdbinit にも設定されていないことを確認することです。

于 2011-11-04T00:50:10.907 に答える
2

私もこの問題を抱えていましたが、Cydia から Resupported 4 をインストールしたことが原因でした。削除した後、アプリは完全に起動しました。

于 2012-07-16T03:25:41.860 に答える
0

通常、シミュレーターでクラッシュが発生しているがデバイスでクラッシュが発生していない場合、またはその逆の場合は、あるハードウェア用にコンパイルされているが別のハードウェア用にコンパイルされていないライブラリに問題があることを示しています。

ただし、メモリが不足している場合は、Intel 用にコンパイルされたコードと ARM 用にコンパイルされたコードの微妙な違いによってクラッシュが発生する可能性があります。Intel コードは、何らかの理由で機密性が高い可能性があります。メモリが不足している状態でデバイスを長時間実行したままにしておくと、最終的にデバイスで同じ問題が発生します。

于 2010-07-10T14:32:34.680 に答える