我最近花了几天时间来学习如何用自定义解决方案来表示我收到的崩溃的行号。
我已经确定我需要 .app 和 .dSYM 文件,我检查了 UUID,它与我遇到的崩溃相同,我还需要验证 UUID。
三个相同的 UUID 和架构是 arm64,我从我的 iPhone5S 上测试它的崩溃。
好的,假设我的堆栈跟踪中有两个与我的应用程序行相关。这是我得到的 JSON 的完整堆栈跟踪。
"0 MyTestApp 0x10000efe8 0x100008000 + 28648",
"1 UIKit 0x1863d90c8 0x186390000 + 299208",
"2 UIKit 0x1863d905c 0x186390000 + 299100",
"3 UIKit 0x1863c2538 0x186390000 + 206136",
"4 UIKit 0x1863d8a5c 0x186390000 + 297564",
"5 UIKit 0x1863d86f0 0x186390000 + 296688",
"6 UIKit 0x1863d3388 0x186390000 + 275336",
"7 UIKit 0x1863a4b68 0x186390000 + 84840",
"8 UIKit 0x1863a2c58 0x186390000 + 76888",
"9 CoreFoundation 0x18339b044 0x1832d0000 + 831556",
"10 CoreFoundation 0x18339a3a0 0x1832d0000 + 828320",
"11 CoreFoundation 0x183398638 0x1832d0000 + 820792",
"12 CoreFoundation 0x1832d96d0 0x1832d0000 + 38608",
"13 GraphicsServices 0x188fbdc0c 0x188fb0000 + 56332",
"14 UIKit 0x18640afdc 0x186390000 + 503772",
"15 MyTestApp 0x10000e4f0 0x100008000 + 25840",
"16 libdyld.dylib 0x18fed3aa0 0x18fed0000 + 15008"
好的,现在我在包含 .app 和 .dSYM 文件的文件夹中运行 atos 命令来尝试查找和符号化内存地址。
xcrun atos -arch arm64 -o 'MyTestApp.app'/'MyTestApp' 0x10000efe8
但是这条线并没有完全返回我可以使用的东西。
-[AFHTTPRequestSerializer multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:] (in MyTestApp) (AFURLRequestSerialization.m:317)
我仍在学习这个过程,但我相信(in MyTestApp)
应该从我的测试应用程序中读取一些东西。
我用来使应用程序崩溃并测试如何符号化堆栈跟踪的代码如下。
113 - (IBAction)logUnhandledException:(UIButton *)sender
114 {
115 void (*nullFunction)() = NULL;
116 nullFunction();
117 }
编辑:
我有"image_size": "0xa8000"
和"image_base_address": "0x100008000"
。
我不应该得到一些关于这个方法和行号的信息(如果可行的话)吗?
任何帮助和评论表示赞赏。
谢谢你。