Обратный след дисплея iOS с именами методов также в выпущенном продукте
Я хотел, чтобы при каждом сбое приложения отображались имена классов и методов. Мне удалось сделать это в режиме отладки, используя этот код (printTrace
Функция просто печатает строку в файле.):
void HandleException(NSException *exception)
{
[SILogManager printTrace:[NSString stringWithFormat:@"******************** CRASH *********************"]];
[SILogManager printTrace:[NSString stringWithFormat:@"-> Stack Trace: %@", [exception callStackSymbols]]];
}
Хотя это не сработает, когда приложение будет выпущено, потому что оно создаст стековую трассировку, подобную этой:
******************** CRASH *********************
-> Stack Trace: (
0 CoreFoundation 0x27b5f60f <redacted> + 150
1 libobjc.A.dylib 0x35613c77 objc_exception_throw + 38
2 CoreFoundation 0x27a733a7 <redacted> + 178
3 iSelz POS 0x000bf6c7 iSelz POS + 403143
4 iSelz POS 0x000bf099 iSelz POS + 401561
5 iSelz POS 0x000dda31 iSelz POS + 526897
6 CFNetwork 0x276b7eed <redacted> + 56
7 CFNetwork 0x276b7ea7 <redacted> + 182
8 CFNetwork 0x276b7f99 <redacted> + 36
9 CFNetwork 0x275cceef <redacted> + 78
10 CFNetwork 0x2766976d <redacted> + 60
11 CFNetwork 0x275bdd71 <redacted> + 60
12 CoreFoundation 0x27a705a1 CFArrayApplyFunction + 36
13 CFNetwork 0x275bdc2b <redacted> + 182
14 CFNetwork 0x275bdaf1 <redacted> + 216
15 CFNetwork 0x275bd98d <redacted> + 48
16 CoreFoundation 0x27b25fd7 <redacted> + 14
17 CoreFoundation 0x27b253eb <redacted> + 222
18 CoreFoundation 0x27b23a69 <redacted> + 768
19 CoreFoundation 0x27a70b31 CFRunLoopRunSpecific + 476
20 CoreFoundation 0x27a70943 CFRunLoopRunInMode + 106
21 GraphicsServices 0x2edf8051 GSEventRunModal + 136
22 UIKit 0x2b0666f1 UIApplicationMain + 1440
23 iSelz POS 0x00066aab iSelz POS + 39595
24 libdyld.dylib 0x35bafaaf <redacted> + 2
)
И я не нахожу это очень полезным. Я также уже пытался позвонить backtrace
а также backtrace_symbols
вручную, но это не работает!
В свойствах проекта у меня есть следующие настройки, которые должны копировать все динамические символы при сборке, поэтому я до сих пор не могу понять, почему это не работает!
Что я могу сделать, чтобы эта функция была также в выпущенном приложении? Что я делаю неправильно? Заранее спасибо!