3

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

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

  • 以发布模式构建
  • 在项目选项 -> 构建 -> iPhone 构建 -> 常规选项卡中选中“启用调试”
  • 在 Project Options -> Build -> Compiler 中选中“Emit debugging information”

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

我正在使用 MonoTouch 4.21。

4

2 回答 2

2

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

长答案:

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

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

现在 Mono调试器(和运行时)也可以处理 DWARF(这应该符合要求)。但是对于 MonoTouch,我不确定 AOT 编译器(调用gcc)是否生成包含 C# 行号的最终DWARF 符号 - 导致符号偏移量(均适用于 gcc)仅可用。

于 2011-10-06T17:14:15.377 回答
1

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

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

于 2011-10-05T15:02:13.840 回答