在设备调试时,应用程序崩溃了。

9
我的应用在iOS模拟器上调试没有问题,在构建和部署ipa文件到设备时也能正常运行。但是,如果我尝试在设备上(iPhone 9.3.1和iPad 9.3)进行调试,该应用程序会在启动时立即崩溃。我正在使用带有Xamarin的Visual Studio。问题似乎与构建/配置/版本相关,因为它在模拟器和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
是的。我关闭了链接器,但结果仍然相同。 - Zach Green
1
iOS项目的“AppDelegate.FinishedLaunching”中是否有任何可能在设备上比模拟器花费更长时间的事情,以至于设备的“看门狗”进程可能会杀死该应用程序? - Mark Larter
1
仔细查看iOS崩溃报告,发现存在无效地址访问,并且执行似乎在MvvmCross代码中进行ToArray操作,因此我之前的评论似乎没有帮助。 - Mark Larter
1
你应该尽量避免调试后台进程。 - Akshay Kulkarni
@ZachGreen,你有解决问题的办法吗?我也遇到了类似的问题,但没有使用MvvmCross。这是否意味着在运行时代码中存在错误或者是其他原因引起的? - Issa Fram
3个回答

1
我基于原生应用进行回复,如果您在项目的构建设置中将Adhoc Provisional Profile设置为Debug选项,则可能会出现这种情况。这意味着在调试代码时,您需要为“Debug”设置调试配置文件,而不是adhoc类型的配置文件。

那对我来说并不是这样的情况。 - Zach Green

1
这不是对你问题的直接回答,但查看 MvvmCross源代码 中的 MvxIosSystem.BuildVersion,第27行似乎执行了ToArray操作,导致应用程序在访问无效地址时崩溃。
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框架无法识别的内容?

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");
    }
}

我也尝试了将一些创意值替换为版本,而不是调用UIDevice.CurrentDevice.SystemVersion,但我只能生成未处理的字符串格式或空引用异常,iOS崩溃日志与您发布的非常不同。

我想知道设备重置是否可以清除问题,参考这个SO答案中类似的问题。


设备重置可能是解决方案,但这是我的个人手机,现在不是一个选项。 - Zach Green
我仍然无法从我的设备进行调试,虽然你的回答没有提供解决方法,但它提供了一些见解。 - Zach Green
你是否有机会查看UIDevice.CurrentDevice.SystemVersion返回的值?我很好奇设备是不是触发了MvvmCross代码崩溃,还是更像是物理内存问题。 - Mark Larter
我因为参加会议的缘故还没有尝试过,但是我希望下周回到办公室后能够尝试一下。届时我会进行更新。 - Zach Green

0
MtouchUseRefCounting

这可能是必需的。转到构建选项,高级选项卡,并勾选右侧的框。在调试模式/模拟器中应该被勾选。因此,在调试/设备模式下也要勾选它。

1
没有运气。仍然崩溃。 - Zach Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接