【问题标题】:Is it possible to symbolicate MonoTouch crash dumps and get line numbers out of them?是否可以象征 MonoTouch 故障转储并从中获取行号?
【发布时间】:2011-09-27 13:19:52
【问题描述】:

是否可以符号化 MonoTouch 故障转储并从中获取行号?如果是这样,它是如何完成的?

我已经通过以下方式配置了我的项目:

  • 在发布模式下构建
  • 在项目选项 -> 构建 -> iPhone 构建 -> 常规选项卡中选中“启用调试”
  • 在项目选项 -> 构建 -> 编译器中选中“发出调试信息”

现在,当我对转储运行 symbolicatecrash 时,我会在堆栈跟踪中获得我的方法名称,但只有一个偏移量(例如“+ 268”)而不是行号。

我使用的是 MonoTouch 4.21。

【问题讨论】:

标签: xcode crash xamarin.ios crash-dumps symbolicate


【解决方案1】:

简短回答:认为问题在于提前 (AOT) 编译器 - 但您最好将此类问题通过电子邮件发送至 mono-devel mailing-list 以获取一个明确的答案。

长答案:

Mono 编译器/运行时(该行为由 MonoTouch 继承)在 mdb 文件中保存其程序集的调试信息,包括行号。

XCode 适用于 DWARF (DSYM) 文件。当 XCode 符号化故障转储时,它(仅)查看(AOT 生成的)DWARF 符号以获取其信息 - 即不查找 mdb 文件。

现在 Mono debugger(和运行时)也可以处理 DWARF(这应该符合要求)。但是对于 MonoTouch,我不确定 AOT 编译器(调用 gcc)是否生成包含 C# 行号的 final DWARF 符号 - 导致 symbols em> 和 offsets(两者都可用于 gcc)仅可用。

【讨论】:

  • 所以你说这是不可能的?为什么它对 Geoff 有效? stackoverflow.com/questions/5398986/…
  • 您还可以在 Xcode 或 iPhone 配置实用程序中检查 iPhone 控制台以获取托管堆栈跟踪。 查看托管堆栈跟踪(易于本地崩溃),而是您是否可以从崩溃转储中获取它们(就像您从第三方获取一样)。
【解决方案2】:

您使用的是哪个版本的 xcode?​​p>

早期版本中存在问题 - 检查https://github.com/chrispix/symbolicatecrash-fix

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多