Is it possible to symbolicate MonoTouch crash dump

2019-03-22 06:26发布

问题:

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.

回答1:

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.



回答2:

which version of xcode are you using?

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