Como obter o número da linha, o nome do método e o nome da classe quando ocorre uma falha usando o Objetivo C
Estou desenvolvendo um aplicativo no qual tenho que rastrear falhas. Há uma restrição de que não posso usar nenhuma fonte de terceiros, como a estrutura Fabric do Twitter, para lidar com o log de falhas.
Atualmente, eu só consigo entender o motivo do acidente. Não consigo obter o ponto exato do acidente.
O que estou fazendo:
No delegado do meu aplicativodidFinishLaunchingWithOptions
método que eu tinha feito meu próprio manipulador de exceção:
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
uncaughtExceptionHandler ----
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"CRASH: %@", exception);
NSLog(@"callStackSymbols: %@", [exception callStackSymbols]);
NSLog(@"callStackReturnAddresses: %@", [exception callStackReturnAddresses]);
NSLog(@"reason: %@", [exception reason]);
NSLog(@"name: %@", [exception name]);
NSLog(@"%s %d %s %s", __FILE__, __LINE__, __PRETTY_FUNCTION__, __FUNCTION__);
// Internal error reporting
}
Eu bati meu aplicativo emviewDidLoad
método usando este:
NSArray *myary;
myary = [NSArray arrayWithObjects:@"sad", nil];
NSString *str = [myary objectAtIndex:22];
Aqui está o meu rastreamento de pilha.
Existe alguma maneira de conseguir o que eu quero?
Tentei seguir essas soluções da SO, mas elas não me deram nenhuma pista: