Xamarin.ios 使用LLVM编译时,调试符号有用吗?

Xamarin.ios 使用LLVM编译时,调试符号有用吗?,xamarin.ios,llvm,crash-reports,debug-symbols,Xamarin.ios,Llvm,Crash Reports,Debug Symbols,我正在尝试连接一个实时崩溃报告服务,如,或SDK,但我想知道在使用LLVM编译器编译MonoTouch项目时,由崩溃生成的崩溃报告是否有用 在配置iPhone版本时,如果进入proj设置>iPhone版本>高级选项卡,它会显示“实验性,与调试模式不兼容”。这就是为什么我在碰撞报告中质疑STACKTURE的原因。 这里有几点需要考虑: a) 在构建中启用调试: 告诉编译器发出调试符号(例如.mdb文件),其中包含大量信息(变量名称、范围、行号等) 向应用程序中添加额外的调试代码(例如,将设备上的

我正在尝试连接一个实时崩溃报告服务,如,或SDK,但我想知道在使用LLVM编译器编译MonoTouch项目时,由崩溃生成的崩溃报告是否有用


在配置iPhone版本时,如果进入proj设置>iPhone版本>高级选项卡,它会显示“实验性,与调试模式不兼容”。这就是为什么我在碰撞报告中质疑STACKTURE的原因。

这里有几点需要考虑:

a) 在构建中启用调试:

  • 告诉编译器发出调试符号(例如.mdb文件),其中包含大量信息(变量名称、范围、行号等)
  • 向应用程序中添加额外的调试代码(例如,将设备上的应用程序连接到Mac上的调试器)
  • 告诉编译器(例如AOT)禁用某些优化(这会使调试更加困难)
这会导致更大、更慢的应用程序,其中包含大量您不希望人们访问的数据(例如,如果您害怕逆向工程)。对于发行版来说,这是一个对每个人都有利的局面

b) 使用LLVM编译器无法在debug模式下工作。这通常不是问题,因为在调试时,您可能希望构建过程尽可能快(而LLVM的构建速度较慢)。如果您的bug只在LLVM构建中出现,那么问题的情况是

c) 托管堆栈跟踪的可用性不需要调试符号。它们是从.dll和.exe文件中可用的元数据生成的。但是,当调试符号可用时,堆栈跟踪将包括每个堆栈帧的行号和文件名

d) 我从未使用过您提到的工具,但我确实相信它们是有用的:-)您可能希望询问有关它们的具体问题(wrt MonoTouch)。否则,我认为值得进行测试,看看细节的级别是否不同(以及额外的细节是否对您有帮助)。在我看来,我怀疑这会给你带来比运送“调试”版本的实际“成本”更多的东西

  • 首先在应用程序中创建一个“crash me”特性
  • 然后比较来自非LLVM“发布”和“调试”构建的报告结果
  • 接下来比较非LLVM“release”和LLVM“release”构建

很高兴发布您的上述体验:这里是monotouch邮件列表和/或博客条目:-)

是的,我希望有人能告诉我,这样我就不必亲自测试了。我想我运气不好。