Обратный след дисплея 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 вручную, но это не работает!

В свойствах проекта у меня есть следующие настройки, которые должны копировать все динамические символы при сборке, поэтому я до сих пор не могу понять, почему это не работает!

Варианты сборкиВарианты развертывания

Что я могу сделать, чтобы эта функция была также в выпущенном приложении? Что я делаю неправильно? Заранее спасибо!

0 ответов

Другие вопросы по тегам