是否有可能象征MonoTouch崩溃转储并从中获取行号?

时间:2011-09-27 13:19:52

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

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

我已按以下方式配置项目:

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

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

我正在使用MonoTouch 4.21。

2 个答案:

答案 0 :(得分:2)

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

答案很长:

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

XCode适用于 DWARF (DSYM)文件。当XCode表示崩溃转储时,它(仅)在(AOT生成的)DWARF符号中查找以获取其信息 - 即不查找 mdb 文件。

现在,Mono debugger(和运行时)也可以处理DWARF(这应该符合要求)。但是对于MonoTouch,我不确定AOT编译器(调用 gcc )是否正在生成包含C#行号的最终 DWARF符号 - 从而产生符号偏移(两者都可用于gcc)。

答案 1 :(得分:1)

您使用的是哪个版本的xcode?

早期版本出现问题 - 检查https://github.com/chrispix/symbolicatecrash-fix