符号化iOS崩溃转储:未找到符号

时间:2015-03-17 16:01:27

标签: ios xamarin.ios xamarin

我正在尝试使用Xamarin.iOS为iOS应用程序buit表示崩溃转储。我看到很多关于无法找到系统二进制图像符号的警告,例如基金会,而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是否与崩溃转储中的UUID相同。

我正在使用Xamarin studio 5.7.1和xcode 6.1.1。

有人能说出这里出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

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

这当然是一项繁琐的工作。我永远无法找到如何从索引中删除它,或者知道队列已经完成了什么,并且对其UUID的二进制文件进行了索引。

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

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

  1. 它不需要任何索引。
  2. 您可以指定iOS符号所在的目录。
  3. 速度提高了10倍。
  4. 如果您为其他操作系统编译了otool,它可以在除Mac之外的其他平台上运行。
  5. TestFairy将其用于生产,并在iOS更改崩溃报告时进行更新。

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

    希望这会有所帮助;)