Cómo obtener el número de línea, el nombre del método y el nombre de la clase cuando se produce un bloqueo utilizando el Objetivo C

Estoy desarrollando una aplicación en la que tengo que rastrear bloqueos. Existe una restricción de que no puedo usar ninguna fuente de terceros como el framework Fabric de Twitter para manejar el registro de fallas.

Actualmente solo puedo obtener el motivo del bloqueo. No puedo obtener el punto exacto de bloqueo.

Qué estoy haciendo:

En mi aplicación delegadodidFinishLaunchingWithOptions Método que había hecho mi propio controlador de excepciones:

    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
}

Choqué mi aplicación enviewDidLoad método usando esto:

   NSArray *myary;

   myary = [NSArray arrayWithObjects:@"sad", nil];

   NSString *str =  [myary objectAtIndex:22];

Aquí está mi rastro de pila.

¿Hay alguna forma de lograr lo que quiero?

Intenté seguir estas soluciones de SO pero no me dan ninguna pista:

Solución 1

Solución 2

Respuestas a la pregunta(0)

Su respuesta a la pregunta