2016-04-21 116 views
9

我的應用程序在iOS模擬器上調試得很好,並且在構建和部署一個ipa文件到設備時它運行良好。但是,如果我嘗試在設備上進行調試(iPhone 9.3.1和iPad 9.3),則應用程序會在啓動時立即崩潰。我正在使用Visual Studio w/Xamarin。這個問題似乎是建立/配置/版本相關的,因爲它在模擬器和IPA文件版本上工作正常,但我無法弄清楚問題所在。應用程序在設備上調試時崩潰

的Visual Studio 2013更新5 Xamarin 4.0.3.214 Xamarin.iOS 9.6.1.8

項目配置構建之間的工作,不要:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\iPhoneSimulator\Debug</OutputPath> 
    <DefineConstants>DEBUG</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <ConsolePause>false</ConsolePause> 
    <MtouchDebug>True</MtouchDebug> 
    <MtouchSdkVersion>8.1</MtouchSdkVersion> 
    <MtouchArch>i386</MtouchArch> 
    <MtouchOptimizePNGs>True</MtouchOptimizePNGs> 
    <MtouchUseSGen>True</MtouchUseSGen> 
    <MtouchUseRefCounting>True</MtouchUseRefCounting> 
    <MtouchI18n> 
    </MtouchI18n> 
    <MtouchProfiling>True</MtouchProfiling> 
    <MtouchLink>None</MtouchLink> 
    <CodesignKey>iPhone Developer</CodesignKey> 
    <CodesignProvision> 
    </CodesignProvision> 
    <CodesignExtraArgs> 
    </CodesignExtraArgs> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\iPhone\Debug</OutputPath> 
    <DefineConstants>DEBUG</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <ConsolePause>false</ConsolePause> 
    <CodesignKey>iPhone Developer</CodesignKey> 
    <MtouchSdkVersion>8.1</MtouchSdkVersion> 
    <MtouchArch>ARMv7</MtouchArch> 
    <MtouchOptimizePNGs>True</MtouchOptimizePNGs> 
    <MtouchI18n> 
    </MtouchI18n> 
    <MtouchUseSGen>True</MtouchUseSGen> 
    <MtouchDebug>True</MtouchDebug> 
    <MtouchProfiling>True</MtouchProfiling> 
    <SignAssembly>true</SignAssembly> 
    <CodesignProvision> 
    </CodesignProvision> 
    <CodesignExtraArgs> 
    </CodesignExtraArgs> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' "> 
    <DebugType>none</DebugType> 
    <Optimize>True</Optimize> 
    <OutputPath>bin\iPhone\Ad-Hoc</OutputPath> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <ConsolePause>False</ConsolePause> 
    <CodesignKey>xxx</CodesignKey> 
    <BuildIpa>True</BuildIpa> 
    <MtouchSdkVersion>8.1</MtouchSdkVersion> 
    <MtouchArch>ARMv7</MtouchArch> 
    <MtouchOptimizePNGs>True</MtouchOptimizePNGs> 
    <MtouchI18n> 
    </MtouchI18n> 
    <IpaPackageName> 
    </IpaPackageName> 
    <SignAssembly>true</SignAssembly> 
    <CodesignProvision>xxx</CodesignProvision> 
    <IpaMetadata> 
    </IpaMetadata> 
    <MtouchExtraArgs> 
    </MtouchExtraArgs> 
    <CodesignExtraArgs> 
    </CodesignExtraArgs> 
</PropertyGroup> 

崩潰報告:

Incident Identifier: 3F2078C2-B276-4CCE-A5A0-43DCE3F4EB07 
CrashReporter Key: 0ae3fc42ef86d1610013598af050cfcc24f778c2 
Hardware Model:  iPhone7,2 
Process:    RadResponder [3832] 
Path:    /private/var/containers/Bundle/Application/30274A5D-271C-4E00-87B1-D3CE93033A8F/RadResponder.app/RadResponder 
Identifier:   com.ChainbridgeTechnologies.RadResponder 
Version:    45 (3.2.0) 
Code Type:   ARM (Native) 
Parent Process:  launchd [1] 

Date/Time:   2016-04-20 09:41:34.34 -0600 
Launch Time:   2016-04-20 09:41:31.31 -0600 
OS Version:   iOS 9.3.1 (13E238) 
Report Version:  105 

Exception Type: EXC_BAD_ACCESS (SIGABRT) 
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000084020400 
Triggered by Thread: 0 

