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:

Solução 1

Solução 2

questionAnswers(0)

yourAnswerToTheQuestion