【问题标题】:Symbolicating iOS crash dump: symbols not found符号化 iOS 故障转储:未找到符号
【发布时间】:2015-03-17 16:01:26
【问题描述】:

我正在尝试为使用 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 是否与故障转储中的 UUID 相同。

我在 xcode 6.1.1 上使用 Xamarin studio 5.7.1。

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

【问题讨论】:

  • 尝试启动管理器并单击设备,然后将崩溃日志放在那里它将被符号化。有关步骤,请参见此处duraiamuthan.blogspot.in/2015/03/… 让我知道这是否适合您
  • 我遇到了完全相同的问题。你有没有以任何方式解决这个问题?最初在 Xamarin 论坛上发现您的帖子也没有任何答案。

标签: ios xamarin.ios xamarin


【解决方案1】:

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

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

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

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

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

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

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

希望这会有所帮助;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2012-08-31
    • 2012-04-26
    • 2021-12-17
    • 2021-07-18
    • 2014-08-31
    相关资源
    最近更新 更多