Monotouch-启用Guard Malloc

时间:2012-11-27 16:37:02

标签: ios memory xamarin.ios crash malloc

这是我关于StackOverflow的第一个问题,希望它是一个相关的问题!为了尝试将您置于上下文中,当我尝试使用PresentViewController方法打开相机时,我的应用程序出现了奇怪的崩溃。我试着查看崩溃报告,但我没有任何呼叫详细信息,只有十六进制如下:

 Thread 0 Crashed: 
 0   libsystem_kernel.dylib         0x38a97350 0x38a86000 + 70480
 1   libsystem_c.dylib              0x35d3a11e 0x35d0b000 + 192798
 2   libsystem_c.dylib              0x35d7696e 0x35d0b000 + 440686
 3   (project_name)                 0x00882968 0x1000     + 8919400
 4   (project_name)                 0x0083db7c 0x1000     + 8637308
 5   libsystem_c.dylib              0x35d43e90 0x35d0b000 + 233104
 6   UIKit                          0x39d40b00 0x39d3b000 + 23296
 7   QuartzCore                     0x34c52ff2 0x34c4c000 + 28658
 8   QuartzCore                     0x34c52fa2 0x34c4c000 + 28578
 9   QuartzCore                     0x34c52e8e 0x34c4c000 + 28302
 10  QuartzCore                     0x34c4e9ba 0x34c4c000 + 10682
 11  QuartzCore                     0x34c4e876 0x34c4c000 + 10358
 12  QuartzCore                     0x34c4e806 0x34c4c000 + 10246
 13  UIKit                          0x39d3fae8 0x39d3b000 + 19176
 14  UIKit                          0x39d4271e 0x39d3b000 + 30494
 15  UIKit                          0x39d84a6c 0x39d3b000 + 301676
 16  PhotoLibrary                   0x381c39ca 0x38157000 + 444874
 17  UIKit                          0x39d417fe 0x39d3b000 + 26622
 18  QuartzCore                     0x34c4fd5e 0x34c4c000 + 15710
 19  QuartzCore                     0x34c4f8fc 0x34c4c000 + 14588

无论如何,由于我的崩溃报告是不确定的(在我看来),我搜索了如何通常处理iOS和NSZombieEnabled和启用Guard Malloc的内存问题。默认情况下,在Monotouch中启用NSZombieEnabled,但我没有找到任何地方如何启用Guard Malloc。 Monotouch甚至可能吗?谢谢!

1 个答案:

答案 0 :(得分:3)

如果没有适当的堆栈跟踪,任何其他调试工具都将毫无用处。

您需要对崩溃报告进行符号化 - 或者弄清楚为什么您的报告没有正确表示。通常Xcode会自动执行(虽然打开崩溃报告需要几秒钟),但它需要Spotlight才能找到调试信息,因此如果Spotlight没有为您的项目目录编制索引,这就是后果之一。有时,符号化的另一个原因是解决方案/项目/可执行文件名称不相同。

您还应该查看设备日志,很多时候打印出崩溃的确切原因(即使有关于如何修复它的说明)。 Here是有关如何查找设备日志的指南,如果以前没有看过它们的话。