2011-08-26 79 views
1

我试图挂接一个实时崩溃报告服务,如airbrake,bugsenseTestFlight'sSDK,但我想知道使用LLVM编译器编译您的MonoTouch项目时崩溃生成的崩溃报告是否有用。使用LLVM编译时,调试符号是否有用?

当你正在配置iPhone版本时,如果你进入proj settings> iPhone Build> Advanced选项卡,它会显示“实验性,与调试模式不兼容”。这就是为什么我从崩溃报告中质疑堆栈跟踪的原因。

回答

0

有几点考虑这里:

一)使调试您构建:

  • 告诉编译器发出调试符号(例如的.mdb文件),其中包括很多信息(变量名称,范围,行号......);
  • 为您的应用程序添加额外的调试代码(例如,将设备上的应用程序连接到Mac上的调试器);
  • 告诉编译器(例如AOT)禁用某些优化(这会使调试更加困难);

这会导致更大,更慢的应用程序中包含大量您不希望人们访问的数据(例如,如果担心逆向工程)。对于发布它是一个没有赢得大家的情况。使用LLVM编译器将不会调试模式下工作

B)。这通常不是问题,因为在调试时,您可能希望构建过程尽可能快(并且LLVM构建起来较慢)。一个有问题的案例是如果你的bug只在LLVM版本上显示。

c)托管堆栈跟踪的可用性不需要调试符号。它们是从.dll和.exe文件中提供的元数据构建而成的。但是,当调试符号可用时,堆栈跟踪将包括每个堆栈帧的行号和文件名。 d)我从来没有使用过你提到过的工具,但我相信它们是有用的:-)你可能想问一下关于它们的具体问题(关于MonoTouch)。否则,我认为值得测试,看看细节的级别是否有所不同(如果额外的细节对你有帮助)。国际海事组织我怀疑它会给你带来比实际“运输”“调试”版本“成本”更多的成本。

  • 首先在您的应用程序中创建一个“崩溃我”功能;
  • 然后比较来自非LLVM“发布”和“调试”构建的报告结果;
  • 下一步比较非LLVM“版本”和LLVM“版本”版本;

这是很好的来发表您以上的经验:在这里,MonoTouch的邮件列表和/或博客条目:-)

+0

是的,我希望有人能告诉我,让我不会有自己测试一下。猜猜我运气不好。 –

相关问题