Filtered syslog: 
None found 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x20677c5c __pthread_kill + 8 
1 libsystem_pthread.dylib   0x2071db47 pthread_kill + 63 
2 libsystem_c.dylib    0x2060c0c5 abort + 109 
3 RadResponder     0x02e3a3e1 mono_handle_native_sigsegv (mini-exceptions.c:2186) 
4 RadResponder     0x02e405c9 mono_sigsegv_signal_handler (mini-runtime.c:2481) 
5 libsystem_platform.dylib  0x2071985f _sigtramp + 43 
6 RadResponder     0x01f83fa0 System_Linq_Enumerable_ToArray_T_INT_System_Collections_Generic_IEnumerable_1_T_INT (Enumerable.cs:830) 
7 RadResponder     0x00de5d74 MvvmCross_Platform_iOS_Platform_MvxIosSystem_BuildVersion (/C:\vcs\git\MvvmCross\MvvmCross\Platform\iOS\Platform\MvxIosSystem.cs:27) 
8 RadResponder     0x00de5b38 MvvmCross_Platform_iOS_Platform_MvxIosSystem__ctor (/C:\vcs\git\MvvmCross\MvvmCross\Platform\iOS\Platform\MvxIosSystem.cs:22) 
9 RadResponder     0x01025628 MvvmCross_iOS_Platform_MvxIosSetup_CreateIosSystemProperties (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:114) 
10 RadResponder     0x01025514 MvvmCross_iOS_Platform_MvxIosSetup_RegisterPlatformProperties (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:109) 
11 RadResponder     0x0102538c MvvmCross_iOS_Platform_MvxIosSetup_InitializePlatformServices (/C:\vcs\git\MvvmCross\MvvmCross\iOS\iOS\Platform\MvxIosSetup.cs:100) 
12 RadResponder     0x0105c284 MvvmCross_Core_Platform_MvxSetup_InitializePrimary + 1532 
13 RadResponder     0x0105bc04 MvvmCross_Core_Platform_MvxSetup_Initialize + 120 
14 RadResponder     0x000bfaac RadResponder_Mobile_UI_iPhone_AppDelegate_FinishedLaunching_UIKit_UIApplication_Foundation_NSDictionary (/c:\tfs\rr\wksp\mbl-dev\RadResponder.Mobile.UI.iPhone\AppDelegate.cs:54) 
15 RadResponder     0x005689f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256 
16 RadResponder     0x02e42bff mono_jit_runtime_invoke (mini-runtime.c:2335) 
17 RadResponder     0x02e852a5 mono_runtime_invoke (object.c:2783) 
18 RadResponder     0x02dfcb6b native_to_managed_trampoline_6(objc_object*, objc_selector*, _MonoMethod**, objc_object*, objc_object*, char const*, char const*, char const*, char const*) (registrar.m:211) 
19 RadResponder     0x02dfc9bd -[AppDelegate application:didFinishLaunchingWithOptions:] (registrar.m:2962) 
20 UIKit       0x2502f8ff -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 395 
21 UIKit       0x252590bf -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3087 
22 UIKit       0x2525d079 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1589 
23 UIKit       0x25271649 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke3286 + 37 
24 UIKit       0x2525a59f -[UIApplication workspaceDidEndTransaction:] + 135 
25 FrontBoardServices    0x220b7bf7 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 19 
26 FrontBoardServices    0x220b7aa7 -[FBSSerialQueue _performNext] + 227 
27 FrontBoardServices    0x220b7da5 -[FBSSerialQueue _performNextFromRunLoopSource] + 45 
28 CoreFoundation     0x209aba67 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 
29 CoreFoundation     0x209ab657 __CFRunLoopDoSources0 + 455 
30 CoreFoundation     0x209a99bf __CFRunLoopRun + 807 
31 CoreFoundation     0x208f8289 CFRunLoopRunSpecific + 517 
32 CoreFoundation     0x208f807d CFRunLoopRunInMode + 109 
33 UIKit       0x25028dc7 -[UIApplication _run] + 527 
34 UIKit       0x250232c5 UIApplicationMain + 145 
35 RadResponder     0x00aa5218 wrapper_managed_to_native_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 272 
36 RadResponder     0x00a0e58c UIKit_UIApplication_Main_string___intptr_intptr (UIApplication.cs:77) 
37 RadResponder     0x00a0e54c UIKit_UIApplication_Main_string___string_string (UIApplication.cs:61) 
38 RadResponder     0x000bf204 RadResponder_Mobile_UI_iPhone_Application_Main_string__ (/c:\tfs\rr\wksp\mbl-dev\RadResponder.Mobile.UI.iPhone\Main.cs:12) 
39 RadResponder     0x005689f4 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 256 
40 RadResponder     0x02e42bff mono_jit_runtime_invoke (mini-runtime.c:2335) 
41 RadResponder     0x02e852a5 mono_runtime_invoke (object.c:2783) 
42 RadResponder     0x02e885d1 mono_runtime_exec_main (object.c:4038) 
43 RadResponder     0x02ef5778 xamarin_main (monotouch-main.m:404) 
44 RadResponder     0x02e15261 main (main.armv7.m:158) 
45 libdyld.dylib     0x205a4873 start + 3 

