Xamarin.ios 一旦部署,MonoTouch将发生致命碰撞

Xamarin.ios 一旦部署,MonoTouch将发生致命碰撞,xamarin.ios,Xamarin.ios,我发现,一旦我在iPhone 4s上部署了一个解决方案,就会出现一个错误,导致应用程序崩溃,而不会在MonoTouch中引发任何错误。我正在处理UIApplication.Main并将所有异常写入错误日志,但没有引发任何异常 我追踪到了一行代码,我在iPad上部署了这行代码,但没有这个问题,这行代码在AppDelegate类中: [DllImport(MonoTouch.Constants.SystemLibrary)] internal static extern int sysc

我发现,一旦我在iPhone 4s上部署了一个解决方案,就会出现一个错误,导致应用程序崩溃,而不会在MonoTouch中引发任何错误。我正在处理UIApplication.Main并将所有异常写入错误日志,但没有引发任何异常

我追踪到了一行代码,我在iPad上部署了这行代码,但没有这个问题,这行代码在AppDelegate类中:

[DllImport(MonoTouch.Constants.SystemLibrary)]  
    internal static extern int sysctlbyname( [MarshalAs(UnmanagedType.LPStr)] string property, IntPtr output, IntPtr oldLen, IntPtr newp, uint newlen);  
它使应用程序崩溃,但仍保留在任务列表中,而不是强制关闭整个应用程序

设备登录崩溃是:

Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>: Native stacktrace:
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     0   RWMAppStore                         0x004917b4 RWMAppStore + 4786100
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     1   RWMAppStore                         0x0047bde0 RWMAppStore + 4697568
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     2   libsystem_c.dylib                   0x3620e539 _sigtramp + 48
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     3   RWMAppStore                         0x004dd98c RWMAppStore + 5097868
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     4   RWMAppStore                         0x004dd98c RWMAppStore + 5097868
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     5   RWMAppStore                         0x00574a84 RWMAppStore + 5716612
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     6   RWMAppStore                         0x004bdb40 RWMAppStore + 4967232
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     7   RWMAppStore                         0x004de134 RWMAppStore + 5099828
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     8   RWMAppStore                         0x005483a0 RWMAppStore + 5534624
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     9   RWMAppStore                         0x00560764 RWMAppStore + 5633892
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     10  RWMAppStore                         0x0057b034 RWMAppStore + 5742644
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     11  libsystem_c.dylib                   0x361c5c1d _pthread_start + 320
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>:     12  libsystem_c.dylib                   0x361c5ad8 thread_start + 8
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>: =================================================================
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>: Got a SIGSEGV while executing native code. This usually indicates
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>: a fatal error in the mono runtime or one of the native libraries 
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>: used by your application.
Mar 13 14:35:18 unknown UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5][5456] <Notice>: =================================================================
Mar 13 14:35:19 unknown ReportCrash[5458] <Notice>: Formulating crash report for process RWMAppStore[5456]
Mar 13 14:35:19 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:come.redware-mobile.iphoneappstore[0x91f5]) Job appears to have crashed: Abort trap: 6
Mar 13 14:35:19 unknown SpringBoard[15] <Warning>: Application 'App Store Front' exited abnormally with signal 6: Abort trap: 6

看起来堆已经不知何故损坏了。我无法在您使用的代码中立即找到任何错误,但您可以尝试更改这一行:

var pStr = Marshal.AllocHGlobal(length);

看看这能否解决这个问题

我可能很快就能拿到一部iPhone,在那里我可以测试它

更新


我在iPhone4上试过这个,它没有崩溃。这意味着可能是应用程序中的几个不同的东西一起造成了此崩溃,而修复/发现它的最佳方法是在项目中提交一个bug并附加到项目中(您可以将bug标记为私有,以便只有Xamarin员工可以在项目关闭源代码时看到它)。

,我正在使用以下代码来检测设备类型:是否有任何内容打印到设备控制台,是否有任何崩溃报告?(你可以在Xcode的Organizer中找到这两个)我已经在原始帖子中添加了一个崩溃报告,谢谢,我不知道你能找到这些。这是一个中止,当这种情况发生时,通常更多的信息会打印到设备控制台(在“Native stacktrace:”一行之前会有更多行)。如果您等待10-15秒,Xcode还会自动为您标记崩溃报告(假设您没有再次重建项目,因为这将删除Xcode用于标记的调试信息目录);我刚刚重新运行了这个程序,本机stacktrace上面唯一的部分是:
Mar 13 14:35:18未知UIKitApplication:come.redware mobile.iphoneappstore[0x91f5][5456]:stacktrace:
另一个问题是,我使用的代码也适用于部署在iPad上的另一个应用程序,代码也来自xamarin网站,那么你会认为这是可行的吗?注意:它也用iPad(第1代)和iPod Touch(第4代)进行了测试,没有任何问题(Rolf's有一个iPad第2代iirc)。不幸的是,你所说的不是它失败的那一行,正如我所评论的那样,是实际的声明导致了应用程序崩溃。如果我注释掉声明,应用程序不会崩溃。行为如下:1)在设备上安装应用程序。2) 在设备上打开应用程序,大约3秒钟后,应用程序关闭。我也在另一台iPhone 4上测试了这一点,同样的情况也发生了。我尝试剥离所有代码,因此现在项目中没有任何内容,不再是问题。我认为这项声明一定是引发了其他问题,你有什么想法吗?它在模拟器中运行良好。如果我发布了一个评论声明它工作正常,这很奇怪?那么我认为您应该在这里提交一个bug:并附加您的项目(您可以将bug标记为私有,这样,如果您的项目是封闭源代码的,除了您和Xamarin员工之外,没有人可以看到它)
var pStr = Marshal.AllocHGlobal(length);
var pStr = Marshal.AllocHGlobal(length * 2);