Ios Monotouch应用程序不会在设备上启动,但可以在模拟器中正常工作

Ios Monotouch应用程序不会在设备上启动,但可以在模拟器中正常工作,ios,xcode,ipad,xamarin.ios,ios-simulator,Ios,Xcode,Ipad,Xamarin.ios,Ios Simulator,我有一个我一直在模拟器上开发的iPad应用程序(xcode 4,md 2.8,mt 5)。但是,当我尝试部署到设备时,应用程序在启动时崩溃。xcode中没有崩溃日志,控制台窗口没有显示任何错误 但是,当我从终端运行monotouch时,我得到以下输出: Rich MacBook Pro:~rich3$/Developer/MonoTouch/usr/bin/mtouch--debugsim=$/private/var/mobile/Applications/31A80564-0CEF-4F4B-

我有一个我一直在模拟器上开发的iPad应用程序(xcode 4,md 2.8,mt 5)。但是,当我尝试部署到设备时,应用程序在启动时崩溃。xcode中没有崩溃日志,控制台窗口没有显示任何错误

但是,当我从终端运行monotouch时,我得到以下输出:

Rich MacBook Pro:~rich3$/Developer/MonoTouch/usr/bin/mtouch--debugsim=$/private/var/mobile/Applications/31A80564-0CEF-4F4B-AE9D-6A1938510393 指定的SDK无效:3.2 堆栈跟踪:

    0   mtouch                              0x000ec183 WriteZStream + 955779 
    1   mtouch                              0x0001bd4f WriteZStream + 102735 
    2   libsystem_c.dylib                   0x9020459b _sigtramp + 43 
    3   ???                                 0xffffffff 0x0 + 4294967295 
    4   Foundation                          0x9a0603de -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] + 160 
    5   ???                                 0x027d5884 0x0 + 41769092 
    6   ???                                 0x027d0e40 0x0 + 41750080 
    7   ???                                 0x027d559f 0x0 + 41768351 
    8   ???                                 0x025e5551 0x0 + 39736657 
    9   mtouch                              0x001a76c4 WriteZStream + 1723076 
    10  mtouch                              0x001a968a WriteZStream + 1731210 
    11  mtouch                              0x001a98c4 WriteZStream + 1731780 
    12  mtouch                              0x002735c1 WriteZStream + 2558401 
    13  mtouch                              0x00273677 WriteZStream + 2558583 
    14  mtouch                              0x002b8b0e WriteZStream + 2842382 
    15  mtouch                              0x002f31d8 WriteZStream + 3081688 
    16  libsystem_c.dylib                   0x901aced9 _pthread_start + 335 
    17  libsystem_c.dylib                   0x901b06de thread_start + 34 
at(包装器管理为本机)MonoTouch.ObjCRuntime.Messaging.void_objc_msgSend_intptr_intptr_bool(intptr、intptr、intptr、intptr、bool) 在StudioCuff.NasObjut.Debug(BoOL)中 在单调的基础上。 at(包装器运行时调用)object.runtime\u invoke\u virtual\u void\u this(对象,intptr,intptr,intptr)

本机堆栈跟踪:

    0   mtouch                              0x000ec183 WriteZStream + 955779 
    1   mtouch                              0x0001bd4f WriteZStream + 102735 
    2   libsystem_c.dylib                   0x9020459b _sigtramp + 43 
    3   ???                                 0xffffffff 0x0 + 4294967295 
    4   Foundation                          0x9a0603de -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] + 160 
    5   ???                                 0x027d5884 0x0 + 41769092 
    6   ???                                 0x027d0e40 0x0 + 41750080 
    7   ???                                 0x027d559f 0x0 + 41768351 
    8   ???                                 0x025e5551 0x0 + 39736657 
    9   mtouch                              0x001a76c4 WriteZStream + 1723076 
    10  mtouch                              0x001a968a WriteZStream + 1731210 
    11  mtouch                              0x001a98c4 WriteZStream + 1731780 
    12  mtouch                              0x002735c1 WriteZStream + 2558401 
    13  mtouch                              0x00273677 WriteZStream + 2558583 
    14  mtouch                              0x002b8b0e WriteZStream + 2842382 
    15  mtouch                              0x002f31d8 WriteZStream + 3081688 
    16  libsystem_c.dylib                   0x901aced9 _pthread_start + 335 
    17  libsystem_c.dylib                   0x901b06de thread_start + 34 
来自gdb的调试信息:

/tmp/mono-gdb-commands.1eukTW:1: Error in sourced command file: 
unable to debug self 

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 

Abort trap: 6
更新: 我终于把我的问题归结为两件事

  • 泛型和值类型不起作用 当使用AOT时(这是在iOS上执行所必需的),它们之间的关系很好 设备)。所以我需要更改一个查询: From:'CSDatabase.RunQuery(“从schema_version中选择max(VersionNbr)).FirstOrDefault();' To:CSDatabase.RunQuery(“从schema_version中选择max(VersionNbr)).First()

  • 接下来,我需要为蹦床(-aot“nimt trampolines=2048”)添加参数,并在构建期间仅添加链接的monotouch sdk。这就解决了我的其他问题


  • 这里有两个问题

    第二个原因是: 指定的SDK无效:3.2

    只是您没有安装3.2 SDK(默认情况下,iOS5 SDK不附带3.2 SDK)。请尝试以下命令:

    /Developer/MonoTouch/usr/bin/mtouch --debugsim=/path/to/your.app --sdk=5.0
    
    它应该很好用

    至于第一个问题,没有多少细节可以帮助你。如果未产生任何崩溃转储(例如,当可用内存不足时),请尝试以下操作:

    a) 打开计算机上的终端窗口

    b) 执行以下命令

    /Developer/MonoTouch/usr/bin/mtouch --logdev
    
    c) 在设备上启动应用程序

    d) 使其崩溃(在本例中似乎是自动的;-)


    e) 将设备日志复制/粘贴到您的问题中(如果小)或填写错误报告(如果大)

    添加--sdk=5.0肯定有帮助。但我在启动时看到的是mono.data.sqlite线程启动时出现的问题:在mono.data.sqlite.SqliteStatement.BindParameter(Int32索引,mono.data.sqlite.SqliteParameter参数)[0x00000]in:0在mono.data.sqlite.SqliteStatement.BindParameters()[0x00000]in:0在mono.data.sqlite.SqliteCommand.BuildNextCommand()[0x00000]在:0线程开始:很高兴它有帮助。但是,消息的其余部分只显示不完整的堆栈跟踪(缺少异常类型/消息)。请按照我的步骤,编辑您自己的问题(因为其中的错误不有趣/已修复)或填写错误报告。谢谢