是否可以对 MonoTouch 故障转储进行符号化并从中获取行号?

发布于 2024-12-07 04:55:25 字数 322 浏览 0 评论 0原文

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

我按照以下方式配置了我的项目:

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

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

我使用的是 MonoTouch 4.21。

Is it possible to symbolicate MonoTouch crash dumps and get line numbers out of them? If so, how is it done?

I have configured my project in the following way:

  • Build in release mode
  • Checked 'Enable debugging' in Project Options -> Build -> iPhone Build -> General tab
  • Checked 'Emit debugging information' in Project Options -> Build -> Compiler

Now, when I run symbolicatecrash against a dump, I get my method names in the stack trace but with only an offset against them (eg '+ 268') rather than a line number.

I am using MonoTouch 4.21.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

断舍离 2024-12-14 04:55:25

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

长答案:

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

XCode 可处理 DWARF (DSYM) 文件。当 XCode 表示故障转储时,它(仅)在(AOT 生成的)DWARF 符号中查找以获取其信息 - 即不查找 mdb 文件。

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

Short answer: I think the issue is with the ahead-of-time (AOT) compiler - but you better email such question to the mono-devel mailing-list to get a definitive answer.

Long answer:

Mono compilers/runtime (and that behavior is inherited by MonoTouch) keeps the debugging information, that includes line numbers, for its assemblies inside mdb files.

XCode works with DWARF (DSYM) files. When XCode symbolicate a crash dump it looks (only) in the (AOT-produced) DWARF symbols to get its information - i.e. the mdb files are not looked up.

Now the Mono debugger (and runtime) can cope with DWARF too (which should fit the bill). However for MonoTouch I'm not sure the AOT compiler (which calls gcc) is producing the final DWARF symbols containing the C# line numbers - resulting in symbols and offsets (both available to gcc) only being available.

梦屿孤独相伴 2024-12-14 04:55:25

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

早期版本有一个问题——
检查 https://github.com/chrispix/symbolicatecrash-fix

which version of xcode are you using?

There was an problem in earlier versions -
check https://github.com/chrispix/symbolicatecrash-fix

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文