Thread 1: 
0 libsystem_kernel.dylib   0x20678864 __workq_kernreturn + 8 
1 libsystem_pthread.dylib   0x2071ae19 _pthread_wqthread + 1037 
2 libsystem_pthread.dylib   0x2071a9fc start_wqthread + 8 

Thread 2 name: Dispatch queue: com.apple.libdispatch-manager 
Thread 2: 
0 libsystem_kernel.dylib   0x206792f8 kevent_qos + 24 
1 libdispatch.dylib    0x2058b837 _dispatch_mgr_invoke + 255 
2 libdispatch.dylib    0x2057d917 _dispatch_mgr_thread + 39 

Thread 3: 
0 libsystem_kernel.dylib   0x20678864 __workq_kernreturn + 8 
1 libsystem_pthread.dylib   0x2071ae19 _pthread_wqthread + 1037 
2 libsystem_pthread.dylib   0x2071a9fc start_wqthread + 8 

Thread 4: 
0 libsystem_kernel.dylib   0x20677da0 __recvfrom + 20 
1 libsystem_c.dylib    0x205c7d5b recv + 23 
2 RadResponder     0x02ef3dcc recv_uninterrupted(int, void*, int) (monotouch-debug.m:387) 
3 RadResponder     0x02ef3fb0 monotouch_process_connection(int) (monotouch-debug.m:790) 
4 RadResponder     0x02ef2f5c monotouch_connect_usb() (monotouch-debug.m:697) 
5 RadResponder     0x02ef25e8 monotouch_configure_debugging (monotouch-debug.m:333) 
6 RadResponder     0x02edc8bc -[CocoaThreadInitializer entryPoint:] (shared.m:124) 
7 Foundation      0x2121662d __NSThread__start__ + 1145 
8 libsystem_pthread.dylib   0x2071cc7f _pthread_body + 139 
9 libsystem_pthread.dylib   0x2071cbf3 _pthread_start + 111 
10 libsystem_pthread.dylib   0x2071aa08 thread_start + 8 

Thread 5: 
0 libsystem_kernel.dylib   0x20677998 __psynch_cvwait + 24 
1 libsystem_pthread.dylib   0x2071c1a5 _pthread_cond_wait + 537 
2 libsystem_pthread.dylib   0x2071d0b9 pthread_cond_wait + 41 
3 RadResponder     0x02ebeec5 thread_func (sgen-thread-pool.c:118) 
4 libsystem_pthread.dylib   0x2071cc7f _pthread_body + 139 
5 libsystem_pthread.dylib   0x2071cbf3 _pthread_start + 111 
6 libsystem_pthread.dylib   0x2071aa08 thread_start + 8 

Thread 6: 
0 libsystem_kernel.dylib   0x20677da0 __recvfrom + 20 
1 libsystem_c.dylib    0x205c7d5b recv + 23 
2 RadResponder     0x02ef3dcc recv_uninterrupted(int, void*, int) (monotouch-debug.m:387) 
3 RadResponder     0x02ef3ec8 sdb_recv(void*, int) (monotouch-debug.m:403) 
4 RadResponder     0x02e22a07 debugger_thread (debugger-agent.c:1515) 
5 RadResponder     0x02ed3927 inner_start_thread (mono-threads-posix.c:97) 
6 libsystem_pthread.dylib   0x2071cc7f _pthread_body + 139 
7 libsystem_pthread.dylib   0x2071cbf3 _pthread_start + 111 
8 libsystem_pthread.dylib   0x2071aa08 thread_start + 8 

