2012-02-24 18 views
0

クラッシュログは、ライン上を向いている:滑らかなコードが、SIGABRT

NSArray *results = [self.managedObjectContext executeFetchRequest:request &error]; 
    if ([results count] > 0) { // SIGABRT on this line. 

と(同じデバイス用):

このmyobjそのポインタで
if (myfunc(myobj)) { // SIGABRT on this line. 

アプリの設定からnilでなければならず、クラッシュの行の直前の行で初期化されます。 myfunc関数は次のように見ている機能である:

BOOL myfunc(id object) { 
    return object != nil; 
} 

myobj = something 
if (myobj != nil) { // SIGABRT on this line. 

私の知識は、このようなクラッシュの可能性を理解するだけでは十分ではないように私は2番目のクラッシュを検討する(おそらく、彼らもランダムです)特定のデバイスで(ほとんどのデバイス上ですべて正常に動作します)。

誰かがこのような問題を抱えていたか、デバッグ経験がありましたか?

+0

すべてのことを正しく行うと、クラッシュは「ランダム」になることはありません。通常、SIGABRT例外に付随する太字のテキストがあります。それが最も役に立つでしょう。 – CodaFi

答えて

0

ポインタ比較がどのようにクラッシュする可能性はありません。また、myfuncが関数ポインタでない場合、if (myfunc(myobj))はクラッシュできません。

Objective-Cコードにも問題はありません。

デバッガの出力を正しく解釈してもよろしいですか?デバッグシンボルは正しいですか?最適化を無効にしてみてください。

多分あなたは間違ったスタックを見ているでしょう:すべてのスレッドのスタックをチェックしてください。

SIGABRTは、何か問題があることをプロセスに伝えるために送信される信号です。おそらく、メモリが使い果たされているため、あなたのアプリを殺しているのはiOSだけだろう。または、プロセスはアサーションに失敗したためにabort()をヒットします。

+0

ポインタを押したときにクラッシュする原因は1つあります。オブジェクトをリリースしてポインタをnilに設定しなかったときです。 – SVGreg

+0

@SVGregあなたが**卑劣なポインタ**を参照していない場合、アプリ*がクラッシュする可能性があります。投稿コードでは発生しませんが、 '[結果数]'はぶら下がっていないようです。 –

+0

お元気ですか、お時間を頂戴して申し訳ありません、私には尋ねる前に報告書の内容を確認しないで馬鹿でした。あなたのお時間をありがとう、私はあなたの声明、ニコライに完全に同意しているので、それを受け入れる必要があります。レポートuuidは、それが象徴されているアプリと同じではない、尖ったコードが動作するはずです(私は夢中ではありません、ハイヤー!) –

関連する問題