是否可以对MonoTouch故障转储进行符号化并从中获取行号?如果是这样,它是如何完成的?
我已按以下方式配置项目:
现在,当我对转储运行symbolicatecrash时,我在堆栈跟踪中获取了我的方法名称,但只有一个偏移量(例如“+ 268”)而不是行号。
我正在使用MonoTouch 4.21。
答案 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符号 - 从而产生符号只有可用的em>和偏移(两者都可用于gcc)。
答案 1 :(得分:1)
您使用的是哪个版本的xcode? p>
早期版本出现问题 - 检查https://github.com/chrispix/symbolicatecrash-fix