2012-09-05 7 views
5

Ich habe einen seltsamen Absturz, der nur bei TestFlight Ad-hoc-Distributionen passiert. Ich weiß, was den Absturz verursacht hat (eine einfache While-Schleife, siehe unten), aber ich verstehe nicht, warum es nicht auf meinem Simulator, iPhone oder iPad (mit einem Entwicklungsprofil) abstürzt.SIGSEGV Absturz auf iOS TestFlight Gerät

Ich verteile ständig Ad-hoc-Builds, um den Absturz zu verfolgen, aber ich habe endlich aufgegeben. Wie kann ich diesen Fehler effizienter verfolgen?

Hier ist der Testflug Absturzbericht:

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 

Und hier ist der Code, der es auslöst (die aber an Simulator/iphone in Ordnung ist):

 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; 
     } 
    } 

ich dies hatte einen Blick , aber es hat nicht geholfen: ad hoc iphone sigsegv crash

Etwas mehr Zusammenhang, als @ott erwähnt, dass NSNotFound dies verursachen kann:

-(NSRange)determineFirstCutOffRangeOfString:(NSString *)s { 

    NSRange rangeSpace = [s rangeOfString:@" " options:NSCaseInsensitiveSearch]; 
    NSRange rangeReturn = [s rangeOfString:@"\n" options:NSCaseInsensitiveSearch]; 
    if (rangeSpace.location == NSNotFound && rangeReturn.location == NSNotFound) { 
     rangeSpace = NSMakeRange(1, 0); // don't take 0,0 as this will lead to endless loop 
     rangeReturn = NSMakeRange(1, 0); 
     NSLog(@"NEITHER SPACE NOR RETURN FOUND"); 
    } 

    NSRange rangeCutOffPosition = NSMakeRange(0, 0); 
    if (rangeSpace.location < rangeReturn.location) { 
     // i.e. if the space char is the lowest char where you can cut off 
     rangeCutOffPosition = NSMakeRange(rangeSpace.location+1,0); // +1, i.e. always cut off AFTER the space 
    } else { 
     // i.e. if the return char is the lowest char where you can cut off 
     rangeCutOffPosition = NSMakeRange(rangeReturn.location+1,0); // +1, i.e. always cut off AFTER the return 
    } 

    return rangeCutOffPosition; 
} 
+1

Könnte es sein, dass 'rangeCutOffPosition' zu etwas wie' NotFound' wird? Das Gerät ist normalerweise wählerischer, wenn der Simulator es ignoriert. Kannst du ein paar NSLog() 's einfügen, um zu sehen, was passiert, oder durchgehe es? –

+0

@ott Ich initiiere immer NSRange rangeCutOffPosition = NSMakeRange (0, 0); Es kann also nicht NSNotFound sein. Allerdings habe ich einige Methoden, um einige andere Bereiche zu überprüfen, und dies kann NSNotFound zurückgeben. Aber wie kann das ein Problem sein? –

+0

@ott Ich habe oben einige Code-Kontext bereitgestellt. Danke für Ihre Hilfe! –

Antwort

0

Ihre neueste sdk 1.2.4 behebt dieses Problem!