Thread 7: 
0 libsystem_kernel.dylib   0x206638f8 semaphore_wait_trap + 8 
1 RadResponder     0x02ed312b mono_sem_wait (mono-semaphore.c:109) 
2 RadResponder     0x02e644b7 finalizer_thread (gc.c:1096) 
3 RadResponder     0x02ea4d89 start_wrapper (threads.c:655) 
4 RadResponder     0x02ed3927 inner_start_thread (mono-threads-posix.c:97) 
5 libsystem_pthread.dylib   0x2071cc7f _pthread_body + 139 
6 libsystem_pthread.dylib   0x2071cbf3 _pthread_start + 111 
7 libsystem_pthread.dylib   0x2071aa08 thread_start + 8 

Thread 8: 
0 libsystem_kernel.dylib   0x20678864 __workq_kernreturn + 8 
1 libsystem_pthread.dylib   0x2071ae19 _pthread_wqthread + 1037 
2 libsystem_pthread.dylib   0x2071a9fc start_wqthread + 8 

Thread 0 crashed with ARM Thread State (32-bit): 
    r0: 0x00000000 r1: 0x00000000  r2: 0x00000000  r3: 0x00000000 
    r4: 0x00000006 r5: 0x376cd000  r6: 0xa10bb850  r7: 0x08721358 
    r8: 0x15bc32ac r9: 0x376cd908  r10: 0x0457fe7f  r11: 0x15bc3200 
    ip: 0x00000148 sp: 0x0872134c  lr: 0x2071db47  pc: 0x20677c5c 
    cpsr: 0x00000010 
+1

你看看你的應用程序的鏈接?請參閱:https://developer.xamarin.com/guides/ios/advanced_topics/linker/ – Martijn00

+1

是的。我以相同的結果關閉鏈接器。 –

+1

在iOS項目的AppDelegate.FinishedLaunching中可能比模擬器需要更長的時間,例如設備的「看門狗」進程可能會殺死應用程序? –

回答

0
MtouchUseRefCounting 

這可能是必需的。轉到構建選項,高級選項卡,並在右側打勾。它應該在調試模式/模擬器中打勾。因此,請在調試/設備中勾選它。

+1

沒有運氣。仍然崩潰。 –

1

這是不是直接回答你的問題,但看MvvmCross sourceMvxIosSystem.BuildVersion,27行確實出現執行ToArray其中,app的無效地址訪問去世:

private void BuildVersion() 
{ 
    var version = UIDevice.CurrentDevice.SystemVersion; 
    var parts = version.Split('.').Select(int.Parse).ToArray(); 
    this.Version = new MvxIosVersion(parts); 
} 

可能UIDevice.CurrentDevice.SystemVersion是返回MvvmCross框架意想不到的有趣事物?

I.e. version.Split('.').Select(int.Parse).ToArray()怎麼會導致這個無效的訪問?

也許你可以在MvvmCross啓動發生之前在你的應用中使用類似的代碼行來獲得版本值,並希望有更多的線索去調試。

我想這在一個小Xamarin.iOS項目,就在Main.cs,但看不到任何會導致問題 - version回來了「9.3.1」和parts是一個數組int[3]

public class Application 
{ 
    // This is the main entry point of the application. 
    static void Main (string[] args) 
    { 
     //Xamarin.Insights.Initialize (XamarinInsights.ApiKey); 
     var version = UIDevice.CurrentDevice.SystemVersion; 
     var parts = version.Split('.').Select(int.Parse).ToArray(); 

     // if you want to use a different Application Delegate class from "AppDelegate" 
     // you can specify it here. 
     UIApplication.Main (args, null, "AppDelegate"); 
    } 
} 

我也試過version替代的,而不是調用UIDevice.CurrentDevice.SystemVersion一些有創意的價值,但我能生成是未處理的字符串格式或具有非常不同的iOS崩潰日誌比你貼什麼空引用例外。

我不知道設備重置是否可以解決問題,從this SO answer到類似的問題。

+0

設備重置可能是答案,但它是我的個人電話,現在不是一個選項。 –

+0

我仍然無法從我的設備進行調試,儘管您的答案沒有修復,但它提供了深入的見解。 –

+0

你有沒有機會看到'UIDevice.CurrentDevice.SystemVersion'返回的值是什麼?我很想知道設備是否觸發'MvvmCross'代碼崩潰,或者這是否更像物理內存問題。 –

1

我在本地應用程序的基礎上回復,如果您在工程的構建設置中將「臨時配置文件」設置爲「調試」選項,則會發生這種情況。這意味着爲了調試你的代碼,你需要設置調試臨時配置文件'調試'而不是臨時配置文件。

+0

對我來說並非如此 –