5
私はTestFlightの特別なディストリビューションでのみ発生する異常なクラッシュがあります。私はクラッシュの原因を知っています(単純なwhileループ、下を参照)。しかし、シミュレータやiPhoneやiPad(開発プロファイル付き)でクラッシュしない理由を理解できません。iOSのTestFlightデバイスでSIGSEGVがクラッシュする
私は絶えずアドホックビルドを配布してクラッシュをトレースしていますが、やっと私はあきらめました。このバグをより効率的にどのようにトレースできますか?
はここでTestFlightのクラッシュレポートです:
Exception reason
SIGSEGV
Stacktrace
PRIMARY THREAD THREAD 0
0 Meernotes 0x0019649a testflight_backtrace + 158
1 Meernotes 0x001970c4 TFSignalHandler + 244
2 libsystem_c.dylib 0x32d9d7ec _sigtramp + 48
3 libobjc.A.dylib 0x37d34eac _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 224
4 libobjc.A.dylib 0x37d34eac _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 224
5 libobjc.A.dylib 0x37d34dc8 _objc_autoreleasePoolPop + 12
6 CoreFoundation 0x358e1cfe _CFAutoreleasePoolPop + 18
7 UIKit 0x333d5c92 _wrapRunLoopWithAutoreleasePoolHandler + 42
8 CoreFoundation 0x35965b1a __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
9 CoreFoundation 0x35963d56 __CFRunLoopDoObservers + 258
10 CoreFoundation 0x359640b0 __CFRunLoopRun + 760
11 CoreFoundation 0x358e74a4 CFRunLoopRunSpecific + 300
12 CoreFoundation 0x358e736c CFRunLoopRunInMode + 104
13 GraphicsServices 0x37583438 GSEventRunModal + 136
14 UIKit 0x333f3cd4 UIApplicationMain + 1080
15 Meernotes 0x000850da main (main.m:16)
16 Meernotes 0x0008508f start + 39
そして、ここでそれをトリガーされるコードである(しかし、シミュレータ/ iphoneに細かいです):私はこれを見ていた
while (textStillFits) {
textToBeKeptBeforeCutting = textToBeKept;
textToBeMovedBeforeCutting = textToBeMoved;
rangeCutOffPosition = [settings determineFirstCutOffRangeOfString:textToBeMoved];
textToBeKeptTemp = [textToBeMoved substringToIndex:rangeCutOffPosition.location];
textToBeMovedTemp = [textToBeMoved substringFromIndex:rangeCutOffPosition.location];
textToBeMoved = textToBeMovedTemp;
textToBeKept = [NSString stringWithFormat:@"%@%@", textToBeKept, textToBeKeptTemp];
NSUInteger l = [settings linesOfText:textToBeKept];
if (l > maxLines) {
textStillFits = NO;
textToBeKept = textToBeKeptBeforeCutting;
textToBeMoved = textToBeMovedBeforeCutting;
// brakes here!
}else {
textStillFits = YES;
}
}
しかし、それは助けになりませんでした:
ad hoc iphone sigsegv crash
NSNotFoundがこれを引き起こすかもしれないと述べたように、いくつかの文脈:
「rangeCutOffPosition」が「NotFound」のようになることはありますか?デバイスは通常、シミュレータがそれを無視するだけで、より厄介です。 NSLog()を挿入して、何が起こっているのか、それを確認することができますか? –
@ott私は常にNSRangeを初期化しますrangeCutOffPosition = NSMakeRange(0、0); NSNotFoundにすることはできません。しかし、私はいくつかの他の範囲をチェックする前にいくつかの方法があり、これはNSNotFoundを返すかもしれません。しかし、どうしたら問題になるのでしょうか? –
@ott私は上記のコードコンテキストをいくつか提供しました。ご協力いただきありがとうございます! –