ios - 符号化 iOS 崩溃转储 : symbols not found

标签 ios xamarin.ios xamarin

我正在尝试使用 Xamarin.iOS 为 iOS 应用程序构建故障转储进行符号化。我看到很多关于无法找到系统二进制图像符号的警告,例如 Foundation,而 symbolicate 的输出最终丢失了我需要的大部分信息。

我正在按照描述的过程 here .我已将 MyApp.app、MyApp.app.dSYM 和崩溃日志放入一个目录并运行 symbolicate -o crash.txt "crashreport.crash""MyApp.app"。输出 crash.txt 不包含符号,我在符号化控制台输出中看到很多错误。例如:

Finding Symbols:
.fetching symbol file for Foundation--[undef] 
Searching []...-- NO MATCH
Searching in Spotlight for dsym with UUID of e596bd80bcc83f15aca36a7ef014f457
Running mdfind "com_apple_xcode_dsym_uuids == E596BD80-BCC8-3F15-ACA3-6A7EF014F457"
@dsym_paths = (  )
@exec_names = (  )
Did not find executable for dsym
## Warning: Can't find any unstripped binary that matches version of /System/Library/Frameworks/Foundation.framework/Foundation

完整输出位于 http://pastebin.com/W1KP1iTR

我已使用 dwarfdump 验证 MyApp.pSYM 中的 UUID 是否与故障转储中的相同。

我在 xcode 6.1.1 上使用 Xamarin studio 5.7.1。

谁能指出这里出了什么问题?

最佳答案

Apple 的 symbolicate 工具要求您在查询符号之前将所有可执行文件和 mach-o 二进制文件添加到 Spotlight 数据库。

这当然是一项繁琐的工作。我永远无法找到如何将其从索引中删除,也无法知道队列已完成的内容以及带有 UUID 的二进制文件已编入索引。

插件:我写了这个 symbolicate-pro 工具。

这是我为 TestFairy(公司)编写的程序。它称为 symbolicate-pro,它与 Apple 的 symbolicate 有一些关键区别:

  1. 它不需要任何索引。
  2. 您可以指定 iOS 符号所在的目录。
  3. 速度提高了 10 倍。
  4. 如果您为其他操作系统编译了 otool,它可以在 Mac 以外的其他平台上运行。

TestFairy 将其用于生产,并在 iOS 更改崩溃报告时进行更新。

您可以在 github 上找到它:https://github.com/testfairy/symbolicatecrash-pro

希望这有帮助;)

关于ios - 符号化 iOS 崩溃转储 : symbols not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103941/

相关文章:

iphone - 在 Objective-C 中以编程方式计算 IRR(内部 yield )和 NPV

ios - 与名为 com.apple.commcenter.coretelephony.xpc 的服务的连接已失效

ios - 为什么 UIFont.LineHeight 是只读的?

xamarin.ios - 绑定(bind)到自定义.framework

xamarin - java.lang.NoSuchMethodError : no non-static method "Landroid/app/Fragment;. getContext()

ios - iTunes 连接不显示用户评分和评论

iphone - 创建类似于 iPad 的 'Contacts' 应用程序的地址簿 UI

iPhone MonoTouch - 获取 bundle 版本

xamarin - 升级到 Xamarin Studio 6 后无法加载解决方案

c# - 在同一 View Controller 中添加 Collection View 和 TableView - Xamarin iOS