2012-09-05 44 views
5

Tôi gặp sự cố lạ chỉ xảy ra trên các bản phân phối quảng cáo của TestFlight. Tôi biết nguyên nhân gây ra sự cố (một vòng lặp đơn giản, xem bên dưới), nhưng tôi không hiểu tại sao nó không bị lỗi trên trình mô phỏng của tôi cũng như iPhone hoặc iPad (với hồ sơ phát triển).SIGSEGV Sự cố trên thiết bị thử nghiệm iOS

Tôi liên tục phân phối các bản dựng adhoc để theo dõi sự cố, nhưng cuối cùng tôi đã từ bỏ. Làm thế nào tôi có thể theo dõi lỗi này hiệu quả hơn?

Dưới đây là báo cáo tai nạn 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 

Và đây là mã được kích hoạt nó (nhưng đó là tốt trên mô phỏng/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; 
     } 
    } 

tôi đã có một cái nhìn lúc này , nhưng không hiệu quả: ad hoc iphone sigsegv crash

Một số ngữ cảnh khác, như @ott đã đề cập rằng NSNotFound có thể gây ra điều này:

-(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

Có thể là 'rangeCutOffPosition' trở thành một cái gì đó như' NotFound'? Các thiết bị thường là cầu kỳ hơn, nơi giả lập chỉ bỏ qua nó. Bạn có thể chèn một số NSLog() 's để xem những gì đang xảy ra, hoặc bước qua nó. –

+0

@ott Tôi luôn luôn init NSRange rangeCutOffPosition = NSMakeRange (0, 0); vì vậy nó không thể là NSNotFound. Tuy nhiên, tôi có một số phương pháp trước khi điều này để kiểm tra một số phạm vi khác và điều này có thể trở lại NSNotFound. Nhưng làm thế nào điều này có thể là một vấn đề? –

+0

@ott Tôi đã cung cấp thêm một số ngữ cảnh mã ở trên. Cảm ơn bạn đã giúp đỡ! –

Trả lời

0

Lần sửa lỗi mới nhất sdk 1.2.4 của họ!

Các vấn đề liên quan