Objective-C/아이폰 NSException 많은 정보를 파악하기 위한 가능
-
14-11-2019 - |
문제
나는 다음 코드를 사용하면 캡처하는 예외에서 내 응용 프로그램:
void uncaughtExceptionHandler(NSException *exception) {
[FlurryAPI logError:@"Uncaught" message:@"Crash!" exception:exception];
}
그 궁금지할 수 있는 pin-포인트,줄 번호 UIView
, 클래스 등는 오류가 발생한다.이상적으로 나가고 싶으로 많은 자세한 정보를 얻을 수 있기 때문에 의해 캡처 FlurryAPI
분석.
FlurryAPI:http://www.flurry.com/
해결책
저는 마침내 이:
void uncaughtExceptionHandler(NSException *exception) {
NSArray *backtrace = [exception callStackSymbols];
NSString *platform = [[UIDevice currentDevice] platform];
NSString *version = [[UIDevice currentDevice] systemVersion];
NSString *message = [NSString stringWithFormat:@"Device: %@. OS: %@. Backtrace:\n%@",
platform,
version,
backtrace];
[FlurryAPI logError:@"Uncaught" message:message exception:exception];
}
UPDATE(에 따라@TommyG 의 코멘트는 아래):
추가 NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
의 끝에- -(BOOL)application:didFinishLaunchingWithOptions:
방법 AppDelegate
.다음에 추가 위의 방법 AppDelegate
뿐만 아니라.
다른 팁
할 수 있게 활용하리컴파일러와 쓰기 매크로가 수집하는 모든 값을,예를 들어:
#define __ThrowException(name, reason, class, function, file, line, info) [NSException exceptionWithName:name reason:[NSString stringWithFormat:@"%s:%i (%@:%s) %@", file, line, class, function, reason] userInfo:info];
#define ThrowException(name, reason, info) __ThrowException(name, reason, [self class], _cmd, __FILE__, __LINE__, info)
그러나 이 때 당신이 던지는 제외하고 내부에서는 ObjC 기능(각자 및 _cmd
는 첫 번째 매개 변수를 얻 ObjC 기능,자기는 id 는 포인트 클래스고 _cmd
을 선택할 수 있는(현재!) typecasted const char).
그러나,당신이 원하는 경우에만 이 기초를 위한 예외를 제외하고,당신은 두 가지 옵션을 사용할 수 있습니다.
- 랩을 수 있습니다 모든 던지는 예외에서@도()@catch()블록은 다음을 던져 새로운 사용자 지정,예외
- 을 얻을 스택 추적이,이것은 무엇을 조금있을 수 있습니다 더 열심히 응용 프로그램에 가능한 일관성이 없는 상태에 있고 수집할 수 없습니다 모든 값입니다.모 현재 스택 추적이 덮 기 훌륭한 세부 사항입니다.
제휴하지 않습니다 StackOverflow