iOS - 符号化堆栈跟踪符号

Man*_*dan 5 iphone stack-trace symbolicate ios

我想对使用 [NSThread callStackSymbols] 记录的堆栈跟踪符号进行符号化,以识别完整的堆栈回溯调用。但是,这并没有给出符号化的痕迹。

0   TestApp                               0x0029616f TestApp + 1823087
    1   TestApp                               0x003ef18d TestApp + 3236237
    2   UIKit                               0x2ab7bb1f <redacted> + 438
    3   UIKit                               0x2ac0bea3 <redacted> + 306
    4   UIKit                               0x2ab7bb1f <redacted> + 438
    5   CoreFoundation                      0x2757546d <redacted> + 48
    6   CoreFoundation                      0x2756e4c3 <redacted> + 234
    7   UIKit                               0x2ab7bc9b <redacted> + 818
    8   UIKit                               0x2ae32799 <redacted> + 584
    9   UIKit                               0x2abdfbd9 <redacted> + 308
    10  UIKit                               0x2ab5bdd7 <redacted> + 458
    11  CoreFoundation                      0x2760fffd <redacted> + 20
    12  CoreFoundation                      0x2760d6bb <redacted> + 278
    13  CoreFoundation                      0x2760dac3 <redacted> + 914
    14  CoreFoundation                      0x2755b3b1 CFRunLoopRunSpecific + 476
    15  CoreFoundation                      0x2755b1c3 CFRunLoopRunInMode + 106
    16  GraphicsServices                    0x2eb88201 GSEventRunModal + 136
    17  UIKit                               0x2abc543d UIApplicationMain + 1440
    18  TestApp                               0x0031581b TestApp + 2344987
    19  libdyld.dylib                       0x35a6baaf <redacted> + 2 
Run Code Online (Sandbox Code Playgroud)

我在开发和企业构建中尝试过这一点。都没有成功。有什么象征意义吗?我搜索了很多论坛,所有人都要求使用 atos 命令执行此操作,如下所示

atos -arch armv7 -o 'app name.app'/'app name' 0x000000000
Run Code Online (Sandbox Code Playgroud)

但是,我不确定上述命令必须使用的内存地址是什么以及如何获取它。

任何帮助将不胜感激,谢谢。

小智 1

您在这里跳过了一些内容。atos 中的内存地址应引用加载地址和堆栈地址,并且您还需要 dSYM 文件。

实际上,apteligent 上有一篇非常好的文章,名为“符号化 iOS 崩溃报告”,介绍了如何手动执行此操作。我建议仔细阅读它以了解符号的工作原理。