ios - 符号化 iOS 崩溃地址会返回不适当的结果

标签 ios objective-c symbolicatecrash symbolicate

我最近花了几天时间来学习如何用自定义解决方案来表示崩溃的行号。

我发现我需要 .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)

我仍在了解这个过程,但我相信(在 MyTestApp 中) 应该是我的测试应用程序中可读的内容。

我用来崩溃应用程序并测试如何符号化堆栈跟踪的代码如下。

113 - (IBAction)logUnhandledException:(UIButton *)sender
114    {
115    void (*nullFunction)() = NULL;
116    nullFunction();
117    }

编辑: 我有 "image_size": "0xa8000""image_base_address": "0x100008000"

我不应该获得一些有关此方法和行号的信息(如果可行)吗?

感谢任何帮助和评论。

谢谢。

最佳答案

当您想在 -l 标志之后表示使用加载地址(第二个地址,最好始终使用框架/库的图像基地址,但根据我的经验,这从未改变)时,然后该框架的所有符号地址、您想要符号化的框架的体系结构和相应的 iOS 版本,或者如果它是您的应用程序的行,则使用 dSYM 文件,例如iOS 8.1.1 的 UIKit 符号

xcrun atos -arch arm64 -o ~/Library/Developer/Xcode/iOS DeviceSupport/8.1.1 (12B436)/Symbols/System/Library/Frameworks/UIKit.framework/UIKit -l <load_address> <symbols_addressess> ...

适合您自己的应用系列

xcrun atos -arch arm64 -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp -l <load_address> <symbols_addressess> ...

您会得到所有适当的结果。

关于ios - 符号化 iOS 崩溃地址会返回不适当的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691579/

相关文章:

ios - 使用 Core Graphics 时为 "Potential leak of an object"

iphone - Autolayout 使 ScrollView 中的 ImageView 不可滚动

iphone - bool _WebTryThreadLock(bool) 与 UITableView 崩溃

xcode7 - 如何用 Xcode 7 符号化崩溃日志?

iOS 应用具有神秘的 UUID,没有匹配的 dSYM,因此无法符号化

ios - Swift - 从一年中的某一天获取日期

ios - 在 UIView 上创建一个 mask ,将所有 UIImageView subview 着色为黑白

iOS - 无法使用 Twitter/Fabric New SDK 上传媒体

iOS 崩溃,无法符号化

ios - 如何在 Swift 中的 TableView Controller 中将不同的图像放在文本旁边?