Как узнать полный стек ошибки?Objective-C: Можно ли увидеть полный путь ошибки?
Я хочу знать, если возможно, увидеть полный набор функций, которые были вызваны.
У меня есть иерархия функций, которые имеют иерархию «общий» -> «очень специализированный».
Предположим, что у меня 5-уровневая иерархия.
Каждая функция имеет завершающие ошибки-блок, который определяется следующим образом:
typedef (^ErrorBlock)(NSError*error)
FunctionWithManyParams:(Param1Type*)param1.... onError:(ErrorBlock)ErrorBlock;
И каждая функция в иерархии имеют ту же часть кода:
onError(NSError*error){
ErrorBlock(error);
}
Так что, если я назвал функцию от высокий уровень (предположим n), он будет вызывать функцию от (n-1) уровень и т. Д.
И если функция от 1-уровневая имеет ошибку, она будет обращена к очень высокоуровневой функции (очень специализированной), которая ее вызывает.
Возможно ли узнать полный путь этого звонка? (или какая-то техника для него)?
Я хочу, чтобы иметь полный след функции вызовов, поэтому, мне нужно что-то добавил, как это:
onError(NSError*error){
NSString*errorDescription = [self getNameOfFunction];
NSMutableDictionary * errorDictionary = [NSMutableDictionary dictionary];
NSString*previousErrorDescription = [error description];
[errorDictionary setValue:[NSString stringWithFormat:@"%@ >> %@",previousErrorDescription,errorDescription ] forKey:NSLocalizedDescriptionKey];
NSError * errorNew = [NSError errorWithDomain:vkDomain
code:errorCode
userInfo:errorDictionary
];
ErrorBlock(errorNew);
}
Это круто! Я не знал, что был простой вызов Objective-C, до сих пор я играл с вызовами backtrace() 'C, когда я хотел видеть стек вызовов ... – Guillaume
Могу ли я узнать полное имя функции в нем тело как-то? например '[self nameOfCurrentFunction]' – gaussblurinc
@loldop, возможно, вам стоит попробовать 'NSStringFromSelector (_cmd)', если вы хотите имя метода для контекста. – ZhangChn